Quantcast
Channel: 小粋空間
Viewing all articles
Browse latest Browse all 219

Movable Typeの一覧画面にリストアクションを追加する

$
0
0


Movable Typeのプラグイン開発ネタで、一覧画面にリストアクションを追加する方法です。バージョンは5.1以降です。

「リストアクション」とは、一覧画面内に表示されたチェックボックスをチェックして動作をさせるための機能です。

リストアクションのメニューを表示
リストアクション

1.プラグインのリストアクションを追加する

プラグインのリストアクションは、次のように「プラグインアクション」というoptgroup要素の中に追加したアクションが表示されます。

プラグインのリストアクション

プラグインのリストアクションを追加するには、次の内容をfoo.plなど任意のファイル名でplugins配下にアップロードします。赤色部分がリストアクション定義です。

package MT::Plugin::Foo;
 
use strict;
use base qw( MT::Plugin );
 
my $plugin  = MT::Plugin::Foo->new({
    id          => 'foo',
    name        => 'foo',
    description => 'This is foo',
    version     => '0.1',
    registry => {
        list_actions => {
            entry => {
                foo => {
                    label => 'foo',
                    mode => 'foo',
                    order => 1000
                },
            },
        },
    },
});
MT->add_plugin($plugin);

2.コア機能としてリストアクションを追加する

コア機能としてのリストアクションは次のように、既存のリストアクションと並べて表示でき、1項のリストアクションよりメニューがすっきりします。もちろんメニューからの動作はプラグインで実装可能です。

コア機能のリストアクション

コア機能としてリストアクションを追加するには、次の内容をfoo.plなど任意のファイル名でplugins配下にアップロードします。

package MT::Plugin::Foo;
 
use strict;
use base qw( MT::Plugin );
 
my $plugin  = MT::Plugin::Foo->new({
    id          => 'foo',
    name        => 'foo',
    description => 'This is foo',
    version     => '0.1',
    registry => {
        callbacks => {
            init_request => \&init_request,
        },
    },
});
MT->add_plugin($plugin);
 
sub init_request {
    my ($eh, $app) = @_;
    my $core = MT->component("core");
    $core->registry("list_actions", "entry", "foo",
        {
            label => 'foo',
            mode => 'foo',
            order => 1000,
        });
}
1;

1項との違いは、プラグインのレジストリにlist_actionsを追加するのではなく、init_request実行契機でコア機能($core)のレジストリに追加している点です。

registry()のパラメータにサンプルのようなハッシュ形式を記載すれば、list_actions以外の内容でも追加することができます。

    $core->registry("list_actions", "entry", "foo",
        {
            label => 'foo',
            mode => 'foo',
            order => 1000,
        });

3.注意事項

プラグイン定義はYAMLでも記述することができますが、MT5.12現在では、次のようなYAMLを定義しても一覧画面にリストアクションを追加することができないようです。

id: foo
name: foo
version: 0.01
list_actions:
    entry:
        foo:
            label: 'foo'
            mode: foo
            order: 1000

Viewing all articles
Browse latest Browse all 219

Trending Articles