2013年4月 のアーカイブ
RoudcubeプラグインでAjaxする
- 2013/04/26
- uchida
RoudcubeプラグインでAjaxする方法を紹介します。
サーバ側:
rc = rcmail::get_instance();
$this->add_texts('localization/');
$this->register_task('ajax_sample');
if($this->rc->task == 'ajax_sample'){
$this->register_action('index', array($this, 'action'));
$this->register_action('get_data', array($this, 'action'));
}else{
$this->add_button(array(
'command' => 'ajax_sample',
'label' => 'ajax_sample.title'
), 'taskbar');
}
}
public function action(){
//画面表示
if($this->rc->action === 'index'){
$this->include_script('ajax_sample.js');
$this->rc->output->send('ajax_sample.ajax_sample');
//ajax
}else if($this->rc->action === 'get_data'){
error_log(get_input_value('data', RCUBE_INPUT_POST));
$this->rc->output->command('plugin.get_data', array('data' => 'test'));
}
}
}
クライアント側:
var get_data_call_back = function(response){
console.log(response.data);
}
if (window.rcmail) {
rcmail.addEventListener('init', function() {
rcmail.addEventListener('plugin.get_data', get_data_call_back);
rcmail.enable_command('get_data', true);
});
}
rcube_webmail.prototype.get_data = function()
{
rcmail.http_post('get_data',{"data":'test'});
}
①コールバックの登録
クライアント側のrcmail.addEventListener(‘plugin.get_data’, get_data_call_back);の
第一引数と
サーバ側の$this->rc->output->command(‘plugin.get_data’, array(‘data’ => ‘test’));の
第一引数を
一致させる必要があります。
この際に’plugin.’という文字を前につける必要があります。
なぜなら/roundcuberoot/program/include/rcube_json_output.phpの
141行目が次のようになっています。
public function command()
{
$cmd = func_get_args();
if (strpos($cmd[0], 'plugin.') === 0)
$this->callbacks[] = $cmd;
else
$this->commands[] = $cmd;
}
ここでcallbacksに登録されないため
/roundcuberoot/program/js/app.src.jsの6041行目
// execute callback functions of plugins
if (response.callbacks && response.callbacks.length) {
for (var i=0; i < response.callbacks.length; i++)
this.triggerEvent(response.callbacks[i][0], response.callbacks[i][1]);
}
この部分のコールバックとして実行されません。
②ポストするデータ
rcmail.http_post('get_data',{"data":'test'});の第二引数で指定します。
③サーバから返すデータ
$this->rc->output->command('plugin.get_data', array('data' => 'test'));の第二引数で指定します。
Roundcubeのボタンの使い方
- 2013/04/26
- uchida
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']
);
上記のコードの通り、複数の引数を指定することは無理そうですね・・。
Roundcubeプラグインの作り方
- 2013/04/12
- uchida
①プラグインは roundcuberoot/plugins配下に作成します。
(既にたくさん入っているようです。)

②作成したディレクトリ名と同じ名前のphpファイルを作成します。
![]()
③②で作成したphpファイルと同じ名前のクラス名にします。
④作成したクラスはrcube_pluginクラスを継承しなければなりません。
⑤プラグインクラス(/roundcuberoot/program/include/rcube_plugin.php)の
抽象メソッドであるinitメソッドをオーバーライドします。
abstract function init();
initメソッドは必須になります。
プラグインAPIクラス(/roundcuberoot/program/include/rcube_plugin_api.php)は、
プラグインオブジェクトをインスタンス化し、initメソッドを呼び出します。
これで何にもしないプラグインは出来上がりです。
⑥でも、これだと出来たかどうかわからないのでタスクバーにボタンを追加します。
add_texts('localization/');
$this->add_button(array(
'command' => 'sample',
'label' => 'sample.sample',
), 'taskbar');
}
}
⑦ja_JP.incファイル
⑧最後に/roundcuberoot/config/main.inc.phpに
プラグインを登録します。
$rcmail_config['plugins'] = array('sample');




