Skip to content

Commit

Permalink
Make Admin Notifications translatable
Browse files Browse the repository at this point in the history
  • Loading branch information
mlovic authored and javierm committed Sep 19, 2018
1 parent 5ff85d3 commit f674904
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 7 deletions.
10 changes: 9 additions & 1 deletion app/controllers/admin/admin_notifications_controller.rb
@@ -1,4 +1,5 @@
class Admin::AdminNotificationsController < Admin::BaseController
include Translatable

def index
@admin_notifications = AdminNotification.all
Expand Down Expand Up @@ -62,6 +63,13 @@ def deliver
private

def admin_notification_params
params.require(:admin_notification).permit(:title, :body, :link, :segment_recipient)
attributes = [:title, :body, :link, :segment_recipient,
*translation_params(AdminNotification)]

params.require(:admin_notification).permit(attributes)
end

def resource
AdminNotification.find(params[:id])
end
end
4 changes: 4 additions & 0 deletions app/models/admin_notification.rb
@@ -1,6 +1,10 @@
class AdminNotification < ActiveRecord::Base
include Notifiable

translates :title, touch: :true
translates :body, touch: :true
globalize_accessors

validates :title, presence: true
validates :body, presence: true
validates :segment_recipient, presence: true
Expand Down
11 changes: 8 additions & 3 deletions app/views/admin/admin_notifications/_form.html.erb
@@ -1,11 +1,16 @@
<%= form_for [:admin, @admin_notification] do |f| %>
<%= render "admin/shared/globalize_locales", resource: @admin_notification %>
<%= translatable_form_for [:admin, @admin_notification] do |f| %>
<%= render 'shared/errors', resource: @admin_notification %>
<%= f.select :segment_recipient, options_for_select(user_segments_options,
@admin_notification[:segment_recipient]) %>
<%= f.text_field :title %>
<%= f.translatable_text_field :title %>
<%= f.text_field :link %>
<%= f.text_area :body %>
<%= f.translatable_text_area :body %>

<div class="margin-top">
<%= f.submit t("admin.admin_notifications.#{admin_submit_action(@admin_notification)}.submit_button"),
Expand Down
14 changes: 14 additions & 0 deletions db/migrate/20180731150800_add_admin_notification_translations.rb
@@ -0,0 +1,14 @@
class AddAdminNotificationTranslations < ActiveRecord::Migration

def self.up
AdminNotification.create_translation_table!(
title: :string,
body: :text
)
end

def self.down
AdminNotification.drop_translation_table!
end
end

12 changes: 12 additions & 0 deletions db/schema.rb
Expand Up @@ -30,6 +30,18 @@
add_index "activities", ["actionable_id", "actionable_type"], name: "index_activities_on_actionable_id_and_actionable_type", using: :btree
add_index "activities", ["user_id"], name: "index_activities_on_user_id", using: :btree

create_table "admin_notification_translations", force: :cascade do |t|
t.integer "admin_notification_id", null: false
t.string "locale", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "title"
t.text "body"
end

add_index "admin_notification_translations", ["admin_notification_id"], name: "index_admin_notification_translations_on_admin_notification_id", using: :btree
add_index "admin_notification_translations", ["locale"], name: "index_admin_notification_translations_on_locale", using: :btree

create_table "admin_notifications", force: :cascade do |t|
t.string "title"
t.text "body"
Expand Down
7 changes: 6 additions & 1 deletion spec/features/admin/admin_notifications_spec.rb
Expand Up @@ -8,6 +8,11 @@
create(:budget)
end

it_behaves_like "translatable",
"admin_notification",
"edit_admin_admin_notification_path",
%w[title body]

context "Show" do
scenario "Valid Admin Notification" do
notification = create(:admin_notification, title: 'Notification title',
Expand Down Expand Up @@ -180,7 +185,7 @@
notification = create(:admin_notification)
visit edit_admin_admin_notification_path(notification)

fill_in :admin_notification_title, with: ''
fill_in :admin_notification_title_en, with: ''
click_button "Update notification"

expect(page).to have_content error_message
Expand Down
2 changes: 2 additions & 0 deletions spec/shared/features/translatable.rb
Expand Up @@ -186,6 +186,8 @@ def update_button_text
case translatable_class.name
when "Budget::Investment::Milestone"
"Update milestone"
when "AdminNotification"
"Update notification"
else
"Save changes"
end
Expand Down
4 changes: 2 additions & 2 deletions spec/support/common_actions/notifications.rb
Expand Up @@ -43,8 +43,8 @@ def error_message(resource_model = nil)

def fill_in_admin_notification_form(options = {})
select (options[:segment_recipient] || 'All users'), from: :admin_notification_segment_recipient
fill_in :admin_notification_title, with: (options[:title] || 'This is the notification title')
fill_in :admin_notification_body, with: (options[:body] || 'This is the notification body')
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 :admin_notification_link, with: (options[:link] || 'https://www.decide.madrid.es/vota')
end
end

0 comments on commit f674904

Please sign in to comment.