チケット一覧の表示項目に正しく改行を出力したい

2,687 views
Skip to first unread message

junki

unread,
Apr 3, 2012, 1:52:41 AM4/3/12
to Redmine Users (japanese)
RedMineで課題管理を実施する予定です。

「進捗状況」という項目をカスタムフィールドで書式:長いテキストで作成して、
チケット一覧(/issues)で表示させています。

csvやpdf、個々のチケット(issues/*)では、改行がきちんと出力されているのですが、
チケット一覧では、改行が正しく表示されません。

改修を入れたいと思っているのですが、どのコードを操作すればよいか特定できておりません。

おわかりになる方がいれば、チケット一覧に出力しているコードを教えていただけないでしょうか。
よろしくお願いします。

yonagen xilocom

unread,
Apr 3, 2012, 9:14:48 AM4/3/12
to redmine-...@googlegroups.com


2012年4月3日火曜日14時52分41秒 UTC+9 junki:
RedMineで課題管理を実施する予定です。

改修を入れたいと思っているのですが、どのコードを操作すればよいか特定できておりません。

リストを作ってっているのは
/app/views/issues/_list.html.erb だと思います
/app/views/issues/index.html.erbから呼ばれています

実際の出力は_list.html.erb から
/app/helpers/queries_helper.rb
内のメソッドを呼んでいると思います。

pluginの
http://www.redmine.org/projects/redmine/wiki/PluginShowIssueDescriptions
とかを参考にされると良いのではないでしょうか?







junki

unread,
Apr 3, 2012, 10:16:18 PM4/3/12
to Redmine Users (japanese)
すばやい返答ありがとうございます!
そして、バージョンなど書くのを忘れていたのに、適切なアドバイスありがとうございます。
バージョンは1.3.2です。

アドバイスのおかげで当該箇所が
/issues/index.html.erb
L32の<%= content_tag 'td', column_content(column, issue), :class =>
column.css_classes %>
であることがわかりました。

そこから、queries_helperのL32 column_content(column, issue)が呼ばれていることもわかりました。

ですが、L65で呼ばれているh(value)が何を呼んでいるのか、
columnの構造がどうなっているかもわかりません。
# 不勉強というか、未熟者ですみません。。

できるだけ早く対応したいのですが、勉強している余裕がありません。。

もう少し詳しくわかれば教えていただきたいです。

yonagen xilocom

unread,
Apr 4, 2012, 9:34:24 AM4/4/12
to redmine-...@googlegroups.com
h は railsのメソッドで ただ、htmlエスケープして表示します。
したがって、column_content は 列の値のclass(StringとかTimeとか)にあわせて、いい感じに表示しているんだと思います。


queryの構造については、大元のqueries_controller を読むのが正道と思いますが、時間がなければ
viewの中で <% p query %> とかして、検討をつけるのはいかがですか?

実のところ私もcontrollerをまじめに読んだことはないです。


2012年4月4日水曜日11時16分18秒 UTC+9 junki:

nobu_toyofuku

unread,
Apr 4, 2012, 11:48:57 AM4/4/12
to redmine-...@googlegroups.com
豊福です。

取り敢えず

--- app/helpers/queries_helper.rb.org
+++ app/helpers/queries_helper.rb
@@ -38,5 +38,9 @@
link_to(h(value), :controller => 'issues', :action => 'show',
:id => issue)
else
- h(value)
+ if column.name.to_s == '進捗状況'
+ value.split(/\n/).map do |line| h(line) end.join("<br/>")
+ else
+ h(value)
+ end
end

でどうでしょう。

長いテキストはチケット一覧ではセンタリングされて表示されるので
左詰めにしたいときは

public/styleseets/application.css に

tr.issue td.cf_XXX { text-align: left; }

のような行を追加してください。
ここの cf_ の後の XXX の部分はカスタムフィールド「進捗状況」の
id番号に変えてください。
カスタムフィールド「進捗状況」のid番号は「進捗状況」の設定画面の URL
http://..../custom_fields/edit/XXX
を見てXXXの部分でわかります。
---

nobu_toyofuku

unread,
Apr 4, 2012, 4:00:24 PM4/4/12
to redmine-...@googlegroups.com
豊福です。

すみません。前のメールのパッチいろいろと間違っていました。訂正です。

--- app/helpers/queries_helper.rb.org
+++ app/helpers/queries_helper.rb
@@ -38,5 +38,10 @@


link_to(h(value), :controller => 'issues', :action => 'show',
:id => issue)
else
- h(value)

+ if column.is_a?(QueryCustomFieldColumn) &&
column.custom_field.name == '進捗状況'
+ # if column.name == :cf_XXX
+ simple_format_without_paragraph(h(value))


+ else
+ h(value)
+ end
end

when 'Time'

もし前のメールに書いた「進捗状況」カスタムフィールドのid番号がわかってそれを
使ってもよいのでしたら上記の if column.name == :cf_XXX の XXX をid番号に
変えた if文の方が簡単なことは簡単です。
---

junki

unread,
Apr 10, 2012, 11:17:19 PM4/10/12
to redmine-...@googlegroups.com
yonagen xilocomさん、豊福さん

返信ありがとうございます!また、御礼が遅くなりまして申し訳ありません。
豊福さんのパッチで対応をすることができました。
また、RedMineの構造も少しずつわかってきたので、
yonagen xilocomさんのアドバイスを受けて
<% p query %> 
などで、色々出力をみて自分でカスタマイズをしているところです。

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

2012年4月5日木曜日 5時00分24秒 UTC+9 nobu_toyofuku:
Reply all
Reply to author
Forward
0 new messages