mirror of
https://github.com/meineerde/redmine.git
synced 2026-02-03 23:53:23 +00:00
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
This commit is contained in:
parent
f94711ea8c
commit
eb023bdcce
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user