From 00f5c62a9e001402cf232a8b7d0bded516c9d1b8 Mon Sep 17 00:00:00 2001 From: Stefan Froemken <froemken@gmail.com> Date: Fri, 2 Oct 2015 16:39:37 +0200 Subject: [PATCH] [BUGFIX] FormEngine: Only evaluate Flexform display conditions once Avoid evaluating the display conditions for fields on a Flexform sheet more than once. Multiple evaluations of the same conditions can lead to wrong result due to fields having been removed by the first evaluation. Resolves: #70314 Releases: master Change-Id: I412a8cc2acf67e2a72de1f37a0f8038110ca4c2e Reviewed-on: http://review.typo3.org/43744 Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de> Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> --- .../EvaluateDisplayConditions.php | 4 ++-- .../EvaluateDisplayConditionsTest.php | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/typo3/sysext/backend/Classes/Form/FormDataProvider/EvaluateDisplayConditions.php b/typo3/sysext/backend/Classes/Form/FormDataProvider/EvaluateDisplayConditions.php index af0c25da7f94..4eabbcd1e02b 100644 --- a/typo3/sysext/backend/Classes/Form/FormDataProvider/EvaluateDisplayConditions.php +++ b/typo3/sysext/backend/Classes/Form/FormDataProvider/EvaluateDisplayConditions.php @@ -115,8 +115,8 @@ class EvaluateDisplayConditions implements FormDataProviderInterface { foreach ($result['processedTca']['columns'][$columnName]['config']['ds']['sheets'] as $sheetName => $sheetConfiguration) { $flexFormSheetRowData = $flexFormRowData[$sheetName]['lDEF']; $flexFormSheetRowData['parentRec'] = $result['databaseRow']; - $result['processedTca']['columns'][$columnName]['config']['ds']['sheets'] = $this->removeFlexformFieldsRecursive( - $result['processedTca']['columns'][$columnName]['config']['ds']['sheets'], + $result['processedTca']['columns'][$columnName]['config']['ds']['sheets'][$sheetName] = $this->removeFlexformFieldsRecursive( + $result['processedTca']['columns'][$columnName]['config']['ds']['sheets'][$sheetName], $flexFormSheetRowData ); } diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/EvaluateDisplayConditionsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/EvaluateDisplayConditionsTest.php index d9fe493c13ac..9d5a717be92c 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/EvaluateDisplayConditionsTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/EvaluateDisplayConditionsTest.php @@ -222,10 +222,32 @@ class EvaluateDisplayConditionsTest extends UnitTestCase { 'items' => [], ], ], + 'mmUseCurl' => [ + 'displayCond' => 'FIELD:mmType:=:audio', + 'config' => [ + 'type' => 'check', + 'default' => '0', + 'items' => [], + ], + ], ], 'sheetTitle' => 'aTitle', ], ], + 'secondSheet' => [ + 'ROOT' => [ + 'type' => 'array', + 'el' => [ + 'foo' => [ + 'config' => [ + 'type' => 'select', + 'items' => [], + ], + ], + ], + 'sheetTitle' => 'bTitle', + ], + ], ], ], ], -- GitLab