Mercurial > hg > soundsoftware-site
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? |