From 40b2798c0ca00e4d70615270adce6ba394d0376f Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Fri, 14 May 2021 17:42:37 +0200 Subject: [PATCH] add 'disableUrl' attribute in node --- assets/css/admin.scss | 8 ++++- core/Entity/Site/Node.php | 17 ++++++++++ .../Site/NodeEventSubscriber.php | 10 ++++++ core/Form/Site/NodeType.php | 14 ++++++++ core/Resources/translations/messages.fr.yaml | 1 + .../form/bootstrap_4_form_theme.html.twig | 2 +- .../views/site/node_admin/_form.html.twig | 1 + .../site/tree_admin/navigation.html.twig | 32 ++++++++++--------- 8 files changed, 68 insertions(+), 17 deletions(-) diff --git a/assets/css/admin.scss b/assets/css/admin.scss index 9a3f53a..01a5713 100644 --- a/assets/css/admin.scss +++ b/assets/css/admin.scss @@ -129,7 +129,6 @@ tr.table-primary-light { } } - .sidebar { width: 260px; display: inline-block; @@ -258,6 +257,13 @@ th { } } +.bg-tiles { + background-color: #c1c1c1; + background-image: linear-gradient(45deg, #646464 25%, transparent 25%, transparent 75%, #646464 75%), linear-gradient(45deg, #646464 25%, transparent 25%, transparent 75%, #646464 75%); + background-size: 20px 20px; + background-position: 0 0, 10px 10px; +} + .tab-form { padding: 15px; } diff --git a/core/Entity/Site/Node.php b/core/Entity/Site/Node.php index b06c339..3e43c56 100644 --- a/core/Entity/Site/Node.php +++ b/core/Entity/Site/Node.php @@ -44,6 +44,11 @@ class Node implements EntityInterface */ private $url; + /** + * @ORM\Column(type="boolean", options={"default"=0}) + */ + private $disableUrl = false; + /** * @ORM\Column(type="boolean", options={"default"=0}) */ @@ -298,6 +303,18 @@ class Node implements EntityInterface return $this; } + public function getDisableUrl(): ?bool + { + return $this->disableUrl; + } + + public function setDisableUrl(bool $disableUrl): self + { + $this->disableUrl = $disableUrl; + + return $this; + } + public function getTreeLabel() { $prefix = str_repeat('-', ($this->getTreeLevel() - 1) * 5); diff --git a/core/EventSuscriber/Site/NodeEventSubscriber.php b/core/EventSuscriber/Site/NodeEventSubscriber.php index 215ff41..158104a 100644 --- a/core/EventSuscriber/Site/NodeEventSubscriber.php +++ b/core/EventSuscriber/Site/NodeEventSubscriber.php @@ -60,6 +60,12 @@ class NodeEventSubscriber extends EntityManagerEventSubscriber $node->setCode($this->codeSlugify->slugify($node->getCode())); + if ($node->getDisableUrl()) { + $node->setUrl(null); + + return; + } + if ($node->getUrl()) { $generatedUrl = $node->getUrl(); } else { @@ -138,6 +144,10 @@ class NodeEventSubscriber extends EntityManagerEventSubscriber $generatedUrl = $generatedUrl.'-'.$number; } + if (!u($generatedUrl)->startsWith('/')) { + $generatedUrl = '/'.$generatedUrl; + } + $node->setUrl($generatedUrl); } diff --git a/core/Form/Site/NodeType.php b/core/Form/Site/NodeType.php index 01dc72e..21a91e2 100644 --- a/core/Form/Site/NodeType.php +++ b/core/Form/Site/NodeType.php @@ -13,6 +13,7 @@ use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints\NotBlank; +use Symfony\Component\Form\Extension\Core\Type\CheckboxType; class NodeType extends AbstractType { @@ -46,6 +47,19 @@ class NodeType extends AbstractType ] ); + $builder->add( + 'disableUrl', + CheckboxType::class, + [ + 'label' => 'Disable URL', + 'required' => false, + 'attr' => [ + ], + 'constraints' => [ + ], + ] + ); + $builder->add( 'code', TextType::class, diff --git a/core/Resources/translations/messages.fr.yaml b/core/Resources/translations/messages.fr.yaml index c5a6ae6..41a9af4 100644 --- a/core/Resources/translations/messages.fr.yaml +++ b/core/Resources/translations/messages.fr.yaml @@ -37,6 +37,7 @@ "Yearly": "Annuelle" "Never": "Jamais" "URL": "URL" +"Disable URL": "Désactiver l'URL" "Controller": "Contrôleur" "Leave blank for automatic generation": "Laisser vide pour une génération automatique" "Leave blank to use the default one. Example: App\\Controller\\FooController::barAction": "Laisser vide pour utiliser celui par défaut. Exemple : App\\Controller\\FooController::barAction" diff --git a/core/Resources/views/form/bootstrap_4_form_theme.html.twig b/core/Resources/views/form/bootstrap_4_form_theme.html.twig index 50ed6f7..8f05398 100644 --- a/core/Resources/views/form/bootstrap_4_form_theme.html.twig +++ b/core/Resources/views/form/bootstrap_4_form_theme.html.twig @@ -8,7 +8,7 @@ {% if value %} {% if value and value.extension in ['jpeg', 'jpg', 'gif', 'png', 'svg'] %}
-
+
diff --git a/core/Resources/views/site/node_admin/_form.html.twig b/core/Resources/views/site/node_admin/_form.html.twig index 709dab3..fb6c1fe 100644 --- a/core/Resources/views/site/node_admin/_form.html.twig +++ b/core/Resources/views/site/node_admin/_form.html.twig @@ -144,6 +144,7 @@ {{ 'Route name: %routeName%'|trans({'%routeName%': entity.routeName})|raw }}
+ {{ form_row(form.disableUrl) }} {{ form_row(form.code) }} {{ form_row(form.controller) }} diff --git a/core/Resources/views/site/tree_admin/navigation.html.twig b/core/Resources/views/site/tree_admin/navigation.html.twig index 13956b8..60607f9 100644 --- a/core/Resources/views/site/tree_admin/navigation.html.twig +++ b/core/Resources/views/site/tree_admin/navigation.html.twig @@ -84,23 +84,25 @@ {% else %} - {% if node.parameters|length %} - - {{ node.url }} - - {% else %} - {% set url = safe_node_url(node) %} - - {% if url %} - + {% if not node.disableUrl %} + {% if node.parameters|length %} + {{ node.url }} - - {% endif %} - - {% if url is same as(null) %} - - + {% else %} + {% set url = safe_node_url(node) %} + + {% if url %} + + {{ node.url }} + + {% endif %} + + {% if url is same as(null) %} + + + + {% endif %} {% endif %} {% endif %}