39 $flexFormDataStructureArray = $this->data[
'flexFormDataStructureArray'];
40 $flexFormRowData = $this->data[
'flexFormRowData'];
41 $flexFormFormPrefix = $this->data[
'flexFormFormPrefix'];
42 $parameterArray = $this->data[
'parameterArray'];
46 foreach ($flexFormDataStructureArray as $flexFormFieldName => $flexFormFieldArray) {
49 !is_array($flexFormFieldArray)
51 || (!isset($flexFormFieldArray[
'type']) && !is_array($flexFormFieldArray[
'config']))
56 if ($flexFormFieldArray[
'type'] ===
'array') {
58 if (empty($flexFormFieldArray[
'section'])) {
59 $resultArray[
'html'] = LF .
'Section expected at ' . $flexFormFieldName .
' but not found';
64 $options[
'flexFormDataStructureArray'] = $flexFormFieldArray;
65 $options[
'flexFormRowData'] = $flexFormRowData[$flexFormFieldName][
'el'] ?? [];
66 $options[
'flexFormFieldName'] = $flexFormFieldName;
67 $options[
'renderType'] =
'flexFormSectionContainer';
68 $sectionContainerResult = $this->nodeFactory->create($options)->render();
72 $fakeParameterArray = [
74 'label' => $languageService->sL(trim($flexFormFieldArray[
'label'])),
75 'config' => $flexFormFieldArray[
'config'],
76 'children' => $flexFormFieldArray[
'children'],
77 'onChange' => $flexFormFieldArray[
'onChange'],
79 'fieldChangeFunc' => $parameterArray[
'fieldChangeFunc'],
80 'label' => $parameterArray[
'label'],
83 if (isset($flexFormFieldArray[
'description']) && !empty($flexFormFieldArray[
'description'])) {
84 $fakeParameterArray[
'fieldConf'][
'description'] = $flexFormFieldArray[
'description'];
87 $alertMsgOnChange =
'';
88 if (isset($fakeParameterArray[
'fieldConf'][
'onChange']) && $fakeParameterArray[
'fieldConf'][
'onChange'] ===
'reload') {
90 $alertMsgOnChange =
'top.TYPO3.Modal.confirm('
91 .
'TYPO3.lang["FormEngine.refreshRequiredTitle"],'
92 .
' TYPO3.lang["FormEngine.refreshRequiredContent"]'
96 .
' function(e) { if (e.target.name == "ok" && TBE_EDITOR.checkSubmit(-1)) { TBE_EDITOR.submitForm() } top.TYPO3.Modal.dismiss(); }'
99 $alertMsgOnChange =
'if (TBE_EDITOR.checkSubmit(-1)){ TBE_EDITOR.submitForm();}';
102 if ($alertMsgOnChange) {
103 $fakeParameterArray[
'fieldChangeFunc'][
'alert'] = $alertMsgOnChange;
106 $originalFieldName = $parameterArray[
'itemFormElName'];
107 $fakeParameterArray[
'itemFormElName'] = $parameterArray[
'itemFormElName'] . $flexFormFormPrefix .
'[' . $flexFormFieldName .
'][vDEF]';
108 if ($fakeParameterArray[
'itemFormElName'] !== $originalFieldName) {
112 if (!empty($fakeParameterArray[
'fieldChangeFunc'][
'TBE_EDITOR_fieldChanged'])) {
113 $fakeParameterArray[
'fieldChangeFunc'][
'TBE_EDITOR_fieldChanged'] = str_replace($originalFieldName, $fakeParameterArray[
'itemFormElName'], $fakeParameterArray[
'fieldChangeFunc'][
'TBE_EDITOR_fieldChanged']);
116 $fakeParameterArray[
'itemFormElID'] = $parameterArray[
'itemFormElID'] .
'_' . preg_replace(
'/[^a-zA-Z0-9_-]/',
'_', $flexFormFieldName) .
'_' . md5($fakeParameterArray[
'itemFormElName']);
117 if (isset($flexFormRowData[$flexFormFieldName][
'vDEF'])) {
118 $fakeParameterArray[
'itemFormElValue'] = $flexFormRowData[$flexFormFieldName][
'vDEF'];
120 $fakeParameterArray[
'itemFormElValue'] = $fakeParameterArray[
'fieldConf'][
'config'][
'default'];
125 if (empty($options[
'flexFormFieldName'])) {
126 $options[
'flexFormFieldName'] = $flexFormFieldName;
128 $options[
'flexFormContainerFieldName'] = $flexFormFieldName;
130 $options[
'parameterArray'] = $fakeParameterArray;
131 $options[
'elementBaseName'] = $this->data[
'elementBaseName'] . $flexFormFormPrefix .
'[' . $flexFormFieldName .
'][vDEF]';
133 if (!empty($flexFormFieldArray[
'config'][
'renderType'])) {
134 $options[
'renderType'] = $flexFormFieldArray[
'config'][
'renderType'];
137 $options[
'renderType'] = $flexFormFieldArray[
'config'][
'type'];
139 $childResult = $this->nodeFactory->create($options)->render();
141 if (!empty($childResult[
'html'])) {
143 $processedTitle = str_replace(
'\\n',
'<br />', htmlspecialchars($fakeParameterArray[
'fieldConf'][
'label']));
145 $html[] =
'<div class="form-section">';
146 $html[] =
'<div class="form-group t3js-formengine-palette-field t3js-formengine-validation-marker">';
147 $html[] =
'<label class="t3js-formengine-label">';
149 $html[] =
'</label>';
150 $html[] =
'<div class="formengine-field-item t3js-formengine-field-item">';
151 $html[] = $childResult[
'html'];
155 $resultArray[
'html'] .= implode(LF, $html);