##// END OF EJS Templates
Adds "my projects" filter on the cross-project issue list....
Jean-Philippe Lang -
r8517:919d0a68c39b
parent child
Show More
@@ -240,6 +240,9 class Query < ActiveRecord::Base
240
240
241 # project filter
241 # project filter
242 project_values = []
242 project_values = []
243 if User.current.logged? && User.current.memberships.any?
244 project_values << ["<< #{l(:label_my_projects).downcase} >>", "mine"]
245 end
243 Project.project_tree(all_projects) do |p, level|
246 Project.project_tree(all_projects) do |p, level|
244 prefix = (level > 0 ? ('--' * level + ' ') : '')
247 prefix = (level > 0 ? ('--' * level + ' ') : '')
245 project_values << ["#{prefix}#{p.name}", p.id.to_s]
248 project_values << ["#{prefix}#{p.name}", p.id.to_s]
@@ -522,6 +525,12 class Query < ActiveRecord::Base
522 end
525 end
523 end
526 end
524
527
528 if field == 'project_id'
529 if v.delete('mine')
530 v += User.current.memberships.map(&:project_id).map(&:to_s)
531 end
532 end
533
525 if field =~ /^cf_(\d+)$/
534 if field =~ /^cf_(\d+)$/
526 # custom field
535 # custom field
527 filters_clauses << sql_for_custom_field(field, operator, v, $1)
536 filters_clauses << sql_for_custom_field(field, operator, v, $1)
@@ -413,6 +413,19 class QueryTest < ActiveSupport::TestCase
413 assert !result.include?(i3)
413 assert !result.include?(i3)
414 end
414 end
415
415
416 def test_filter_my_projects
417 User.current = User.find(2)
418 query = Query.new(:name => '_')
419 filter = query.available_filters['project_id']
420 assert_not_nil filter
421 assert_include 'mine', filter[:values].map{|v| v[1]}
422
423 query.filters = { 'project_id' => {:operator => '=', :values => ['mine']}}
424 result = query.issues
425 assert_include "issues.project_id IN ('1','2','5')", query.statement
426 assert_nil result.detect {|issue| !User.current.member_of?(issue.project)}
427 end
428
416 def test_filter_watched_issues
429 def test_filter_watched_issues
417 User.current = User.find(1)
430 User.current = User.find(1)
418 query = Query.new(:name => '_', :filters => { 'watcher_id' => {:operator => '=', :values => ['me']}})
431 query = Query.new(:name => '_', :filters => { 'watcher_id' => {:operator => '=', :values => ['me']}})
General Comments 0
You need to be logged in to leave comments. Login now