Commit 9e997ff66c8e2f07bb6a6f0e9c38a5b42a2ccd06

Authored by Etienne Pallier
1 parent 2f8edca8
Exists in master and in 1 other branch dev

Amélioration et Bugfixes de Emprunts, Suivis, et Docs attachés

(v3.7.9.11)
README.md
... ... @@ -53,13 +53,10 @@ Logiciel testé et validé sur les configurations suivantes :
53 53  
54 54 VERSION ACTUELLE
55 55  
56   -Date: 26/03/2020
57   -Version: 3.7.9.10
  56 +Date: 27/03/2020
  57 +Version: 3.7.9.11
58 58 Author: EP
59   -Commentaire: EMPRUNTS : Amélioration par refactorisation (1)
60   - Comme pour les docs attachés et les suivis (même principe) :
61   - - refactorisation des actions add() et edit() en une seule add_or_edit() (car très semblables)
62   - - refactorisation des vues add et edit en une seule add_edit (car très semblables)
  59 +Commentaire: Amélioration et Bugfixes de Emprunts, Suivis, et Docs attachés
63 60  
64 61 IMPORTANT :
65 62 - Pour connaitre la version actuelle, taper "./VERSION"
... ... @@ -94,27 +91,33 @@ La liste ci-dessous n'est plus à jour, elle est désormais en ligne ici : https
94 91  
95 92 -----------------------------------------------------------------------------------------------------------
96 93  
  94 +26/03/2020 Version 3.7.9.10 (EP)
  95 + EMPRUNTS : Amélioration par refactorisation (1)
  96 + Comme pour les docs attachés et les suivis (même principe) :
  97 + - refactorisation des actions add() et edit() en une seule add_or_edit() (car très semblables)
  98 + - refactorisation des vues add et edit en une seule add_edit (car très semblables)
  99 +
97 100 25/03/2020 Version 3.7.9.9 (EP)
98   - Suivis : Amélioration par refactorisation (2)
  101 + SUIVIS : Amélioration par refactorisation (2)
99 102 Comme pour les docs attachés (même principe) :
100 103 - refactorisation des actions add() et edit() en une seule add_or_edit() (car très semblables)
101 104 - refactorisation des vues add et edit en une seule add_edit (car très semblables)
102 105 - debugging javascript en cours (car ça marchait pas très bien tout ça...)
103 106  
104 107 24/03/2020 Version 3.7.9.8 (EP)
105   - Suivis : Amélioration et nombreux Bugfixes !!! (1)
  108 + SUIVIS : Amélioration et nombreux Bugfixes !!! (1)
106 109 - pb javascript si métrologie
107 110 - ajout intitulé comme titre
108 111 - vue édition : champs trop larges, champs éditables, champs inutiles...
109 112 - ...
110 113  
111 114 23/03/2020 Version 3.7.9.7 (EP)
112   - Amélioration de la gestion des docs attachés (3)
  115 + DOCS LIÉS : Amélioration de la gestion des docs attachés (3)
113 116 - Enorme simplification grâce à la refactorisation des vues add et edit en une seule add_edit car elles sont très semblables
114 117 - TODO : faire la meme chose pour toutes les vues add et edit des différents objets (materiel, suivi, emprunt...)
115 118  
116 119 20/03/2020 Version 3.7.9.6 (EP)
117   - Amélioration et nombreux bugfixes de la gestion des docs attachés (2)
  120 + DOCS LIÉS : Amélioration et nombreux bugfixes de la gestion des docs attachés (2)
