From 03bd4aba302b02f13cd4d643af82fdeb8c7fa9db Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Fri, 28 Oct 2022 09:13:15 +0200 Subject: [PATCH] new: [genericElement:group_table_action] Added support of `show # element` in the table --- src/Controller/Component/CRUDComponent.php | 11 +++++ .../ListTopBar/group_table_action.php | 24 ++++++++++- .../group_table_action/numberOfElement.php | 42 +++++++++++++++++++ 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 templates/element/genericElements/ListTopBar/group_table_action/numberOfElement.php diff --git a/src/Controller/Component/CRUDComponent.php b/src/Controller/Component/CRUDComponent.php index a11937e..9967082 100644 --- a/src/Controller/Component/CRUDComponent.php +++ b/src/Controller/Component/CRUDComponent.php @@ -9,6 +9,7 @@ use Cake\Utility\Inflector; use Cake\Utility\Text; use Cake\View\ViewBuilder; use Cake\ORM\TableRegistry; +use Cake\ORM\Query; use Cake\Routing\Router; use Cake\Http\Exception\MethodNotAllowedException; use Cake\Http\Exception\NotFoundException; @@ -105,6 +106,7 @@ class CRUDComponent extends Component if ($this->metaFieldsSupported()) { $query = $this->includeRequestedMetaFields($query); } + $query = $this->setRequestedEntryAmount($query); $data = $this->Controller->paginate($query, $this->Controller->paginate ?? []); if (isset($options['afterFind'])) { $function = $options['afterFind']; @@ -707,6 +709,15 @@ class CRUDComponent extends Component ]); } + protected function setRequestedEntryAmount() + { + $user = $this->Controller->ACL->getUser(); + $tableSettings = IndexSetting::getTableSetting($user, $this->Table); + if (!empty($tableSettings['number_of_element'])) { + $this->Controller->paginate['limit'] = intval($tableSettings['number_of_element']); + } + } + public function view(int $id, array $params = []): void { if (empty($id)) { diff --git a/templates/element/genericElements/ListTopBar/group_table_action.php b/templates/element/genericElements/ListTopBar/group_table_action.php index fdb799c..fe538b2 100644 --- a/templates/element/genericElements/ListTopBar/group_table_action.php +++ b/templates/element/genericElements/ListTopBar/group_table_action.php @@ -8,6 +8,7 @@ if (empty($data['table_setting_id']) && empty($model)) { $data['table_setting_id'] = !empty($data['table_setting_id']) ? $data['table_setting_id'] : IndexSetting::getIDFromTable($model); $tableSettings = IndexSetting::getTableSetting($loggedUser, $data['table_setting_id']); $compactDisplay = !empty($tableSettings['compact_display']); +$numberOfElement = $tableSettings['number_of_element'] ?? 20; $availableColumnsHtml = $this->element('/genericElements/ListTopBar/group_table_action/hiddenColumns', [ 'table_data' => $table_data, @@ -51,7 +52,13 @@ $compactDisplayHtml = $this->element('/genericElements/ListTopBar/group_table_ac 'table_data' => $table_data, 'tableSettings' => $tableSettings, 'table_setting_id' => $data['table_setting_id'], - 'compactDisplay' => $compactDisplay + 'compactDisplay' => $compactDisplay, +]); +$numberOfElementHtml = $this->element('/genericElements/ListTopBar/group_table_action/numberOfElement', [ + 'table_data' => $table_data, + 'tableSettings' => $tableSettings, + 'table_setting_id' => $data['table_setting_id'], + 'numberOfElement' => $numberOfElement, ]); ?> @@ -63,6 +70,7 @@ $compactDisplayHtml = $this->element('/genericElements/ListTopBar/group_table_ac 'toggle-button' => [ 'icon' => 'sliders-h', 'variant' => 'primary', + 'class' => ['table_setting_dropdown_button'], ], 'submenu_alignment' => 'end', 'submenu_direction' => 'start', @@ -79,8 +87,22 @@ $compactDisplayHtml = $this->element('/genericElements/ListTopBar/group_table_ac ], [ 'html' => $compactDisplayHtml, + ], + [ + 'html' => $numberOfElementHtml, ] ] ]); ?> + + \ No newline at end of file diff --git a/templates/element/genericElements/ListTopBar/group_table_action/numberOfElement.php b/templates/element/genericElements/ListTopBar/group_table_action/numberOfElement.php new file mode 100644 index 0000000..6b69c50 --- /dev/null +++ b/templates/element/genericElements/ListTopBar/group_table_action/numberOfElement.php @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file