@@ -240,6 +240,9 class Query < ActiveRecord::Base | |||
|
240 | 240 | |
|
241 | 241 | # project filter |
|
242 | 242 | project_values = [] |
|
243 | if User.current.logged? && User.current.memberships.any? | |
|
244 | project_values << ["<< #{l(:label_my_projects).downcase} >>", "mine"] | |
|
245 | end | |
|
243 | 246 | Project.project_tree(all_projects) do |p, level| |
|
244 | 247 | prefix = (level > 0 ? ('--' * level + ' ') : '') |
|
245 | 248 | project_values << ["#{prefix}#{p.name}", p.id.to_s] |
@@ -522,6 +525,12 class Query < ActiveRecord::Base | |||
|
522 | 525 | end |
|
523 | 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 | 534 | if field =~ /^cf_(\d+)$/ |
|
526 | 535 | # custom field |
|
527 | 536 | filters_clauses << sql_for_custom_field(field, operator, v, $1) |
@@ -413,6 +413,19 class QueryTest < ActiveSupport::TestCase | |||
|
413 | 413 | assert !result.include?(i3) |
|
414 | 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 | 429 | def test_filter_watched_issues |
|
417 | 430 | User.current = User.find(1) |
|
418 | 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