チケット一覧の関連するチケット表示を変更したいのですが、、、

654 views
Skip to first unread message

ひげぺんぎん

unread,
Jun 14, 2014, 5:09:53 AM6/14/14
to redmine-...@googlegroups.com
はじめて投稿します。(画像がうまく貼り付けることができないので、わかりにくい説明ですいません)

Redmine 2.x.x では、「チケットを表示したときの関連するチケット」は、
 関連しているチケット (末端の)プロジェクト名 - トラッカー名 #チケット番号: 題名
が表示されます。
「チケット一覧のカスタムクエリで関連するチケット表示」すると、
 関連している #チケット番号
が表示されます。

そこで、「チケット一覧のカスタムクエリで関連するチケット表示」を、
「チケットを表示したときの関連するチケット」と同じように表示させるには、
どのソースをどのように変更すればよいのでしょうか。

nobu_toyofuku

unread,
Jun 16, 2014, 11:29:03 PM6/16/14
to redmine-...@googlegroups.com

2014年6月14日土曜日 18時09分53秒 UTC+9 ひげぺんぎん:
そこで、「チケット一覧のカスタムクエリで関連するチケット表示」を、
「チケットを表示したときの関連するチケット」と同じように表示させるには、
どのソースをどのように変更すればよいのでしょうか。

チケットを表示のときの関連するチケットへのリンクは
app/views/issues/show.html.rb: <%= render :partial => 'relations' %>
app/views/issues/_relation.html.rb: <%= link_to_issue(other_issue, :truncate => 60) %>
という順に呼ばれて link_to_issue(other_issue, :truncate => 60) でリンクが作られています。

一方、チケット一覧のときの関連するチケットへのリンクは
app/views/issues/index.html.rb: <%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query} %>
app/views/issues/_list.html.rb: <%= raw query.inline_columns.map {|column| "<td class=\"#{column.css_classes}\">#{column_content(column, issue)}</td>"}.join %>
app/helpers/: def column_content(column, issue) の中の
  column_value(column, issue, value)
app/helpers/: def column_value(column, issue, value) の中の when :relations のところの
  content_tag('span',
    (l(value.label_for(issue)) + " " + link_to_issue(other, :subject => false, :tracker => false)).html_safe,
    :class => value.css_classes_for(issue))
という順に呼ばれて link_to_issue(other, :subject => false, :tracker => false)).html_safe でリンクが作られています。

ということでこの
  link_to_issue(other, :subject => false, :tracker => false)).html_safe
の部分を
  link_to_issue(other, :truncate => 60)).html_safe
に変更すればよいのではないかと思います。
---
 

ひげぺんぎん

unread,
Jun 17, 2014, 10:28:17 AM6/17/14
to redmine-...@googlegroups.com
nobu_toyofukuさま

詳細な説明、ありがとうございました。
無事できました。
このソースを変更しました。
apps\redmine\htdocs\app\helpersqueries_helper.rb

ただ、
  link_to_issue(other, :truncate => 60)).html_safe
これだと、
 関連している「トラッカー」+「チケット番号」+「チケットの題名」
が表示されましたので、
link_to_issue(other, :project => true, :tracker => false)).html_safe
とし、
関連している「プロジェクト名」+「チケット番号」+「チケットの題名」
を表示させるようにしてみました。

ついでで申し訳ないのですが、
PDFも同様なフォーマットで出力したいです。
どのあたりを修正すればよろしいのでしょうか。

よろしくお願いします。

nobu_toyofuku

unread,
Jun 19, 2014, 12:03:59 AM6/19/14
to redmine-...@googlegroups.com

2014年6月17日火曜日 23時28分17秒 UTC+9 ひげぺんぎん:
PDFも同様なフォーマットで出力したいです。
どのあたりを修正すればよろしいのでしょうか。

app/conrollers/issues_controller.rb の def index の中の
  format.pdf  { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'issues.pdf') }
lib/redmine/export/pdf.rb の
def issues_to_pdf(issues, project, query) の中の
  values = fetch_row_values(issue, query, level)
def fetch_row_values(issue, query, level) の中の
  value = issue.send(column.name)
  s.to_s
(で issue.relations.to_s が呼ばれることになって)
app/models/issue.rb の def relations の中の
  @relations ||= IssueRelation::Relations.new(self, (relations_from + relations_to).sort)
で issue.relations が取れて
app/models/issue_relation.rb の def to_s(*args) の中の
  map {|relation| "#{l(relation.label_for(@issue))} ##{relation.other_issue(@issue).id}"}.join(', ')
という順に呼ばれます。
ですので "#{l(relation.label_for(@issue))} ##{relation.other_issue(@issue).id}" を変更すればよいと思います。

ただし IssueRelation#to_s が別の場所からも呼ばれているとそこでの値も変わってしまうので注意してください。
もしそれを避けたければ fetch_row_values の中で :relations は別処理にすることになると思います。
---

ひげぺんぎん

unread,
Jun 19, 2014, 10:01:28 AM6/19/14
to redmine-...@googlegroups.com
nobu_toyofuku さん

す、す、すごくわかりやすい、ありがたやありがたや。
でも最後の

ですので "#{l(relation.label_for(@issue))} ##{relation.other_issue(@issue).id}" を変更すればよいと思います。
が、なにやっているのかRubyの「R]の字も知らない私には、ちんぷんかんぷんです。
もっと勉強します。
とりあえず、PDF対策は、ちょっこし先延ばしにします。

ありがとうございました。

nobu_toyofuku

unread,
Jun 20, 2014, 7:38:33 AM6/20/14
to redmine-...@googlegroups.com

2014年6月19日木曜日 23時01分28秒 UTC+9 ひげぺんぎん:
ですので "#{l(relation.label_for(@issue))} ##{relation.other_issue(@issue).id}" を変更すればよいと思います。
が、なにやっているのかRubyの「R]の字も知らない私には、ちんぷんかんぷんです。

例えば
   "#{l(relation.label_for(@issue))} ##{relation.other_issue(@issue).id} #{relation.other_issue(@issue).subject}"
にすると関連するチケットの題名が最後に追加されます。
いろいろいじってどう変化するか試してみてください。
---


ひげぺんぎん

unread,
Jun 20, 2014, 8:16:31 AM6/20/14
to redmine-...@googlegroups.com
nobu_toyofukuさん

できました。
こんなかんじで。
map {|relation| "#{l(relation.label_for(@issue))} #{relation.other_issue(@issue).project} ##{relation.other_issue(@issue).id} #{relation.other_issue(@issue).subject}"}.join("\n")

ありがとうございました。

Reply all
Reply to author
Forward
0 new messages