diff --git a/app/controllers/admin/site_customization/information_texts_controller.rb b/app/controllers/admin/site_customization/information_texts_controller.rb index 85e765cb481..4c4b07a81ad 100644 --- a/app/controllers/admin/site_customization/information_texts_controller.rb +++ b/app/controllers/admin/site_customization/information_texts_controller.rb @@ -2,9 +2,8 @@ class Admin::SiteCustomization::InformationTextsController < Admin::SiteCustomiz before_action :delete_translations, only: [:update] def index - fetch_existing_keys - append_or_create_keys - @content = @content[@tab.to_s] + @tab = params[:tab] || :basic + @content = I18nContent.content_for(@tab) end def update @@ -50,29 +49,6 @@ def delete_translations end end - def fetch_existing_keys - @existing_keys = {} - @tab = params[:tab] || :debates - - I18nContent.begins_with_key(@tab).map { |content| - @existing_keys[content.key] = content - } - end - - def append_or_create_keys - @content = {} - I18n.backend.send(:init_translations) unless I18n.backend.initialized? - - locale = params[:locale] || I18n.locale - translations = I18n.backend.send(:translations)[locale.to_sym] - - translations.each do |key, value| - @content[key.to_s] = I18nContent.flat_hash(value).keys.map { |string| - @existing_keys["#{key.to_s}.#{string}"] || I18nContent.new(key: "#{key.to_s}.#{string}") - } - end - end - def translation_params I18nContent.translated_attribute_names.product(enabled_translations).map do |attr_name, loc| I18nContent.localized_attr_name_for(attr_name, loc) diff --git a/app/helpers/site_customization_helper.rb b/app/helpers/site_customization_helper.rb index 14dfe126280..4a3e631b626 100644 --- a/app/helpers/site_customization_helper.rb +++ b/app/helpers/site_customization_helper.rb @@ -8,15 +8,17 @@ def site_customization_display_translation_style(locale) end def translation_for_locale(content, locale) - i18n_content = I18nContent.where(key: content.key).first - - if i18n_content.present? + if content.present? I18nContentTranslation.where( - i18n_content_id: i18n_content.id, + i18n_content_id: content.id, locale: locale ).first.try(:value) else false end end + + def information_texts_tabs + [:basic, :debates, :community, :proposals, :polls, :layouts, :mailers, :management, :welcome] + end end diff --git a/app/models/i18n_content.rb b/app/models/i18n_content.rb index 173c7310a9d..79a04b20a01 100644 --- a/app/models/i18n_content.rb +++ b/app/models/i18n_content.rb @@ -1,7 +1,6 @@ class I18nContent < ApplicationRecord scope :by_key, ->(key) { where(key: key) } - scope :begins_with_key, ->(key) { where("key ILIKE ?", "#{key}%") } validates :key, uniqueness: true @@ -46,4 +45,55 @@ def self.flat_hash(input, path = nil, output = {}) return output end + def self.content_for(tab) + translations_for(tab).map do |string| + I18nContent.find_or_initialize_by(key: string) + end + end + + def self.translations_for(tab) + if tab.to_s == "basic" + basic_translations + else + flat_hash(translations_hash_for(tab)).keys + end + end + + def self.translations_hash_for(tab) + I18n.backend.send(:init_translations) unless I18n.backend.initialized? + + I18n.backend.send(:translations)[I18n.locale].select do |key, _translations| + key.to_s == tab.to_s + end + end + + def self.basic_translations + %w[ + debates.index.section_footer.title + debates.index.section_footer.description + debates.index.section_footer.help_text_1 + debates.index.section_footer.help_text_2 + debates.new.info + debates.new.info_link + debates.new.more_info + debates.new.recommendation_one + debates.new.recommendation_two + debates.new.recommendation_three + debates.new.recommendation_four + debates.new.recommendations_title + proposals.index.section_footer.title + proposals.index.section_footer.description + proposals.new.more_info + proposals.new.recommendation_one + proposals.new.recommendation_two + proposals.new.recommendation_three + proposals.new.recommendations_title + polls.index.section_footer.title + polls.index.section_footer.description + legislation.processes.index.section_footer.title + legislation.processes.index.section_footer.description + budgets.index.section_footer.title + budgets.index.section_footer.description + ] + end end diff --git a/app/views/admin/site_customization/information_texts/_tabs.html.erb b/app/views/admin/site_customization/information_texts/_tabs.html.erb index 0a459d1394e..d3d19550375 100644 --- a/app/views/admin/site_customization/information_texts/_tabs.html.erb +++ b/app/views/admin/site_customization/information_texts/_tabs.html.erb @@ -1,5 +1,5 @@