%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/wiki/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/wiki/Events.php |
<?php
namespace humhub\modules\wiki;
use humhub\libs\Html;
use humhub\modules\content\components\ContentContainerActiveRecord;
use humhub\modules\space\widgets\Menu;
use humhub\modules\ui\menu\MenuLink;
use humhub\modules\ui\menu\widgets\LeftNavigation;
use humhub\modules\user\widgets\ProfileMenu;
use humhub\modules\wiki\models\DefaultSettings;
use humhub\modules\wiki\models\WikiPage;
use Yii;
/**
* Description of WikiEvents
*
* @author luke
*/
class Events
{
/**
* Initialize Space/Profile menu items
*
* @param ContentContainerActiveRecord $container
* @param LeftNavigation $menu
*/
public static function InitContainerMenus(ContentContainerActiveRecord $container, LeftNavigation $menu)
{
if (empty($container) || !$container->moduleManager->isEnabled('wiki')) {
return;
}
$settings = new DefaultSettings(['contentContainer' => $container]);
$menu->addEntry(new MenuLink([
'label' => Html::encode($settings->module_label),
'url' => $container->createUrl('/wiki/page'),
'icon' => 'book',
'isActive' => MenuLink::isActiveState('wiki'),
]));
// Display Wiki pages with option "Show in Space/Profile menu"
$containerMenuWikiPages = WikiPage::find()
->contentContainer($container)
->readable()
->where(['is_container_menu' => 1])
->all();
foreach ($containerMenuWikiPages as $containerMenuWikiPage) {
/* @var WikiPage $containerMenuWikiPage */
$menu->addEntry(new MenuLink([
'label' => Html::encode($containerMenuWikiPage->title),
'url' => $containerMenuWikiPage->getUrl(),
'icon' => 'file-text-o',
'isActive' => MenuLink::isActiveState('wiki', 'page', 'view') && Yii::$app->request->get('title') == $containerMenuWikiPage->title,
'sortOrder' => $containerMenuWikiPage->container_menu_order,
]));
}
}
public static function onSpaceMenuInit($event)
{
try {
/* @var Menu $spaceMenu */
$spaceMenu = $event->sender;
self::InitContainerMenus($spaceMenu->space, $spaceMenu);
} catch (\Throwable $e) {
Yii::error($e);
}
}
public static function onProfileMenuInit($event)
{
try {
/* @var ProfileMenu $profileMenu */
$profileMenu = $event->sender;
self::InitContainerMenus($profileMenu->user, $profileMenu);
} catch (\Throwable $e) {
Yii::error($e);
}
}
public static function onRestApiAddRules()
{
/* @var \humhub\modules\rest\Module $restModule */
$restModule = Yii::$app->getModule('rest');
$restModule->addRules([
['pattern' => 'wiki', 'route' => 'wiki/rest/wiki/find', 'verb' => ['GET', 'HEAD']],
['pattern' => 'wiki/container/<containerId:\d+>', 'route' => 'wiki/rest/wiki/find-by-container', 'verb' => 'GET'],
['pattern' => 'wiki/container/<containerId:\d+>', 'route' => 'wiki/rest/wiki/delete-by-container', 'verb' => 'DELETE'],
//Wiki Page CRUD
['pattern' => 'wiki/container/<containerId:\d+>', 'route' => 'wiki/rest/wiki/create', 'verb' => 'POST'],
['pattern' => 'wiki/page/<id:\d+>', 'route' => 'wiki/rest/wiki/view', 'verb' => ['GET', 'HEAD']],
['pattern' => 'wiki/page/<id:\d+>', 'route' => 'wiki/rest/wiki/update', 'verb' => 'PUT'],
['pattern' => 'wiki/page/<id:\d+>', 'route' => 'wiki/rest/wiki/delete', 'verb' => ['DELETE']],
//Wiki Page Management
['pattern' => 'wiki/page/<id:\d+>/change-index', 'route' => 'wiki/rest/wiki/change-index', 'verb' => 'PATCH'],
['pattern' => 'wiki/page/<id:\d+>/move', 'route' => 'wiki/rest/wiki/move', 'verb' => 'PATCH'],
//Wiki Page Revision
['pattern' => 'wiki/page/<pageId:\d+>/revisions', 'route' => 'wiki/rest/revision/index', 'verb' => ['GET', 'HEAD']],
['pattern' => 'wiki/revision/<id:\d+>', 'route' => 'wiki/rest/revision/view', 'verb' => 'GET'],
['pattern' => 'wiki/revision/<id:\d+>/revert', 'route' => 'wiki/rest/revision/revert', 'verb' => 'PATCH'],
], 'wiki');
}
}