Patch #6864 ยป changeset-mail-notification.patch
| app/models/mailer.rb (working copy) | ||
|---|---|---|
| 271 | 271 |
render_multipart('test', body)
|
| 272 | 272 |
end |
| 273 | 273 | |
| 274 |
# Builds a tmail object used to email users belonging to the changeset's project. |
|
| 275 |
# |
|
| 276 |
# Example: |
|
| 277 |
# changeset(change) => tmail object |
|
| 278 |
# Mailer.deliver_changeset(change) => sends an email to the changeset's project recipients |
|
| 279 |
def changeset(change) |
|
| 280 |
redmine_headers 'Project' => change.project.identifier |
|
| 281 |
recipients change.recipients |
|
| 282 |
subject "[#{change.project.name}] #{change.title}"
|
|
| 283 |
body :change => change, |
|
| 284 |
:change_url => url_for(:controller => 'repositories', :action => 'revision', :id => change.repository.project, :rev => change.revision) |
|
| 285 |
render_multipart('changeset', body)
|
|
| 286 |
end |
|
| 287 | ||
| 274 | 288 |
# Overrides default deliver! method to prevent from sending an email |
| 275 | 289 |
# with no recipient, cc or bcc |
| 276 | 290 |
def deliver!(mail = @mail) |
| app/models/changeset.rb (working copy) | ||
|---|---|---|
| 152 | 152 |
to_utf8(str.to_s.strip) |
| 153 | 153 |
end |
| 154 | 154 | |
| 155 |
# needed by Mailer |
|
| 156 |
def visible?(user=nil) |
|
| 157 |
(user || User.current).allowed_to?(:view_changesets, self.project) |
|
| 158 |
end |
|
| 159 | ||
| 160 |
def title |
|
| 161 |
"#{l(:label_revision)} #{self.revision}" + (self.short_comments.blank? ? '' : (': ' + self.short_comments))
|
|
| 162 |
end |
|
| 163 |
|
|
| 164 |
def datetime |
|
| 165 |
self[:committed_on] |
|
| 166 |
end |
|
| 167 |
|
|
| 168 |
def path |
|
| 169 |
self[:from_path] |
|
| 170 |
end |
|
| 171 |
|
|
| 172 |
def diff |
|
| 173 |
@path = self.path |
|
| 174 |
@rev = self[:from_revision] |
|
| 175 |
@rev_to = self.revision |
|
| 176 |
@diff = repository.diff(@path, @rev_to, @rev) |
|
| 177 |
if @diff |
|
| 178 |
return "#{@diff.join}"
|
|
| 179 |
end |
|
| 180 |
|
|
| 181 |
end |
|
| 182 |
|
|
| 183 |
def recipients |
|
| 184 |
notified = project.notified_users |
|
| 185 |
notified << author if author && author.active? && author.notify_about?(self) |
|
| 186 |
notified.uniq! |
|
| 187 |
notified.reject! {|user| !visible?(user)}
|
|
| 188 |
notified.collect(&:mail) |
|
| 189 |
end |
|
| 190 | ||
| 155 | 191 |
# Creates a new Change from it's common parameters |
| 156 | 192 |
def create_change(change) |
| 157 | 193 |
Change.create(:changeset => self, |
| ... | ... | |
| 159 | 195 |
:path => change[:path], |
| 160 | 196 |
:from_path => change[:from_path], |
| 161 | 197 |
:from_revision => change[:from_revision]) |
| 198 |
Mailer.deliver_changeset(self) |
|
| 162 | 199 |
end |
| 163 | 200 |
|
| 164 | 201 |
private |