* @author Dennis Eichhorn * @copyright Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 * @link http://orange-management.com */ namespace Modules\Editor; use Model\Message\FormValidation; use Modules\Navigation\Models\Navigation; use Modules\Navigation\Views\NavigationView; use Modules\Editor\Models\EditorDoc; use Modules\Editor\Models\EditorDocMapper; use phpOMS\Asset\AssetType; use phpOMS\Contract\RenderableInterface; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; use phpOMS\Module\ModuleAbstract; use phpOMS\Module\WebInterface; use phpOMS\Views\View; use phpOMS\Views\ViewLayout; /** * Calendar controller class. * * @category Modules * @package Editor * @author OMS Development Team * @author Dennis Eichhorn * @license OMS License 1.0 * @link http://orange-management.com * @since 1.0.0 */ class Controller extends ModuleAbstract implements WebInterface { /** * Module path. * * @var string * @since 1.0.0 */ /* public */ const MODULE_PATH = __DIR__; /** * Module version. * * @var string * @since 1.0.0 */ /* public */ const MODULE_VERSION = '1.0.0'; /** * Module name. * * @var string * @since 1.0.0 */ /* public */ const MODULE_NAME = 'Editor'; /** * Providing. * * @var string * @since 1.0.0 */ protected static $providing = []; /** * Dependencies. * * @var string * @since 1.0.0 */ protected static $dependencies = [ ]; /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return void * * @since 1.0.0 * @author Dennis Eichhorn */ public function setUpEditorEditor(RequestAbstract $request, ResponseAbstract $response, $data = null) { $head = $response->get('Content')->getData('head'); $head->addAsset(AssetType::JS, $request->getUri()->getBase() . 'Modules/Editor/Controller.js'); } /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable * * @since 1.0.0 * @author Dennis Eichhorn */ public function viewEditorCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Editor/Theme/Backend/editor-create'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005301001, $request, $response)); return $view; } /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable * * @since 1.0.0 * @author Dennis Eichhorn */ public function viewEditorList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); $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 * @author Dennis Eichhorn */ public function viewEditorSingle(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Editor/Theme/Backend/editor'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005301001, $request, $response)); $doc = EditorDocMapper::get((int) $request->getData('id')); $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 * * @since 1.0.0 * @author Dennis Eichhorn */ public function apiEditorCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) { if (!empty($val = $this->validateEditorCreate($request))) { $response->set('editor_create', new FormValidation($val)); return; } $doc = new EditorDoc(); $doc->setTitle($request->getData('title') ?? ''); $doc->setPlain($request->getData('plain') ?? ''); $doc->setContent($request->getData('plain') ?? ''); $doc->setCreatedAt(new \DateTime('now')); $doc->setCreatedBy($request->getAccount()); EditorDocMapper::create($doc); $response->set('editor', $doc->jsonSerialize()); } }