@@ -333,14 +333,17 class Query < ActiveRecord::Base | |||
|
333 | 333 | end |
|
334 | 334 | |
|
335 | 335 | def columns |
|
336 | if has_default_columns? | |
|
337 | available_columns.select do |c| | |
|
338 | # Adds the project column by default for cross-project lists | |
|
339 | Setting.issue_list_default_columns.include?(c.name.to_s) || (c.name == :project && project.nil?) | |
|
340 |
|
|
|
341 | else | |
|
342 | # preserve the column_names order | |
|
343 | column_names.collect {|name| available_columns.find {|col| col.name == name}}.compact | |
|
336 | # preserve the column_names order | |
|
337 | (has_default_columns? ? default_columns_names : column_names).collect do |name| | |
|
338 | available_columns.find { |col| col.name == name } | |
|
339 | end.compact | |
|
340 | end | |
|
341 | ||
|
342 | def default_columns_names | |
|
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 | 347 | end |
|
345 | 348 | end |
|
346 | 349 | |
@@ -349,7 +352,7 class Query < ActiveRecord::Base | |||
|
349 | 352 | names = names.select {|n| n.is_a?(Symbol) || !n.blank? } |
|
350 | 353 | names = names.collect {|n| n.is_a?(Symbol) ? n : n.to_sym } |
|
351 | 354 | # Set column_names to nil if default columns |
|
352 |
if names |
|
|
355 | if names == default_columns_names | |
|
353 | 356 | names = nil |
|
354 | 357 | end |
|
355 | 358 | end |
@@ -285,6 +285,27 class IssuesControllerTest < ActionController::TestCase | |||
|
285 | 285 | :parent => { :tag => 'select', :attributes => { :id => "selected_columns" } } |
|
286 | 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 | 309 | def test_index_with_custom_field_column |
|
289 | 310 | columns = %w(tracker subject cf_2) |
|
290 | 311 | get :index, :set_filter => 1, :c => columns |
General Comments 0
You need to be logged in to leave comments.
Login now