Several notifications are about a message having been sent from one user to another via OSM. I've moved the code for the HTML table that holds the actual user message, with the avatar and the body text, to its own partial template, so that it can be reused. I've updated a second notifier message to the new template, diary_comment_notification.
:return_path => EMAIL_RETURN_PATH,
:auto_submitted => "auto-generated"
helper :application
+ before_action :set_shared_template_vars
def signup_confirm(user, token)
with_recipient_locale user do
:action => "new",
:display_name => comment.user.display_name,
:title => "Re: #{comment.diary_entry.title}")
+ @user_message_author = @from_user
+
+ attach_user_avatar(comment.user)
mail :from => from_address(comment.user.display_name, "c", comment.id, comment.digest, recipient.id),
:to => recipient.email,
def changeset_comment_notification(comment, recipient)
with_recipient_locale recipient do
- @root_url = root_url(:host => SERVER_URL)
@changeset_url = changeset_url(comment.changeset, :host => SERVER_URL)
@comment = comment.body
@owner = recipient == comment.changeset.user
@changeset_comment = comment.changeset.tags["comment"].presence
@time = comment.created_at
@changeset_author = comment.changeset.user.display_name
+ @user_message_author = @commenter
subject = if @owner
I18n.t("notifier.changeset_comment_notification.commented.subject_own", :commenter => @commenter)
I18n.t("notifier.changeset_comment_notification.commented.subject_other", :commenter => @commenter)
end
- attachments.inline["logo.png"] = File.read("#{Rails.root}/app/assets/images/osm_logo_30.png")
- attachments.inline["avatar.png"] = File.read(user_avatar_file_path(comment.author))
+ attach_project_logo
+ attach_user_avatar(comment.author)
mail :to => recipient.email, :subject => subject
end
private
+ def set_shared_template_vars
+ @root_url = root_url(:host => SERVER_URL)
+ attach_project_logo
+ end
+
+ def attach_project_logo
+ attachments.inline["logo.png"] = File.read("#{Rails.root}/app/assets/images/osm_logo_30.png")
+ end
+
+ def attach_user_avatar(user)
+ attachments.inline["avatar.png"] = File.read(user_avatar_file_path(user))
+ end
+
def user_avatar_file_path(user)
image = user.image
if image.file?
--- /dev/null
+<table style="font-size: 15px; font-style: italic; margin: 15px; background-color: #eee; width: 520px">
+ <tr>
+ <td style="width: 50px; vertical-align: top; padding: 15px">
+ <%= link_to(
+ image_tag(
+ attachments["avatar.png"].url,
+ alt: @user_message_author,
+ title: @user_message_author
+ ),
+ user_url(@user_message_author, :host => SERVER_URL),
+ :target => "_blank"
+ ) %>
+ </td>
+ <td style="text-align: left; vertical-align: top; padding-right: 10px">
+ <%= captured %>
+ </td>
+ </tr>
+</table>
<%= t "notifier.changeset_comment_notification.commented.partial_changeset_without_comment" %>
<% end %>
</p>
- <table style="font-size: 15px; font-style: italic; margin: 15px; background-color: #eee; width: 520px">
- <tr>
- <td style="width: 50px; vertical-align: top; padding: 15px">
- <a href="<%= @commenter_url %>" target="_blank"><%= image_tag attachments["avatar.png"].url, alt: @commenter %></a>
- </td>
- <td style="text-align: left; vertical-align: top; padding-right: 10px">
- <%= @comment.to_html %>
- </td>
- </tr>
- </table>
+
+ <%= render "notifier/user_message_table", :captured => capture { %>
+ <%= @comment.to_html %>
+ <% } %>
+
<p>
<%= raw t 'notifier.changeset_comment_notification.details', :url => content_tag("nobr", link_to(@changeset_url, @changeset_url)) %>
</p>
-<p><%= t'notifier.diary_comment_notification.hi', :to_user => @to_user %></p>
+<% content_for :body do %>
+ <p style="margin: 0">
+ <%= t'notifier.diary_comment_notification.hi', :to_user => @to_user %>
+ </p>
+ <p>
+ <%= raw t'notifier.diary_comment_notification.header', :from_user => link_to_user(@from_user), :subject => content_tag("em", @title) %>
+ </p>
-<p><%= raw t'notifier.diary_comment_notification.header', :from_user => link_to(@from_user, :host => SERVER_URL, :controller => :user, :action => :view, :display_name => @from_user), :subject => @title %></p>
+ <%= render "notifier/user_message_table", :captured => capture { %>
+ <%= @text.to_html %>
+ <% } %>
+<% end %>
-==
-<%= @text.to_html %>
-==
-
-<p><%= raw t'notifier.diary_comment_notification.footer', :readurl => link_to(@readurl, @readurl), :commenturl => link_to(@commenturl, @commenturl), :replyurl => link_to(@replyurl, @replyurl) %></p>
+<% content_for :footer do %>
+ <p><%= raw t'notifier.diary_comment_notification.footer',
+ :readurl => link_to(@readurl, @readurl) + tag(:br),
+ :commenturl => link_to(@commenturl, @commenturl) + tag(:br),
+ :replyurl => link_to(@replyurl, @replyurl)
+ %></p>
+<% end %>