2014年3月2日日曜日

redmineのチケット一覧に注釈を出す方法

Redmine利用してみているのだが、チケットに対しての進捗は、IF的には、注記を付け加えて行くのが運用的に便利かなと感じている。

しかし、チケット一覧の画面では、そのチケットの状況が判らず、フィールドを追加した方が良いのかな?とか考えたりもした。
ただ、カスタムフィールドは、入力欄が狭く、注記のような使い勝手での記述が難しい。

そこで、チケット一覧の画面に、注記も出せる様な対応をしてやろうということで、実践してみました。


参考:
Redmine Users (japanese) › チケット一覧に「注記」を表示したい。
https://groups.google.com/forum/#!topic/redmine-users-ja/IrEWmTefBKM

こちらのサイトを参考に、もう少し見やすく変更してみました。

私自身で拡張した部分は、
  • 注記の中の改行に対応した
  • 取り消し線に対応した
    (一覧画面でも取り消し線が出て分かり易い)
  • 注記を最新3つにした
    (注記表示個数:issues_helper.rbの変更箇所中のlimit=3で変えられます。書かなければ全て表示されます。
    並べ替え順:現在新しい順ですが、orderの部分のDESCを削除すれば1から順番になります。)

apps/views/issues/_list.html.erb

◎ヘッダ部分に追加
<th class="hide-when-print" width=20%>注釈</th>
◎もう少し下の方に書き部分を追加
  <tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
    <td class="checkbox hide-when-print"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
    <%= raw query.inline_columns.map {|column| "<td class=\"#{column.css_classes}\">#{column_content(column, issue)}</td>"}.join %>
---------- 以下の部分を追加  --------
    <td class='status' >
    <%= issue_notes(issue.id) %>
    </td>
---------- ここまで  --------
</tr>

apps/helpers/issues_helper.rb

---------- 以下の部分を追加  --------
 def issue_notes(id)
    issue_notes = Journal.find(:all, :conditions => ["journalized_id= ?", id], :order => "created_on DESC",:limit => 3).map(&:notes).uniq
    issue_notes.map{|note| %Q!#{note}<BR />!}.join..gsub(/-.*-/,’<del>\&</del>’).gsub(/\r\n|\r|\n/, "<br />").html_safe
  end
---------- ここまで  --------
関数だから何処突っ込んでも動くはずですが、一応
def show_detail(detail…………..
の前に突っ込んどきました。

変更したら、apacheの再起動をやらないと反映してくれない。
sudo service httpd restart (リスタートの仕方は各々の環境次第ですが)

またredmineのキャッシュとかのクリアの方法も、書きにメモっておきます。
設定かえたらコレもやっといたほうがいいらしいです。
cd /var/lib/redmine/   (redmineのディレクトリです)
rake tmp:cache:clear
rake tmp:sessions:clear