From 6a5c5d899f3d2c4c849cda3c074efaec6e6ecf1a Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 7 Aug 2023 19:20:14 +0200 Subject: [PATCH] add color property in Navigation add badge with navigation color in admin views --- .../Site/NavigationAdminController.php | 1 + src/core/Entity/Site/Navigation.php | 15 +++++++++ src/core/Form/Site/NavigationType.php | 15 +++++++++ src/core/Resources/assets/css/admin.scss | 25 +++++++++++++++ .../form/bootstrap_4_form_theme.html.twig | 9 ++++++ .../site/navigation_admin/_form.html.twig | 2 +- .../navigation_admin/field/label.html.twig | 6 ++++ .../views/site/page_admin/_form.html.twig | 1 + .../site/page_admin/fields/nodes.html.twig | 1 + .../site/tree_admin/navigation.html.twig | 2 ++ .../Twig/Extension/NavigationExtension.php | 32 +++++++++++++++++++ 11 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 src/core/Resources/views/site/navigation_admin/field/label.html.twig create mode 100644 src/core/Twig/Extension/NavigationExtension.php diff --git a/src/core/Controller/Site/NavigationAdminController.php b/src/core/Controller/Site/NavigationAdminController.php index 6e6c3b8..fe26dc9 100644 --- a/src/core/Controller/Site/NavigationAdminController.php +++ b/src/core/Controller/Site/NavigationAdminController.php @@ -108,6 +108,7 @@ class NavigationAdminController extends CrudController ->setField('index', 'Label', Field\TextField::class, [ 'property' => 'label', + 'view' => '@Core/site/navigation_admin/field/label.html.twig', 'attr' => ['class' => 'miw-200'], ]) ->setField('index', 'Domain', Field\ButtonField::class, [ diff --git a/src/core/Entity/Site/Navigation.php b/src/core/Entity/Site/Navigation.php index c3a4f3c..f25c139 100644 --- a/src/core/Entity/Site/Navigation.php +++ b/src/core/Entity/Site/Navigation.php @@ -42,6 +42,9 @@ class Navigation implements EntityInterface #[ORM\Column(type: 'string', length: 10)] protected $locale = 'en'; + #[ORM\Column(type: 'string', length: 7, nullable: true)] + protected $color = null; + #[ORM\Column(type: 'integer', nullable: true)] protected $sortOrder; @@ -237,4 +240,16 @@ class Navigation implements EntityInterface return false; } + + public function setColor(string $color): self + { + $this->color = $color; + + return $this; + } + + public function getColor(): string + { + return $this->color; + } } diff --git a/src/core/Form/Site/NavigationType.php b/src/core/Form/Site/NavigationType.php index 9ccf546..4d7ec5c 100644 --- a/src/core/Form/Site/NavigationType.php +++ b/src/core/Form/Site/NavigationType.php @@ -11,6 +11,7 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints\Length; use Symfony\Component\Validator\Constraints\NotBlank; +use Symfony\Component\Form\Extension\Core\Type\ColorType; class NavigationType extends AbstractType { @@ -44,6 +45,20 @@ class NavigationType extends AbstractType ] ); + $builder->add( + 'color', + ColorType::class, + [ + 'label' => 'Color', + 'required' => true, + 'attr' => [ + ], + 'constraints' => [ + new NotBlank(), + ], + ] + ); + $builder->add( 'domain', TextType::class, diff --git a/src/core/Resources/assets/css/admin.scss b/src/core/Resources/assets/css/admin.scss index 2bc88db..ac6c956 100644 --- a/src/core/Resources/assets/css/admin.scss +++ b/src/core/Resources/assets/css/admin.scss @@ -402,6 +402,31 @@ th { margin-right: 4px; } +.form-color { + display: inline-block; + line-height: 0; + border-radius: 25%; + + input { + padding: 0; + border: 0; + height: auto; + width: 30px; + aspect-ratio: 1/1; + display: inline-block; + } +} + +.badge-square { + aspect-ratio: 1/1; + min-width: 14px; + min-height: 14px; + vertical-align: middle; + padding: 0; + aspect-ratio: 1/1; + display: inline-block; +} + #form-main { > .tab-content { @media screen and (min-width: 500px) { diff --git a/src/core/Resources/views/form/bootstrap_4_form_theme.html.twig b/src/core/Resources/views/form/bootstrap_4_form_theme.html.twig index 107691e..54ea380 100644 --- a/src/core/Resources/views/form/bootstrap_4_form_theme.html.twig +++ b/src/core/Resources/views/form/bootstrap_4_form_theme.html.twig @@ -7,6 +7,15 @@ {% endblock %} +{% block color_widget %} +
+
+ {%- set type = type|default('color') -%} + {{ block('form_widget_simple') }} +
+
+{% endblock %} + {% block file_widget -%}
diff --git a/src/core/Resources/views/site/navigation_admin/_form.html.twig b/src/core/Resources/views/site/navigation_admin/_form.html.twig index d3ad5f1..6149756 100644 --- a/src/core/Resources/views/site/navigation_admin/_form.html.twig +++ b/src/core/Resources/views/site/navigation_admin/_form.html.twig @@ -1,7 +1,7 @@
- {% for item in ['label', 'locale', 'code'] %} + {% for item in ['label', 'locale', 'code', 'color'] %}
{{ form_row(form[item]) }}
diff --git a/src/core/Resources/views/site/navigation_admin/field/label.html.twig b/src/core/Resources/views/site/navigation_admin/field/label.html.twig new file mode 100644 index 0000000..50a78d1 --- /dev/null +++ b/src/core/Resources/views/site/navigation_admin/field/label.html.twig @@ -0,0 +1,6 @@ +{% extends '@Core/admin/crud/field/text.html.twig' %} + +{% block value %} + {{ navigation_color_badge(entity) }} + {{ parent() }} +{% endblock %} diff --git a/src/core/Resources/views/site/page_admin/_form.html.twig b/src/core/Resources/views/site/page_admin/_form.html.twig index 6e86c28..62a3f35 100644 --- a/src/core/Resources/views/site/page_admin/_form.html.twig +++ b/src/core/Resources/views/site/page_admin/_form.html.twig @@ -41,6 +41,7 @@ navigation: node.menu.navigation.id, 'data-modal': path('admin_site_node_edit', {entity: node.id}), }) }}" class="btn btn-sm btn-light mr-1" target="_blank"> + {{ navigation_color_badge(node.menu.navigation) }} {{ node.label }} ({{ node.menu.navigation.label }}) {% endfor %} diff --git a/src/core/Resources/views/site/page_admin/fields/nodes.html.twig b/src/core/Resources/views/site/page_admin/fields/nodes.html.twig index b49c524..c76efa5 100644 --- a/src/core/Resources/views/site/page_admin/fields/nodes.html.twig +++ b/src/core/Resources/views/site/page_admin/fields/nodes.html.twig @@ -3,6 +3,7 @@ navigation: node.menu.navigation.id, 'data-modal': path('admin_site_node_edit', {entity: node.id}), }) }}" class="btn btn-sm btn-light mr-1"> + {{ navigation_color_badge(node.menu.navigation) }} {{ node.label }} ({{ node.menu.navigation.label }}) {% endfor %} diff --git a/src/core/Resources/views/site/tree_admin/navigation.html.twig b/src/core/Resources/views/site/tree_admin/navigation.html.twig index a9ae8d1..751c398 100644 --- a/src/core/Resources/views/site/tree_admin/navigation.html.twig +++ b/src/core/Resources/views/site/tree_admin/navigation.html.twig @@ -8,12 +8,14 @@