118 121  
119 122 16/03/2020 Version 3.7.9.5 (EP)
120 123 Premiers bugfixes du nouveau site responsive (5)
... ...
src/Controller/DocumentsController.php
... ... @@ -210,22 +210,33 @@ class DocumentsController extends AppController
210 210 ])->first();
211 211 */
212 212 // $materiel
213   - $materiel = $this->Documents->Materiels->get($document->materiel_id);
214   - if ($materiel != null) {
215   - $this->set('materiel', $materiel);
216   - // $suivi
217   - } else {
218   - $suivi = $this->Documents->Suivis->find()
219   - ->where([
220   - 'id =' => $document->suivi_id
221   - ])->first();
222   - $this->set('suivi', $suivi);
  213 + //debug($document->materiel_id);
  214 + //exit;
  215 + if ($document->materiel_id !== null) {
  216 + $parent_controller = 'Materiels';
  217 + $parent_fk = 'materiel_id';
  218 + $PARENT_IS_MATERIEL = true;
223 219 }
224   -
225   - $this->set('document', $document);
  220 + else {
  221 + $parent_controller = 'Suivis';
  222 + $parent_fk = 'suivi_id';
  223 + $PARENT_IS_MATERIEL = false;
  224 + }
  225 + $parent = $this->Documents->$parent_controller->get($document->$parent_fk);
  226 + /*
  227 + // suivi
  228 + $parent = $this->Documents->Suivis->find()
  229 + ->where([
  230 + 'id =' => $document->suivi_id
  231 + ])->first();
  232 + */
  233 + $this->set(compact('document', 'PARENT_IS_MATERIEL', 'parent', 'parent_controller'));
  234 + //$this->set(compact('document', 'parent', 'parent_controller'));
  235 + /* (EP) inutile
226 236 $this->set('_serialize', [
227 237 'document'
228 238 ]);
  239 + */
229 240 }
230 241  
231 242  
... ... @@ -272,6 +283,8 @@ class DocumentsController extends AppController
272 283 if ($this->request->is(['post','patch','put'])) {
273 284  
274 285 $document = $this->Documents->patchEntity($document, $this->request->getData());
  286 + //debug($document);
  287 + //exit;
275 288  
276 289 if ($IS_ADD) {
277 290 /*
... ... @@ -286,17 +299,17 @@ class DocumentsController extends AppController
286 299 }
287 300  
288 301 // SAVE
289   - $action = $IS_ADD ? 'ajouté' : 'modifié';
  302 + $verb = $IS_ADD ? 'ajouté' : 'modifié';
290 303 // - NOT SAVED
291 304 if (! $this->Documents->save($document)) {
292 305 //$this->myDebug($document->getErrors());
293 306 //debug($document->getErrors());
294 307 //debug($document);
295   - $this->Flash->error(__("Le fichier n'a pas pu être $action"));
  308 + $this->Flash->error(__("Le fichier n'a pas pu être $verb"));
296 309 }
297 310 // - SAVED ok
298 311 else {
299   - $this->Flash->success(__("Le fichier a bien été $action"));
  312 + $this->Flash->success(__("Le fichier a bien été $verb"));
300 313 //$id = $document->materiel_id;
301 314 $parent_id = $document->materiel_id;
302 315  
... ...
src/Controller/EmpruntsController.php
... ... @@ -150,11 +150,19 @@ class EmpruntsController extends AppController
150 150 if ($this->request->is(['patch','post','put'])) {
151 151 //$entity = $this->Emprunts->patchEntity($suivi, $this->request->getData());
152 152 $entity = $this->$controller->patchEntity($entity, $this->request->getData());
  153 + $verb = $IS_ADD ? 'ajouté' : 'modifié';
153 154 // SAVED OK
154 155 //if ($this->Emprunts->save($suivi)) {
155   - if ($this->save($entity)) {
156   - $verb = $IS_ADD ? 'ajouté' : 'modifié';
  156 + if ($this->$controller->save($entity)) {
157 157 $this->Flash->success(__("L'emprunt a bien été $verb"));
  158 + $parent_id = $IS_ADD ? $this->request->getParam('pass.0') : $entity->materiel_id;
  159 + // (EP) Redirection vers la vue parente (materiel emprunté) (depuis add ou edit)
  160 + return $this->redirect([
  161 + 'controller' => 'Materiels',
  162 + 'action' => 'view',
  163 + $parent_id
  164 + ]);
  165 + /*
158 166 // ADD
159 167 if ($IS_ADD) return $this->redirect([
160 168 'controller' => 'Materiels',
... ... @@ -163,11 +171,12 @@ class EmpruntsController extends AppController
163 171 ]);
164 172 // EDIT
165 173 else $this->setAction('view', $id);
166   - /* equivalent à
  174 + /S equivalent à
167 175 else return $this->redirect([
168 176 'action' => 'view',
169 177 $id
170 178 ]);
  179 + S/
171 180 */
172 181 }
173 182 // SAVED KO
... ... @@ -225,7 +234,7 @@ class EmpruntsController extends AppController
225 234 ]);
226 235  
227 236 $this->set(compact(
228   - 'IS_ADD', 'IS_EDIT',
  237 + 'IS_ADD',
229 238  
230 239 //'emprunt', // @deprecated
231 240 'entity', // nouveau nom
... ... @@ -428,9 +437,12 @@ class EmpruntsController extends AppController
428 437 } else {
429 438 $this->Flash->error(__('L\'emprunt n\'a pas pu être supprimé.'));
430 439 }
  440 + $this->setAction('index');
  441 + /* equivaut à
431 442 return $this->redirect([
432 443 'action' => 'index'
433 444 ]);
  445 + */
434 446 }
435 447  
436 448 /**
... ...
src/Controller/SuivisController.php
... ... @@ -242,30 +242,47 @@ class SuivisController extends AppController
242 242 $suivi->typemesure = "Indirect";
243 243 $suivi->panne_resolu = false;
244 244 }
  245 + $verb = $IS_ADD ? 'ajouté' : 'modifié';
245 246 // SAVED OK
246 247 if ($this->Suivis->save($suivi)) {
247   - $verb = $IS_ADD ? 'ajouté' : 'modifié';
248 248 $this->Flash->success(__("Le suivi a bien été $verb"));
249   - // ADD
250   - if ($IS_ADD) return $this->redirect([
  249 + // materiel id
  250 + //$parent_id = $IS_ADD ? $this->request->getParam('pass')[0] : $this->request->getData('materiel_id');
  251 + $parent_id = $IS_ADD ? $this->request->getParam('pass.0') : $suivi->materiel_id;
  252 + // (EP) Redirection vers la vue parente (materiel suivi) (depuis add ou edit)
  253 + //if ($IS_ADD) return $this->redirect([
  254 + return $this->redirect([
251 255 'controller' => 'Materiels',
252 256 'action' => 'view',
253   - $this->request->getAttribute('params')['pass'][0]
  257 + $parent_id
  258 + //$this->request->getParam('pass')[0]
  259 + //$this->request->getAttribute('params')['pass'][0]
254 260 ]);
255   - // EDIT
  261 + /* EDIT
  262 + //debug($this->request->getData());
  263 + //else $this->setAction('view',$id);
  264 + // marche pas, pourquoi ???
  265 + //debug($this->referer());
  266 + //else return $this->redirect($this->referer());
  267 + //else $this->setAction('index');
  268 + /S (EP) equivalent à
256 269 else return $this->redirect([
257 270 'action' => 'index',
258 271 $id
259 272 ]);
  273 + S/
  274 + */
