mirror of
https://github.com/redmine/redmine.git
synced 2026-02-07 23:30:13 +01:00
Query through multiple projects by issue custom field not possible anymore (#25501).
git-svn-id: http://svn.redmine.org/redmine/trunk@16467 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -164,10 +164,7 @@ class IssueQuery < Query
|
||||
:values => lambda { subproject_values }
|
||||
end
|
||||
|
||||
|
||||
issue_custom_fields = project ? project.all_issue_custom_fields : IssueCustomField.where(:is_for_all => true)
|
||||
add_custom_fields_filters(issue_custom_fields)
|
||||
|
||||
add_associations_custom_fields_filters :project, :author, :assigned_to, :fixed_version
|
||||
|
||||
IssueRelation::TYPES.each do |relation_type, options|
|
||||
@@ -186,10 +183,7 @@ class IssueQuery < Query
|
||||
def available_columns
|
||||
return @available_columns if @available_columns
|
||||
@available_columns = self.class.available_columns.dup
|
||||
@available_columns += (project ?
|
||||
project.all_issue_custom_fields :
|
||||
IssueCustomField
|
||||
).visible.collect {|cf| QueryCustomFieldColumn.new(cf) }
|
||||
@available_columns += issue_custom_fields.visible.collect {|cf| QueryCustomFieldColumn.new(cf) }
|
||||
|
||||
if User.current.allowed_to?(:view_time_entries, project, :global => true)
|
||||
index = @available_columns.find_index {|column| column.name == :total_estimated_hours}
|
||||
|
||||
@@ -325,6 +325,7 @@ class Project < ActiveRecord::Base
|
||||
@shared_versions = nil
|
||||
@rolled_up_versions = nil
|
||||
@rolled_up_trackers = nil
|
||||
@rolled_up_custom_fields = nil
|
||||
@all_issue_custom_fields = nil
|
||||
@all_time_entry_custom_fields = nil
|
||||
@to_param = nil
|
||||
@@ -579,6 +580,22 @@ class Project < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
# Returns a scope of all custom fields enabled for issues of the project
|
||||
# and its subprojects
|
||||
def rolled_up_custom_fields
|
||||
if leaf?
|
||||
all_issue_custom_fields
|
||||
else
|
||||
@rolled_up_custom_fields ||= IssueCustomField.
|
||||
sorted.
|
||||
where("is_for_all = ? OR EXISTS (SELECT 1" +
|
||||
" FROM #{table_name_prefix}custom_fields_projects#{table_name_suffix} cfp" +
|
||||
" JOIN #{Project.table_name} p ON p.id = cfp.project_id" +
|
||||
" WHERE cfp.custom_field_id = #{CustomField.table_name}.id" +
|
||||
" AND p.lft >= ? AND p.rgt <= ?)", true, lft, rgt)
|
||||
end
|
||||
end
|
||||
|
||||
def project
|
||||
self
|
||||
end
|
||||
|
||||
@@ -551,6 +551,15 @@ class Query < ActiveRecord::Base
|
||||
Version.sort_by_status(versions).collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s, l("version_status_#{s.status}")] }
|
||||
end
|
||||
|
||||
# Returns a scope of issue custom fields that are available as columns or filters
|
||||
def issue_custom_fields
|
||||
if project
|
||||
project.rolled_up_custom_fields
|
||||
else
|
||||
IssueCustomField.all
|
||||
end
|
||||
end
|
||||
|
||||
# Adds available filters
|
||||
def initialize_available_filters
|
||||
# implemented by sub-classes
|
||||
|
||||
@@ -218,12 +218,4 @@ class TimeEntryQuery < Query
|
||||
joins.compact!
|
||||
joins.any? ? joins.join(' ') : nil
|
||||
end
|
||||
|
||||
def issue_custom_fields
|
||||
if project
|
||||
project.all_issue_custom_fields
|
||||
else
|
||||
IssueCustomField.where(:is_for_all => true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user