Loading data/privileges.php +2 −0 Changes for data/privileges.php: 2 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -338,6 +338,8 @@ return [ 'annees-visualisation' => 'Années - Visualisation', 'periodes-edition' => 'Périodes - Édition', 'periodes-visualisation' => 'Périodes - Visualisation', 'etablissement-edition' => 'Établissement - Édition', 'etablissement-visualisation' => 'Établissement - Visualisation', ], ], Loading module/Application/config/administration.config.php +10 −1 Changes for module/Application/config/administration.config.php: 10 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -152,6 +152,14 @@ return [ 'order' => 84, 'border - color' => '#111', ], 'gestion-etablissement' => [ 'label' => 'Gestion des etablissements', 'icon' => 'glyphicon glyphicon - list-alt', 'route' => 'etablissement', 'resource' => PrivilegeController::getResourceId('Application\Controller\Etablissement', 'index'), 'order' => 85, 'border - color' => '#111', ], 'gestion-intervenant' => [ 'label' => 'Gestion intervenants (Statuts, PJ, etc...)', 'icon' => 'glyphicon glyphicon - list-alt', Loading Loading @@ -236,7 +244,8 @@ return [ 'administration-intervenant', 'administration-referentiel-commun', 'administration-nomenclature-rh', 'administration-periode',], 'administration-periode', 'administration-etablissement',], 'privileges' => [ Privileges::IMPORT_ECARTS, Privileges::IMPORT_MAJ, Loading module/Application/config/etablissement.config.php +30 −7 Changes for module/Application/config/etablissement.config.php: 30 added lines, 7 removed lines. Original line number Diff line number Diff line Loading @@ -2,6 +2,9 @@ namespace Application; use UnicaenAuth\Guard\PrivilegeController; use Application\Provider\Privilege\Privileges; return [ 'router' => [ 'routes' => [ Loading Loading @@ -37,18 +40,25 @@ return [ ], ], ], 'default' => [ 'saisie' => [ 'type' => 'Segment', 'options' => [ 'route' => '/:action[/:id]', 'constraints' => [ 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 'id' => '[0-9]*', 'route' => '/saisie[/:etablissement]', 'defaults' => [ 'action' => 'saisie', ], ], 'may_terminate' => true, ], 'supprimer' => [ 'type' => 'Segment', 'options' => [ 'route' => '/supprimer/:etablissement', 'defaults' => [ 'action' => 'index', 'action' => 'supprimer', ], ], 'may_terminate' => true, ], ], ], Loading @@ -59,10 +69,23 @@ return [ 'BjyAuthorize\Guard\Controller' => [ [ 'controller' => 'Application\Controller\Etablissement', 'action' => ['index', 'choisir', 'recherche', 'voir', 'apercevoir'], 'action' => ['choisir', 'recherche', 'voir', 'apercevoir',], 'roles' => ['user']], ], PrivilegeController::class => [ [ 'controller' => 'Application\Controller\Etablissement', 'action' => ['index'], 'privileges' => [Privileges::PARAMETRES_ETABLISSEMENT_VISUALISATION], ], [ 'controller' => 'Application\Controller\Etablissement', 'action' => ['saisie', 'supprimer'], 'privileges' => [Privileges::PARAMETRES_ETABLISSEMENT_EDITION], ], ], ], ], 'controllers' => [ 'invokables' => [ Loading module/Application/src/Controller/EtablissementController.php +59 −3 Changes for module/Application/src/Controller/EtablissementController.php: 59 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -2,9 +2,12 @@ namespace Application\Controller; use Application\Form\Etablissement\Traits\EtablissementSaisieFormAwareTrait; use Application\Service\Traits\EtablissementServiceAwareTrait; use RuntimeException; use LogicException; use Laminas\View\Model\JsonModel; use UnicaenApp\View\Model\MessengerViewModel; /** * Description of EtablissementController Loading @@ -15,14 +18,22 @@ class EtablissementController extends AbstractController { use \Application\Service\Traits\ContextServiceAwareTrait; use \Application\Service\Traits\EtablissementServiceAwareTrait; use EtablissementSaisieFormAwareTrait; use EtablissementServiceAwareTrait; public function indexAction() { $url = $this->url()->fromRoute('etablissement/default', ['action' => 'choisir']); return $this->redirect()->toUrl($url); // $url = $this->url()->fromRoute('etablissement/default', ['action' => 'choisir']); // return $this->redirect()->toUrl($url); $query = $this->em()->createQuery('SELECT e FROM Application\Entity\Db\Etablissement e WHERE e.histoDestruction is null'); $etablissements = $query->getResult(); return compact('etablissements'); } /** * * @return \Laminas\View\Model\ViewModel Loading @@ -46,6 +57,7 @@ class EtablissementController extends AbstractController $form->setData($data); if ($form->isValid()) { $url = $this->url()->fromRoute('etablissement/default', ['action' => 'voir', 'id' => $form->get('etablissement')->getValueId()]); return $this->redirect()->toUrl($url); } } Loading @@ -53,6 +65,8 @@ class EtablissementController extends AbstractController return compact('form'); } public function rechercheAction() { $this->em()->getFilters()->enable('historique')->init([ Loading @@ -66,7 +80,8 @@ class EtablissementController extends AbstractController $entities = $this->getServiceEtablissement()->finderByLibelle($term)->getQuery()->execute(); $result = []; foreach ($entities as $item) { /* @var $item \Application\Entity\Db\Etablissement */ foreach ($entities as $item) { /* @var $item \Application\Entity\Db\Etablissement */ $result[] = [ 'id' => $item->getId(), // identifiant unique de l'item 'label' => (string)$item, // libellé de l'item Loading @@ -77,6 +92,8 @@ class EtablissementController extends AbstractController return new JsonModel($result); } public function voirAction() { if (!($id = $this->params()->fromRoute('id', $this->params()->fromPost('id')))) { Loading @@ -91,6 +108,8 @@ class EtablissementController extends AbstractController return compact('etablissement', 'title'); } public function apercevoirAction() { if (!($id = $this->params()->fromRoute('id', $this->params()->fromPost('id')))) { Loading @@ -106,4 +125,41 @@ class EtablissementController extends AbstractController return $viewModel; } public function saisieAction() { $etablissement = $this->getEvent()->getParam('etablissement'); $form = $this->getFormEtablissementSaisie(); if (empty($etablissement)) { $title = "Création d'un nouvel établissement"; $etablissement = $this->getServiceEtablissement()->newEntity(); } else { $title = "Edition d'un établissement"; } $form->bindRequestSave($etablissement, $this->getRequest(), function () use ($etablissement, $form) { try { $this->getServiceEtablissement()->save($etablissement); $this->flashMessenger()->addSuccessMessage( "Ajout réussis" ); } catch (Exception $e) { $this->flashMessenger()->addErrorMessage($this->translate($e)); } }); return compact('form', 'title'); } public function supprimerAction() { $etablissement = $this->getEvent()->getParam('etablissement'); $this->getServiceEtablissement()->delete($etablissement, false); return new MessengerViewModel(); } } No newline at end of file module/Application/src/Form/Etablissement/EtablissementSaisieForm.php 0 → 100644 +102 −0 Changes for module/Application/src/Form/Etablissement/EtablissementSaisieForm.php: 102 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Application\Form\Etablissement; use Application\Form\AbstractForm; use Application\Hydrator\GenericHydrator; use Application\Service\Traits\SourceServiceAwareTrait; use Laminas\Form\Element\Csrf; /** * Description of EtablissementForm * * @author Florian JORIOT <florian.joriot at unicaen.fr> */ class EtablissementSaisieForm extends AbstractForm { use SourceServiceAwareTrait; protected $hydratorElements = [ 'id' => ['type' => 'int'], 'departement' => ['type' => 'string'], 'localisation' => ['type' => 'string'], 'libelle' => ['type' => 'string'], ]; public function init() { $this->setAttribute('action', $this->getCurrentUrl()); $hydrator = new GenericHydrator($this->getServiceSource()->getEntityManager(), $this->hydratorElements); $this->setHydrator($hydrator); $this->setAttribute('action', $this->getCurrentUrl()); $this->add([ 'name' => 'id', 'type' => 'Hidden', ]); $this->add([ 'name' => 'departement', 'options' => [ 'label' => "Département de l'établissement", ], 'type' => 'Text', ]); $this->add([ 'name' => 'localisation', 'options' => [ 'label' => "Localisation de l'établissement", ], 'type' => 'Text', ]); $this->add([ 'name' => 'libelle', 'options' => [ 'label' => "Nom de l'établissement", ], 'type' => 'Text', ]); $this->add(new Csrf('security')); $this->add([ 'name' => 'submit', 'type' => 'Submit', 'attributes' => [ 'value' => "Enregistrer", 'class' => 'btn btn-primary', ], ]); return $this; } /** * Should return an array specification compatible with * {@link Laminas\InputFilter\Factory::createInputFilter()}. * * @return array */ public function getInputFilterSpecification() { return [ 'libelle' => [ 'required' => true, ], 'departement' => [ 'required' => true, ], ]; } } Loading
data/privileges.php +2 −0 Changes for data/privileges.php: 2 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -338,6 +338,8 @@ return [ 'annees-visualisation' => 'Années - Visualisation', 'periodes-edition' => 'Périodes - Édition', 'periodes-visualisation' => 'Périodes - Visualisation', 'etablissement-edition' => 'Établissement - Édition', 'etablissement-visualisation' => 'Établissement - Visualisation', ], ], Loading
module/Application/config/administration.config.php +10 −1 Changes for module/Application/config/administration.config.php: 10 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -152,6 +152,14 @@ return [ 'order' => 84, 'border - color' => '#111', ], 'gestion-etablissement' => [ 'label' => 'Gestion des etablissements', 'icon' => 'glyphicon glyphicon - list-alt', 'route' => 'etablissement', 'resource' => PrivilegeController::getResourceId('Application\Controller\Etablissement', 'index'), 'order' => 85, 'border - color' => '#111', ], 'gestion-intervenant' => [ 'label' => 'Gestion intervenants (Statuts, PJ, etc...)', 'icon' => 'glyphicon glyphicon - list-alt', Loading Loading @@ -236,7 +244,8 @@ return [ 'administration-intervenant', 'administration-referentiel-commun', 'administration-nomenclature-rh', 'administration-periode',], 'administration-periode', 'administration-etablissement',], 'privileges' => [ Privileges::IMPORT_ECARTS, Privileges::IMPORT_MAJ, Loading
module/Application/config/etablissement.config.php +30 −7 Changes for module/Application/config/etablissement.config.php: 30 added lines, 7 removed lines. Original line number Diff line number Diff line Loading @@ -2,6 +2,9 @@ namespace Application; use UnicaenAuth\Guard\PrivilegeController; use Application\Provider\Privilege\Privileges; return [ 'router' => [ 'routes' => [ Loading Loading @@ -37,18 +40,25 @@ return [ ], ], ], 'default' => [ 'saisie' => [ 'type' => 'Segment', 'options' => [ 'route' => '/:action[/:id]', 'constraints' => [ 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 'id' => '[0-9]*', 'route' => '/saisie[/:etablissement]', 'defaults' => [ 'action' => 'saisie', ], ], 'may_terminate' => true, ], 'supprimer' => [ 'type' => 'Segment', 'options' => [ 'route' => '/supprimer/:etablissement', 'defaults' => [ 'action' => 'index', 'action' => 'supprimer', ], ], 'may_terminate' => true, ], ], ], Loading @@ -59,10 +69,23 @@ return [ 'BjyAuthorize\Guard\Controller' => [ [ 'controller' => 'Application\Controller\Etablissement', 'action' => ['index', 'choisir', 'recherche', 'voir', 'apercevoir'], 'action' => ['choisir', 'recherche', 'voir', 'apercevoir',], 'roles' => ['user']], ], PrivilegeController::class => [ [ 'controller' => 'Application\Controller\Etablissement', 'action' => ['index'], 'privileges' => [Privileges::PARAMETRES_ETABLISSEMENT_VISUALISATION], ], [ 'controller' => 'Application\Controller\Etablissement', 'action' => ['saisie', 'supprimer'], 'privileges' => [Privileges::PARAMETRES_ETABLISSEMENT_EDITION], ], ], ], ], 'controllers' => [ 'invokables' => [ Loading
module/Application/src/Controller/EtablissementController.php +59 −3 Changes for module/Application/src/Controller/EtablissementController.php: 59 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -2,9 +2,12 @@ namespace Application\Controller; use Application\Form\Etablissement\Traits\EtablissementSaisieFormAwareTrait; use Application\Service\Traits\EtablissementServiceAwareTrait; use RuntimeException; use LogicException; use Laminas\View\Model\JsonModel; use UnicaenApp\View\Model\MessengerViewModel; /** * Description of EtablissementController Loading @@ -15,14 +18,22 @@ class EtablissementController extends AbstractController { use \Application\Service\Traits\ContextServiceAwareTrait; use \Application\Service\Traits\EtablissementServiceAwareTrait; use EtablissementSaisieFormAwareTrait; use EtablissementServiceAwareTrait; public function indexAction() { $url = $this->url()->fromRoute('etablissement/default', ['action' => 'choisir']); return $this->redirect()->toUrl($url); // $url = $this->url()->fromRoute('etablissement/default', ['action' => 'choisir']); // return $this->redirect()->toUrl($url); $query = $this->em()->createQuery('SELECT e FROM Application\Entity\Db\Etablissement e WHERE e.histoDestruction is null'); $etablissements = $query->getResult(); return compact('etablissements'); } /** * * @return \Laminas\View\Model\ViewModel Loading @@ -46,6 +57,7 @@ class EtablissementController extends AbstractController $form->setData($data); if ($form->isValid()) { $url = $this->url()->fromRoute('etablissement/default', ['action' => 'voir', 'id' => $form->get('etablissement')->getValueId()]); return $this->redirect()->toUrl($url); } } Loading @@ -53,6 +65,8 @@ class EtablissementController extends AbstractController return compact('form'); } public function rechercheAction() { $this->em()->getFilters()->enable('historique')->init([ Loading @@ -66,7 +80,8 @@ class EtablissementController extends AbstractController $entities = $this->getServiceEtablissement()->finderByLibelle($term)->getQuery()->execute(); $result = []; foreach ($entities as $item) { /* @var $item \Application\Entity\Db\Etablissement */ foreach ($entities as $item) { /* @var $item \Application\Entity\Db\Etablissement */ $result[] = [ 'id' => $item->getId(), // identifiant unique de l'item 'label' => (string)$item, // libellé de l'item Loading @@ -77,6 +92,8 @@ class EtablissementController extends AbstractController return new JsonModel($result); } public function voirAction() { if (!($id = $this->params()->fromRoute('id', $this->params()->fromPost('id')))) { Loading @@ -91,6 +108,8 @@ class EtablissementController extends AbstractController return compact('etablissement', 'title'); } public function apercevoirAction() { if (!($id = $this->params()->fromRoute('id', $this->params()->fromPost('id')))) { Loading @@ -106,4 +125,41 @@ class EtablissementController extends AbstractController return $viewModel; } public function saisieAction() { $etablissement = $this->getEvent()->getParam('etablissement'); $form = $this->getFormEtablissementSaisie(); if (empty($etablissement)) { $title = "Création d'un nouvel établissement"; $etablissement = $this->getServiceEtablissement()->newEntity(); } else { $title = "Edition d'un établissement"; } $form->bindRequestSave($etablissement, $this->getRequest(), function () use ($etablissement, $form) { try { $this->getServiceEtablissement()->save($etablissement); $this->flashMessenger()->addSuccessMessage( "Ajout réussis" ); } catch (Exception $e) { $this->flashMessenger()->addErrorMessage($this->translate($e)); } }); return compact('form', 'title'); } public function supprimerAction() { $etablissement = $this->getEvent()->getParam('etablissement'); $this->getServiceEtablissement()->delete($etablissement, false); return new MessengerViewModel(); } } No newline at end of file
module/Application/src/Form/Etablissement/EtablissementSaisieForm.php 0 → 100644 +102 −0 Changes for module/Application/src/Form/Etablissement/EtablissementSaisieForm.php: 102 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Application\Form\Etablissement; use Application\Form\AbstractForm; use Application\Hydrator\GenericHydrator; use Application\Service\Traits\SourceServiceAwareTrait; use Laminas\Form\Element\Csrf; /** * Description of EtablissementForm * * @author Florian JORIOT <florian.joriot at unicaen.fr> */ class EtablissementSaisieForm extends AbstractForm { use SourceServiceAwareTrait; protected $hydratorElements = [ 'id' => ['type' => 'int'], 'departement' => ['type' => 'string'], 'localisation' => ['type' => 'string'], 'libelle' => ['type' => 'string'], ]; public function init() { $this->setAttribute('action', $this->getCurrentUrl()); $hydrator = new GenericHydrator($this->getServiceSource()->getEntityManager(), $this->hydratorElements); $this->setHydrator($hydrator); $this->setAttribute('action', $this->getCurrentUrl()); $this->add([ 'name' => 'id', 'type' => 'Hidden', ]); $this->add([ 'name' => 'departement', 'options' => [ 'label' => "Département de l'établissement", ], 'type' => 'Text', ]); $this->add([ 'name' => 'localisation', 'options' => [ 'label' => "Localisation de l'établissement", ], 'type' => 'Text', ]); $this->add([ 'name' => 'libelle', 'options' => [ 'label' => "Nom de l'établissement", ], 'type' => 'Text', ]); $this->add(new Csrf('security')); $this->add([ 'name' => 'submit', 'type' => 'Submit', 'attributes' => [ 'value' => "Enregistrer", 'class' => 'btn btn-primary', ], ]); return $this; } /** * Should return an array specification compatible with * {@link Laminas\InputFilter\Factory::createInputFilter()}. * * @return array */ public function getInputFilterSpecification() { return [ 'libelle' => [ 'required' => true, ], 'departement' => [ 'required' => true, ], ]; } }