From 5b9ef6220476adac561ecadcb1c1173c9616d4a5 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sun, 1 Mar 2020 18:24:42 +0100 Subject: [PATCH] basic tags drafted --- Admin/Install/db.json | 26 ++++++++++++++++++++++++++ Controller/ApiController.php | 14 ++++++++++++-- Models/WikiDocMapper.php | 16 ++++++++-------- Theme/Backend/wiki-dashboard.tpl.php | 4 +++- Theme/Backend/wiki-doc-single.tpl.php | 7 +++++-- 5 files changed, 54 insertions(+), 13 deletions(-) diff --git a/Admin/Install/db.json b/Admin/Install/db.json index 932b5fd..1e1be41 100644 --- a/Admin/Install/db.json +++ b/Admin/Install/db.json @@ -102,5 +102,31 @@ "foreignKey": "wiki_app_id" } } + }, + "wiki_tag": { + "name": "wiki_tag", + "fields": { + "wiki_tag_id": { + "name": "wiki_tag_id", + "type": "INT", + "null": false, + "primary": true, + "autoincrement": true + }, + "wiki_tag_dst": { + "name": "wiki_tag_dst", + "type": "INT", + "null": false, + "foreignTable": "wiki_article", + "foreignKey": "wiki_article_id" + }, + "wiki_tag_src": { + "name": "wiki_tag_src", + "type": "INT", + "null": false, + "foreignTable": "tag", + "foreignKey": "tag_id" + } + } } } \ No newline at end of file diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 731dc43..87acec2 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -19,6 +19,7 @@ use Modules\Knowledgebase\Models\WikiCategoryMapper; use Modules\Knowledgebase\Models\WikiDoc; use Modules\Knowledgebase\Models\WikiDocMapper; use Modules\Knowledgebase\Models\WikiStatus; +use Modules\Tag\Models\Tag; use phpOMS\Message\NotificationLevel; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; @@ -84,8 +85,17 @@ final class ApiController extends Controller $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')); + if (!empty($tags = $request->getDataJson('tags'))) { + foreach ($tags as $tag) { + if (!\is_numeric($tag['id'])) { + $tagObj = new Tag(); + $tagObj->setTitle($tag['id']); + $tagObj->setColor($tag['color']); + $doc->addTag($tagObj); + } else { + $doc->addTag((int) $tag['id']); + } + } } return $doc; diff --git a/Models/WikiDocMapper.php b/Models/WikiDocMapper.php index e499f1c..ad171e7 100644 --- a/Models/WikiDocMapper.php +++ b/Models/WikiDocMapper.php @@ -14,6 +14,7 @@ declare(strict_types=1); namespace Modules\Knowledgebase\Models; +use Modules\Tag\Models\TagMapper; use phpOMS\DataStorage\Database\DataMapperAbstract; /** @@ -45,18 +46,17 @@ final class WikiDocMapper extends DataMapperAbstract /** * Has many relation. * - * @var array> + * @var array * @since 1.0.0 */ - /* protected static array $hasMany = [ - 'badges' => [ - 'mapper' => BadgeMapper::class, - 'table' => 'wiki_article_badge', - 'self' => 'wiki_article_badge_badge', - 'external' => 'wiki_article_badge_article', + 'tags' => [ + 'mapper' => TagMapper::class, + 'table' => 'wiki_tag', + 'self' => 'wiki_tag_src', + 'external' => 'wiki_tag_dst', ], - ];*/ + ]; /** * Has owns one relation. diff --git a/Theme/Backend/wiki-dashboard.tpl.php b/Theme/Backend/wiki-dashboard.tpl.php index 77a57de..8cb4272 100644 --- a/Theme/Backend/wiki-dashboard.tpl.php +++ b/Theme/Backend/wiki-dashboard.tpl.php @@ -39,7 +39,9 @@ echo $this->getData('nav')->render(); ?>
- Test Tag + getTags(); foreach ($tags as $tag) : ?> + printHtml($tag->getTitle()); ?> + More
diff --git a/Theme/Backend/wiki-doc-single.tpl.php b/Theme/Backend/wiki-doc-single.tpl.php index 979ab3a..3f77888 100644 --- a/Theme/Backend/wiki-doc-single.tpl.php +++ b/Theme/Backend/wiki-doc-single.tpl.php @@ -21,6 +21,7 @@ use Modules\Knowledgebase\Models\NullWikiDoc; */ $categories = $this->getData('categories') ?? []; $doc = $this->getData('document') ?? new NullWikiDoc(); +$tags = $doc->getTags(); /** * @var \phpOMS\Views\View $this @@ -31,12 +32,14 @@ echo $this->getData('nav')->render();
- +
printHtml($doc->getName()); ?>
getDoc(); ?>
- FiBu v7.124.52334 + + printHtml($tag->getTitle()); ?> +