Wiki編集画面で、編集エリアの上部にツールバーと呼ばれるアイコンのリストがあります。このツールバーのアイコン達は、標準ではテキストエリアにWikiマークアップを挿入するショートカットのようなもので、私はファイルの追加以外のものを使うことはありません。
このツールバーはJavaScriptで動的に生成されているので、表示に少しタイムラグがあるのが難ですが、その分プラグインが独自にツールバーアイコンを追加しやすいようになっています。各プラグインのscript.jsに
toolbar.push({
'type' : 'format',
'title': 'タイトル',
'icon' : 'アイコン画像のパス',
'key' : 'icon',
'open' : '<タグ>',
'close': '</タグ>'
});
のように書いてやれば、DokuWikiが自動でツールバーに追加してくれ、指定したアクションを実行できるようになります。ただ、このアクションがテキストの現在地に指定したタグを挿入するというだけのものです。もうちょっと何か別のことをしたい場合に困ります。
こうした問題を解決する方法の1つに、TOOLBAR_DEFINEイベントを捕捉して、独自のアクションを実行するためのアイコンを挿入することができます。まず、actionプラグインでTOOLBAR_DEFINEを捕捉します。
class action_plugin_hoge extends DokuWiki_Action_Plugin {
function register(&$controller) {
$controller->register_hook('TOOLBAR_DEFINE',
'AFTER', $this, 'toolbar');
}
function toolbar(&$event) {
$event->data[] = array(
'type' => 'hoge', //独自のアクション名
'title'=> 'アイコンのマウスオーバー時に表示されるtool tip',
'icon' => 'アイコンの場所'
);
}
}
次に、javascript.jsで独自のアクション名”hoge”に対応するボタン生成用の関数を定義します。
function addBtnActionHoge(btn, props, edid) { //アクション名の最初の1文字は大文字にしてください
addEvent(btn,'click',function(){
//アイコンがクリックされたときに実行するアクションを記述
return false;
});
return true;
};
以上です。簡単でしたか?