0001-Adds-an-option-which-will-automatically-update-an-is.patch

Eric Davis, 2009-11-23 23:43

Download (44 KB)

View differences:

app/controllers/issue_statuses_controller.rb
18 18
class IssueStatusesController < ApplicationController
19 19
  before_filter :require_admin
20 20

  
21
  verify :method => :post, :only => [ :destroy, :create, :update, :move ],
21
  verify :method => :post, :only => [ :destroy, :create, :update, :move, :update_issue_done_ratio ],
22 22
         :redirect_to => { :action => :list }
23 23
         
24 24
  def index
......
66 66
    flash[:error] = "Unable to delete issue status"
67 67
    redirect_to :action => 'list'
68 68
  end  	
69
  
70
  def update_issue_done_ratio
71
    if IssueStatus.update_issue_done_ratios
72
      flash[:notice] = l(:notice_issue_done_ratios_updated)
73
    else
74
      flash[:error] =  l(:error_issue_done_ratios_not_updated)
75
    end
76
    redirect_to :action => 'list'
77
  end
69 78
end
app/models/issue.rb
55 55
                                          :conditions => Project.allowed_to_condition(args.first || User.current, :view_issues) } }
56 56
  
57 57
  named_scope :open, :conditions => ["#{IssueStatus.table_name}.is_closed = ?", false], :include => :status
58
  
58

  
59
  before_save :update_done_ratio_from_issue_status
59 60
  after_save :create_journal
60 61
  
61 62
  # Returns true if usr or current user is allowed to view the issue
......
132 133
    write_attribute :estimated_hours, (h.is_a?(String) ? h.to_hours : h)
133 134
  end
134 135
  
136
  def done_ratio
137
    if Setting.issue_status_for_done_ratio? && !self.status.default_done_ratio.blank?
138
      self.status.default_done_ratio
139
    else
140
      read_attribute(:done_ratio)
141
    end
142
  end
143
  
135 144
  def validate
136 145
    if self.due_date.nil? && @attributes['due_date'] && !@attributes['due_date'].empty?
137 146
      errors.add :due_date, :not_a_date
......
165 174
    end
166 175
  end
167 176
  
177
  # Set the done_ratio using the status if that setting is set.  This will keep the done_ratios
178
  # even if the user turns off the setting later
179
  def update_done_ratio_from_issue_status
180
    if Setting.issue_status_for_done_ratio? && !self.status.default_done_ratio.blank?
181
      self.done_ratio = self.status.default_done_ratio
182
    end
183
  end
184
  
168 185
  def after_save
169 186
    # Reload is needed in order to get the right status
170 187
    reload
app/models/issue_status.rb
33 33
  def self.default
34 34
    find(:first, :conditions =>["is_default=?", true])
35 35
  end
36
  
37
  # Update all the +Issues+ setting their done_ratio to the value of their +IssueStatus+
38
  def self.update_issue_done_ratios
39
    if Setting.issue_status_for_done_ratio?
40
      IssueStatus.find(:all, :conditions => ["default_done_ratio >= 0"]).each do |status|
41
        Issue.update_all(["done_ratio = ?", status.default_done_ratio],
42
                         ["status_id = ?", status.id])
43
      end
44
    end
45

  
46
    return Setting.issue_status_for_done_ratio?
47
  end
36 48

  
37 49
  # Returns an array of all statuses the given role can switch to
38 50
  # Uses association cache when called more than one time
app/views/issue_statuses/_form.rhtml
5 5
<p><label for="issue_status_name"><%=l(:field_name)%><span class="required"> *</span></label>
6 6
<%= text_field 'issue_status', 'name'  %></p>
7 7

  
8
<% if Setting.issue_status_for_done_ratio? %>
9
<p><label for="issue_done_ratio"><%=l(:field_done_ratio)%></label>
10
<%= select 'issue_status', :default_done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></p>
11
<% end %>
12

  
8 13
<p><label for="issue_status_is_closed"><%=l(:field_is_closed)%></label>
9 14
<%= check_box 'issue_status', 'is_closed' %></p>
10 15

  
app/views/issue_statuses/list.rhtml
1 1
<div class="contextual">
2 2
<%= link_to l(:label_issue_status_new), {:action => 'new'}, :class => 'icon icon-add' %>
3
<%= link_to(l(:label_update_issue_done_ratios), {:action => 'update_issue_done_ratio'}, :class => 'icon icon-multiple', :method => 'post', :confirm => l(:text_are_you_sure)) if Setting.issue_status_for_done_ratio? %>
3 4
</div>
4 5

  
5 6
<h2><%=l(:label_issue_status_plural)%></h2>
......
7 8
<table class="list">
8 9
  <thead><tr>
