diff --git a/config/merged/tableau-de-bord.config.php b/config/merged/tableau-de-bord.config.php index 312dfd9c80048d1ec635da0c8e367705f6b11a10..d6e912a3b26f7ef86c140aa46ff52737ed875b86 100644 --- a/config/merged/tableau-de-bord.config.php +++ b/config/merged/tableau-de-bord.config.php @@ -21,6 +21,11 @@ return [ 'controller' => TableauDeBordController::class, 'action' => [ 'index', + 'ajouter', + 'modifier', + 'ajouter-indicateur', + 'retirer-indicateur', + 'supprimer', 'afficher', ], 'privileges' => [ @@ -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' => [ @@ -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', + ], + ], + ], + ], ], ], diff --git a/documentation/02_privileges.sql b/documentation/02_privileges.sql index e2ea15debfbf9c5a177d89853afe434f106962dc..0b1d59092626427a9c4e3c3e5f6f90283c32b416 100644 --- a/documentation/02_privileges.sql +++ b/documentation/02_privileges.sql @@ -20,4 +20,17 @@ 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'; \ No newline at end of file + 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 diff --git a/src/UnicaenIndicateur/Controller/IndicateurController.php b/src/UnicaenIndicateur/Controller/IndicateurController.php index 2597969e8096752ee692831b5d9c0a236c839a0f..2f8de0fe011e8f7ec06873c00c59b2b77c72ecab 100644 --- a/src/UnicaenIndicateur/Controller/IndicateurController.php +++ b/src/UnicaenIndicateur/Controller/IndicateurController.php @@ -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); } diff --git a/src/UnicaenIndicateur/Controller/TableauDeBordController.php b/src/UnicaenIndicateur/Controller/TableauDeBordController.php index 9f8fe19db09eaf274197afd92a3133bf1b30b04a..8526578f72787b216e2f50a1ab301bd30ee5d619 100644 --- a/src/UnicaenIndicateur/Controller/TableauDeBordController.php +++ b/src/UnicaenIndicateur/Controller/TableauDeBordController.php @@ -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 { @@ -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 diff --git a/src/UnicaenIndicateur/Controller/TableauDeBordControllerFactory.php b/src/UnicaenIndicateur/Controller/TableauDeBordControllerFactory.php index d76c8b9c1ff34be6a567f995a9388de9ce59a7a3..8185d7ba783ce4d67be392984a65be48fa99acc0 100644 --- a/src/UnicaenIndicateur/Controller/TableauDeBordControllerFactory.php +++ b/src/UnicaenIndicateur/Controller/TableauDeBordControllerFactory.php @@ -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 { @@ -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 diff --git a/src/UnicaenIndicateur/Entity/Db/Mapping/UnicaenIndicateur.Entity.Db.TableauDeBord.dcm.xml b/src/UnicaenIndicateur/Entity/Db/Mapping/UnicaenIndicateur.Entity.Db.TableauDeBord.dcm.xml index a666516383316457472ca23dc49473eb27aec7db..8e9b59618a6897a1a70b5a8fad678f26935f28d7 100644 --- a/src/UnicaenIndicateur/Entity/Db/Mapping/UnicaenIndicateur.Entity.Db.TableauDeBord.dcm.xml +++ b/src/UnicaenIndicateur/Entity/Db/Mapping/UnicaenIndicateur.Entity.Db.TableauDeBord.dcm.xml @@ -16,7 +16,7 @@ <join-column name="tableau_id" referenced-column-name="id"/> </join-columns> <inverse-join-columns> - <join-column name="indicateur_id" referenced-column-name="ID"/> + <join-column name="indicateur_id" referenced-column-name="id"/> </inverse-join-columns> </join-table> </many-to-many> diff --git a/src/UnicaenIndicateur/Entity/Db/TableauDeBord.php b/src/UnicaenIndicateur/Entity/Db/TableauDeBord.php index 36a730feb8bcf94a43656a734679b5be683c31a0..93cf80a4f3a18b2685a7567aafb092b5387be194 100644 --- a/src/UnicaenIndicateur/Entity/Db/TableauDeBord.php +++ b/src/UnicaenIndicateur/Entity/Db/TableauDeBord.php @@ -72,4 +72,9 @@ class TableauDeBord { { $this->indicateurs->removeElement($indicateur); } + + public function hasIndicateur(Indicateur $indicateur) : bool + { + return $this->indicateurs->contains($indicateur); + } } \ No newline at end of file diff --git a/src/UnicaenIndicateur/Form/TableauDeBord/TableauDeBordHydrator.php b/src/UnicaenIndicateur/Form/TableauDeBord/TableauDeBordHydrator.php index 48aff180dbe154fe33913dbc315f6904cd00fa94..4f8754b700592e739e94e48ae229d86149eb9a45 100644 --- a/src/UnicaenIndicateur/Form/TableauDeBord/TableauDeBordHydrator.php +++ b/src/UnicaenIndicateur/Form/TableauDeBord/TableauDeBordHydrator.php @@ -15,8 +15,8 @@ class TableauDeBordHydrator implements HydratorInterface { { $data = [ 'libelle' => $object->getTitre(), - 'description' => $object->getTitre(), - 'nb_colonne' => $object->getTitre(), + 'description' => $object->getDescription(), + 'nb_colonne' => $object->getNbColumn(), ]; return $data; } diff --git a/src/UnicaenIndicateur/Provider/Privilege/TableaudebordPrivileges.php b/src/UnicaenIndicateur/Provider/Privilege/TableaudebordPrivileges.php new file mode 100644 index 0000000000000000000000000000000000000000..a840756017133df621dc637f5049283328f3c39b --- /dev/null +++ b/src/UnicaenIndicateur/Provider/Privilege/TableaudebordPrivileges.php @@ -0,0 +1,12 @@ +<?php + +namespace UnicaenIndicateur\Provider\Privilege; + +use UnicaenPrivilege\Provider\Privilege\Privileges; + +class TableaudebordPrivileges extends Privileges +{ + const AFFICHER = 'tableaudebord-afficher'; + const EDITER = 'tableaudebord-editer'; + const DETRUIRE = 'tableaudebord-detruire'; +} \ No newline at end of file diff --git a/view/unicaen-indicateur/indicateur/index.phtml b/view/unicaen-indicateur/indicateur/index.phtml index 8e4d3f95aeb6dcbc9e48a4b73089c06f5293d81f..30d72e4cd2b955b74cf2cdcafec1c2a24b6ce1d0 100644 --- a/view/unicaen-indicateur/indicateur/index.phtml +++ b/view/unicaen-indicateur/indicateur/index.phtml @@ -8,15 +8,31 @@ use UnicaenIndicateur\Entity\Db\Abonnement; use UnicaenIndicateur\Entity\Db\Indicateur; use UnicaenIndicateur\Provider\Privilege\IndicateurPrivileges; +use UnicaenIndicateur\Provider\Privilege\TableaudebordPrivileges; $canVoir = $this->isAllowed(IndicateurPrivileges::getResourceId(IndicateurPrivileges::AFFICHER)); $canEditer = $this->isAllowed(IndicateurPrivileges::getResourceId(IndicateurPrivileges::EDITER)); $canDetruire = $this->isAllowed(IndicateurPrivileges::getResourceId(IndicateurPrivileges::DETRUIRE)); + +$canTableaux = $this->isAllowed(TableaudebordPrivileges::getResourceId(TableaudebordPrivileges::EDITER)); ?> -<h1 class="page-header"> - Indicateurs -</h1> +<div class="row"> + <div class="col-md-9"> + <h1 class="page-header"> + Indicateurs + </h1> + </div> + <div class="col-md-3"> + <?php if ($canTableaux) : ?> + <?php /** @see \UnicaenIndicateur\Controller\TableauDeBordController::indexAction() */ ?> + <a href="<?php echo $this->url('tableau-de-bord',[], [], true); ?>" class="btn btn-secondary"> + <span class="icon icon-lister"></span> + Accéder aux tableaux de bord + </a> + <?php endif; ?> + </div> +</div> <div class="main"> diff --git a/view/unicaen-indicateur/tableau-de-bord/afficher.phtml b/view/unicaen-indicateur/tableau-de-bord/afficher.phtml new file mode 100644 index 0000000000000000000000000000000000000000..6f4f6baa3a5454e7d389bf3b52a6773a91d0d6ff --- /dev/null +++ b/view/unicaen-indicateur/tableau-de-bord/afficher.phtml @@ -0,0 +1,110 @@ +<?php + +use UnicaenIndicateur\Entity\Db\TableauDeBord; +use UnicaenIndicateur\Provider\Privilege\IndicateurPrivileges; +use UnicaenIndicateur\Provider\Privilege\TableaudebordPrivileges; + +/** + * @see \UnicaenIndicateur\Controller\TableauDeBordController::afficherAction() + * @var TableauDeBord $tableau + */ + +$this->headTitle($tableau?$tableau->getTitre():"Tableau de bord supprimé"); + +$canIndex = $this->isAllowed(TableaudebordPrivileges::getResourceId(TableaudebordPrivileges::EDITER)); +$canGerer = $this->isAllowed(TableaudebordPrivileges::getResourceId(TableaudebordPrivileges::EDITER)); +$canSupprimer = $this->isAllowed(TableaudebordPrivileges::getResourceId(TableaudebordPrivileges::DETRUIRE)); + +$canAfficherIndicateur = $this->isAllowed(IndicateurPrivileges::getResourceId(IndicateurPrivileges::AFFICHER)); + +$width = 12 / ((int) ($tableau?$tableau->getNbColumn():1)); +?> + +<?php if ($tableau === null) : ?> + <div class="alert alert-danger"> + Tableau de bord supprimé + </div> +<?php else : ?> + <div class="row"> + <div class="col-md-9"> + <h1 class="page-header"> + <?php echo $tableau->getTitre(); ?> + <?php if ($tableau->getDescription()) : ?> + <span class="icon icon-information" title="<?php echo $tableau->getDescription(); ?>" + data-bs-toggle="tooltip" data-bs-html="true"></span> + <?php endif; ?> + </h1> + </div> + <div class="col-md-3"> + <?php if ($canIndex) : ?> + <?php /** @see \UnicaenIndicateur\Controller\TableauDeBordController::indexAction() */ ?> + <a href="<?php echo $this->url('tableau-de-bord', [], [], true); ?>" + class="btn btn-secondary"> + <span class="icon icon-lister"></span> + Accéder aux tableaux de bord + </a> + <?php endif;?> + </div> + </div> + + <?php if ($canGerer) : ?> + <?php /** @see \UnicaenIndicateur\Controller\TableauDeBordController::modifierAction() */?> + <a href="<?php echo $this->url('tableau-de-bord/modifier', ['tableau-de-bord' => $tableau->getId()], [], true); ?>" class="btn btn-primary ajax-modal" data-event="modification"> + <span class="icon icon-modifier"></span> + Modifier les informations + </a> + <?php /** @see \UnicaenIndicateur\Controller\TableauDeBordController::ajouterIndicateurAction() */?> + <a href="<?php echo $this->url('tableau-de-bord/ajouter-indicateur', ['tableau-de-bord' => $tableau->getId()], [], true); ?>" class="btn btn-primary ajax-modal" data-event="modification"> + <span class="icon icon-ajouter"></span> + Ajouter un indicateur + </a> + <?php endif; ?> + <?php if ($canSupprimer) : ?> + <a href="<?php echo $this->url("tableau-de-bord/supprimer", ['tableau-de-bord' => $tableau->getId()], [], true); ?>" class="btn btn-danger ajax-modal" data-event="modification"> + <span class="icon icon-unchecked"></span> + Supprimer le tableau de bord + </a> + <?php endif; ?> + + <div class="row"> + <?php foreach ($tableau->getIndicateurs() as $indicateur) : ?> + <div class="col-md-<?php echo $width; ?>"> + <div class="row"> + <div class="col-md-8"> + <?php echo $indicateur->getTitre(); ?> + </div> + <div class="col-md-4"> + <?php if ($canAfficherIndicateur) : ?> + <?php /** @see \UnicaenIndicateur\Controller\IndicateurController::rafraichirAction() */?> + <a href="<?php echo $this->url('indicateur/rafraichir', ['indicateur' => $indicateur->getId()], + ["query" => ["retour" => $this->url("tableau-de-bord/afficher", ["tableau-de-bord" => $tableau->getId()], ["force_canonical" => true], true)]], true); ?>" title="Rafraichir l'indicateur"> + <span class="icon icon-synchroniser"></span></a> + <?php /** @see \UnicaenIndicateur\Controller\IndicateurController::afficherAction() */?> + <a href="<?php echo $this->url('indicateur/afficher', ['indicateur' => $indicateur->getId()], [], true); ?>" title="Afficher l'indicateur"> + <span class="icon icon-voir"></span></a> + <?php /** @see \UnicaenIndicateur\Controller\IndicateurController::exporterAction() */?> + <a href="<?php echo $this->url('indicateur/exporter', ['indicateur' => $indicateur->getId()], [], true); ?>" title="Exporter l'indicateur"> + <span class="icon icon-csv"></span></a> + <?php endif; ?> + <?php if ($canGerer) : ?> + <?php /** @see \UnicaenIndicateur\Controller\TableauDeBordController::retirerIndicateurAction() */ ?> + <a href="<?php echo $this->url("tableau-de-bord/retirer-indicateur",["tableau-de-bord" => $tableau->getId(), "indicateur" => $indicateur->getId()],[], true); ?>" title="Retirer cet indicateur du tableau de bord"> + <span class="icon icon-unchecked text-danger"></span></a> + <?php endif; ?> + </div> + </div> + + <span class="todo">Faire le view helper des données des indicateurs </span> + </div> + <?php endforeach; ?> + </div> +<?php endif; ?> + +<script> + $(function() { + $("body").on("modification", function (event) { + event.div.modal('hide'); + window.location.reload(); + }); + }); +</script> \ No newline at end of file diff --git a/view/unicaen-indicateur/tableau-de-bord/ajouter-indicateur.phtml b/view/unicaen-indicateur/tableau-de-bord/ajouter-indicateur.phtml new file mode 100644 index 0000000000000000000000000000000000000000..4974d6ae5fe448ca90bb5c0ef1da3a393faaa021 --- /dev/null +++ b/view/unicaen-indicateur/tableau-de-bord/ajouter-indicateur.phtml @@ -0,0 +1,49 @@ +<?php + +use UnicaenIndicateur\Entity\Db\Indicateur; +use UnicaenIndicateur\Entity\Db\TableauDeBord; + +/** + * @see \UnicaenIndicateur\Controller\TableauDeBordController::ajouterIndicateurAction() + * @var TableauDeBord $tableau + * @var Indicateur[] $indicateurs + */ + +$in = []; $out = []; +foreach ($indicateurs as $indicateur) { + if ($tableau->hasIndicateur($indicateur)) { + $in[] = $indicateur; + } else { + $out[] = $indicateur; + } +} + +?> + +<?php if (!empty($in)) : ?> + <div class="alert alert-info"> + <span class="icon icon-information"></span> + Liste des indicateurs déjà présents dans le tableau de bord : + <?php + $liste = array_map(function (Indicateur $a) { return $a->getTitre();}, $in); + echo implode(", ",$liste)."."; + ?> + </div> +<?php endif; ?> + +<form method="post" action="<?php echo $this->url('tableau-de-bord/ajouter-indicateur', ["tableu-de-bord" => $tableau->getId()], [], true); ?>"> + <label for="indicateur">Liste des indicateurs disponibles : </label><br> + <select id="indicateur" name="indicateur" class="selectpicker" data-live-search="true"> + <?php foreach ($out as $indicateur) : ?> + <option value="<?php echo $indicateur->getId(); ?>"> + <?php echo $indicateur->getTitre(); ?> + </option> + <?php endforeach; ?> + </select> + <br> +<input type="submit" class="btn btn-primary" value="Ajouter l'indicateur"> +</form> + +<script> + $('select.selectpicker').selectpicker(); +</script> \ No newline at end of file diff --git a/view/unicaen-indicateur/tableau-de-bord/index.phtml b/view/unicaen-indicateur/tableau-de-bord/index.phtml index 5c013815e29abede3e1c945afbff27e0ab400e73..3cd14b06156ebaa3e8d1679d3a8e848bf2044bb0 100644 --- a/view/unicaen-indicateur/tableau-de-bord/index.phtml +++ b/view/unicaen-indicateur/tableau-de-bord/index.phtml @@ -1,14 +1,22 @@ <?php use UnicaenIndicateur\Entity\Db\TableauDeBord; +use UnicaenIndicateur\Provider\Privilege\IndicateurPrivileges; +use UnicaenIndicateur\Provider\Privilege\TableaudebordPrivileges; /** - * @see \UnicaenIndicateur\Controller\TableauDeBordController::afficherAction() + * @see \UnicaenIndicateur\Controller\TableauDeBordController::indexAction() * @var TableauDeBord[] $tableaux */ $this->headTitle("Index des tableaux de bords"); +$canAfficher = $this->isAllowed(TableaudebordPrivileges::getResourceId(TableaudebordPrivileges::AFFICHER)); +$canModifier = $this->isAllowed(TableaudebordPrivileges::getResourceId(TableaudebordPrivileges::EDITER)); +$canGerer = $this->isAllowed(TableaudebordPrivileges::getResourceId(TableaudebordPrivileges::EDITER));; +$canSupprimer = $this->isAllowed(TableaudebordPrivileges::getResourceId(TableaudebordPrivileges::DETRUIRE));; + +$canIndicateurs = $this->isAllowed(IndicateurPrivileges::getResourceId(IndicateurPrivileges::EDITER)); ?> <div class="row"> @@ -26,8 +34,9 @@ $this->headTitle("Index des tableaux de bords"); </div> </div> -<a href="" - class="ajax-modal btn btn-primary"> +<?php /** @see \UnicaenIndicateur\Controller\TableauDeBordController::ajouterAction() */ ?> +<a href="<?php echo $this->url("tableau-de-bord/ajouter", [], [], true); ?>" + class="ajax-modal btn btn-primary" data-event="modification"> <span class="icon icon-ajouter"></span> Créer un tableau de bord </a> @@ -60,12 +69,33 @@ $this->headTitle("Index des tableaux de bords"); <?php echo count($tableau->getIndicateurs()); ?> </td> <td> - <span class="icon icon-voir"></span> - <span class="icon icon-editer"></span> - <span class="icon icon-unchecked text-danger"></span> + <?php if ($canAfficher) : ?> + <a href="<?php echo $this->url('tableau-de-bord/afficher', ['tableau-de-bord' => $tableau->getId()], [], true); ?>"> + <span class="icon icon-voir" title="Afficher le tableau de bord"></span></a> + <?php endif; ?> + <?php if ($canModifier) : ?> + <a href="<?php echo $this->url('tableau-de-bord/modifier', ['tableau-de-bord' => $tableau->getId()], [], true); ?>" + class="ajax-modal" data-event="modification"> + <span class="icon icon-editer" title="Modifier le tableau de bord"></span></a> + <?php endif; ?> + <?php if ($canSupprimer) : ?> + <a href="<?php echo $this->url('tableau-de-bord/supprimer', ['tableau-de-bord' => $tableau->getId()], [], true); ?>" + class="ajax-modal" data-event="modification"> + <span class="icon icon-unchecked text-danger"></span></a> + <?php endif; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> + + +<script> + $(function() { + $("body").on("modification", function (event) { + event.div.modal('hide'); + window.location.reload(); + }); + }); +</script> \ No newline at end of file