getLanguageService(); $parameterArray = $this->data['parameterArray']; $flexFormDataStructureArray = $this->data['flexFormDataStructureArray']; $flexFormRowData = $this->data['flexFormRowData']; $resultArray = $this->initializeResultArray(); $resultArray['javaScriptModules'][] = JavaScriptModuleInstruction::create('@typo3/backend/tab.js'); $domIdPrefix = 'DTM-' . md5($this->data['parameterArray']['itemFormElName']); $tabCounter = 0; $tabElements = []; foreach ($flexFormDataStructureArray['sheets'] as $sheetName => $sheetDataStructure) { $flexFormRowSheetDataSubPart = $flexFormRowData['data'][$sheetName]['lDEF'] ?? []; if (!is_array($sheetDataStructure['ROOT']['el'])) { $resultArray['html'] .= LF . 'No Data Structure ERROR: No [\'ROOT\'][\'el\'] found for sheet "' . $sheetName . '".'; continue; } $tabCounter++; $options = $this->data; $options['flexFormDataStructureArray'] = $sheetDataStructure['ROOT']['el']; $options['flexFormRowData'] = $flexFormRowSheetDataSubPart; $options['flexFormSheetName'] = $sheetName; $options['flexFormFormPrefix'] = '[data][' . $sheetName . '][lDEF]'; $options['parameterArray'] = $parameterArray; // Merge elements of this tab into a single list again and hand over to // palette and single field container to render this group $options['tabAndInlineStack'][] = [ 'tab', $domIdPrefix . '-' . $tabCounter, ]; $options['renderType'] = 'flexFormElementContainer'; $childReturn = $this->nodeFactory->create($options)->render(); 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(); $resultArray['html'] = $fieldInformationResult['html']; $resultArray = $this->mergeChildReturnIntoExistingResult($resultArray, $fieldInformationResult, false); $resultArray['html'] .= $this->renderTabMenu($tabElements, $domIdPrefix); return $resultArray; } protected function getLanguageService(): LanguageService { return $GLOBALS['LANG']; } }