From ab2d3298da4e357b7f64a8a727c698f5c0090273 Mon Sep 17 00:00:00 2001 From: enured <enis.nuredini@uzh.ch> Date: Thu, 14 Dec 2023 16:26:30 +0100 Subject: [PATCH] B17397: Refactoring element html id. Clean duplicate record id in element. refs #17397 --- extension/Classes/Core/AbstractBuildForm.php | 25 +++++++++++-------- extension/Classes/Core/BuildFormBootstrap.php | 4 +-- .../Classes/Core/Helper/HelperFormElement.php | 9 ++++--- extension/Classes/Core/QuickFormQuery.php | 4 ++- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/extension/Classes/Core/AbstractBuildForm.php b/extension/Classes/Core/AbstractBuildForm.php index f7fbd1107..07e6b2070 100644 --- a/extension/Classes/Core/AbstractBuildForm.php +++ b/extension/Classes/Core/AbstractBuildForm.php @@ -170,6 +170,11 @@ abstract class AbstractBuildForm { ]; $this->symbol[SYMBOL_DELETE] = "<span class='glyphicon " . GLYPH_ICON_DELETE . "'></span>"; + + $this->ttContentUid = $this->store->getVar(TYPO3_TT_CONTENT_UID, STORE_TYPO3); + $this->formId = $this->formSpec[F_ID]; + $this->recordId = $this->store->getVar(CLIENT_RECORD_ID, STORE_SIP . STORE_RECORD . STORE_TYPO3 . STORE_ZERO); + } abstract public function fillWrap(); @@ -620,7 +625,7 @@ abstract class AbstractBuildForm { */ public function getFormTagAttributes() { - $attribute['id'] = $this->getFormId(); + $attribute['id'] = $this->getFormId($this->ttContentUid, $this->formId, $this->recordId); $attribute['method'] = 'post'; $attribute['action'] = $this->getActionUrl(); $attribute['target'] = '_top'; @@ -638,14 +643,14 @@ abstract class AbstractBuildForm { * * @return string */ - public function getFormId() { - if ($this->formId === null) { -// $this->formId = uniqid('qfq-form-'); - $this->formId = 'qfq-form-' . $this->store->getVar(TYPO3_TT_CONTENT_UID, STORE_TYPO3) . '-' - . $this->formSpec[F_ID] . '-' . $this->store->getVar(CLIENT_RECORD_ID, STORE_SIP . STORE_RECORD . STORE_TYPO3 . STORE_ZERO); - } + public static function getFormId(string $ttContentUid, string $formId, string $recordId) { + // $this->formId = uniqid('qfq-form-'); +// $this->formId = 'qfq-form-' . $this->store->getVar(TYPO3_TT_CONTENT_UID, STORE_TYPO3) . '-' +// . $this->formSpec[F_ID] . '-' . $this->store->getVar(CLIENT_RECORD_ID, STORE_SIP . STORE_RECORD . STORE_TYPO3 . STORE_ZERO); + - return $this->formId; + //return $this->formId; + return 'qfq-form-' . $ttContentUid . '-' . $formId . '-' . $recordId; } /** @@ -906,9 +911,7 @@ abstract class AbstractBuildForm { // Typically: $htmlElementNameIdZero = true // After Saving a record, staying on the form, the FormElements on the Client are still known as '<feName>:0'. $htmlFormElementName = HelperFormElement::buildFormElementName($formElement, ($htmlElementNameIdZero) ? 0 : $recordId); - $formElement[FE_HTML_ID] = HelperFormElement::buildFormElementId($this->getFormId(), $formElement[FE_ID], - ($htmlElementNameIdZero) ? 0 : $recordId, - $formElement[FE_TG_INDEX]); + $formElement[FE_HTML_ID] = HelperFormElement::buildFormElementId($this->getFormId($this->ttContentUid, $this->formId, $this->recordId), $formElement[FE_ID], $formElement[FE_TG_INDEX]); $jsonElement = array(); $elementExtra = ''; diff --git a/extension/Classes/Core/BuildFormBootstrap.php b/extension/Classes/Core/BuildFormBootstrap.php index feb071a61..dcd11ac46 100644 --- a/extension/Classes/Core/BuildFormBootstrap.php +++ b/extension/Classes/Core/BuildFormBootstrap.php @@ -448,7 +448,7 @@ class BuildFormBootstrap extends AbstractBuildForm { $class = Support::doAttribute('class', $class); $dataClassOnChange = Support::doAttribute('data-class-on-change', $buttonOnChangeClass); $tooltip = Support::doAttribute('title', $tooltip); - $formId = $this->getFormId(); + $formId = $this->getFormId($this->ttContentUid, $this->formSpec[F_ID], $this->recordId); return "<button id='$buttonHtmlId-$formId' type='button' $class $dataClassOnChange $tooltip $disabled>$element</button>"; } @@ -628,7 +628,7 @@ class BuildFormBootstrap extends AbstractBuildForm { $actionDelete = FILE_ACTION . '=' . FILE_ACTION_DELETE; # Replacing the attributes set via tail / javascript - $attribute["data-form-id"] = $this->getFormId(); + $attribute["data-form-id"] = $this->getFormId($this->ttContentUid, $this->formSpec[F_ID], $this->recordId); $attribute["data-tabs-id"] = $this->getTabId(); if (0 < ($recordId = $this->store->getVar(SIP_RECORD_ID, STORE_SIP))) { $attribute["data-delete-url"] = $this->createDeleteUrl($this->formSpec[F_FINAL_DELETE_FORM], $recordId); diff --git a/extension/Classes/Core/Helper/HelperFormElement.php b/extension/Classes/Core/Helper/HelperFormElement.php index e2a485b63..1f2160ebb 100644 --- a/extension/Classes/Core/Helper/HelperFormElement.php +++ b/extension/Classes/Core/Helper/HelperFormElement.php @@ -8,6 +8,7 @@ namespace IMATHUZH\Qfq\Core\Helper; +use IMATHUZH\Qfq\Core\AbstractBuildForm; use IMATHUZH\Qfq\Core\Evaluate; use IMATHUZH\Qfq\Core\Store\Store; @@ -176,8 +177,8 @@ class HelperFormElement { * * @return string */ - public static function buildFormElementId($formId, $formElementId, $recordId, $formElementCopy) { - return "$formId" . HTML_DELIMITER_ID . "$formElementId" . HTML_DELIMITER_ID . "$recordId" . HTML_DELIMITER_ID . "$formElementCopy"; + public static function buildFormElementId($formId, $formElementId, $formElementCopy) { + return "$formId" . HTML_DELIMITER_ID . "$formElementId" . HTML_DELIMITER_ID . "$formElementCopy"; } @@ -196,7 +197,9 @@ class HelperFormElement { switch ($fe[FE_CLASS]) { case FE_CLASS_CONTAINER: - $feSpecNative[$key][FE_HTML_ID] = self::buildFormElementId($formId, $fe[FE_ID], $recordId, $formElementCopy); + self::$store = Store::getInstance(); + $ttContentUid = self::$store->getVar(TYPO3_TT_CONTENT_UID, STORE_TYPO3); + $feSpecNative[$key][FE_HTML_ID] = self::buildFormElementId(AbstractBuildForm::getFormId($ttContentUid, $formId, $recordId), $fe[FE_ID], $formElementCopy); break; default: break; diff --git a/extension/Classes/Core/QuickFormQuery.php b/extension/Classes/Core/QuickFormQuery.php index 34855b931..a7e73b6f3 100644 --- a/extension/Classes/Core/QuickFormQuery.php +++ b/extension/Classes/Core/QuickFormQuery.php @@ -385,7 +385,9 @@ class QuickFormQuery { } if ($this->store->getVar(TYPO3_DEBUG_SHOW_BODY_TEXT, STORE_TYPO3) === 'yes') { - $htmlId = HelperFormElement::buildFormElementId($this->formSpec[F_ID], 0, 0, 0); + $ttContentUid = $this->store->getVar(TYPO3_TT_CONTENT_UID, STORE_TYPO3); + + $htmlId = HelperFormElement::buildFormElementId($ttContentUid, 0, 0); $html .= Support::doTooltip($htmlId . HTML_ID_EXTENSION_TOOLTIP, $this->t3data[T3DATA_BODYTEXT]); } -- GitLab