comparison 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
comparison
equal deleted inserted replaced
39:150ceac17a8d 119:8661b858af72
185 user_values = [] 185 user_values = []
186 user_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged? 186 user_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged?
187 if project 187 if project
188 user_values += project.users.sort.collect{|s| [s.name, s.id.to_s] } 188 user_values += project.users.sort.collect{|s| [s.name, s.id.to_s] }
189 else 189 else
190 project_ids = Project.all(:conditions => Project.visible_by(User.current)).collect(&:id) 190 all_projects = Project.visible.all
191 if project_ids.any? 191 if all_projects.any?
192 # members of the user's projects 192 # members of visible projects
193 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] } 193 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] }
194
195 # project filter
196 project_values = []
197 Project.project_tree(all_projects) do |p, level|
198 prefix = (level > 0 ? ('--' * level + ' ') : '')
199 project_values << ["#{prefix}#{p.name}", p.id.to_s]
200 end
201 @available_filters["project_id"] = { :type => :list, :order => 1, :values => project_values} unless project_values.empty?
194 end 202 end
195 end 203 end
196 @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values } unless user_values.empty? 204 @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values } unless user_values.empty?
197 @available_filters["author_id"] = { :type => :list, :order => 5, :values => user_values } unless user_values.empty? 205 @available_filters["author_id"] = { :type => :list, :order => 5, :values => user_values } unless user_values.empty?
198 206
223 system_shared_versions = Version.visible.find_all_by_sharing('system') 231 system_shared_versions = Version.visible.find_all_by_sharing('system')
224 unless system_shared_versions.empty? 232 unless system_shared_versions.empty?
225 @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] } } 233 @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] } }
226 end 234 end
227 add_custom_fields_filters(IssueCustomField.find(:all, :conditions => {:is_filter => true, :is_for_all => true})) 235 add_custom_fields_filters(IssueCustomField.find(:all, :conditions => {:is_filter => true, :is_for_all => true}))
228 # project filter
229 project_values = Project.all(:conditions => Project.visible_by(User.current), :order => 'lft').map do |p|
230 pre = (p.level > 0 ? ('--' * p.level + ' ') : '')
231 ["#{pre}#{p.name}",p.id.to_s]
232 end
233 @available_filters["project_id"] = { :type => :list, :order => 1, :values => project_values}
234 end 236 end
235 @available_filters 237 @available_filters
236 end 238 end
237 239
238 def add_filter(field, operator, values) 240 def add_filter(field, operator, values)
374 end 376 end
375 end 377 end
376 378
377 # Returns true if the query is a grouped query 379 # Returns true if the query is a grouped query
378 def grouped? 380 def grouped?
379 !group_by.blank? 381 !group_by_column.nil?
380 end 382 end
381 383
382 def group_by_column 384 def group_by_column
383 groupable_columns.detect {|c| c.name.to_s == group_by} 385 groupable_columns.detect {|c| c.groupable && c.name.to_s == group_by}
384 end 386 end
385 387
386 def group_by_statement 388 def group_by_statement
387 group_by_column.groupable 389 group_by_column.try(:groupable)
388 end 390 end
389 391
390 def project_statement 392 def project_statement
391 project_clauses = [] 393 project_clauses = []
392 if project && !@project.descendants.active.empty? 394 if project && !@project.descendants.active.empty?