チケット画面のレイアウト

3,675 views
Skip to first unread message

こーん

unread,
Jun 24, 2008, 3:43:03 AM6/24/08
to Redmine Users (japanese)
 チケット画面のレイアウトについて質問があります。

 Redmine 0.7.1 (MySQL) を使用しています。

 チケットにカスタムフィールドを追加し運用しています。
 「管理」「/カスタムフィールド」の「ソート」でチケット画面の表示順序を設定しているつもりですが、チケット画面は、カスタムフィールドの作成順の
ままになっています。
 「ソート」は、画面の表示順序ではないのでしょうか?それとも、他にチケットの画面レイアウトをカスタマイズする方法はあるのでしょうか?

 何かヒントでもいただけますか?

fmkt

unread,
Jun 24, 2008, 4:11:42 AM6/24/08
to Redmine Users (japanese)
こんにちは。

この現象はおそらく全てのプロジェクトに適用のカスタムフィールドに限ると思います。

Project#all_custom_fields でチケットのカスタムフィールドを
呼び出してるわけですが、この IssueCustomField#for_all は
CustomField#for_all を呼び出していて結局のところ以下のメソッドになります。

def self.for_all
find(:all, :conditions => ["is_for_all=?", true])
end

find で、order を指定していないから並び替え出来ていないのでしょうね。
>  「ソート」は、画面の表示順序ではないのでしょうか?それとも、他にチケットの画面レイアウトをカスタマイズする方法はあるのでしょうか?
つまりコレはあくまでも管理画面上でのソートということでしょう。

これをチケットに反映させようと思うなら以下の方法で。

CustomField#for_all を改変すると他にも影響が出るので、
(というか並び替えを適用したいならここを変えるべき?)
ここだけに適用されるようなパッチにしました。

Index: app/models/project.rb
===================================================================
--- app/models/project.rb (リビジョン 1576)
+++ app/models/project.rb (作業コピー)
@@ -200,7 +200,7 @@
end

def all_custom_fields
- @all_custom_fields ||= (IssueCustomField.for_all +
custom_fields).uniq
+ @all_custom_fields ||= (IssueCustomField.find(:all, :conditions
=> ["is_for_all=?", true], :order => "position") + custom_fields).uniq
end

適当な試験しかしていないので何かしらバグがあるかもしれませんが
問題あればまた連絡してください。

ちなみに、プロジェクトで設定したカスタムフィールドに関しては

has_and_belongs_to_many :custom_fields,
:class_name => 'IssueCustomField',
:order =>
"#{CustomField.table_name}.position",

という感じで、order が入ってるので並び替えられてるのではないでしょうか?

では。

こーん

unread,
Jun 24, 2008, 4:51:34 AM6/24/08
to Redmine Users (japanese)
返信ありがとうございます。

> この現象はおそらく全てのプロジェクトに適用のカスタムフィールドに限ると思います。

 ご指摘の通り、「全てのプロジェクトに適用」で設定していました。
 今運用している redmine 上のプロジェクトは、すべて同じカスタマイズで良いので、この様な設定を行っています。

> つまりコレはあくまでも管理画面上でのソートということでしょう。

 やっぱりそうですか。
 チケット画面のレイアウトは、色々こだわりがあったりしますので、別の機能でレイアウトをカスタマイズ出来るとうれしいです。

# オープンソースを使うばかりで申し訳ありません ...

> これをチケットに反映させようと思うなら以下の方法で。
> CustomField#for_all を改変すると他にも影響が出るので、
> (というか並び替えを適用したいならここを変えるべき?)
> ここだけに適用されるようなパッチにしました。

 パッチ適用し、チケットの表示順がソート順になりました。

ありがとうございました。
Reply all
Reply to author
Forward
0 new messages