Index: app/models/query.rb =================================================================== --- app/models/query.rb (revision 6120) +++ app/models/query.rb (working copy) @@ -329,22 +329,42 @@ 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 + default_columns else # preserve the column_names order column_names.collect {|name| available_columns.find {|col| col.name == name}}.compact end end + def default_columns + return @default_columns if @default_columns + + project_column = available_columns.find { |col| col.name == :project } unless project + project_column_index = available_columns.index(project_column) unless project + project_column_included = false + + default_columns = [] + Setting.issue_list_default_columns.each do |column_name| + + column = available_columns.find {|col| col.name == column_name.to_sym} + next unless column + + # Adds the project column by default for cross-project lists + if project.nil? && !project_column_included && available_columns.index(column) > project_column_index + default_columns << project_column + project_column_included = true + end + default_columns << column + end + @default_columns = default_columns + end + def column_names=(names) if names 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.map(&:name) names = nil end end