From 61a63389ad396bf5328fa27c152875a0ca1f01f3 Mon Sep 17 00:00:00 2001 From: Benni Mack Date: Fri, 2 Mar 2018 16:36:44 +0100 Subject: [PATCH] [FEATURE] Add absolute option to typolink VHs In order to generate absolute URLs through the Typolink ViewHelpers of TYPO3 Fluid, a new fluid parameter "absolute" is added to the following ViewHelpers. * * As typolink() is allowing this option, the generation of absolute URLs behaves the same way as typolink() itself does it. Use it like this: The ViewHelper code: - Link To My Page generates: - Link to My Page The ViewHelper code: - Link To My Page generates: - Link to My Page The ViewHelper code: - generates: - "index.php?id=23" The ViewHelper code: - generates: - "https://www.mydomain.com/index.php?id=23" Resolves: #84120 Releases: master Change-Id: I6b6df0ebc8a7c257ab854959e5425debd0cadd5e Reviewed-on: https://review.typo3.org/55990 Tested-by: TYPO3com Reviewed-by: Frans Saris Reviewed-by: Georg Ringer Tested-by: Georg Ringer Reviewed-by: Wouter Wolters Tested-by: Riccardo De Contardi Reviewed-by: Benni Mack Tested-by: Benni Mack --- ...120-AbsoluteURLsForTypolinkViewHelpers.rst | 33 +++++++++++++++++++ .../ViewHelpers/Link/TypolinkViewHelper.php | 5 ++- .../ViewHelpers/Uri/TypolinkViewHelper.php | 5 ++- .../Link/TypolinkViewHelperTest.php | 2 ++ 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Feature-84120-AbsoluteURLsForTypolinkViewHelpers.rst diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-84120-AbsoluteURLsForTypolinkViewHelpers.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-84120-AbsoluteURLsForTypolinkViewHelpers.rst new file mode 100644 index 000000000000..33423806142b --- /dev/null +++ b/typo3/sysext/core/Documentation/Changelog/master/Feature-84120-AbsoluteURLsForTypolinkViewHelpers.rst @@ -0,0 +1,33 @@ +.. include:: ../../Includes.txt + +======================================================== +Feature: #84120 - Absolute URLs for typolink ViewHelpers +======================================================== + +See :issue:`84120` + +Description +=========== + +A new parameter "absolute" is added to the Fluid ViewHelpers `` and ``, +allowing to generate absolute links, like other ViewHelpers used for linking handle it already. + + +Impact +====== + +It is now possible to add the `absolute` parameter to the ViewHelpers above. + +.. code-block:: html + + Link To My Page + + +generates + +.. code-block:: html + + Link to My Page + https://www.mydomain.com/index.php?id=23 + +.. index:: Fluid, ext:fluid \ No newline at end of file diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Link/TypolinkViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Link/TypolinkViewHelper.php index db306a0221be..97b4d0dfe90d 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/Link/TypolinkViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/Link/TypolinkViewHelper.php @@ -77,6 +77,7 @@ public function initializeArguments() $this->registerArgument('addQueryString', 'bool', '', false, false); $this->registerArgument('addQueryStringMethod', 'string', '', false, 'GET'); $this->registerArgument('addQueryStringExclude', 'string', '', false, ''); + $this->registerArgument('absolute', 'bool', 'Ensure the resulting URL is an absolute URL', false, false); } /** @@ -101,6 +102,7 @@ public static function renderStatic(array $arguments, \Closure $renderChildrenCl $addQueryString = $arguments['addQueryString']; $addQueryStringMethod = $arguments['addQueryStringMethod']; $addQueryStringExclude = $arguments['addQueryStringExclude']; + $absolute = $arguments['absolute']; // Merge the $parameter with other arguments $typolinkParameter = self::createTypolinkParameterArrayFromArguments($parameter, $target, $class, $title, $additionalParams); @@ -130,7 +132,8 @@ public static function renderStatic(array $arguments, \Closure $renderChildrenCl 'addQueryString.' => [ 'method' => $addQueryStringMethod, 'exclude' => $addQueryStringExclude - ] + ], + 'forceAbsoluteUrl' => $absolute ] ] ); diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Uri/TypolinkViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Uri/TypolinkViewHelper.php index 4607091475b8..b3392884a901 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/Uri/TypolinkViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/Uri/TypolinkViewHelper.php @@ -60,6 +60,7 @@ public function initializeArguments() $this->registerArgument('addQueryString', 'bool', '', false, false); $this->registerArgument('addQueryStringMethod', 'string', '', false, 'GET'); $this->registerArgument('addQueryStringExclude', 'string', '', false, ''); + $this->registerArgument('absolute', 'bool', 'Ensure the resulting URL is an absolute URL', false, false); } /** @@ -77,6 +78,7 @@ public static function renderStatic(array $arguments, \Closure $renderChildrenCl $addQueryString = $arguments['addQueryString']; $addQueryStringMethod = $arguments['addQueryStringMethod']; $addQueryStringExclude = $arguments['addQueryStringExclude']; + $absolute = $arguments['absolute']; $content = ''; if ($parameter) { @@ -89,7 +91,8 @@ public static function renderStatic(array $arguments, \Closure $renderChildrenCl 'addQueryString.' => [ 'method' => $addQueryStringMethod, 'exclude' => $addQueryStringExclude - ] + ], + 'forceAbsoluteUrl' => $absolute ] ); } diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/TypolinkViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/TypolinkViewHelperTest.php index dc8fdb6bb200..2b24230bdb4b 100644 --- a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/TypolinkViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/TypolinkViewHelperTest.php @@ -86,6 +86,7 @@ public function renderCallsStdWrapWithrightParameters() 'addQueryString' => $addQueryString, 'addQueryStringMethod' => $addQueryStringMethod, 'addQueryStringExclude' => $addQueryStringExclude, + 'absolute' => false ]); $contentObjectRendererMock = $this->createMock(ContentObjectRenderer::class); $contentObjectRendererMock->expects($this->once()) @@ -102,6 +103,7 @@ public function renderCallsStdWrapWithrightParameters() 'method' => $addQueryStringMethod, 'exclude' => $addQueryStringExclude, ], + 'forceAbsoluteUrl' => false, ], ] )