%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/calendar/widgets/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/calendar/widgets/FullCalendar.php |
<?php namespace humhub\modules\calendar\widgets; use humhub\modules\calendar\assets\CalendarAsset; use humhub\modules\calendar\helpers\CalendarUtils; use humhub\modules\calendar\helpers\Url; use humhub\modules\calendar\models\CalendarEntry; use humhub\modules\calendar\models\participation\FullCalendarSettings; use humhub\modules\calendar\permissions\CreateEntry; use humhub\modules\content\components\ContentContainerActiveRecord; use humhub\widgets\JsWidget; use Yii; /** * Description of FullCalendarWidget * * @author luke */ class FullCalendar extends JsWidget { public $jsWidget = 'calendar.Calendar'; public $id = 'calendar'; public $init = true; public $canWrite = false; public $isGlobal = false; public $loadUrl; public $dropUrl; public $editUrl; public $selectors = []; public $filters = []; public $types = []; /** * @var ContentContainerActiveRecord $contentContainer */ public $contentContainer; public $enabled = true; public $aspectRatio; public $height = 'auto'; public function init() { CalendarAsset::register($this->getView()); if (Yii::$app->user->isGuest) { $this->canWrite = false; $this->enabled = false; parent::init(); return; } if (!$this->contentContainer) { $this->contentContainer = Yii::$app->user->getIdentity(); $this->isGlobal = true; } // Used by the global calendar if the module is not enabled for the given user. if ($this->contentContainer && !$this->contentContainer->moduleManager->isEnabled('calendar')) { $this->enabled = false; } if ($this->contentContainer) { $this->editUrl = Url::toFullCalendarEdit($this->contentContainer); } parent::init(); } public function getData() { $defaultSettings = new FullCalendarSettings(['contentContainer' => $this->contentContainer]); return [ 'default-view' => $defaultSettings->viewMode, 'height' => $this->height, 'load-url' => $this->loadUrl, 'aspect-ratio' => $this->aspectRatio, 'edit-url' => $this->editUrl, 'drop-url' => $this->dropUrl, 'global-create-url' => Url::toGlobalCreate(), 'global' => (int)$this->isGlobal, 'can-write' => (int)$this->canWrite, 'can-create' => (int)$this->canCreate(), 'editable' => (int)$this->canWrite, 'selectable' => (int)$this->canWrite, 'select-helper' => (int)$this->canWrite, 'selectors' => $this->selectors, 'filters' => $this->filters, 'types' => $this->types, 'time-zone' => CalendarUtils::getUserTimeZone(true), 'locale' => $this->translateLocale(Yii::$app->formatter->locale), ]; } const LOCALE_MAPPING = [ 'nb-no' => 'nb', 'fa-ir' => 'fa', ]; private function translateLocale($locale) { $locale = str_replace('_', '-', $locale); if (array_key_exists($locale, self::LOCALE_MAPPING)) { $locale = self::LOCALE_MAPPING[$locale]; } return $locale; } private function canCreate() { if ($this->contentContainer && !Yii::$app->user->isGuest) { return (new CalendarEntry($this->contentContainer))->content->canEdit(); } else if (!Yii::$app->user->isGuest) { return Yii::$app->user->getIdentity()->isCurrentUser(); } return false; } }