Loading config/application.config.php +2 −1 Original line number Diff line number Diff line Loading @@ -38,8 +38,9 @@ $modules = [ 'Unicaen\Console', 'UnicaenSynchro', 'UnicaenParametre', 'Enquete', 'Fichier', 'Enquete', 'Site', 'Etudiant', 'Atelier', Loading module/Atelier/config/merged/atelier.config.php +22 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,8 @@ return [ 'controller' => AtelierController::class, 'action' => [ 'modifier', 'televerser-image', 'supprimer-image', ], 'privileges' => [ AtelierPrivileges::ATELIER_MODIFIER, Loading Loading @@ -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' => [ Loading module/Atelier/src/Controller/AtelierController.php +62 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 { Loading @@ -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, ]); } Loading Loading @@ -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 module/Atelier/src/Controller/AtelierControllerFactory.php +13 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 module/Atelier/src/Entity/Db/Atelier.php +12 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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
config/application.config.php +2 −1 Original line number Diff line number Diff line Loading @@ -38,8 +38,9 @@ $modules = [ 'Unicaen\Console', 'UnicaenSynchro', 'UnicaenParametre', 'Enquete', 'Fichier', 'Enquete', 'Site', 'Etudiant', 'Atelier', Loading
module/Atelier/config/merged/atelier.config.php +22 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,8 @@ return [ 'controller' => AtelierController::class, 'action' => [ 'modifier', 'televerser-image', 'supprimer-image', ], 'privileges' => [ AtelierPrivileges::ATELIER_MODIFIER, Loading Loading @@ -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' => [ Loading
module/Atelier/src/Controller/AtelierController.php +62 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 { Loading @@ -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, ]); } Loading Loading @@ -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
module/Atelier/src/Controller/AtelierControllerFactory.php +13 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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
module/Atelier/src/Entity/Db/Atelier.php +12 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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