9 10
  <th><%=l(:field_status)%></th>
11
  <% if Setting.issue_status_for_done_ratio? %>
12
  <th><%=l(:field_done_ratio)%></th>
13
  <% end %>
10 14
  <th><%=l(:field_is_default)%></th>
11 15
  <th><%=l(:field_is_closed)%></th>
12 16
  <th><%=l(:button_sort)%></th>
......
16 20
<% for status in @issue_statuses %>
17 21
  <tr class="<%= cycle("odd", "even") %>">
18 22
  <td><%= link_to status.name, :action => 'edit', :id => status %></td>
23
  <% if Setting.issue_status_for_done_ratio? %>
24
  <td align="center"><%= h status.default_done_ratio %></td>
25
  <% end %>
19 26
  <td align="center"><%= image_tag 'true.png' if status.is_default? %></td>
20 27
  <td align="center"><%= image_tag 'true.png' if status.is_closed? %></td>
21 28
  <td align="center" style="width:15%;"><%= reorder_links('issue_status', {:action => 'update', :id => status}) %></td>
app/views/issues/_form.rhtml
41 41
<p><%= f.text_field :start_date, :size => 10 %><%= calendar_for('issue_start_date') %></p>
42 42
<p><%= f.text_field :due_date, :size => 10 %><%= calendar_for('issue_due_date') %></p>
43 43
<p><%= f.text_field :estimated_hours, :size => 3 %> <%= l(:field_hours) %></p>
44
<% unless Setting.issue_status_for_done_ratio? %>
44 45
<p><%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></p>
46
<% end %>
45 47
</div>
46 48

  
47 49
<div style="clear:both;"> </div>
app/views/issues/_form_update.rhtml
4 4
<p><%= f.select :assigned_to_id, (@issue.assignable_users.collect {|m| [m.name, m.id]}), :include_blank => true %></p>
5 5
</div>
6 6
<div class="splitcontentright">
7
<% unless Setting.issue_status_for_done_ratio? %>
7 8
<p><%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></p>
9
<% end %>
8 10
<% unless @issue.assignable_versions.empty? %>
9 11
<p><%= f.select :fixed_version_id, (@issue.assignable_versions.collect {|v| [v.name, v.id]}), :include_blank => true %></p>
10 12
<% end %>
app/views/issues/bulk_edit.rhtml
35 35
<%= text_field_tag 'start_date', '', :size => 10 %><%= calendar_for('start_date') %></label>
36 36
<label><%= l(:field_due_date) %>: 
37 37
<%= text_field_tag 'due_date', '', :size => 10 %><%= calendar_for('due_date') %></label>
38
<% unless Setting.issue_status_for_done_ratio? %>
38 39
<label><%= l(:field_done_ratio) %>: 
39 40
<%= select_tag 'done_ratio', options_for_select([[l(:label_no_change_option), '']] + (0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></label>
41
<% end %>
40 42
</p>
41 43

  
42 44
<% @custom_fields.each do |custom_field| %>
app/views/issues/context_menu.rhtml
66 66
		</ul>
67 67
	</li>
68 68
	<% end -%>
69
  <% unless Setting.issue_status_for_done_ratio? %>
69 70
	<li class="folder">
70 71
		<a href="#" class="submenu"><%= l(:field_done_ratio) %></a>
71 72
		<ul>
......
75 76
		<% end -%>
76 77
		</ul>
77 78
	</li>
78
	
79
  <% end %>
79 80
<% if !@issue.nil? %>
80 81
	<li><%= context_menu_link l(:button_copy), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue},
81 82
	        :class => 'icon-copy', :disabled => !@can[:copy] %></li>
app/views/settings/_issues.rhtml
11 11
<%= check_box_tag 'settings[display_subprojects_issues]', 1, Setting.display_subprojects_issues? %>
12 12
</p>
13 13

  
14
<p><label><%= l(:setting_use_issue_status_for_done_ratio) %></label>
15
<%= hidden_field_tag 'settings[issue_status_for_done_ratio]', 0 %>
16
<%= check_box_tag 'settings[issue_status_for_done_ratio]', 1, Setting.issue_status_for_done_ratio? %>
17
</p>
18

  
14 19
<p><label><%= l(:setting_issues_export_limit) %></label>
15 20
<%= text_field_tag 'settings[issues_export_limit]', Setting.issues_export_limit, :size => 6 %></p>
16 21
</div>
config/locales/bg.yml
835 835
  button_move_and_follow: Move and follow
836 836
  setting_default_projects_modules: Default enabled modules for new projects
837 837
  setting_gravatar_default: Default Gravatar image
838
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
839
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
840
  notice_issue_done_ratios_updated: Issue done ratios updated.
841
  label_update_issue_done_ratios: Update issue done ratios
config/locales/bs.yml
859 859
  button_move_and_follow: Move and follow
860 860
  setting_default_projects_modules: Default enabled modules for new projects
861 861
  setting_gravatar_default: Default Gravatar image
862
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
863
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
864
  notice_issue_done_ratios_updated: Issue done ratios updated.
865
  label_update_issue_done_ratios: Update issue done ratios
config/locales/ca.yml
838 838
  button_move_and_follow: Move and follow
839 839
  setting_default_projects_modules: Default enabled modules for new projects
840 840
  setting_gravatar_default: Default Gravatar image
841
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
842
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
843
  notice_issue_done_ratios_updated: Issue done ratios updated.
844
  label_update_issue_done_ratios: Update issue done ratios
config/locales/cs.yml
841 841
  button_move_and_follow: Move and follow
842 842
  setting_default_projects_modules: Default enabled modules for new projects
843 843
  setting_gravatar_default: Default Gravatar image
844
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
845
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
846
  notice_issue_done_ratios_updated: Issue done ratios updated.
847
  label_update_issue_done_ratios: Update issue done ratios
config/locales/da.yml
861 861
  button_move_and_follow: Move and follow
862 862
  setting_default_projects_modules: Default enabled modules for new projects
863 863
  setting_gravatar_default: Default Gravatar image
864
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
865
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
866
  notice_issue_done_ratios_updated: Issue done ratios updated.
867
  label_update_issue_done_ratios: Update issue done ratios
config/locales/de.yml
861 861
  button_move_and_follow: Move and follow
862 862
  setting_default_projects_modules: Default enabled modules for new projects
863 863
  setting_gravatar_default: Default Gravatar image
864
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
865
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
866
  notice_issue_done_ratios_updated: Issue done ratios updated.
867
  label_update_issue_done_ratios: Update issue done ratios
config/locales/el.yml
841 841
  button_move_and_follow: Move and follow
842 842
  setting_default_projects_modules: Default enabled modules for new projects
843 843
  setting_gravatar_default: Default Gravatar image
844
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
845
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
846
  notice_issue_done_ratios_updated: Issue done ratios updated.
847
  label_update_issue_done_ratios: Update issue done ratios
config/locales/en.yml
147 147
  notice_account_pending: "Your account was created and is now pending administrator approval."
148 148
  notice_default_data_loaded: Default configuration successfully loaded.
149 149
  notice_unable_delete_version: Unable to delete version.
150
  notice_issue_done_ratios_updated: Issue done ratios updated.
150 151
  
151 152
  error_can_t_load_default_data: "Default configuration could not be loaded: {{value}}"
152 153
  error_scm_not_found: "The entry or revision was not found in the repository."
......
156 157
  error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
157 158
  error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
158 159
  error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened'
159
  
160
  error_issue_done_ratios_not_updated: "Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'"
161

  
160 162
  warning_attachments_not_saved: "{{count}} file(s) could not be saved."
161 163
  
162 164
  mail_subject_lost_password: "Your {{value}} password"
......
307 309
  setting_sequential_project_identifiers: Generate sequential project identifiers
308 310
  setting_gravatar_enabled: Use Gravatar user icons
309 311
  setting_gravatar_default: Default Gravatar image
312
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
310 313
  setting_diff_max_lines_displayed: Max number of diff lines displayed
311 314
  setting_file_max_size_displayed: Max size of text files displayed inline
312 315
  setting_repository_log_display_limit: Maximum number of revisions displayed on file log
......
709 712
  label_group_plural: Groups
710 713
  label_group_new: New group
711 714
  label_time_entry_plural: Spent time
715
  label_update_issue_done_ratios: Update issue done ratios
712 716
  
713 717
  button_login: Login
714 718
  button_submit: Submit
config/locales/es.yml
882 882
  button_move_and_follow: Move and follow
883 883
  setting_default_projects_modules: Default enabled modules for new projects
884 884
  setting_gravatar_default: Default Gravatar image
885
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
886
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
887
  notice_issue_done_ratios_updated: Issue done ratios updated.
888
  label_update_issue_done_ratios: Update issue done ratios
config/locales/fi.yml
871 871
  button_move_and_follow: Move and follow
872 872
  setting_default_projects_modules: Default enabled modules for new projects
873 873
  setting_gravatar_default: Default Gravatar image
874
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
875
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
876
  notice_issue_done_ratios_updated: Issue done ratios updated.
877
  label_update_issue_done_ratios: Update issue done ratios
config/locales/fr.yml
864 864
  field_active: Actif
865 865
  enumeration_system_activity: Activité système
866 866
  setting_gravatar_default: Default Gravatar image
867
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
868
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
869
  notice_issue_done_ratios_updated: Issue done ratios updated.
870
  label_update_issue_done_ratios: Update issue done ratios
config/locales/gl.yml
861 861
  button_move_and_follow: Move and follow
862 862
  setting_default_projects_modules: Default enabled modules for new projects
863 863
  setting_gravatar_default: Default Gravatar image
864
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
865
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
866
  notice_issue_done_ratios_updated: Issue done ratios updated.
867
  label_update_issue_done_ratios: Update issue done ratios
config/locales/he.yml
845 845
  button_move_and_follow: Move and follow
846 846
  setting_default_projects_modules: Default enabled modules for new projects
847 847
  setting_gravatar_default: Default Gravatar image
848
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
849
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
850
  notice_issue_done_ratios_updated: Issue done ratios updated.
851
  label_update_issue_done_ratios: Update issue done ratios
config/locales/hu.yml
866 866
  button_move_and_follow: Move and follow
867 867
  setting_default_projects_modules: Default enabled modules for new projects
868 868
  setting_gravatar_default: Default Gravatar image
869
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
870
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
871
  notice_issue_done_ratios_updated: Issue done ratios updated.
872
  label_update_issue_done_ratios: Update issue done ratios
config/locales/it.yml
848 848
  button_move_and_follow: Move and follow
849 849
  setting_default_projects_modules: Default enabled modules for new projects
850 850
  setting_gravatar_default: Default Gravatar image
851
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
852
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
853
  notice_issue_done_ratios_updated: Issue done ratios updated.
854
  label_update_issue_done_ratios: Update issue done ratios
config/locales/ja.yml
870 870
  button_move_and_follow: Move and follow
871 871
  setting_default_projects_modules: Default enabled modules for new projects
872 872
  setting_gravatar_default: Default Gravatar image
873
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
874
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
875
  notice_issue_done_ratios_updated: Issue done ratios updated.
876
  label_update_issue_done_ratios: Update issue done ratios
config/locales/ko.yml
901 901
  button_move_and_follow: Move and follow
902 902
  setting_default_projects_modules: Default enabled modules for new projects
903 903
  setting_gravatar_default: Default Gravatar image
904
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
905
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
906
  notice_issue_done_ratios_updated: Issue done ratios updated.
907
  label_update_issue_done_ratios: Update issue done ratios
config/locales/lt.yml
871 871
  button_move_and_follow: Move and follow
872 872
  setting_default_projects_modules: Default enabled modules for new projects
873 873
  setting_gravatar_default: Default Gravatar image
874
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
875
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
876
  notice_issue_done_ratios_updated: Issue done ratios updated.
877
  label_update_issue_done_ratios: Update issue done ratios
config/locales/nl.yml
823 823
  button_move_and_follow: Move and follow
824 824
  setting_default_projects_modules: Default enabled modules for new projects
825 825
  setting_gravatar_default: Default Gravatar image
826
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
827
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
828
  notice_issue_done_ratios_updated: Issue done ratios updated.
829
  label_update_issue_done_ratios: Update issue done ratios
config/locales/no.yml
836 836
  button_move_and_follow: Move and follow
837 837
  setting_default_projects_modules: Default enabled modules for new projects
838 838
  setting_gravatar_default: Default Gravatar image
839
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
840
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
841
  notice_issue_done_ratios_updated: Issue done ratios updated.
842
  label_update_issue_done_ratios: Update issue done ratios
config/locales/pl.yml
864 864
  button_move_and_follow: Move and follow
865 865
  setting_default_projects_modules: Default enabled modules for new projects
866 866
  setting_gravatar_default: Default Gravatar image
867
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
868
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
869
  notice_issue_done_ratios_updated: Issue done ratios updated.
870
  label_update_issue_done_ratios: Update issue done ratios
config/locales/pt-BR.yml
867 867
  button_move_and_follow: Mover e seguir
868 868
  setting_default_projects_modules: Módulos habilitados por padrão para novos projetos
869 869
  setting_gravatar_default: Imagem Gravatar padrão
870
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
871
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
872
  notice_issue_done_ratios_updated: Issue done ratios updated.
873
  label_update_issue_done_ratios: Update issue done ratios
config/locales/pt.yml
853 853
  button_move_and_follow: Move and follow
854 854
  setting_default_projects_modules: Default enabled modules for new projects
855 855
  setting_gravatar_default: Default Gravatar image
856
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
857
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
858
  notice_issue_done_ratios_updated: Issue done ratios updated.
859
  label_update_issue_done_ratios: Update issue done ratios
config/locales/ro.yml
838 838
  button_move_and_follow: Move and follow
839 839
  setting_default_projects_modules: Default enabled modules for new projects
840 840
  setting_gravatar_default: Default Gravatar image
841
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
842
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
843
  notice_issue_done_ratios_updated: Issue done ratios updated.
844
  label_update_issue_done_ratios: Update issue done ratios
config/locales/ru.yml
949 949
  button_move_and_follow: Переместить и перейти
950 950
  setting_default_projects_modules: Включенные по умолчанию модули для новых проектов
951 951
  setting_gravatar_default: Изображение Gravatar по умолчанию
952
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
953
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
954
  notice_issue_done_ratios_updated: Issue done ratios updated.
955
  label_update_issue_done_ratios: Update issue done ratios
config/locales/sk.yml
840 840
  button_move_and_follow: Move and follow
841 841
  setting_default_projects_modules: Default enabled modules for new projects
842 842
  setting_gravatar_default: Default Gravatar image
843
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
844
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
845
  notice_issue_done_ratios_updated: Issue done ratios updated.
846
  label_update_issue_done_ratios: Update issue done ratios
config/locales/sl.yml
837 837
  button_move_and_follow: Move and follow
838 838
  setting_default_projects_modules: Default enabled modules for new projects
839 839
  setting_gravatar_default: Default Gravatar image
840
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
841
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
842
  notice_issue_done_ratios_updated: Issue done ratios updated.
843
  label_update_issue_done_ratios: Update issue done ratios
config/locales/sr.yml
856 856
  button_move_and_follow: Move and follow
857 857
  setting_default_projects_modules: Default enabled modules for new projects
858 858
  setting_gravatar_default: Default Gravatar image
859
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
860
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
861
  notice_issue_done_ratios_updated: Issue done ratios updated.
862
  label_update_issue_done_ratios: Update issue done ratios
config/locales/sv.yml
889 889
  button_move_and_follow: Move and follow
890 890
  setting_default_projects_modules: Default enabled modules for new projects
891 891
  setting_gravatar_default: Default Gravatar image
892
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
893
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
894
  notice_issue_done_ratios_updated: Issue done ratios updated.
895
  label_update_issue_done_ratios: Update issue done ratios
config/locales/th.yml
838 838
  button_move_and_follow: Move and follow
839 839
  setting_default_projects_modules: Default enabled modules for new projects
840 840
  setting_gravatar_default: Default Gravatar image
841
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
842
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
843
  notice_issue_done_ratios_updated: Issue done ratios updated.
844
  label_update_issue_done_ratios: Update issue done ratios
config/locales/tr.yml
868 868
  button_move_and_follow: Move and follow
869 869
  setting_default_projects_modules: Default enabled modules for new projects
870 870
  setting_gravatar_default: Default Gravatar image
871
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
872
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
873
  notice_issue_done_ratios_updated: Issue done ratios updated.
874
  label_update_issue_done_ratios: Update issue done ratios
config/locales/uk.yml
837 837
  button_move_and_follow: Move and follow
838 838
  setting_default_projects_modules: Default enabled modules for new projects
839 839
  setting_gravatar_default: Default Gravatar image
840
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
841
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
842
  notice_issue_done_ratios_updated: Issue done ratios updated.
843
  label_update_issue_done_ratios: Update issue done ratios
config/locales/vi.yml
900 900
  button_move_and_follow: Move and follow
901 901
  setting_default_projects_modules: Default enabled modules for new projects
902 902
  setting_gravatar_default: Default Gravatar image
903
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
904
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
905
  notice_issue_done_ratios_updated: Issue done ratios updated.
906
  label_update_issue_done_ratios: Update issue done ratios
config/locales/zh-TW.yml
932 932
  enumeration_doc_categories: 文件分類
933 933
  enumeration_activities: 活動 (時間追蹤)
934 934
  enumeration_system_activity: 系統活動
935
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
936
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
937
  notice_issue_done_ratios_updated: Issue done ratios updated.
938
  label_update_issue_done_ratios: Update issue done ratios
config/locales/zh.yml
865 865
  button_move_and_follow: Move and follow
866 866
  setting_default_projects_modules: Default enabled modules for new projects
867 867
  setting_gravatar_default: Default Gravatar image
868
  error_issue_done_ratios_not_updated: Issue done ratios not updated.  Please confirm you enabled 'Use issue status for  done ratio'
869
  setting_use_issue_status_for_done_ratio: Use issue status for done ratio
870
  notice_issue_done_ratios_updated: Issue done ratios updated.
871
  label_update_issue_done_ratios: Update issue done ratios
config/settings.yml
129 129
  - updated_on
130 130
display_subprojects_issues:
131 131
  default: 1
132
issue_status_for_done_ratio:
133
  default: 0
132 134
default_projects_public:
133 135
  default: 1
134 136
default_projects_modules:
db/migrate/20091123212029_add_default_done_ratio_to_issue_status.rb
1
class AddDefaultDoneRatioToIssueStatus < ActiveRecord::Migration
2
  def self.up
3
    add_column :issue_statuses, :default_done_ratio, :integer
4
  end
5

  
6
  def self.down
7
    remove_column :issue_statuses, :default_one_ratio
8
  end
9
end
public/stylesheets/application.css
698 698
.icon-move { background-image: url(../images/move.png); }
699 699
.icon-save { background-image: url(../images/save.png); }
700 700
.icon-cancel { background-image: url(../images/cancel.png); }
701
.icon-multiple { background-image: url(../images/table_multiple.png); }
701 702
.icon-folder { background-image: url(../images/folder.png); }
702 703
.open .icon-folder { background-image: url(../images/folder_open.png); }
703 704
.icon-package { background-image: url(../images/package.png); }
test/functional/issue_statuses_controller_test.rb
70 70
    assert_redirected_to 'issue_statuses/list'
71 71
    assert_not_nil IssueStatus.find_by_id(1)
72 72
  end
73

  
74
  context "on POST to :update_issue_done_ratio" do
75
    context "with Setting.issue_status_for_done_ratio off" do
76
      setup do
77
        Setting.issue_status_for_done_ratio = 0
78
        post :update_issue_done_ratio
79
      end
80

  
81
      should_set_the_flash_to /not updated/
82
      should_redirect_to('the list') { '/issue_statuses/list' }
83
    end
84

  
85
    context "with Setting.issue_status_for_done_ratio on" do
86
      setup do
87
        Setting.issue_status_for_done_ratio = 1
88
        post :update_issue_done_ratio
89
      end
90

  
91
      should_set_the_flash_to /Issue done ratios updated/
92
      should_redirect_to('the list') { '/issue_statuses/list' }
93
    end
94
  end
95
  
73 96
end
test/unit/issue_status_test.rb
66 66
    status.reload
67 67
    assert status.is_default?
68 68
  end
69

  
70
  context "#update_done_ratios" do
71
    setup do
72
      @issue = Issue.find(1)
73
      @issue_status = IssueStatus.find(1)
74
      @issue_status.update_attribute(:default_done_ratio, 50)
75
    end
76
    
77
    context "with Setting.issue_status_for_done_ratio off" do
78
      setup do
79
        Setting.issue_status_for_done_ratio = 0
80
      end
81
      
82
      should "change nothing" do
83
        assert_equal 0, Issue.count(:conditions => {:done_ratio => 50})
84
      end
85
    end
86

  
87
    context "with Setting.issue_status_for_done_ratio on" do
88
      setup do
89
        Setting.issue_status_for_done_ratio = 1
90
      end
91
      
92
      should "update all of the issue's done_ratios to match their Issue Status" do
93
        IssueStatus.update_issue_done_ratios
94
        
95
        issues = Issue.find([1,3,4,5,6,7,9,10])
96
        issues.each do |issue|
97
          assert_equal @issue_status, issue.status
98
          assert_equal 50, issue.read_attribute(:done_ratio)
99
        end
100
      end
101
    end
102
  end
69 103
end
test/unit/issue_test.rb
400 400
    end
401 401
    assert ActionMailer::Base.deliveries.empty?
402 402
  end
403

  
404
  context "#done_ratio" do
405
    setup do
406
      @issue = Issue.find(1)
407
      @issue_status = IssueStatus.find(1)
408
      @issue_status.update_attribute(:default_done_ratio, 50)
409
    end
410
    
411
    context "with Setting.issue_status_for_done_ratio off" do
412
      setup do
413
        Setting.issue_status_for_done_ratio = 0
414
      end
415
      
416
      should "read the issue's field" do
417
        assert_equal 0, @issue.done_ratio
418
      end
419
    end
420

  
421
    context "with Setting.issue_status_for_done_ratio on" do
422
      setup do
423
        Setting.issue_status_for_done_ratio = 1
424
      end
425
      
426
      should "read the Issue Status's default done ratio" do
427
        assert_equal 50, @issue.done_ratio
428
      end
429
    end
430
  end
431

  
432
  context "#update_done_ratio_from_issue_status" do
433
    setup do
434
      @issue = Issue.find(1)
435
      @issue_status = IssueStatus.find(1)
436
      @issue_status.update_attribute(:default_done_ratio, 50)
437
    end
438
    
439
    context "with Setting.issue_status_for_done_ratio off" do
440
      setup do
441
        Setting.issue_status_for_done_ratio = 0
442
      end
443
      
444
      should "not change the issue" do
445
        @issue.update_done_ratio_from_issue_status
446

  
447
        assert_equal 0, @issue.done_ratio
448
      end
449
    end
450

  
451
    context "with Setting.issue_status_for_done_ratio on" do
452
      setup do
453
        Setting.issue_status_for_done_ratio = 1
454
      end
455
      
456
      should "not change the issue's done ratio" do
457
        @issue.update_done_ratio_from_issue_status
458

  
459
        assert_equal 50, @issue.done_ratio
460
      end
461
    end
462
  end
403 463
end
404
-