Japanese plugin dev 5 1
uehatsu edited this page May 9, 2011
·
6 revisions
これまでのドキュメントで、管理画面の修正方法をいくつか紹介してきました。
今回は「リストアクション」について解説します。
リストアクションとはオブジェクトの一覧ページで「アクション…」と書かれているプルダウンメニューに追加される「プラグインアクション」を指します。
利用できる一覧ページは以下の管理画面になります。
- ブログ記事一覧
- ウェブページ一覧
- アイテム一覧
- トラックバック一覧
- コメント一覧
- コメントユーザー一覧
- ユーザー一覧
- ブログ一覧
- サイト一覧
- テンプレート一覧
今回は「ユーザー一覧」に新しいリストアクションを追加します。
- 「システムメニュー」>「ユーザー一覧(ユーザーの管理)」ページのリストアクションに「プラグインアクション」を追加する
- 選択したユーザーの使用言語を変更できる
- 対応言語は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との連携
- 権限とロール