]> source.dussan.org Git - redmine.git/commitdiff
Merged r15536 and r15541 (#23083).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 18 Jun 2016 10:18:40 +0000 (10:18 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 18 Jun 2016 10:18:40 +0000 (10:18 +0000)
git-svn-id: http://svn.redmine.org/redmine/branches/3.3-stable@15560 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/field_format.rb
test/unit/custom_field_version_format_test.rb
test/unit/lib/redmine/field_format/version_field_format_test.rb

index 7734b3984c04994d8a201bca1fa3cce3b27d67f6..0347ca8dac3c477161a948c1e211309f9fff41ea 100644 (file)
@@ -804,17 +804,24 @@ module Redmine
           projects.map {|project| possible_values_options(custom_field, project)}.reduce(:&) || []
         elsif object.respond_to?(:project) && object.project
           scope = object.project.shared_versions
-          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]}
+          filtered_versions_options(custom_field, scope, all_statuses)
+        elsif object.nil?
+          scope = Version.visible.where(:sharing => 'system')
+          filtered_versions_options(custom_field, scope, all_statuses)
         else
           []
         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
index f8a95174ee2f73721cf5936e19fa7571bf44f55e..a394dabc84718e13c6ae464571299be69de0e810 100644 (file)
@@ -25,6 +25,7 @@ class CustomFieldVersionFormatTest < ActiveSupport::TestCase
   end
 
   def test_possible_values_options_with_no_arguments
+    Version.delete_all
     assert_equal [], @field.possible_values_options
     assert_equal [], @field.possible_values_options(nil)
   end
index 1918951456d914458365077508cf433df9caf3e4..0b3006c65d968f7f201e9ff8f8a735426117a654 100644 (file)
@@ -51,6 +51,15 @@ class Redmine::VersionFieldFormatTest < ActionView::TestCase
 
     assert_equal expected, field.possible_values_options(project).map(&:first)
   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
     field = IssueCustomField.new(:field_format => 'version', :version_status => ["open"])