From 417176f8685ae60b670e609ca4d7e2e7c5c07647 Mon Sep 17 00:00:00 2001
From: Herve Saint-Amand
Date: Sun, 8 Jan 2017 22:09:10 +0000
Subject: [PATCH] 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.
---
app/models/notifier.rb | 23 ++++++++++++++---
.../notifier/_user_message_table.html.erb | 18 +++++++++++++
.../changeset_comment_notification.html.erb | 15 ++++-------
.../diary_comment_notification.html.erb | 25 +++++++++++++------
4 files changed, 61 insertions(+), 20 deletions(-)
create mode 100644 app/views/notifier/_user_message_table.html.erb
diff --git a/app/models/notifier.rb b/app/models/notifier.rb
index 60b682693..ee40a0d6e 100644
--- a/app/models/notifier.rb
+++ b/app/models/notifier.rb
@@ -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?
diff --git a/app/views/notifier/_user_message_table.html.erb b/app/views/notifier/_user_message_table.html.erb
new file mode 100644
index 000000000..0a7300173
--- /dev/null
+++ b/app/views/notifier/_user_message_table.html.erb
@@ -0,0 +1,18 @@
+
+
+
+ <%= 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"
+ ) %>
+ |
+
+ <%= captured %>
+ |
+
+
diff --git a/app/views/notifier/changeset_comment_notification.html.erb b/app/views/notifier/changeset_comment_notification.html.erb
index 344a4e33d..4e271cfb2 100644
--- a/app/views/notifier/changeset_comment_notification.html.erb
+++ b/app/views/notifier/changeset_comment_notification.html.erb
@@ -11,16 +11,11 @@
<%= t "notifier.changeset_comment_notification.commented.partial_changeset_without_comment" %>
<% end %>
-
+
+ <%= render "notifier/user_message_table", :captured => capture { %>
+ <%= @comment.to_html %>
+ <% } %>
+
<%= raw t 'notifier.changeset_comment_notification.details', :url => content_tag("nobr", link_to(@changeset_url, @changeset_url)) %>
diff --git a/app/views/notifier/diary_comment_notification.html.erb b/app/views/notifier/diary_comment_notification.html.erb
index b47900a63..ea9a65591 100644
--- a/app/views/notifier/diary_comment_notification.html.erb
+++ b/app/views/notifier/diary_comment_notification.html.erb
@@ -1,9 +1,20 @@
-<%= t'notifier.diary_comment_notification.hi', :to_user => @to_user %>
+<% content_for :body do %>
+
+ <%= t'notifier.diary_comment_notification.hi', :to_user => @to_user %>
+
+
+ <%= raw t'notifier.diary_comment_notification.header', :from_user => link_to_user(@from_user), :subject => content_tag("em", @title) %>
+
-<%= 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 %>
+ <%= render "notifier/user_message_table", :captured => capture { %>
+ <%= @text.to_html %>
+ <% } %>
+<% end %>
-==
-<%= @text.to_html %>
-==
-
-<%= raw t'notifier.diary_comment_notification.footer', :readurl => link_to(@readurl, @readurl), :commenturl => link_to(@commenturl, @commenturl), :replyurl => link_to(@replyurl, @replyurl) %>
+<% content_for :footer do %>
+ <%= 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)
+ %>
+<% end %>
--
2.39.5