diff options
author | Go MAEDA <maeda@farend.jp> | 2018-07-09 06:07:26 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2018-07-09 06:07:26 +0000 |
commit | 5a2f924b767585f4392da68f80d85a386c4ee6c1 (patch) | |
tree | 416eff5fc617b5138b41dbd7d23325b97e6dfd79 | |
parent | 5484198d98b91f287139a91cd2a858d5d75fc45a (diff) | |
download | redmine-5a2f924b767585f4392da68f80d85a386c4ee6c1.tar.gz redmine-5a2f924b767585f4392da68f80d85a386c4ee6c1.zip |
Extend watched_by_me-issue filter to include all project-members instead of only <<me>>-substitution (#8160).
Patch by Mizuki ISHIKAWA.
git-svn-id: http://svn.redmine.org/redmine/trunk@17439 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/issue_query.rb | 2 | ||||
-rw-r--r-- | app/models/query.rb | 6 | ||||
-rw-r--r-- | test/functional/queries_controller_test.rb | 37 |
3 files changed, 44 insertions, 1 deletions
diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb index c042a2ac9..ad5e511af 100644 --- a/app/models/issue_query.rb +++ b/app/models/issue_query.rb @@ -148,7 +148,7 @@ class IssueQuery < Query if User.current.logged? add_available_filter "watcher_id", - :type => :list, :values => [["<< #{l(:label_me)} >>", "me"]] + :type => :list, :values => lambda { watcher_values } end add_available_filter("updated_by", diff --git a/app/models/query.rb b/app/models/query.rb index 9343e1456..f85fd0f65 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -564,6 +564,12 @@ class Query < ActiveRecord::Base statuses.collect{|s| [s.name, s.id.to_s]} end + def watcher_values + watcher_values = [["<< #{l(:label_me)} >>", "me"]] + watcher_values += users.sort_by(&:status).collect{|s| [s.name, s.id.to_s, l("status_#{User::LABEL_BY_STATUS[s.status]}")] } if User.current.allowed_to?(:view_issue_watchers, self.project) + watcher_values + end + # Returns a scope of issue custom fields that are available as columns or filters def issue_custom_fields if project diff --git a/test/functional/queries_controller_test.rb b/test/functional/queries_controller_test.rb index 580fa0d7a..713368265 100644 --- a/test/functional/queries_controller_test.rb +++ b/test/functional/queries_controller_test.rb @@ -695,4 +695,41 @@ class QueriesControllerTest < Redmine::ControllerTest assert_include ["Dave Lopper", "3", "active"], json assert_include ["Dave2 Lopper2", "5", "locked"], json end + + def test_watcher_filter_without_permission_should_show_only_me + # This user does not have view_issue_watchers permission + @request.session[:user_id] = 7 + + get :filter, :params => { + :project_id => 1, + :type => 'IssueQuery', + :name => 'watcher_id' + } + assert_response :success + assert_equal 'application/json', response.content_type + json = ActiveSupport::JSON.decode(response.body) + + assert_equal 1, json.count + assert_equal [["<< me >>", "me"]], json + end + + def test_watcher_filter_with_permission_should_show_members + # This user has view_issue_watchers permission + @request.session[:user_id] = 1 + + get :filter, :params => { + :project_id => 1, + :type => 'IssueQuery', + :name => 'watcher_id' + } + assert_response :success + assert_equal 'application/json', response.content_type + json = ActiveSupport::JSON.decode(response.body) + + assert_equal 6, json.count + # "me" value should not be grouped + assert_include ["<< me >>", "me"], json + assert_include ["Dave Lopper", "3", "active"], json + assert_include ["Dave2 Lopper2", "5", "locked"], json + end end |