260 275 }
261 276 // SAVED KO
262 277 else {
263 278 $this->Flash->error(__("Le suivi n'a pas pu être $verb"));
  279 + /*
264 280 if ($IS_ADD) return $this->redirect([
265 281 'controller' => 'Materiels',
266 282 'action' => 'view',
267 283 $this->request->getAttribute('params')['pass'][0]
268 284 ]);
  285 + */
269 286 }
270 287 } // POST
271 288  
... ... @@ -387,7 +404,7 @@ class SuivisController extends AppController
387 404 //$parent_id = $materiel_id;
388 405 $entity = $suivi;
389 406 $this->set(compact(
390   - 'IS_ADD', 'IS_EDIT',
  407 + 'IS_ADD',
391 408 'unite', 'domaineresp',
392 409  
393 410 //'suivi', // @deprecated
... ... @@ -663,7 +680,7 @@ class SuivisController extends AppController
663 680 'delete'
664 681 ]);
665 682 $suivi = $this->Suivis->get($id);
666   - $id=$suivi->materiel_id;
  683 + $parent_id = $suivi->materiel_id;
667 684 if ($this->Suivis->delete($suivi)) {
668 685 $this->Flash->success(__('Le suivi a bien été supprimé.'));
669 686 } else {
... ... @@ -672,7 +689,7 @@ class SuivisController extends AppController
672 689 return $this->redirect([
673 690 'controller' => 'materiels',
674 691 'action' => 'view',
675   - $id
  692 + $parent_id
676 693 ]);
677 694 }
678 695  
... ...
src/Model/Table/EmpruntsTable.php
... ... @@ -77,7 +77,7 @@ class EmpruntsTable extends AppTable
77 77 */
78 78  
79 79 // Ce champ s'appelle "Pièce" (emprunt interne)
80   - $validator->notEmpty('e_lieu_detail', 'Le champ doit être rempli pour un emprunt interne.',
  80 + $validator->notEmpty('e_lieu_detail', 'Le champ doit être rempli (pour un emprunt interne)',
81 81 function ($context) {
82 82 //if ($context['providers']['entity']['emprunt_interne'] !== null) {
83 83 if ( !empty($context['data']) && !is_null($context['data']['emprunt_interne']) ) {
... ... @@ -216,7 +216,7 @@ class EmpruntsTable extends AppTable
216 216 };
217 217 $rules->add($checkSiteIsGiven, [
218 218 'errorField' => 'site_id',
219   - 'message' => 'Il faut préciser le site'
  219 + 'message' => 'Il faut préciser le site (pour un emprunt interne)'
220 220 ]);
221 221  
222 222  
... ...
src/Template/Documents/add_edit.ctp
1 1 <?php
2 2 // Variables passées à cette vue par le controleur
  3 +
  4 +// - 1) du super Controleur (AppController)
  5 +
  6 +$PROFILE_USER = $PROFILE_USER; // 1
  7 +$PROFILE_RESPONSABLE = $PROFILE_RESPONSABLE; // 2
  8 +$PROFILE_ADMIN = $PROFILE_ADMIN; // 3
  9 +$PROFILE_ADMINPLUS = $PROFILE_ADMINPLUS; // 4
  10 +$PROFILE_SUPERADMIN = $PROFILE_SUPERADMIN; // 5
  11 +$allProfiles = $allProfiles;
  12 +
  13 +// PAS TOUJOURS
  14 +//$_serialize = $_serialize; // True or False
  15 +
  16 +$username = $username;
  17 +$configuration = $configuration;
  18 +$D = $D;
  19 +$priviledgedUser = $priviledgedUser; // ATTENTION, $priviledgedUser = NULL si l'utilisateur courant n'est pas un utilisateur privilégié (pas dans la table "utilisateurs")
  20 +$role = $role;
  21 +$profile = $profile;
  22 +$USER_IS_UTILISATEUR = $USER_IS_UTILISATEUR;
  23 +$USER_IS_RESPONSABLE = $USER_IS_RESPONSABLE;
  24 +$USER_IS_ADMIN = $USER_IS_ADMIN;
  25 +$USER_IS_ADMINPLUS = $USER_IS_ADMINPLUS;
  26 +$USER_IS_SUPERADMIN = $USER_IS_SUPERADMIN;
  27 +$USER_IS_RESPONSABLE_OR_MORE = $USER_IS_RESPONSABLE_OR_MORE;
  28 +$USER_IS_ADMIN_OR_MORE = $USER_IS_ADMIN_OR_MORE;
  29 +$USER_IS_ADMINPLUS_OR_MORE = $USER_IS_ADMINPLUS_OR_MORE;
  30 +
  31 +$hiddenFields = $hiddenFields;
  32 +$mandatoryFields = $mandatoryFields;
  33 +$readOnlyFields = $readOnlyFields;
  34 +$haveDefaultValueFields = $haveDefaultValueFields;
  35 +/*
  36 + debug($hiddenFields);
  37 + debug($mandatoryFields);
  38 + debug($readOnlyFields);
  39 + debug($haveDefaultValueFields);
  40 + */
  41 +
  42 +// Metrologie
  43 +$idGmNa = $idGmNa;
  44 +$idGtNa = $idGtNa;
  45 +
  46 +// ET AUSSI QUELQUES FONCTIONS :
  47 +$displayElement = $displayElement;
  48 +$dateProchainControleVerif = $dateProchainControleVerif;
  49 +
  50 +// - 2) du controleur de cette vue (DocumentsController)
  51 +
3 52 // add or edit mode ? true=add ; false=edit
4 53 $IS_ADD = $IS_ADD;
  54 +$IS_EDIT = !$IS_ADD;
5 55 // objet document : si ADD : vide ; si EDIT : plein
6 56 $document = $document;
7 57 // - Liste des types de doc
... ... @@ -17,7 +67,6 @@ $doc = &#39;un document&#39;;
17 67 if (isset($photo)) {
18 68 $photo = $photo;
19 69 $doc = 'une photo';
20   - $idType = $idType;
21 70 // ADD only:
22 71 if ($IS_ADD) $idType = $idType;
23 72 }
... ... @@ -86,9 +135,9 @@ if (isset($photo)) {
86 135 */
87 136 if ($IS_ADD) {
88 137 //$control_name = isset($materiel) ? 'materiel_id' : 'suivi_id';
89   - $control_name = $parent_controller=='materiels' ? 'materiel_id' : 'suivi_id';
  138 + $field = $parent_controller=='materiels' ? 'materiel_id' : 'suivi_id';
90 139 //$label = 'N° materiel labo';
91   - echo $this->Form->hidden($control_name, [
  140 + echo $this->Form->hidden($field, [
92 141 //'default' => $parent_id,
93 142 'default' => $parent->id,
94 143 ]);
... ... @@ -102,17 +151,16 @@ if (isset($photo)) {
102 151  
103 152 // - Type (hidden si photo)
104 153 echo "<i>(Si vous choisissez le type 'Photo', ce document sera affiché en tête de la fiche du $parent_type associé)</i>";
105   - $f = 'control';
  154 + $control = 'control';
106 155 $default = 1;
107   - if (isset($photo)) {
108   - $f = 'hidden';
  156 + /*
  157 + if ($IS_EDIT) $default = null;
  158 + */
  159 + if ($IS_ADD && isset($photo)) {
  160 + $control = 'hidden';
109 161 $default = $idType;
110 162 }
111   - if (!$IS_ADD) {
112   - $f = 'control';
113   - $default = null;
114   - }
115   - echo $this->Form->$f('type_document_id', [
  163 + echo $this->Form->$control('type_document_id', [
116 164 'label' => 'Type',
117 165 'options' => $typesD,
118 166 'default' => $default // ADD only
... ... @@ -122,8 +170,8 @@ if (isset($photo)) {
122 170 echo $this->Form->control('description');
123 171  
124 172 // - File upload (chemin_file)
125   - $f = $IS_ADD ? 'control' : 'hidden';
126   - echo $this->Form->$f('chemin_file', [
  173 + $control = $IS_ADD ? 'control' : 'hidden';
  174 + echo $this->Form->$control('chemin_file', [
127 175 'label' => 'Fichier (' . substr($configuration->taille_max_doc / (1024 * 1024), 0, 4) . ' Mo max)',
128 176 'type' => 'file'
129 177 ]);
... ...
src/Template/Documents/view.ctp
1 1 <?php
2 2 // Variables passées à cette vue par le controleur
3 3 $document = $document;
  4 +$parent = $parent;
  5 +$parent_controller = $parent_controller;
  6 +$PARENT_IS_MATERIEL = $PARENT_IS_MATERIEL;
  7 +$parent_name = $PARENT_IS_MATERIEL ? 'matériel' : 'suivi';
4 8  
5 9 // Nouvelles variables définies pour cette vue
6 10 $photo_formats = ['png','jpg','jpeg'];
... ... @@ -51,26 +55,32 @@ $photo_formats = [&#39;png&#39;,&#39;jpg&#39;,&#39;jpeg&#39;];
51 55  
52 56 <?php
53 57  
54   - // - Matériel : lien vers le materiel (ou le suivi)
55   - if (isset($materiel)) {
56   - $displayElement(__('Materiel'), $this->Html->link($materiel->designation, [
57   - 'controller' => 'Materiels',
58   - 'action' => 'view',
59   - $materiel->id
60   - ]));
61   - } else if (isset($suivi)) {
62   - $displayElement(__('Suivi'), $this->Html->link('Suivi ' . $suivi->id, [
  58 + // - Parent : lien vers le materiel (ou le suivi)
  59 + // matériel
  60 + //if (isset($materiel)) {
  61 + $parent_ref = $PARENT_IS_MATERIEL ? $parent->designation : $parent->intitule.' (suivi#'.$parent->id.')';
  62 + $displayElement(__("Lié au $parent_name"), $this->Html->link($parent_ref, [
  63 + 'controller' => $parent_controller,
  64 + 'action' => 'view',
  65 + $parent->id
  66 + ]));
  67 + /*
  68 + // suivi
  69 + //else if (isset($suivi)) {
  70 + else {
  71 + $displayElement(__('Suivi'), $this->Html->link('Suivi ' . $parent->id, [
63 72 'controller' => 'Suivis',
64 73 'action' => 'view',
65   - $suivi->id
  74 + $parent->id
66 75 ]));
67 76 }
  77 + */
68 78  
69 79 // - Nom du doc
70 80 $displayElement(__('Nom'), h($document->nom));
71 81  
72 82 // - Type
73   - debug($document);
  83 + //debug($document);
74 84 $displayElement(__('Type'), $document->has('type_document') ? h($document->type_document->nom) : '');
75 85  
76 86 /*
... ...
src/Template/Emprunts/add_edit.ctp
1 1 <?php
2 2 // Variables passées à cette vue par le controleur
3 3  
  4 +// - 1) du super Controleur (AppController)
  5 +
  6 +$PROFILE_USER = $PROFILE_USER; // 1
  7 +$PROFILE_RESPONSABLE = $PROFILE_RESPONSABLE; // 2
  8 +$PROFILE_ADMIN = $PROFILE_ADMIN; // 3
  9 +$PROFILE_ADMINPLUS = $PROFILE_ADMINPLUS; // 4
  10 +$PROFILE_SUPERADMIN = $PROFILE_SUPERADMIN; // 5
  11 +$allProfiles = $allProfiles;
  12 +
  13 +// PAS TOUJOURS
  14 +//$_serialize = $_serialize; // True or False
  15 +
  16 +$username = $username;
  17 +$configuration = $configuration;
  18 +$D = $D;
  19 +$priviledgedUser = $priviledgedUser; // ATTENTION, $priviledgedUser = NULL si l'utilisateur courant n'est pas un utilisateur privilégié (pas dans la table "utilisateurs")
  20 +$role = $role;
  21 +$profile = $profile;
  22 +$USER_IS_UTILISATEUR = $USER_IS_UTILISATEUR;
  23 +$USER_IS_RESPONSABLE = $USER_IS_RESPONSABLE;
  24 +$USER_IS_ADMIN = $USER_IS_ADMIN;
  25 +$USER_IS_ADMINPLUS = $USER_IS_ADMINPLUS;
  26 +$USER_IS_SUPERADMIN = $USER_IS_SUPERADMIN;
  27 +$USER_IS_RESPONSABLE_OR_MORE = $USER_IS_RESPONSABLE_OR_MORE;
  28 +$USER_IS_ADMIN_OR_MORE = $USER_IS_ADMIN_OR_MORE;
  29 +$USER_IS_ADMINPLUS_OR_MORE = $USER_IS_ADMINPLUS_OR_MORE;
  30 +
  31 +$hiddenFields = $hiddenFields;
  32 +$mandatoryFields = $mandatoryFields;
  33 +$readOnlyFields = $readOnlyFields;
  34 +$haveDefaultValueFields = $haveDefaultValueFields;
  35 +/*
  36 +debug($hiddenFields);
  37 +debug($mandatoryFields);
  38 +debug($readOnlyFields);
  39 +debug($haveDefaultValueFields);
  40 +*/
  41 +
  42 +// Metrologie
  43 +$idGmNa = $idGmNa;
  44 +$idGtNa = $idGtNa;
  45 +
  46 +// ET AUSSI QUELQUES FONCTIONS :
  47 +$displayElement = $displayElement;
  48 +$dateProchainControleVerif = $dateProchainControleVerif;
  49 +
  50 +
  51 +// - 2) du controleur de cette vue (EmpruntsController)
  52 +
4 53 // add or edit mode ? true=add ; false=edit
5 54 $IS_ADD = $IS_ADD;
6   -$IS_EDIT = $IS_EDIT;
  55 +$IS_EDIT = !$IS_ADD;
7 56  
8 57 //debug($entity);
9 58 $entity = $entity; // nouveau nom
... ... @@ -26,6 +75,8 @@ $sites = $sites;
26 75  
27 76 $entity_name = 'emprunt';
28 77  
  78 +$parent_controller = 'materiels';
  79 +
29 80 // ADD only
30 81 if ($IS_ADD) {
31 82 $verb = 'Ajouter';
... ... @@ -130,12 +181,17 @@ else {
130 181 echo '<div id="interne" style="margin: 0; padding: 0; ' . $disp_interne . ';">';
131 182  
132 183 // - nom emprunteur interne (hidden only pour Utilisateur)
133   - if (! (in_array($role, [
  184 + /*
  185 + debug($role);
  186 + $IS_USER = $role=='Utilisateur';
  187 + $IS_USER = ! (in_array($role, [
134 188 'Responsable',
135 189 'Administration',
136 190 'Administration Plus',
137 191 'Super Administrateur'
138   - ]))) {
  192 + ]));
  193 + */
  194 + if ($USER_IS_UTILISATEUR) {
139 195 $f = 'hidden';
140 196 $disabled = true;
141 197 }
... ... @@ -217,9 +273,17 @@ else {
217 273  
218 274 </fieldset>
219 275  
220   - <?= $this->Form->submit(__('Valider')) ?>
  276 + <!-- BOUTONS submit & cancel -->
  277 + <!-- <= $this->Form->submit(__('Valider')) ?> -->
  278 + <?php $echoSubmitButtons($this,
  279 + 'view',
  280 + //$parent_id,
  281 + $parent->id,
  282 + $parent_controller
  283 + );
221 284  
222   - <?= $this->Form->end() ?>
  285 + echo $this->Form->end();
  286 + ?>
223 287  
224 288 </div>
225 289  
... ...
src/Template/Materiels/add.ctp
... ... @@ -23,7 +23,7 @@ use Cake\ORM\TableRegistry;
23 23 // 1) FROM AppController:
24 24  
25 25 $PROFILE_USER = $PROFILE_USER;
26   -$PROFILE_ADMIN = $PROFILE_USER;
  26 +$PROFILE_ADMIN = $PROFILE_ADMIN;
27 27 $PROFILE_RESPONSABLE = $PROFILE_RESPONSABLE;
28 28 $PROFILE_ADMINPLUS = $PROFILE_ADMINPLUS;
29 29 $PROFILE_SUPERADMIN = $PROFILE_SUPERADMIN;
... ... @@ -57,8 +57,8 @@ $idGmNa = $idGmNa;
57 57 $idGtNa = $idGtNa;
58 58  
59 59 // ET AUSSI QUELQUES FONCTIONS :
60   -// $displayElement()
61   -// $dateProchainControleVerif()
  60 +$displayElement = $displayElement;
  61 +$dateProchainControleVerif = $dateProchainControleVerif;
62 62  
63 63  
64 64 // 2) FROM my own controller (MaterielController):
... ...
src/Template/Suivis/add_edit.ctp
1 1 <?php
2 2 // Variables passées à cette vue par le controleur
3 3  
  4 +// - 1) du super Controleur (AppController)
  5 +
  6 +$PROFILE_USER = $PROFILE_USER; // 1
  7 +$PROFILE_RESPONSABLE = $PROFILE_RESPONSABLE; // 2
  8 +$PROFILE_ADMIN = $PROFILE_ADMIN; // 3
  9 +$PROFILE_ADMINPLUS = $PROFILE_ADMINPLUS; // 4
  10 +$PROFILE_SUPERADMIN = $PROFILE_SUPERADMIN; // 5
  11 +$allProfiles = $allProfiles;
  12 +
  13 +// PAS TOUJOURS
  14 +//$_serialize = $_serialize; // True or False
  15 +
  16 +$username = $username;
  17 +$configuration = $configuration;
  18 +$D = $D;
  19 +$priviledgedUser = $priviledgedUser; // ATTENTION, $priviledgedUser = NULL si l'utilisateur courant n'est pas un utilisateur privilégié (pas dans la table "utilisateurs")
  20 +$role = $role;
  21 +$profile = $profile;
  22 +$USER_IS_UTILISATEUR = $USER_IS_UTILISATEUR;
  23 +$USER_IS_RESPONSABLE = $USER_IS_RESPONSABLE;
  24 +$USER_IS_ADMIN = $USER_IS_ADMIN;
  25 +$USER_IS_ADMINPLUS = $USER_IS_ADMINPLUS;
  26 +$USER_IS_SUPERADMIN = $USER_IS_SUPERADMIN;
  27 +$USER_IS_RESPONSABLE_OR_MORE = $USER_IS_RESPONSABLE_OR_MORE;
  28 +$USER_IS_ADMIN_OR_MORE = $USER_IS_ADMIN_OR_MORE;
  29 +$USER_IS_ADMINPLUS_OR_MORE = $USER_IS_ADMINPLUS_OR_MORE;
  30 +
  31 +$hiddenFields = $hiddenFields;
  32 +$mandatoryFields = $mandatoryFields;
  33 +$readOnlyFields = $readOnlyFields;
  34 +$haveDefaultValueFields = $haveDefaultValueFields;
  35 +/*
  36 + debug($hiddenFields);
  37 + debug($mandatoryFields);
  38 + debug($readOnlyFields);
  39 + debug($haveDefaultValueFields);
  40 + */
  41 +
  42 +// Metrologie
  43 +$idGmNa = $idGmNa;
  44 +$idGtNa = $idGtNa;
  45 +
  46 +// ET AUSSI QUELQUES FONCTIONS :
  47 +$displayElement = $displayElement;
  48 +$dateProchainControleVerif = $dateProchainControleVerif;
  49 +
  50 +
  51 +// - 2) du controleur de cette vue (SuivisController)
  52 +
4 53 // add or edit mode ? true=add ; false=edit
5 54 $IS_ADD = $IS_ADD;
6   -$IS_EDIT = $IS_EDIT;
  55 +$IS_EDIT = !$IS_ADD;
7 56  
  57 +//debug($entity);
8 58 $entity = $entity; // nouveau nom
9 59 $suivi = $entity; // @deprecated
10 60 $typeSuivis = $typeSuivis;
... ... @@ -23,6 +73,7 @@ $groupesThematiques = $groupesThematiques;
23 73 $groupesMetiers = $groupesMetiers;
24 74  
25 75 $entity_name = 'suivi';
  76 +$parent_controller = 'materiels';
26 77  
27 78 // ADD only
28 79 if ($IS_ADD) {
... ... @@ -122,7 +173,8 @@ else {
122 173 //'disabled' => TRUE
123 174 // ADD only :
124 175 'default' => 3,
125   - 'empty' => "Choisir le type de suivi"
  176 + 'empty' => "Choisir le type de suivi",
  177 + 'required' => 'required'
126 178 ]);
127 179  
128 180 // ADD only
... ... @@ -342,10 +394,17 @@ else {
342 394  
343 395 </fieldset>
344 396  
345   - <!-- Bouton enregistrer -->
346   - <?=$this->Form->submit(__('Enregistrer'))?>
347   -
348   - <?=$this->Form->end()?>
  397 + <!-- BOUTONS submit & cancel -->
  398 + <!-- <= $this->Form->submit(__('Valider')) ?> -->
  399 + <?php $echoSubmitButtons($this,
  400 + 'view',
  401 + //$parent_id,
  402 + $parent->id,
  403 + $parent_controller
  404 + );
  405 +
  406 + echo $this->Form->end();
  407 + ?>
349 408  
350 409 </div>
351 410  
... ...
tests/TestCase/Controller/MaterielsControllerTest.php
... ... @@ -828,7 +828,7 @@ class MaterielsControllerTest extends General {
828 828 $this->get('/materiels/index');
829 829 $this->assertResponseContains("Matos Test 2 VALIDATED", "Le matériel CREATED édité n'a pas pu etre passé à VALIDATED");
830 830  
831   - // 3) Test qu'on NE PEUT PAS modifier un materiel VALIDATED (certains champs, a completer TODO:) (sauf SUPERADMIN)
  831 + // 3) Test qu'on NE PEUT PAS modifier un materiel VALIDATED (certains champs, a completer TODO:)
832 832 $data = [
833 833 'designation' => 'Matos Test 2 VALIDATED updated',
834 834 //'sur_categorie_id' => 1,
... ... @@ -845,8 +845,11 @@ class MaterielsControllerTest extends General {
845 845 ];
846 846 $this->post('/materiels/edit/2', $data);
847 847 $this->get('/materiels/index');
  848 + /* Exception pour Superadmin ? NON
848 849 if ($role=="SUPER") $this->assertResponseContains("Matos Test 2 VALIDATED updated", "Le matériel VALIDATED édité n'a pas pu etre enregistré");
849 850 else $this->assertResponseNotContains("Matos Test 2 VALIDATED updated", "Un matériel VALIDATED ne devrait pas pouvoir être modifié");
  851 + */
  852 + $this->assertResponseNotContains("Matos Test 2 VALIDATED updated", "Un matériel VALIDATED ne devrait pas pouvoir être modifié");
850 853  
851 854 // 4) Test que un edit anormal ne fonctionne pas (erreur sur champ status)
852 855 $data = [
... ...