get('Content')->getData('head'); $head->addAsset(AssetType::CSS, '/Modules/Knowledgebase/Theme/Backend/styles.css'); } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewKnowledgebaseDashboard(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); // @todo: assign default org app to wiki app and default flag, load the wiki app based on org id and with a default flag set. Use this app in the following line instead of the hardcoded "1" $app = (int) ($request->getData('app') ?? 1); $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-dashboard'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response)); $categories = WikiCategoryMapper::getAll() ->with('name') ->where('parent', $request->hasData('category') ? (int) $request->getData('category') : null) ->where('app', $app) ->where('name/language', $response->getLanguage()) ->execute(); $view->setData('categories', $categories); $documents = WikiDocMapper::getAll() ->with('tags') ->with('tags/title') ->where('app', $app) ->where('language', $response->getLanguage()) ->where('tags/title/language', $response->getLanguage()) ->limit(25)->sort('createdAt', OrderType::DESC) ->execute(); $view->setData('docs', $documents); $apps = WikiAppMapper::getAll()->execute(); $view->setData('apps', $apps); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewKnowledgebaseAppList(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-app-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response)); $list = WikiAppMapper::getAll()->execute(); $view->setData('apps', $list); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewKnowledgebaseApp(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-app-single'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response)); $app = WikiAppMapper::get()->where('id', (int) $request->getData('id'))->execute(); $view->setData('app', $app); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewKnowledgebaseAppCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-app-single'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response)); $view->setData('app', new NullWikiApp()); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewKnowledgebaseCategoryList(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $app = (int) ($request->getData('app') ?? $this->app->orgId); $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-category-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response)); $list = WikiCategoryMapper::getAll()->with('name')->where('app', $app)->where('name/language', $response->getLanguage())->execute(); $view->setData('categories', $list); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewKnowledgebaseCategory(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-category-single'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response)); $category = WikiCategoryMapper::get()->where('id', (int) $request->getData('id'))->execute(); $view->setData('category', $category); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewKnowledgebaseCategoryCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-category-single'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response)); $view->setData('category', new NullWikiCategory()); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewKnowledgebaseDocList(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-doc-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response)); $list = WikiDocMapper::getAll()->limit(25)->execute(); $view->setData('docs', $list); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewKnowledgebaseDoc(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $app = (int) ($request->getData('app') ?? $this->app->orgId); $document = WikiDocMapper::get() ->with('tags') ->with('tags/title') ->with('media') ->where('id', (int) $request->getData('id')) ->where('language', $request->getLanguage()) ->where('tags/title/language', $response->getLanguage()) ->execute(); $accountId = $request->header->account; if (!$this->app->accountManager->get($accountId)->hasPermission( PermissionType::READ, $this->app->orgId, $this->app->appName, self::NAME, PermissionState::WIKI, $document->getId()) ) { $view->setTemplate('/Web/Backend/Error/403_inline'); $response->header->status = RequestStatusCode::R_403; return $view; } $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-doc-single'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response)); $categories = WikiCategoryMapper::getAll() ->with('name') ->where('parent', $request->hasData('category') ? (int) $request->getData('category') : null) ->where('app', $app) ->where('name/language', $response->getLanguage()) ->execute(); $view->setData('categories', $categories); $view->setData('document', $document); $view->addData('editable', $this->app->accountManager->get($accountId)->hasPermission( PermissionType::MODIFY, $this->app->orgId, $this->app->appName, self::NAME, PermissionState::WIKI, $document->getId()) ); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewKnowledgebaseDocCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-doc-create'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response)); $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app->l11nManager, $request, $response); $view->addData('editor', $editor); $tagSelector = new \Modules\Tag\Theme\Backend\Components\TagSelector\BaseView($this->app->l11nManager, $request, $response); $view->addData('tagSelector', $tagSelector); $view->setData('doc', new NullWikiDoc()); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewKnowledgebaseDocEdit(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-doc-create'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response)); $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app->l11nManager, $request, $response); $view->addData('editor', $editor); $accGrpSelector = new \Modules\Profile\Theme\Backend\Components\AccountGroupSelector\BaseView($this->app->l11nManager, $request, $response); $view->addData('accGrpSelector', $accGrpSelector); $tagSelector = new \Modules\Tag\Theme\Backend\Components\TagSelector\BaseView($this->app->l11nManager, $request, $response); $view->addData('tagSelector', $tagSelector); $view->addData('doc', WikiDocMapper::get()->where('id', (int) ($request->getData('id') ?? 0))->execute()); return $view; } }