Files
nairobi/app/helpers/globalize_helper.rb
Senén Rodero Rodríguez b2d8851bcc Add the option to disable languages managment to cover special cases
We understand languages management as the ability to add new languages
or remove existing ones. When no option is passed it will allow language
manipulation by default.

There are 3 special places where we want block languages management:
- admin legislation processes homepage
- admin legislation processes milestones summary
- proposals retired form

Co-Authored-By: Sebastia <sebastia.roig@gmail.com>
2019-07-01 15:03:48 +02:00

109 lines
2.9 KiB
Ruby

module GlobalizeHelper
def options_for_select_language(resource)
options_for_select(available_locales(resource), first_available_locale(resource))
end
def available_locales(resource)
I18n.available_locales.select{ |locale| enabled_locale?(resource, locale) }.map do |locale|
[name_for_locale(locale), locale , { data: { locale: locale } }]
end
end
def enabled_locale?(resource, locale)
return site_customization_enable_translation?(locale) if resource.blank?
if resource.translations.empty?
locale == I18n.locale
else
resource.locales_not_marked_for_destruction.include?(locale)
end
end
def first_available_locale(resource)
return first_i18n_content_translation_locale if resource.blank?
if translations_for_locale?(resource, I18n.locale)
I18n.locale
elsif resource.translations.any?
resource.translations.first.locale
else
I18n.locale
end
end
def first_i18n_content_translation_locale
if I18nContentTranslation.existing_languages.count == 0 ||
I18nContentTranslation.existing_languages.include?(I18n.locale)
I18n.locale
else
I18nContentTranslation.existing_languages.first
end
end
def translations_for_locale?(resource, locale)
resource.present? && resource.translations.any? &&
resource.locales_not_marked_for_destruction.include?(locale)
end
def selected_languages_description(resource)
t("shared.translations.languages_in_use_html", count: active_languages_count(resource))
end
def active_languages_count(resource)
if resource.blank?
languages_count
elsif resource.locales_not_marked_for_destruction.size > 0
resource.locales_not_marked_for_destruction.size
else
1
end
end
def languages_count
count = I18nContentTranslation.existing_languages.count
count > 0 ? count : 1
end
def display_translation_style(resource, locale)
"display: none;" unless display_translation?(resource, locale)
end
def display_translation?(resource, locale)
if !resource || resource.translations.empty? ||
resource.locales_not_marked_for_destruction.include?(I18n.locale)
locale == I18n.locale
else
locale == resource.translations.first.locale
end
end
def display_destroy_locale_style(resource, locale)
"display: none;" unless display_destroy_locale_link?(resource, locale)
end
def display_destroy_locale_link?(resource, locale)
first_available_locale(resource) == locale
end
def options_for_add_language
options_for_select(all_language_options, nil)
end
def all_language_options
I18n.available_locales.map do |locale|
[name_for_locale(locale), locale]
end
end
def translation_enabled_tag(locale, enabled)
hidden_field_tag("enabled_translations[#{locale}]", (enabled ? 1 : 0))
end
def globalize(locale, &block)
Globalize.with_locale(locale) do
yield
end
end
end