2004年10月14日
エントリー編集画面内にプレビュー表示
大量のエントリーを次々に編集するときなど、プレビューを見ながら作業したいことがある。
そこで以下のようにしてみた。
lib/MT/App/CMS.pm 509行目
$param{can_view_log} = $app->{author}->can_view_log;
} elsif ($type eq 'category') {
を
$param{can_view_log} = $app->{author}->can_view_log;
require MT::Builder;
require MT::Template::Context;
require MT::Blog;
my $blog = MT::Blog->load($blog_id);
my $ctx = MT::Template::Context->new;
$ctx->stash('entry', $obj);
$ctx->stash('blog', $blog);
my $build = MT::Builder->new;
my $preview_code = <<'HTML';
<p><b><$MTEntryTitle$></b></p>
<$MTEntryBody$>
<$MTEntryMore$>
HTML
my $tokens = $build->compile($ctx, $preview_code)
or return $app->error($app->translate(
"Parse error: [_1]", $build->errstr));
defined(my $html = $build->build($ctx, $tokens))
or return $app->error($app->translate(
"Build error: [_1]", $build->errstr));
$param{preview_body} = $html;
} elsif ($type eq 'category') {
に変更。そして tmpl/cms/edit_entry.tmpl の好きなところに<TMPL_VAR NAME=PREVIEW_BODY>を追加。つまりEntry編集画面のテンプレートにプレビュー画面と同じ変数が渡るようにして、それを表示するようにした。
Posted by jiro at 2004年10月14日 05:54
| トラックバック (0)
コメント
コメントする