@@ -187,10 +187,18 class Query < ActiveRecord::Base | |||||
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 |
|
191 | if all_projects.any? | |
192 |
# members of |
|
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 |
|
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? | |
@@ -225,12 +233,6 class Query < ActiveRecord::Base | |||||
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 |
@@ -382,6 +382,12 class QueryTest < ActiveSupport::TestCase | |||||
382 | assert users[:values].map{|u|u[1]}.include?("3") |
|
382 | assert users[:values].map{|u|u[1]}.include?("3") | |
383 | end |
|
383 | end | |
384 |
|
384 | |||
|
385 | should "include visible projects in cross-project view" do | |||
|
386 | projects = @query.available_filters["project_id"] | |||
|
387 | assert_not_nil projects | |||
|
388 | assert projects[:values].map{|u|u[1]}.include?("1") | |||
|
389 | end | |||
|
390 | ||||
385 | context "'member_of_group' filter" do |
|
391 | context "'member_of_group' filter" do | |
386 | should "be present" do |
|
392 | should "be present" do | |
387 | assert @query.available_filters.keys.include?("member_of_group") |
|
393 | assert @query.available_filters.keys.include?("member_of_group") |
General Comments 0
You need to be logged in to leave comments.
Login now