From e69a44151dd95097bacac0369c13e77c7db4392f Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Thu, 25 Mar 2021 12:00:53 +0100 Subject: [PATCH] backports murph-skeleton --- .../Site/MenuEventSubscriber.php | 17 +++++++++-- .../Site/SiteEventSubscriber.php | 28 +++++++------------ core/Resources/translations/messages.fr.yaml | 1 + .../site/tree_admin/navigation.html.twig | 18 +++++++++--- core/Router/SiteRouteLoader.php | 4 +++ 5 files changed, 43 insertions(+), 25 deletions(-) diff --git a/core/EventSuscriber/Site/MenuEventSubscriber.php b/core/EventSuscriber/Site/MenuEventSubscriber.php index 205165f..72335c3 100644 --- a/core/EventSuscriber/Site/MenuEventSubscriber.php +++ b/core/EventSuscriber/Site/MenuEventSubscriber.php @@ -10,6 +10,7 @@ use App\Core\Factory\Site\NodeFactory; use App\Core\Manager\EntityManager; use App\Core\Repository\Site\NodeRepository; use App\Core\Slugify\CodeSlugify; +use App\Core\Cache\SymfonyCacheManager; /** * class MenuEventSubscriber. @@ -22,17 +23,20 @@ class MenuEventSubscriber extends EntityManagerEventSubscriber protected NodeRepository $nodeRepository; protected EntityManager $entityManager; protected CodeSlugify $slugify; + protected SymfonyCacheManager $cacheManager; public function __construct( NodeFactory $nodeFactory, NodeRepository $nodeRepository, EntityManager $entityManager, - CodeSlugify $slugify + CodeSlugify $slugify, + SymfonyCacheManager $cacheManager ) { $this->nodeFactory = $nodeFactory; $this->nodeRepository = $nodeRepository; $this->entityManager = $entityManager; $this->slugify = $slugify; + $this->cacheManager = $cacheManager; } public function support(EntityInterface $entity) @@ -58,11 +62,16 @@ class MenuEventSubscriber extends EntityManagerEventSubscriber $menu = $event->getEntity(); - if (0 !== count($menu->getNodes())) { + if (count($menu->getNodes()) > 2) { return; } - $rootNode = $this->nodeFactory->create($menu); + $rootNode = $menu->getRootNode(); + + if (!$rootNode) { + $rootNode = $this->nodeFactory->create($menu); + } + $childNode = $this->nodeFactory->create($menu, '/'); $childNode ->setParent($rootNode) @@ -78,6 +87,8 @@ class MenuEventSubscriber extends EntityManagerEventSubscriber $this->entityManager->flush(); $this->nodeRepository->persistAsFirstChild($childNode, $rootNode); + + $this->cacheManager->cleanAll(); } public function onUpdate(EntityManagerEvent $event) diff --git a/core/EventSuscriber/Site/SiteEventSubscriber.php b/core/EventSuscriber/Site/SiteEventSubscriber.php index cf95a5d..6c6a8c3 100644 --- a/core/EventSuscriber/Site/SiteEventSubscriber.php +++ b/core/EventSuscriber/Site/SiteEventSubscriber.php @@ -8,10 +8,9 @@ use App\Core\Entity\Site\Navigation; use App\Core\Entity\Site\Node; use App\Core\Event\EntityManager\EntityManagerEvent; use App\Core\EventSuscriber\EntityManagerEventSubscriber; -use Symfony\Bundle\FrameworkBundle\Console\Application; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Output\BufferedOutput; +use Symfony\Component\Finder\Finder; use Symfony\Component\HttpKernel\KernelInterface; +use App\Core\Cache\SymfonyCacheManager; /** * class SiteEventSubscriber. @@ -21,10 +20,12 @@ use Symfony\Component\HttpKernel\KernelInterface; class SiteEventSubscriber extends EntityManagerEventSubscriber { protected KernelInterface $kernel; + protected SymfonyCacheManager $cacheManager; - public function __construct(KernelInterface $kernel) + public function __construct(KernelInterface $kernel, SymfonyCacheManager $cacheManager) { $this->kernel = $kernel; + $this->cacheManager = $cacheManager; } public function support(EntityInterface $entity) @@ -38,7 +39,11 @@ class SiteEventSubscriber extends EntityManagerEventSubscriber return; } - $this->cleanCache(); + if ($event->getEntity() instanceof Node) { + $this->cacheManager->cleanRouting(); + } else { + $this->cacheManager->cleanAll(); + } } public function onCreate(EntityManagerEvent $event) @@ -50,17 +55,4 @@ class SiteEventSubscriber extends EntityManagerEventSubscriber { return $this->onUpdate($event); } - - protected function cleanCache() - { - $application = new Application($this->kernel); - $application->setAutoExit(false); - - $input = new ArrayInput([ - 'command' => 'cache:clear', - ]); - - $output = new BufferedOutput(); - $application->run($input, $output); - } } diff --git a/core/Resources/translations/messages.fr.yaml b/core/Resources/translations/messages.fr.yaml index 74a7db0..bc61624 100644 --- a/core/Resources/translations/messages.fr.yaml +++ b/core/Resources/translations/messages.fr.yaml @@ -120,3 +120,4 @@ "Enter your account username or email address. An e-mail will be sent to you to initiate the password change procedure. ": "Saisissez le nom d'utilisateur ou l'adresse e-mail de votre compte. Un e-mail vous sera envoyé pour enclancher la procédure de changement de mot de passe." "Show the login page": "Afficher la page de connexion" "A password reset request has been made. If you are the source of this request, click on the link below or copy and paste the address if the link does not work.": "Une demande de réinitialisation de mot de passe a été réalisée. Si vous êtes à l'origine de cette demande, cliquer sur le lien ci-dessous ou copier et coller l'adresse si le lien ne fonctionne pas." +"Edit the routing": "Éditez le routage" diff --git a/core/Resources/views/site/tree_admin/navigation.html.twig b/core/Resources/views/site/tree_admin/navigation.html.twig index f302a11..9a17559 100644 --- a/core/Resources/views/site/tree_admin/navigation.html.twig +++ b/core/Resources/views/site/tree_admin/navigation.html.twig @@ -113,7 +113,7 @@ {% if node.hasExternalUrl %} - + {% else %} @@ -122,9 +122,19 @@ {{ node.url }} {% else %} - - {{ node.url }} - + {% set url = safe_node_url(node) %} + + {% if url %} + + {{ node.url }} + + {% endif %} + + {% if url is same as(null) %} + + + + {% endif %} {% endif %} {% if node.controller %} diff --git a/core/Router/SiteRouteLoader.php b/core/Router/SiteRouteLoader.php index 885d765..4646528 100644 --- a/core/Router/SiteRouteLoader.php +++ b/core/Router/SiteRouteLoader.php @@ -39,6 +39,10 @@ class SiteRouteLoader extends Loader continue; } + if (null === $node->getUrl()) { + continue; + } + if ($node->hasExternalUrl()) { continue; }