diff --git a/typo3/sysext/core/Classes/LinkHandling/RecordLinkHandler.php b/typo3/sysext/core/Classes/LinkHandling/RecordLinkHandler.php index 7225d4f438..74544bd68f 100644 --- a/typo3/sysext/core/Classes/LinkHandling/RecordLinkHandler.php +++ b/typo3/sysext/core/Classes/LinkHandling/RecordLinkHandler.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\LinkHandling; +use TYPO3\CMS\Core\Utility\HttpUtility; + /** * Resolves links to records and the parameters given */ @@ -44,6 +46,10 @@ class RecordLinkHandler implements LinkHandlingInterface $urn = $this->baseUrn; $urn .= sprintf('?identifier=%s&uid=%s', $parameters['identifier'], $parameters['uid']); + if (!empty($parameters['parameters'])) { + $urn .= '&' . ltrim($parameters['parameters'], '?&'); + } + if (!empty($parameters['fragment'])) { $urn .= sprintf('#%s', $parameters['fragment']); } @@ -64,6 +70,17 @@ class RecordLinkHandler implements LinkHandlingInterface throw new \InvalidArgumentException('The RecordLinkHandler expects identifier, uid as $data configuration', 1486155151); } - return $data; + $result = [ + 'identifier' => $data['identifier'], + 'uid' => $data['uid'] + ]; + + unset($data['identifier'], $data['uid']); + + if (!empty($data)) { + $result['parameters'] = HttpUtility::buildQueryString($data, ''); + } + + return $result; } } diff --git a/typo3/sysext/recordlist/Classes/LinkHandler/RecordLinkHandler.php b/typo3/sysext/recordlist/Classes/LinkHandler/RecordLinkHandler.php index 88ded628c8..e82d3bdfb7 100644 --- a/typo3/sysext/recordlist/Classes/LinkHandler/RecordLinkHandler.php +++ b/typo3/sysext/recordlist/Classes/LinkHandler/RecordLinkHandler.php @@ -172,7 +172,14 @@ class RecordLinkHandler extends AbstractLinkHandler implements LinkHandlerInterf 'data-identifier' => 't3://record?identifier=' . $this->identifier . '&uid=', ]; if (!empty($this->linkParts)) { - $attributes['data-current-link'] = GeneralUtility::makeInstance(LinkService::class)->asString($this->linkParts['url']); + $attributes['data-current-link'] = GeneralUtility::makeInstance(LinkService::class)->asString( + [ + 'type' => LinkService::TYPE_RECORD, + 'identifier' => $this->linkParts['url']['identifier'], + 'uid' => (int)$this->linkParts['url']['uid'], + 'fragment' => $this->linkParts['url']['fragment'] ?? '', + ] + ); } return $attributes;