Redmineプラグイン開発 – メニューの表示

感想おまちしてます!

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」で表示されるようになる。

001

「ロードマップス」と表示されているのが分かる。

ロードマップスのリンクには「:param => :project_id」と指定しているため「http://localhost:3000/roadmaps_main?project_id=daizu2」のようにプロジェクトIDのパラメタがつく。

パーミッションの追加

init.rbに以下のように記述するとパーミッションの設定ができるようになる。

permission :view_roadmaps, :roadmaps_main => :index

コントローラごと、アクションごとに設定できるっぽい。
002
http://localhost:3000/roles/reportの権限レポートを開くと「View roadmaps」という行が増えている。

プロジェクトモジュール化

プロジェクトモジュール化することで、プロジェクトの設定画面で、プラグインを選択できるようになる。
init.rbには以下のように追加する。

  project_module :roadmaps do
permission :view_roadmaps, :roadmaps_main => :index
end

設定画面のモジュールタブには以下のように表示される。

003

さらに、
http://localhost:3000/roles/reportの権限レポートは上のパーミッション設定とはちょっと違う表示になる。

004

最後に

メニュー表示をproject_menuにする場合は、権限の設定で表示/非表示を設定しないとでてこないので注意。