From ba36b8932f1aa05805e74898f5dc0ca4934997af Mon Sep 17 00:00:00 2001 From: Markus Klein <markus.klein@typo3.org> Date: Mon, 28 Aug 2023 15:29:05 +0200 Subject: [PATCH] [TASK] Add language attribute to *.action viewhelpers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This supplements the other viewhelpers already equipped with this attribute. Resolves: #101775 Releases: main, 12.4, 11.5 Change-Id: Iadcdb1de591d9d9e56722623cacd1a5cf8fbe0af Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80827 Tested-by: core-ci <typo3@b13.com> Tested-by: Stefan Bürk <stefan@buerk.tech> Reviewed-by: Stefan Bürk <stefan@buerk.tech> --- .../fluid/Classes/ViewHelpers/Link/ActionViewHelper.php | 3 +++ .../fluid/Classes/ViewHelpers/Uri/ActionViewHelper.php | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Link/ActionViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Link/ActionViewHelper.php index 95e2d27c9212..e5c516d70724 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/Link/ActionViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/Link/ActionViewHelper.php @@ -59,6 +59,7 @@ class ActionViewHelper extends AbstractTagBasedViewHelper $this->registerArgument('pageUid', 'int', 'Target page. See TypoLink destination'); $this->registerArgument('pageType', 'int', 'Type of the target page. See typolink.parameter'); $this->registerArgument('noCache', 'bool', 'Set this to disable caching for the target page. You should not need this.'); + $this->registerArgument('language', 'string', 'link to a specific language - defaults to the current language, use a language ID or "current" to enforce a specific language', false); $this->registerArgument('section', 'string', 'The anchor to be added to the URI'); $this->registerArgument('format', 'string', 'The requested format, e.g. ".html'); $this->registerArgument('linkAccessRestrictedPages', 'bool', 'If set, links pointing to access restricted pages will still link to the page even though the page cannot be accessed.'); @@ -85,6 +86,7 @@ class ActionViewHelper extends AbstractTagBasedViewHelper $pageUid = (int)$this->arguments['pageUid'] ?: null; $pageType = (int)($this->arguments['pageType'] ?? 0); $noCache = (bool)($this->arguments['noCache'] ?? false); + $language = $this->arguments['language'] ?? null; $section = (string)$this->arguments['section']; $format = (string)$this->arguments['format']; $linkAccessRestrictedPages = (bool)($this->arguments['linkAccessRestrictedPages'] ?? false); @@ -98,6 +100,7 @@ class ActionViewHelper extends AbstractTagBasedViewHelper ->reset() ->setTargetPageType($pageType) ->setNoCache($noCache) + ->setLanguage($language) ->setSection($section) ->setFormat($format) ->setLinkAccessRestrictedPages($linkAccessRestrictedPages) diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Uri/ActionViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Uri/ActionViewHelper.php index 52257e7a6430..b738478a2734 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/Uri/ActionViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/Uri/ActionViewHelper.php @@ -15,6 +15,7 @@ namespace TYPO3\CMS\Fluid\ViewHelpers\Uri; +use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic; @@ -50,6 +51,7 @@ class ActionViewHelper extends AbstractViewHelper $this->registerArgument('pageUid', 'int', 'Target page. See TypoLink destination'); $this->registerArgument('pageType', 'int', 'Type of the target page. See typolink.parameter', false, 0); $this->registerArgument('noCache', 'bool', 'Set this to disable caching for the target page. You should not need this.', false, null); + $this->registerArgument('language', 'string', 'link to a specific language - defaults to the current language, use a language ID or "current" to enforce a specific language', false); $this->registerArgument('section', 'string', 'The anchor to be added to the URI', false, ''); $this->registerArgument('format', 'string', 'The requested format, e.g. ".html', false, ''); $this->registerArgument('linkAccessRestrictedPages', 'bool', 'If set, links pointing to access restricted pages will still link to the page even though the page cannot be accessed.', false, false); @@ -77,6 +79,8 @@ class ActionViewHelper extends AbstractViewHelper $pageType = (int)($arguments['pageType'] ?? 0); /** @var bool $noCache */ $noCache = (bool)($arguments['noCache'] ?? false); + /** @var string|null $language */ + $language = $arguments['language'] ?? null; /** @var string|null $section */ $section = $arguments['section'] ?? null; /** @var string|null $format */ @@ -102,6 +106,7 @@ class ActionViewHelper extends AbstractViewHelper /** @var array|null $arguments */ $arguments = $arguments['arguments'] ?? []; + /** @var UriBuilder $uriBuilder */ $uriBuilder = $renderingContext->getUriBuilder(); $uriBuilder->reset(); @@ -145,6 +150,8 @@ class ActionViewHelper extends AbstractViewHelper $uriBuilder->setLinkAccessRestrictedPages(true); } + $uriBuilder->setLanguage($language); + return $uriBuilder->uriFor($action, $arguments, $controller, $extensionName, $pluginName); } } -- GitLab