Transformation Callbacksの例

| | トラックバック(0)

以前の記事で、変形コールバック(Transformation Callbacks)の記事(翻訳)を書いた。 SixApart本家の開発者向けドキュメントの一部だ。

この記事をもとに、この記事中で例示されているプラグインを実際に書いてみました。以下に、そのプラグインを圧縮したziipを置きます。

このプラグインのインストール方法は普通のプラグインと同じで、MTのpluginsフォルダにこのTransformTemplateというフォルダをコピーするだけです。

tranf-tmpl-exmpl.png

インストールすると、ブログ記事を書く画面で、上図のように「foo_bar」という入力欄が追加されます。

正規表現を使わず、DOMで表示を変更しています。

以下メモ

  • template_sourceとtemplate_paramとtemplate_outputで引数の取り方が違う。
  • sub {$plugin->edit_entry}じゃないとだめ。¥\&edit_entryだとだめ。

SixApartさんにはもっとMTのオブジェクトリファレンスを充実してもらいたいです。


以下、ソース。



package  MT::Plugin::TransformTemplate;

use strict;

use base qw( MT::Plugin);

my $plugin = new MT::Plugin::TransformTemplate({
        id => 'TransformTemplate',
        key => 'transform-template',
        name => 'Transform Template',
        description => "Tranform some template",
        version => '0.1',
        author_name => 'Shinichi Nozawa',
        author_link => 'http://nozawashinichi.sakura.ne.jp/usingmt/',
        plugin_link => 'http://www.nozawashinichi.sakura.ne.jp/usingmt/2008/08/transformer-callbacks.html',
    });
MT->add_plugin($plugin);

sub init_registry {
    my $plugin = shift;
    $plugin->registry({
        callbacks => {
            'MT::App::CMS::template_param.edit_entry' => sub{ $plugin->edit_entry(@_); },
        }
    });
}


sub edit_entry {
    my $plugin = shift;
    my ($cb, $app, $param, $tmpl) = @_;

    #記事編集画面のbasename(ファイル名)の上に空欄が表示されます。
    # マーカーを取得
    my $basename_field = $tmpl->getElementById('basename');

    # 要素を生成
    my $setting = $tmpl->createElement(
                             'app:setting',
                              { id => 'foo_bar', required => 1 });
    my $innerHTML = '<input type="text" name="foo_bar"
                       value="foo_bar"
                       id="foo_bar" />';
    $setting->innerHTML($innerHTML);

    # basenameの前に要素を付与
    $tmpl->insertBefore($setting, $basename_field);
}


1;


トラックバック(0)

このブログ記事を参照しているブログ一覧: Transformation Callbacksの例

このブログ記事に対するトラックバックURL: https://nozawashinichi.sakura.ne.jp/MT-4.25/mt-tb.cgi/171

comments powered by Disqus

このブログ記事について

このページは、Shinichi Nozawaが2008年8月28日 18:11に書いたブログ記事です。

ひとつ前のブログ記事は「MT:管理画面を修正する」です。

次のブログ記事は「GoogleAnalyticsWidget for MT4.2」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。