Merge pull request #5428 from christianbeeznest/ofaj-21532-3

Internal: Ensure default platform language is used for datetime picker on initial load - refs BT#21532
pull/5429/head
christianbeeznest 2 years ago committed by GitHub
commit aaefd6f666
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 30
      public/main/inc/lib/formvalidator/Element/DatePicker.php
  2. 24
      public/main/inc/lib/formvalidator/Element/DateTimePicker.php

@ -3,6 +3,7 @@
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Component\Utils\ToolIcon;
use Chamilo\CoreBundle\Framework\Container;
/**
* Form element to select a date.
@ -99,13 +100,9 @@ class DatePicker extends HTML_QuickForm_text
$localeCode = $this->getLocaleCode();
$id = $this->getAttribute('id');
$localeScript = '';
if ($localeCode !== 'en') {
$localeScript = '<script async="false" src="/build/flatpickr/l10n/' . $localeCode . '.js"></script>';
}
return $localeScript . "<script>
return "<script>
document.addEventListener('DOMContentLoaded', function () {
function initializeFlatpickr() {
const fp = flatpickr('#{$id}', {
locale: '{$localeCode}',
altInput: true,
@ -121,6 +118,20 @@ class DatePicker extends HTML_QuickForm_text
}
document.querySelector('label[for=\"' + '{$id}' + '\"]').classList.add('datepicker-label');
}
function loadLocale() {
if ('{$localeCode}' !== 'en') {
var script = document.createElement('script');
script.src = '/build/flatpickr/l10n/{$localeCode}.js';
script.onload = initializeFlatpickr;
document.head.appendChild(script);
} else {
initializeFlatpickr();
}
}
loadLocale();
});
</script>";
}
@ -135,7 +146,12 @@ class DatePicker extends HTML_QuickForm_text
*/
private function getLocaleCode(): string
{
$locale = api_get_language_isocode();
$locale = api_get_setting('language.platform_language');
$request = Container::getRequest();
if ($request) {
$locale = $request->getLocale();
}
$userInfo = api_get_user_info();
if (is_array($userInfo) && !empty($userInfo['language']) && ANONYMOUS != $userInfo['status']) {
$locale = $userInfo['language'];

@ -67,18 +67,14 @@ class DateTimePicker extends HTML_QuickForm_text
*
* @return string
*/
private function getElementJS()
private function getElementJS(): string
{
$localeCode = $this->getLocaleCode();
$id = $this->getAttribute('id');
$localeScript = '';
if ($localeCode !== 'en') {
$localeScript = '<script async="false" src="/build/flatpickr/l10n/' . $localeCode . '.js"></script>';
}
$js = $localeScript . "<script>
$js = "<script>
document.addEventListener('DOMContentLoaded', function () {
function initializeFlatpickr() {
const fp = flatpickr('#{$id}', {
locale: '{$localeCode}',
altInput: true,
@ -101,6 +97,20 @@ class DateTimePicker extends HTML_QuickForm_text
});
document.querySelector('label[for=\"' + '{$id}' + '\"]').classList.add('datepicker-label');
}
function loadLocaleAndInitialize() {
if ('{$localeCode}' !== 'en') {
var script = document.createElement('script');
script.src = '/build/flatpickr/l10n/' + '{$localeCode}.js';
script.onload = initializeFlatpickr;
document.head.appendChild(script);
} else {
initializeFlatpickr();
}
}
loadLocaleAndInitialize();
});
</script>";

Loading…
Cancel
Save