%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/space/widgets/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/space/widgets/Menu.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2017 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\space\widgets; use humhub\modules\content\helpers\ContentContainerHelper; use humhub\modules\space\models\Space; use humhub\modules\space\Module; use humhub\modules\ui\menu\MenuLink; use humhub\modules\ui\menu\widgets\LeftNavigation; use Yii; use yii\base\Exception; /** * The Main Navigation for a space. It includes the Modules the Stream * * @author Luke * @since 0.5 */ class Menu extends LeftNavigation { /** @var Space */ public $space; /** @var Space */ public $id = 'space-main-menu'; /** * @inheritdoc */ public function init() { if (!$this->space) { $this->space = ContentContainerHelper::getCurrent(Space::class); } if (!$this->space) { throw new Exception('Could not instance space menu without space!'); } $this->panelTitle = Yii::t('SpaceModule.base', '<strong>Space</strong> menu'); parent::init(); // For private Spaces without membership, show only the About Page in the menu. // This is necessary for the invitation process otherwise there is no access in this case anyway. if (!$this->space->isMember() && $this->space->visibility == Space::VISIBILITY_NONE) { $this->entries = []; $this->addAboutPage(); return; } $this->addEntry(new MenuLink([ 'label' => Yii::t('SpaceModule.base', 'Stream'), 'url' => $this->space->createUrl('/space/space/home'), 'icon' => 'stream', 'sortOrder' => 100, 'isActive' => MenuLink::isActiveState('space', 'space', ['index', 'home']), ])); if (!$this->space->getAdvancedSettings()->hideAbout) { $this->addAboutPage(); } } private function addAboutPage() { $this->addEntry(new MenuLink([ 'label' => Yii::t('SpaceModule.base', 'About'), 'url' => $this->space->createUrl('/space/space/about'), 'icon' => 'about', 'sortOrder' => 10000, 'isActive' => MenuLink::isActiveState('space', 'space', ['about']), ])); } /** * Searches for urls of modules which are activated for the current space * and offer an own site over the space menu. * The urls are associated with a module label. * * Returns an array of urls with associated module labes for modules */ public static function getAvailablePages() { //Initialize the space Menu to check which active modules have an own page $entries = (new static())->getEntries(MenuLink::class); $result = []; foreach ($entries as $entry) { /* @var $entry MenuLink */ $result[$entry->getUrl()] = $entry->getLabel(); } return $result; } /** * Returns space default / homepage * * @param Space $space * @return string|null the url to redirect or null for default home */ public static function getDefaultPageUrl($space) { $indexUrl = $space->getAdvancedSettings()->indexUrl; return (!empty($indexUrl) && isset(static::getAvailablePages()[$indexUrl])) ? $indexUrl : null; } /** * Returns space default / homepage for guests * * @param $space Space * @return string|null the url to redirect or null for default home */ public static function getGuestsDefaultPageUrl($space) { $indexUrl = $space->getAdvancedSettings()->indexGuestUrl; return (!empty($indexUrl) && isset(static::getAvailablePages()[$indexUrl])) ? $indexUrl : null; } }