プラグイン紹介 redmine_better_gantt_chart

使っているプラグインを紹介します。今回は redmine_better_gantt_chart です。
ガントチャートでチケット同士の関係を矢印でつないで表示したりソート順を改善するプラグインです。
redmine-2系にはまだ対応していないようですが redmine-2系対応fork版 というのを見つけました。
これは 2系対応以外にも日付表示などの機能追加が入っているようです。

ただしこの版は背景色がすべてグレイになるというバグがあったので修正しました。(2012-12-10 に更新されたバージョンに関してなので近いうちに直っているかもしれません)
ついでに年月の表示の変更と「土」「日」をそれぞれ青と赤で表示する変更も入れました。
その(本家ではなく redmine-2系対応fork版に対する)パッチです。

--- app/views/gantts/show.html.erb.org
+++ app/views/gantts/show.html.erb
@@ -355,6 +355,6 @@
   <%= content_tag(:div, :style => style, :class => "gantt_hdr") do %>
     <%
-      month_title = month_f.strftime("%b")
-      month_title += " #{month_f.year}" unless show_years
+      month_title = month_f.month.to_s
+      month_title = "#{month_f.year}-" + month_title unless show_years
     %>
       <%= link_to h("#{month_title}"),
@@ -438,4 +438,6 @@
         style += "font-size:0.7em;"
         style += 'background:#f1f1f1;' if (@gantt.work_on_weekends && wday > 5)
+        style += 'color:blue;' if wday == 6
+        style += 'color:red;' if wday == 7
         style += 'border-left: 1px solid #c6c6c6;' if (!@gantt.work_on_weekends && wday == 1)
       %>
@@ -449,10 +451,7 @@
     <% end %>
     <%
-      if day.cwday <= work_days_in_week
-        left = left + width+1
-        wday = wday + 1
-      else
-        wday = 1
-      end
+      left = left + width+1 if day.cwday <= work_days_in_week
+      wday = wday + 1
+      wday = 1 if wday > 7
     %>
   <% end %>

さらについでに、Redmine のガントチャートでチケットを開始日順に表示する に書いたパッチもあてています。

--- lib/redmine/helpers/better_gantt.rb.org
+++ lib/redmine/helpers/better_gantt.rb
@@ -897,19 +897,12 @@
       def get_compare_params(issue)
         if RedmineBetterGanttChart.smart_sorting?
-          # Smart sorting: issues sorted first by start date of their parent issue, then by id of parent issue, then by start date
-
-          start_date = issue.start_date || Date.new()
-
-          if issue.leaf? && issue.parent.present?
-            identifying_id = issue.parent_id || issue.id
-            identifying_start = issue.parent.start_date || start_date
-            root_start = issue.root.start_date || start_date
-          else
-            identifying_id = issue.id
-            identifying_start = start_date
-            root_start = start_date
+          julian_date = Date.new()
+          ancesters_start_date = []
+          while (parent = issue.parent)
+            ancesters_start_date.unshift(issue.start_date || julian_date)
+            issue = parent
           end
-
-          [root_start, issue.root_id, identifying_start, start_date, issue.lft]
+          ancesters_start_date.unshift(issue.id)
+          ancesters_start_date
         else
           # Default Redmine sorting

プラグイン紹介 redmine_comment_only

使っているプラグインを紹介します。今回は redmine_comment_only です。

チケット表示の履歴には「ステータスを〜から〜に変更」「説明を更新」「添付ファイル〜を追加」などの変更情報も表示されますがこれらがずらっと並ぶとコメントが見づらくなります。
コメント以外の変更情報をデフォルトで非表示にしてくれるのが redmine_comment_onlyプラグインです。
非表示になった変更情報は画面一番下の「全ての履歴を表示」と書かれたリンクを押すとすべて表示されます。
再びコメントだけの表示にする方法は画面のリロードしかないようです。
redmine-1.3 で使っていますが残念ながら javascript まわりが変わった redmine-2系では機能しません。「こうやったら動くよ」等の情報がありましたら教えてください。m(_ _)m

プラグイン紹介 redmine_default_columns

使っているプラグインを紹介します。今回は redmine_default_columns です。

