3
3

More than 5 years have passed since last update.

Redmineのプロジェクトメニューを改造して「トラッカーを指定して『新しいチケット』ページを開く」メニューアイテムを追加する

Last updated at Posted at 2016-01-15

現状

プロジェクトメニューは下記画像のように Overview (概要) や Activity (活動) などのこと。

Redmine のプロジェクトメニュー

通常は「新しいチケット」 (New issue) のページを開いて、そこで目的のトラッカーを選択することになる。

調査

トラッカーを指定して「新しいチケット」のページを開く方法 (URL) は、下記リンク先を参考にした。

"URL to new issue with a specific tracker??"
https://www.redmine.org/boards/2/topics/14264

ただし Redmine 3.1.2 では下記

http://www.mysite.org/projects/{project}/issues/new?tracker_id={trackerid}

ではダメで、下記

http://www.mysite.org/projects/{project}/issues/new?issue[tracker_id]={trackerid}

とする必要があった。

改造の内容

プロジェクトメニューは下記で作成される。

メニューアイテムを追加する。お作法に従っているのか自信がない。

--- a/redmine-3.1.2/lib/redmine.rb  2015-11-14 18:03:27.000000000 +0900
+++ b/redmine-3.1.2/lib/redmine.rb  2016-01-16 01:32:21.541000000 +0900
@@ -230,7 +230,19 @@
   menu.push :new_issue, { :controller => 'issues', :action => 'new', :copy_from => nil }, :param => :project_id, :caption => :label_issue_new,
               :html => { :accesskey => Redmine::AccessKeys.key_for(:new_issue) },
               :if => Proc.new { |p| p.trackers.any? },
-              :permission => :add_issues
+              :permission => :add_issues,
+              :children => Proc.new { |p|
+                p.trackers.map do |t|
+                  Redmine::MenuManager::MenuItem.new(
+                    :new_issue_with_specific_tracker,
+                    {
+                      :controller => 'issues', :action => 'new', :project_id => p,
+                      :copy_from => nil, :issue => { :tracker_id => t.id }
+                    },
+                    :caption => t.name
+                  )
+                end
+              }
   menu.push :gantt, { :controller => 'gantts', :action => 'show' }, :param => :project_id, :caption => :label_gantt
   menu.push :calendar, { :controller => 'calendars', :action => 'show' }, :param => :project_id, :caption => :label_calendar
   menu.push :news, { :controller => 'news', :action => 'index' }, :param => :project_id, :caption => :label_news_plural

見た目を整えるために CSS を修正する。マウスオーバーで表示するようにする。CSS はよく分かっていなくておかしな書き方かもしれない。

--- a/redmine-3.1.2/public/stylesheets/application.css  2015-11-14 18:03:29.000000000 +0900
+++ b/redmine-3.1.2/public/stylesheets/application.css  2016-01-16 01:32:37.221000000 +0900
@@ -39,6 +39,7 @@
   margin: 0px 2px 0px 0px;
   padding: 0px 0px 0px 0px;
   white-space:nowrap;
+  position: relative;
 }
 #main-menu li a {
   display: block;
@@ -51,6 +52,15 @@
 #main-menu li a:hover {background:#759FCF; color:#fff;}
 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}

+#main-menu ul.menu-children {
+  position: absolute;
+  background-color: #628DB6; /* equals #header bg color */
+  min-width: 100%;
+  display: none;
+}
+#main-menu ul.menu-children li {float: none; margin: 0px;}
+#main-menu li a:hover + ul.menu-children, #main-menu ul.menu-children:hover {display: block; z-index: 1;}
+
 #admin-menu ul {margin: 0;  padding: 0;}
 #admin-menu li {margin: 0;  padding: 0 0 6px 0; list-style-type:none;}

改造後の見た目

下記は追加した後のスクリーンショット。

「トラッカーを指定して『新しいチケット』ページを開く」メニューアイテムを追加

下記スクリーンショットのように、名称の長いトラッカーでも幅が広がって表示できている。

名称の長いトラッカーがある場合

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3