From 4d906efa7c51c06347ee4acee24bb8f41925a7d1 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Tue, 31 Mar 2020 19:01:52 +0200 Subject: [PATCH] use tags --- Admin/Install/db.json | 26 +++++++++++++++++++++++ Controller/ApiController.php | 18 ++++++++++++++++ Controller/BackendController.php | 2 +- Models/Template.php | 35 +++++++++++++++++++++++++++++++ Models/TemplateMapper.php | 7 +++++++ Theme/Backend/Lang/de.lang.php | 1 + Theme/Backend/Lang/en.lang.php | 1 + Theme/Backend/helper-list.tpl.php | 7 +++++-- 8 files changed, 94 insertions(+), 3 deletions(-) diff --git a/Admin/Install/db.json b/Admin/Install/db.json index 039a318..ea02226 100644 --- a/Admin/Install/db.json +++ b/Admin/Install/db.json @@ -72,6 +72,32 @@ } } }, + "helper_template_tag": { + "name": "helper_template_tag", + "fields": { + "helper_template_tag_id": { + "name": "helper_template_tag_id", + "type": "INT", + "null": false, + "primary": true, + "autoincrement": true + }, + "helper_template_tag_dst": { + "name": "helper_template_tag_dst", + "type": "INT", + "null": false, + "foreignTable": "helper_template", + "foreignKey": "helper_template_id" + }, + "helper_template_tag_src": { + "name": "helper_template_tag_src", + "type": "INT", + "null": false, + "foreignTable": "tag", + "foreignKey": "tag_id" + } + } + }, "helper_report": { "name": "helper_report", "fields": { diff --git a/Controller/ApiController.php b/Controller/ApiController.php index eb5dfe3..79853b1 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -38,6 +38,8 @@ use phpOMS\System\MimeType; use phpOMS\Utils\Parser\Markdown\Markdown; use phpOMS\Utils\StringUtils; use phpOMS\Views\View; +use phpOMS\Message\Http\HttpResponse; +use Modules\Tag\Models\NullTag; /** * Helper controller class. @@ -320,6 +322,22 @@ final class ApiController extends Controller $helperTemplate->setCreatedBy(new NullAccount($request->getHeader()->getAccount())); $helperTemplate->setDatatype((int) ($request->getData('datatype') ?? TemplateDataType::OTHER)); + if (!empty($tags = $request->getDataJson('tags'))) { + foreach ($tags as $tag) { + if (!isset($tag['id'])) { + $request->setData('title', $tag['title'], true); + $request->setData('color', $tag['color'], true); + $request->setData('language', $tag['language'], true); + + $internalResponse = new HttpResponse(); + $this->app->moduleManager->get('Tag')->apiTagCreate($request, $internalResponse, null); + $helperTemplate->addTag($internalResponse->get($request->getUri()->__toString())['response']); + } else { + $helperTemplate->addTag(new NullTag((int) $tag['id'])); + } + } + } + return $helperTemplate; } diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 6a17c81..205fef8 100644 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -57,7 +57,7 @@ final class BackendController extends Controller $view->setTemplate('/Modules/Helper/Theme/Backend/helper-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1002701001, $request, $response)); - $reports = TemplateMapper::getNewest(25); + $reports = TemplateMapper::withConditional('language', $response->getHeader()->getL11n()->getLanguage())::getNewest(25); $view->addData('reports', $reports); return $view; diff --git a/Models/Template.php b/Models/Template.php index 681f73c..b334941 100644 --- a/Models/Template.php +++ b/Models/Template.php @@ -20,6 +20,7 @@ use Modules\Media\Models\Collection; use Modules\Media\Models\NullCollection; use Modules\Organization\Models\NullUnit; use Modules\Organization\Models\Unit; +use Modules\Tag\Models\Tag; /** * Template model. @@ -135,6 +136,14 @@ class Template implements \JsonSerializable */ private array $reports = []; + /** + * Tags. + * + * @var Tag[] + * @since 1.0.0 + */ + private array $tags = []; + /** * Constructor * @@ -464,6 +473,32 @@ class Template implements \JsonSerializable return $this->isStandalone; } + /** + * Get tags + * + * @return array + * + * @since 1.0.0 + */ + public function getTags() : array + { + return $this->tags; + } + + /** + * Add tag + * + * @param Tag $tag Tag + * + * @return void + * + * @since 1.0.0 + */ + public function addTag(Tag $tag) : void + { + $this->tags[] = $tag; + } + /** * {@inheritdoc} */ diff --git a/Models/TemplateMapper.php b/Models/TemplateMapper.php index 8419904..389c77a 100644 --- a/Models/TemplateMapper.php +++ b/Models/TemplateMapper.php @@ -18,6 +18,7 @@ use Modules\Admin\Models\AccountMapper; use Modules\Media\Models\CollectionMapper; use Modules\Organization\Models\UnitMapper; use phpOMS\DataStorage\Database\DataMapperAbstract; +use Modules\Tag\Models\TagMapper; /** * Report mapper class. @@ -93,6 +94,12 @@ final class TemplateMapper extends DataMapperAbstract 'external' => 'helper_report_template', 'self' => null, ], + 'tags' => [ + 'mapper' => TagMapper::class, + 'table' => 'helper_template_tag', + 'self' => 'helper_template_tag_src', + 'external' => 'helper_template_tag_dst', + ], ]; /** diff --git a/Theme/Backend/Lang/de.lang.php b/Theme/Backend/Lang/de.lang.php index 1a31507..3cb5e8c 100644 --- a/Theme/Backend/Lang/de.lang.php +++ b/Theme/Backend/Lang/de.lang.php @@ -52,6 +52,7 @@ return ['Helper' => [ 'Sources' => 'Quelle', 'Standalone' => 'Eigenständig', 'Storage' => 'Speicher', + 'Tag' => 'Tag', 'Template' => 'Template', 'Title' => 'Titel', 'Type' => 'Typ', diff --git a/Theme/Backend/Lang/en.lang.php b/Theme/Backend/Lang/en.lang.php index 745f6af..20c5272 100644 --- a/Theme/Backend/Lang/en.lang.php +++ b/Theme/Backend/Lang/en.lang.php @@ -52,6 +52,7 @@ return ['Helper' => [ 'Sources' => 'Sources', 'Standalone' => 'Standalone', 'Storage' => 'Storage', + 'Tag' => 'Tag', 'Template' => 'Template', 'Title' => 'Title', 'Type' => 'Type', diff --git a/Theme/Backend/helper-list.tpl.php b/Theme/Backend/helper-list.tpl.php index 94fd3ee..817ca8f 100644 --- a/Theme/Backend/helper-list.tpl.php +++ b/Theme/Backend/helper-list.tpl.php @@ -27,8 +27,8 @@ echo $this->getData('nav')->render(); ?> - @@ -39,8 +39,11 @@ echo $this->getData('nav')->render(); ?> $template) : $url = \phpOMS\Uri\UriFactory::build('{/prefix}helper/report/view?{?}&id=' . $template->getId()); ?> -
getHtml('ID', '0', '0'); ?> getHtml('Name') ?> + getHtml('Tag'); ?> getHtml('Creator') ?> getHtml('Updated') ?>
printHtml($template->getId()); ?> printHtml($template->getName()); ?> + + getTags(); foreach ($tags as $tag) : ?> + printHtml($tag->getTitle()); ?> + printHtml($template->getCreatedBy()->getName1()); ?> printHtml($template->getCreatedAt()->format('Y-m-d')); ?>