%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/widgets/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/widgets/TimeZoneDropdownAddition.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2018 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\widgets; use humhub\libs\TimezoneHelper; use humhub\modules\ui\form\widgets\JsInputWidget; use Yii; /** * This input addition will add a time zone input dropdown field, which is hidden by default * and a time zone link displaying the curren time zone value. * The time zone link will toggle the actual input field. * * @package humhub\widgets */ class TimeZoneDropdownAddition extends JsInputWidget { public $toggleClass = 'input-field-addon-sm colorInfo pull-right'; /** * @var bool whether or not to add offset information */ public $withOffset = false; /** * @var array cached timeZone item array * @see TimezoneHelper::generateList() */ private $timeZoneItems; /** * @inheritdoc */ public $attribute = 'timeZone'; /** * @inheritdoc */ public function run() { return $this->render('selectTimeZoneDropdown', [ 'id' => $this->id, 'model' => $this->model, 'attribute' => $this->attribute, 'toggleClass' => $this->toggleClass, 'name' => $this->name, 'currentTimeZoneLabel' => $this->getCurrentLabel(), 'value' => $this->value, 'timeZoneItems' => $this->getTimeZoneItems() ]); } /** * @return null|array of timezone items, note we only include UTC+00:00 as possible selection * if the current (or default) time zone is UTC * @throws \Exception */ private function getCurrentLabel() { $value = $this->getTimeZoneValue(); $timeZones = $this->getTimeZoneItems(); if (isset($timeZones[$value])) { return $timeZones[$value]; } return array_values($timeZones)[0]; } /** * @return string the current timeZone value either directly set as widget attribute * or retrieved by model/attribute or default formatter timezone */ private function getTimeZoneValue() { if (!$this->value && $this->hasModel()) { $attribute = $this->attribute; $this->value = $this->model->$attribute; } elseif (empty($this->value)) { $this->value = Yii::$app->formatter->timeZone; } return $this->value; } /** * @return array of timezones with UTC offset, note that the result will be cached * @throws \Exception * @see TimezoneHelper::generateList() */ public function getTimeZoneItems() { $value = $this->getTimeZoneValue(); if (empty($this->timeZoneItems)) { $this->timeZoneItems = TimezoneHelper::generateList($value === 'UTC', $this->withOffset); } return $this->timeZoneItems; } }