ダッシュボードウィジェット

| | トラックバック(1)

カテゴリ:

いままでに、個人のとバイト先のとを合わせると、
4つほどMTのダッシュボードに表示するウィジェットのプラグインの
開発に関わった。(うち二つはすでにあるものを修正)

(もう一つはいまのところ一般公開はされていない。それは、任意のRSSフィードのアドレスを登録するとその内容を表示するというもの。)

今、新たにもう一つ作ろうと思っていて、もう一度ダッシュボードに何かを表示するプラグインについて調査中。

今までのソースコードをちょこちょこ修正すればダッシュボードの表示を変えることはできるのだけど、なんとなく"正しい"やり方ではないような気がしていて、もっとスマートなやり方があるのではないかと感じている。

で、MovableTypeの本家のページにそれに関連するページがあるので、とりあえず訳す。(まだ途中)


Registering Dashboard Widgets - movabletype.org

ダッシュボードウィジェットを登録する

Movable Type's Dashboard is designed to give administrators and users of Movable Type an overview of activity happening within the system or on a single blog. Movable Type ships with a number of dashboard widgets by default, including:

  • This is You - a mini-stats about your authoring stats
  • Comment Stats - a graphical widget that shows commenting activity
  • Entry Stats - a graphical widget that shows authoring activity
  • Tag Cloud - a list of frequently used tags
  • MT News - a summary of the latest Movable Type news
  • Shortcuts - a list of handy links users commonly access

Movable Type allows developers to define their own Dashboard Widgets using Movable Type's templating language. These widgets can then be registered with the system to allow users to add them to their dashboard with a click of a button.

To register a widget add the following code to your plugin:

sub init_registry {  
  my $plugin = shift;  
  $plugin->registry({  
      widgets => {  
          hello_world => {  
              label    => 'Hello World',  
              plugin   => $plugin,  
              template => 'hello_world.mtml',  
          },  
      },  
  });  
}

Then in tmpl/hello_world.mtml you place the following code:

<mtapp:widget class="widget hw-widget"  
  label="<__trans phrase="Hello World">"  
  can_close="1">  
  <h1>HELLO WORLD</h1>  
</mtapp:widget>

You can also specify a few other fields:

ダッシュボードウィジェット登録時のプロパティ

ウィジェットを登録するときは以下のプロパティが使われます。

system_permission と permission

ウィジェットを追加したり使用したりするのに(システムダッシュボードの上で)ある種の権限や全システムの権限を要求する場合に設定します。例えば、

「 permission => 'post'」

とすると、ウィジェットを追加しようとするブログに投稿することができるユーザーでなあることを要求します。コンマを使うことで、一つ以上の権限を設定できます。

condition

Requires a custom handler to approve of the user and dashboard to add and use the widget. Your coderef is passed ($page, $scope) where $page is "dashboard" and $scope is either "dashboard:system" or "dashboard:blog:blog_id".

singular

この値を真に設定すると、ダッシュボード上のウィジェットのインスタンスを一つに限ることができます。すでにウィジェットが生成されている場合は、「ウィジェットを追加」の項目にはそのウィジェットは現れなくなります。

set

ダッシュボード上の特定のカラムにのみウィジェットを表示する場所を制限します。「main」か「sidebar」を設定することでウィジェットをどちらに表示させるかを設定できます。

code あるいは handler

ウィジェットのランタイム環境をカスタマイズできます。ここで指定したコールバックあるいはハンドラーは、

($app, $tmpl, $widget_param)

というパラメータと共に呼び出されます。

$tmplはあなたが指定したテンプレートで、$widget_paramはあなたのテンプレートを構成するパラメータ群になります。あなたのコールバックが呼ばれると、以下のものを含んでいます。

  • The keys and values from the dashboard page so far
  • The param value from your widget config (I don't fully grok widget config)
  • blog_id if any
  • widget_block, the part of the dashboard your widget is in (main or sidebar)
  • widget_id, the key you filed your widget under in the registry
  • widget_scope, the scope of the dashboard your widget is in (see condition above)
  • widget_singular, what you set in your singular option
  • magic_token, your CSRF-proof token for submitting forms

Note that if through your template or code callback you set the htmlhead or jsinclude variables, those values will be appended to the dashboard page's variables of the same name. You can inject stylesheets and behavior that way. No other content is allowed to escape your widget processing.

comments powered by Disqus

トラックバック(1)

このブログ記事を参照しているブログ一覧: ダッシュボードウィジェット

このブログ記事に対するトラックバックURL: http://nozawashinichi.sakura.ne.jp/MT-4.25/mt-tb.cgi/387

さらにダッシュボードウィジェットについて。 以前の記事。 ダッシュボードウィジェ... 続きを読む

comments powered by Disqus

このブログ記事について

このページは、Shinichi Nozawaが2009年5月 5日 03:10に書いたブログ記事です。

ひとつ前のブログ記事は「Amazon S3の料金」です。

次のブログ記事は「ハンドラに渡される変数(ダッシュボードウィジェット)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。