From ff6e521eb9d186cecd29c591343d23f66ff70287 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sun, 23 Feb 2020 22:59:08 +0100 Subject: [PATCH] start working on wiki --- Admin/Install/Navigation.install.json | 45 +++++--- Controller/BackendController.php | 132 +++++++++++++++++----- Theme/Backend/Lang/Navigation.en.lang.php | 4 +- Theme/Backend/wiki-app-create.tpl.php | 21 ++++ Theme/Backend/wiki-app-list.tpl.php | 21 ++++ Theme/Backend/wiki-app-single.tpl.php | 21 ++++ Theme/Backend/wiki-dashboard.tpl.php | 55 +++++++-- 7 files changed, 248 insertions(+), 51 deletions(-) create mode 100644 Theme/Backend/wiki-app-create.tpl.php create mode 100644 Theme/Backend/wiki-app-list.tpl.php create mode 100644 Theme/Backend/wiki-app-single.tpl.php diff --git a/Admin/Install/Navigation.install.json b/Admin/Install/Navigation.install.json index 861e85f..b6ceca9 100644 --- a/Admin/Install/Navigation.install.json +++ b/Admin/Install/Navigation.install.json @@ -33,21 +33,6 @@ "pid": "/wiki", "type": 3, "subtype": 1, - "name": "Create", - "uri": "{/prefix}wiki/doc/create?{?}", - "target": "self", - "icon": null, - "order": 5, - "from": "Knowledgebase", - "permission": { "permission": 4, "type": null, "element": null }, - "parent": 1005901001, - "children": [] - }, - { - "id": 1005904001, - "pid": "/wiki", - "type": 3, - "subtype": 1, "name": "Categories", "uri": "{/prefix}wiki/category/list?{?}", "target": "self", @@ -57,6 +42,36 @@ "permission": { "permission": 2, "type": null, "element": null }, "parent": 1005901001, "children": [] + }, + { + "id": 1005904001, + "pid": "/wiki", + "type": 3, + "subtype": 1, + "name": "Create", + "uri": "{/prefix}wiki/doc/create?{?}", + "target": "self", + "icon": null, + "order": 10, + "from": "Knowledgebase", + "permission": { "permission": 4, "type": null, "element": null }, + "parent": 1005901001, + "children": [] + }, + { + "id": 1005905001, + "pid": "/wiki", + "type": 3, + "subtype": 1, + "name": "Apps", + "uri": "{/prefix}wiki/app/list?{?}", + "target": "self", + "icon": null, + "order": 15, + "from": "Knowledgebase", + "permission": { "permission": 2, "type": null, "element": null }, + "parent": 1005901001, + "children": [] } ] } diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 02ea6c9..f47357b 100644 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -14,9 +14,11 @@ declare(strict_types=1); namespace Modules\Knowledgebase\Controller; +use Modules\Knowledgebase\Models\NullWikiApp; use Modules\Knowledgebase\Models\NullWikiCategory; use Modules\Knowledgebase\Models\NullWikiDoc; use Modules\Knowledgebase\Models\PermissionState; +use Modules\Knowledgebase\Models\WikiAppMapper; use Modules\Knowledgebase\Models\WikiCategoryMapper; use Modules\Knowledgebase\Models\WikiDocMapper; @@ -79,8 +81,84 @@ final class BackendController extends Controller $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-dashboard'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response)); - $list = WikiCategoryMapper::getNewest(50); - $view->setData('categories', $list); + $categories = WikiCategoryMapper::getNewest(50); + $view->setData('categories', $categories); + + $documents = WikiDocMapper::getNewest(50); + $view->setData('docs', $documents); + + 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(); + $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((int) $request->getData('id')); + $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; } @@ -110,31 +188,6 @@ final class BackendController extends Controller 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(); - $view->setData('docs', $list); - - return $view; - } - /** * Routing end-point for application behaviour. * @@ -183,6 +236,31 @@ final class BackendController extends Controller 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(); + $view->setData('docs', $list); + + return $view; + } + /** * Routing end-point for application behaviour. * diff --git a/Theme/Backend/Lang/Navigation.en.lang.php b/Theme/Backend/Lang/Navigation.en.lang.php index 5f94028..7dfeac5 100644 --- a/Theme/Backend/Lang/Navigation.en.lang.php +++ b/Theme/Backend/Lang/Navigation.en.lang.php @@ -13,5 +13,7 @@ declare(strict_types=1); return ['Navigation' => [ - 'Wiki' => 'Wiki', + 'Wiki' => 'Wiki', + 'Categories' => 'Categories', + 'Apps' => 'Apps', ]]; diff --git a/Theme/Backend/wiki-app-create.tpl.php b/Theme/Backend/wiki-app-create.tpl.php new file mode 100644 index 0000000..86a7497 --- /dev/null +++ b/Theme/Backend/wiki-app-create.tpl.php @@ -0,0 +1,21 @@ +getData('app'); + +/** + * @var \phpOMS\Views\View $this + */ +echo $this->getData('nav')->render(); +?> \ No newline at end of file diff --git a/Theme/Backend/wiki-app-list.tpl.php b/Theme/Backend/wiki-app-list.tpl.php new file mode 100644 index 0000000..5e69841 --- /dev/null +++ b/Theme/Backend/wiki-app-list.tpl.php @@ -0,0 +1,21 @@ +getData('apps'); + +/** + * @var \phpOMS\Views\View $this + */ +echo $this->getData('nav')->render(); +?> \ No newline at end of file diff --git a/Theme/Backend/wiki-app-single.tpl.php b/Theme/Backend/wiki-app-single.tpl.php new file mode 100644 index 0000000..86a7497 --- /dev/null +++ b/Theme/Backend/wiki-app-single.tpl.php @@ -0,0 +1,21 @@ +getData('app'); + +/** + * @var \phpOMS\Views\View $this + */ +echo $this->getData('nav')->render(); +?> \ No newline at end of file diff --git a/Theme/Backend/wiki-dashboard.tpl.php b/Theme/Backend/wiki-dashboard.tpl.php index 7c7563f..0b7050a 100644 --- a/Theme/Backend/wiki-dashboard.tpl.php +++ b/Theme/Backend/wiki-dashboard.tpl.php @@ -1,15 +1,54 @@ -getData('categories'); +getData('categories') ?? []; +$documents = $this->getData('docs') ?? []; + +/** + * @var \phpOMS\Views\View $this + */ echo $this->getData('nav')->render(); ?>
-
- -
+
+
+ +
+

getName(); ?>

+
+ getDoc(); ?> +
+
+ +
+
+ + -
+
\ No newline at end of file