Commit 306367a6 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Miniature

parent c382695a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -38,8 +38,9 @@ $modules = [
    'Unicaen\Console',
    'UnicaenSynchro',
    'UnicaenParametre',
    'Enquete',

    'Fichier',
    'Enquete',
    'Site',
    'Etudiant',
    'Atelier',
+22 −0
Original line number Diff line number Diff line
@@ -58,6 +58,8 @@ return [
                    'controller' => AtelierController::class,
                    'action' => [
                        'modifier',
                        'televerser-image',
                        'supprimer-image',
                    ],
                    'privileges' => [
                        AtelierPrivileges::ATELIER_MODIFIER,
@@ -147,6 +149,26 @@ return [
                                    ],
                                ],
                            ],
                            'televerser-image' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/televerser-image/:atelier',
                                    'defaults' => [
                                        /** @see AtelierController::televerserImageAction() */
                                        'action' => 'televerser-image',
                                    ],
                                ],
                            ],
                            'supprimer-image' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/supprimer-image/:atelier',
                                    'defaults' => [
                                        /** @see AtelierController::supprimerImageAction() */
                                        'action' => 'supprimer-image',
                                    ],
                                ],
                            ],
                            'historiser' => [
                                'type' => Segment::class,
                                'options' => [
+62 −0
Original line number Diff line number Diff line
@@ -5,6 +5,10 @@ namespace Atelier\Controller;
use Atelier\Entity\Db\Atelier;
use Atelier\Form\Atelier\AtelierFormAwareTrait;
use Atelier\Service\Atelier\AtelierServiceAwareTrait;
use Fichier\Entity\Db\Fichier;
use Fichier\Form\Upload\UploadFormAwareTrait;
use Fichier\Service\Fichier\FichierServiceAwareTrait;
use Fichier\Service\Nature\NatureServiceAwareTrait;
use Laminas\Http\Request;
use Laminas\Http\Response;
use Laminas\Mvc\Controller\AbstractActionController;
@@ -13,7 +17,10 @@ use Laminas\View\Model\ViewModel;
class AtelierController extends AbstractActionController
{
    use AtelierServiceAwareTrait;
    use FichierServiceAwareTrait;
    use NatureServiceAwareTrait;
    use AtelierFormAwareTrait;
    use UploadFormAwareTrait;

    public function indexAction() : ViewModel
    {
@@ -31,6 +38,7 @@ class AtelierController extends AbstractActionController
        return new ViewModel([
            'title' => "Atelier : ".$atelier->getLibelle(),
            'atelier' => $atelier,
            'miniature' => $atelier->getMiniature()?$this->getFichierService()->fetchContenuFichier($atelier->getMiniature()):null,
        ]);
    }

@@ -142,4 +150,58 @@ class AtelierController extends AbstractActionController
        return $vm;
    }

    /** Gestion de l'image associée à l'atelier ***********************************************************************/

    public function televerserImageAction() : ViewModel
    {
        $atelier = $this->getAtelierService()->getRequestedAtelier($this);
        $nature = $this->getNatureService()->getNatureByCode('IMAGE');

        $fichier = new Fichier();
        $fichier->setNature($nature);
        $form = $this->getUploadForm();
        $form->setAttribute('action', $this->url()->fromRoute('atelier/atelier/televerser-image', ['atelier' => $atelier->getId()], [], true));
        $form->bind($fichier);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $file = $request->getFiles()['fichier'];

            if ($file['name'] != '') {
                $fichier = $this->getFichierService()->createFichierFromUpload($file, $nature);
                if ($atelier->getMiniature() !== null) {
                    $this->getFichierService()->removeFichier($atelier->getMiniature());
                }
                //TODO tester sans $this->getAtelierService()->update($atelier);
                $atelier->setMiniature($fichier);
                $this->getAtelierService()->update($atelier);
                exit();
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('default/default-form');
        $vm->setVariables([
            'title' => "Téléverserment de l'image associée à l'atelier",
            'form' => $form,
            'warning' => "<span class='icon icon-attention'></span> Attention la taille de la fiche de poste ne doit pas dépaser 2 Mo."
        ]);
        return $vm;
    }

    public function supprimerImageAction() : Response
    {
        $atelier = $this->getAtelierService()->getRequestedAtelier($this);

        if ($atelier->getMiniature() !== null) {
            $this->getFichierService()->removeFichier($atelier->getMiniature());
        }
        $atelier->setMiniature(null);
        $this->getAtelierService()->update($atelier);

        return $this->redirect()->toRoute('atelier/atelier/afficher', ['atelier' => $atelier->getId()], [], true);
    }


}
 No newline at end of file
+13 −0
Original line number Diff line number Diff line
@@ -4,6 +4,9 @@ namespace Atelier\Controller;

use Atelier\Form\Atelier\AtelierForm;
use Atelier\Service\Atelier\AtelierService;
use Fichier\Form\Upload\UploadForm;
use Fichier\Service\Fichier\FichierService;
use Fichier\Service\Nature\NatureService;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
use Psr\Container\NotFoundExceptionInterface;
@@ -18,13 +21,23 @@ class AtelierControllerFactory
    {
        /**
         * @var AtelierService $atelierService
         * @var FichierService $fichierService
         * @var NatureService $natureService
         * @var AtelierForm $atelierForm
         * @var UploadForm $uploadForm
         */
        $atelierService = $container->get(AtelierService::class);
        $fichierService = $container->get(FichierService::class);
        $natureService = $container->get(NatureService::class);
        $atelierForm = $container->get('FormElementManager')->get(AtelierForm::class);
        $uploadForm = $container->get('FormElementManager')->get(UploadForm::class);

        $controller = new AtelierController();
        $controller->setAtelierService($atelierService);
        $controller->setFichierService($fichierService);
        $controller->setNatureService($natureService);
        $controller->setAtelierForm($atelierForm);
        $controller->setUploadForm($uploadForm);
        return $controller;
    }
}
 No newline at end of file
+12 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ namespace Atelier\Entity\Db;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Fichier\Entity\Db\Fichier;
use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;

@@ -19,6 +20,7 @@ class Atelier implements HistoriqueAwareInterface
    private ?string $objectifs = null;
    private ?string $programme = null;
    private ?string $periode = null;
    private ?Fichier $miniature = null;

    private Collection $sessions;
    private Collection $programmes;
@@ -136,4 +138,14 @@ class Atelier implements HistoriqueAwareInterface
        $this->periode = $periode;
    }

    public function getMiniature(): ?Fichier
    {
        return $this->miniature;
    }

    public function setMiniature(?Fichier $miniature): void
    {
        $this->miniature = $miniature;
    }

}
 No newline at end of file
Loading