From 0cb761cba6a85111617c9fd1b332553f29eb6d22 Mon Sep 17 00:00:00 2001
From: Oliver Hader <oliver@typo3.org>
Date: Wed, 17 Nov 2021 18:53:12 +0100
Subject: [PATCH] [BUGFIX] Initialize inline form fields just once
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Due to a bug, inline form fields were initialized twice, causing
internal application state issues in FormEngine and Modal handling.

Resolves: #96009
Releases: master
Change-Id: I07f75ae90826eec77515ec84e69f4154828295a1
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/72214
Tested-by: core-ci <typo3@b13.com>
Tested-by: Chris Müller <typo3@krue.ml>
Tested-by: Oliver Bartsch <bo@cedev.de>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
---
 .../Classes/Controller/AbstractFormEngineAjaxController.php | 2 +-
 .../backend/Classes/Controller/FormInlineAjaxController.php | 6 ------
 2 files changed, 1 insertion(+), 7 deletions(-)

diff --git a/typo3/sysext/backend/Classes/Controller/AbstractFormEngineAjaxController.php b/typo3/sysext/backend/Classes/Controller/AbstractFormEngineAjaxController.php
index 0100b26aca0e..2d9970a37ca9 100644
--- a/typo3/sysext/backend/Classes/Controller/AbstractFormEngineAjaxController.php
+++ b/typo3/sysext/backend/Classes/Controller/AbstractFormEngineAjaxController.php
@@ -90,7 +90,7 @@ abstract class AbstractFormEngineAjaxController
 
     protected function addRegisteredRequireJsModulesToJavaScriptItems(array $result, JavaScriptItems $items): void
     {
-        foreach ($result['requireJsModules'] as $module) {
+        foreach ($result['requireJsModules'] ?? [] as $module) {
             if ($module instanceof JavaScriptModuleInstruction) {
                 $items->addJavaScriptModuleInstruction($module);
             }
diff --git a/typo3/sysext/backend/Classes/Controller/FormInlineAjaxController.php b/typo3/sysext/backend/Classes/Controller/FormInlineAjaxController.php
index bdf872b3f147..30bcb6e918d5 100644
--- a/typo3/sysext/backend/Classes/Controller/FormInlineAjaxController.php
+++ b/typo3/sysext/backend/Classes/Controller/FormInlineAjaxController.php
@@ -29,7 +29,6 @@ use TYPO3\CMS\Core\Http\JsonResponse;
 use TYPO3\CMS\Core\Messaging\AbstractMessage;
 use TYPO3\CMS\Core\Messaging\FlashMessageService;
 use TYPO3\CMS\Core\Page\JavaScriptItems;
-use TYPO3\CMS\Core\Page\JavaScriptModuleInstruction;
 use TYPO3\CMS\Core\Utility\ArrayUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
@@ -569,11 +568,6 @@ class FormInlineAjaxController extends AbstractFormEngineAjaxController
             }
             $scriptItems->addGlobalAssignment(['TYPO3' => ['lang' => $labels]]);
         }
-        foreach ($childResult['requireJsModules'] ?? [] as $module) {
-            if ($module instanceof JavaScriptModuleInstruction) {
-                $scriptItems->addJavaScriptModuleInstruction($module);
-            }
-        }
         $this->addRegisteredRequireJsModulesToJavaScriptItems($childResult, $scriptItems);
         // @todo deprecate modules with arbitrary JavaScript callback function in TYPO3 v12.0
         $jsonResult['requireJsModules'] = $this->createExecutableStringRepresentationOfRegisteredRequireJsModules($childResult, true);
-- 
GitLab