default_columns.patch

v2 - Etienne Massip, 2011-06-22 17:23

Download (1.86 KB)

View differences:

app/models/query.rb (working copy)
329 329

  
330 330
  def columns
331 331
    if has_default_columns?
332
      available_columns.select do |c|
333
        # Adds the project column by default for cross-project lists
334
        Setting.issue_list_default_columns.include?(c.name.to_s) || (c.name == :project && project.nil?)
335
      end
332
      default_columns
336 333
    else
337 334
      # preserve the column_names order
338 335
      column_names.collect {|name| available_columns.find {|col| col.name == name}}.compact
339 336
    end
340 337
  end
341 338

  
339
  def default_columns
340
    return @default_columns if @default_columns
341

  
342
    project_column = available_columns.find { |col| col.name == :project } unless project
343
    project_column_index = available_columns.index(project_column) unless project
344
    project_column_included = false
345

  
346
    default_columns = []
347
    Setting.issue_list_default_columns.each do |column_name|
348

  
349
      column = available_columns.find {|col| col.name == column_name.to_sym}
350
      next unless column
351

  
352
      # Adds the project column by default for cross-project lists
353
      if project.nil? && !project_column_included && available_columns.index(column) > project_column_index
354
        default_columns << project_column
355
        project_column_included = true
356
      end
357
      default_columns << column
358
    end
359
    @default_columns = default_columns
360
  end
361

  
342 362
  def column_names=(names)
343 363
    if names
344 364
      names = names.select {|n| n.is_a?(Symbol) || !n.blank? }
345 365
      names = names.collect {|n| n.is_a?(Symbol) ? n : n.to_sym }
346 366
      # Set column_names to nil if default columns
347
      if names.map(&:to_s) == Setting.issue_list_default_columns
367
      if names == default_columns.map(&:name)
348 368
        names = nil
349 369
      end
350 370
    end