@@ -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