diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 47dbc66..5cf0827 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -20,11 +20,13 @@ use Modules\Tag\Models\L11nTagMapper; use Modules\Tag\Models\Tag; use Modules\Tag\Models\TagMapper; use phpOMS\Localization\ISO639x1Enum; +use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\NotificationLevel; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; use phpOMS\Model\Message\FormValidation; use phpOMS\System\MimeType; +use phpOMS\Uri\HttpUri; /** * Tag controller class. @@ -53,7 +55,9 @@ final class ApiController extends Controller { $val = []; if (($val['title'] = empty($request->getData('title'))) - || ($val['color'] = (!empty($request->getData('color')) && !\ctype_xdigit(\ltrim($request->getData('color'), '#')))) + || ($val['color'] = (!empty($request->getData('color')) + && (!\ctype_xdigit(\ltrim($request->getData('color'), '#')) + || \stripos($request->getData('color'), '#') !== 0))) ) { return $val; } @@ -124,8 +128,13 @@ final class ApiController extends Controller $tag = $this->createTagFromRequest($request); $this->createModel($request->getHeader()->getAccount(), $tag, TagMapper::class, 'tag'); - $request->setData('tag', $tag->getId(), true); - $l11nTag = $this->createL11nTagFromRequest($request); + $l11nRequest = new HttpRequest($request->getUri()); + $l11nRequest->setData('tag', $tag->getId()); + $l11nRequest->setData('title', $request->getData('title')); + $l11nRequest->setData('color', $request->getData('color')); + $l11nRequest->setData('language', $request->getData('language')); + + $l11nTag = $this->createL11nTagFromRequest($l11nRequest); $this->createModel($request->getHeader()->getAccount(), $l11nTag, L11nTagMapper::class, 'tag_l11n'); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Tag', 'Tag successfully created', $tag); @@ -170,7 +179,7 @@ final class ApiController extends Controller private function createTagFromRequest(RequestAbstract $request) : Tag { $tag = new Tag(); - $tag->setColor($request->getData('color') ?? '#00000000'); + $tag->setColor(\str_pad($request->getData('color') ?? '#000000ff', 9, 'f')); return $tag; } @@ -188,7 +197,9 @@ final class ApiController extends Controller { $l11nTag = new L11nTag(); $l11nTag->setTag((int) ($request->getData('tag') ?? 0)); - $l11nTag->setLanguage((string) ($request->getData('language') ?? ISO639x1Enum::_EN)); + $l11nTag->setLanguage((string) ( + $request->getData('language') ?? $request->getHeader()->getL11n()->getLanguage() + )); $l11nTag->setTitle((string) ($request->getData('title') ?? '')); return $l11nTag; diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 26f5680..fcc72d0 100644 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -73,8 +73,17 @@ final class BackendController extends Controller $view->setTemplate('/Modules/Tag/Theme/Backend/tag-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1007501001, $request, $response)); - $tags = TagMapper::withConditional('language', $response->getHeader()->getL11n()->getLanguage())::getNewest(50); - $view->addData('tags', $tags); + if ($request->getData('ptype') === '-') { + $view->setData('tags', + TagMapper::withConditional('language', $response->getHeader()->getL11n()->getLanguage()) + ::getBeforePivot((int) ($request->getData('id') ?? 0), null, 25) + ); + } else { + $view->setData('tags', + TagMapper::withConditional('language', $response->getHeader()->getL11n()->getLanguage()) + ::getAfterPivot((int) ($request->getData('id') ?? 0), null, 25) + ); + } return $view; } diff --git a/Theme/Backend/tag-list.tpl.php b/Theme/Backend/tag-list.tpl.php index 2cd18ea..d2508a9 100644 --- a/Theme/Backend/tag-list.tpl.php +++ b/Theme/Backend/tag-list.tpl.php @@ -12,12 +12,17 @@ */ declare(strict_types=1); +use phpOMS\Uri\UriFactory; + /** * @var \phpOMS\Views\View $this * @var \Modules\Tag\Models\Tag[] $tags */ $tags = $this->getData('tags'); +$previous = empty($tags) ? '{/prefix}tag/list' : '{/prefix}tag/list?{?}&id=' . \reset($tags)->getId() . '&ptype=-'; +$next = empty($tags) ? '{/prefix}tag/list' : '{/prefix}tag/list?{?}&id=' . \end($tags)->getId() . '&ptype=+'; + echo $this->getData('nav')->render(); ?>
@@ -30,7 +35,7 @@ echo $this->getData('nav')->render(); ?> getHtml('Color') ?> $value) : ++$count; - $url = \phpOMS\Uri\UriFactory::build('{/prefix}tag/single?{?}&id=' . $value->getId()); ?> + $url = UriFactory::build('{/prefix}tag/single?{?}&id=' . $value->getId()); ?> printHtml($value->getTitle()); ?>            @@ -39,6 +44,9 @@ echo $this->getData('nav')->render(); ?> getHtml('Empty', '0', '0'); ?> -
+