Added navbar and button to skip automatic search of book info online.

This commit is contained in:
krzysiej
2022-06-02 15:18:40 +02:00
parent e5562cddb1
commit b21d213b19
7 changed files with 82 additions and 35 deletions

View File

@@ -30,7 +30,7 @@ class BookController extends AbstractController
}
#[Route('/new', name: 'app_book_new', methods: ['GET', 'POST'])]
public function new(Request $request, BookRepository $bookRepository): Response
public function new(Request $request, BookRepository $bookRepository, FileService $fileService): Response
{
$book = new Book();
$form = $this->createForm(BookType::class, $book);
@@ -55,15 +55,15 @@ class BookController extends AbstractController
}
}
$ebook = $request->files->get('book')['ebook'];
if ($ebook) {
$ebook->move(
$this->getParameter('book_files'),
'ebook_' . $book->getId() . '.' . $ebook->guessClientExtension()
);
/** @var UploadedFile[] $ebooks */
$ebooks = $request->files->get('book')['ebook'];
if (count($ebooks) > 0) {
foreach ($ebooks as $ebook) {
$fileService->saveFile($ebook, $book);
}
}
return $this->redirectToRoute('app_book_index', [], Response::HTTP_SEE_OTHER);
return $this->redirectToRoute('app_book_index', status: Response::HTTP_SEE_OTHER);
}
return $this->renderForm('book/new.html.twig', [
@@ -87,8 +87,12 @@ class BookController extends AbstractController
}
#[Route('/{id}', name: 'app_book_show', methods: ['GET', 'POST'])]
public function show(Book $book, Request $request, FileRepository $fileRepository, FileService $fileService): Response
{
public function show(
Book $book,
Request $request,
FileRepository $fileRepository,
FileService $fileService
): Response {
$fileForm = $this->createForm(FileType::class);
$fileForm->handleRequest($request);
@@ -150,7 +154,7 @@ class BookController extends AbstractController
]);
}
#[Route('/{id}', name: 'app_book_delete', methods: ['POST'])]
#[Route('/{id}/delete', name: 'app_book_delete', methods: ['POST'])]
public function delete(
Request $request,
Book $book,
@@ -162,6 +166,6 @@ class BookController extends AbstractController
$bookRepository->remove($book, true);
}
return $this->redirectToRoute('app_book_index', [], Response::HTTP_SEE_OTHER);
return $this->redirectToRoute('app_book_index', status: Response::HTTP_SEE_OTHER);
}
}

View File

@@ -5,6 +5,7 @@ namespace App\Controller;
use App\Entity\Book;
use App\Entity\File;
use App\Repository\FileRepository;
use App\Service\FileService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
@@ -27,27 +28,16 @@ class FileController extends AbstractController
Request $request,
FileRepository $fileRepository,
File $file,
Filesystem $filesystem
FileService $fileService
): Response {
$filePath = $this->getParameter('book_files') . '/' . 'ebook_' . $file->getBook()->getId() . '_' .
md5($file->getFileName()) . '.' .
$file->getExtension();
$filesystem->remove($filePath);
if (!$filesystem->exists($filePath)) {
$fileRepository->remove($file, 'true');
}
$fileService->removeFiles($file);
$fileRepository->remove($file, 'true');
return $this->redirect($request->headers->get('referer'));
}
#[Route('/file/{id}', name: 'app_file_download', methods: ['GET'])]
public function get(File $file)
public function get(File $file, FileService $fileService)
{
return $this->file(
$this->getParameter('book_files') . '/' . 'ebook_' . $file->getBook()->getId() . '_' .
md5($file->getFileName()) . '.' .
$file->getExtension(),
$file->getFileName()
);
return $this->file($fileService->getFilePath($file), $file->getFileName());
}
}