ComunicWeb/assets/js/pages/settings/sections/language.js
2018-08-15 08:51:02 +02:00

148 lines
3.2 KiB
JavaScript

/**
* Language section
*
* @author Pierre HUBERT
*/
ComunicWeb.pages.settings.sections.language = {
/**
* Open settings section
*
* @param {object} args Additionnal arguments
* @param {HTMLElement} target The target for the page
*/
open: function(args, target){
//Create a box
var box = createElem2({
appendTo: target,
type: "div",
class: "box box-primary box-language-settings"
});
//Add box header
var boxHead = createElem2({
appendTo: box,
type: "div",
class: "box-header",
});
var boxTitle = createElem2({
appendTo: boxHead,
type: "h3",
class: "box-title",
innerHTML: "Language settings"
});
//Create box body
var boxBody = createElem2({
appendTo: box,
type: "div",
class: "box-body"
});
//Get language settings
var loadingMessage = ComunicWeb.common.messages.createCalloutElem(
"Loading",
"Please wait while we load language settings...",
"info");
boxBody.appendChild(loadingMessage);
ComunicWeb.components.settings.interface.getLanguage(function(result){
loadingMessage.remove();
if(result.error){
boxBody.appendChild(ComunicWeb.common.messages.createCalloutElem(
"Error", "Could not get language settings!", "danger"
));
return;
}
ComunicWeb.pages.settings.sections.language._show(boxBody, result);
});
},
/**
* Display (show) language settings
*
* @param {HTMLElement} target The target of the form
* @param {Object} settings Language settings
*/
_show: function(target, settings){
//Create a form container
var formContainer = createElem2({
appendTo: target,
type: "div"
});
//Add language choice
var languageChooser = createFormGroup({
target: formContainer,
label: "Language",
placeholder: "Application language",
type: "select2"
});
//Parse list of langs
for(language in ComunicWeb.common.langs.list){
if(typeof language !== "string")
continue;
var info = ComunicWeb.common.langs.list[language];
//Create the option
var option = createElem2({
appendTo: languageChooser,
type: "option",
value: language,
innerHTML: info.local_name + " (" + info.name + ")"
});
if(language == ComunicWeb.common.langs.current())
option.setAttribute("selected", "true");
}
//Add submit button
var sendButton = createElem2({
appendTo: formContainer,
type: "div",
class: "btn btn-primary submit-form",
innerHTML: "Update settings"
});
//Make submit button lives
sendButton.onclick = function(){
//Get selected lang
var language = languageChooser.value;
//Perform a request over the server
sendButton.style.visibility = "hidden";
//Perform a request over the server
ComunicWeb.components.settings.interface.setLanguage(language, function(result){
sendButton.style.visibility = "visible";
//Check for errors
if(result.error){
notify("An error occurred while trying to udpate language settings!", "danger");
return;
}
//Success
notify("Language settings has been successfully updated !");
ComunicWeb.common.langs.setLang(language);
//Refresh current page to apply new language settings
ComunicWeb.common.system.reset();
});
}
}
};