2 namespace TYPO3\CMS\Backend\Form\Container;
40 $table = $this->data[
'tableName'];
41 $flexFormDataStructureArray = $this->data[
'flexFormDataStructureArray'];
42 $flexFormRowData = $this->data[
'flexFormRowData'];
43 $flexFormFormPrefix = $this->data[
'flexFormFormPrefix'];
44 $parameterArray = $this->data[
'parameterArray'];
48 foreach ($flexFormDataStructureArray as $flexFormFieldName => $flexFormFieldArray) {
51 !is_array($flexFormFieldArray)
53 || (!isset($flexFormFieldArray[
'type']) && !is_array($flexFormFieldArray[
'config']))
58 if ($flexFormFieldArray[
'type'] ===
'array') {
60 if (empty($flexFormFieldArray[
'section'])) {
61 $resultArray[
'html'] = LF .
'Section expected at ' . $flexFormFieldName .
' but not found';
66 if (!empty(trim($flexFormFieldArray[
'title']))) {
67 $sectionTitle = $languageService->sL(trim($flexFormFieldArray[
'title']));
71 $options[
'flexFormDataStructureArray'] = $flexFormFieldArray[
'el'];
72 $options[
'flexFormRowData'] = isset($flexFormRowData[$flexFormFieldName][
'el']) ? $flexFormRowData[$flexFormFieldName][
'el'] : [];
73 $options[
'flexFormSectionType'] = $flexFormFieldName;
74 $options[
'flexFormSectionTitle'] = $sectionTitle;
75 $options[
'renderType'] =
'flexFormSectionContainer';
76 $sectionContainerResult = $this->nodeFactory->create($options)->render();
80 $fakeParameterArray = [
82 'label' => $languageService->sL(trim($flexFormFieldArray[
'label'])),
83 'config' => $flexFormFieldArray[
'config'],
84 'children' => $flexFormFieldArray[
'children'],
85 'defaultExtras' => $flexFormFieldArray[
'defaultExtras'],
86 'onChange' => $flexFormFieldArray[
'onChange'],
88 'fieldChangeFunc' => $parameterArray[
'fieldChangeFunc'],
89 'onFocus' => $parameterArray[
'onFocus'],
90 'label' => $parameterArray[
'label'],
93 $alertMsgOnChange =
'';
95 $fakeParameterArray[
'fieldConf'][
'onChange'] ===
'reload'
96 || !empty(
$GLOBALS[
'TCA'][$table][
'ctrl'][
'type']) &&
$GLOBALS[
'TCA'][$table][
'ctrl'][
'type'] === $flexFormFieldName
100 $alertMsgOnChange =
'top.TYPO3.Modal.confirm(TBE_EDITOR.labels.refreshRequired.title, TBE_EDITOR.labels.refreshRequired.content).on("button.clicked", function(e) { if (e.target.name == "ok" && TBE_EDITOR.checkSubmit(-1)) { TBE_EDITOR.submitForm() } top.TYPO3.Modal.dismiss(); });';
102 $alertMsgOnChange =
'if (TBE_EDITOR.checkSubmit(-1)){ TBE_EDITOR.submitForm();}';
105 if ($alertMsgOnChange) {
106 $fakeParameterArray[
'fieldChangeFunc'][
'alert'] = $alertMsgOnChange;
109 $originalFieldName = $parameterArray[
'itemFormElName'];
110 $fakeParameterArray[
'itemFormElName'] = $parameterArray[
'itemFormElName'] . $flexFormFormPrefix .
'[' . $flexFormFieldName .
'][vDEF]';
111 if ($fakeParameterArray[
'itemFormElName'] !== $originalFieldName) {
115 if (!empty($fakeParameterArray[
'fieldChangeFunc'][
'TBE_EDITOR_fieldChanged'])) {
116 $fakeParameterArray[
'fieldChangeFunc'][
'TBE_EDITOR_fieldChanged'] = str_replace($originalFieldName, $fakeParameterArray[
'itemFormElName'], $fakeParameterArray[
'fieldChangeFunc'][
'TBE_EDITOR_fieldChanged']);
119 $fakeParameterArray[
'itemFormElID'] = $fakeParameterArray[
'itemFormElName'];
120 if (isset($flexFormRowData[$flexFormFieldName][
'vDEF'])) {
121 $fakeParameterArray[
'itemFormElValue'] = $flexFormRowData[$flexFormFieldName][
'vDEF'];
123 $fakeParameterArray[
'itemFormElValue'] = $fakeParameterArray[
'fieldConf'][
'config'][
'default'];
127 $options[
'parameterArray'] = $fakeParameterArray;
128 $options[
'elementBaseName'] = $this->data[
'elementBaseName'] . $flexFormFormPrefix .
'[' . $flexFormFieldName .
'][vDEF]';
130 if (!empty($flexFormFieldArray[
'config'][
'renderType'])) {
131 $options[
'renderType'] = $flexFormFieldArray[
'config'][
'renderType'];
134 $options[
'renderType'] = $flexFormFieldArray[
'config'][
'type'];
136 $childResult = $this->nodeFactory->create($options)->render();
139 $processedTitle = str_replace(
'\\n',
'<br />', htmlspecialchars($fakeParameterArray[
'fieldConf'][
'label']));
141 $html[] =
'<div class="form-section">';
142 $html[] =
'<div class="form-group t3js-formengine-palette-field t3js-formengine-validation-marker">';
143 $html[] =
'<label class="t3js-formengine-label">';
144 $html[] = BackendUtility::wrapInHelp($parameterArray[
'_cshKey'], $flexFormFieldName, $processedTitle);
145 $html[] =
'</label>';
146 $html[] =
'<div class="t3js-formengine-field-item">';
147 $html[] = $childResult[
'html'];
152 $resultArray[
'html'] .= implode(LF, $html);
153 $childResult[
'html'] =
'';