2 namespace TYPO3\CMS\Backend\Form\Container;
109 $targetStructure = array();
110 $mainStructureCounter = -1;
111 $fieldsArray = $this->data[
'fieldsArray'];
113 foreach ($fieldsArray as $fieldString) {
115 $fieldName = $fieldConfiguration[
'fieldName'];
116 if ($fieldName ===
'--palette--') {
118 if (!empty($paletteElementArray)) {
119 $mainStructureCounter ++;
120 $targetStructure[$mainStructureCounter] = array(
122 'fieldName' => $fieldConfiguration[
'paletteName'],
123 'fieldLabel' => $languageService->sL($fieldConfiguration[
'fieldLabel']),
124 'elements' => $paletteElementArray,
128 if (!is_array($this->data[
'processedTca'][
'columns'][$fieldName])) {
133 $options[
'fieldName'] = $fieldName;
135 $options[
'renderType'] =
'singleFieldContainer';
136 $childResultArray = $this->nodeFactory->create($options)->render();
138 if (!empty($childResultArray[
'html'])) {
139 $mainStructureCounter ++;
140 $targetStructure[$mainStructureCounter] = array(
142 'fieldName' => $fieldConfiguration[
'fieldName'],
144 'fieldHtml' => $childResultArray[
'html'],
148 $childResultArray[
'html'] =
'';
155 foreach ($targetStructure as $element) {
156 if ($element[
'type'] ===
'palette') {
157 $paletteName = $element[
'fieldName'];
160 $isHiddenPalette = !empty($this->data[
'processedTca'][
'palettes'][$paletteName][
'isHiddenPalette']);
162 $paletteElementsHtml =
'<div class="row">' . $paletteElementsHtml .
'</div>';
164 $content[] = $this->
fieldSetWrap($paletteElementsHtml, $isHiddenPalette, $element[
'fieldLabel']);
168 $content[] = $element[
'fieldHtml'];
176 $finalResultArray[
'html'] = implode(LF, $content);
177 return $finalResultArray;
189 if (empty($paletteName) || empty($this->data[
'processedTca'][
'palettes'][$paletteName][
'showitem'])) {
193 $resultStructure = array();
194 $foundRealElement =
false;
196 foreach ($fieldsArray as $fieldString) {
198 $fieldName = $fieldArray[
'fieldName'];
199 if ($fieldName ===
'--linebreak--') {
200 $resultStructure[] = array(
201 'type' =>
'linebreak',
204 if (!is_array($this->data[
'processedTca'][
'columns'][$fieldName])) {
208 $options[
'fieldName'] = $fieldName;
210 $options[
'renderType'] =
'singleFieldContainer';
211 $singleFieldContentArray = $this->nodeFactory->create($options)->render();
213 if (!empty($singleFieldContentArray[
'html'])) {
214 $foundRealElement =
true;
215 $resultStructure[] = array(
217 'fieldName' => $fieldName,
219 'fieldHtml' => $singleFieldContentArray[
'html'],
221 $singleFieldContentArray[
'html'] =
'';
227 if ($foundRealElement) {
228 return $resultStructure;
243 $groupedFields = array();
245 $lastLineWasLinebreak =
true;
246 foreach ($elementArray[
'elements'] as $element) {
247 if ($element[
'type'] ===
'linebreak') {
248 if (!$lastLineWasLinebreak) {
250 $groupedFields[$row][] = $element;
252 $lastLineWasLinebreak =
true;
255 $lastLineWasLinebreak =
false;
256 $groupedFields[$row][] = $element;
262 foreach ($groupedFields as $fields) {
263 $numberOfItems = count($fields);
264 $colWidth = (int)floor(12 / $numberOfItems);
266 $colClass =
"col-md-12";
268 if ($colWidth == 6) {
269 $colClass =
"col-sm-6";
271 2 =>
'visible-sm-block visible-md-block visible-lg-block',
273 }
elseif ($colWidth === 4) {
274 $colClass =
"col-sm-4";
276 3 =>
'visible-sm-block visible-md-block visible-lg-block',
278 }
elseif ($colWidth === 3) {
279 $colClass =
"col-sm-6 col-md-3";
281 2 =>
'visible-sm-block',
282 4 =>
'visible-md-block visible-lg-block',
284 }
elseif ($colWidth <= 2) {
285 $colClass =
"checkbox-column col-sm-6 col-md-3 col-lg-2";
287 2 =>
'visible-sm-block',
288 4 =>
'visible-md-block',
289 6 =>
'visible-lg-block'
294 for ($counter = 0; $counter < $numberOfItems; $counter++) {
295 $element = $fields[$counter];
296 if ($element[
'type'] ===
'linebreak') {
297 if ($counter !== $numberOfItems) {
298 $result[] =
'<div class="clearfix"></div>';
304 if ($counter + 1 < $numberOfItems && !empty($colClear)) {
305 foreach ($colClear as $rowBreakAfter => $clearClass) {
306 if (($counter + 1) % $rowBreakAfter === 0) {
307 $result[] =
'<div class="clearfix ' . $clearClass .
'"></div>';
315 return implode(LF, $result);
326 protected function fieldSetWrap($content, $paletteHidden =
false, $label =
'')
328 $fieldSetClass =
'form-section';
329 if ($paletteHidden) {
330 $fieldSetClass =
'hide';
334 $result[] =
'<fieldset class="' . $fieldSetClass .
'">';
336 if (!empty($label)) {
337 $result[] =
'<h4 class="form-section-headline">' . htmlspecialchars($label) .
'</h4>';
340 $result[] = $content;
341 $result[] =
'</fieldset>';
342 return implode(LF, $result);
354 $fieldName = $element[
'fieldName'];
356 $paletteFieldClasses = array(
358 't3js-formengine-validation-marker',
359 't3js-formengine-palette-field',
361 foreach ($additionalPaletteClasses as $class) {
362 $paletteFieldClasses[] = $class;
365 $label = BackendUtility::wrapInHelp($this->data[
'tableName'], $fieldName, htmlspecialchars($element[
'fieldLabel']));
368 $content[] =
'<div class="' . implode(
' ', $paletteFieldClasses) .
'">';
369 $content[] =
'<label class="t3js-formengine-label">';
371 $content[] =
'</label>';
372 $content[] = $element[
'fieldHtml'];
373 $content[] =
'</div>';
375 return implode(LF, $content);
388 $table = $this->data[
'tableName'];
389 $label = $labelFromShowItem;
390 if (!empty($this->data[
'processedTca'][
'columns'][$fieldName][
'label'])) {
391 $label = $this->data[
'processedTca'][
'columns'][$fieldName][
'label'];
393 if (!empty($labelFromShowItem)) {
394 $label = $labelFromShowItem;
398 if (isset($this->data[
'pageTsConfig'][
'TCEFORM.'][$table .
'.'][$fieldName .
'.'])
399 && is_array($this->data[
'pageTsConfig'][
'TCEFORM.'][$table .
'.'][$fieldName .
'.'])
401 $fieldTSConfig = $this->data[
'pageTsConfig'][
'TCEFORM.'][$table .
'.'][$fieldName .
'.'];
404 if (!empty($fieldTSConfig[
'label'])) {
405 $label = $fieldTSConfig[
'label'];
407 if (!empty($fieldTSConfig[
'label.'][$languageService->lang])) {
408 $label = $fieldTSConfig[
'label.'][$languageService->lang];
410 return $languageService->sL($label);
421 $fieldName = $element[
'fieldName'];
423 $this->data[
'processedTca'][
'columns'][$fieldName][
'config'][
'type'] ===
'user'
424 && !empty($this->data[
'processedTca'][
'columns'][$fieldName][
'config'][
'noTableWrapping'])