チケット一覧画面のデフォルトの設定はステータスが未完了のチケットが対象で表示項目は「管理」=>「設定」=>「チケットトラッキング」=>「チケットの一覧で表示する項目」で設定した項目になっています。
これとは違う設定でチケット一覧したいときはカスタムクエリを作成してそのカスタムクエリを選択することによってできますがデフォルトでこのカスタムクエリで表示して欲しいことがあります。
この機能を提供するのが redmine_default_columnsプラグインです。
Default」という名前の全プロジェクト向けでない公開カスタムクエリがあるとそのクエリがチケット一覧のデフォルト設定になります。見つからないときは通常の設定になります。
自分だけは違うクエリで表示したい人は「MyDefault」という名前の全プロジェクト向けでなく公開でないカスタムクエリを作っておくとそのクエリがチケット一覧のデフォルト設定になります。見つからないときは上記の「Default」を探しそれもないと通常の設定になります。
この「Default」「MyDefault」という名前が気に入らない人は以下のようなプラグインの設定を変更することになります。
まず、「管理」=>「プラグイン」=> Default queries per project の「設定」とたどりプラグインの設定画面にいきます。

  • Project with default queries
  • Custom field to define type
  • Default user global query name
  • Default user query name
  • Default query name
  • Default user home query name

という設定項目があります。
上記で説明した「Default」「MyDefault」はこの5番目と4番目の項目にデフォルトで設定されている名前なのでこれを変更することで望みの名前にすることができます。(日本語でも大丈夫)
大体この2つで用は足りると思いますが他の項目についても触れておきましょう。
3番目の「Default user global query name」は全プロジェクトチケット一覧デフォルト設定のために使う、全プロジェクト向け公開でないカスタムクエリ名(デフォルトでは「MyGlobal」)です。
6番目の「Default user home query name」は redmine_homepageプラグインと組み合わせて使うときのためのものです。redmine_homepageプラグインは使ったことがないので説明をとばします。
1番目と2番目はプロジェクトごとに設定カスタムクエリの名前を変えたいという人のためのものです。この設定はかなり複雑なので説明しません。メンテしづらくなると思うので1番目と2番目を使うのは私はおすすめしません。

プラグイン紹介 redmine draft

使っているプラグインの紹介。今回は redmine draft プラグインです。

redmine draft プラグインは書きかけのチケットの内容を自動で一定時間おきに保存してくれます。チケットを書きかけて保存する前に別の画面に移動してしまったときや急にブラウザが落ちてしまったときに後から復旧できるので助かります。
r-labs での redmine draft の紹介では図も付いて紹介されているのでご覧下さい。
保存対象はチケットだけで Wiki やドキュメントなどには対応していません。
以前の版では15秒おきの保存だったのですが最近は1分おきになったようなので15秒おきに変更して使っています。以下が redmine_drafts-0.2.0 に対するそのパッチです。

--- app/views/drafts/_issue_form.html.erb.org
+++ app/views/drafts/_issue_form.html.erb
@@ -9,5 +9,5 @@
   $("#draft-status").appendTo($("#draft-status").closest("fieldset"))
   //observe changed on the form
-  $("#issue-form").observe(60, function() {
+  $("#issue-form").observe(15, function() {
     $.ajax({
       url: "<%= autosave_drafts_path(:issue_id => @issue.id) %>",

Redmine の数値カスタムフィールドを3桁区切りで表示する

Redmine のカスタムフィールドには整数型と小数型がありますがどちらも(3桁区切りなどの)区切り表示するオプションはありません。
以下がチケット表示、チケット一覧表示画面で整数型と小数型のカスタムフィールド値を3桁区切りで表示するパッチです。チケット作成/更新の入力画面には対応していません。
チケット番号や進捗%のような標準フィールドは変わらず区切りなしで表示されます。
redmine-1.3 で動きを確認していますがコードを見る限り redmine-2系でも大丈夫だと思います。

--- lib/redmine/custom_field_format.rb.org
+++ lib/redmine/custom_field_format.rb
@@ -19,4 +19,5 @@
  class CustomFieldFormat
    include Redmine::I18n
+    include ActionView::Helpers::NumberHelper

    cattr_accessor :available
@@ -45,5 +46,13 @@
    end

-    ['string','text','int','float','list'].each do |name|
+    def format_as_int(value)
+      number_with_delimiter(value)
+    end
+
+    def format_as_float(value)
+      number_with_delimiter(value)
+    end
+
+    ['string','text','list'].each do |name|
      define_method("format_as_#{name}") {|value|
        return value
--- app/helpers/queries_helper.rb.org
+++ app/helpers/queries_helper.rb
@@ -47,4 +47,6 @@
      if column.name == :done_ratio
        progress_bar(value, :width => '80px')
+      elsif column.class == QueryCustomFieldColumn && %w(int float).include?(column.custom_field.field_format)
+        h(number_with_delimiter(value))
      else
        h(value.to_s)