SourceTree for Windowsで秘密鍵と公開鍵を生成!
前回は SourceTree for Windows をインストールしましたが、それだけではGitは使えません~。
ほとんどのGitサーバーでは、SSHの公開鍵認証を使用しています。
SourceTreeでは「秘密鍵」と「公開鍵」を簡単に生成することが出来ます。
以下手順です。
1、”Tools” > “Create or Import SSH Keys”を選択します。
2、PuTTY Key Generatorが開くので、”Generate”ボタンをクリックし、鍵を生成します。

“Generate”ボタンをクリックすると、鍵が生成されるはずなのですが…

なんだこれ…すっごい遅い…ウ ゴ カ ナ イ !
と思ってたら、乱数を作るためにマウスでこの辺りを

ぐるぐるぐる~ぐちゃぐちゃ~っっとやると、あっという間に終わります(笑)
最初はこれを知らずに、無駄に待ち続けました…。
3、”Save Private Key”をクリックし、秘密鍵を保存します。

私は”id_rsa.ppk”という名前で保存しました。
特に決まりはないそうですが、自分がわかりやすいものでいいと思います。
秘密鍵は、その名の通り自分以外には知られてはいけません。秘 密 で す (*_*)
人に見せたり、紛失したりしないよう管理しましょう。
4、”Save Public Key”をクリックし、公開鍵を保存します。

こちらも特に決まりはないので、”id_rsa.pub”という名前で保存しました。
コメントの記入やパスワードの設定を行いたい場合は
“Key comment”、”Key passhrase”に、それぞれ入力してください。

