17 use Psr\Http\Message\ResponseInterface;
18 use Psr\Http\Message\ServerRequestInterface;
38 $currentLink = isset($this->parameters[
'currentValue']) ? trim($this->parameters[
'currentValue']) :
'';
39 $currentLinkParts = GeneralUtility::makeInstance(TypoLinkCodecService::class)->decode($currentLink);
44 $linkService = GeneralUtility::makeInstance(LinkService::class);
53 parent::initCurrentUrl();
61 parent::initDocumentTemplate();
64 $this->parameters[
'fieldChangeFunc'] = [];
66 unset($this->parameters[
'fieldChangeFunc'][
'alert']);
68 foreach ($this->parameters[
'fieldChangeFunc'] as $v) {
69 $update[] =
'parent.opener.' . $v;
71 $inlineJS = implode(LF, $update);
73 $pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
74 $pageRenderer->loadRequireJsModule(
'TYPO3/CMS/Backend/FormEngineLinkBrowserAdapter',
'function(FormEngineLinkBrowserAdapter) {
75 FormEngineLinkBrowserAdapter.updateFunctions = function() {' . $inlineJS .
'};
87 public function encodeTypoLink(ServerRequestInterface $request): ResponseInterface
89 $typoLinkParts = $request->getQueryParams();
90 if (isset($typoLinkParts[
'params'])) {
91 $typoLinkParts[
'additionalParams'] = $typoLinkParts[
'params'];
92 unset($typoLinkParts[
'params']);
95 $typoLink = GeneralUtility::makeInstance(TypoLinkCodecService::class)->encode($typoLinkParts);
109 if (isset($this->parameters[
'fieldChangeFunc']) && is_array($this->parameters[
'fieldChangeFunc']) && isset($this->parameters[
'fieldChangeFuncHash'])) {
111 $pattern =
'#\\[el\\]\\[(([^]-]+-[^]-]+-)(idx\\d+-)([^]]+))\\]#i';
112 $fieldChangeFunctions = $this->parameters[
'fieldChangeFunc'];
115 if ($handleFlexformSections && preg_match($pattern, $this->parameters[
'itemName'], $matches)) {
116 $originalName = $matches[1];
117 $cleanedName = $matches[2] . $matches[4];
118 foreach ($fieldChangeFunctions as &$value) {
119 $value = str_replace($originalName, $cleanedName, $value);
123 $result = hash_equals(GeneralUtility::hmac(serialize($fieldChangeFunctions),
'backend-link-browser'), $this->parameters[
'fieldChangeFuncHash']);
137 $formEngineParameters[
'fieldChangeFunc'] = $this->parameters[
'fieldChangeFunc'];
138 $formEngineParameters[
'fieldChangeFuncHash'] = GeneralUtility::hmac(serialize($this->parameters[
'fieldChangeFunc']),
'backend-link-browser');
154 if (isset($browserParameters[
'pid'])) {
155 $pageId = $browserParameters[
'pid'];
156 } elseif (isset($browserParameters[
'itemName'])) {
158 if (preg_match(
'~data\[([^]]*)\]\[([^]]*)\]~', $browserParameters[
'itemName'], $matches)) {
160 if (is_array($recordArray)) {
161 $pageId = $recordArray[
'pid'];
175 return $tsConfig[
'TCEMAIN.'][
'linkHandler.'][
'page.'][
'configuration.'] ?? [];