backports murph-skeleton

This commit is contained in:
Simon Vieille 2021-05-27 21:54:51 +02:00
parent 825a31f671
commit fef1f0d697
4 changed files with 34 additions and 7 deletions

View file

@ -57,6 +57,14 @@ class NavigationAdminController extends CrudController
return $this->doEdit($entity, $entityManager, $request);
}
/**
* @Route("/admin/site/navigation/sort/{page}", name="admin_site_navigation_sort", methods={"POST"}, requirements={"page":"\d+"})
*/
public function sort(int $page = 1, RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session): Response
{
return $this->doSort($page, $query, $entityManager, $request, $session);
}
/**
* @Route("/admin/site/navigation/delete/{entity}", name="admin_site_navigation_delete", methods={"DELETE"})
*/
@ -77,6 +85,7 @@ class NavigationAdminController extends CrudController
->setPageRoute('new', 'admin_site_navigation_new')
->setPageRoute('edit', 'admin_site_navigation_edit')
->setPageRoute('show', 'admin_site_navigation_show')
->setPageRoute('sort', 'admin_site_navigation_sort')
->setPageRoute('delete', 'admin_site_navigation_delete')
->setPageRoute('filter', 'admin_site_navigation_filter')
@ -87,21 +96,20 @@ class NavigationAdminController extends CrudController
->setView('show_entity', '@Core/site/navigation_admin/_show.html.twig')
->setView('form', '@Core/site/navigation_admin/_form.html.twig')
->setIsSortableCollection('index', true)
->setField('index', 'Label', Field\TextField::class, [
'property' => 'label',
'attr' => ['class' => 'miw-200'],
'sort' => ['label', '.label'],
])
->setField('index', 'Domain', Field\ButtonField::class, [
'property' => 'domain',
'button_attr' => ['class' => 'btn btn-light'],
'attr' => ['class' => 'miw-200'],
'sort' => ['domain', '.domain'],
])
->setField('index', 'Locale', Field\ButtonField::class, [
'property' => 'locale',
'button_attr' => ['class' => 'btn btn-light'],
'sort' => ['locale', '.locale'],
])
;
}

View file

@ -31,7 +31,9 @@ class TreeAdminController extends AdminController
}
if (null === $navigation) {
$navigation = $navigationQuery->create()->findOne();
$navigation = $navigationQuery->create()
->orderBy('.sortOrder')
->findOne();
}
if (null === $navigation) {
@ -55,7 +57,7 @@ class TreeAdminController extends AdminController
Session $session
): Response {
$navigations = $navigationQuery->create()
->orderBy('.label, .domain')
->orderBy('.sortOrder')
->find()
;

View file

@ -47,7 +47,7 @@ class Navigation implements EntityInterface
/**
* @ORM\Column(type="text", nullable=true)
*/
protected $additionalDomains = [];
protected $additionalDomains = '[]';
/**
* @ORM\OneToMany(targetEntity=Menu::class, mappedBy="navigation")
@ -59,6 +59,11 @@ class Navigation implements EntityInterface
*/
protected $locale = 'en';
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $sortOrder;
public function __construct()
{
$this->menus = new ArrayCollection();
@ -186,4 +191,16 @@ class Navigation implements EntityInterface
return $this;
}
public function getSortOrder(): ?int
{
return $this->sortOrder;
}
public function setSortOrder(?int $sortOrder): self
{
$this->sortOrder = $sortOrder;
return $this;
}
}

View file

@ -59,7 +59,7 @@ class <?= $class_name; ?> extends CrudController
}
/**
* @Route("/admin/<?= $route; ?>/sort/{page}", name="admin_<?= $route; ?>_sort", methods={"POST"})
* @Route("/admin/<?= $route; ?>/sort/{page}", name="admin_<?= $route; ?>_sort", methods={"POST"}, requirements={"page":"\d+"})
*/
public function sort(int $page = 1, RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session): Response
{