5、鍵を登録します。
“Tools” > “Launch SSH Agent(pageant)”を選択します。
先ほど保存した秘密鍵(“id_rsa.ppk”)を選択すると、鍵が登録されます。
(パスワードを設定した場合はパスワードの入力を求められます)
サクサクサクっと鍵の設定完了ですー(´∀`)
VirtualBoxのスナップショットを使おう
- 2013/04/08
- aikawa
開発をしていると、インストール後に有る程度の設定をした状態で色々と試して、駄目だったらその時の状態に戻したい事が有ります。
VirtualBoxで、割と簡単に出来るので使い方を。
保存しておきたい状態にした仮想マシンを一度シャットダウンします。
対象となる仮想マシンを選んで、VirtualBoxメニューにあるスナップショットをクリック。
![]()
左上にあるカメラアイコンをクリックしてスナップショットを作成。

今回は名前を変えなかったので、スナップショット 1と表示されています。

色々と試した後、マシンを終了してスナップショットから戻したい場所を右クリックして、スナップショットに復元を選びます。

これで起動すれば、スナップショットを撮った状態まで戻っています。
SourceTree for Windowsをインストールしました!
SourceTree for Windowsがリリースされたのでインストールしてみましたー。
beta版の試用を申し込んだまま、作業に区切りがつくまでは…とか言ってズルズル放置してましたが
やっとインストールしました~(´∀`;)
GitGuiもGitHubもソースの一部が消失するなどのトラブルが続いたのでもうさよならバイバイ。
Git初心者な私にとっては、トラブルは避けたいところなのです(;´Д`)
ちなみにWindows7以上でないとインストールできないようです。
折角なのでインストールの一連の流れを、私のような初心者のために…。
SourceTree for Windowsをインストールするにあたり、とりあえずGitと名の付くものは
片っ端からアンインストール+削除しました。
さっぱりしたところで、SourceTree for Windowsのインストーラーをダウンロードします。
以下のページからダウンロードできます。
http://www.sourcetreeapp.com/
インストーラーを起動すると「Git本体はどうしますかー?」と聞かれます。
私は既に全部削除しちゃったので、一番上の
“Download an embedded version of Git for SourceTree alone to use”を選択しました。
既にインストールしている場合はスルーされるようです。
Git本体のインストールを行うとセットアップ画面が表示されます。
名前とアドレスを入力し、規約に同意できれば”I agree to the SourceTree license agreement”
にチェックを入れ、”Next”をクリックします。
AtlassianのBitbucket, Stashを使用している場合は、そのままアカウントのサインアップができます。
使用してなければ”Finish”をクリックし、インストール完了です!!
次回は「鍵」を作成します(´∀`)ふっふっふ。
CentOS 6.3 に Kolab Groupware をインストール。
さてさて、ども初めまして。弊社のKolab翻訳担当です。
2013.03.11 よりスイスはチューリヒの Kolab Systems AG 社とパートナー提携いたしました。
そこで、今の所、英語ソースしかない、Kolab Groupware のインストールについて、
少しばかりインストールのコツなどをば…。
まず、Kolab Groupware の現行バージョンですが、3.0です。CentOS等のレッドハット系では、
el6、kernel 2.6.32 以降に対応しています。(自宅のCentOS 5.4 に入れようとしましたが、パッケージの依存関係等で入りませんでした。)
無料で利用できるのは、コミュニティ版である、Kolab-3.0-release-community です。
準備としましては…
KVNにて、作成してあるx86_64のREHL6 型の仮想マシンにCentOS 6.3をインストールしてあるものを利用しました。パーティションなどはデフォルトです。(こんな感じ…)
[root@kolab ~]# df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/vg_kolab-lv_root
5.5G 2.1G 3.2G 40% /
tmpfs 499M 20K 499M 1% /dev/shm
/dev/sda1 485M 32M 429M 7% /boot
CentOSは、最小構成(minimal)でインストールして、後から、”Base” “Development Tools” をyumでグループインストールしてます。
[root@kolab ~]# yum -y groupinstall "Base" "Development Tools"
次の準備は…
selinux: 無効化
iptables: tcp 25番、80番、110番、143番、389番、443番、465番、587番、636番、993番、995番 を開けます。
/etc/hosts に FQDN、ホスト名を追加。あと、ローカルIPでの名前解決の行を追加。
(DNS持っていて、ローカルIPでFQDNが参照できる場合はいらないです。)
[root@kolab ~]# diff -urw /etc/hosts.orig /etc/hosts
--- /etc/hosts.orig 2010-01-12 22:28:22.000000000 +0900
+++ /etc/hosts 2013-04-01 16:03:29.663819681 +0900
@@ -1,2 +1,3 @@
-127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
+127.0.0.1 kolab.lancard.com kolab localhost localhost.localdomain localhost4 localhost4.localdomain4
+xxx.xxx.xxx.xxx kolab.lancard.com kolab localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
あと必要なものが、yum-plugin-priorities です。yumにてさくっとインストールしてください。
[root@kolab ~]# yum -y install yum-plugin-priorities
次に、yumリポジトリを追加します。
○EPEL リポジトリ
[root@kolab ~]# wget "http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm"
○Kolab-3.0-community-release リポジトリ
[root@kolab ~]# wget "http://mirror.kolabsys.com/pub/redhat/kolab-3.0/el6/development/i386/kolab-3.0-community-release-6-2.el6.kolab_3.0.noarch.rpm"
[root@kolab ~]# yum localinstall --nogpgcheck epel-release-6.8.noarch.rpm kolab-3.0-community-release-6-2.el6.kolab.3.0.noarck.rpm
リポジトリが追加されたら、リポジトリの設定を行います。リポジトリ設定の要点は、
CentOS-Base の[extras] を無効化、その他有効リポジトリの優先度を99に設定。
epel の有効リポジトリの優先度を99に設定。
その他Kolab関連(release、develop)のリポジトリの優先度を50に設定。(develop は後で追加し設定します。)
以上、3点です。
・CentOS-Base.repo
[root@kolab yum.repos.d]# diff -urw CentOS-Base.repo.orig CentOS-Base.repo
--- CentOS-Base.repo.orig 2013-02-25 17:57:43.000000000 +0900
+++ CentOS-Base.repo 2013-03-29 11:22:09.810968496 +0900
@@ -16,6 +16,7 @@
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
+priority=99
#released updates
[updates]
@@ -24,6 +25,7 @@
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
+priority=99
#additional packages that may be useful
[extras]
@@ -31,6 +33,7 @@
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
+enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
・epel.repo
[root@kolab yum.repos.d]# diff -urw epel.repo.orig epel.repo
--- epel.repo.orig 2012-11-05 12:52:17.000000000 +0900
+++ epel.repo 2013-03-29 11:23:46.412942219 +0900
@@ -6,6 +6,7 @@
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
+priority=99
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
・kolab-3.0-release.repo
[root@kolab yum.repos.d]# diff -urw kolab-3.0-release.repo.orig kolab-3.0-release.repo
--- kolab-3.0-release.repo.orig 2012-08-04 21:58:22.000000000 +0900
+++ kolab-3.0-release.repo 2013-03-29 11:26:20.946866077 +0900
@@ -4,6 +4,7 @@
enabled = 1
gpgcheck = 0
gpgkey = https://ssl.kolabsys.com/santiago.asc
+priority=50
[kolab-3.0-debuginfo]
kolab-3.0-develop リポジトリの追加
[root@kolab ~]# yum -y install kolab-3.0-community-release-development
前述通り、上記リポジトリと同様に、優先度の設定。release と同じ50にします。
[root@kolab yum.repos.d]# diff -urw kolab-3.0-development.repo.orig kolab-3.0-development.repo
--- kolab-3.0-development.repo.orig 2012-08-04 21:58:22.000000000 +0900
+++ kolab-3.0-development.repo 2013-03-29 11:33:17.334674626 +0900
@@ -4,7 +4,7 @@
enabled = 1
gpgcheck = 0
gpgkey = https://ssl.kolabsys.com/santiago.asc
-
+priority=50
[kolab-3.0-development-debuginfo]
name = Enterprise Linux 6 Kolab 3.0 Packages - Debugging Symbols
リポジトリの追加が終わりましたら。Kolab Groupware のインストールを行います。
全コンポーネントを簡単にインストールするには、さくっと一行打つだけです。お手軽です。
[root@kolab ~]# yum -y install kolab
インストールが無事完了したら、Kolabの設定を行います。こちらも簡単。
[root@kolab ~]# setup-kolab
と、セットアップ用のコマンドを打ち、あとは表示されるメッセージに従って、パスワード等を設定していけばOKです。
※※※ setup-kolab に失敗した!! ※※※
さてさて…ここまではすんなり進んでも…このsetup-kolab で引っ掛かる人がおそらくいるのではないでしょうか。
ええ…私も実は、引っかかったクチです (・w・;
私の場合は…「間違ったパスワードを設定してしまい思い出せなくなった。」「ホスト名、ドメイン名が変更になった。」
という事で、再度 setup-kolab を実行したら、エラーが発生して再設定が出来なくなった事です。
そういう時の対処方法です。
・まず、389 Directory Server のサービスを停止します。
[root@kolab ~]# service dirsrv stop
・次に、389 Directory Server の設定ファイル(slapd-ホスト名)を退避or削除します。
[root@kolab ~]# mv /etc/dirsrv/slapd-kolab/ /etc/dirsrv/bk_slapd-kolab
・MySQLのデータベースの削除
(もし…MySQLのrootパスワードがわからなくなってた場合は…MySQLの解説サイトで調べてください(-w-; )
[root@kolab ~]# mysql -u root -p
Enter password:
データベースの一覧を見て、kolab、roundcube というデータベースがある事を確認してください。
この2つのデータベースを削除します。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| kolab |
| mysql |
| roundcube |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> use kolab;
mysql> drop database kolab;
mysql> use roundcube;
mysql> drop database roundcube;
これで、再度 setup-kolab が走るようになります。
ホスト名やドメイン名を変更して、setup-kolab を実行してみましょう。
※ちなみに…Kolab Groupware に登録していたユーザやグループ、各ユーザのメールやその他データなどは、
もちろん、吹っ飛んでしまいますので、あくまで、初期導入時にのみ使用できる方法です。
ではでは。









