FC2ブログ

徒然さめざめ

思ったことを思ったときに思ったように

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

表示できないなら表示して見せよう

Redmine の修正

カレンダーにチケットのカスタムフィールドが表示されないとかなんとか。

それならばいっそ表示できるようにと修正してみた。
簡単なチェックしかしてないのでサブプロジェクトとか閉じたチケットとかはまったく考慮せずなパッチ。

day.strftime("%Y-%m-%d") にご注意?


Index: lib/redmine/helpers/calendar.rb
===================================================================
--- lib/redmine/helpers/calendar.rb (リビジョン 2835)
+++ lib/redmine/helpers/calendar.rb (作業コピー)
@@ -49,12 +49,13 @@
def events=(events)
@events = events
@ending_events_by_days = @events.group_by {|event| event.due_date}
+ @continuing_events_by_days = @events.group_by {|event| event.custom_values.map(&:value)}
@starting_events_by_days = @events.group_by {|event| event.start_date}
end

# Returns events for the given day
def events_on(day)
- ((@ending_events_by_days[day] || []) + (@starting_events_by_days[day] || [])).uniq
+ ((@ending_events_by_days[day] || []) + (@starting_events_by_days[day] || []) + (@continuing_events_by_days[[day.strftime("%Y-%m-%d")]] || [])).uniq
end

# Calendar current month
Index: app/views/common/_calendar.rhtml
===================================================================
--- app/views/common/_calendar.rhtml (リビジョン 2835)
+++ app/views/common/_calendar.rhtml (作業コピー)
@@ -17,7 +17,9 @@
elsif day == i.start_date
image_tag('arrow_from.png')
elsif day == i.due_date
- image_tag('arrow_to.png')
+ image_tag('arrow_to.png')
+ elsif i.custom_values.map(&:value).include?(day.strftime(Setting::DATE_FORMATS.first))
+ image_tag('arrow_bw.png')
end %>
<%= h("#{i.project} -") unless @project && @project == i.project %>
<%= link_to_issue i %>: <%= h(truncate(i.subject, :length => 30)) %>
Index: app/controllers/issues_controller.rb
===================================================================
--- app/controllers/issues_controller.rb (リビジョン 2835)
+++ app/controllers/issues_controller.rb (作業コピー)
@@ -387,7 +392,12 @@
)
events += Version.find(:all, :include => :project,
:conditions => ["(#{@query.project_statement}) AND effective_date BETWEEN ? AND ?", @calendar.startdt, @calendar.enddt])
-
+ custom_ids = CustomField.find_all_by_field_format("date", :select => "id").map(&:id)
+ events += Issue.find(:all,
+ :include => [:custom_values, :project, :tracker, :status, :assigned_to, :priority],
+ :conditions => ["project_id = ? AND custom_values.custom_field_id IN (?) AND ((start_date BETWEEN ? AND ?) OR (due_date BETWEEN ? AND ?)) ",
+ Project.find(params[:project_id]), custom_ids, @calendar.startdt, @calendar.enddt, @calendar.startdt, @calendar.enddt]
+ )
@calendar.events = events
end
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://fmkt.blog65.fc2.com/tb.php/111-5fbec0bc
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。