[BUGFIX] Avoid JS error when adding flexform sections 39/44539/3
authorWouter Wolters <typo3@wouterwolters.nl>
Wed, 4 Nov 2015 18:53:12 +0000 (19:53 +0100)
committerMorton Jonuschat <m.jonuschat@mojocode.de>
Wed, 4 Nov 2015 19:45:51 +0000 (20:45 +0100)
Within #70473 the ExtJS tree is instantiated for new sections.
$treeElementIdentifier can be undefined but still code is added
to be executed. Prevent this by adding an empty check.

Related: #70473
Resolves: #71327
Releases: master
Change-Id: Ia87329ac35404acedded22f412b88ca155c1ba2e
Reviewed-on: https://review.typo3.org/44539
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Reviewed-by: Juan Manuel Vergés Solanas <juanmanuel.vergessolanas@gmail.com>
Tested-by: Juan Manuel Vergés Solanas <juanmanuel.vergessolanas@gmail.com>
Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de>
typo3/sysext/backend/Classes/Form/Container/FlexFormSectionContainer.php

index 02d12af..e2725fd 100644 (file)
@@ -113,8 +113,8 @@ class FlexFormSectionContainer extends AbstractContainer
 
             // Extract the random identifier used by the ExtJS tree. This is used later on in the onClick handler
             // to dynamically modify the javascript code and instanciate a unique ExtJS tree instance per section.
+            $treeElementIdentifier = '';
             if (!empty($flexFormContainerContainerTemplateResult['extJSCODE'])) {
-                $treeElementIdentifier = '';
                 if (preg_match('/StandardTreeItemData\["([a-f0-9]{32})"\]/', $flexFormContainerContainerTemplateResult['extJSCODE'], $matches)) {
                     $treeElementIdentifier = $matches[1];
                 }
@@ -123,7 +123,10 @@ class FlexFormSectionContainer extends AbstractContainer
             $uniqueId = StringUtility::getUniqueId('idvar');
             $identifierPrefixJs = 'replace(/' . $flexFormFieldIdentifierPrefix . '-/g,"' . $flexFormFieldIdentifierPrefix . '-"+' . $uniqueId . '+"-")';
             $identifierPrefixJs .= '.replace(/(tceforms-(datetime|date)field-)/g,"$1" + (new Date()).getTime())';
-            $identifierPrefixJs .= '.replace(/(tree_?)?' . $treeElementIdentifier . '/g,"$1" + (' . $uniqueId . '))';
+
+            if (!empty($treeElementIdentifier)) {
+                $identifierPrefixJs .= '.replace(/(tree_?)?' . $treeElementIdentifier . '/g,"$1" + (' . $uniqueId . '))';
+            }
 
             $onClickInsert = array();
             $onClickInsert[] = 'var ' . $uniqueId . ' = "' . 'idx"+(new Date()).getTime();';