diff --git a/assets/css/admin.scss b/assets/css/admin.scss index 1e360b0..61ecf32 100644 --- a/assets/css/admin.scss +++ b/assets/css/admin.scss @@ -261,13 +261,13 @@ table.table-fixed, .table-fixed > table { .toast-container { display: flex; position: relative; - z-index: 1000; + z-index: 1060; .toast-wrapper { position: fixed; - top: 80px; - right: calc(50% - 150px); - z-index: 1000; + top: 20px; + right: 20px; + z-index: 1060; width: 300px; } } diff --git a/assets/js/addons/modal.js b/assets/js/addons/modal.js index 5b007b4..0e389f2 100644 --- a/assets/js/addons/modal.js +++ b/assets/js/addons/modal.js @@ -1,7 +1,7 @@ const $ = require('jquery'); module.exports = function() { - $('*[data-modal]').click((e) => { + $('body').on('click', '*[data-modal]', (e) => { e.preventDefault(); e.stopPropagation(); @@ -21,4 +21,11 @@ module.exports = function() { $(container).modal('show'); }); }); + + const urlParams = new URLSearchParams(window.location.search) + const dataModal = urlParams.get('data-modal') + + if (dataModal) { + $('*[data-modal="' + dataModal + '"]').first().click(); + } } diff --git a/core/Controller/Site/NodeAdminController.php b/core/Controller/Site/NodeAdminController.php index ac88933..0517de1 100644 --- a/core/Controller/Site/NodeAdminController.php +++ b/core/Controller/Site/NodeAdminController.php @@ -19,6 +19,7 @@ use Symfony\Component\Form\FormError; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; +use App\Core\Sitemap\SitemapBuilder; /** * @Route("/admin/site/node") @@ -73,6 +74,11 @@ class NodeAdminController extends AdminController $entityManager->update($entity); $this->addFlash('success', 'Donnée enregistrée.'); + + return $this->redirectToRoute('admin_site_tree_navigation', [ + 'navigation' => $node->getMenu()->getNavigation()->getId(), + 'data-modal' => $this->generateUrl('admin_site_node_edit', ['entity' => $entity->getId()]), + ]); } else { $this->addFlash('warning', 'Le formulaire est invalide.'); } @@ -86,14 +92,16 @@ class NodeAdminController extends AdminController 'form' => $form->createView(), 'node' => $node, 'entity' => $entity, + 'tab' => 'content', ]); } /** - * @Route("/edit/{entity}", name="admin_site_node_edit") + * @Route("/edit/{entity}/{tab}", name="admin_site_node_edit") */ public function edit( Entity $entity, + string $tab = 'content', EntityManager $entityManager, PageFactory $pageFactory, PageLocator $pageLocator, @@ -125,12 +133,25 @@ class NodeAdminController extends AdminController return $this->redirectToRoute('admin_site_tree_navigation', [ 'navigation' => $entity->getMenu()->getNavigation()->getId(), + 'data-modal' => $this->generateUrl('admin_site_node_edit', ['entity' => $entity->getId()]), ]); } return $this->render('site/node_admin/edit.html.twig', [ 'form' => $form->createView(), 'entity' => $entity, + 'tab' => $tab, + ]); + } + + /** + * @Route("/urls/{entity}", name="admin_site_node_urls") + */ + public function urls(Entity $entity, SitemapBuilder $builder): Response + { + return $this->render('site/node_admin/urls.html.twig', [ + 'entity' => $entity, + 'urls' => $builder->getNodeUrls($entity), ]); } diff --git a/core/Sitemap/SitemapBuilder.php b/core/Sitemap/SitemapBuilder.php index 2b39aa5..37b564a 100644 --- a/core/Sitemap/SitemapBuilder.php +++ b/core/Sitemap/SitemapBuilder.php @@ -3,12 +3,12 @@ namespace App\Core\Sitemap; use App\Core\Annotation\UrlGenerator; +use App\Core\Entity\Site\Navigation; use App\Core\Entity\Site\Node; use Doctrine\Common\Annotations\Reader; use Symfony\Component\DependencyInjection\ContainerInterface; -use App\Core\Entity\Site\Navigation; -use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Routing\Exception\MissingMandatoryParametersException; +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; /** * class SitemapBuilder. @@ -44,36 +44,8 @@ class SitemapBuilder $nodeItems = []; - try { - if ($node->getController()) { - $annotation = $this->getAnnotation($node); - - if (false === $annotation) { - continue; - } - if (null === $annotation) { - $nodeItems[] = $this->createItem($parameters, $this->urlGenerator->generate( - $node->getRouteName(), - [], - UrlGeneratorInterface::ABSOLUTE_URL - )); - } else { - $service = $this->container->get($annotation->service); - $method = $annotation->method; - $urls = $service->{$method}($node, $annotation->options); - - foreach ($urls as $url) { - $nodeItems[] = $this->createItem($parameters, $url); - } - } - } else { - $nodeItems[] = $this->createItem($parameters, $this->urlGenerator->generate( - $node->getRouteName(), - [], - UrlGeneratorInterface::ABSOLUTE_URL - )); - } - } catch (MissingMandatoryParametersException $e) { + foreach ($this->getNodeUrls($node) as $url) { + $nodeItems[] = $this->createItem($parameters, $url); } $items = array_merge( @@ -86,7 +58,41 @@ class SitemapBuilder return $items; } - public function createItem(array $parameters, string $location): array + public function getNodeUrls(Node $node) + { + $urls = []; + + try { + if ($node->getController()) { + $annotation = $this->getAnnotation($node); + + if (false !== $annotation) { + if (null === $annotation) { + $urls[] = $this->urlGenerator->generate( + $node->getRouteName(), + [], + UrlGeneratorInterface::ABSOLUTE_URL + ); + } else { + $service = $this->container->get($annotation->service); + $method = $annotation->method; + $urls = $service->{$method}($node, $annotation->options); + } + } + } else { + $urls[] = $this->urlGenerator->generate( + $node->getRouteName(), + [], + UrlGeneratorInterface::ABSOLUTE_URL + ); + } + } catch (MissingMandatoryParametersException $e) { + } + + return $urls; + } + + protected function createItem(array $parameters, string $location): array { return array_merge( [ diff --git a/templates/site/node_admin/_form.html.twig b/templates/site/node_admin/_form.html.twig index c2febec..f0265ce 100644 --- a/templates/site/node_admin/_form.html.twig +++ b/templates/site/node_admin/_form.html.twig @@ -1,20 +1,20 @@
-
+
{{ form_row(form.label) }} {% if form.position is defined %} @@ -121,7 +121,15 @@ {% endif %}
-
+
+ {% if entity.id %} +
+ + + +
+ {% endif %} + {{ form_row(form.url) }}
@@ -164,7 +172,7 @@
-
+
{% for item in form.attributes %}
@@ -197,7 +205,7 @@
-
+
{{ form_row(form.sitemapParameters) }}
diff --git a/templates/site/node_admin/urls.html.twig b/templates/site/node_admin/urls.html.twig new file mode 100644 index 0000000..82c941e --- /dev/null +++ b/templates/site/node_admin/urls.html.twig @@ -0,0 +1,23 @@ + +