mirror of
https://github.com/pierre42100/ComunicWeb
synced 2025-06-19 12:25:16 +00:00
Added language settings
This commit is contained in:
148
assets/js/pages/settings/sections/language.js
Normal file
148
assets/js/pages/settings/sections/language.js
Normal file
@ -0,0 +1,148 @@
|
||||
/**
|
||||
* 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();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
};
|
Reference in New Issue
Block a user