最近はRedmineプラグインの作り方を調べている。
今回はプラグインを使って、プロジェクトメニューの項目を消したり位置を変えてみる。
(プロジェクトメニューとは、プロジェクトを選択したときに表示されるメニュー。)
試してみたのは、プロジェクトを選択したときに表示される「概要」タブを削除し(個人的にほぼ使わないタブなので)、「活動」タブ(あまり使わないタブなので)を「設定」の直前に持ってくること。
試した環境は下記の通り。
Redmine 1.0.2
Rails 2.3.5
Ruby 1.8.6
WindowsXP
なおRedmineのプラグインの作り方をダイジェストにまとめた記事「Redmineプラグイン作成方法のまとめ」もあるので、必要であれば参考に。
では、プラグインの作成方法を下記に示す。
1. Redmineプラグインの雛形を作成
Redmineプラグインの雛形をgenerateコマンドで作成する。
ここではプラグインの名前をNewUIとする。
> cd <REDMINE_HOME>> ruby script/generate redmine_plugin NewUI
すると、vendor/plugins/redmine_new_ui というディレクトリーと、それ以下にプラグインに必要なファイルが作成される。
2. init.rbの編集
メニュー位置の変更は、自動生成されたinit.rbで定義できる。
下記のようにinit.rbを変更する。
vendor/plugins/redmine_new_ui/init.rb
Redmine::Plugin.register :redmine_new_ui do name 'Redmine New Ui plugin' author 'Author name' description 'This is a plugin for Redmine' version '0.0.1' url 'http://example.com/path/to/plugin' author_url 'http://example.com/about' Redmine::MenuManager.map :project_menu do |menu| menu.delete :overview menu.delete :activity menu.delete :settings menu.push :activity,
{ :controller => 'activities', :action => 'index' } menu.push :settings,
{ :controller => 'projects', :action => 'settings' }, :last => true end end
上記青字部分が追加した箇所。
menu.deleteでメニューを削除、menu.pushでメニューを追加できる。
上の例では、「概要(overview)」、「活動(activity)」、「設定(settings)」の3つのタブを削除し、「活動(activity)」、「設定(settings)」を再度後半に加えている。 結果的に「概要」タブがなくなって、「活動」タブが「設定」タブの左に移動した形になるはずである。
3. Redmineを再起動
プラグインを有効にするにはRedmineを再起動する必要がある。
> ruby script\server
すると下記のようにメニューの位置が変更されているのが分かる。
プラグイン追加前
プラグイン追加後
menu.pushで独自のメニューを追加することもできる。controllerやactionにプラグイン内で作成したコントローラーやアクションを指定すればよい。
Redmineに既存のメニューを追加する場合は、controllerやactionの設定をどのような値を設定すればよいか迷うかもしれない。そんなときは、lib\redmine.rbを参考にすればよいだろう。このファイルを読むとプロジェクトメニューや管理権限メニューが、どのように設定されるかが分かると思う。
参考リンク
- Ruby Freaks Lounge:第34回 Redmineプラグイン開発(1)
http://gihyo.jp/dev/serial/01/ruby/0034