From bce831ad3b4943ee146bed31c923f2af8b5fdfd2 Mon Sep 17 00:00:00 2001
From: Jean-Philippe Metivier <jean-philippe.metivier@unicaen.fr>
Date: Tue, 31 Jan 2023 13:52:37 +0100
Subject: [PATCH] Adapatation a l'affichage par 'module'

---
 .../Controller/IndicateurController.php         |  7 ++++---
 .../Controller/TableauDeBordController.php      | 17 +++++++++++++----
 .../TableauDeBord/TableauDeBordHydrator.php     |  2 +-
 .../tableau-de-bord/afficher.phtml              |  3 ++-
 4 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/src/UnicaenIndicateur/Controller/IndicateurController.php b/src/UnicaenIndicateur/Controller/IndicateurController.php
index 37e0d15..d61e8b2 100644
--- a/src/UnicaenIndicateur/Controller/IndicateurController.php
+++ b/src/UnicaenIndicateur/Controller/IndicateurController.php
@@ -66,10 +66,10 @@ class IndicateurController extends AbstractActionController {
     public function creerAction() : ViewModel
     {
         $indicateur = new Indicateur();
+        $namespace = $this->params()->fromQuery('namespace');
 
         $form = $this->getIndicateurForm();
         $form->setAttribute('action', $this->url()->fromRoute('indicateur/creer', [], ['query' => ['namespace' => $namespace]], true));
-        $namespace = $this->params()->fromQuery('namespace');
         if ($namespace) {
             $indicateur->setNamespace($namespace);
             $form->get('namespace')->setAttribute('readonly', true);
@@ -100,9 +100,10 @@ class IndicateurController extends AbstractActionController {
     public function modifierAction(): ViewModel
     {
         $indicateur = $this->getIndicateurService()->getRequestedIndicateur($this);
-        $form = $this->getIndicateurForm();
-        $form->setAttribute('action', $this->url()->fromRoute('indicateur/modifier', [], [], true));
         $namespace = $this->params()->fromQuery('namespace');
+
+        $form = $this->getIndicateurForm();
+        $form->setAttribute('action', $this->url()->fromRoute('indicateur/modifier', ['indicateur' => $indicateur], ['query' => ['namespace' => $namespace]], true));
         if ($namespace) {
             $indicateur->setNamespace($namespace);
             $form->get('namespace')->setAttribute('readonly', true);
diff --git a/src/UnicaenIndicateur/Controller/TableauDeBordController.php b/src/UnicaenIndicateur/Controller/TableauDeBordController.php
index 806bf17..e1c1ce7 100644
--- a/src/UnicaenIndicateur/Controller/TableauDeBordController.php
+++ b/src/UnicaenIndicateur/Controller/TableauDeBordController.php
@@ -28,22 +28,26 @@ class TableauDeBordController extends AbstractActionController
     public function afficherAction() : ViewModel
     {
         $tableau = $this->getTableauDeBordService()->getRequestedTableauDeBord($this);
+        $retour = $this->params()->fromQuery('retour');
 
         return new ViewModel([
             'tableau' => $tableau,
             'indicateurService' => $this->getIndicateurService(),
+            'retour' => $retour,
         ]);
     }
 
     public function ajouterAction() : ViewModel
     {
         $tableau = new TableauDeBord();
-
         $namespace = $this->params()->fromQuery('namespace');
-        if ($namespace) $tableau->setNamespace($namespace);
 
         $form = $this->getTableauDeBordForm();
-        $form->setAttribute('action', $this->url()->fromRoute('tableau-de-bord/ajouter', [], [], true));
+        $form->setAttribute('action', $this->url()->fromRoute('tableau-de-bord/ajouter', [], ['query' => ['namespace' => $namespace]], true));
+        if ($namespace) {
+            $tableau->setNamespace($namespace);
+            $form->get('namespace')->setAttribute('readonly', true);
+        }
         $form->bind($tableau);
 
         $request = $this->getRequest();
@@ -67,9 +71,14 @@ class TableauDeBordController extends AbstractActionController
     public function modifierAction() : ViewModel
     {
         $tableau = $this->getTableauDeBordService()->getRequestedTableauDeBord($this);
+        $namespace = $this->params()->fromQuery('namespace');
 
         $form = $this->getTableauDeBordForm();
-        $form->setAttribute('action', $this->url()->fromRoute('tableau-de-bord/modifier', ['tableau-de-bord' => $tableau->getId()], [], true));
+        $form->setAttribute('action', $this->url()->fromRoute('tableau-de-bord/modifier', ['tableau-de-bord' => $tableau->getId()], ['query' => ['namespace' => $namespace]], true));
+        if ($namespace) {
+            $tableau->setNamespace($namespace);
+            $form->get('namespace')->setAttribute('readonly', true);
+        }
         $form->bind($tableau);
 
         $request = $this->getRequest();
diff --git a/src/UnicaenIndicateur/Form/TableauDeBord/TableauDeBordHydrator.php b/src/UnicaenIndicateur/Form/TableauDeBord/TableauDeBordHydrator.php
index 9be2276..d8df58a 100644
--- a/src/UnicaenIndicateur/Form/TableauDeBord/TableauDeBordHydrator.php
+++ b/src/UnicaenIndicateur/Form/TableauDeBord/TableauDeBordHydrator.php
@@ -16,7 +16,7 @@ class TableauDeBordHydrator implements HydratorInterface {
         $data = [
             'libelle' => $object->getTitre(),
             'description' => $object->getDescription(),
-            'namespance' => $object->getNamespace(),
+            'namespace' => $object->getNamespace(),
             'nb_colonne' => $object->getNbColumn(),
         ];
         return $data;
diff --git a/view/unicaen-indicateur/tableau-de-bord/afficher.phtml b/view/unicaen-indicateur/tableau-de-bord/afficher.phtml
index caba53e..cabe440 100644
--- a/view/unicaen-indicateur/tableau-de-bord/afficher.phtml
+++ b/view/unicaen-indicateur/tableau-de-bord/afficher.phtml
@@ -9,6 +9,7 @@ use UnicaenIndicateur\Service\Indicateur\IndicateurService;
  * @see \UnicaenIndicateur\Controller\TableauDeBordController::afficherAction()
  * @var TableauDeBord $tableau
  * @var IndicateurService $indicateurService
+ * @var ?string $retour
  */
 
 $this->headTitle($tableau?$tableau->getTitre():"Tableau de bord supprimé");
@@ -40,7 +41,7 @@ $width = 12 / ((int) ($tableau?$tableau->getNbColumn():1));
         <div class="col-md-3">
             <?php if ($canIndex) : ?>
                 <?php /** @see \UnicaenIndicateur\Controller\TableauDeBordController::indexAction() */ ?>
-                <a href="<?php echo $this->url('tableau-de-bord', [], [], true); ?>"
+                <a href="<?php echo $retour??$this->url('tableau-de-bord', [], [], true); ?>"
                     class="btn btn-secondary">
                     <span class="icon icon-lister"></span>
                     Accéder aux tableaux de bord
-- 
GitLab