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); 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"}) * @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('new', 'admin_site_navigation_new')
->setPageRoute('edit', 'admin_site_navigation_edit') ->setPageRoute('edit', 'admin_site_navigation_edit')
->setPageRoute('show', 'admin_site_navigation_show') ->setPageRoute('show', 'admin_site_navigation_show')
->setPageRoute('sort', 'admin_site_navigation_sort')
->setPageRoute('delete', 'admin_site_navigation_delete') ->setPageRoute('delete', 'admin_site_navigation_delete')
->setPageRoute('filter', 'admin_site_navigation_filter') ->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('show_entity', '@Core/site/navigation_admin/_show.html.twig')
->setView('form', '@Core/site/navigation_admin/_form.html.twig') ->setView('form', '@Core/site/navigation_admin/_form.html.twig')
->setIsSortableCollection('index', true)
->setField('index', 'Label', Field\TextField::class, [ ->setField('index', 'Label', Field\TextField::class, [
'property' => 'label', 'property' => 'label',
'attr' => ['class' => 'miw-200'], 'attr' => ['class' => 'miw-200'],
'sort' => ['label', '.label'],
]) ])
->setField('index', 'Domain', Field\ButtonField::class, [ ->setField('index', 'Domain', Field\ButtonField::class, [
'property' => 'domain', 'property' => 'domain',
'button_attr' => ['class' => 'btn btn-light'], 'button_attr' => ['class' => 'btn btn-light'],
'attr' => ['class' => 'miw-200'], 'attr' => ['class' => 'miw-200'],
'sort' => ['domain', '.domain'],
]) ])
->setField('index', 'Locale', Field\ButtonField::class, [ ->setField('index', 'Locale', Field\ButtonField::class, [
'property' => 'locale', 'property' => 'locale',
'button_attr' => ['class' => 'btn btn-light'], 'button_attr' => ['class' => 'btn btn-light'],
'sort' => ['locale', '.locale'],
]) ])
; ;
} }

View file

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

View file

@ -47,7 +47,7 @@ class Navigation implements EntityInterface
/** /**
* @ORM\Column(type="text", nullable=true) * @ORM\Column(type="text", nullable=true)
*/ */
protected $additionalDomains = []; protected $additionalDomains = '[]';
/** /**
* @ORM\OneToMany(targetEntity=Menu::class, mappedBy="navigation") * @ORM\OneToMany(targetEntity=Menu::class, mappedBy="navigation")
@ -59,6 +59,11 @@ class Navigation implements EntityInterface
*/ */
protected $locale = 'en'; protected $locale = 'en';
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $sortOrder;
public function __construct() public function __construct()
{ {
$this->menus = new ArrayCollection(); $this->menus = new ArrayCollection();
@ -186,4 +191,16 @@ class Navigation implements EntityInterface
return $this; 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 public function sort(int $page = 1, RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session): Response
{ {