Feature #1757 » notify_watcher_when_add_or_delete_in_issue.patch
| app/controllers/watchers_controller.rb | ||
|---|---|---|
| 49 | 49 | Watcher.create(:watchable => watchable, :user => user) | 
| 50 | 50 | end | 
| 51 | 51 | end | 
| 52 |  | |
| 53 | # send e-mail notify for user when he added as watcher in issue | |
| 54 | current_user_add_watcher = User.current | |
| 55 | @watchables.each do |issue| | |
| 56 | Mailer.deliver_issue_watcher_add(issue, current_user_add_watcher, users) | |
| 57 | end | |
| 58 | ||
| 52 | 59 | respond_to do |format| | 
| 53 | 60 | format.html do | 
| 54 | 61 | redirect_to_referer_or do | 
| ... | ... | |
| 71 | 81 | end | 
| 72 | 82 | |
| 73 | 83 | def destroy | 
| 74 | user = Principal.find(params[:user_id]) | |
| 84 |     user = Principal.find(params[:user_id])    # User who is being removed from the watchers | |
| 75 | 85 | @watchables.each do |watchable| | 
| 76 | 86 | watchable.set_watcher(user, false) | 
| 77 | 87 | end | 
| 88 |  | |
| 89 | # send e-mail notify for user when he deleted as watcher in issue | |
| 90 | current_user_delete_watcher = User.current | |
| 91 | if params["object_type"] == "issue" | |
| 92 | issue = Issue.find(params['object_id']) | |
| 93 | Mailer.deliver_issue_watcher_delete(issue, user, current_user_delete_watcher) | |
| 94 | end | |
| 95 | ||
| 78 | 96 | respond_to do |format| | 
| 79 | 97 | format.html do | 
| 80 | 98 | redirect_to_referer_or do | 
| app/models/mailer.rb | ||
|---|---|---|
| 138 | 138 | end | 
| 139 | 139 | end | 
| 140 | # Builds a mail for notifying user about a new watcher | |
| 141 | def issue_watcher_add(user, issue, current_user_add_watcher) | |
| 142 | @current_user_add_watcher = current_user_add_watcher | |
| 143 | @issue = issue | |
| 144 | @user = user | |
| 145 | @author = issue.author | |
| 146 | ||
| 147 | @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue) | |
| 148 | ||
| 149 | @table = Text::Table.new | |
| 150 | @mail_signature = mail_signature_for(user, issue) | |
| 151 |  | |
| 152 |     subject = "[##{issue.id} - #{issue.tracker.name}]" | |
| 153 |     subject += " (#{l(:field_watcher)})" | |
| 154 |     subject += " #{issue.subject}" | |
| 155 |     subject += "   [#{issue.project.name}]" | |
| 156 |  | |
| 157 | mail :to => user, | |
| 158 | :subject => subject | |
| 159 | end | |
| 160 | ||
| 161 | # Notifies users about a new watchers. | |
| 162 | # Example: | |
| 163 | # Mailer.deliver_issue_watcher_add(issue, current_user_add_watcher, users) | |
| 164 | ||
| 165 | # Notifies users when they were ADDED as an watcher to issue | |
| 166 | def self.deliver_issue_watcher_add(issue, current_user_add_watcher, users) | |
| 167 | # if 'issue_updated' in Admin -> Settings -> tab Notifications in Redmine is checkboxed | |
| 168 |     if Setting.notified_events.include?('issue_updated') | |
| 169 | notified = users | |
| 170 | # if 'notified' contain <Groups> then divided into separate users | |
| 171 |       notified = notified.map {|n| n.is_a?(Group) ? n.users : n}.flatten | |
| 172 | notified.uniq! | |
| 173 | users = notified | |
| 174 |  | |
| 175 | users.each do |user| | |
| 176 | issue_watcher_add(user, issue, current_user_add_watcher).deliver_later | |
| 177 | end | |
| 178 | end | |
| 179 | end | |
| 180 | ||
| 181 | # Builds a mail for notifying user about a DELETE watcher | |
| 182 | def issue_watcher_delete(user, issue, current_user_delete_watcher) | |
| 183 | @current_user_delete_watcher = current_user_delete_watcher | |
| 184 | @issue = issue | |
| 185 | @user = user | |
| 186 | @author = issue.author | |
| 187 | ||
| 188 | @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue) | |
| 189 | ||
| 190 | @table = Text::Table.new | |
| 191 | @mail_signature = mail_signature_for(user, issue) | |
| 192 |  | |
| 193 |     subject = "[##{issue.id} - #{issue.tracker.name}]" | |
| 194 |     subject += " (#{l(:field_watcher)})" | |
| 195 |     subject += " #{issue.subject}" | |
| 196 |     subject += "   [#{issue.project.name}]" | |
| 197 |  | |
| 198 | mail :to => user, | |
| 199 | :subject => subject | |
| 200 | end | |
| 201 | ||
| 202 | # Notifies users about a deleting watchers. | |
| 203 | # Example: | |
| 204 | # Mailer.deliver_issue_watcher_delete(issue, user, current_user_delete_watcher) | |
| 205 | ||
| 206 | # Notifies users when they were DELETED as an watcher to issue | |
| 207 | def self.deliver_issue_watcher_delete(issue, user, current_user_delete_watcher) | |
| 208 | # if 'issue_updated' in Admin -> Settings -> tab Notifications in Redmine is checkboxed | |
| 209 |     if Setting.notified_events.include?('issue_updated') | |
| 210 | notified = [user] | |
| 211 | # if 'notified' contain <Groups> then divided into separate users | |
| 212 |       notified = notified.map {|n| n.is_a?(Group) ? n.users : n}.flatten | |
| 213 | notified.uniq! | |
| 214 | users = notified | |
| 215 |  | |
| 216 | users.each do |user| | |
| 217 | issue_watcher_delete(user, issue, current_user_delete_watcher).deliver_later | |
| 218 | end | |
| 219 | end | |
| 220 | end | |
| 221 | ||
| 222 | ||
| 223 | ||
| 140 | 224 | # Builds a mail to user about a new document. | 
| 141 | 225 | def document_added(user, document, author) | 
| 142 | 226 | redmine_headers 'Project' => document.project.identifier | 
| app/views/mailer/issue_watcher_add.html.erb | ||
|---|---|---|
| 1 | <p>You have been added to the watchers in issue. Added <%= @current_user_add_watcher %>.</p> | |
| 2 | <hr> | |
| 3 | ||
| 4 | <%= l(:text_issue_added, :id => link_to("##{@issue.id}", @issue_url), :author => h(@issue.author)).html_safe %> | |
| 5 | <hr> | |
| 6 | <%= render :partial => 'issue', :formats => [:html], :locals => { :issue => @issue, :user => @user, :issue_url => @issue_url } %> | |
| app/views/mailer/issue_watcher_add.text.erb | ||
|---|---|---|
| 1 | You have been added to the watchers in issue. Added <%= @current_user_add_watcher %>. | |
| 2 | ------------ | |
| 3 | ||
| 4 | <%= l(:text_issue_added, :id => "##{@issue.id}", :author => @issue.author) %> | |
| 5 | ||
| 6 | ---------------------------------------- | |
| 7 | <%= render :partial => 'issue', :formats => [:text], :locals => { :issue => @issue, :user => @user, :issue_url => @issue_url } %> | |
| app/views/mailer/issue_watcher_delete.html.erb | ||
|---|---|---|
| 1 | <p>You have been removed from the watchers in issue. Removed <%= @current_user_delete_watcher %>.</p> | |
| 2 | <hr> | |
| 3 | ||
| 4 | <%= l(:text_issue_added, :id => link_to("##{@issue.id}", @issue_url), :author => h(@issue.author)).html_safe %> | |
| 5 | <hr> | |
| 6 | <%= render :partial => 'issue', :formats => [:html], :locals => { :issue => @issue, :user => @user, :issue_url => @issue_url } %> | |
| app/views/mailer/issue_watcher_delete.text.erb | ||
|---|---|---|
| 1 | You have been removed from the watchers in issue. Removed <%= @current_user_delete_watcher %>. | |
| 2 | ------------ | |
| 3 | ||
| 4 | <%= l(:text_issue_added, :id => "##{@issue.id}", :author => @issue.author) %> | |
| 5 | ||
| 6 | ---------------------------------------- | |
| 7 | <%= render :partial => 'issue', :formats => [:text], :locals => { :issue => @issue, :user => @user, :issue_url => @issue_url } %> | |
| 0 | - | |
- « Previous
- 1
- 2
- Next »