mirror of
https://github.com/redmine/redmine.git
synced 2026-01-21 06:53:08 +01:00
Introduces @valid_watcher?@ check on watchables (@40946).
Patch by Jens Krämer (@jkraemer). git-svn-id: https://svn.redmine.org/redmine/trunk@22916 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -53,7 +53,9 @@ class WatchersController < ApplicationController
|
||||
users = Principal.assignable_watchers.where(:id => user_ids).to_a
|
||||
users.each do |user|
|
||||
@watchables.each do |watchable|
|
||||
Watcher.create(:watchable => watchable, :user => user)
|
||||
if watchable.valid_watcher?(user)
|
||||
Watcher.create(:watchable => watchable, :user => user)
|
||||
end
|
||||
end
|
||||
end
|
||||
respond_to do |format|
|
||||
@@ -161,10 +163,9 @@ class WatchersController < ApplicationController
|
||||
if @watchables && @watchables.size == 1
|
||||
watchable_object = @watchables.first
|
||||
users -= watchable_object.visible_watcher_users
|
||||
|
||||
if watchable_object.respond_to?(:visible?)
|
||||
users.reject! {|user| user.is_a?(User) && !watchable_object.visible?(user)}
|
||||
end
|
||||
end
|
||||
@watchables&.each do |watchable|
|
||||
users.reject!{|user| !watchable.valid_watcher?(user)}
|
||||
end
|
||||
users
|
||||
end
|
||||
|
||||
@@ -70,6 +70,14 @@ module Redmine
|
||||
end
|
||||
end
|
||||
|
||||
# true if user can be added as a watcher
|
||||
def valid_watcher?(user)
|
||||
return true unless respond_to?(:visible?)
|
||||
return true unless user.is_a?(User)
|
||||
|
||||
visible?(user)
|
||||
end
|
||||
|
||||
# Adds user as a watcher
|
||||
def add_watcher(user)
|
||||
if persisted?
|
||||
|
||||
@@ -477,11 +477,11 @@ class WatchersControllerTest < Redmine::ControllerTest
|
||||
|
||||
assert_response :success
|
||||
|
||||
# All users from two projects eCookbook (7) and Private child of eCookbook (9)
|
||||
assert_select 'input', :count => 5
|
||||
# All users from two projects eCookbook (7) and Private child of eCookbook
|
||||
# (9) who can see both issues
|
||||
assert_select 'input', :count => 4
|
||||
assert_select 'input[name=?][value="1"]', 'watcher[user_ids][]'
|
||||
assert_select 'input[name=?][value="2"]', 'watcher[user_ids][]'
|
||||
assert_select 'input[name=?][value="3"]', 'watcher[user_ids][]'
|
||||
assert_select 'input[name=?][value="8"]', 'watcher[user_ids][]'
|
||||
assert_select 'input[name=?][value="10"]', 'watcher[user_ids][]'
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user