diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index cf64d86..d6e57aa 100755 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -48,4 +48,15 @@ return [ ], ], ], + '^.*/editor/edit.*$' => [ + [ + 'dest' => '\Modules\Editor\Controller\BackendController:viewEditorEdit', + 'verb' => RouteVerb::GET, + 'permission' => [ + 'module' => BackendController::MODULE_NAME, + 'type' => PermissionType::MODIFY, + 'state' => PermissionState::DOC, + ], + ], + ], ]; diff --git a/Controller/BackendController.php b/Controller/BackendController.php index b148b50..0420e0c 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -159,6 +159,52 @@ final class BackendController extends Controller $tagSelector = new \Modules\Tag\Theme\Backend\Components\TagSelector\BaseView($this->app->l11nManager, $request, $response); $view->addData('tagSelector', $tagSelector); + $view->addData('editable', $this->app->accountManager->get($accountId)->hasPermission( + PermissionType::MODIFY, $this->app->orgId, $this->app->appName, self::MODULE_NAME, PermissionState::DOC, $doc->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 viewEditorEdit(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface + { + $view = new View($this->app->l11nManager, $request, $response); + + /** @var \Modules\Editor\Models\EditorDoc $doc */ + $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-create'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005301001, $request, $response)); + $view->addData('doc', $doc); + + $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); + return $view; } } diff --git a/Theme/Backend/editor-create.tpl.php b/Theme/Backend/editor-create.tpl.php index e9a58d0..ecd1d5b 100755 --- a/Theme/Backend/editor-create.tpl.php +++ b/Theme/Backend/editor-create.tpl.php @@ -13,6 +13,11 @@ declare(strict_types=1); use phpOMS\Uri\UriFactory; +use Modules\Editor\Models\NullEditorDoc; + +/** @var \Modules\Editor\Models\EditorDoc $doc */ +$doc = $this->getData('doc') ?? new NullEditorDoc(); +$isNewDoc = $doc instanceof NullEditorDoc; /** @var \phpOMS\Views\View $this */ echo $this->getData('nav')->render(); ?> @@ -21,9 +26,9 @@ echo $this->getData('nav')->render(); ?>
-
+
-
+
@@ -37,7 +42,13 @@ echo $this->getData('nav')->render(); ?>
- getData('editor')->getData('text')->render('editor', 'plain', 'fEditor'); ?> + getData('editor')->getData('text')->render( + 'editor', + 'plain', + 'fEditor', + $doc->getPlain(), + $doc->getContent() + ); ?>
diff --git a/Theme/Backend/editor-single.tpl.php b/Theme/Backend/editor-single.tpl.php index 6d958e4..13c2b47 100755 --- a/Theme/Backend/editor-single.tpl.php +++ b/Theme/Backend/editor-single.tpl.php @@ -1,4 +1,5 @@ getData('doc'); + +/** @var bool $editable */ +$editable = $this->getData('editable'); + +/** @var \Modules\Tag\Models\Tag[] $tag */ +$tags = $doc->getTags(); + +/** @var \phpOMS\Views\View $this */ echo $this->getData('nav')->render(); ?> -
-
-
-
-
-
-
+
+
+

printHtml($doc->getTitle()); ?>

+ getContent(); ?> +
+ +
+
+
+ + printHtml($tag->getTitle()); ?> +
- -
-
-
-
- -
-
-
-
- getData('editor')->render('editor'); ?> -
-
-
-
- -
-
- getData('editor')->getData('text')->render( - 'editor', - 'plain', - 'fEditor', - $doc->getPlain(), - $doc->getContent() - ); ?> -
-
- -
-
-
-
-
- -
-
-
-
-
-
+ +
+ Edit +
+ +
+