Defect #4994

Issue global custom fields should be available in filters only for their trackers

Added by Vitaly Klimov over 11 years ago. Updated over 11 years ago.

Status:NewStart date:2010-03-05
Priority:LowDue date:
Assignee:Jean-Philippe Lang% Done:

0%

Category:Custom fields
Target version:-
Resolution: Affected version:

Description

Although it is possible to select trackers in which custom fields with for all projects flag set present, those fields available as the filters in the query dialog. Also they are included in the Query.available_columns enumeration.

For example, you have custom field named Type which is required for all projects but only for tracker Bugs. Then you have project Details which does not have tracker Bugs, but custom field type available as filter in this project anyway.

In my code i used following workaround:


def column_exists_for_project?(column, project)
  return true unless (column.is_a?(QueryCustomFieldColumn) && project != nil)

  project.trackers.each do |t|
    t.custom_fields.each do |c|
      return true unless c.id != column.custom_field.id
    end
  end

  return false
end

I am using r3285 of Redmine

History

#1 Updated by Jean-Philippe Lang over 11 years ago

  • Priority changed from Normal to Low

#2 Updated by Ryan Bigg over 11 years ago

May I ask here why you haven't used a detect? It would work in a similar fashion:

    return !!project.trackers.detect do |t|
      t.custom_fields.detect do |c|
        c.id == column.custom_field.id
      end
    end

#3 Updated by Vitaly Klimov over 11 years ago

Well, because although i have 20+ years experience in C/C++, i quite a novice in Ruby (bumped into it couple of months ago) so, lack of experience here :) Obviously, your code is more elegant.

Also available in: Atom PDF