diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2016-10-23 11:31:20 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2016-10-23 11:31:20 +0000 |
commit | eb023bdcce2bd6d9ec3b1d37aa09e436c5ee8149 (patch) | |
tree | 352efa51b7e99d469ac3121eb531b58715609b30 | |
parent | f94711ea8c9998a6a6af74370fdc02c9c25208cb (diff) | |
download | redmine-eb023bdcce2bd6d9ec3b1d37aa09e436c5ee8149.tar.gz redmine-eb023bdcce2bd6d9ec3b1d37aa09e436c5ee8149.zip |
Add option to set a new version as default directly from New Version page (#24011).
git-svn-id: http://svn.redmine.org/redmine/trunk@15922 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/version.rb | 26 | ||||
-rw-r--r-- | app/views/versions/_form.html.erb | 3 | ||||
-rw-r--r-- | test/unit/version_test.rb | 16 |
3 files changed, 45 insertions, 0 deletions
diff --git a/app/models/version.rb b/app/models/version.rb index 98d1c6ac0..2b82f7c5b 100644 --- a/app/models/version.rb +++ b/app/models/version.rb @@ -19,6 +19,7 @@ class Version < ActiveRecord::Base include Redmine::SafeAttributes after_update :update_issues_from_sharing_change + after_save :update_default_project_version before_destroy :nullify_projects_default_version belongs_to :project @@ -65,6 +66,7 @@ class Version < ActiveRecord::Base 'wiki_page_title', 'status', 'sharing', + 'default_project_version', 'custom_field_values', 'custom_fields' @@ -82,6 +84,12 @@ class Version < ActiveRecord::Base project.present? && project.attachments_deletable?(usr) end + alias :base_reload :reload + def reload(*args) + @default_project_version = nil + base_reload(*args) + end + def start_date @start_date ||= fixed_issues.minimum('start_date') end @@ -263,6 +271,18 @@ class Version < ActiveRecord::Base fixed_issues.empty? && !referenced_by_a_custom_field? end + def default_project_version + if @default_project_version.nil? + project.present? && project.default_version == self + else + @default_project_version + end + end + + def default_project_version=(arg) + @default_project_version = (arg == '1' || arg == true) + end + private def load_issue_counts @@ -291,6 +311,12 @@ class Version < ActiveRecord::Base end end + def update_default_project_version + if @default_project_version && project.present? + project.update_columns :default_version_id => id + end + end + # Returns the average estimated time of assigned issues # or 1 if no issue has an estimated time # Used to weight unestimated issues in progress calculation diff --git a/app/views/versions/_form.html.erb b/app/views/versions/_form.html.erb index e723a4e2e..ade741f26 100644 --- a/app/views/versions/_form.html.erb +++ b/app/views/versions/_form.html.erb @@ -10,6 +10,9 @@ <p><%= f.text_field :wiki_page_title, :label => :label_wiki_page, :size => 60, :disabled => @project.wiki.nil? %></p> <p><%= f.date_field :effective_date, :size => 10 %><%= calendar_for('version_effective_date') %></p> <p><%= f.select :sharing, @version.allowed_sharings.collect {|v| [format_version_sharing(v), v]} %></p> +<% if @version.new_record? %> +<p><%= f.check_box :default_project_version, :label => :field_default_version %></p> +<% end %> <% @version.custom_field_values.each do |value| %> <p><%= custom_field_tag_with_label :version, value %></p> diff --git a/test/unit/version_test.rb b/test/unit/version_test.rb index 56adc3c4a..470207be2 100644 --- a/test/unit/version_test.rb +++ b/test/unit/version_test.rb @@ -29,6 +29,22 @@ class VersionTest < ActiveSupport::TestCase assert_equal 'none', v.sharing end + def test_create_as_default_project_version + project = Project.find(1) + v = Version.new(:project => project, :name => '1.1', + :default_project_version => '1') + assert v.save + assert_equal v, project.reload.default_version + end + + def test_create_not_as_default_project_version + project = Project.find(1) + v = Version.new(:project => project, :name => '1.1', + :default_project_version => '0') + assert v.save + assert_nil project.reload.default_version + end + def test_invalid_effective_date_validation v = Version.new(:project => Project.find(1), :name => '1.1', :effective_date => '99999-01-01') |