Makes spent time column available on the issue list (#971).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8073 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
+20
-3
@@ -356,11 +356,23 @@ class Query < ActiveRecord::Base
|
||||
|
||||
def available_columns
|
||||
return @available_columns if @available_columns
|
||||
@available_columns = ::Query.available_columns
|
||||
@available_columns = ::Query.available_columns.dup
|
||||
@available_columns += (project ?
|
||||
project.all_issue_custom_fields :
|
||||
IssueCustomField.find(:all)
|
||||
).collect {|cf| QueryCustomFieldColumn.new(cf) }
|
||||
|
||||
if User.current.allowed_to?(:view_time_entries, project, :global => true)
|
||||
index = @available_columns.index {|column| column.name == :estimated_hours}
|
||||
index = (index ? index + 1 : -1)
|
||||
# insert the column after estimated_hours or at the end
|
||||
@available_columns.insert index, QueryColumn.new(:spent_hours,
|
||||
:sortable => "(SELECT SUM(hours) FROM #{TimeEntry.table_name} WHERE #{TimeEntry.table_name}.issue_id = #{Issue.table_name}.id)",
|
||||
:default_order => 'desc',
|
||||
:caption => :label_spent_time
|
||||
)
|
||||
end
|
||||
@available_columns
|
||||
end
|
||||
|
||||
def self.available_columns=(v)
|
||||
@@ -412,7 +424,7 @@ class Query < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def has_column?(column)
|
||||
column_names && column_names.include?(column.name)
|
||||
column_names && column_names.include?(column.is_a?(QueryColumn) ? column.name : column)
|
||||
end
|
||||
|
||||
def has_default_columns?
|
||||
@@ -561,12 +573,17 @@ class Query < ActiveRecord::Base
|
||||
|
||||
joins = (order_option && order_option.include?('authors')) ? "LEFT OUTER JOIN users authors ON authors.id = #{Issue.table_name}.author_id" : nil
|
||||
|
||||
Issue.visible.scoped(:conditions => options[:conditions]).find :all, :include => ([:status, :project] + (options[:include] || [])).uniq,
|
||||
issues = Issue.visible.scoped(:conditions => options[:conditions]).find :all, :include => ([:status, :project] + (options[:include] || [])).uniq,
|
||||
:conditions => statement,
|
||||
:order => order_option,
|
||||
:joins => joins,
|
||||
:limit => options[:limit],
|
||||
:offset => options[:offset]
|
||||
|
||||
if has_column?(:spent_hours)
|
||||
Issue.load_visible_spent_hours(issues)
|
||||
end
|
||||
issues
|
||||
rescue ::ActiveRecord::StatementInvalid => e
|
||||
raise StatementInvalid.new(e.message)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user