Fix globalization for information texts
Refactoring and making similar specs to the milestones globalization specs
This commit is contained in:
@@ -9,15 +9,25 @@ class Admin::SiteCustomization::InformationTextsController < Admin::SiteCustomiz
|
|||||||
|
|
||||||
def update
|
def update
|
||||||
content_params.each do |content|
|
content_params.each do |content|
|
||||||
value = content[:values].slice(*translation_params(content[:values]))
|
values = content[:values].slice(*translation_params(content[:values]))
|
||||||
unless value.empty?
|
|
||||||
text = I18nContent.by_key(content[:id]).last || I18nContent.create(key: content[:id])
|
unless values.empty?
|
||||||
text.update(value)
|
values.each do |key, value|
|
||||||
text.save
|
locale = key.split("_").last
|
||||||
|
|
||||||
|
if value == I18n.backend.translate(locale, content[:id])
|
||||||
|
next
|
||||||
|
else
|
||||||
|
text = I18nContent.find_or_create_by(key: content[:id])
|
||||||
|
Globalize.locale = locale
|
||||||
|
text.update(value: value)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
redirect_to admin_site_customization_information_texts_path
|
redirect_to admin_site_customization_information_texts_path, notice: "Translation updated successfully"
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
<% globalize(locale) do %>
|
<% globalize(locale) do %>
|
||||||
|
<p><%= I18nContent.where(key: content.key).first.try(:value) %></p>
|
||||||
<%= hidden_field_tag "contents[content_#{content.key}][id]", content.key %>
|
<%= hidden_field_tag "contents[content_#{content.key}][id]", content.key %>
|
||||||
<%= text_area_tag "contents[content_#{content.key}]values[value_#{locale}]",
|
<%= text_area_tag "contents[content_#{content.key}]values[value_#{locale}]",
|
||||||
content.value || t(content.key),
|
I18nContent.where(key: content.key).first.try(:value) ||
|
||||||
|
I18n.backend.translate(locale, content.key),
|
||||||
{ rows: 5,
|
{ rows: 5,
|
||||||
class: "js-globalize-attribute",
|
class: "js-globalize-attribute",
|
||||||
style: display_translation?(locale),
|
style: display_translation?(locale),
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ feature "Admin custom information texts" do
|
|||||||
expect(page).to have_content 'Access the community'
|
expect(page).to have_content 'Access the community'
|
||||||
|
|
||||||
click_link 'Proposals'
|
click_link 'Proposals'
|
||||||
expect(page).to have_content 'Proposal type'
|
expect(page).to have_content 'Create proposal'
|
||||||
|
|
||||||
within "#information-texts-tabs" do
|
within "#information-texts-tabs" do
|
||||||
click_link "Polls"
|
click_link "Polls"
|
||||||
@@ -112,4 +112,105 @@ feature "Admin custom information texts" do
|
|||||||
expect(page).not_to have_content 'Texto en español'
|
expect(page).not_to have_content 'Texto en español'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
context "Globalization" do
|
||||||
|
|
||||||
|
scenario "Add a translation", :js, :focus do
|
||||||
|
key = "debates.form.debate_title"
|
||||||
|
|
||||||
|
visit admin_site_customization_information_texts_path
|
||||||
|
|
||||||
|
select "Français", from: "translation_locale"
|
||||||
|
fill_in "contents_content_#{key}values_value_fr", with: 'Titre personalise du débat'
|
||||||
|
|
||||||
|
click_button "Save"
|
||||||
|
|
||||||
|
expect(page).to have_content 'Translation updated successfully'
|
||||||
|
|
||||||
|
select "Français", from: "translation_locale"
|
||||||
|
|
||||||
|
expect(page).to have_content 'Titre personalise du débat'
|
||||||
|
expect(page).not_to have_content 'Titre du débat'
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Update a translation", :js do
|
||||||
|
visit @edit_milestone_url
|
||||||
|
|
||||||
|
click_link "Español"
|
||||||
|
fill_in 'budget_investment_milestone_description_es', with: 'Descripción correcta en Español'
|
||||||
|
|
||||||
|
click_button 'Update milestone'
|
||||||
|
expect(page).to have_content "Milestone updated successfully"
|
||||||
|
|
||||||
|
visit budget_investment_path(investment.budget, investment)
|
||||||
|
|
||||||
|
click_link("Milestones (1)")
|
||||||
|
expect(page).to have_content("Description in English")
|
||||||
|
|
||||||
|
select('Español', from: 'locale-switcher')
|
||||||
|
click_link("Seguimiento (1)")
|
||||||
|
|
||||||
|
expect(page).to have_content("Descripción correcta en Español")
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Remove a translation", :js do
|
||||||
|
visit @edit_milestone_url
|
||||||
|
|
||||||
|
click_link "Español"
|
||||||
|
click_link "Remove language"
|
||||||
|
|
||||||
|
expect(page).not_to have_link "Español"
|
||||||
|
|
||||||
|
click_button "Update milestone"
|
||||||
|
visit @edit_milestone_url
|
||||||
|
expect(page).not_to have_link "Español"
|
||||||
|
end
|
||||||
|
|
||||||
|
context "Globalize javascript interface" do
|
||||||
|
|
||||||
|
scenario "Highlight current locale", :js do
|
||||||
|
visit @edit_milestone_url
|
||||||
|
|
||||||
|
expect(find("a.js-globalize-locale-link.is-active")).to have_content "English"
|
||||||
|
|
||||||
|
select('Español', from: 'locale-switcher')
|
||||||
|
|
||||||
|
expect(find("a.js-globalize-locale-link.is-active")).to have_content "Español"
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Highlight selected locale", :js do
|
||||||
|
visit @edit_milestone_url
|
||||||
|
|
||||||
|
expect(find("a.js-globalize-locale-link.is-active")).to have_content "English"
|
||||||
|
|
||||||
|
click_link "Español"
|
||||||
|
|
||||||
|
expect(find("a.js-globalize-locale-link.is-active")).to have_content "Español"
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Show selected locale form", :js do
|
||||||
|
visit @edit_milestone_url
|
||||||
|
|
||||||
|
expect(page).to have_field('budget_investment_milestone_description_en', with: 'Description in English')
|
||||||
|
|
||||||
|
click_link "Español"
|
||||||
|
|
||||||
|
expect(page).to have_field('budget_investment_milestone_description_es', with: 'Descripción en Español')
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Select a locale and add it to the milestone form", :js do
|
||||||
|
visit @edit_milestone_url
|
||||||
|
|
||||||
|
select "Français", from: "translation_locale"
|
||||||
|
|
||||||
|
expect(page).to have_link "Français"
|
||||||
|
|
||||||
|
click_link "Français"
|
||||||
|
|
||||||
|
expect(page).to have_field('budget_investment_milestone_description_fr')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user