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) %} - + {% if configuration.action('index', 'show', true) %} diff --git a/core/Resources/views/site/navigation_admin/_show.html.twig b/core/Resources/views/site/navigation_admin/_show.html.twig new file mode 100644 index 0000000..7e03e26 --- /dev/null +++ b/core/Resources/views/site/navigation_admin/_show.html.twig @@ -0,0 +1,26 @@ +
+
+
    +
  • + {{ 'Label'|trans }} + + {{ entity.label }} +
  • +
  • + {{ 'Domain'|trans }} + + {{ entity.domain }} +
  • +
  • + {{ 'Locale'|trans }} + + {{ entity.locale }} +
  • +
  • + {{ 'Code'|trans }} + + {{ entity.code }} +
  • +
+
+
diff --git a/core/Resources/views/site/navigation_admin/edit.html.twig b/core/Resources/views/site/navigation_admin/edit.html.twig deleted file mode 100644 index b4a01bb..0000000 --- a/core/Resources/views/site/navigation_admin/edit.html.twig +++ /dev/null @@ -1,57 +0,0 @@ -{% extends '@Core/admin/layout.html.twig' %} - -{% block title %}{{ 'Navigations'|trans }} - {{ parent() }}{% endblock %} - -{% block body %} -
-
-

{{ entity.label }}

- -
-
- - - {{ 'Back to the list'|trans }} - - - - {{ 'Show'|trans }} - - - - - - -
-
-
-
- -
-
-
-
- {{ include('@Core/site/navigation_admin/_form.html.twig') }} -
-
-
- - {{ form_rest(form) }} -
- -
- - -
-{% endblock %} diff --git a/core/Resources/views/site/navigation_admin/index.html.twig b/core/Resources/views/site/navigation_admin/index.html.twig deleted file mode 100644 index b288221..0000000 --- a/core/Resources/views/site/navigation_admin/index.html.twig +++ /dev/null @@ -1,84 +0,0 @@ -{% extends '@Core/admin/layout.html.twig' %} - -{% block title %}{{ 'Navigations'|trans }} - {{ parent() }}{% endblock %} - -{% block body %} -
-
-

{{ 'Navigations'|trans }}

- - -
- - {{ knp_pagination_render(pager) }} -
- -
- - - - - - - - - - {% for item in pager %} - {% set edit = path('admin_site_navigation_edit', {entity: item.id}) %} - {% set show = path('admin_site_navigation_show', {entity: item.id}) %} - - - - - - - {% else %} - - - - {% endfor %} - -
- {{ 'Label'|trans }} - - {{ 'Domain'|trans }} - - {{ 'Actions'|trans }} -
- - {{ item.label }} - - - - {{ item.domain }} - ({{ item.locale }}) - - - - - - - -
- - -
-
-
- -
-
- {{ 'No result'|trans }} -
-
-
-{% endblock %} diff --git a/core/Resources/views/site/navigation_admin/new.html.twig b/core/Resources/views/site/navigation_admin/new.html.twig deleted file mode 100644 index 37ff48c..0000000 --- a/core/Resources/views/site/navigation_admin/new.html.twig +++ /dev/null @@ -1,39 +0,0 @@ -{% extends '@Core/admin/layout.html.twig' %} - -{% block title %}{{ 'Navigations'|trans }} - {{ parent() }}{% endblock %} - -{% block body %} -
-
-

Nouvelle navigation

- -
-
- - - - {{ 'Back to the list'|trans }} - - - -
-
-
-
- -
-
-
-
- {{ include('@Core/site/navigation_admin/_form.html.twig') }} -
-
-
- - {{ form_rest(form) }} -
-{% endblock %} diff --git a/core/Resources/views/site/navigation_admin/show.html.twig b/core/Resources/views/site/navigation_admin/show.html.twig deleted file mode 100644 index 6322efc..0000000 --- a/core/Resources/views/site/navigation_admin/show.html.twig +++ /dev/null @@ -1,53 +0,0 @@ -{% extends '@Core/admin/layout.html.twig' %} - -{% block title %}{{ 'Navigations'|trans }} - {{ parent() }}{% endblock %} - -{% block body %} -
-
-

{{ entity.label }}

- - -
-
- -
-
- -
-
-{% endblock %}