From 4e8b281a238d388c7b39560fe2f730fa69271c7e Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Wed, 26 Aug 2015 18:51:29 +0200 Subject: [PATCH 1/5] Adds styles to comment and reply emails --- .../images/logo_email_gobierno_abierto.png | Bin 0 -> 4122 bytes app/views/layouts/mailer.html.erb | 45 ++++++++++++++++-- app/views/mailer/comment.html.erb | 20 ++++++-- app/views/mailer/reply.html.erb | 20 ++++++-- config/locales/devise_views.en.yml | 2 + config/locales/devise_views.es.yml | 2 + config/locales/mailers.en.yml | 10 ++-- config/locales/mailers.es.yml | 10 ++-- 8 files changed, 89 insertions(+), 20 deletions(-) create mode 100644 app/assets/images/logo_email_gobierno_abierto.png diff --git a/app/assets/images/logo_email_gobierno_abierto.png b/app/assets/images/logo_email_gobierno_abierto.png new file mode 100644 index 0000000000000000000000000000000000000000..8fe100fce606c7a388c1dea75be3a31ba0dab54e GIT binary patch literal 4122 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 Na}z6grICBw{{VaPTuuN0 literal 0 HcmV?d00001 diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb index 991cf0ffa..91f31ab18 100644 --- a/app/views/layouts/mailer.html.erb +++ b/app/views/layouts/mailer.html.erb @@ -1,5 +1,42 @@ - - - <%= yield %> - + + + + Gobierno abierto + + + + + + + + + + + <%= yield %> + +
+ + + + +
+ + <%= image_tag('logo_email_gobierno_abierto.png', style: "border: 0; display: block; width: 100%;max-width: 370px") %> + +
+
+ + + + + + + +
+

+ Preguntas frecuentes  tec.gobiernoabierto@madrid.es

+

+ © 2015 Ayuntamiento de Madrid

+
+ diff --git a/app/views/mailer/comment.html.erb b/app/views/mailer/comment.html.erb index eb95c8031..959b8e0a0 100644 --- a/app/views/mailer/comment.html.erb +++ b/app/views/mailer/comment.html.erb @@ -1,6 +1,18 @@ -<%= t('mailers.comment.hi', recipient: @debate.author.name) %> + -
<%= link_to @debate.title, debate_url(@debate) %>
-
<%= t('mailers.comment.new_comment_by', commenter: @comment.author.name) %>
+

+ <%= t("mailers.comment.title") %> +

-
<%= @comment.body %>
+

+ <%= t("mailers.comment.hi") %> <%= @debate.author.name %>, +

+ +

+ <%= t("mailers.comment.new_comment_by_html", commenter: @comment.author.name) %> <%= link_to @debate.title, debate_url(@debate), style: "color: #2895F1; text-decoration:none;" %> +

+ +

+ <%= @comment.body %> +

+ diff --git a/app/views/mailer/reply.html.erb b/app/views/mailer/reply.html.erb index 21cfeba1e..924234f02 100644 --- a/app/views/mailer/reply.html.erb +++ b/app/views/mailer/reply.html.erb @@ -1,6 +1,18 @@ -<%= t('mailers.reply.hi', recipient: @recipient.name) %> + -
<%= link_to @debate.title, debate_url(@debate) %>
-
<%= t('mailers.reply.new_reply_by', commenter: @reply.author.name) %>
+

+ <%= t("mailers.reply.title") %> +

-
<%= @reply.body %>
+

+ <%= t("mailers.reply.hi") %> <%= @recipient.name %>, +

+ +

+ <%= t("mailers.reply.new_reply_by_html", commenter: @reply.author.name) %> <%= link_to @debate.title, debate_url(@debate), style: "color: #2895F1; text-decoration:none;" %> +

+ +

+ <%= @reply.body %> +

+ diff --git a/config/locales/devise_views.en.yml b/config/locales/devise_views.en.yml index f0e1eb33a..9c9fbec5a 100644 --- a/config/locales/devise_views.en.yml +++ b/config/locales/devise_views.en.yml @@ -11,12 +11,14 @@ en: confirm_link: "Confirm my account" reset_password_instructions: hello: "Hello" + title: Change your password text: "Someone has requested a link to change your password. You can do this through the link below." change_link: "Change my password" ignore_text: "If you didn't request this, please ignore this email." info_text: "Your password won't change until you access the link above and create a new one." unlock_instructions: hello: "Hello" + title: Your account has been locked info_text: "Your account has been locked due to an excessive number of unsuccessful sign in attempts." instructions_text: "Click the link below to unlock your account:" unlock_link: "Unlock my account" diff --git a/config/locales/devise_views.es.yml b/config/locales/devise_views.es.yml index 49d304748..5a9fa4e01 100644 --- a/config/locales/devise_views.es.yml +++ b/config/locales/devise_views.es.yml @@ -11,12 +11,14 @@ es: confirm_link: "Confirmar mi cuenta" reset_password_instructions: hello: "Hola" + title: "Cambiar tu contraseña" text: "Se ha solicitado un enlace para cambiar tu contraseña, puedes hacerlo en el siguiente enlace:" change_link: "cambiar mi contraseña" ignore_text: "Si tu no lo has solicitado, puedes ignorar este email" info_text: "Tu contraseña no cambiará hasta que no accedas al enlace y la modifiques." unlock_instructions: hello: "Hola" + title: Tu cuenta ha sido bloqueada info_text: "Tu cuenta ha sido bloqueada debido a un excesivo número de intentos fallidos de alta." instructions_text: "Sigue el siguiente enlace para desbloquear tu cuenta:" unlock_link: "Desbloquear mi cuenta" diff --git a/config/locales/mailers.en.yml b/config/locales/mailers.en.yml index cbc6c5bd6..d0550aca9 100644 --- a/config/locales/mailers.en.yml +++ b/config/locales/mailers.en.yml @@ -1,8 +1,10 @@ en: mailers: comment: - hi: "Hello, %{recipient}" - new_comment_by: "There'is a new comment by %{commenter}" + hi: Hello + title: New comment on your debate + new_comment_by_html: "There'is a new comment by on" reply: - hi: "Hello, %{recipient}" - new_reply_by: "There'is a new reply by %{commenter} to your comment" \ No newline at end of file + hi: Hello + title: New reply on your comment + new_reply_by_html: "There'is a new reply by %{commenter} to your comment on" diff --git a/config/locales/mailers.es.yml b/config/locales/mailers.es.yml index e595967c4..8efa1dc22 100644 --- a/config/locales/mailers.es.yml +++ b/config/locales/mailers.es.yml @@ -1,8 +1,10 @@ es: mailers: comment: - hi: "Hola, %{recipient}" - new_comment_by: "Hay un nuevo comentario de %{commenter}" + hi: Hola + title: Nuevo comentario en tu debate + new_comment_by_html: "Hay un nuevo comentario de %{commenter} en" reply: - hi: "Hola, %{recipient}" - new_reply_by: "Hay una nueva respuesta de %{commenter} a tu comentario" \ No newline at end of file + hi: Hola + title: Nueva respuesta a tu comentario + new_reply_by_html: "Hay una nueva respuesta de %{commenter} a tu comentario en" From 522e40b9ce9b16c65dbf5501ea4c07680d2bcefc Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Wed, 26 Aug 2015 18:51:53 +0200 Subject: [PATCH 2/5] Adds styles to instructions emails --- .../mailer/confirmation_instructions.html.erb | 15 ++++++++-- .../reset_password_instructions.html.erb | 28 +++++++++++++++---- .../mailer/unlock_instructions.html.erb | 23 ++++++++++++--- 3 files changed, 54 insertions(+), 12 deletions(-) diff --git a/app/views/devise/mailer/confirmation_instructions.html.erb b/app/views/devise/mailer/confirmation_instructions.html.erb index 1f504444d..88f784dc4 100644 --- a/app/views/devise/mailer/confirmation_instructions.html.erb +++ b/app/views/devise/mailer/confirmation_instructions.html.erb @@ -1,5 +1,14 @@ -

<%= t("devise_views.mailer.confirmation_instructions.welcome") %> <%= @email %>

+ -

<%= t("devise_views.mailer.confirmation_instructions.text") %>

+

+ <%= t("devise_views.mailer.confirmation_instructions.welcome") %> <%= @email %> +

-

<%= link_to t("devise_views.mailer.confirmation_instructions.confirm_link"), confirmation_url(@resource, confirmation_token: @token) %>

+

+ <%= t("devise_views.mailer.confirmation_instructions.text") %> +

+ +

+ <%= link_to t("devise_views.mailer.confirmation_instructions.confirm_link"), confirmation_url(@resource, confirmation_token: @token), style: "color: #2895F1; text-decoration:none;" %> +

+ diff --git a/app/views/devise/mailer/reset_password_instructions.html.erb b/app/views/devise/mailer/reset_password_instructions.html.erb index 78923ce92..0e7951813 100644 --- a/app/views/devise/mailer/reset_password_instructions.html.erb +++ b/app/views/devise/mailer/reset_password_instructions.html.erb @@ -1,8 +1,26 @@ -

<%= t("devise_views.mailer.reset_password_instructions.hello") %> <%= @resource.email %>

+ -

<%= t("devise_views.mailer.reset_password_instructions.text") %>

+

+ <%= t("devise_views.mailer.reset_password_instructions.title") %> +

-

<%= link_to t("devise_views.mailer.reset_password_instructions.change_link"), edit_password_url(@resource, reset_password_token: @token) %>

+

+ <%= t("devise_views.mailer.reset_password_instructions.hello") %> <%= @resource.email %> +

-

<%= t("devise_views.mailer.reset_password_instructions.ignore_text") %>

-

<%= t("devise_views.mailer.reset_password_instructions.info_text") %>

+

+ <%= t("devise_views.mailer.reset_password_instructions.text") %> +

+ +

+ <%= link_to t("devise_views.mailer.reset_password_instructions.change_link"), edit_password_url(@resource, reset_password_token: @token), style: "color: #2895F1; text-decoration:none;" %> +

+ +

+ <%= t("devise_views.mailer.reset_password_instructions.ignore_text") %> +

+ +

+ <%= t("devise_views.mailer.reset_password_instructions.info_text") %> +

+ diff --git a/app/views/devise/mailer/unlock_instructions.html.erb b/app/views/devise/mailer/unlock_instructions.html.erb index 12f4d2b62..41ddc2f19 100644 --- a/app/views/devise/mailer/unlock_instructions.html.erb +++ b/app/views/devise/mailer/unlock_instructions.html.erb @@ -1,7 +1,22 @@ -

<%= t("devise_views.mailer.unlock_instructions.hello") %> <%= @resource.email %>

+ -

<%= t("devise_views.mailer.unlock_instructions.info_text") %>

+

+ <%= t("devise_views.mailer.unlock_instructions.title") %> +

-

<%= t("devise_views.mailer.unlock_instructions.instructions_text") %>

+

+ <%= t("devise_views.mailer.unlock_instructions.hello") %> <%= @resource.email %> +

-

<%= link_to t("devise_views.mailer.unlock_instructions.unlock_link"), unlock_url(@resource, unlock_token: @token) %>

+

+ <%= t("devise_views.mailer.unlock_instructions.info_text") %> +

+ +

+ <%= t("devise_views.mailer.unlock_instructions.instructions_text") %> +

+ +

+ <%= link_to t("devise_views.mailer.unlock_instructions.unlock_link"), unlock_url(@resource, unlock_token: @token), style: "color: #2895F1; text-decoration:none;" %> +

+ From 86369200ba09b745331fbf1f184df4bfd22f785e Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Wed, 26 Aug 2015 19:42:51 +0200 Subject: [PATCH 3/5] Adds mailer layout to instructions emails --- config/initializers/devise.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index 40f3e50b3..6b1c860a9 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -266,3 +266,7 @@ Devise.setup do |config| # so you need to do it manually. For the users scope, it would be: # config.omniauth_path_prefix = '/my_engine/users/auth' end + +Rails.application.config.to_prepare do + Devise::Mailer.layout "mailer" # email.haml or email.erb +end \ No newline at end of file From 4382a83c30c00a786a9fbaa3842fb74c9fa7958f Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Wed, 26 Aug 2015 19:43:12 +0200 Subject: [PATCH 4/5] Fixes asset host for development --- config/environments/development.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/environments/development.rb b/config/environments/development.rb index acf67286d..38fa75e78 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -16,6 +16,7 @@ Rails.application.configure do # Don't care if the mailer can't send. config.action_mailer.raise_delivery_errors = false config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } + config.action_mailer.asset_host = "http://localhost:3000" # Deliver emails to a development mailbox at /letter_opener config.action_mailer.delivery_method = :letter_opener From 33b501d98e94ff0c110b327d01cb0f723222a3b3 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Wed, 26 Aug 2015 19:43:51 +0200 Subject: [PATCH 5/5] Improves texts for instructions emails --- .../devise/mailer/confirmation_instructions.html.erb | 6 +++++- .../devise/mailer/reset_password_instructions.html.erb | 6 +----- config/locales/devise_views.en.yml | 3 ++- config/locales/devise_views.es.yml | 9 +++++---- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/views/devise/mailer/confirmation_instructions.html.erb b/app/views/devise/mailer/confirmation_instructions.html.erb index 88f784dc4..c81e6fc74 100644 --- a/app/views/devise/mailer/confirmation_instructions.html.erb +++ b/app/views/devise/mailer/confirmation_instructions.html.erb @@ -1,9 +1,13 @@

- <%= t("devise_views.mailer.confirmation_instructions.welcome") %> <%= @email %> + <%= t("devise_views.mailer.confirmation_instructions.title") %>

+

+ <%= t("devise_views.mailer.confirmation_instructions.welcome") %> <%= @email %> +

+

<%= t("devise_views.mailer.confirmation_instructions.text") %>

diff --git a/app/views/devise/mailer/reset_password_instructions.html.erb b/app/views/devise/mailer/reset_password_instructions.html.erb index 0e7951813..a67e77f08 100644 --- a/app/views/devise/mailer/reset_password_instructions.html.erb +++ b/app/views/devise/mailer/reset_password_instructions.html.erb @@ -17,10 +17,6 @@

- <%= t("devise_views.mailer.reset_password_instructions.ignore_text") %> -

- -

- <%= t("devise_views.mailer.reset_password_instructions.info_text") %> + <%= t("devise_views.mailer.reset_password_instructions.ignore_text") %> <%= t("devise_views.mailer.reset_password_instructions.info_text") %>

diff --git a/config/locales/devise_views.en.yml b/config/locales/devise_views.en.yml index 9c9fbec5a..08a303834 100644 --- a/config/locales/devise_views.en.yml +++ b/config/locales/devise_views.en.yml @@ -6,13 +6,14 @@ en: submit: "Resend confirmation instructions" mailer: confirmation_instructions: + title: "Welcome to open government" welcome: "Welcome" text: "You can confirm your account email through the link below:" confirm_link: "Confirm my account" reset_password_instructions: hello: "Hello" title: Change your password - text: "Someone has requested a link to change your password. You can do this through the link below." + text: "Someone has requested to change your password. You can do this through the link below:" change_link: "Change my password" ignore_text: "If you didn't request this, please ignore this email." info_text: "Your password won't change until you access the link above and create a new one." diff --git a/config/locales/devise_views.es.yml b/config/locales/devise_views.es.yml index 5a9fa4e01..6ab6ebbb5 100644 --- a/config/locales/devise_views.es.yml +++ b/config/locales/devise_views.es.yml @@ -6,15 +6,16 @@ es: submit: "Reenviar instrucciones de confirmación" mailer: confirmation_instructions: - welcome: "Bienvenido" + title: "Bienvenido/a a gobierno abierto" + welcome: "Bienvenido/a" text: "Puedes confirmar tu cuenta de correo electrónico en el siguiente enlace:" confirm_link: "Confirmar mi cuenta" reset_password_instructions: hello: "Hola" title: "Cambiar tu contraseña" - text: "Se ha solicitado un enlace para cambiar tu contraseña, puedes hacerlo en el siguiente enlace:" - change_link: "cambiar mi contraseña" - ignore_text: "Si tu no lo has solicitado, puedes ignorar este email" + text: "Se ha solicitado cambiar tu contraseña, puedes hacerlo en el siguiente enlace:" + change_link: "Cambiar mi contraseña" + ignore_text: "Si tu no lo has solicitado, puedes ignorar este email." info_text: "Tu contraseña no cambiará hasta que no accedas al enlace y la modifiques." unlock_instructions: hello: "Hola"