48 $table = $result[
'tableName'];
50 foreach ($result[
'processedTca'][
'columns'] as $fieldName => $fieldConfig) {
51 if (empty($fieldConfig[
'config'][
'type']) || $fieldConfig[
'config'][
'type'] !==
'select') {
61 if ($fieldConfig[
'config'][
'maxitems'] === 0) {
62 $fieldConfig[
'config'][
'maxitems'] = 99999;
68 if (isset($result[
'pageTsConfig'][
'TCEFORM.'][$table .
'.'][$fieldName .
'.'][
'config.'][
'treeConfig.'])) {
69 $pageTsConfig = $result[
'pageTsConfig'][
'TCEFORM.'][$table .
'.'][$fieldName .
'.'][
'config.'][
'treeConfig.'];
71 if (isset($pageTsConfig[
'rootUid'])) {
72 $fieldConfig[
'config'][
'treeConfig'][
'rootUid'] = (int)$pageTsConfig[
'rootUid'];
74 if (isset($pageTsConfig[
'appearance.'][
'expandAll'])) {
75 $fieldConfig[
'config'][
'treeConfig'][
'appearance'][
'expandAll'] = (bool)$pageTsConfig[
'appearance.'][
'expandAll'];
77 if (isset($pageTsConfig[
'appearance.'][
'maxLevels'])) {
78 $fieldConfig[
'config'][
'treeConfig'][
'appearance'][
'maxLevels'] = (int)$pageTsConfig[
'appearance.'][
'maxLevels'];
80 if (isset($pageTsConfig[
'appearance.'][
'nonSelectableLevels'])) {
81 $fieldConfig[
'config'][
'treeConfig'][
'appearance'][
'nonSelectableLevels'] = $pageTsConfig[
'appearance.'][
'nonSelectableLevels'];
90 if ($result[
'selectTreeCompileItems']) {
96 $itemsFromTca = $this->
sanitizeItemArray($fieldConfig[
'config'][
'items'], $table, $fieldName);
101 $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
102 $finalPageTsConfigItems = [];
103 foreach ($itemsFromPageTsConfig as $item) {
104 if ($item[2] !==
null) {
105 $item[2] = $iconFactory->getIcon($item[2],
Icon::SIZE_SMALL)->getMarkup(
'inline');
107 $finalPageTsConfigItems[] = $item;
110 if (!empty($itemsFromTca) || !empty($finalPageTsConfigItems)) {
116 $staticItems = array_merge($itemsFromTca, $finalPageTsConfigItems);
125 if (!empty($fieldConfig[
'config'][
'itemsProcFunc'])) {
128 unset($fieldConfig[
'config'][
'itemsProcFunc']);
131 $staticItems = $this->
translateLabels($result, $staticItems, $table, $fieldName);
133 foreach ($staticItems as $item) {
134 if ($item[1] ===
'--div--') {
139 'identifier' => $item[1],
141 'icon' => $item[2] ??
'',
144 'hasChildren' =>
false,
145 'selectable' =>
true,
146 'checked' => in_array($item[1], $result[
'databaseRow'][$fieldName]),
159 $uidListOfAllDynamicItems = [];
160 foreach ($dynamicItems as $item) {
161 if ((
int)$item[1] > 0) {
162 $uidListOfAllDynamicItems[] = (int)$item[1];
167 $fieldConfig[
'config'],
170 $result[
'databaseRow']
172 $treeDataProvider->setSelectedList(implode(
',', $result[
'databaseRow'][$fieldName]));
176 $treeDataProvider->setItemWhiteList($uidListOfAllDynamicItems);
177 $treeDataProvider->initializeTreeData();
178 $treeRenderer = GeneralUtility::makeInstance(ArrayTreeRenderer::class);
179 $tree = GeneralUtility::makeInstance(TableConfigurationTree::class);
180 $tree->setDataProvider($treeDataProvider);
181 $tree->setNodeRenderer($treeRenderer);
184 $fieldConfig[
'config'][
'items'] = array_merge($finalItems, $tree->render());
187 $result[
'processedTca'][
'columns'][$fieldName] = $fieldConfig;
201 return $fieldConfig[
'config'][
'renderType'] ===
'selectTree';