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  |