/** * Set the htmlAttributes and the additionalAttributes * Remap htmlAttributes to additionalAttributes if needed * * @param ElementBuilder $elementBuilder * @param Element $element * @return void */ protected function setAttributes(ElementBuilder $elementBuilder, Element $element) { $htmlAttributes = $this->typoScriptRepository->getModelDefinedHtmlAttributes($element->getElementType()); $elementBuilder->setHtmlAttributes($htmlAttributes); $elementBuilder->setHtmlAttributeWildcards(); $elementBuilder->overlayUserdefinedHtmlAttributeValues(); $elementBuilder->setNameAndId(); $elementBuilder->overlayFixedHtmlAttributeValues(); // remove all NULL values $htmlAttributes = array_filter($elementBuilder->getHtmlAttributes()); $elementBuilder->setHtmlAttributes($htmlAttributes); $elementBuilder->moveHtmlAttributesToAdditionalArguments(); $elementBuilder->setViewHelperDefaulArgumentsToAdditionalArguments(); $elementBuilder->moveAllOtherUserdefinedPropertiesToAdditionalArguments(); $htmlAttributes = $elementBuilder->getHtmlAttributes(); $userConfiguredElementTypoScript = $elementBuilder->getUserConfiguredElementTypoScript(); $additionalArguments = $elementBuilder->getAdditionalArguments(); $element->setHtmlAttributes($htmlAttributes); $additionalArguments = $this->typoScriptService->convertTypoScriptArrayToPlainArray($additionalArguments); $additionalArguments['prefix'] = $this->configuration->getPrefix(); $element->setAdditionalArguments($additionalArguments); $this->handleIncomingValues($element, $userConfiguredElementTypoScript); if ($element->getElementType() === 'FORM' && $this->getControllerAction() === 'show') { if (empty($element->getHtmlAttribute('action'))) { if ($element->getAdditionalArgument('confirmation') && (int) $element->getAdditionalArgument('confirmation') === 1) { $element->setAdditionalArgument('action', 'confirmation'); } else { $element->setAdditionalArgument('action', 'process'); } } else { $element->setAdditionalArgument('pageUid', $element->getHtmlAttribute('action')); $element->setAdditionalArgument('action', null); } } // needed if confirmation page is enabled if ($this->sessionUtility->getSessionData($element->getName()) && $element->getAdditionalArgument('uploadedFiles') === null) { $element->setAdditionalArgument('uploadedFiles', $this->sessionUtility->getSessionData($element->getName())); } }