Japanese plugin dev 5 1 - Hiranyaloka/Documentation GitHub Wiki
これまでのドキュメントで、管理画面の修正方法をいくつか紹介してきました。
今回は「リストアクション」について解説します。
リストアクションとはオブジェクトの一覧ページで「アクション…」と書かれているプルダウンメニューに追加される「プラグインアクション」を指します。
利用できる一覧ページは以下の管理画面になります。
- ブログ記事一覧
- ウェブページ一覧
- アイテム一覧
- トラックバック一覧
- コメント一覧
- コメントユーザー一覧
- ユーザー一覧
- ブログ一覧
- サイト一覧
- テンプレート一覧
今回は「ユーザー一覧」に新しいリストアクションを追加します。
- 「システムメニュー」>「ユーザー一覧(ユーザーの管理)」ページのリストアクションに「プラグインアクション」を追加する
- 選択したユーザーの使用言語を変更できる
- 対応言語はMTが対応している物
- 日本語、英語、ドイツ語、スペイン語、フランス語、オランダ語
id: MyPlugin15
key: MyPlugin15
name: <__trans phrase="Sample Plugin Add Action">
version: 1.0
description: <__trans phrase="_PLUGIN_DESCRIPTION">
author_name: <__trans phrase="_PLUGIN_AUTHOR">
author_link: http://www.example.com/about/
doc_link: http://www.example.com/docs/
l10n_class: MyPlugin15::L10N
applications:
cms:
list_actions:
author:
author_language_ja:
label: Language Japanese
order: 100
permit_action: administers
handler: $MyPlugin15::MyPlugin15::Actions::hndl_author_language_ja
author_language_en_US:
label: Language English
order: 200
permit_action: administers
handler: $MyPlugin15::MyPlugin15::Actions::hndl_author_language_en_US
author_language_de:
label: Language Deutsch
order: 300
permit_action: administers
handler: $MyPlugin15::MyPlugin15::Actions::hndl_author_language_de
author_language_es:
label: Language Español
order: 400
permit_action: administers
handler: $MyPlugin15::MyPlugin15::Actions::hndl_author_language_es
author_language_fr:
label: Language Français
order: 500
permit_action: administers
handler: $MyPlugin15::MyPlugin15::Actions::hndl_author_language_fr
author_language_nl:
label: Language Nederlands
order: 600
permit_action: administers
handler: $MyPlugin15::MyPlugin15::Actions::hndl_author_language_nl
id: MyPlugin15 key: MyPlugin15 name: <__trans phrase="Sample Plugin Add Action"> version: 1.0 description: <__trans phrase="_PLUGIN_DESCRIPTION"> author_name: <__trans phrase="_PLUGIN_AUTHOR"> author_link: http://www.example.com/about/ doc_link: http://www.example.com/docs/ l10n_class: MyPlugin15::L10N
- 通常のプラグイン設定
applications:
cms:
list_actions:
author:
- ユーザー一覧のリストアクションのレジストリトップ
author_language_ja:
label: Language Japanese
order: 100
permit_action: administers
handler: $MyPlugin15::MyPlugin15::Actions::hndl_author_language_ja
-
author_language_ja:リストアクション-
label: Language Japanese:リストのラベル -
order: 100:リストのオーダー(並び順) -
permit_action: administers:管理者のみ表示 -
handler: $MyPlugin15::MyPlugin15::Actions::hndl_author_language_ja:ハンドラの設定
-
これ以降、言語(英語、ドイツ語、スペイン語、フランス語、オランダ語)別の実装のため省略します。
package MyPlugin15::Actions;
use strict;
sub hndl_author_language_ja {
my $app = shift;
_set_author_language($app, 'ja');
}
sub hndl_author_language_en_US {
my $app = shift;
_set_author_language($app, 'en_US');
}
sub hndl_author_language_de {
my $app = shift;
_set_author_language($app, 'de');
}
sub hndl_author_language_es {
my $app = shift;
_set_author_language($app, 'es');
}
sub hndl_author_language_fr {
my $app = shift;
_set_author_language($app, 'fr');
}
sub hndl_author_language_nl {
my $app = shift;
_set_author_language($app, 'nl');
}
sub _set_author_language {
my ($app, $language) = @_;
require MT::Author;
my @author_ids = $app->param('id');
for my $author_id (@author_ids) {
my $author = MT::Author->load($author_id);
$author->preferred_language($language);
$author->save;
}
$app->redirect( $app->return_uri );
}
1;
package MyPlugin15::Actions; use strict;
- パッケージ名の宣言と
use strict;しています。
sub hndl_author_language_ja {
my $app = shift;
_set_author_language($app, 'ja');
}
-
sub hndl_author_language_ja {}日本語用のハンドラ関数です。- 内部関数
_set_author_language();に$appと'ja'を渡しています。
- 内部関数
以下、多言語用のハンドラ関数のため省略します。
sub _set_author_language {
my ($app, $language) = @_;
require MT::Author;
my @author_ids = $app->param('id');
for my $author_id (@author_ids) {
my $author = MT::Author->load($author_id);
$author->preferred_language($language);
$author->save;
}
$app->redirect( $app->return_uri );
}
-
sub _set_author_language {}内部関数-
$appと$languageを受け取ります。 -
$app->param('id')に選択したユーザーのIDが配列で渡されるので@author_idsに格納します。 - 配列を回し
$author_idをキーに処理を行います。 -
$authorをロードし、言語(preferred_language)を設定します。 -
$authorをセーブします。 - すべてのユーザーを処理した後、元の画面に戻ります。
-
$MT_DIR/
|__ plugins/
|__ MyPlugin15/
|__ config.yaml
|__ lib/
|_ MyPlugin15/
|__ Actions.pm
|__ L10N.pm
|_ L10N/
|_ en_us.pm
|_ ja.pm
簡単にリストアクションが追加できる事を分かっていただけたでしょうか?
従来一つずつ設定を行っていた物を、リストアクションの追加で選択して処理を一度に行う事が出きるようになります。
ご自分の要求に合ったリストアクションを追加して、業務の省力化を試してみて下さい。
- プラグイン開発のためのファーストステップ
- レジストリ、YAMLについて
- 環境変数について
- プラグインのローカライゼーションについて
- テストドリブンでのプラグインの開発について
- グローバル・モディファイアプラグインの開発について
- ファンクションタグ プラグインの開発について
- ブロックタグ プラグインの開発について
- コンディショナルタグ プラグインの開発について
- プラグインのデバッグ
- プラグインの設定方法
- コールバックとフックポイント
- スケジュールタスクの開発
- MTオブジェクトの利用方法
- 独自オブジェクトの作成
- 新規アプリケーションの作成
- Transformerプラグインの開発
- 管理画面のメニュー修正
- リストアクションの追加
- 動作モードの追加とモーダルウィンドウの表示
- 外部Web APIとの連携
- 権限とロール