@@ -826,7 +826,7 module Redmine | |||||
826 | field_attributes :version_status |
|
826 | field_attributes :version_status | |
827 |
|
827 | |||
828 | def possible_values_options(custom_field, object=nil) |
|
828 | def possible_values_options(custom_field, object=nil) | |
829 | versions_options(custom_field, object) |
|
829 | possible_values_records(custom_field, object).sort.collect{|v| [v.to_s, v.id.to_s] } | |
830 | end |
|
830 | end | |
831 |
|
831 | |||
832 | def before_custom_field_save(custom_field) |
|
832 | def before_custom_field_save(custom_field) | |
@@ -839,13 +839,14 module Redmine | |||||
839 | protected |
|
839 | protected | |
840 |
|
840 | |||
841 | def query_filter_values(custom_field, query) |
|
841 | def query_filter_values(custom_field, query) | |
842 |
versions |
|
842 | versions = possible_values_records(custom_field, query.project, true) | |
|
843 | Version.sort_by_status(versions).collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s, l("version_status_#{s.status}")] } | |||
843 | end |
|
844 | end | |
844 |
|
845 | |||
845 |
def |
|
846 | def possible_values_records(custom_field, object=nil, all_statuses=false) | |
846 | if object.is_a?(Array) |
|
847 | if object.is_a?(Array) | |
847 | projects = object.map {|o| o.respond_to?(:project) ? o.project : nil}.compact.uniq |
|
848 | projects = object.map {|o| o.respond_to?(:project) ? o.project : nil}.compact.uniq | |
848 |
projects.map {|project| possible_values_ |
|
849 | projects.map {|project| possible_values_records(custom_field, project)}.reduce(:&) || [] | |
849 | elsif object.respond_to?(:project) && object.project |
|
850 | elsif object.respond_to?(:project) && object.project | |
850 | scope = object.project.shared_versions |
|
851 | scope = object.project.shared_versions | |
851 | filtered_versions_options(custom_field, scope, all_statuses) |
|
852 | filtered_versions_options(custom_field, scope, all_statuses) | |
@@ -864,7 +865,7 module Redmine | |||||
864 | scope = scope.where(:status => statuses.map(&:to_s)) |
|
865 | scope = scope.where(:status => statuses.map(&:to_s)) | |
865 | end |
|
866 | end | |
866 | end |
|
867 | end | |
867 | scope.sort.collect{|u| [u.to_s, u.id.to_s] } |
|
868 | scope | |
868 | end |
|
869 | end | |
869 | end |
|
870 | end | |
870 |
|
871 |
@@ -82,7 +82,19 class Redmine::VersionFieldFormatTest < ActionView::TestCase | |||||
82 | version = Version.generate!(:project => project, :status => 'locked') |
|
82 | version = Version.generate!(:project => project, :status => 'locked') | |
83 | query = Query.new(:project => project) |
|
83 | query = Query.new(:project => project) | |
84 |
|
84 | |||
85 | assert_not_include version.name, field.possible_values_options(project).map(&:first) |
|
85 | full_name = "#{version.project} - #{version.name}" | |
86 |
assert_include |
|
86 | assert_not_include full_name, field.possible_values_options(project).map(&:first) | |
|
87 | assert_include full_name, field.query_filter_options(query)[:values].call.map(&:first) | |||
|
88 | end | |||
|
89 | ||||
|
90 | def test_query_filter_options_should_include_version_status_for_grouping | |||
|
91 | field = IssueCustomField.new(:field_format => 'version', :version_status => ["open"]) | |||
|
92 | project = Project.find(1) | |||
|
93 | version = Version.generate!(:project => project, :status => 'locked') | |||
|
94 | query = Query.new(:project => project) | |||
|
95 | ||||
|
96 | full_name = "#{version.project} - #{version.name}" | |||
|
97 | assert_include [full_name, version.id.to_s, l(:version_status_locked)], | |||
|
98 | field.query_filter_options(query)[:values].call | |||
87 | end |
|
99 | end | |
88 | end |
|
100 | end |
General Comments 0
You need to be logged in to leave comments.
Login now