Project

General

Profile

QA #1192

Updated by 奈良 裕記 9 months ago

Redmineの活動画面に、チケットの変更(CF含)を全て表示する改造を行いました。 
 必要な人のお役に立てれば幸いです。 

 本記事は、Redmineアドベントカレンダー2020の13日目です。 
 https://adventar.org/calendars/5392 

 h1. 概要 

 Redmineの活動画面はプロジェクト活動状況の把握に有用だが、ステータス及び注記欄に記入のあった変更しか表示されない。 
 カスタムフィールドの内容を変更しても活動画面に表示されないため、 

 *重要な管理項目の管理にカスタムフィールドを利用している場合、活動画面からその事を把握できない。* 

 本改造により、 *Redmineの活動画面に、カスタムフィールドを含むチケットの変更を全て表示できる。* (チケットの変更履歴画面と同様の表示) 

 ↓活動タブの活用事例 これであなたもRedmine活動家 
 https://www.slideshare.net/HirofumiKadoya/redmine-234489253 

 Redmine本家既存チケット 
 How to display customize field in Activity page 
 https://www.redmine.org/issues/16288 

 Activity section doesn't show entries for some Issue changes 
 https://www.redmine.org/issues/20967 

 h1. 副作用(表示速度面) 

 カスタムフィールドを多用している場合、本修正により活動履歴の表示数が大幅に増加する。(数倍以上) 
 活動画面表示までの所要時間が大幅に延びるので、状況に応じ活動画面のページ毎表示日数を調整すること。(管理/設定/プロジェクトの活動ページに表示する日数) 

 



 h2. 画面サンプル 

 改造前後の活動画面比較 
 !{width: 80%}activity-compare.png! 

 チケット履歴画面上のカスタムフィールド変更分も表示されている。 
 !{width: 40%}issue-history.png! 

 h1. 変更内容 

 変更するのは下記4ファイルだけです。( users_controller.rb追加 2021/1/3 ) 変更するのは下記4ファイルだけです。(2021/1/3 activities_controller.rb追加) 
 DBの変更、ライブラリの追加変更はありません。 
 下記ブランチからダウンロードし利用してください。 
 (2020/12/10時点のtrunkベース,unofficial-redmine版。他環境でもコピペ手動マージで導入可能と思われる) 

 |_^. 変更ファイル|_^. 変更概要|_^. 変更リンク| 
 |^. app/models/journal.rb|^. 活動画面の表示条件変更|"変更リンク":https://github.com/y503unavailable/redmine/commit/980dd2ffe85fb85ba772117c774cc3a40a97c586| 
 |^. app/views/activities/_activities.html.erb 
 Redmine3.4ではindex.html.erb|^. 活動画面の変更表示項目変更(チケットの変更履歴と同じ)|"変更リンク":https://github.com/y503unavailable/redmine/commit/196d5ba64c57069168a99f658c940f408a07f09f| 
 |^. app/controllers/activities_controller.rb|^. 利用ヘルパー追加 
 (活動画面の項目表示に既存ヘルパー内のメソッドを利用するため)|"変更リンク":https://github.com/y503unavailable/redmine/commit/7d9a7c98c5407862fc1d421f434c30f327e86e57| 
 |^. app/controllers/users_controller.rb|^. 利用ヘルパー追加 
 (管理/ユーザ/プロファイルの活動内容表示にヘルパー内メソッドを利用)|"変更リンク":https://github.com/y503unavailable/redmine/commit/713d92beb668213768fe9cb0ba6d9404fe4d23e9| 

 Display changes to custom fields only on the activity screen 
 https://github.com/y503unavailable/redmine/issues/39 

 ブランチ 
 https://github.com/y503unavailable/redmine/tree/feature-39-activitylist 

 変更差分 
 https://github.com/redmine/redmine/compare/2f0f66bb29fb554f8e83019bcce7734265e6725c...713d92beb668213768fe9cb0ba6d9404fe4d23e9 https://github.com/redmine/redmine/compare/2f0f66bb29fb554f8e83019bcce7734265e6725c...196d5ba64c57069168a99f658c940f408a07f09f 

 h1. 作業経緯 

 本変更のために実行したことのメモ。 
 活動画面の表示条件はすぐに判った。 
 models/journal.rb acts_as_activity_providerの中で、journalの検出対象を変更している。 

 (ここまでは、 #1138 にて、以前より調査していた。) 

 活動画面の表示内容はeventとして取得しているようだが、この部分のコードから見つからない。 
 変数のinspectデバッグで確認し、eventのIDがjournalidであることを確認して進めたが、 
 models/journal.rb のacts_as_event経由なことに後から気付いた。 

 チケットの変更履歴は、 journals journal_detailsにあることは知っていたので、 
 この辺の関係が掴めてからは、erb中でrubyの処理を入れるだけで進められた。 

 この辺のDB依存関係は、 https://www.slideshare.net/y503unavailable/redmine-42182169  
  P67-76参照 

 viewの_activities-変更部分 
 <pre> 
   <% if e.event_type.eql?('issue-note') %>  限定しないと、チケット番号が渡されて途中でエラー発生する場合あり(journal無) 
     <% @journal=Journal.find(e.id) %> 
       <% if @journal.details.any? %>     ここからはチケットの履歴表示をコピペ利用。helperを参照するだけで動いた。 
         <ul class="details"> 
         <% details_to_strings(@journal.visible_details).each do |string| %> 中でCFの種別対応なども実施している。 
          <li><%= string %></li> 
       <% end %> 
       </ul> 
     <% end %> 
   <% end %> 
 </pre> 

 管理/ユーザ/プリファレンスの活動については、下記指摘により把握し、2021/1/3に修正した。 
 https://github.com/y503unavailable/redmine/issues/39#issuecomment-753550387 

 マイページ-活動項目の選択時も同じ問題が想定されるが、こちらは従来からissueヘルパーを利用宣言済のため影響しない。 マイページ-活動項目の選択時も、同じ問題が発生するが、既にissueヘルパーを利用宣言済のため影響しない。 

 h1. 今後の対応(案) 

 * 表示内容の変更可能化 
 本変更により活動画面の表示内容が大幅に増える。 
 運用状況によっては見にくくなるかもしれない。 
 活動画面の表示時に、今回作成したのCF変更付きの拡張表示と、従来の注記分のみ表示を、選択できると良さそう。 

 * unofficialメインへの取込 
 今回は専用ブランチで作成したが、評判良さそうなら、unofficialメインに取り込む。(本家に取り込まれれば最善ですが) 今回は専用ブランチで作成したが、評判良さそうなら、unofficialメインに取り込む。 

 * 本家チケットにコメント(12/13済) 
 How to display customize field in Activity page 
 https://www.redmine.org/issues/16288 
 Activity section doesn't show entries for some Issue changes 
 https://www.redmine.org/issues/20967 

 h1. 補足 

 カスタムフィールドは、チケットの内容を構造化して管理するために追加されたと機能と捉えています。 
 その変更内容を活動タブに表示しない理由が判りません。。 
 どなたか理由判れば教えてください。。 

 !https://unofficial-redmine.org/matomo/matomo.php?idsite=1&rec=1192! 

Back