From a1d889e7dfc1255e9f8627bdd179b9c835d3d3de Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Fri, 14 Apr 2023 11:31:13 +0200 Subject: [PATCH] add inline forms --- .../Blog/CategoryAdminController.php | 1 + src/Controller/Blog/PostAdminController.php | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/src/Controller/Blog/CategoryAdminController.php b/src/Controller/Blog/CategoryAdminController.php index 008ccba..96e52f5 100644 --- a/src/Controller/Blog/CategoryAdminController.php +++ b/src/Controller/Blog/CategoryAdminController.php @@ -43,6 +43,7 @@ class CategoryAdminController extends CrudController ->setMaxPerPage('index', 100) ->setView('form', 'blog/category_admin/_form.html.twig') + ->setDoubleClick('index', true) ->setDefaultSort('index', 'title', 'asc') diff --git a/src/Controller/Blog/PostAdminController.php b/src/Controller/Blog/PostAdminController.php index 41d7308..941890b 100644 --- a/src/Controller/Blog/PostAdminController.php +++ b/src/Controller/Blog/PostAdminController.php @@ -23,6 +23,10 @@ use App\Core\Entity\EntityInterface; use App\Entity\Blog\Post; use App\Analytic\DateRangeAnalytic; use App\Core\Repository\Site\NodeRepository; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Form\Extension\Core\Type\DateTimeType; +use Symfony\Component\Validator\Constraints\NotBlank; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; #[Route(path: '/admin/blog/post')] class PostAdminController extends CrudController @@ -37,6 +41,7 @@ class PostAdminController extends CrudController ->setPageRoute('index', 'admin_blog_post_index') ->setPageRoute('edit', 'admin_blog_post_edit') + ->setPageRoute('inline_edit', 'admin_blog_post_inline_edit') ->setPageRoute('new', 'admin_blog_post_new') ->setPageRoute('show', 'admin_blog_post_show') ->setPageRoute('delete', 'admin_blog_post_delete') @@ -54,6 +59,7 @@ class PostAdminController extends CrudController ->setView('edit', 'blog/post_admin/edit.html.twig') ->setView('show', 'blog/post_admin/show.html.twig') ->setView('index', 'blog/post_admin/index.html.twig') + ->setDoubleClick('index', true) ->setDefaultSort('index', 'id', 'desc') ->setField('index', 'Titre', TextField::class, [ @@ -79,11 +85,47 @@ class PostAdminController extends CrudController 'format' => 'd/m/Y H:i', 'sort' => ['publishedAt', '.publishedAt'], 'attr' => ['class' => 'miw-200'], + 'inline_form' => function(FormBuilderInterface $builder) { + $builder->add( + 'publishedAt', + DateTimeType::class, + [ + 'label' => 'Date de publication', + 'required' => false, + 'html5' => true, + 'widget' => 'single_text', + 'attr' => [ + 'data-datetime' => '', + ], + 'constraints' => [ + ], + ] + ); + }, ]) ->setField('index', 'Status', TextField::class, [ 'view' => 'blog/post_admin/field/status.html.twig', 'sort' => ['status', '.status'], 'attr' => ['class' => 'miw-100'], + 'inline_form' => function(FormBuilderInterface $builder) { + $builder->add( + 'status', + ChoiceType::class, + [ + 'label' => 'Statut', + 'required' => true, + 'choices' => [ + 'Brouillon' => Entity::DRAFT, + 'PubliƩ' => Entity::PUBLISHED, + ], + 'attr' => [ + ], + 'constraints' => [ + new NotBlank(), + ], + ] + ); + } ]) ->setBatchAction('index', 'delete', 'Delete', function(EntityInterface $entity, EntityManager $manager) { $manager->delete($entity); @@ -145,6 +187,12 @@ class PostAdminController extends CrudController ); } + #[Route(path: "/inline_edit/{entity}/{context}/{label}", name: 'admin_blog_post_inline_edit', methods: ['GET', 'POST'])] + public function inlineEdit(string $context, string $label, Entity $entity, EntityManager $entityManager, Request $request): Response + { + return $this->doInlineEdit($context, $label, $entity, $entityManager, $request); + } + #[Route(path: '/show/{entity}', name: 'admin_blog_post_show')] public function show(Entity $entity): Response {