feat(main): Make groups reorderable

This commit is contained in:
2026-08-13 16:42:17 +02:00
parent 34fb95a699
commit e804c37175
10 changed files with 93 additions and 4 deletions
@@ -8,6 +8,7 @@ use PrestaShop\PrestaShop\Core\Grid\Action\Row\Type\LinkRowAction;
use PrestaShop\PrestaShop\Core\Grid\Action\Type\SimpleGridAction;
use PrestaShop\PrestaShop\Core\Grid\Column\ColumnCollection;
use PrestaShop\PrestaShop\Core\Grid\Column\Type\Common\ActionColumn;
use PrestaShop\PrestaShop\Core\Grid\Column\Type\Common\PositionColumn;
use PrestaShop\PrestaShop\Core\Grid\Column\Type\DataColumn;
use PrestaShop\PrestaShop\Core\Grid\Definition\Factory\AbstractGridDefinitionFactory;
use PrestaShop\PrestaShop\Core\Grid\Definition\Factory\DeleteActionTrait;
@@ -81,6 +82,16 @@ final class CustomHtmlGroupGridDefinitionFactory extends AbstractGridDefinitionF
->setName($this->trans('Active', [], 'Admin.Global'))
->setOptions(['field' => 'active'])
)
->add(
(new PositionColumn('position'))
->setName($this->trans('Position', [], 'Admin.Global'))
->setOptions([
'id_field' => 'id_ws_customhtml_group',
'position_field' => 'ordering',
'update_method' => 'POST',
'update_route' => 'customhtmlgroup_update_position',
])
)
->add(
(new DataColumn('date_add'))
->setName($this->trans('Date added', [], 'Admin.Global'))
+1 -1
View File
@@ -14,7 +14,7 @@ final class CustomHtmlGroupFilters extends Filters
return [
'limit' => 10,
'offset' => 0,
'orderBy' => 'wchg.id_ws_customhtml_group',
'orderBy' => 'position',
'sortOrder' => 'asc',
'filters' => [],
];
@@ -46,6 +46,7 @@ final class CustomHtmlGroupQueryBuilder extends AbstractDoctrineQueryBuilder
'wchg.`title`',
'wchg.`hook_name`',
'wchg.`active`',
'wchg.`ordering`',
'wchg.`date_add`',
'(SELECT COUNT(*) FROM `' . $this->dbPrefix . 'ws_customhtml` wch
WHERE wch.`id_ws_customhtml_group` = wchg.`id_ws_customhtml_group`) AS blocks_count'
@@ -53,8 +54,10 @@ final class CustomHtmlGroupQueryBuilder extends AbstractDoctrineQueryBuilder
$this->applyFilters($qb, $searchCriteria);
$orderBy = $searchCriteria->getOrderBy() === 'position' ? 'wchg.ordering' : $searchCriteria->getOrderBy();
$qb
->orderBy($searchCriteria->getOrderBy(), $searchCriteria->getOrderWay())
->orderBy($orderBy, $searchCriteria->getOrderWay())
->setFirstResult($searchCriteria->getOffset() ?? 0)
->setMaxResults($searchCriteria->getLimit());