diff --git a/Admin/Installer.php b/Admin/Installer.php index 44575a4..41bef92 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -14,7 +14,12 @@ declare(strict_types=1); namespace Modules\Knowledgebase\Admin; +use Modules\Knowledgebase\Models\WikiCategory; +use Modules\Knowledgebase\Models\WikiCategoryMapper; + +use phpOMS\Module\InfoManager; use phpOMS\Module\InstallerAbstract; +use phpOMS\DataStorage\Database\DatabasePool; /** * Installer class. @@ -26,4 +31,17 @@ use phpOMS\Module\InstallerAbstract; */ class Installer extends InstallerAbstract { + /** + * {@inheritdoc} + */ + public static function install(DatabasePool $dbPool, InfoManager $info) : void + { + parent::install($dbPool, $info); + + $category = new WikiCategory(); + $category->setName('Default'); + $category->setPath('/'); + + WikiCategoryMapper::create($category); + } } diff --git a/Controller/ApiController.php b/Controller/ApiController.php index cb25aaf..731dc43 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -19,7 +19,7 @@ use Modules\Knowledgebase\Models\WikiCategoryMapper; use Modules\Knowledgebase\Models\WikiDoc; use Modules\Knowledgebase\Models\WikiDocMapper; use Modules\Knowledgebase\Models\WikiStatus; - +use phpOMS\Message\NotificationLevel; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; use phpOMS\Model\Message\FormValidation; @@ -55,14 +55,14 @@ final class ApiController extends Controller public function apiWikiDocCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { if (!empty($val = $this->validateWikiDocCreate($request))) { - $response->set('wiki_doc_create', new FormValidation($val)); + $response->set($request->getUri()->__toString(), new FormValidation($val)); return; } - $doc = $this->createWikiDocFromRquest($request); - WikiDocMapper::create($doc); - $response->set('doc', $doc->jsonSerialize()); + $doc = $this->createWikiDocFromRequest($request); + $this->createModel($request->getHeader()->getAccount(), $doc, WikiDocMapper::class, 'doc'); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Wiki', 'Wiki successfully created.', $doc); } /** @@ -74,15 +74,19 @@ final class ApiController extends Controller * * @since 1.0.0 */ - public function createWikiDocFromRquest(RequestAbstract $request) : WikiDoc + public function createWikiDocFromRequest(RequestAbstract $request) : WikiDoc { - $mardkownParser = new Markdown(); - $doc = new WikiDoc(); $doc->setName((string) $request->getData('title')); - $doc->setDoc((string) $request->getData('plain')); - $doc->setCategory((int) $request->getData('category')); - $doc->setStatus((int) $request->getData('status')); + $doc->setDoc(Markdown::parse((string) ($request->getData('plain') ?? ''))); + $doc->setDocRaw((string) ($request->getData('plain') ?? '')); + $doc->setCategory((int) ($request->getData('category') ?? 1)); + $doc->setLanguage((string) ($request->getData('language') ?? $request->getHeader()->getL11n()->getLanguage())); + $doc->setStatus((int) ($request->getData('status') ?? WikiStatus::INACTIVE)); + + if ($request->getData('tags') !== null) { + $doc->addTag((int) $request->getData('tags')); + } return $doc; } @@ -101,7 +105,6 @@ final class ApiController extends Controller $val = []; if (($val['title'] = empty($request->getData('title'))) || ($val['plain'] = empty($request->getData('plain'))) - || ($val['category'] = empty($request->getData('category'))) || ($val['status'] = ( $request->getData('status') !== null && !WikiStatus::isValidValue((int) $request->getData('status')) @@ -129,14 +132,14 @@ final class ApiController extends Controller public function apiWikiCategoryCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { if (!empty($val = $this->validateWikiCategoryCreate($request))) { - $response->set('wiki_category_create', new FormValidation($val)); + $response->set($request->getUri()->__toString(), new FormValidation($val)); return; } - $category = $this->createWikiCategoryFromRquest($request); - WikiCategoryMapper::create($category); - $response->set('category', $category->jsonSerialize()); + $category = $this->createWikiCategoryFromRequest($request); + $this->createModel($request->getHeader()->getAccount(), $category, WikiCategoryMapper::class, 'category'); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Category', 'Category successfully created.', $category); } /** @@ -148,13 +151,18 @@ final class ApiController extends Controller * * @since 1.0.0 */ - public function createWikiCategoryFromRquest(RequestAbstract $request) : WikiCategory + public function createWikiCategoryFromRequest(RequestAbstract $request) : WikiCategory { - $mardkownParser = new Markdown(); - $category = new WikiCategory(); $category->setName((string) $request->getData('title')); - $category->setParent((int) $request->getData('parent')); + + if ($request->getData('path') !== null) { + $category->setPath((string) $request->getData('path')); + } + + if ($request->getData('parent') !== null) { + $category->setParent((int) $request->getData('parent')); + } return $category; } @@ -171,9 +179,7 @@ final class ApiController extends Controller private function validateWikiCategoryCreate(RequestAbstract $request) : array { $val = []; - if (($val['title'] = empty($request->getData('title'))) - || ($val['parent'] = empty($request->getData('parent'))) - ) { + if (($val['title'] = empty($request->getData('title')))) { return $val; } diff --git a/Controller/BackendController.php b/Controller/BackendController.php index f47357b..d1541d9 100644 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -81,7 +81,7 @@ 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)); - $categories = WikiCategoryMapper::getNewest(50); + $categories = WikiCategoryMapper::getAll(); $view->setData('categories', $categories); $documents = WikiDocMapper::getNewest(50); @@ -288,9 +288,14 @@ final class BackendController extends Controller return $view; } - $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-category-single'); + $view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-doc-single'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response)); - $view->setData('category', $category); + + $categories = WikiCategoryMapper::getAll(); + $view->setData('categories', $categories); + + $document = WikiDocMapper::get((int) $request->getData('id')); + $view->setData('document', $document); return $view; } diff --git a/Theme/Backend/Lang/en.lang.php b/Theme/Backend/Lang/en.lang.php index 8b6a14d..971065f 100644 --- a/Theme/Backend/Lang/en.lang.php +++ b/Theme/Backend/Lang/en.lang.php @@ -15,5 +15,6 @@ declare(strict_types=1); return ['Knowledgebase' => [ 'Categories' => 'Categories', 'Name' => 'Name', + 'Parent' => 'Parent', 'Wiki' => 'Wiki', ]]; diff --git a/Theme/Backend/wiki-category-list.tpl.php b/Theme/Backend/wiki-category-list.tpl.php index 136513b..3ad0e8c 100644 --- a/Theme/Backend/wiki-category-list.tpl.php +++ b/Theme/Backend/wiki-category-list.tpl.php @@ -12,6 +12,7 @@ */ declare(strict_types=1); +use phpOMS\Uri\UriFactory; $categories = $this->getData('categories'); @@ -30,18 +31,20 @@ echo $this->getData('nav')->render(); getHtml('ID', '0', '0'); ?> getHtml('Name') ?> - + getHtml('Parent') ?> + - $value) : ++$c; - $url = \phpOMS\Uri\UriFactory::build('{/prefix}admin/account/settings?{?}&id=' . $value->getId()); ?> + $value) : + $url = UriFactory::build('{/prefix}admin/account/settings?{?}&id=' . $value->getId()); ?> printHtml($value->getId()); ?> printHtml($value->getName()); ?> - - - getHtml('Empty', '0', '0'); ?> - + printHtml($value->getParent() !== null ? $value->getParent()->getName() : ''); ?> + + + getHtml('Empty', '0', '0'); ?> + diff --git a/Theme/Backend/wiki-dashboard.tpl.php b/Theme/Backend/wiki-dashboard.tpl.php index 26a6d8d..8d5600c 100644 --- a/Theme/Backend/wiki-dashboard.tpl.php +++ b/Theme/Backend/wiki-dashboard.tpl.php @@ -29,12 +29,18 @@ echo $this->getData('nav')->render(); ?>
- + getId()); ?>
-

