Change Translatable impl to keep track of enabled locales
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
App.Globalize =
|
App.Globalize =
|
||||||
|
|
||||||
display_locale: (locale) ->
|
display_locale: (locale) ->
|
||||||
|
App.Globalize.enable_locale(locale)
|
||||||
$(".js-globalize-locale-link").each ->
|
$(".js-globalize-locale-link").each ->
|
||||||
if $(this).data("locale") == locale
|
if $(this).data("locale") == locale
|
||||||
$(this).show()
|
$(this).show()
|
||||||
@@ -27,7 +28,13 @@ App.Globalize =
|
|||||||
next = $(".js-globalize-locale-link:visible").first()
|
next = $(".js-globalize-locale-link:visible").first()
|
||||||
App.Globalize.highlight_locale(next)
|
App.Globalize.highlight_locale(next)
|
||||||
App.Globalize.display_translations(next.data("locale"))
|
App.Globalize.display_translations(next.data("locale"))
|
||||||
$("#delete_translations_" + locale).val(1)
|
App.Globalize.disable_locale(locale)
|
||||||
|
|
||||||
|
enable_locale: (locale) ->
|
||||||
|
$("#enabled_translations_" + locale).val(1)
|
||||||
|
|
||||||
|
disable_locale: (locale) ->
|
||||||
|
$("#enabled_translations_" + locale).val(0)
|
||||||
|
|
||||||
initialize: ->
|
initialize: ->
|
||||||
$('.js-globalize-locale').on 'change', ->
|
$('.js-globalize-locale').on 'change', ->
|
||||||
|
|||||||
@@ -51,7 +51,8 @@ class Admin::SiteCustomization::InformationTextsController < Admin::SiteCustomiz
|
|||||||
end
|
end
|
||||||
|
|
||||||
def delete_translations
|
def delete_translations
|
||||||
languages_to_delete = params[:delete_translations].select { |k, v| params[:delete_translations][k] == '1' }.keys
|
languages_to_delete = params[:enabled_translations].select { |_, v| v == '0' }
|
||||||
|
.keys
|
||||||
languages_to_delete.each do |locale|
|
languages_to_delete.each do |locale|
|
||||||
I18nContentTranslation.destroy_all(locale: locale)
|
I18nContentTranslation.destroy_all(locale: locale)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -7,16 +7,19 @@ module Translatable
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def translation_params(params)
|
# TODO change method interface to remove unnecessary argument
|
||||||
resource_model
|
def translation_params(_)
|
||||||
.globalize_attribute_names
|
enabled_translations.flat_map do |locale|
|
||||||
.select { |k| params[k].present? ||
|
resource_model.translated_attribute_names.map do |attr_name|
|
||||||
resource_model.translated_locales.include?(get_locale_from_attribute(k)) }
|
resource_model.localized_attr_name_for(attr_name, locale)
|
||||||
|
end
|
||||||
|
end.tap { |x| Rails.logger.debug "permitted translation params:"; p x}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# TODO change to resource
|
||||||
def delete_translations
|
def delete_translations
|
||||||
locales = resource_model.translated_locales
|
locales = resource_model.translated_locales
|
||||||
.select { |l| params.dig(:delete_translations, l) == "1" }
|
.select { |l| params.dig(:enabled_translations, l) == "0" }
|
||||||
locales.each do |l|
|
locales.each do |l|
|
||||||
Globalize.with_locale(l) do
|
Globalize.with_locale(l) do
|
||||||
resource.translation.destroy
|
resource.translation.destroy
|
||||||
@@ -24,8 +27,9 @@ module Translatable
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_locale_from_attribute(attribute_name)
|
def enabled_translations
|
||||||
locales = resource_model.globalize_locales
|
params.fetch(:enabled_translations)
|
||||||
attribute_name.to_s.match(/(#{locales.join('|')})\Z/)&.captures&.first
|
.select { |_, v| v == '1' }
|
||||||
|
.keys
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -27,7 +27,11 @@ module GlobalizeHelper
|
|||||||
end
|
end
|
||||||
|
|
||||||
def css_to_display_translation?(resource, locale)
|
def css_to_display_translation?(resource, locale)
|
||||||
resource.translated_locales.include?(neutral_locale(locale)) || locale == I18n.locale ? "" : "display: none"
|
enable_locale?(resource, locale) ? "" : "display: none"
|
||||||
|
end
|
||||||
|
|
||||||
|
def enable_locale?(resource, locale)
|
||||||
|
resource.translated_locales.include?(neutral_locale(locale)) || locale == I18n.locale
|
||||||
end
|
end
|
||||||
|
|
||||||
def highlight_current?(locale)
|
def highlight_current?(locale)
|
||||||
|
|||||||
Reference in New Issue
Block a user