From 60c6f6cd2232c5be8b6a4aa8e942d71efdb90780 Mon Sep 17 00:00:00 2001 From: Daniel Windloff <daniel.jc.windloff@googlemail.com> Date: Fri, 25 Sep 2020 14:16:04 +0200 Subject: [PATCH] [TASK] DatabaseRecordList: FieldSelectBox move html to fluid Use a fluid template to render the field selection. Releases: master Resolves: #92411 Change-Id: I46a6410873665f061a1607fb82ea8ddfd8974aa0 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/65877 Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de> Tested-by: TYPO3com <noreply@typo3.com> Tested-by: Daniel Goerz <daniel.goerz@posteo.de> Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de> Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de> --- .../Classes/RecordList/DatabaseRecordList.php | 49 +++++++------------ .../Private/Templates/FieldSelectBox.html | 44 +++++++++++++++++ 2 files changed, 62 insertions(+), 31 deletions(-) create mode 100644 typo3/sysext/recordlist/Resources/Private/Templates/FieldSelectBox.html diff --git a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php index 08067dec28a1..56c07beb5430 100644 --- a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php +++ b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php @@ -2256,10 +2256,10 @@ class DatabaseRecordList } // Determine, if checkbox should be checked if (in_array($fieldName, $setFields, true) || $fieldName === $GLOBALS['TCA'][$table]['ctrl']['label']) { - $checked = ' checked="checked"'; + $checked = true; } else { $checkAllChecked = false; - $checked = ''; + $checked = false; } // Field label @@ -2278,35 +2278,22 @@ class DatabaseRecordList } $fieldLabel = $fieldLabel ?: BackendUtility::getItemLabel($table, $fieldName); - - $checkboxes[] = '<tr><td class="col-checkbox"><input type="checkbox" id="check-' . $fieldName . '" name="displayFields[' - . $table . '][]" value="' . $fieldName . '" ' . $checked - . ($fieldName === $GLOBALS['TCA'][$table]['ctrl']['label'] ? ' disabled="disabled"' : '') . '></td><td class="col-title">' - . '<label class="label-block" for="check-' . $fieldName . '">' . htmlspecialchars($lang->sL($fieldLabel)) . ' <span class="text-muted text-monospace">[' . htmlspecialchars($fieldName) . ']</span></label></td></tr>'; - } - // Table with the field selector:: - return ' - <div class="fieldSelectBox"> - <form action="' . htmlspecialchars($this->listURL()) . '" method="post" name="fieldSelectBox"> - <input type="hidden" name="displayFields[' . $table . '][]" value=""> - <div class="table-fit table-scrollable"> - <table border="0" cellpadding="0" cellspacing="0" class="table table-transparent table-hover"> - <thead> - <tr> - <th class="col-checkbox checkbox" colspan="2"> - <label><input type="checkbox" class="checkbox checkAll" ' . ($checkAllChecked ? ' checked="checked"' : '') . '> - ' . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.toggleall')) . '</label> - </th> - </tr> - </thead> - <tbody> - ' . implode('', $checkboxes) . ' - </tbody> - </table> - </div> - <input type="submit" name="search" class="btn btn-default" value="' - . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.setFields')) . '"/> - </form></div>'; + $checkboxes[] = [ + 'fieldName' => $fieldName, + 'checked' => $checked, + 'disabled' => ($fieldName === $GLOBALS['TCA'][$table]['ctrl']['label']), + 'fieldLabel' => $fieldLabel + ]; + } + // Table with the field selector + return $this->getFluidTemplateObject('FieldSelectBox.html') + ->assignMultiple([ + 'formUrl' => $this->listURL(), + 'table' => $table, + 'allChecked' => $checkAllChecked, + 'checkboxes' => $checkboxes + ]) + ->render(); } /********************************* diff --git a/typo3/sysext/recordlist/Resources/Private/Templates/FieldSelectBox.html b/typo3/sysext/recordlist/Resources/Private/Templates/FieldSelectBox.html new file mode 100644 index 000000000000..04115ba2bcd8 --- /dev/null +++ b/typo3/sysext/recordlist/Resources/Private/Templates/FieldSelectBox.html @@ -0,0 +1,44 @@ +<div class="fieldSelectBox"> + <form action="{formUrl}" method="post" name="fieldSelectBox"> + <input type="hidden" name="displayFields[{table}][]" value=""> + <div class="table-fit table-scrollable"> + <table border="0" cellpadding="0" cellspacing="0" class="table table-transparent table-hover"> + <thead> + <tr> + <th class="col-checkbox checkbox" colspan="2"> + <label> + <input type="checkbox" class="checkbox checkAll" {f:if(condition:'{allChecked}', then: ' checked="checked"')} /> + <f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.toggleall" /> + </label> + </th> + </tr> + </thead> + <tbody> + <f:for each="{checkboxes}" as="checkbox"> + <tr> + <td class="col-checkbox"> + <input + type="checkbox" + id="check-{checkbox.fieldName}" + name="displayFields[{table}][]" + value="{checkbox.fieldName}" + {f:if(condition:'{checkbox.checked}', then:' checked')} + {f:if(condition:'{checkbox.disabled}', then: 'disabled')} + /> + </td> + <td class="col-title"> + <label class="label-block" for="check-{checkbox.fieldName}"> + <f:if condition="{checkbox.fieldLabel}"> + <f:translate key="{checkbox.fieldLabel}">{checkbox.fieldLabel}</f:translate> + </f:if> + <span class="text-muted text-monospace">[{checkbox.fieldName}]</span> + </label> + </td> + </tr> + </f:for> + </tbody> + </table> + </div> + <input type="submit" name="search" class="btn btn-default" value="{f:translate(key:'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.setFields')}" /> + </form> +</div> -- GitLab