106 lines
3.9 KiB
JavaScript
106 lines
3.9 KiB
JavaScript
(function() {
|
|
"use strict";
|
|
App.Globalize = {
|
|
selected_language: function() {
|
|
return $("#select_language").val();
|
|
},
|
|
display_locale: function(locale) {
|
|
App.Globalize.enable_locale(locale);
|
|
App.Globalize.add_language(locale);
|
|
$(".js-add-language option:selected").removeAttr("selected");
|
|
},
|
|
display_translations: function(locale) {
|
|
$(".js-select-language option[value=" + locale + "]").prop("selected", true);
|
|
$(".js-globalize-attribute").each(function() {
|
|
if ($(this).data("locale") === locale) {
|
|
$(this).show();
|
|
} else {
|
|
$(this).hide();
|
|
}
|
|
$(".js-delete-language").hide();
|
|
$(".js-delete-" + locale).show();
|
|
});
|
|
},
|
|
add_language: function(locale) {
|
|
var language_option, option;
|
|
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: function(locale) {
|
|
var next;
|
|
$(".js-globalize-attribute[data-locale=" + locale + "]").each(function() {
|
|
$(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: function(element) {
|
|
if (CKEDITOR.instances[$(element).attr("id")]) {
|
|
CKEDITOR.instances[$(element).attr("id")].setData("");
|
|
}
|
|
},
|
|
enable_locale: function(locale) {
|
|
App.Globalize.destroy_locale_field(locale).val(false);
|
|
App.Globalize.site_customization_enable_locale_field(locale).val(1);
|
|
},
|
|
disable_locale: function(locale) {
|
|
App.Globalize.destroy_locale_field(locale).val(true);
|
|
App.Globalize.site_customization_enable_locale_field(locale).val(0);
|
|
},
|
|
enabled_locales: function() {
|
|
return $.map($(".js-select-language:first option:not([value=''])"), function(element) {
|
|
return $(element).val();
|
|
});
|
|
},
|
|
destroy_locale_field: function(locale) {
|
|
return $("input[id$=_destroy][data-locale=" + locale + "]");
|
|
},
|
|
site_customization_enable_locale_field: function(locale) {
|
|
return $("#enabled_translations_" + locale);
|
|
},
|
|
refresh_visible_translations: function() {
|
|
var locale;
|
|
locale = $(".js-select-language").val();
|
|
App.Globalize.display_translations(locale);
|
|
},
|
|
update_description: function() {
|
|
var count;
|
|
count = App.Globalize.enabled_locales().length;
|
|
App.I18n.set_pluralize($(".js-languages-description"), count);
|
|
},
|
|
initialize: function() {
|
|
$(".js-add-language").on("change", function() {
|
|
var locale;
|
|
locale = $(this).val();
|
|
App.Globalize.display_translations(locale);
|
|
App.Globalize.display_locale(locale);
|
|
App.Globalize.update_description();
|
|
});
|
|
$(".js-select-language").on("change", function() {
|
|
App.Globalize.display_translations($(this).val());
|
|
});
|
|
$(".js-delete-language").on("click", function(e) {
|
|
e.preventDefault();
|
|
App.Globalize.remove_language($(this).data("locale"));
|
|
$(this).hide();
|
|
});
|
|
$(".js-add-fields-container").on("cocoon:after-insert", function() {
|
|
App.Globalize.enabled_locales().forEach(function(locale) {
|
|
App.Globalize.enable_locale(locale);
|
|
});
|
|
});
|
|
}
|
|
};
|
|
}).call(this);
|