41 $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
44 $flexFormDataStructureIdentifier = $this->data[
'flexFormDataStructureIdentifier'];
45 $flexFormDataStructureArray = $this->data[
'flexFormDataStructureArray'];
46 $flexFormRowData = $this->data[
'flexFormRowData'];
47 $flexFormFieldName = $this->data[
'flexFormFieldName'];
48 $flexFormSheetName = $this->data[
'flexFormSheetName'];
55 foreach ($flexFormDataStructureArray[
'children'] as $flexFormContainerIdentifier => $containerDataStructure) {
56 $existingContainerData = $flexFormRowData[$flexFormContainerIdentifier];
58 $existingSectionContainerDataStructureType = key($existingContainerData);
59 $existingContainerData = $existingContainerData[$existingSectionContainerDataStructureType];
61 $options[
'flexFormRowData'] = $existingContainerData[
'el'];
62 $options[
'flexFormDataStructureArray'] = $containerDataStructure;
63 $options[
'flexFormFormPrefix'] = $this->data[
'flexFormFormPrefix'] .
'[' . $flexFormFieldName .
']' .
'[el]';
64 $options[
'flexFormContainerName'] = $existingSectionContainerDataStructureType;
65 $options[
'flexFormContainerIdentifier'] = $flexFormContainerIdentifier;
66 $options[
'flexFormContainerElementCollapsed'] = (bool)$flexFormRowData[$flexFormContainerIdentifier][
'_TOGGLE'];
67 $options[
'renderType'] =
'flexFormContainerContainer';
68 $flexFormContainerContainerResult = $this->nodeFactory->create($options)->render();
73 $containerTemplatesHtml = [];
74 foreach ($flexFormDataStructureArray[
'el'] as $flexFormContainerName => $flexFormFieldDefinition) {
76 if (!empty(trim($flexFormFieldDefinition[
'title']))) {
77 $containerTitle = $languageService->sL(trim($flexFormFieldDefinition[
'title']));
79 $containerTemplateHtml = [];
80 $containerTemplateHtml[] =
'<a';
81 $containerTemplateHtml[] =
'href="#"';
82 $containerTemplateHtml[] =
'class="btn btn-default t3js-flex-container-add"';
83 $containerTemplateHtml[] =
'data-vanillauid="' . (int)$this->data[
'vanillaUid'] .
'"';
85 $containerTemplateHtml[] =
'data-databaserowuid="' . htmlspecialchars($this->data[
'databaseRow'][
'uid']) .
'"';
86 $containerTemplateHtml[] =
'data-command="' . htmlspecialchars($this->data[
'command']) .
'"';
87 $containerTemplateHtml[] =
'data-tablename="' . htmlspecialchars($this->data[
'tableName']) .
'"';
88 $containerTemplateHtml[] =
'data-fieldname="' . htmlspecialchars($this->data[
'fieldName']) .
'"';
89 $containerTemplateHtml[] =
'data-recordtypevalue="' . $this->data[
'recordTypeValue'] .
'"';
90 $containerTemplateHtml[] =
'data-datastructureidentifier="' . htmlspecialchars($flexFormDataStructureIdentifier) .
'"';
91 $containerTemplateHtml[] =
'data-flexformsheetname="' . htmlspecialchars($flexFormSheetName) .
'"';
92 $containerTemplateHtml[] =
'data-flexformfieldname="' . htmlspecialchars($flexFormFieldName) .
'"';
93 $containerTemplateHtml[] =
'data-flexformcontainername="' . htmlspecialchars($flexFormContainerName) .
'"';
94 $containerTemplateHtml[] =
'>';
95 $containerTemplateHtml[] = $iconFactory->getIcon(
'actions-document-new',
Icon::SIZE_SMALL)->render();
96 $containerTemplateHtml[] = htmlspecialchars(GeneralUtility::fixed_lgd_cs($containerTitle, 30));
97 $containerTemplateHtml[] =
'</a>';
98 $containerTemplatesHtml[] = implode(LF, $containerTemplateHtml);
101 $createElementsHtml = [];
102 if ($userHasAccessToDefaultLanguage) {
103 $createElementsHtml[] =
'<div class="t3-form-field-add-flexsection">';
104 $createElementsHtml[] =
'<div class="btn-group">';
105 $createElementsHtml[] = implode(
'', $containerTemplatesHtml);
106 $createElementsHtml[] =
'</div>';
107 $createElementsHtml[] =
'</div>';
111 if (!empty(trim($flexFormDataStructureArray[
'title']))) {
112 $sectionTitle = $languageService->sL(trim($flexFormDataStructureArray[
'title']));
116 $toggleAll = htmlspecialchars($languageService->sL(
'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.toggleall'));
118 $html[] =
'<div class="panel panel-tab">';
119 $html[] =
'<div class="panel-body">';
120 $html[] =
'<div class="t3-form-field-container t3-form-flex">';
121 $html[] =
'<div class="t3-form-field-label-flexsection">';
123 $html[] = htmlspecialchars($sectionTitle);
126 $html[] =
'<div class="t3js-form-field-toggle-flexsection t3-form-flexsection-toggle">';
127 $html[] =
'<a class="btn btn-default" href="#" title="' . $toggleAll .
'">';
128 $html[] = $iconFactory->getIcon(
'actions-move-right',
Icon::SIZE_SMALL)->render() . $toggleAll;
132 $html[] =
'class="panel-group panel-hover t3-form-field-container-flexsection t3-flex-container"';
133 $html[] =
'data-t3-flex-allow-restructure="' . ($userHasAccessToDefaultLanguage ?
'1' :
'0') .
'"';
135 $html[] = $resultArray[
'html'];
137 $html[] = implode(LF, $createElementsHtml);
142 $resultArray[
'html'] = implode(LF, $html);