diff --git a/core/Controller/Site/NavigationAdminController.php b/core/Controller/Site/NavigationAdminController.php index 816edf6..0fb3bbf 100644 --- a/core/Controller/Site/NavigationAdminController.php +++ b/core/Controller/Site/NavigationAdminController.php @@ -2,117 +2,110 @@ namespace App\Core\Controller\Site; -use App\Core\Controller\Admin\AdminController; +use App\Core\Controller\Admin\Crud\CrudController; +use App\Core\Crud\CrudConfiguration; +use App\Core\Crud\Field; use App\Core\Entity\Site\Navigation as Entity; -use App\Core\Factory\Site\NavigationFactory as EntityFactory; -use App\Core\Form\Site\NavigationType as EntityType; +use App\Core\Factory\Site\NavigationFactory as Factory; +use App\Core\Form\Site\NavigationType as Type; use App\Core\Manager\EntityManager; use App\Core\Repository\Site\NavigationRepositoryQuery as RepositoryQuery; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\Routing\Annotation\Route; -/** - * @Route("/admin/site/navigation") - */ -class NavigationAdminController extends AdminController +class NavigationAdminController extends CrudController { /** - * @Route("/{page}", name="admin_site_navigation_index", requirements={"page": "\d+"}) + * @Route("/admin/site/navigation/{page}", name="admin_site_navigation_index", methods={"GET"}, requirements={"page":"\d+"}) */ - public function index(int $page = 1, RepositoryQuery $query, Request $request): Response + public function index(int $page = 1, RepositoryQuery $query, Request $request, Session $session): Response { - $pager = $query - ->orderBy('.label, .domain') - ->paginate($page) - ; - - return $this->render('@Core/site/navigation_admin/index.html.twig', [ - 'pager' => $pager, - ]); + return $this->doIndex($page, $query, $request, $session); } /** - * @Route("/new", name="admin_site_navigation_new") + * @Route("/admin/site/navigation/new", name="admin_site_navigation_new", methods={"GET", "POST"}) */ - public function new(EntityFactory $factory, EntityManager $entityManager, Request $request): Response + public function new(Factory $factory, EntityManager $entityManager, Request $request): Response { - $entity = $factory->create(); - $form = $this->createForm(EntityType::class, $entity); - - if ($request->isMethod('POST')) { - $form->handleRequest($request); - - if ($form->isValid()) { - $entityManager->create($entity); - $this->addFlash('success', 'The data has been saved.'); - - return $this->redirectToRoute('admin_site_navigation_edit', [ - 'entity' => $entity->getId(), - ]); - } - $this->addFlash('warning', 'The form is not valid.'); - } - - return $this->render('@Core/site/navigation_admin/new.html.twig', [ - 'form' => $form->createView(), - 'entity' => $entity, - ]); + return $this->doNew($factory->create(), $entityManager, $request); } /** - * @Route("/edit/{entity}", name="admin_site_navigation_edit") - */ - public function edit(Entity $entity, EntityManager $entityManager, Request $request): Response - { - $form = $this->createForm(EntityType::class, $entity); - - if ($request->isMethod('POST')) { - $form->handleRequest($request); - - if ($form->isValid()) { - $entityManager->update($entity); - $this->addFlash('success', 'The data has been saved.'); - - return $this->redirectToRoute('admin_site_navigation_edit', [ - 'entity' => $entity->getId(), - ]); - } - - $this->addFlash('warning', 'The form is not valid.'); - } - - return $this->render('@Core/site/navigation_admin/edit.html.twig', [ - 'form' => $form->createView(), - 'entity' => $entity, - ]); - } - - /** - * @Route("/show/{entity}", name="admin_site_navigation_show") + * @Route("/admin/site/navigation/show/{entity}", name="admin_site_navigation_show", methods={"GET"}) */ public function show(Entity $entity): Response { - return $this->render('@Core/site/navigation_admin/show.html.twig', [ - 'entity' => $entity, - ]); + return $this->doShow($entity); } /** - * @Route("/delete/{entity}", name="admin_site_navigation_delete", methods={"DELETE"}) + * @Route("/admin/site/navigation/filter", name="admin_site_navigation_filter", methods={"GET"}) + */ + public function filter(Session $session): Response + { + return $this->doFilter($session); + } + + /** + * @Route("/admin/site/navigation/edit/{entity}", name="admin_site_navigation_edit", methods={"GET", "POST"}) + */ + public function edit(Entity $entity, EntityManager $entityManager, Request $request): Response + { + return $this->doEdit($entity, $entityManager, $request); + } + + /** + * @Route("/admin/site/navigation/delete/{entity}", name="admin_site_navigation_delete", methods={"DELETE"}) */ public function delete(Entity $entity, EntityManager $entityManager, Request $request): Response { - if ($this->isCsrfTokenValid('delete'.$entity->getId(), $request->request->get('_token'))) { - $entityManager->delete($entity); - - $this->addFlash('success', 'The data has been removed.'); - } - - return $this->redirectToRoute('admin_site_navigation_index'); + return $this->doDelete($entity, $entityManager, $request); } - public function getSection(): string + protected function getConfiguration(): CrudConfiguration + { + return CrudConfiguration::create() + ->setPageTitle('index', 'Navigations') + ->setPageTitle('edit', '{label}') + ->setPageTitle('new', 'New navigation') + ->setPageTitle('show', '{id}') + + ->setPageRoute('index', 'admin_site_navigation_index') + ->setPageRoute('new', 'admin_site_navigation_new') + ->setPageRoute('edit', 'admin_site_navigation_edit') + ->setPageRoute('show', 'admin_site_navigation_show') + ->setPageRoute('delete', 'admin_site_navigation_delete') + ->setPageRoute('filter', 'admin_site_navigation_filter') + + ->setForm('edit', Type::class, []) + ->setForm('new', Type::class) + + ->setView('show_entity', '@Core/site/navigation_admin/_show.html.twig') + ->setView('form', '@Core/site/navigation_admin/_form.html.twig') + + ->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'], + ]) + ; + } + + protected function getSection(): string { return 'site_navigation'; } diff --git a/core/Resources/translations/messages.fr.yaml b/core/Resources/translations/messages.fr.yaml index d45621a..73d6398 100644 --- a/core/Resources/translations/messages.fr.yaml +++ b/core/Resources/translations/messages.fr.yaml @@ -58,6 +58,10 @@ "Logout": "Déconnexion" "Dashboard": "Tableau de bord" "Navigations": "Navigations" +"Navigation": "Navigation" +"Edition of {id}": "Édition de {id}" +"View of {id}": "Visualisation de {id}" +"New navigation": "Nouvelle navigation" "Tree": "Arborescence" "Pages": "Pages" "Page": "Page" diff --git a/core/Resources/views/admin/crud/index.html.twig b/core/Resources/views/admin/crud/index.html.twig index 49bdbb5..0ec4910 100644 --- a/core/Resources/views/admin/crud/index.html.twig +++ b/core/Resources/views/admin/crud/index.html.twig @@ -133,7 +133,7 @@ {% endfor %} {% if configuration.action('index', 'show', true) or configuration.action('index', 'edit', true) or configuration.action('index', 'delete', true) %} -
- {{ 'Label'|trans }} - | -- {{ 'Domain'|trans }} - | -- {{ 'Actions'|trans }} - | -
---|---|---|
- - {{ item.label }} - - | -- - {{ item.domain }} - ({{ item.locale }}) - - | -- - - - - - - | -
-
-
-
-
- {{ 'No result'|trans }}
-
- |
-