Vote #72576
未完了Allow done ratios to be affected by status AND field
50%
説明
Consider a situation where a defect can be re-opened, or a defect can be moved to the 'resolved'/'released' state, but requires verification before it can be closed. It'd be nice to have the 'resolved'/'released' status the done ratio to 100%, but, if you do that, then you lose the capability to track progress during the 'in progress' state.
Here's a fix that allows for both (version 2.1.0):
diff -rupN redmine-2.1.0/app/models/issue.rb redmine-2.1.0-modified/app/models/issue.rb --- redmine-2.1.0/app/models/issue.rb 2012-09-16 06:54:11.000000000 -0600 +++ redmine-2.1.0-modified/app/models/issue.rb 2012-09-28 11:16:32.479809960 -0600 @@ -49,7 +49,7 @@ class Issue < ActiveRecord::Base acts_as_activity_provider :find_options => {:include => [:project, :author, :tracker]}, :author_key => :author_id - DONE_RATIO_OPTIONS = %w(issue_field issue_status) + DONE_RATIO_OPTIONS = %w(issue_field issue_status issue_field_and_status) attr_reader :current_journal @@ -494,6 +496,10 @@ class Issue < ActiveRecord::Base def self.use_field_for_done_ratio? Setting.issue_done_ratio == 'issue_field' end + + def use_field_for_done_ratio? + Setting.issue_done_ratio == 'issue_field' || (Setting.issue_done_ratio == 'issue_field_or_status' && status && status.default_done_ratio.nil?) + end def validate_issue if self.due_date.nil? && @attributes['due_date'] && !@attributes['due_date'].empty? diff -rupN redmine-2.1.0/app/views/context_menus/issues.html.erb redmine-2.1.0-modified/app/views/context_menus/issues.html.erb --- redmine-2.1.0/app/views/context_menus/issues.html.erb 2012-09-16 06:54:12.000000000 -0600 +++ redmine-2.1.0-modified/app/views/context_menus/issues.html.erb 2012-09-28 11:11:07.979813055 -0600 @@ -91,7 +91,7 @@ <% end -%> - <% if @safe_attributes.include?('done_ratio') && Issue.use_field_for_done_ratio? %> + <% if @safe_attributes.include?('done_ratio') && @issue.use_field_for_done_ratio %>
-
diff -rupN redmine-2.1.0/app/views/issues/_attributes.html.erb redmine-2.1.0-modified/app/views/issues/_attributes.html.erb
--- redmine-2.1.0/app/views/issues/_attributes.html.erb 2012-09-16 06:54:13.000000000 -0600
+++ redmine-2.1.0-modified/app/views/issues/_attributes.html.erb 2012-09-28 11:10:31.103813406 -0600
@@ -58,7 +58,7 @@
<%= f.text_field :estimated_hours, :size => 3, :disabled => !@issue.leaf?, :required => @issue.required_attribute?('estimated_hours') %> <%= l(:field_hours) %>
<% end %> -<% if @issue.safe_attribute?('done_ratio') && @issue.leaf? && Issue.use_field_for_done_ratio? %> +<% if @issue.safe_attribute?('done_ratio') && @issue.leaf? && @issue.use_field_for_done_ratio? %><%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }), :required => @issue.required_attribute?('done_ratio') %>
<% end %><%= f.text_field :name, :required => true %>
-<% if Issue.use_status_for_done_ratio? %> +<% if not Issue.use_field_for_done_ratio? %><%= f.select :default_done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }), :include_blank => true, :label => :field_done_ratio %>
<% end %><%= f.check_box :is_closed %>
diff -rupN redmine-2.1.0/app/views/issue_statuses/index.html.erb redmine-2.1.0-modified/app/views/issue_statuses/index.html.erb --- redmine-2.1.0/app/views/issue_statuses/index.html.erb 2012-09-16 06:54:12.000000000 -0600 +++ redmine-2.1.0-modified/app/views/issue_statuses/index.html.erb 2012-09-28 11:19:39.799808172 -0600 @@ -1,6 +1,6 @@<%=l(:label_issue_status_plural)%>¶
@@ -8,7 +8,7 @@<%=l(:field_status)%> | - <% if Issue.use_status_for_done_ratio? %> + <% if not Issue.use_field_for_done_ratio? %><%=l(:field_done_ratio)%> | <% end %><%=l(:field_is_default)%> | @@ -20,7 +20,7 @@ <% for status in @issue_statuses %>
---|---|---|
<%= link_to h(status.name), edit_issue_status_path(status) %> | - <% if Issue.use_status_for_done_ratio? %> + <% if not Issue.use_field_for_done_ratio? %><%= h status.default_done_ratio %> | <% end %><%= checked_image status.is_default? %> | diff -rupN redmine-2.1.0/config/locales/en.yml redmine-2.1.0-modified/config/locales/en.yml --- redmine-2.1.0/config/locales/en.yml 2012-09-16 06:54:19.000000000 -0600 +++ redmine-2.1.0-modified/config/locales/en.yml 2012-09-28 11:13:35.371811650 -0600 @@ -382,6 +382,7 @@ en: setting_issue_done_ratio: Calculate the issue done ratio with setting_issue_done_ratio_issue_field: Use the issue field setting_issue_done_ratio_issue_status: Use the issue status + setting_issue_done_ratio_issue_field_and_status: Use the issue field and status