2010年11月07日

Redmineプラグインでメニューの表示順を変えてみる

最近は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

すると下記のようにメニューの位置が変更されているのが分かる。

プラグイン追加前

menu1

プラグイン追加後

menu2

menu.pushで独自のメニューを追加することもできる。controllerやactionにプラグイン内で作成したコントローラーやアクションを指定すればよい。

Redmineに既存のメニューを追加する場合は、controllerやactionの設定をどのような値を設定すればよいか迷うかもしれない。そんなときは、lib\redmine.rbを参考にすればよいだろう。このファイルを読むとプロジェクトメニューや管理権限メニューが、どのように設定されるかが分かると思う。

参考リンク

posted by cpractice at 23:14| Comment(0) | TrackBack(0) | Redmine | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/168636970

この記事へのトラックバック