管理画面のカスタマイズをプラグインで行う「BIGPAPI」

Movable Typeでは、プラグインを使うことでさまざまに機能を拡張することができます。
ただ、管理画面(エントリーの編集など)をカスタマイズするには、それぞれの画面のテンプレートのファイルを直接に書き換えることが必要で、プラグインで処理することができませんでした。
例えば、エントリーの入力画面に何か機能を追加しようとすると、テンプレートのファイルの「edit-entry.tmpl」を書き換えていました。

このようにして、管理画面のテンプレートを直接に書き換えると、Movable Typeをバージョンアップする際に面倒です。
というのも、バージョンアップ版のファイルをアップロードした後に、管理画面のテンプレートを再度書き換える作業が必要になるためです。

このような、管理画面のカスタマイズの問題を解決するプラグインとして、「BIGPAPI」というものがリリースされました。

BIGPAPIは、管理画面を表示する際に、テンプレートの一部を動的に置換する働きをします。
これによって、管理画面のテンプレートのファイルを直接に書き換えずに、プラグインからその都度書き換えることができるようになります。

作者はKevin Shai氏で、以下のページからダウンロードすることができます。

http://www.staggernation.com/mtplugins/BigPAPI/

ページの先頭に「Plugin Code(.pl file)」というリンクがあります。
そのリンクをクリックして「BigPAPI.pl」のファイルを保存し、Movable Typeのpluginsディレクトリにアップロードします。
その後、BigPAPI対応のプラグインを入手して、Movable Typeのpluginsディレクトリにアップロードしていきます。

BigPAPI対応プラグインの簡単な例として、テンプレートの編集画面で、テキストエリアの縦の長さを20行から40行に長くするものを紹介します。
以下のソースコードをコピーし、「ExtendEditTemplateTextArea.pl」という名前をつけて、pluginsディレクトリにアップロードします。

package MT::Plugin::ExtendEditTemplateTextArea;

use strict;

require MT::Plugin;
require MT;

my $plugin = MT::Plugin->new({
    name => "Extend edit template text area",
    description => 'Extend text area of editing template.'
});
MT->add_plugin($plugin);

MT->add_callback('bigpapi::template::edit_template', 9, $plugin, \&extend_edit_template_textarea);

sub extend_edit_template_textarea {
    my ($cb, $app, $template) = @_;

    my $old = <<HTMLOLD;
<p><label for="text"><TMPL_IF NAME=TYPE_CUSTOM><MT_TRANS phrase="Module Body"><TMPL_ELSE><MT_TRANS phrase="Template Body"></TMPL_IF></label><br /><textarea name="text" id="text" rows="20" cols="72" class="wide"><TMPL_VAR NAME=TEXT ESCAPE=HTML></textarea></p>
HTMLOLD
    $old = quotemeta($old);

    my $new = <<HTMLNEW;
<p><label for="text"><TMPL_IF NAME=TYPE_CUSTOM><MT_TRANS phrase="Module Body"><TMPL_ELSE><MT_TRANS phrase="Template Body"></TMPL_IF></label><br /><textarea name="text" id="text" rows="40" cols="72" class="wide"><TMPL_VAR NAME=TEXT ESCAPE=HTML></textarea></p>
HTMLNEW
    $$template =~ s/$old/$new/;
}

1;


当方のBlogでも、管理画面を一部カスタマイズするプラグインを公開していますが、今後はBigPAPI対応に変えていく予定です。