mirror of
https://github.com/redmine/redmine.git
synced 2025-11-10 23:36:01 +01:00
Merged r15536 and r15541 (#23083).
git-svn-id: http://svn.redmine.org/redmine/branches/3.3-stable@15560 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -804,17 +804,24 @@ module Redmine
|
|||||||
projects.map {|project| possible_values_options(custom_field, project)}.reduce(:&) || []
|
projects.map {|project| possible_values_options(custom_field, project)}.reduce(:&) || []
|
||||||
elsif object.respond_to?(:project) && object.project
|
elsif object.respond_to?(:project) && object.project
|
||||||
scope = object.project.shared_versions
|
scope = object.project.shared_versions
|
||||||
if !all_statuses && custom_field.version_status.is_a?(Array)
|
filtered_versions_options(custom_field, scope, all_statuses)
|
||||||
statuses = custom_field.version_status.map(&:to_s).reject(&:blank?)
|
elsif object.nil?
|
||||||
if statuses.any?
|
scope = Version.visible.where(:sharing => 'system')
|
||||||
scope = scope.where(:status => statuses.map(&:to_s))
|
filtered_versions_options(custom_field, scope, all_statuses)
|
||||||
end
|
|
||||||
end
|
|
||||||
scope.sort.collect {|u| [u.to_s, u.id.to_s]}
|
|
||||||
else
|
else
|
||||||
[]
|
[]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def filtered_versions_options(custom_field, scope, all_statuses=false)
|
||||||
|
if !all_statuses && custom_field.version_status.is_a?(Array)
|
||||||
|
statuses = custom_field.version_status.map(&:to_s).reject(&:blank?)
|
||||||
|
if statuses.any?
|
||||||
|
scope = scope.where(:status => statuses.map(&:to_s))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
scope.sort.collect{|u| [u.to_s, u.id.to_s] }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ class CustomFieldVersionFormatTest < ActiveSupport::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_possible_values_options_with_no_arguments
|
def test_possible_values_options_with_no_arguments
|
||||||
|
Version.delete_all
|
||||||
assert_equal [], @field.possible_values_options
|
assert_equal [], @field.possible_values_options
|
||||||
assert_equal [], @field.possible_values_options(nil)
|
assert_equal [], @field.possible_values_options(nil)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -52,6 +52,15 @@ class Redmine::VersionFieldFormatTest < ActionView::TestCase
|
|||||||
assert_equal expected, field.possible_values_options(project).map(&:first)
|
assert_equal expected, field.possible_values_options(project).map(&:first)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_possible_values_options_should_return_system_shared_versions_without_project
|
||||||
|
field = IssueCustomField.new(:field_format => 'version')
|
||||||
|
version = Version.generate!(:project => Project.find(1), :status => 'open', :sharing => 'system')
|
||||||
|
|
||||||
|
expected = Version.visible.where(:sharing => 'system').sort.map(&:name)
|
||||||
|
assert_include version.name, expected
|
||||||
|
assert_equal expected, field.possible_values_options.map(&:first)
|
||||||
|
end
|
||||||
|
|
||||||
def test_possible_values_options_should_return_project_versions_with_selected_status
|
def test_possible_values_options_should_return_project_versions_with_selected_status
|
||||||
field = IssueCustomField.new(:field_format => 'version', :version_status => ["open"])
|
field = IssueCustomField.new(:field_format => 'version', :version_status => ["open"])
|
||||||
project = Project.find(1)
|
project = Project.find(1)
|
||||||
|
|||||||
Reference in New Issue
Block a user