Merged r16467 (#25501).

git-svn-id: http://svn.redmine.org/redmine/branches/3.3-stable@16505 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2017-04-06 17:11:49 +00:00
parent 47f8339e47
commit 50fc36ec44
4 changed files with 27 additions and 13 deletions

View File

@@ -236,7 +236,6 @@ class IssueQuery < Query
end
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|
@@ -255,10 +254,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}

View File

@@ -324,6 +324,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
@@ -572,6 +573,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

View File

@@ -340,6 +340,15 @@ class Query < ActiveRecord::Base
@all_projects_values = values
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

View File

@@ -140,12 +140,4 @@ class TimeEntryQuery < Query
end
self
end
def issue_custom_fields
if project
project.all_issue_custom_fields
else
IssueCustomField.where(:is_for_all => true)
end
end
end