@@ -333,14 +333,17 class Query < ActiveRecord::Base | |||||
333 | end |
|
333 | end | |
334 |
|
334 | |||
335 | def columns |
|
335 | def columns | |
336 | if has_default_columns? |
|
336 | # preserve the column_names order | |
337 | available_columns.select do |c| |
|
337 | (has_default_columns? ? default_columns_names : column_names).collect do |name| | |
338 | # Adds the project column by default for cross-project lists |
|
338 | available_columns.find { |col| col.name == name } | |
339 | Setting.issue_list_default_columns.include?(c.name.to_s) || (c.name == :project && project.nil?) |
|
339 | end.compact | |
340 |
|
|
340 | end | |
341 | else |
|
341 | ||
342 | # preserve the column_names order |
|
342 | def default_columns_names | |
343 | column_names.collect {|name| available_columns.find {|col| col.name == name}}.compact |
|
343 | @default_columns_names ||= begin | |
|
344 | default_columns = Setting.issue_list_default_columns.map(&:to_sym) | |||
|
345 | ||||
|
346 | project.present? ? default_columns : [:project] | default_columns | |||
344 | end |
|
347 | end | |
345 | end |
|
348 | end | |
346 |
|
349 | |||
@@ -349,7 +352,7 class Query < ActiveRecord::Base | |||||
349 | names = names.select {|n| n.is_a?(Symbol) || !n.blank? } |
|
352 | names = names.select {|n| n.is_a?(Symbol) || !n.blank? } | |
350 | names = names.collect {|n| n.is_a?(Symbol) ? n : n.to_sym } |
|
353 | names = names.collect {|n| n.is_a?(Symbol) ? n : n.to_sym } | |
351 | # Set column_names to nil if default columns |
|
354 | # Set column_names to nil if default columns | |
352 |
if names |
|
355 | if names == default_columns_names | |
353 | names = nil |
|
356 | names = nil | |
354 | end |
|
357 | end | |
355 | end |
|
358 | end |
@@ -285,6 +285,27 class IssuesControllerTest < ActionController::TestCase | |||||
285 | :parent => { :tag => 'select', :attributes => { :id => "selected_columns" } } |
|
285 | :parent => { :tag => 'select', :attributes => { :id => "selected_columns" } } | |
286 | end |
|
286 | end | |
287 |
|
287 | |||
|
288 | def test_index_without_project_should_implicitly_add_project_column_to_default_columns | |||
|
289 | Setting.issue_list_default_columns = ['tracker', 'subject', 'assigned_to'] | |||
|
290 | get :index, :set_filter => 1 | |||
|
291 | ||||
|
292 | # query should use specified columns | |||
|
293 | query = assigns(:query) | |||
|
294 | assert_kind_of Query, query | |||
|
295 | assert_equal [:project, :tracker, :subject, :assigned_to], query.columns.map(&:name) | |||
|
296 | end | |||
|
297 | ||||
|
298 | def test_index_without_project_and_explicit_default_columns_should_not_add_project_column | |||
|
299 | Setting.issue_list_default_columns = ['tracker', 'subject', 'assigned_to'] | |||
|
300 | columns = ['tracker', 'subject', 'assigned_to'] | |||
|
301 | get :index, :set_filter => 1, :c => columns | |||
|
302 | ||||
|
303 | # query should use specified columns | |||
|
304 | query = assigns(:query) | |||
|
305 | assert_kind_of Query, query | |||
|
306 | assert_equal columns.map(&:to_sym), query.columns.map(&:name) | |||
|
307 | end | |||
|
308 | ||||
288 | def test_index_with_custom_field_column |
|
309 | def test_index_with_custom_field_column | |
289 | columns = %w(tracker subject cf_2) |
|
310 | columns = %w(tracker subject cf_2) | |
290 | get :index, :set_filter => 1, :c => columns |
|
311 | get :index, :set_filter => 1, :c => columns |
General Comments 0
You need to be logged in to leave comments.
Login now