Redmine: 終了した Target Version を表示しないパッチ (不完全)

Redmine のロードマップ機能は便利ですが、週に数回という頻繁なリリースを行っていると Target Version が多くなりすぎてチケットの操作に不都合が生じてきます。以下のパッチは、チケットの編集時に完了したバージョンを表示しないように変更します。変更内容は非常に単純で、 Target Version 欄に完了したバージョンを表示しないようにしているだけです。

Index: app/views/issues/context_menu.rhtml
===================================================================
--- app/views/issues/context_menu.rhtml	(リビジョン 1782)
+++ app/views/issues/context_menu.rhtml	(作業コピー)
@@ -29,7 +29,7 @@
 	<li class="folder">			
 		<a href="#" class="submenu"><%= l(:field_fixed_version) %></a>
 		<ul>
-		<% @project.versions.sort.each do |v| -%>
+		<% @project.versions.reject{|v| v.completed?}.sort.each do |v| -%>
 		    <li><%= context_menu_link v.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'fixed_version_id' => v, :back_to => @back}, :method => :post,
 		                              :selected => (@issue && v == @issue.fixed_version), :disabled => !@can[:update] %></li>
 		<% end -%>

Index: app/views/issues/_form.rhtml
===================================================================
--- app/views/issues/_form.rhtml	(リビジョン 1782)
+++ app/views/issues/_form.rhtml	(作業コピー)
@@ -30,7 +30,7 @@
                      {:controller => 'projects', :action => 'add_issue_category', :id => @project},
                      :class => 'small', :tabindex => 199) if authorize_for('projects', 'add_issue_category') %></p>
 <%= content_tag('p', f.select(:fixed_version_id, 
-                              (@project.versions.sort.collect {|v| [v.name, v.id]}),
+                              (@project.versions.reject{|v| v.completed?}.sort.collect {|v| [v.name, v.id]}),
                               { :include_blank => true })) unless @project.versions.empty? %>
 </div>

これで、マイルストーンが頻繁 (というのもおかしい気がしますが ^^;) でも大丈夫ですね。なお、上記パッチには少し不具合があり、終了したチケットを再編集するときに Target Version 欄が空白になるという問題があります。気になる場合は修正して使ってください。