From a326bcb0a11b5a50b09b44e1730817fc0283d7e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 8 Oct 2018 15:52:46 +0200 Subject: [PATCH] Update admin notifications translatable fields The same way we did for banners. We needed to add new translation keys so the labels are displayed in the correct language. I've kept the original `title` and `body` attributes so they can be used in other places. While backporting, we also added the original translations because they hadn't been backported yet. --- app/controllers/admin/admin_notifications_controller.rb | 3 +-- app/models/admin_notification.rb | 8 ++++++-- app/views/admin/admin_notifications/_form.html.erb | 8 ++++---- config/locales/en/activerecord.yml | 8 ++++++++ config/locales/es/activerecord.yml | 8 ++++++++ spec/features/admin/admin_notifications_spec.rb | 2 +- spec/support/common_actions/notifications.rb | 4 ++-- 7 files changed, 30 insertions(+), 11 deletions(-) diff --git a/app/controllers/admin/admin_notifications_controller.rb b/app/controllers/admin/admin_notifications_controller.rb index 33e99f9ed..430e51f53 100644 --- a/app/controllers/admin/admin_notifications_controller.rb +++ b/app/controllers/admin/admin_notifications_controller.rb @@ -63,8 +63,7 @@ class Admin::AdminNotificationsController < Admin::BaseController private def admin_notification_params - attributes = [:title, :body, :link, :segment_recipient, - *translation_params(AdminNotification)] + attributes = [:link, :segment_recipient, translation_params(AdminNotification)] params.require(:admin_notification).permit(attributes) end diff --git a/app/models/admin_notification.rb b/app/models/admin_notification.rb index 4291206bc..e53150ace 100644 --- a/app/models/admin_notification.rb +++ b/app/models/admin_notification.rb @@ -4,9 +4,13 @@ class AdminNotification < ActiveRecord::Base translates :title, touch: true translates :body, touch: true globalize_accessors + accepts_nested_attributes_for :translations, allow_destroy: true + + translation_class.instance_eval do + validates :title, presence: true + validates :body, presence: true + end - validates :title, presence: true - validates :body, presence: true validates :segment_recipient, presence: true validate :validate_segment_recipient diff --git a/app/views/admin/admin_notifications/_form.html.erb b/app/views/admin/admin_notifications/_form.html.erb index ba9a77a79..081777ccb 100644 --- a/app/views/admin/admin_notifications/_form.html.erb +++ b/app/views/admin/admin_notifications/_form.html.erb @@ -5,12 +5,12 @@ <%= f.select :segment_recipient, options_for_select(user_segments_options, @admin_notification[:segment_recipient]) %> - - <%= f.translatable_text_field :title %> - <%= f.text_field :link %> - <%= f.translatable_text_area :body %> + <%= f.translatable_fields do |translations_form| %> + <%= translations_form.text_field :title %> + <%= translations_form.text_area :body %> + <% end %>
<%= f.submit t("admin.admin_notifications.#{admin_submit_action(@admin_notification)}.submit_button"), diff --git a/config/locales/en/activerecord.yml b/config/locales/en/activerecord.yml index 84dee7a77..d79b0a070 100644 --- a/config/locales/en/activerecord.yml +++ b/config/locales/en/activerecord.yml @@ -255,6 +255,14 @@ en: subject: Subject from: From body: Email content + admin_notification: + segment_recipient: Recipients + title: Title + link: Link + body: Text + admin_notification/translation: + title: Title + body: Text widget/card: label: Label (optional) title: Title diff --git a/config/locales/es/activerecord.yml b/config/locales/es/activerecord.yml index b450e735d..9d74308e4 100644 --- a/config/locales/es/activerecord.yml +++ b/config/locales/es/activerecord.yml @@ -255,6 +255,14 @@ es: subject: Asunto from: Enviado por body: Contenido del email + admin_notification: + segment_recipient: Destinatarios + title: Título + link: Enlace + body: Texto + admin_notification/translation: + title: Título + body: Texto widget/card: label: Etiqueta (opcional) title: Título diff --git a/spec/features/admin/admin_notifications_spec.rb b/spec/features/admin/admin_notifications_spec.rb index d72b8529f..a37790b63 100644 --- a/spec/features/admin/admin_notifications_spec.rb +++ b/spec/features/admin/admin_notifications_spec.rb @@ -185,7 +185,7 @@ feature "Admin Notifications" do notification = create(:admin_notification) visit edit_admin_admin_notification_path(notification) - fill_in :admin_notification_title_en, with: '' + fill_in "Title", with: "" click_button "Update notification" expect(page).to have_content error_message diff --git a/spec/support/common_actions/notifications.rb b/spec/support/common_actions/notifications.rb index 8b7615b0a..4730ae42f 100644 --- a/spec/support/common_actions/notifications.rb +++ b/spec/support/common_actions/notifications.rb @@ -43,8 +43,8 @@ module Notifications def fill_in_admin_notification_form(options = {}) select (options[:segment_recipient] || 'All users'), from: :admin_notification_segment_recipient - fill_in :admin_notification_title_en, with: (options[:title] || 'This is the notification title') - fill_in :admin_notification_body_en, with: (options[:body] || 'This is the notification body') + fill_in 'Title', with: (options[:title] || 'This is the notification title') + fill_in 'Text', with: (options[:body] || 'This is the notification body') fill_in :admin_notification_link, with: (options[:link] || 'https://www.decide.madrid.es/vota') end end