Mercurial > hg > soundsoftware-site
diff app/models/.svn/text-base/query.rb.svn-base @ 119:8661b858af72
* Update to Redmine trunk rev 4705
author | Chris Cannam |
---|---|
date | Thu, 13 Jan 2011 14:12:06 +0000 |
parents | 94944d00e43c |
children | 051f544170fe |
line wrap: on
line diff
--- a/app/models/.svn/text-base/query.rb.svn-base Fri Nov 19 14:05:24 2010 +0000 +++ b/app/models/.svn/text-base/query.rb.svn-base Thu Jan 13 14:12:06 2011 +0000 @@ -187,10 +187,18 @@ if project user_values += project.users.sort.collect{|s| [s.name, s.id.to_s] } else - project_ids = Project.all(:conditions => Project.visible_by(User.current)).collect(&:id) - if project_ids.any? - # members of the user's projects - user_values += User.active.find(:all, :conditions => ["#{User.table_name}.id IN (SELECT DISTINCT user_id FROM members WHERE project_id IN (?))", project_ids]).sort.collect{|s| [s.name, s.id.to_s] } + all_projects = Project.visible.all + if all_projects.any? + # members of visible projects + user_values += User.active.find(:all, :conditions => ["#{User.table_name}.id IN (SELECT DISTINCT user_id FROM members WHERE project_id IN (?))", all_projects.collect(&:id)]).sort.collect{|s| [s.name, s.id.to_s] } + + # project filter + project_values = [] + Project.project_tree(all_projects) do |p, level| + prefix = (level > 0 ? ('--' * level + ' ') : '') + project_values << ["#{prefix}#{p.name}", p.id.to_s] + end + @available_filters["project_id"] = { :type => :list, :order => 1, :values => project_values} unless project_values.empty? end end @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values } unless user_values.empty? @@ -225,12 +233,6 @@ @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => system_shared_versions.sort.collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s] } } end add_custom_fields_filters(IssueCustomField.find(:all, :conditions => {:is_filter => true, :is_for_all => true})) - # project filter - project_values = Project.all(:conditions => Project.visible_by(User.current), :order => 'lft').map do |p| - pre = (p.level > 0 ? ('--' * p.level + ' ') : '') - ["#{pre}#{p.name}",p.id.to_s] - end - @available_filters["project_id"] = { :type => :list, :order => 1, :values => project_values} end @available_filters end @@ -376,15 +378,15 @@ # Returns true if the query is a grouped query def grouped? - !group_by.blank? + !group_by_column.nil? end def group_by_column - groupable_columns.detect {|c| c.name.to_s == group_by} + groupable_columns.detect {|c| c.groupable && c.name.to_s == group_by} end def group_by_statement - group_by_column.groupable + group_by_column.try(:groupable) end def project_statement