Moved message table HTMl to a partial template

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.
This commit is contained in:
Herve Saint-Amand 2017-01-08 22:09:10 +00:00
parent 479a4bd0d7
commit 417176f868
4 changed files with 61 additions and 20 deletions

View file

@ -3,6 +3,7 @@ class Notifier < ActionMailer::Base
: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
@ -106,6 +107,9 @@ class Notifier < ActionMailer::Base
: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,
@ -154,7 +158,6 @@ class Notifier < ActionMailer::Base
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
@ -162,6 +165,7 @@ class Notifier < ActionMailer::Base
@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)
@ -169,8 +173,8 @@ class Notifier < ActionMailer::Base
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
@ -178,6 +182,19 @@ class Notifier < ActionMailer::Base
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?

View file

@ -0,0 +1,18 @@
<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>

View file

@ -11,16 +11,11 @@
<%= 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>

View file

@ -1,9 +1,20 @@
<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 %>