Loading CHANGELOG.md +2 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ Journal des modifications 2.1.9 ----- - Ajout de demande de justificatif pour certaines qualités pour les soutenances (par exemple : membre étranger) - Mention soutenue à huis clos lorsque mentionné dans la proposition de soutenance - Generalisation des documents attachés aux structures + exploitation dans les convocations 2.1.8 ----- Loading doc/release-notes/v2.1.9.md +48 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,54 @@ git fetch --tags && git checkout --force 2.1.9 && bash ./install.sh -- alter table SOUTENANCE_QUALITE add JUSTIFICATIF varchar(1) default 'N' not null; INSERT INTO NATURE_FICHIER (ID, CODE, LIBELLE) VALUES (18, 'JUSTIFICATIF_ETRANGER', 'Justificatif de la qualité d''un membre de jury étranger'); -- -- Suppression des anciennes signatures -- alter table ETABLISSEMENT drop column CHEMIN_SIGNATURE_CONVOCATION; alter table ETABLISSEMENT drop constraint ETABLISSEMENT_FICHIER_ID_FK; alter table ETABLISSEMENT drop column SIGNATURE_CONVOCATION_ID; alter table ETABLISSEMENT add constraint ETABLISSEMENT_FICHIER_ID_FK foreign key (SIGNATURE_CONVOCATION_ID) references FICHIER on delete set null; -- -- CREATION STRUCTURE DOCUMENT -- create table STRUCTURE_DOCUMENT ( ID number not null constraint STRUCTURE_DOCUMENT_PK primary key, NATURE_ID number not null constraint SD_NATURE_FICHIER_ID_FK references NATURE_FICHIER on delete cascade, STRUCTURE_ID number not null constraint SD_STRUCTURE_ID_FK references STRUCTURE on delete cascade, ETABLISSEMENT_ID number constraint SD_ETABLISSEMENT_ID_FK references ETABLISSEMENT on delete cascade, FICHIER_ID number not null constraint SD_FICHIER_ID_FK references FICHIER on delete cascade, HISTO_CREATION date not null, HISTO_CREATEUR_ID number not null constraint SD_UTILISATEUR_ID_FK references UTILISATEUR, HISTO_MODIFICATION date, HISTO_MODIFICATEUR_ID number constraint SD_UTILISATEUR_ID_FK_2 references UTILISATEUR, HISTO_DESTRUCTION date, HISTO_DESTRUCTEUR_ID number constraint SD_UTILISATEUR_ID_FK_3 references UTILISATEUR ); CREATE SEQUENCE STRUCTURE_DOCUMENT_id_seq; ``` ## 3. Dans l'application SyGAL Loading module/Application/config/others/structure.config.php +33 −0 Original line number Diff line number Diff line Loading @@ -2,10 +2,13 @@ use Application\Controller\Factory\StructureControllerFactory; use Application\Controller\StructureController; use Application\Entity\Db\StructureDocument; use Application\Provider\Privilege\EtablissementPrivileges; use Application\Provider\Privilege\StructurePrivileges; use Application\Service\Structure\StructureService; use Application\Service\Structure\StructureServiceFactory; use Application\Service\StructureDocument\StructureDocumentService; use Application\Service\StructureDocument\StructureDocumentServiceFactory; use Application\View\Helper\StructureSubstitHelper; use UnicaenAuth\Guard\PrivilegeController; use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider; Loading Loading @@ -48,6 +51,17 @@ return [ ], 'privileges' => StructurePrivileges::STRUCTURE_MODIFICATION_TOUTES_STRUCTURES, ], [ 'controller' => StructureController::class, 'action' => [ 'televerser-document', 'supprimer-document', ], 'privileges' => [ StructurePrivileges::STRUCTURE_MODIFICATION_SES_STRUCTURES, StructurePrivileges::STRUCTURE_MODIFICATION_TOUTES_STRUCTURES, ], ], ], ], ], Loading Loading @@ -82,6 +96,24 @@ return [ ], ], ], 'televerser-document' => [ 'type' => Segment::class, 'options' => [ 'route' => '/televerser-document/:structure', 'defaults' => [ 'action' => 'televerser-document', ], ], ], 'supprimer-document' => [ 'type' => Segment::class, 'options' => [ 'route' => '/supprimer-document/:structure/:document', 'defaults' => [ 'action' => 'supprimer-document', ], ], ], ], ], ], Loading @@ -93,6 +125,7 @@ return [ 'service_manager' => [ 'factories' => [ StructureService::class => StructureServiceFactory::class, StructureDocumentService::class => StructureDocumentServiceFactory::class, ], 'aliases' => [ 'StructureService' => StructureService::class, Loading module/Application/src/Application/Controller/EcoleDoctoraleController.php +4 −0 Original line number Diff line number Diff line Loading @@ -6,12 +6,14 @@ use Application\Entity\Db\TypeStructure; use Application\Service\CoEncadrant\CoEncadrantServiceAwareTrait; use Application\Service\EcoleDoctorale\EcoleDoctoraleService; use Application\Service\EcoleDoctorale\EcoleDoctoraleServiceAwareTrait; use Application\Service\StructureDocument\StructureDocumentServiceAwareTrait; use Zend\Http\Response; use Zend\View\Model\ViewModel; class EcoleDoctoraleController extends StructureConcreteController { use CoEncadrantServiceAwareTrait; use StructureDocumentServiceAwareTrait; use EcoleDoctoraleServiceAwareTrait; protected $codeTypeStructure = TypeStructure::CODE_ECOLE_DOCTORALE; Loading Loading @@ -49,12 +51,14 @@ class EcoleDoctoraleController extends StructureConcreteController $id = $this->params()->fromRoute('structure'); $structureConcrete = $this->getStructureConcreteService()->getRepository()->findByStructureId($id); $coencadrants = $this->getCoEncadrantService()->getCoEncadrantsByStructureConcrete($structureConcrete, false); $contenus = $this->getStructureDocumentService()->getContenus($structureConcrete->getStructure()); $viewModel = parent::informationAction(); $viewModel->setVariables([ 'ecole' => $viewModel->getVariable('structure'), 'coencadrants' => $coencadrants, 'contenus' => $contenus, ]); return $viewModel; Loading module/Application/src/Application/Controller/EtablissementController.php +4 −41 Original line number Diff line number Diff line Loading @@ -5,14 +5,12 @@ namespace Application\Controller; use Application\Entity\Db\Etablissement; use Application\Entity\Db\Individu; use Application\Entity\Db\IndividuRole; use Application\Entity\Db\NatureFichier; use Application\Entity\Db\Role; use Application\Entity\Db\TypeStructure; use Application\Service\Etablissement\EtablissementService; use Application\Service\Etablissement\EtablissementServiceAwareTrait; use Application\Service\Fichier\FichierServiceAwareTrait; use Application\Service\NatureFichier\NatureFichierServiceAwareTrait; use Application\Service\Role\RoleServiceAwareTrait; use Application\Service\StructureDocument\StructureDocumentServiceAwareTrait; use Application\SourceCodeStringHelperAwareTrait; use UnicaenApp\Exception\RuntimeException; use Zend\Http\Response; Loading @@ -24,10 +22,9 @@ use Zend\View\Model\ViewModel; class EtablissementController extends StructureConcreteController { use EtablissementServiceAwareTrait; use FichierServiceAwareTrait; use NatureFichierServiceAwareTrait; use RoleServiceAwareTrait; use SourceCodeStringHelperAwareTrait; use StructureDocumentServiceAwareTrait; protected $codeTypeStructure = TypeStructure::CODE_ETABLISSEMENT; Loading Loading @@ -75,6 +72,7 @@ class EtablissementController extends StructureConcreteController if ($etablissement === null) { throw new RuntimeException("Aucun établissement ne possède l'identifiant renseigné."); } $contenus = $this->getStructureDocumentService()->getContenus($etablissement->getStructure()); $roleListings = []; $individuListings = []; Loading Loading @@ -110,7 +108,7 @@ class EtablissementController extends StructureConcreteController 'roleListing' => $roleListings, 'individuListing' => $individuListings, 'logoContent' => $this->structureService->getLogoStructureContent($etablissement), 'signatureConvocation' => ($etablissement->getSignatureConvocation())?($this->fichierService->computeDestinationFilePathForFichier($etablissement->getSignatureConvocation())):null, 'contenus' => $contenus, ]); } Loading Loading @@ -146,39 +144,4 @@ class EtablissementController extends StructureConcreteController return $viewModel; } /** gestion des signatures */ public function televerserSignatureConvocationAction() { $structure = $this->getStructureService()->getRequestedStructure($this); $etablissement = $this->getStructureConcreteService()->getRepository()->findByStructureId($structure->getId()); $nature = $this->natureFichierService->getRepository()->findOneBy(['code' => NatureFichier::CODE_SIGNATURE_CONVOCATION]); $request = $this->getRequest(); if ($request->isPost()) { $files = $request->getFiles()->toArray(); $fichiers = $this->fichierService->createFichiersFromUpload(['files' => $files], $nature); $this->fichierService->saveFichiers($fichiers); $etablissement->setSignatureConvocation($fichiers[0]); $this->getEtablissementService()->update($etablissement); } $vm = new ViewModel([ 'title' => "Ajout d'une signature pour les convocation pour l'établissement [".$structure->getLibelle()."]", 'nature' => 'SIGNATURE_CONVOCATION', 'action' => $this->url()->fromRoute('etablissement/televerser-signature-convocation', ['structure' => $structure->getId()], [], true), ]); $vm->setTemplate('application/etablissement/televerser-document'); return $vm; } public function supprimerSignatureConvocationAction() { /** @var Etablissement $etablissement */ $structure = $this->getStructureService()->getRequestedStructure($this); $etablissement = $this->getStructureConcreteService()->getRepository()->findByStructureId($structure->getId()); $this->fichierService->supprimerFichiers([$etablissement->getSignatureConvocation()]); $etablissement->setSignatureConvocation(null); $this->etablissementService->update($etablissement); return $this->redirect()->toRoute($this->routeName."/information", [], ['query' => ['selected' => $structure->getId()], "fragment" => $structure->getId()], true); } } No newline at end of file Loading
CHANGELOG.md +2 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ Journal des modifications 2.1.9 ----- - Ajout de demande de justificatif pour certaines qualités pour les soutenances (par exemple : membre étranger) - Mention soutenue à huis clos lorsque mentionné dans la proposition de soutenance - Generalisation des documents attachés aux structures + exploitation dans les convocations 2.1.8 ----- Loading
doc/release-notes/v2.1.9.md +48 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,54 @@ git fetch --tags && git checkout --force 2.1.9 && bash ./install.sh -- alter table SOUTENANCE_QUALITE add JUSTIFICATIF varchar(1) default 'N' not null; INSERT INTO NATURE_FICHIER (ID, CODE, LIBELLE) VALUES (18, 'JUSTIFICATIF_ETRANGER', 'Justificatif de la qualité d''un membre de jury étranger'); -- -- Suppression des anciennes signatures -- alter table ETABLISSEMENT drop column CHEMIN_SIGNATURE_CONVOCATION; alter table ETABLISSEMENT drop constraint ETABLISSEMENT_FICHIER_ID_FK; alter table ETABLISSEMENT drop column SIGNATURE_CONVOCATION_ID; alter table ETABLISSEMENT add constraint ETABLISSEMENT_FICHIER_ID_FK foreign key (SIGNATURE_CONVOCATION_ID) references FICHIER on delete set null; -- -- CREATION STRUCTURE DOCUMENT -- create table STRUCTURE_DOCUMENT ( ID number not null constraint STRUCTURE_DOCUMENT_PK primary key, NATURE_ID number not null constraint SD_NATURE_FICHIER_ID_FK references NATURE_FICHIER on delete cascade, STRUCTURE_ID number not null constraint SD_STRUCTURE_ID_FK references STRUCTURE on delete cascade, ETABLISSEMENT_ID number constraint SD_ETABLISSEMENT_ID_FK references ETABLISSEMENT on delete cascade, FICHIER_ID number not null constraint SD_FICHIER_ID_FK references FICHIER on delete cascade, HISTO_CREATION date not null, HISTO_CREATEUR_ID number not null constraint SD_UTILISATEUR_ID_FK references UTILISATEUR, HISTO_MODIFICATION date, HISTO_MODIFICATEUR_ID number constraint SD_UTILISATEUR_ID_FK_2 references UTILISATEUR, HISTO_DESTRUCTION date, HISTO_DESTRUCTEUR_ID number constraint SD_UTILISATEUR_ID_FK_3 references UTILISATEUR ); CREATE SEQUENCE STRUCTURE_DOCUMENT_id_seq; ``` ## 3. Dans l'application SyGAL Loading
module/Application/config/others/structure.config.php +33 −0 Original line number Diff line number Diff line Loading @@ -2,10 +2,13 @@ use Application\Controller\Factory\StructureControllerFactory; use Application\Controller\StructureController; use Application\Entity\Db\StructureDocument; use Application\Provider\Privilege\EtablissementPrivileges; use Application\Provider\Privilege\StructurePrivileges; use Application\Service\Structure\StructureService; use Application\Service\Structure\StructureServiceFactory; use Application\Service\StructureDocument\StructureDocumentService; use Application\Service\StructureDocument\StructureDocumentServiceFactory; use Application\View\Helper\StructureSubstitHelper; use UnicaenAuth\Guard\PrivilegeController; use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider; Loading Loading @@ -48,6 +51,17 @@ return [ ], 'privileges' => StructurePrivileges::STRUCTURE_MODIFICATION_TOUTES_STRUCTURES, ], [ 'controller' => StructureController::class, 'action' => [ 'televerser-document', 'supprimer-document', ], 'privileges' => [ StructurePrivileges::STRUCTURE_MODIFICATION_SES_STRUCTURES, StructurePrivileges::STRUCTURE_MODIFICATION_TOUTES_STRUCTURES, ], ], ], ], ], Loading Loading @@ -82,6 +96,24 @@ return [ ], ], ], 'televerser-document' => [ 'type' => Segment::class, 'options' => [ 'route' => '/televerser-document/:structure', 'defaults' => [ 'action' => 'televerser-document', ], ], ], 'supprimer-document' => [ 'type' => Segment::class, 'options' => [ 'route' => '/supprimer-document/:structure/:document', 'defaults' => [ 'action' => 'supprimer-document', ], ], ], ], ], ], Loading @@ -93,6 +125,7 @@ return [ 'service_manager' => [ 'factories' => [ StructureService::class => StructureServiceFactory::class, StructureDocumentService::class => StructureDocumentServiceFactory::class, ], 'aliases' => [ 'StructureService' => StructureService::class, Loading
module/Application/src/Application/Controller/EcoleDoctoraleController.php +4 −0 Original line number Diff line number Diff line Loading @@ -6,12 +6,14 @@ use Application\Entity\Db\TypeStructure; use Application\Service\CoEncadrant\CoEncadrantServiceAwareTrait; use Application\Service\EcoleDoctorale\EcoleDoctoraleService; use Application\Service\EcoleDoctorale\EcoleDoctoraleServiceAwareTrait; use Application\Service\StructureDocument\StructureDocumentServiceAwareTrait; use Zend\Http\Response; use Zend\View\Model\ViewModel; class EcoleDoctoraleController extends StructureConcreteController { use CoEncadrantServiceAwareTrait; use StructureDocumentServiceAwareTrait; use EcoleDoctoraleServiceAwareTrait; protected $codeTypeStructure = TypeStructure::CODE_ECOLE_DOCTORALE; Loading Loading @@ -49,12 +51,14 @@ class EcoleDoctoraleController extends StructureConcreteController $id = $this->params()->fromRoute('structure'); $structureConcrete = $this->getStructureConcreteService()->getRepository()->findByStructureId($id); $coencadrants = $this->getCoEncadrantService()->getCoEncadrantsByStructureConcrete($structureConcrete, false); $contenus = $this->getStructureDocumentService()->getContenus($structureConcrete->getStructure()); $viewModel = parent::informationAction(); $viewModel->setVariables([ 'ecole' => $viewModel->getVariable('structure'), 'coencadrants' => $coencadrants, 'contenus' => $contenus, ]); return $viewModel; Loading
module/Application/src/Application/Controller/EtablissementController.php +4 −41 Original line number Diff line number Diff line Loading @@ -5,14 +5,12 @@ namespace Application\Controller; use Application\Entity\Db\Etablissement; use Application\Entity\Db\Individu; use Application\Entity\Db\IndividuRole; use Application\Entity\Db\NatureFichier; use Application\Entity\Db\Role; use Application\Entity\Db\TypeStructure; use Application\Service\Etablissement\EtablissementService; use Application\Service\Etablissement\EtablissementServiceAwareTrait; use Application\Service\Fichier\FichierServiceAwareTrait; use Application\Service\NatureFichier\NatureFichierServiceAwareTrait; use Application\Service\Role\RoleServiceAwareTrait; use Application\Service\StructureDocument\StructureDocumentServiceAwareTrait; use Application\SourceCodeStringHelperAwareTrait; use UnicaenApp\Exception\RuntimeException; use Zend\Http\Response; Loading @@ -24,10 +22,9 @@ use Zend\View\Model\ViewModel; class EtablissementController extends StructureConcreteController { use EtablissementServiceAwareTrait; use FichierServiceAwareTrait; use NatureFichierServiceAwareTrait; use RoleServiceAwareTrait; use SourceCodeStringHelperAwareTrait; use StructureDocumentServiceAwareTrait; protected $codeTypeStructure = TypeStructure::CODE_ETABLISSEMENT; Loading Loading @@ -75,6 +72,7 @@ class EtablissementController extends StructureConcreteController if ($etablissement === null) { throw new RuntimeException("Aucun établissement ne possède l'identifiant renseigné."); } $contenus = $this->getStructureDocumentService()->getContenus($etablissement->getStructure()); $roleListings = []; $individuListings = []; Loading Loading @@ -110,7 +108,7 @@ class EtablissementController extends StructureConcreteController 'roleListing' => $roleListings, 'individuListing' => $individuListings, 'logoContent' => $this->structureService->getLogoStructureContent($etablissement), 'signatureConvocation' => ($etablissement->getSignatureConvocation())?($this->fichierService->computeDestinationFilePathForFichier($etablissement->getSignatureConvocation())):null, 'contenus' => $contenus, ]); } Loading Loading @@ -146,39 +144,4 @@ class EtablissementController extends StructureConcreteController return $viewModel; } /** gestion des signatures */ public function televerserSignatureConvocationAction() { $structure = $this->getStructureService()->getRequestedStructure($this); $etablissement = $this->getStructureConcreteService()->getRepository()->findByStructureId($structure->getId()); $nature = $this->natureFichierService->getRepository()->findOneBy(['code' => NatureFichier::CODE_SIGNATURE_CONVOCATION]); $request = $this->getRequest(); if ($request->isPost()) { $files = $request->getFiles()->toArray(); $fichiers = $this->fichierService->createFichiersFromUpload(['files' => $files], $nature); $this->fichierService->saveFichiers($fichiers); $etablissement->setSignatureConvocation($fichiers[0]); $this->getEtablissementService()->update($etablissement); } $vm = new ViewModel([ 'title' => "Ajout d'une signature pour les convocation pour l'établissement [".$structure->getLibelle()."]", 'nature' => 'SIGNATURE_CONVOCATION', 'action' => $this->url()->fromRoute('etablissement/televerser-signature-convocation', ['structure' => $structure->getId()], [], true), ]); $vm->setTemplate('application/etablissement/televerser-document'); return $vm; } public function supprimerSignatureConvocationAction() { /** @var Etablissement $etablissement */ $structure = $this->getStructureService()->getRequestedStructure($this); $etablissement = $this->getStructureConcreteService()->getRepository()->findByStructureId($structure->getId()); $this->fichierService->supprimerFichiers([$etablissement->getSignatureConvocation()]); $etablissement->setSignatureConvocation(null); $this->etablissementService->update($etablissement); return $this->redirect()->toRoute($this->routeName."/information", [], ['query' => ['selected' => $structure->getId()], "fragment" => $structure->getId()], true); } } No newline at end of file