diff --git a/src/Controller/SnipController.php b/src/Controller/SnipController.php index 434c8c9..265faeb 100644 --- a/src/Controller/SnipController.php +++ b/src/Controller/SnipController.php @@ -22,7 +22,8 @@ class SnipController extends AbstractController { public function __construct( private readonly SnipRepository $repository, - ) {} + ) { + } #[Route('/', name: '_index')] public function index(#[MapQueryCached] SnipFilterRequest $request): Response @@ -66,8 +67,7 @@ class SnipController extends AbstractController ->setVary(['Accept', 'Accept-Encoding']) ->setEtag(md5($response->getContent())) ->setTtl(3600) - ->setClientTtl(300) - ; + ->setClientTtl(300); if (!$request->isNoCache()) { $response->isNotModified($request); @@ -90,11 +90,9 @@ class SnipController extends AbstractController $this->addFlash('error', 'Snip is not the latest version, changes will not be saved.'); } - $form = $this->createForm(SnipType::class, $snip); - $form->add('Save', SubmitType::class); - if ($snip->getId()) { - $form->get('content')->setData($snip->getActiveText()); - } + $form = $this->createForm(SnipType::class, $snip) + ->add('Save', SubmitType::class) + ->get('content')->setData($snip->getActiveText()); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { @@ -128,10 +126,32 @@ class SnipController extends AbstractController { $snip = new Snip(); $snip->setCreatedAtNow() - ->setCreatedBy($this->getUser()) - ; + ->setCreatedBy($this->getUser()); - return $this->edit($snip, $request, $contentService); + + $form = $this->createForm(SnipType::class, $snip); + $form->add('Create', SubmitType::class); + + $form->handleRequest($request); + if ($form->isSubmitted() && $form->isValid()) { + $this->repository->save($snip); + $contentService->update( + $snip, + $form->get('content')->getData(), + $form->get('contentName')->getData() + ); + + $this->addFlash('success', sprintf('Snip "%s" created', $snip)); + + return $this->redirectToRoute('snip_single', [ + 'snip' => $snip->getId(), + ]); + } + + return $this->render('snip/create.html.twig', [ + 'snip' => $snip, + 'form' => $form->createView(), + ]); } #[Route('/delete/{snip}', name: '_delete')] diff --git a/templates/snip/create.html.twig b/templates/snip/create.html.twig new file mode 100644 index 0000000..47b212e --- /dev/null +++ b/templates/snip/create.html.twig @@ -0,0 +1,7 @@ +{% extends 'base/one.column.html.twig' %} + +{% set title = 'Create Snip' %} + +{% block body %} + {{ form(form) }} +{% endblock %} \ No newline at end of file diff --git a/templates/snip/edit.html.twig b/templates/snip/edit.html.twig index 0695aae..b2ce29d 100644 --- a/templates/snip/edit.html.twig +++ b/templates/snip/edit.html.twig @@ -1,10 +1,6 @@ {% extends 'snip/base.html.twig' %} -{% if snip.id %} - {% set title %}{{ snip }} - Edit{% endset %} -{% else %} - {% set title = 'Create Snip' %} -{% endif %} +{% set title %}{{ snip }} - Edit{% endset %} {% set active = 'edit' %} {% block buttons %}