Files
nairobi/app/assets/javascripts/globalize.js.coffee
Javi Martín cc7e0d586b Reduce local variables usage in CoffeeScript
Local variables are one of the things CoffeeScript doesn't compile to
modern JavaScript automatically: it uses `var` instead of `const` or
`let`.

Besides, using `$this = $(this)` is usually done to reference the
current object in another function where the current object is a
different one. Here we were using it with no clear purpose.
2019-09-11 03:14:17 +02:00

102 lines
3.5 KiB
CoffeeScript

"use strict"
App.Globalize =
selected_language: ->
$("#select_language").val()
display_locale: (locale) ->
App.Globalize.enable_locale(locale)
App.Globalize.add_language(locale)
$(".js-add-language option:selected").removeAttr("selected")
display_translations: (locale) ->
$(".js-select-language option[value=#{locale}]").prop("selected", true)
$(".js-globalize-attribute").each ->
if $(this).data("locale") == locale
$(this).show()
else
$(this).hide()
$(".js-delete-language").hide()
$(".js-delete-" + locale).show()
add_language: (locale) ->
language_option = $(".js-add-language [value=#{locale}]")
if $(".js-select-language option[value=#{locale}]").length == 0
option = new Option(language_option.text(), language_option.val())
$(".js-select-language").append(option)
$(".js-select-language option[value=#{locale}]").prop("selected", true)
remove_language: (locale) ->
$(".js-globalize-attribute[data-locale=#{locale}]").each ->
$(this).val("").hide()
App.Globalize.resetEditor(this)
$(".js-select-language option[value=#{locale}]").remove()
next = $(".js-select-language option:not([value=''])").first()
App.Globalize.display_translations(next.val())
App.Globalize.disable_locale(locale)
App.Globalize.update_description()
if $(".js-select-language option").length == 1
$(".js-select-language option").prop("selected", true)
resetEditor: (element) ->
if CKEDITOR.instances[$(element).attr("id")]
CKEDITOR.instances[$(element).attr("id")].setData("")
enable_locale: (locale) ->
App.Globalize.destroy_locale_field(locale).val(false)
App.Globalize.site_customization_enable_locale_field(locale).val(1)
disable_locale: (locale) ->
App.Globalize.destroy_locale_field(locale).val(true)
App.Globalize.site_customization_enable_locale_field(locale).val(0)
enabled_locales: ->
$.map(
$(".js-select-language:first option:not([value=''])"),
(element) -> $(element).val()
)
destroy_locale_field: (locale) ->
$("input[id$=_destroy][data-locale=#{locale}]")
site_customization_enable_locale_field: (locale) ->
$("#enabled_translations_#{locale}")
refresh_visible_translations: ->
locale = $(".js-select-language").val()
App.Globalize.display_translations(locale)
update_description: ->
count = App.Globalize.enabled_locales().length
description = App.Globalize.language_description(count)
$(".js-languages-description").html(description)
$(".js-languages-count").text(count)
language_description: (count) ->
switch count
when 0 then $(".globalize-languages").data("zero-languages-description")
when 1 then $(".globalize-languages").data("one-languages-description")
else $(".globalize-languages").data("other-languages-description")
initialize: ->
$(".js-add-language").on "change", ->
locale = $(this).val()
App.Globalize.display_translations(locale)
App.Globalize.display_locale(locale)
App.Globalize.update_description()
$(".js-select-language").on "change", ->
App.Globalize.display_translations($(this).val())
$(".js-delete-language").on "click", (e) ->
e.preventDefault()
App.Globalize.remove_language($(this).data("locale"))
$(this).hide()
$(".js-add-fields-container").on "cocoon:after-insert", ->
App.Globalize.enabled_locales().forEach (locale) ->
App.Globalize.enable_locale(locale)