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
27 28 29 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 27 def self.included(base) base.extend ClassMethods end |
Instance Method Details
#add_watcher(user) ⇒ Object
Adds user as a watcher
41 42 43 44 45 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 41 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
32 33 34 35 36 37 38 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 32 def addable_watcher_users users = self.project.users.sort - self.watcher_users if respond_to?(:visible?) users.reject! {|user| !visible?(user)} end users end |
#notified_watchers ⇒ Object
73 74 75 76 77 78 79 80 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 73 def notified_watchers notified = watcher_users.active.to_a 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
48 49 50 51 52 53 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 48 def remove_watcher(user) return nil unless user && user.is_a?(User) # 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
56 57 58 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 56 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
69 70 71 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 69 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
83 84 85 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 83 def watcher_recipients notified_watchers.collect(&:mail) end |
#watcher_user_ids=(user_ids) ⇒ Object
Overrides watcher_user_ids= to make user_ids uniq
61 62 63 64 65 66 |
# File 'lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb', line 61 def watcher_user_ids=(user_ids) if user_ids.is_a?(Array) user_ids = user_ids.uniq end super user_ids end |