Loading config/merged/tableau-de-bord.config.php +56 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,11 @@ return [ 'controller' => TableauDeBordController::class, 'action' => [ 'index', 'ajouter', 'modifier', 'ajouter-indicateur', 'retirer-indicateur', 'supprimer', 'afficher', ], 'privileges' => [ Loading @@ -45,6 +50,16 @@ return [ ], 'may_terminate' => true, 'child_routes' => [ 'ajouter' => [ 'type' => Literal::class, 'options' => [ 'route' => '/ajouter', 'defaults' => [ 'controller' => TableauDeBordController::class, 'action' => 'ajouter', ], ], ], 'afficher' => [ 'type' => Segment::class, 'options' => [ Loading @@ -54,8 +69,48 @@ return [ 'action' => 'afficher', ], ], 'may_terminate' => true, ], 'modifier' => [ 'type' => Segment::class, 'options' => [ 'route' => '/modifier/:tableau-de-bord', 'defaults' => [ 'controller' => TableauDeBordController::class, 'action' => 'modifier', ], ], ], 'supprimer' => [ 'type' => Segment::class, 'options' => [ 'route' => '/supprimer/:tableau-de-bord', 'defaults' => [ 'controller' => TableauDeBordController::class, 'action' => 'supprimer', ], ], ], 'ajouter-indicateur' => [ 'type' => Segment::class, 'options' => [ 'route' => '/ajouter-indicateur/:tableau-de-bord', 'defaults' => [ 'controller' => TableauDeBordController::class, 'action' => 'ajouter-indicateur', ], ], ], 'retirer-indicateur' => [ 'type' => Segment::class, 'options' => [ 'route' => '/retirer-indicateur/:tableau-de-bord/:indicateur', 'defaults' => [ 'controller' => TableauDeBordController::class, 'action' => 'retirer-indicateur', ], ], ], ], ], ], Loading documentation/02_privileges.sql +14 −1 Original line number Diff line number Diff line Loading @@ -21,3 +21,16 @@ WITH d(code, lib, ordre) AS ( SELECT cp.id, d.code, d.lib, d.ordre FROM d JOIN unicaen_privilege_categorie cp ON cp.CODE = 'abonnement'; INSERT INTO unicaen_privilege_categorie (code, libelle, ordre, namespace) VALUES ('tableaudebord', 'Gestions des abonnement', 810, 'UnicaenIndicateur\Provider\Privilege'); INSERT INTO unicaen_privilege_privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE) WITH d(code, lib, ordre) AS ( SELECT 'afficher-tableaudebord', 'Afficher un tableau de bord', 4 UNION SELECT 'editer-tableaudebord', 'Éditer un tableau de bord', 5 UNION SELECT 'detruire-tableaudebord', 'Effacer un tableau de bord', 6 ) SELECT cp.id, d.code, d.lib, d.ordre FROM d JOIN unicaen_privilege_categorie cp ON cp.CODE = 'tableaudebord'; No newline at end of file src/UnicaenIndicateur/Controller/IndicateurController.php +3 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,9 @@ class IndicateurController extends AbstractActionController { { $indicateur = $this->getIndicateurService()->getRequestedIndicateur($this); $this->getIndicateurService()->refresh($indicateur); $retour = $this->params()->fromQuery('retour'); if ($retour) return $this->redirect()->toUrl($retour); return $this->redirect()->toRoute('indicateur/afficher', ['indicateur' => $indicateur->getId()], [], true); } Loading src/UnicaenIndicateur/Controller/TableauDeBordController.php +116 −0 Original line number Diff line number Diff line Loading @@ -2,13 +2,19 @@ namespace UnicaenIndicateur\Controller; use Laminas\Http\Response; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use UnicaenIndicateur\Entity\Db\TableauDeBord; use UnicaenIndicateur\Form\TableauDeBord\TableauDeBordFormAwareTrait; use UnicaenIndicateur\Service\Indicateur\IndicateurServiceAwareTrait; use UnicaenIndicateur\Service\TableauDeBord\TableauDeBordServiceAwareTrait; class TableauDeBordController extends AbstractActionController { use IndicateurServiceAwareTrait; use TableauDeBordServiceAwareTrait; use TableauDeBordFormAwareTrait; public function indexAction() : ViewModel { Loading @@ -27,4 +33,114 @@ class TableauDeBordController extends AbstractActionController 'tableau' => $tableau, ]); } public function ajouterAction() : ViewModel { $tableau = new TableauDeBord(); $form = $this->getTableauDeBordForm(); $form->setAttribute('action', $this->url()->fromRoute('tableau-de-bord/ajouter', [], [], true)); $form->bind($tableau); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getTableauDeBordService()->create($tableau); } } $vm = new ViewModel([ 'title' => "Création d'un tableau de bord", 'form' => $form, ]); $vm->setTemplate('unicaen-indicateur/default/default-form'); return $vm; } public function modifierAction() : ViewModel { $tableau = $this->getTableauDeBordService()->getRequestedTableauDeBord($this); $form = $this->getTableauDeBordForm(); $form->setAttribute('action', $this->url()->fromRoute('tableau-de-bord/modifier', ['tableau-de-bord' => $tableau->getId()], [], true)); $form->bind($tableau); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getTableauDeBordService()->update($tableau); } } $vm = new ViewModel([ 'title' => "Modification des informations du tableau de bord", 'form' => $form, ]); $vm->setTemplate('unicaen-indicateur/default/default-form'); return $vm; } public function supprimerAction() : ViewModel { $tableau = $this->getTableauDeBordService()->getRequestedTableauDeBord($this); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); if ($data["reponse"] === "oui") $this->getTableauDeBordService()->delete($tableau); exit(); } $vm = new ViewModel(); if ($tableau !== null) { $vm->setTemplate('application/default/confirmation'); $vm->setVariables([ 'title' => "Suppression du tableau de bord [" . $tableau->getTitre() . "]", 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", 'action' => $this->url()->fromRoute('tableau-de-bord/supprimer', ["tableau-de-bord" => $tableau->getId()], [], true), ]); } return $vm; } /** Gestion des indicateurs ****************************************************************/ public function ajouterIndicateurAction() : ViewModel { $tableau = $this->getTableauDeBordService()->getRequestedTableauDeBord($this); $indicateurs = $this->getIndicateurService()->getIndicateurs(); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $indicateur = $this->getIndicateurService()->getIndicateur($data['indicateur']); if ($indicateur) { $tableau->addIndicateur($indicateur); $this->getTableauDeBordService()->update($tableau); } } return new ViewModel([ 'title' => "Ajout d'un indicateur au tableau de bord", 'tableau' => $tableau, 'indicateurs' => $indicateurs, ]); } public function retirerIndicateurAction() : Response { $tableau = $this->getTableauDeBordService()->getRequestedTableauDeBord($this); $indicateur = $this->getIndicateurService()->getRequestedIndicateur($this); $tableau->removeIndicateur($indicateur); $this->getTableauDeBordService()->update($tableau); return $this->redirect()->toRoute('tableau-de-bord/afficher', ['tableau-de-bord' => $tableau->getId()], [], true); } } No newline at end of file src/UnicaenIndicateur/Controller/TableauDeBordControllerFactory.php +9 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; use UnicaenIndicateur\Entity\Db\TableauDeBord; use UnicaenIndicateur\Form\TableauDeBord\TableauDeBordForm; use UnicaenIndicateur\Service\Indicateur\IndicateurService; use UnicaenIndicateur\Service\TableauDeBord\TableauDeBordService; class TableauDeBordControllerFactory { Loading @@ -19,11 +21,18 @@ class TableauDeBordControllerFactory { public function __invoke(ContainerInterface $container) : TableauDeBordController { /** * @var IndicateurService $indicateurService * @var TableauDeBordService $tableauService * @var TableauDeBordForm $tableauForm */ $indicateurService = $container->get(IndicateurService::class); $tableauService = $container->get(TableauDeBordService::class); $tableauForm = $container->get('FormElementManager')->get(TableauDeBordForm::class); $controller = new TableauDeBordController(); $controller->setIndicateurService($indicateurService); $controller->setTableauDeBordForm($tableauForm); $controller->setTableauDeBordService($tableauService); return $controller; } } No newline at end of file Loading
config/merged/tableau-de-bord.config.php +56 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,11 @@ return [ 'controller' => TableauDeBordController::class, 'action' => [ 'index', 'ajouter', 'modifier', 'ajouter-indicateur', 'retirer-indicateur', 'supprimer', 'afficher', ], 'privileges' => [ Loading @@ -45,6 +50,16 @@ return [ ], 'may_terminate' => true, 'child_routes' => [ 'ajouter' => [ 'type' => Literal::class, 'options' => [ 'route' => '/ajouter', 'defaults' => [ 'controller' => TableauDeBordController::class, 'action' => 'ajouter', ], ], ], 'afficher' => [ 'type' => Segment::class, 'options' => [ Loading @@ -54,8 +69,48 @@ return [ 'action' => 'afficher', ], ], 'may_terminate' => true, ], 'modifier' => [ 'type' => Segment::class, 'options' => [ 'route' => '/modifier/:tableau-de-bord', 'defaults' => [ 'controller' => TableauDeBordController::class, 'action' => 'modifier', ], ], ], 'supprimer' => [ 'type' => Segment::class, 'options' => [ 'route' => '/supprimer/:tableau-de-bord', 'defaults' => [ 'controller' => TableauDeBordController::class, 'action' => 'supprimer', ], ], ], 'ajouter-indicateur' => [ 'type' => Segment::class, 'options' => [ 'route' => '/ajouter-indicateur/:tableau-de-bord', 'defaults' => [ 'controller' => TableauDeBordController::class, 'action' => 'ajouter-indicateur', ], ], ], 'retirer-indicateur' => [ 'type' => Segment::class, 'options' => [ 'route' => '/retirer-indicateur/:tableau-de-bord/:indicateur', 'defaults' => [ 'controller' => TableauDeBordController::class, 'action' => 'retirer-indicateur', ], ], ], ], ], ], Loading
documentation/02_privileges.sql +14 −1 Original line number Diff line number Diff line Loading @@ -21,3 +21,16 @@ WITH d(code, lib, ordre) AS ( SELECT cp.id, d.code, d.lib, d.ordre FROM d JOIN unicaen_privilege_categorie cp ON cp.CODE = 'abonnement'; INSERT INTO unicaen_privilege_categorie (code, libelle, ordre, namespace) VALUES ('tableaudebord', 'Gestions des abonnement', 810, 'UnicaenIndicateur\Provider\Privilege'); INSERT INTO unicaen_privilege_privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE) WITH d(code, lib, ordre) AS ( SELECT 'afficher-tableaudebord', 'Afficher un tableau de bord', 4 UNION SELECT 'editer-tableaudebord', 'Éditer un tableau de bord', 5 UNION SELECT 'detruire-tableaudebord', 'Effacer un tableau de bord', 6 ) SELECT cp.id, d.code, d.lib, d.ordre FROM d JOIN unicaen_privilege_categorie cp ON cp.CODE = 'tableaudebord'; No newline at end of file
src/UnicaenIndicateur/Controller/IndicateurController.php +3 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,9 @@ class IndicateurController extends AbstractActionController { { $indicateur = $this->getIndicateurService()->getRequestedIndicateur($this); $this->getIndicateurService()->refresh($indicateur); $retour = $this->params()->fromQuery('retour'); if ($retour) return $this->redirect()->toUrl($retour); return $this->redirect()->toRoute('indicateur/afficher', ['indicateur' => $indicateur->getId()], [], true); } Loading
src/UnicaenIndicateur/Controller/TableauDeBordController.php +116 −0 Original line number Diff line number Diff line Loading @@ -2,13 +2,19 @@ namespace UnicaenIndicateur\Controller; use Laminas\Http\Response; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use UnicaenIndicateur\Entity\Db\TableauDeBord; use UnicaenIndicateur\Form\TableauDeBord\TableauDeBordFormAwareTrait; use UnicaenIndicateur\Service\Indicateur\IndicateurServiceAwareTrait; use UnicaenIndicateur\Service\TableauDeBord\TableauDeBordServiceAwareTrait; class TableauDeBordController extends AbstractActionController { use IndicateurServiceAwareTrait; use TableauDeBordServiceAwareTrait; use TableauDeBordFormAwareTrait; public function indexAction() : ViewModel { Loading @@ -27,4 +33,114 @@ class TableauDeBordController extends AbstractActionController 'tableau' => $tableau, ]); } public function ajouterAction() : ViewModel { $tableau = new TableauDeBord(); $form = $this->getTableauDeBordForm(); $form->setAttribute('action', $this->url()->fromRoute('tableau-de-bord/ajouter', [], [], true)); $form->bind($tableau); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getTableauDeBordService()->create($tableau); } } $vm = new ViewModel([ 'title' => "Création d'un tableau de bord", 'form' => $form, ]); $vm->setTemplate('unicaen-indicateur/default/default-form'); return $vm; } public function modifierAction() : ViewModel { $tableau = $this->getTableauDeBordService()->getRequestedTableauDeBord($this); $form = $this->getTableauDeBordForm(); $form->setAttribute('action', $this->url()->fromRoute('tableau-de-bord/modifier', ['tableau-de-bord' => $tableau->getId()], [], true)); $form->bind($tableau); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getTableauDeBordService()->update($tableau); } } $vm = new ViewModel([ 'title' => "Modification des informations du tableau de bord", 'form' => $form, ]); $vm->setTemplate('unicaen-indicateur/default/default-form'); return $vm; } public function supprimerAction() : ViewModel { $tableau = $this->getTableauDeBordService()->getRequestedTableauDeBord($this); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); if ($data["reponse"] === "oui") $this->getTableauDeBordService()->delete($tableau); exit(); } $vm = new ViewModel(); if ($tableau !== null) { $vm->setTemplate('application/default/confirmation'); $vm->setVariables([ 'title' => "Suppression du tableau de bord [" . $tableau->getTitre() . "]", 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", 'action' => $this->url()->fromRoute('tableau-de-bord/supprimer', ["tableau-de-bord" => $tableau->getId()], [], true), ]); } return $vm; } /** Gestion des indicateurs ****************************************************************/ public function ajouterIndicateurAction() : ViewModel { $tableau = $this->getTableauDeBordService()->getRequestedTableauDeBord($this); $indicateurs = $this->getIndicateurService()->getIndicateurs(); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $indicateur = $this->getIndicateurService()->getIndicateur($data['indicateur']); if ($indicateur) { $tableau->addIndicateur($indicateur); $this->getTableauDeBordService()->update($tableau); } } return new ViewModel([ 'title' => "Ajout d'un indicateur au tableau de bord", 'tableau' => $tableau, 'indicateurs' => $indicateurs, ]); } public function retirerIndicateurAction() : Response { $tableau = $this->getTableauDeBordService()->getRequestedTableauDeBord($this); $indicateur = $this->getIndicateurService()->getRequestedIndicateur($this); $tableau->removeIndicateur($indicateur); $this->getTableauDeBordService()->update($tableau); return $this->redirect()->toRoute('tableau-de-bord/afficher', ['tableau-de-bord' => $tableau->getId()], [], true); } } No newline at end of file
src/UnicaenIndicateur/Controller/TableauDeBordControllerFactory.php +9 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; use UnicaenIndicateur\Entity\Db\TableauDeBord; use UnicaenIndicateur\Form\TableauDeBord\TableauDeBordForm; use UnicaenIndicateur\Service\Indicateur\IndicateurService; use UnicaenIndicateur\Service\TableauDeBord\TableauDeBordService; class TableauDeBordControllerFactory { Loading @@ -19,11 +21,18 @@ class TableauDeBordControllerFactory { public function __invoke(ContainerInterface $container) : TableauDeBordController { /** * @var IndicateurService $indicateurService * @var TableauDeBordService $tableauService * @var TableauDeBordForm $tableauForm */ $indicateurService = $container->get(IndicateurService::class); $tableauService = $container->get(TableauDeBordService::class); $tableauForm = $container->get('FormElementManager')->get(TableauDeBordForm::class); $controller = new TableauDeBordController(); $controller->setIndicateurService($indicateurService); $controller->setTableauDeBordForm($tableauForm); $controller->setTableauDeBordService($tableauService); return $controller; } } No newline at end of file