%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/ui/form/widgets/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/ui/form/widgets/DatePicker.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\modules\ui\form\widgets;
use humhub\assets\DatePickerRussianLanguageAsset;
use Yii;
use yii\helpers\FormatConverter;
use yii\helpers\Json;
use yii\jui\DatePicker as BaseDatePicker;
use humhub\libs\Html;
use yii\jui\DatePickerLanguageAsset;
use yii\jui\JuiAsset;
/**
* DatePicker form field widget
*
* @since 1.3.0
* @inheritdoc
* @package humhub\modules\ui\form\widgets
*/
class DatePicker extends BaseDatePicker
{
const LANGUAGEMAPPING = [
'nb-NO' => 'nb',
'nn-NO' => 'nn',
'fa-IR' => 'fa',
'an' => null,
'uz' => null,
'ht' => null,
'am' => null,
];
public $pickerLanguage;
/**
* @inheritdoc
*/
public function init()
{
if ($this->dateFormat === null) {
$this->dateFormat = Yii::$app->formatter->dateInputFormat;
}
Html::addCssClass($this->options, 'form-control');
parent::init();
$this->pickerLanguage = $this->language ? $this->language : Yii::$app->language;
$this->pickerLanguage = (array_key_exists($this->pickerLanguage, static::LANGUAGEMAPPING))
? static::LANGUAGEMAPPING[$this->pickerLanguage]
: $this->pickerLanguage;
if(!$this->pickerLanguage) {
$this->pickerLanguage = 'en-US';
}
$this->pickerLanguage = str_replace('_', '-', $this->pickerLanguage);
}
/**
* @inheritdoc
*/
public function run()
{
/**
* HUMHUB PATCH: Language Mapping + Prevent loading language files for all english based languages, since DatePickerLanguageAsset tries
* to load a fallback language e.g. for `en-GB` -> 'en'.
*/
$this->options['autocomplete'] = 'off';
$language = $this->language ? $this->language : Yii::$app->language;
echo $this->renderWidget() . "\n";
$containerID = $this->inline ? $this->containerOptions['id'] : $this->options['id'];
if (strncmp($this->dateFormat, 'php:', 4) === 0) {
$this->clientOptions['dateFormat'] = FormatConverter::convertDatePhpToJui(substr($this->dateFormat, 4));
} else {
$this->clientOptions['dateFormat'] = FormatConverter::convertDateIcuToJui($this->dateFormat, 'date', $language);
}
if ($this->pickerLanguage !== 'en-US' && $this->pickerLanguage !== 'en') {
$this->registerLanguageAsset();
$options = Json::htmlEncode($this->clientOptions);
$this->pickerLanguage = Html::encode($this->pickerLanguage);
$this->getView()->registerJs("jQuery('#{$containerID}').datepicker($.extend({}, $.datepicker.regional['{$this->pickerLanguage}'], $options));");
} else {
$this->registerClientOptions('datepicker', $containerID);
}
$this->registerClientEvents('datepicker', $containerID);
JuiAsset::register($this->getView());
}
private function registerLanguageAsset()
{
if($this->pickerLanguage === 'ru') {
DatePickerRussianLanguageAsset::register($this->getView());
return;
}
$assetBundle = DatePickerLanguageAsset::register($this->getView());
if(substr($this->pickerLanguage, 0 , 2) === 'en') {
$assetBundle->autoGenerate = false;
$assetBundle->js[] = "ui/i18n/datepicker-{$this->pickerLanguage}.js";
} else {
$assetBundle->language = $this->pickerLanguage;
}
}
}