data; $options['fieldsArray'] = $this->sanitizeFieldList($this->data['fieldListToRender']); if ($this->data['hiddenFieldListToRender'] ?? false) { $hiddenFieldList = array_diff( $this->sanitizeFieldList($this->data['hiddenFieldListToRender']), $options['fieldsArray'] ); if ($hiddenFieldList !== []) { $hiddenFieldList = implode(',', $hiddenFieldList); $hiddenPaletteName = 'hiddenFieldsPalette' . md5($hiddenFieldList); $options['processedTca']['palettes'][$hiddenPaletteName] = [ 'isHiddenPalette' => true, 'showitem' => $hiddenFieldList, ]; $options['fieldsArray'][] = '--palette--;;' . $hiddenPaletteName; } } $options['renderType'] = 'paletteAndSingleContainer'; return $this->nodeFactory->create($options)->render(); } protected function sanitizeFieldList(string $fieldList): array { $fields = array_unique(GeneralUtility::trimExplode(',', $fieldList, true)); $fieldsByShowitem = $this->data['processedTca']['types'][$this->data['recordTypeValue']]['showitem']; $fieldsByShowitem = GeneralUtility::trimExplode(',', $fieldsByShowitem, true); $allowedFields = []; foreach ($fields as $fieldName) { foreach ($fieldsByShowitem as $fieldByShowitem) { $fieldByShowitemArray = $this->explodeSingleFieldShowItemConfiguration($fieldByShowitem); if ($fieldByShowitemArray['fieldName'] === $fieldName) { $allowedFields[] = implode(';', $fieldByShowitemArray); break; } if ($fieldByShowitemArray['fieldName'] === '--palette--' && isset($this->data['processedTca']['palettes'][$fieldByShowitemArray['paletteName']]['showitem']) && is_string($this->data['processedTca']['palettes'][$fieldByShowitemArray['paletteName']]['showitem']) ) { $paletteName = $fieldByShowitemArray['paletteName']; $paletteFields = GeneralUtility::trimExplode(',', $this->data['processedTca']['palettes'][$paletteName]['showitem'], true); foreach ($paletteFields as $paletteField) { $paletteFieldArray = $this->explodeSingleFieldShowItemConfiguration($paletteField); if ($paletteFieldArray['fieldName'] === $fieldName) { $allowedFields[] = implode(';', $paletteFieldArray); break; } } } } } return $allowedFields; } protected function getLanguageService(): LanguageService { return $GLOBALS['LANG']; } }