Module: Redmine::Acts::Watchable::InstanceMethods
- Defined in:
- lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#add_watcher(user) ⇒ Object
Adds user as a watcher.
-
#addable_watcher_users ⇒ Object
Returns an array of users that are proposed as watchers.
- #notified_watchers ⇒ Object
-
#remove_watcher(user) ⇒ Object
Removes user from the watchers list.
-
#set_watcher(user, watching = true) ⇒ Object
Adds/removes watcher.
-
#watched_by?(user) ⇒ Boolean
Returns true if object is watched by
user
. -
#watcher_recipients ⇒ Object
Returns an array of watchers’ email addresses.
-
#watcher_user_ids=(user_ids) ⇒ Object
Overrides watcher_user_ids= to make user_ids uniq.
Class Method Details
.included(base) ⇒ Object
28 29 30 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 28 def self.included(base) base.extend ClassMethods end |
Instance Method Details
#add_watcher(user) ⇒ Object
Adds user as a watcher
42 43 44 45 46 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 42 def add_watcher(user) # Rails does not reset the has_many :through association watcher_users.reset self.watchers << Watcher.new(:user => user) end |
#addable_watcher_users ⇒ Object
Returns an array of users that are proposed as watchers
33 34 35 36 37 38 39 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 33 def addable_watcher_users users = self.project.principals.assignable_watchers.sort - self.watcher_users if respond_to?(:visible?) users.reject! {|user| user.is_a?(User) && !visible?(user)} end users end |
#notified_watchers ⇒ Object
74 75 76 77 78 79 80 81 82 83 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 74 def notified_watchers notified = watcher_users.active.to_a notified = notified.map {|n| n.is_a?(Group) ? n.users.active : n}.flatten notified.uniq! notified.reject! {|user| user.mail.blank? || user.mail_notification == 'none'} if respond_to?(:visible?) notified.reject! {|user| !visible?(user)} end notified end |
#remove_watcher(user) ⇒ Object
Removes user from the watchers list
49 50 51 52 53 54 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 49 def remove_watcher(user) return nil unless user && (user.is_a?(User) || user.is_a?(Group)) # Rails does not reset the has_many :through association watcher_users.reset watchers.where(:user_id => user.id).delete_all end |
#set_watcher(user, watching = true) ⇒ Object
Adds/removes watcher
57 58 59 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 57 def set_watcher(user, watching=true) watching ? add_watcher(user) : remove_watcher(user) end |
#watched_by?(user) ⇒ Boolean
Returns true if object is watched by user
70 71 72 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 70 def watched_by?(user) !!(user && self.watcher_user_ids.detect {|uid| uid == user.id }) end |
#watcher_recipients ⇒ Object
Returns an array of watchers’ email addresses
86 87 88 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 86 def watcher_recipients notified_watchers.collect(&:mail) end |
#watcher_user_ids=(user_ids) ⇒ Object
Overrides watcher_user_ids= to make user_ids uniq
62 63 64 65 66 67 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 62 def watcher_user_ids=(user_ids) if user_ids.is_a?(Array) user_ids = user_ids.uniq end super user_ids end |