forked from mirrors/easyappointments
Create new lang utility.
This commit is contained in:
parent
89c91fbf8b
commit
cd6ec7400c
1 changed files with 78 additions and 0 deletions
78
assets/js/utils/lang.js
Normal file
78
assets/js/utils/lang.js
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* Easy!Appointments - Open Source Web Scheduler
|
||||||
|
*
|
||||||
|
* @package EasyAppointments
|
||||||
|
* @author A.Tselegidis <alextselegidis@gmail.com>
|
||||||
|
* @copyright Copyright (c) Alex Tselegidis
|
||||||
|
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
|
||||||
|
* @link https://easyappointments.org
|
||||||
|
* @since v1.5.0
|
||||||
|
* ---------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lang utility.
|
||||||
|
*
|
||||||
|
* This module implements the functionality of dates.
|
||||||
|
*/
|
||||||
|
window.App.Utils.Lang = (function () {
|
||||||
|
/**
|
||||||
|
* Enable Language Selection
|
||||||
|
*
|
||||||
|
* Enables the language selection functionality. Must be called on every page has a language selection button.
|
||||||
|
* This method requires the global variable 'availableLanguages' to be initialized before the execution.
|
||||||
|
*
|
||||||
|
* @param {Object} $target Selected element button for the language selection.
|
||||||
|
*/
|
||||||
|
function enableLanguageSelection($target) {
|
||||||
|
// Select Language
|
||||||
|
const $languageList = $('<ul/>', {
|
||||||
|
'id': 'language-list',
|
||||||
|
'html': availableLanguages.map((availableLanguage) =>
|
||||||
|
$('<li/>', {
|
||||||
|
'class': 'language',
|
||||||
|
'data-language': availableLanguage,
|
||||||
|
'text': GeneralFunctions.upperCaseFirstLetter(availableLanguage)
|
||||||
|
})
|
||||||
|
)
|
||||||
|
});
|
||||||
|
|
||||||
|
$target.popover({
|
||||||
|
placement: 'top',
|
||||||
|
title: 'Select Language',
|
||||||
|
content: $languageList[0],
|
||||||
|
html: true,
|
||||||
|
container: 'body',
|
||||||
|
trigger: 'manual'
|
||||||
|
});
|
||||||
|
|
||||||
|
$target.on('click', function (event) {
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
const $target = $(event.target);
|
||||||
|
|
||||||
|
if ($('#language-list').length === 0) {
|
||||||
|
$target.popover('show');
|
||||||
|
} else {
|
||||||
|
$target.popover('hide');
|
||||||
|
}
|
||||||
|
|
||||||
|
$target.toggleClass('active');
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('click', 'li.language', (event) => {
|
||||||
|
// Change language with HTTP request and refresh page.
|
||||||
|
|
||||||
|
const language = $(event.target).data('language');
|
||||||
|
|
||||||
|
App.Http.Account.changeLanguage(language).done(() => document.location.reload());
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('click', () => {
|
||||||
|
$target.popover('hide');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
enableLanguageSelection
|
||||||
|
};
|
||||||
|
})();
|
Loading…
Reference in a new issue