From ae11492a694445440a429e94756a8b22eb67e2a8 Mon Sep 17 00:00:00 2001
From: Ralf Zimmermann <ralf.zimmermann@tritum.de>
Date: Thu, 7 Sep 2017 15:29:54 +0200
Subject: [PATCH] [BUGFIX] EXT:form - fix page drag & drop

Fix JavaScript errors on page drag & drop within the form editor

Resolves: #82337
Releases: master, 8.7
Change-Id: I6e67b05a68273f1ad2d6f851ed5dfa4781d7d5bb
Reviewed-on: https://review.typo3.org/53949
Reviewed-by: Daniel Lorenz <daniel.lorenz@extco.de>
Tested-by: Daniel Lorenz <daniel.lorenz@extco.de>
Reviewed-by: Carlos Meyer <cm@davitec.de>
Tested-by: Carlos Meyer <cm@davitec.de>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
---
 .../JavaScript/Backend/FormEditor/TreeComponent.js    | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/typo3/sysext/form/Resources/Public/JavaScript/Backend/FormEditor/TreeComponent.js b/typo3/sysext/form/Resources/Public/JavaScript/Backend/FormEditor/TreeComponent.js
index 03a45127fc95..1d58a73d9fbe 100644
--- a/typo3/sysext/form/Resources/Public/JavaScript/Backend/FormEditor/TreeComponent.js
+++ b/typo3/sysext/form/Resources/Public/JavaScript/Backend/FormEditor/TreeComponent.js
@@ -317,12 +317,23 @@ define(['jquery',
                 isAllowed: function (placeholder, placeholderParent, currentItem) {
                     var formElementIdentifierPath, formElementTypeDefinition, targetFormElementIdentifierPath, targetFormElementTypeDefinition;
 
+                    if (typeof placeholderParent === 'undefined') {
+                        return true;
+                    }
+
                     formElementIdentifierPath = getTreeNodeIdentifierPathWithinDomElement($(currentItem));
                     targetFormElementIdentifierPath = getTreeNodeIdentifierPathWithinDomElement($(placeholderParent));
 
                     formElementTypeDefinition = getFormElementDefinition(formElementIdentifierPath);
                     targetFormElementTypeDefinition = getFormElementDefinition(targetFormElementIdentifierPath);
 
+                    if (
+                        targetFormElementTypeDefinition['_isTopLevelFormElement']
+                        && !targetFormElementTypeDefinition['_isCompositeFormElement']
+                    ) {
+                        return false;
+                    }
+
                     if (
                         formElementTypeDefinition['_isGridContainerFormElement']
                         && (
-- 
GitLab