%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/custom_pages/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/custom_pages/Events.php |
<?php
namespace humhub\modules\custom_pages;
use humhub\modules\admin\widgets\AdminMenu;
use humhub\modules\admin\permissions\ManageModules;
use humhub\modules\custom_pages\helpers\Url;
use humhub\modules\custom_pages\models\Page;
use humhub\modules\custom_pages\models\ContainerPage;
use humhub\modules\custom_pages\models\ContainerSnippet;
use humhub\modules\custom_pages\widgets\SnippetWidget;
use humhub\modules\custom_pages\models\Snippet;
use humhub\modules\custom_pages\modules\template\models\PagePermission;
use humhub\modules\custom_pages\permissions\ManagePages;
use humhub\modules\ui\menu\MenuLink;
use humhub\modules\user\widgets\PeopleHeadingButtons;
use Throwable;
use Yii;
use yii\helpers\Html;
/**
* CustomPagesEvents
*
* @author luke
*/
class Events
{
public static function onBeforeRequest()
{
try {
static::registerAutoloader();
} catch (Throwable $e) {
Yii::error($e);
}
}
/**
* Register composer autoloader
*/
public static function registerAutoloader()
{
Yii::setAlias('@vendor/tinymce/tinymce', '@custom_pages/vendor/tinymce/tinymce');
Yii::setAlias('@vendor/2amigos/yii2-tinymce-widget/src/assets', '@custom_pages/vendor/2amigos/yii2-tinymce-widget/src/assets');
require Yii::getAlias('@custom_pages/vendor/autoload.php');
}
public static function onAdminMenuInit($event)
{
try {
Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent();
if (!Yii::$app->user->can([ManageModules::class, ManagePages::class])) {
return;
}
$event->sender->addItem([
'label' => Yii::t('CustomPagesModule.base', 'Custom Pages'),
'url' => Url::toPageOverview(),
'group' => 'manage',
'icon' => '<i class="fa fa-file-text-o"></i>',
'isActive' => (Yii::$app->controller->module
&& Yii::$app->controller->module->id === 'custom_pages'
&& (Yii::$app->controller->id === 'page' || Yii::$app->controller->id === 'config')),
'sortOrder' => 300,
'isVisible' => true,
]);
} catch (Throwable $e) {
Yii::error($e);
}
}
public static function onSpaceMenuInit($event)
{
try {
Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent();
/* @var $space \humhub\modules\space\models\Space */
$space = $event->sender->space;
if ($space->moduleManager->isEnabled('custom_pages')) {
$pages = ContainerPage::find()->contentContainer($space)->andWhere(['target' => ContainerPage::NAV_CLASS_SPACE_NAV])->all();
foreach ($pages as $page) {
if (!$page->canView()) {
continue;
}
$event->sender->addItem([
'label' => Html::encode(Yii::t('CustomPagesModule.base', $page->title)),
'group' => 'modules',
'htmlOptions' => [
'target' => ($page->in_new_window) ? '_blank' : '',
'data-pjax-prevent' => 1
],
'url' => $page->getUrl(),
'icon' => '<i class="fa ' . Html::encode($page->icon) . '"></i>',
'isActive' => (Yii::$app->controller->module
&& Yii::$app->controller->module->id === 'custom_pages'
&& Yii::$app->controller->id === 'view'
&& Yii::$app->controller->action->id === 'index' && Yii::$app->request->get('id') == $page->id),
'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000,
]);
}
}
} catch (Throwable $e) {
Yii::error($e);
}
}
public static function onSpaceAdminMenuInit($event)
{
try {
Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent();
/* @var $space \humhub\modules\space\models\Space */
$space = $event->sender->space;
if ($space->moduleManager->isEnabled('custom_pages') && $space->isAdmin() && $space->isMember()) {
$event->sender->addItem([
'label' => Yii::t('CustomPagesModule.base', 'Custom Pages'),
'group' => 'admin',
'url' => Url::toPageOverview($space),
'icon' => '<i class="fa fa-file-text-o"></i>',
'isActive' => (Yii::$app->controller->module
&& Yii::$app->controller->module->id === 'custom_pages'
&& Yii::$app->controller->id === 'container'
&& Yii::$app->controller->action->id !== 'view'),
]);
}
} catch (Throwable $e) {
Yii::error($e);
}
}
public static function onTopMenuInit($event)
{
try {
Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent();
foreach (Page::findAll(['target' => Page::NAV_CLASS_TOPNAV]) as $page) {
if (!$page->canView()) {
continue;
}
$event->sender->addItem([
'label' => Html::encode(Yii::t('CustomPagesModule.base', $page->title)),
'url' => Url::to(['/custom_pages/view', 'id' => $page->id]),
'htmlOptions' => ['target' => ($page->in_new_window) ? '_blank' : ''],
'icon' => '<i class="fa ' . Html::encode($page->icon) . '"></i>',
'isActive' => (Yii::$app->controller->module
&& Yii::$app->controller->module->id === 'custom_pages'
&& Yii::$app->controller->id === 'view' && Yii::$app->request->get('id') == $page->id),
'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000,
]);
}
} catch (Throwable $e) {
Yii::error($e);
}
}
public static function onAccountMenuInit($event)
{
try {
Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent();
foreach (Page::findAll(['target' => Page::NAV_CLASS_ACCOUNTNAV]) as $page) {
if (!$page->canView()) {
continue;
}
$event->sender->addItem([
'label' => Html::encode(Yii::t('CustomPagesModule.base', $page->title)),
'url' => Url::to(['/custom_pages/view', 'id' => $page->id]),
'htmlOptions' => ['target' => ($page->in_new_window) ? '_blank' : ''],
'icon' => '<i class="fa ' . Html::encode($page->icon) . '"></i>',
'isActive' => (Yii::$app->controller->module
&& Yii::$app->controller->module->id === 'custom_pages'
&& Yii::$app->controller->id === 'view' && Yii::$app->request->get('id') == $page->id),
'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000,
]);
}
} catch (Throwable $e) {
Yii::error($e);
}
}
public static function onAccountTopMenuInit($event)
{
if (!Yii::$app->user->isAdmin() &&
version_compare(Yii::$app->version, '1.8', '<') &&
!AdminMenu::canAccess()
) {
static::onAdminMenuInit($event);
}
}
public static function onDashboardSidebarInit($event)
{
try {
Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent();
$snippets = Snippet::findAll(['target' => Snippet::SIDEBAR_DASHBOARD]);
$canEdit = PagePermission::canEdit();
foreach ($snippets as $snippet) {
if (!$snippet->canView()) {
continue;
}
$event->sender->addWidget(SnippetWidget::class, ['model' => $snippet, 'canEdit' => $canEdit], ['sortOrder' => $snippet->sort_order]);
}
} catch (Throwable $e) {
Yii::error($e);
}
}
public static function onSpaceSidebarInit($event)
{
try {
Yii::$app->moduleManager->getModule('custom_pages')->checkOldGlobalContent();
$space = $event->sender->space;
$canEdit = PagePermission::canEdit();
if ($space->moduleManager->isEnabled('custom_pages')) {
$snippets = ContainerSnippet::find()->contentContainer($space)->all();
foreach ($snippets as $snippet) {
if (!$snippet->canView()) {
continue;
}
$event->sender->addWidget(SnippetWidget::class, ['model' => $snippet, 'canEdit' => $canEdit], ['sortOrder' => $snippet->sort_order]);
}
}
} catch (Throwable $e) {
Yii::error($e);
}
}
public static function onFooterMenuInit($event)
{
try {
foreach (Page::findAll(['target' => Page::NAV_CLASS_FOOTER]) as $page) {
if (!$page->canView()) {
continue;
}
$event->sender->addItem([
'label' => Html::encode(Yii::t('CustomPagesModule.base', $page->title)),
'url' => Url::to(['/custom_pages/view', 'id' => $page->id]),
'htmlOptions' => ['target' => ($page->in_new_window) ? '_blank' : ''],
'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000,
]);
}
} catch (Throwable $e) {
Yii::error($e);
}
}
public static function onPeopleHeadingButtonsInit($event)
{
try {
/* @var PeopleHeadingButtons $peopleHeadingButtons */
$peopleHeadingButtons = $event->sender;
foreach (Page::findAll(['target' => Page::NAV_CLASS_PEOPLE]) as $page) {
if (!$page->canView()) {
continue;
}
$peopleHeadingButtons->addEntry(new MenuLink([
'label' => Html::encode(Yii::t('CustomPagesModule.base', $page->title)),
'url' => Url::to(['/custom_pages/view', 'id' => $page->id]),
'htmlOptions' => ['target' => ($page->in_new_window) ? '_blank' : ''],
'sortOrder' => ($page->sort_order != '') ? $page->sort_order : 1000,
'icon' => $page->icon,
]));
}
} catch (Throwable $e) {
Yii::error($e);
}
}
}