getName(); ?>

+

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

- getDoc(); ?> + getDoc(), 0, 300) . (\strlen($doc->getDoc()) > 300 ? '...' : ''); ?>
+
+
+ Test Tag + More +
+
@@ -43,11 +49,11 @@ echo $this->getData('nav')->render(); ?> diff --git a/Theme/Backend/wiki-doc-single.tpl.php b/Theme/Backend/wiki-doc-single.tpl.php new file mode 100644 index 0000000..5a6c2b0 --- /dev/null +++ b/Theme/Backend/wiki-doc-single.tpl.php @@ -0,0 +1,53 @@ +getData('categories') ?? []; +$doc = $this->getData('document') ?? new NullWikiDoc(); + +/** + * @var \phpOMS\Views\View $this + */ +echo $this->getData('nav')->render(); +?> + +
+
+
+

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

+
getDoc(); ?>
+
+ Test Tag +
+
+
+ + +
\ No newline at end of file diff --git a/Theme/Backend/wiki-doc.tpl.php b/Theme/Backend/wiki-doc.tpl.php deleted file mode 100644 index 3ddcd9b..0000000 --- a/Theme/Backend/wiki-doc.tpl.php +++ /dev/null @@ -1,20 +0,0 @@ -getData('doc'); - -/** - * @var \phpOMS\Views\View $this - */ -echo $this->getData('nav')->render(); -?> - -
-
-
-

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

-
- printHtml($doc->getDoc()); ?> -
-
-
-
\ No newline at end of file