%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/admin/widgets/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/admin/widgets/ModuleControls.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2021 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\admin\widgets; use humhub\components\Module; use humhub\components\OnlineModule; use humhub\modules\content\components\ContentContainerModule; use humhub\modules\ui\menu\MenuLink; use humhub\modules\ui\menu\widgets\Menu; use Yii; /** * Widget for rendering the context menu for module. */ class ModuleControls extends Menu { /** * @var Module */ public $module; /** * @inheritdoc */ public $template = '@admin/widgets/views/moduleControls'; /** * @inheritdoc */ public function init() { $this->initControls(); return parent::init(); } public function initControls() { $this->initInstalledModuleControls(); if ($marketplaceUrl = $this->getMarketplaceUrl($this->module)) { $this->addEntry(new MenuLink([ 'id' => 'marketplace-info', 'label' => Yii::t('AdminModule.base', 'Information'), 'url' => $marketplaceUrl, 'htmlOptions' => ['rel' => 'noopener', 'target' => '_blank'], 'icon' => 'external-link', 'sortOrder' => 500, ])); } else { $this->addEntry(new MenuLink([ 'id' => 'info', 'label' => Yii::t('AdminModule.base', 'Information'), 'url' => ['/admin/module/info', 'moduleId' => $this->module->id], 'htmlOptions' => ['data-target' => '#globalModal'], 'icon' => 'info-circle', 'sortOrder' => 600, ])); } } private function initInstalledModuleControls() { if (!($this->module instanceof Module)) { return; } if ($this->module->isActivated) { if ($this->module->getConfigUrl() != '') { $this->addEntry(new MenuLink([ 'id' => 'configure', 'label' => Yii::t('AdminModule.base', 'Configure'), 'url' => $this->module->getConfigUrl(), 'icon' => 'wrench', 'sortOrder' => 100, ])); } if ($this->module instanceof ContentContainerModule) { $this->addEntry(new MenuLink([ 'id' => 'default', 'label' => Yii::t('AdminModule.base', 'Set as default'), 'url' => ['/admin/module/set-as-default', 'moduleId' => $this->module->id], 'htmlOptions' => ['data-target' => '#globalModal'], 'icon' => 'check-square', 'sortOrder' => 200, ])); } $this->addEntry(new MenuLink([ 'id' => 'deactivate', 'label' => Yii::t('AdminModule.base', 'Deactivate'), 'url' => ['/admin/module/disable', 'moduleId' => $this->module->id], 'htmlOptions' => [ 'data-method' => 'POST', 'data-confirm' => Yii::t('AdminModule.modules', 'Are you sure? *ALL* module data will be lost!'), ], 'icon' => 'minus-circle', 'sortOrder' => 300, ])); } else { $this->addEntry(new MenuLink([ 'id' => 'deactivate', 'label' => Yii::t('AdminModule.base', 'Activate'), 'url' => ['/admin/module/enable', 'moduleId' => $this->module->id], 'htmlOptions' => [ 'data-method' => 'POST', 'data-loader' => 'modal', 'data-message' => Yii::t('AdminModule.modules', 'Enable module...'), ], 'icon' => 'check-circle', 'sortOrder' => 300, ])); } if (Yii::$app->moduleManager->canRemoveModule($this->module->id)) { $this->addEntry(new MenuLink([ 'id' => 'uninstall', 'label' => Yii::t('AdminModule.base', 'Uninstall'), 'url' => ['/admin/module/remove', 'moduleId' => $this->module->id], 'htmlOptions' => [ 'data-method' => 'POST', 'data-confirm' => Yii::t('AdminModule.modules', 'Are you sure? *ALL* module related data and files will be lost!'), ], 'icon' => 'trash', 'sortOrder' => 400, ])); } $onlineModule = new OnlineModule(['module' => $this->module]); if ($onlineModule->isNonFree) { $this->addEntry(new MenuLink([ 'id' => 'marketplace-licence-key', 'label' => Yii::t('AdminModule.base', 'Add Licence Key'), 'url' => ['/marketplace/purchase'], 'htmlOptions' => ['data-target' => '#globalModal'], 'icon' => 'key', 'sortOrder' => 500, ])); } } private function getMarketplaceUrl($module): ?string { if (!Yii::$app->hasModule('marketplace')) { return false; } static $onlineModules; if (!isset($modules)) { /* @var \humhub\modules\marketplace\Module $marketplaceModule */ $marketplaceModule = Yii::$app->getModule('marketplace'); $onlineModules = $marketplaceModule->onlineModuleManager->getModules(); } return empty($onlineModules[$module->id]['marketplaceUrl']) ? null : $onlineModules[$module->id]['marketplaceUrl']; } /** * @inheritdoc */ public function getAttributes() { return [ 'class' => 'nav nav-pills preferences' ]; } }