Fix new snip error with git repo

Allow simple raw rendering (in html)
This commit is contained in:
Tim
2023-04-04 23:44:10 +02:00
parent 842c936d8c
commit 607435bff0
2 changed files with 34 additions and 7 deletions

View File

@ -16,7 +16,7 @@ use Symfony\Component\Routing\Annotation\Route;
class SnipController extends AbstractController
{
public function __construct(
private readonly SnipRepository $repository,
private readonly SnipRepository $repository,
private readonly SnipServiceFactory $snipServiceFactory,
)
{
@ -39,21 +39,44 @@ class SnipController extends AbstractController
]);
}
#[Route('/raw/{snip}', name: '_raw')]
public function raw(Snip $snip, Request $request): Response
{
$response = new Response(
$this->snipServiceFactory->create($snip)->get(),
Response::HTTP_OK,
['Content-Type' => 'text/html']
);
$response
->setVary(['Accept', 'Accept-Encoding'])
->setEtag(md5($response->getContent()))
->setTtl(3600)
->setClientTtl(300);
if (!$request->isNoCache()) {
$response->isNotModified($request);
}
return $response;
// return $this->render('snip/single.html.twig', [
// 'snip' => $snip,
// 'content' => $this->snipServiceFactory->create($snip)->get(),
// ]);
}
#[Route('/edit/{snip}', name: '_edit')]
public function edit(Snip $snip, Request $request): Response
{
$snipService = $this->snipServiceFactory->create($snip);
$form = $this->createForm(SnipType::class, $snip);
$form->get('content')->setData($snipService->get());
$form->add('Save', SubmitType::class);
if ($snip->getId()) {
$form->get('content')->setData($this->snipServiceFactory->create($snip)->get());
}
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$snip->setCreatedAtTodayNoSeconds()
->setCreatedBy($this->getUser());
$this->repository->save($snip);
$snipService->update($form->get('content')->getData());
$this->snipServiceFactory->create($snip)->update($form->get('content')->getData());
$this->addFlash('success', sprintf('Snip "%s" saved successfully', $snip));
@ -72,6 +95,8 @@ class SnipController extends AbstractController
public function new(Request $request): Response
{
$snip = new Snip();
$snip->setCreatedAtTodayNoSeconds()
->setCreatedBy($this->getUser());
return $this->edit($snip, $request);
}