プロジェクト

全般

プロフィール

QA #1192

未完了

Redmineの活動画面に、チケットの変更を全て表示する。

奈良 裕記 さんが3年以上前に追加. ほぼ3年前に更新.

ステータス:
回答済
優先度:
通常
担当者:
カテゴリ:
-
対象バージョン:
-
開始日:
2020/12/12
期日:
2020/12/12 (3年以上 遅れ)
進捗率:

0%

予定工数:

説明

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

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

作業経緯

本変更のために実行したことのメモ。
活動画面の表示条件はすぐに判った。
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メインに取り込む。(本家に取り込まれれば最善ですが)

補足

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


ファイル

issue-history.png (139 KB) issue-history.png 奈良 裕記, 2020/12/12 18:43
activity-compare.png (229 KB) activity-compare.png 奈良 裕記, 2020/12/12 18:43

関連するチケット 1 (0件未完了1件完了)

関連している Unofficial Redmine Cooking - QA #1138: Redmineでチケットのカスタムフィールドだけを変更した場合、「活動」一覧画面に表示されない。終了2020/05/30

操作

他の形式にエクスポート: Atom PDF