From 72b8d66d10015a356474c47d41fb4c95d82eaa07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20E=C3=9Fl?= <indy.essl@gmail.com> Date: Sat, 29 Feb 2020 16:08:15 +0100 Subject: [PATCH] [BUGFIX] Do not assign tab items if their content is empty In a TabsContainer, if all the fields of a tab are hidden to the editor (by disabling them in PageTS), the tab would still become assigned in the 'items' fluid variable. The empty, but invisible, tab would then still be considered for determining the active tab in the view. If the first tab was disabled in this way, the editor would see no active tab at all. To prevent this from happening, the tab elements are now never assigned, if their content is completely empty. Resolves: #89094 Releases: master, 9.5 Change-Id: I3cbe98e7e25b7827fdc68583387343f5f0cb64ca Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/63512 Tested-by: TYPO3com <noreply@typo3.com> Tested-by: Benni Mack <benni@typo3.org> Tested-by: Daniel Goerz <daniel.goerz@posteo.de> Reviewed-by: Susanne Moog <look@susi.dev> Reviewed-by: Benni Mack <benni@typo3.org> Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de> --- .../Form/Container/FlexFormTabsContainer.php | 18 ++++++++++-------- .../Classes/Form/Container/TabsContainer.php | 12 +++++++----- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/typo3/sysext/backend/Classes/Form/Container/FlexFormTabsContainer.php b/typo3/sysext/backend/Classes/Form/Container/FlexFormTabsContainer.php index df27b14dc4ad..83f07f8b1d3d 100644 --- a/typo3/sysext/backend/Classes/Form/Container/FlexFormTabsContainer.php +++ b/typo3/sysext/backend/Classes/Form/Container/FlexFormTabsContainer.php @@ -96,14 +96,16 @@ class FlexFormTabsContainer extends AbstractContainer $options['renderType'] = 'flexFormElementContainer'; $childReturn = $this->nodeFactory->create($options)->render(); - $tabElements[] = [ - 'label' => !empty(trim($sheetDataStructure['ROOT']['sheetTitle'])) ? $languageService->sL(trim($sheetDataStructure['ROOT']['sheetTitle'])) : $sheetName, - 'content' => $childReturn['html'], - 'description' => trim($sheetDataStructure['ROOT']['sheetDescription']) ? $languageService->sL(trim($sheetDataStructure['ROOT']['sheetDescription'])) : '', - 'linkTitle' => trim($sheetDataStructure['ROOT']['sheetShortDescr']) ? $languageService->sL(trim($sheetDataStructure['ROOT']['sheetShortDescr'])) : '', - ]; - - $resultArray = $this->mergeChildReturnIntoExistingResult($resultArray, $childReturn, false); + if ($childReturn['html'] !== '') { + $tabElements[] = [ + 'label' => !empty(trim($sheetDataStructure['ROOT']['sheetTitle'])) ? $languageService->sL(trim($sheetDataStructure['ROOT']['sheetTitle'])) : $sheetName, + 'content' => $childReturn['html'], + 'description' => trim($sheetDataStructure['ROOT']['sheetDescription']) ? $languageService->sL(trim($sheetDataStructure['ROOT']['sheetDescription'])) : '', + 'linkTitle' => trim($sheetDataStructure['ROOT']['sheetShortDescr']) ? $languageService->sL(trim($sheetDataStructure['ROOT']['sheetShortDescr'])) : '', + ]; + + $resultArray = $this->mergeChildReturnIntoExistingResult($resultArray, $childReturn, false); + } } $fieldInformationResult = $this->renderFieldInformation(); diff --git a/typo3/sysext/backend/Classes/Form/Container/TabsContainer.php b/typo3/sysext/backend/Classes/Form/Container/TabsContainer.php index 7ff9f1414801..d002c3ecb3bf 100644 --- a/typo3/sysext/backend/Classes/Form/Container/TabsContainer.php +++ b/typo3/sysext/backend/Classes/Form/Container/TabsContainer.php @@ -85,11 +85,13 @@ class TabsContainer extends AbstractContainer $options['renderType'] = 'paletteAndSingleContainer'; $childArray = $this->nodeFactory->create($options)->render(); - $tabElements[] = [ - 'label' => $tabWithLabelAndElements['label'], - 'content' => $childArray['html'], - ]; - $resultArray = $this->mergeChildReturnIntoExistingResult($resultArray, $childArray, false); + if ($childArray['html'] !== '') { + $tabElements[] = [ + 'label' => $tabWithLabelAndElements['label'], + 'content' => $childArray['html'], + ]; + $resultArray = $this->mergeChildReturnIntoExistingResult($resultArray, $childArray, false); + } } $resultArray['html'] = $this->renderTabMenu($tabElements, $domIdPrefix); -- GitLab