From 5323030386a48945ba8716f195e440112013a663 Mon Sep 17 00:00:00 2001 From: Andreas Fernandez <a.fernandez@scripting-base.de> Date: Wed, 27 Sep 2023 12:11:19 +0200 Subject: [PATCH] [BUGFIX] Toggle preview state in Form Editor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the form is in "Preview" mode and an integrator either saves or switches to the form settings, the stage itself is updated to be in "Edit" mode again, but the internal state remains in "Preview" mode, causing glitches in the UI. This patch now disables the preview state in the form model everytime the "stage area", containing the editing interface, is rendered. Resolves: #102031 Releases: main, 12.4, 11.5 Change-Id: I84b0817bb99201527dbd4b950e560631e7b1d94f Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81262 Reviewed-by: Stefan Bürk <stefan@buerk.tech> Tested-by: Stefan Bürk <stefan@buerk.tech> Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de> Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de> Tested-by: core-ci <typo3@b13.com> --- .../Public/JavaScript/Backend/FormEditor/Mediator.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/typo3/sysext/form/Resources/Public/JavaScript/Backend/FormEditor/Mediator.js b/typo3/sysext/form/Resources/Public/JavaScript/Backend/FormEditor/Mediator.js index d30c0d40b29f..6107e0805f09 100644 --- a/typo3/sysext/form/Resources/Public/JavaScript/Backend/FormEditor/Mediator.js +++ b/typo3/sysext/form/Resources/Public/JavaScript/Backend/FormEditor/Mediator.js @@ -206,6 +206,7 @@ define(['jquery', */ getPublisherSubscriber().subscribe('core/ajax/saveFormDefinition/success', function(topic, args) { getFormEditorApp().setUnsavedContent(false); + getViewModel().setPreviewMode(false); getViewModel().showSaveSuccessMessage(); getViewModel().showSaveButtonSaveIcon(); @@ -297,6 +298,7 @@ define(['jquery', * @subscribe view/header/formSettings/clicked */ getPublisherSubscriber().subscribe('view/header/formSettings/clicked', function(topic, args) { + getViewModel().setPreviewMode(false); getViewModel().addStructureRootElementSelection(); getFormEditorApp().setCurrentlySelectedFormElement(getRootFormElement()); getViewModel().renderAbstractStageArea(); @@ -466,6 +468,7 @@ define(['jquery', getPublisherSubscriber().subscribe('view/stage/abstract/dnd/stop', function(topic, args) { getFormEditorApp().setCurrentlySelectedFormElement(args[0]); getViewModel().renewStructure(); + getViewModel().setPreviewMode(false); getViewModel().renderAbstractStageArea(false, false); getViewModel().refreshSelectedElementItemsBatch(); getViewModel().addAbstractViewValidationResults(); @@ -609,6 +612,7 @@ define(['jquery', if (getCurrentlySelectedFormElement().get('__identifierPath') !== args[0]) { oldPageIndex = getFormEditorApp().getCurrentlySelectedPageIndex(); getFormEditorApp().setCurrentlySelectedFormElement(args[0]); + getViewModel().setPreviewMode(false); if (oldPageIndex !== getFormEditorApp().getCurrentlySelectedPageIndex()) { getViewModel().renderAbstractStageArea(); } else { @@ -650,6 +654,7 @@ define(['jquery', if (!getFormEditorApp().isRootFormElementSelected()) { getViewModel().addStructureRootElementSelection(); getFormEditorApp().setCurrentlySelectedFormElement(getRootFormElement()); + getViewModel().setPreviewMode(false); getViewModel().renderAbstractStageArea(); getViewModel().renewStructure(); getViewModel().renderPagination(); @@ -686,6 +691,7 @@ define(['jquery', getFormEditorApp().setCurrentlySelectedFormElement(args[0]); getViewModel().renewStructure(); getViewModel().renderPagination(); + getViewModel().setPreviewMode(false); getViewModel().renderAbstractStageArea(); getViewModel().renderInspectorEditors(); }); -- GitLab