Issue global custom fields should be available in filters only for their trackers
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 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
Updated by Jean-Philippe Lang about 13 years ago
- Priority changed from Normal to Low
Updated by Ryan Bigg about 13 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
Updated by Vitaly Klimov about 13 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.