Redmineのプラグインをメニューなどに表示させる方法をまとめる。
詳しくは、Extending the project menuを参考のこと。
メニューへの表示方法
init.rbにメニューで表示させる位置を記述する。
menu(menu_name, item_name, url, options={})<br /><br />
menu_name
メニューを表示させる場所は以下の4つから選べる。
- :top_menu – トップの左メニュー
- :account_menu -トップ右のサインイン/アウトのメニュー
- :application_menu – ユーザがプロジェクト内にはいってないときのメインメニュー
- :project_menu – ユーザがプロジェクト内にいるときのメインメニュー
item_name
多分、プラグイン名を指定する。僕は「:redmine_daizu」って指定している。
option
- controller・・・呼び出したいコントローラ名を指定する
- acction・・・呼び出したいアクション名を指定する
- caption・・・メニューに表示する文字。あとで国際化対応したいところ。
- 表示する場所・・・「:last => true」でメニューの最後に表示となる。afterとかbeforeとかでもメニューの場所は設定可能。
top menu
調査中。
account menu
調査中。
application menu
ログイン前の画面にタブ表示される。大豆プラグインはこれにしてみた。
menu :application_menu, :daizu, { :controller => 'daizu_main', :action => 'index' }, :caption => :daizu_name, :last => true
project menu
プロジェクトの画面を開いたときにメニューに出てくる。
permission :roadmaps, {:roadmaps_main => [:index]}, :public => true menu :project_menu, :roadmaps, { :controller => 'roadmaps_main', :action => 'index' }, :caption => :roadmaps_name, :after => :roadmap, :param => :project_id
「public => true」で表示されるようになる。
「ロードマップス」と表示されているのが分かる。
ロードマップスのリンクには「:param => :project_id」と指定しているため「http://localhost:3000/roadmaps_main?project_id=daizu2」のようにプロジェクトIDのパラメタがつく。
パーミッションの追加
init.rbに以下のように記述するとパーミッションの設定ができるようになる。
permission :view_roadmaps, :roadmaps_main => :index
コントローラごと、アクションごとに設定できるっぽい。
プロジェクトモジュール化
プロジェクトモジュール化することで、プロジェクトの設定画面で、プラグインを選択できるようになる。
init.rbには以下のように追加する。
project_module :roadmaps do permission :view_roadmaps, :roadmaps_main => :index end
設定画面のモジュールタブには以下のように表示される。
さらに、
最後に
メニュー表示をproject_menuにする場合は、権限の設定で表示/非表示を設定しないとでてこないので注意。