##// END OF EJS Templates
Merged r15536 and r15541 (#23083)....
Jean-Philippe Lang -
r15178:1f79610fdc05
parent child
Show More
@@ -804,17 +804,24 module Redmine
804 projects.map {|project| possible_values_options(custom_field, project)}.reduce(:&) || []
804 projects.map {|project| possible_values_options(custom_field, project)}.reduce(:&) || []
805 elsif object.respond_to?(:project) && object.project
805 elsif object.respond_to?(:project) && object.project
806 scope = object.project.shared_versions
806 scope = object.project.shared_versions
807 if !all_statuses && custom_field.version_status.is_a?(Array)
807 filtered_versions_options(custom_field, scope, all_statuses)
808 statuses = custom_field.version_status.map(&:to_s).reject(&:blank?)
808 elsif object.nil?
809 if statuses.any?
809 scope = Version.visible.where(:sharing => 'system')
810 scope = scope.where(:status => statuses.map(&:to_s))
810 filtered_versions_options(custom_field, scope, all_statuses)
811 end
812 end
813 scope.sort.collect {|u| [u.to_s, u.id.to_s]}
814 else
811 else
815 []
812 []
816 end
813 end
817 end
814 end
815
816 def filtered_versions_options(custom_field, scope, all_statuses=false)
817 if !all_statuses && custom_field.version_status.is_a?(Array)
818 statuses = custom_field.version_status.map(&:to_s).reject(&:blank?)
819 if statuses.any?
820 scope = scope.where(:status => statuses.map(&:to_s))
821 end
822 end
823 scope.sort.collect{|u| [u.to_s, u.id.to_s] }
824 end
818 end
825 end
819 end
826 end
820 end
827 end
@@ -25,6 +25,7 class CustomFieldVersionFormatTest < ActiveSupport::TestCase
25 end
25 end
26
26
27 def test_possible_values_options_with_no_arguments
27 def test_possible_values_options_with_no_arguments
28 Version.delete_all
28 assert_equal [], @field.possible_values_options
29 assert_equal [], @field.possible_values_options
29 assert_equal [], @field.possible_values_options(nil)
30 assert_equal [], @field.possible_values_options(nil)
30 end
31 end
@@ -51,6 +51,15 class Redmine::VersionFieldFormatTest < ActionView::TestCase
51
51
52 assert_equal expected, field.possible_values_options(project).map(&:first)
52 assert_equal expected, field.possible_values_options(project).map(&:first)
53 end
53 end
54
55 def test_possible_values_options_should_return_system_shared_versions_without_project
56 field = IssueCustomField.new(:field_format => 'version')
57 version = Version.generate!(:project => Project.find(1), :status => 'open', :sharing => 'system')
58
59 expected = Version.visible.where(:sharing => 'system').sort.map(&:name)
60 assert_include version.name, expected
61 assert_equal expected, field.possible_values_options.map(&:first)
62 end
54
63
55 def test_possible_values_options_should_return_project_versions_with_selected_status
64 def test_possible_values_options_should_return_project_versions_with_selected_status
56 field = IssueCustomField.new(:field_format => 'version', :version_status => ["open"])
65 field = IssueCustomField.new(:field_format => 'version', :version_status => ["open"])
General Comments 0
You need to be logged in to leave comments. Login now