Roundcubeのボタンの使い方を紹介します。
①テンプレートへの設置方法は以下のようになります。
このように書いておくと、次のように出力されます。
②イベントをどう処理するか?
このように書きます。
if (window.rcmail) {
rcmail.addEventListener('init', function() {
rcmail.enable_command('get_data', true);
});
}
rcube_webmail.prototype.get_data = function()
{
console.log('get_data');
}
③rcmail.enable_command(‘get_data’, true);の
最後の引数でそのボタンを有効にするか無効にするか指定します。
試しに2つのボタンを設置してみます。
次のようにjavascriptを記述します。
if (window.rcmail) {
rcmail.addEventListener('init', function() {
rcmail.enable_command('btn1', true);
rcmail.enable_command('btn2', false);
});
}
rcube_webmail.prototype.btn1 = function()
{
console.log('btn1');
}
rcube_webmail.prototype.btn2 = function()
{
console.log('btn2');
}
ボタンは2つとも見かけ上有効になります。
しかし、ボタン1をクリックするとコンソールに’btn1’が表示されますが、ボタン2をクリックしても何も起こりません。
④引数を渡すにはどうするか。
prop属性を指定します。
このように書くと
次のように出力してくれます。
rcmail.command(‘btn1′,’test’,this)この部分の第二引数にpropで指定した値が入ってきます。
javascript側では第一引数で取得します。
rcube_webmail.prototype.btn1 = function(value)
{
console.log(value);
}
上記のように記述するとコンソールに’test’と表示されます。
⑤複数の引数を指定出来るか。
ボタンのclick処理を出力するのは
/roundcuberoot/program/include/rcube_template.phpの978行目の以下のコードになります。
$attrib['onclick'] = sprintf(
"return %s.command('%s','%s',this)",
JS_OBJECT_NAME,
$command,
$attrib['prop']
);
上記のコードの通り、複数の引数を指定することは無理そうですね・・。