Movable Typeのメッセージセンターの使い方

Movable Typeのメッセージセンターの使い方

Posted at November 15,2013 1:55 AM
Tag:[MovableType, Plugin]

Movable Type 6で導入されたメッセージセンターの使い方を紹介します。

1.メッセージセンターとは

メッセージセンターとは、MT管理画面の上部にアラートなどのメッセージを表示してくれる機能のことです。

すべての管理画面にメッセージを表示し、ユーザーダッシュボードにメッセージの詳細を表示してくれます。

管理画面の表示
管理画面の表示

ユーザーダッシュボードの表示
ユーザーダッシュボードの表示

2.プラグインの作り方

メッセージセンターを利用するプラグインの作り方を紹介します。

このエントリーで紹介するサンプルプラグインは以下のリンクからダウンロードできます。

AlertNotifier_0_01.zip

ここでは「AlertNotifier」というプラグイン名にします。

AlertNotifierプラグインのファイル構成は次のようになります。

plugins
 └ AlertNotifier
   ├ config.yaml
   └ lib
     └ AlertNotifier
       └ CMS.pm

プラグイン定義ファイルconfig.yamlの内容は次のようになります。このファイルの文字エンコーディングはUTF-8で保存してください。

id: AlertNotifier
name: AlertNotifier
version: 1.00
l10n_lexicon:
    ja:
        error occured: XXエラー発生
        this is error.: エラーがあります。
callbacks:
    set_notification_dashboard: $AlertNotifier::AlertNotifier::CMS::notify

コールバックの「set_notification_dashboard:」にメッセージを通知するためのハンドラ名を記載します。

callbacks:
    set_notification_dashboard: $AlertNotifier::AlertNotifier::CMS::notify

詳細は割愛しますがメッセージのローカライズもconfig.yaml内で行えます。

l10n_lexicon:
    ja:
        error: XXエラー発生
        error occurred.: エラーがあります。

ハンドラに対応するPerlモジュールCMS.pmの内容は次のとおりです。

package AlertNotifier::CMS;
 
use strict;
 
sub notify {
    my $cb = shift;
    my ( $loop_notification_dashboard ) = @_;
    my $plugin = MT->component('AlertNotifier');
    my @notifications = (
        {
            level  => 'error',
            text   => $plugin->translate('error'),
            detail => $plugin->translate('error occurred.'),
        },
    );
    push @{ $loop_notification_dashboard }, @notifications;
}
 
1;

配列変数@notificationsにハッシュ形式で通知したいメッセージを実装します。ハッシュのキーの意味は次の通りです。

  • level:メッセージの通知レベルです。error/warning/successの3種類があり、デフォルトはwarningです。
  • text:見出しを記述します。サンプルの「XXエラー発生」が該当します。
  • detail:詳細メッセージを記述します。サンプルの「エラーがあります。」が該当します。

表示は次のようになります。

errorの表示
errorの表示

warningの表示
warningの表示

successの表示
successの表示

複数のメッセージを記載することもできます。

…前略…
    my @notifications = (
        {
            level  => 'error',
            text   => $plugin->translate('Error'),
            detail => $plugin->translate('error occurred.'),
        },
        {
            level  => 'warning',
            text   => $plugin->translate('Warning'),
            detail => $plugin->translate('warning occurred.'),
        },
        {
            level  => 'success',
            text   => $plugin->translate('Success'),
            detail => $plugin->translate('You got a success.'),
        },
    );
…後略…

複数記載した場合、記載した順番で表示されます。

複数記載した場合の表示
複数記載した場合の表示

複数記載した場合の表示(折りたたみを広げたところ)
折りたたみを広げたところ

追加した内容に応じてローカライズメッセージも追加してください。

l10n_lexicon:
    ja:
        error occured: XXエラー発生
        error occurred.: エラーがあります。
        Warning: XX警告発生
        warning occurred.: 警告があります。
        Success: 成功しました
        You got a success.: XXが成功しました
関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)