QA #1192
openRedmineの活動画面に、チケットの変更を全て表示する。
0%
Description
Redmineの活動画面に、チケットの変更(CF含)を全て表示する改造を行いました。
必要な人のお役に立てれば幸いです。
本記事は、Redmineアドベントカレンダー2020の13日目です。
https://adventar.org/calendars/5392
概要¶
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
副作用(表示速度面)¶
カスタムフィールドを多用している場合、本修正により活動履歴の表示数が大幅に増加する。(数倍以上)
活動画面表示までの所要時間が大幅に延びるので、状況に応じ活動画面のページ毎表示日数を調整すること。(管理/設定/プロジェクトの活動ページに表示する日数)
画面サンプル¶
改造前後の活動画面比較
チケット履歴画面上のカスタムフィールド変更分も表示されている。
変更内容¶
変更するのは下記4ファイルだけです。( users_controller.rb追加 2021/1/3 )
DBの変更、ライブラリの追加変更はありません。
下記ブランチからダウンロードし利用してください。
(2020/12/10時点のtrunkベース,unofficial-redmine版。他環境でもコピペ手動マージで導入可能と思われる)
変更ファイル | 変更概要 | 変更リンク |
---|---|---|
app/models/journal.rb | 活動画面の表示条件変更 | 変更リンク |
app/views/activities/_activities.html.erb Redmine3.4ではindex.html.erb |
活動画面の変更表示項目変更(チケットの変更履歴と同じ) | 変更リンク |
app/controllers/activities_controller.rb | 利用ヘルパー追加 (活動画面の項目表示に既存ヘルパー内のメソッドを利用するため) |
変更リンク |
app/controllers/users_controller.rb | 利用ヘルパー追加 (管理/ユーザ/プロファイルの活動内容表示にヘルパー内メソッドを利用) |
変更リンク |
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
作業経緯¶
本変更のために実行したことのメモ。
活動画面の表示条件はすぐに判った。
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-変更部分
<% 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 %>
管理/ユーザ/プリファレンスの活動については、下記指摘により把握し、2021/1/3に修正した。
https://github.com/y503unavailable/redmine/issues/39#issuecomment-753550387
マイページ-活動項目の選択時も同じ問題が想定されるが、こちらは従来からissueヘルパーを利用宣言済のため影響しない。
今後の対応(案)¶
- 表示内容の変更可能化
本変更により活動画面の表示内容が大幅に増える。
運用状況によっては見にくくなるかもしれない。
活動画面の表示時に、今回作成したのCF変更付きの拡張表示と、従来の注記分のみ表示を、選択できると良さそう。
- 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
補足¶
カスタムフィールドは、チケットの内容を構造化して管理するために追加されたと機能と捉えています。
その変更内容を活動タブに表示しない理由が判りません。。
どなたか理由判れば教えてください。。
Files
Updated by 奈良 裕記 almost 3 years ago
- File issue-history.png issue-history.png added
- File activity-compare.png activity-compare.png added
Updated by 奈良 裕記 almost 3 years ago
- Description updated (diff)
Redmine3.4では、 _activities.html.erb ではなく、index.html.erb の修正が必要だった。
同一コピペで通った。
Updated by 奈良 裕記 almost 3 years ago
- Related to QA #1138: Redmineでチケットのカスタムフィールドだけを変更した場合、「活動」一覧画面に表示されない。 added