get('Content')->getData('head'); $head->addAsset(AssetType::JSLATE, '/Modules/Editor/Models/Editor.js'); $head->addAsset(AssetType::JSLATE, '/Modules/Editor/Controller.js'); } /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable * * @since 1.0.0 * @codeCoverageIgnore */ public function viewEditorCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission( PermissionType::CREATE, $this->app->orgId, $this->app->appName, self::MODULE_NAME, PermissionState::DOC) ) { $view->setTemplate('/Web/Backend/Error/403_inline'); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return $view; } $view->setTemplate('/Modules/Editor/Theme/Backend/editor-create'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005301001, $request, $response)); $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response); $view->addData('editor', $editor); return $view; } /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable * * @since 1.0.0 * @codeCoverageIgnore */ public function viewEditorList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission( PermissionType::READ, $this->app->orgId, $this->app->appName, self::MODULE_NAME, PermissionState::DASHBOARD) ) { $view->setTemplate('/Web/Backend/Error/403_inline'); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return $view; } $view->setTemplate('/Modules/Editor/Theme/Backend/editor-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005301001, $request, $response)); $docs = EditorDocMapper::getNewest(50); $view->addData('docs', $docs); return $view; } /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable * * @since 1.0.0 * @codeCoverageIgnore */ public function viewEditorSingle(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); $doc = EditorDocMapper::get((int) $request->getData('id')); $accountId = $request->getHeader()->getAccount(); if ($doc->getCreatedBy()->getId() !== $accountId && !$this->app->accountManager->get($accountId)->hasPermission( PermissionType::READ, $this->app->orgId, $this->app->appName, self::MODULE_NAME, PermissionState::DOC, $doc->getId()) ) { $view->setTemplate('/Web/Backend/Error/403_inline'); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return $view; } $view->setTemplate('/Modules/Editor/Theme/Backend/editor-single'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005301001, $request, $response)); $view->addData('doc', $doc); return $view; } private function validateEditorCreate(RequestAbstract $request) : array { $val = []; if (($val['title'] = empty($request->getData('title'))) || ($val['plain'] = empty($request->getData('plain'))) ) { return $val; } return []; } /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiEditorCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { if (!$this->app->accountManager->get($request->getHeader()->getAccount())->hasPermission( PermissionType::CREATE, $this->app->orgId, $this->app->appName, self::MODULE_NAME, PermissionState::DOC) ) { $response->set('editor_create', null); $response->getHeader()->setStatusCode(RequestStatusCode::R_403); return; } if (!empty($val = $this->validateEditorCreate($request))) { $response->set('editor_create', new FormValidation($val)); return; } $doc = $this->createDocFromRequest($request); EditorDocMapper::create($doc); $response->set('editor', $doc->jsonSerialize()); } /** * Method to create task from request. * * @param RequestAbstract $request Request * * @return EditorDoc * * @since 1.0.0 */ private function createDocFromRequest(RequestAbstract $request) : EditorDoc { $doc = new EditorDoc(); $doc->setTitle((string) ($request->getData('title') ?? '')); $doc->setPlain((string) ($request->getData('plain') ?? '')); $doc->setContent(Markdown::parse((string) ($request->getData('plain') ?? ''))); $doc->setCreatedBy($request->getHeader()->getAccount()); return $doc; } }