From 3955f81b3f1c646210d8ba545bf8804ac33e9d3f Mon Sep 17 00:00:00 2001 From: Etienne Massip Date: Mon, 26 Sep 2011 17:47:50 +0000 Subject: [PATCH] Merged r7538 from trunk (#8411). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@7539 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/query.rb | 21 ++++++++++++--------- test/functional/issues_controller_test.rb | 21 +++++++++++++++++++++ 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/app/models/query.rb b/app/models/query.rb index 786751c8c..1bd4ec0fb 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -333,14 +333,17 @@ class Query < ActiveRecord::Base end def columns - if has_default_columns? - available_columns.select do |c| - # Adds the project column by default for cross-project lists - Setting.issue_list_default_columns.include?(c.name.to_s) || (c.name == :project && project.nil?) - end - else - # preserve the column_names order - column_names.collect {|name| available_columns.find {|col| col.name == name}}.compact + # preserve the column_names order + (has_default_columns? ? default_columns_names : column_names).collect do |name| + available_columns.find { |col| col.name == name } + end.compact + end + + def default_columns_names + @default_columns_names ||= begin + default_columns = Setting.issue_list_default_columns.map(&:to_sym) + + project.present? ? default_columns : [:project] | default_columns end end @@ -349,7 +352,7 @@ class Query < ActiveRecord::Base names = names.select {|n| n.is_a?(Symbol) || !n.blank? } names = names.collect {|n| n.is_a?(Symbol) ? n : n.to_sym } # Set column_names to nil if default columns - if names.map(&:to_s) == Setting.issue_list_default_columns + if names == default_columns_names names = nil end end diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 5faf3f886..d4dacd48b 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -285,6 +285,27 @@ class IssuesControllerTest < ActionController::TestCase :parent => { :tag => 'select', :attributes => { :id => "selected_columns" } } end + def test_index_without_project_should_implicitly_add_project_column_to_default_columns + Setting.issue_list_default_columns = ['tracker', 'subject', 'assigned_to'] + get :index, :set_filter => 1 + + # query should use specified columns + query = assigns(:query) + assert_kind_of Query, query + assert_equal [:project, :tracker, :subject, :assigned_to], query.columns.map(&:name) + end + + def test_index_without_project_and_explicit_default_columns_should_not_add_project_column + Setting.issue_list_default_columns = ['tracker', 'subject', 'assigned_to'] + columns = ['tracker', 'subject', 'assigned_to'] + get :index, :set_filter => 1, :c => columns + + # query should use specified columns + query = assigns(:query) + assert_kind_of Query, query + assert_equal columns.map(&:to_sym), query.columns.map(&:name) + end + def test_index_with_custom_field_column columns = %w(tracker subject cf_2) get :index, :set_filter => 1, :c => columns