PhotoManagement moved to Admin.

This commit is contained in:
2024-09-19 18:28:53 +02:00
parent 77f8d9f87a
commit 0cf6f231a3
2 changed files with 2 additions and 2 deletions
@@ -0,0 +1,119 @@
<?php
namespace App\Controller\Admin;
use App\Service\FileUploaderService;
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Asset\PathPackage;
use Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
use Symfony\Component\Validator\Constraints\File;
#[IsGranted("ROLE_ADMIN")]
class PhotoManagerAdminController extends AbstractController
{
private AdminUrlGenerator $adminUrlGenerator;
private FileUploaderService $fileUploader;
public function __construct(
AdminUrlGenerator $adminUrlGenerator,
FileUploaderService $fu
) {
$this->adminUrlGenerator = $adminUrlGenerator;
$this->fileUploader = $fu;
}
#[Route('/admin/photos', name: 'admin_photos')]
public function index(): Response
{
$fileData = [];
$dir = $this->fileUploader->getTargetDirectory();
$pathPackage = new PathPackage($dir, new EmptyVersionStrategy());
foreach (glob($dir . '*.*') as $file) {
$filename = basename($file);
$fileData[] = [
"filename" => $filename,
"url" => $pathPackage->getUrl($filename),
];
}
//return new JsonResponse(["dir" => $dir, "response" => $fileData]);
return $this->render('admin/photo_manager/index.html.twig', [
'photoList' => $fileData,
]);
}
#[Route('/admin/photos/upload', name: 'admin_photos_upload')]
public function uploadPhoto(
Request $request
): Response {
$form = $this->createFormBuilder()
->add('file', FileType::class, [
'mapped' => false,
'required' => false,
'constraints' => [
new File([
'maxSize' => '2048k',
'mimeTypes' => [
'image/jpeg',
'image/png',
'image/svg+xml',
'image/webp',
],
'mimeTypesMessage' => 'Please upload a valid image!',
])
],
])
->add('submit', SubmitType::class)
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
/** @var UploadedFile $uploadedPhoto */
$uploadedPhoto = $form->get('file')->getData();
if ($uploadedPhoto) {
$filename = $this->fileUploader->upload($uploadedPhoto);
}
$url = $this->adminUrlGenerator->setRoute('admin_photos')->generateUrl();
return $this->redirect($url);
}
return $this->render('admin/adminEdit.html.twig', [
'form' => $form,
'ElementName' => "Photo",
'ElementType' => "New Photo",
]);
}
#[Route('/admin/photos/remove/{filename}', name: 'admin_photos_remove')]
public function remove(string $filename): Response
{
$filePath = $this->fileUploader->getTargetDirectory() . $filename;
$deleted = $this->fileUploader->deleteFile($filePath);
if (!$deleted) {
throw new HttpException("404", "File can't be deleted");
}
$url = $this->adminUrlGenerator->setRoute('admin_photos')->generateUrl();
return $this->redirect($url);
}
}