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)
@@ -53,13 +53,10 @@ Logiciel testé et validé sur les configurations suivantes : @@ -53,13 +53,10 @@ Logiciel testé et validé sur les configurations suivantes :
53 53
54 VERSION ACTUELLE 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 Author: EP 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 IMPORTANT : 61 IMPORTANT :
65 - Pour connaitre la version actuelle, taper "./VERSION" 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,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 25/03/2020 Version 3.7.9.9 (EP) 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 Comme pour les docs attachés (même principe) : 102 Comme pour les docs attachés (même principe) :
100 - refactorisation des actions add() et edit() en une seule add_or_edit() (car très semblables) 103 - refactorisation des actions add() et edit() en une seule add_or_edit() (car très semblables)
101 - refactorisation des vues add et edit en une seule add_edit (car très semblables) 104 - refactorisation des vues add et edit en une seule add_edit (car très semblables)
102 - debugging javascript en cours (car ça marchait pas très bien tout ça...) 105 - debugging javascript en cours (car ça marchait pas très bien tout ça...)
103 106
104 24/03/2020 Version 3.7.9.8 (EP) 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 - pb javascript si métrologie 109 - pb javascript si métrologie
107 - ajout intitulé comme titre 110 - ajout intitulé comme titre
108 - vue édition : champs trop larges, champs éditables, champs inutiles... 111 - vue édition : champs trop larges, champs éditables, champs inutiles...
109 - ... 112 - ...
110 113
111 23/03/2020 Version 3.7.9.7 (EP) 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 - Enorme simplification grâce à la refactorisation des vues add et edit en une seule add_edit car elles sont très semblables 116 - Enorme simplification grâce à la refactorisation des vues add et edit en une seule add_edit car elles sont très semblables
114 - TODO : faire la meme chose pour toutes les vues add et edit des différents objets (materiel, suivi, emprunt...) 117 - TODO : faire la meme chose pour toutes les vues add et edit des différents objets (materiel, suivi, emprunt...)
115 118
116 20/03/2020 Version 3.7.9.6 (EP) 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 16/03/2020 Version 3.7.9.5 (EP) 122 16/03/2020 Version 3.7.9.5 (EP)
120 Premiers bugfixes du nouveau site responsive (5) 123 Premiers bugfixes du nouveau site responsive (5)
src/Controller/DocumentsController.php
@@ -210,22 +210,33 @@ class DocumentsController extends AppController @@ -210,22 +210,33 @@ class DocumentsController extends AppController
210 ])->first(); 210 ])->first();
211 */ 211 */
212 // $materiel 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 $this->set('_serialize', [ 236 $this->set('_serialize', [
227 'document' 237 'document'
228 ]); 238 ]);
  239 + */
229 } 240 }
230 241
231 242
@@ -272,6 +283,8 @@ class DocumentsController extends AppController @@ -272,6 +283,8 @@ class DocumentsController extends AppController
272 if ($this->request->is(['post','patch','put'])) { 283 if ($this->request->is(['post','patch','put'])) {
273 284
274 $document = $this->Documents->patchEntity($document, $this->request->getData()); 285 $document = $this->Documents->patchEntity($document, $this->request->getData());
  286 + //debug($document);
  287 + //exit;
275 288
276 if ($IS_ADD) { 289 if ($IS_ADD) {
277 /* 290 /*
@@ -286,17 +299,17 @@ class DocumentsController extends AppController @@ -286,17 +299,17 @@ class DocumentsController extends AppController
286 } 299 }
287 300
288 // SAVE 301 // SAVE
289 - $action = $IS_ADD ? 'ajouté' : 'modifié'; 302 + $verb = $IS_ADD ? 'ajouté' : 'modifié';
290 // - NOT SAVED 303 // - NOT SAVED
291 if (! $this->Documents->save($document)) { 304 if (! $this->Documents->save($document)) {
292 //$this->myDebug($document->getErrors()); 305 //$this->myDebug($document->getErrors());
293 //debug($document->getErrors()); 306 //debug($document->getErrors());
294 //debug($document); 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 // - SAVED ok 310 // - SAVED ok
298 else { 311 else {
299 - $this->Flash->success(__("Le fichier a bien été $action")); 312 + $this->Flash->success(__("Le fichier a bien été $verb"));
300 //$id = $document->materiel_id; 313 //$id = $document->materiel_id;
301 $parent_id = $document->materiel_id; 314 $parent_id = $document->materiel_id;
302 315
src/Controller/EmpruntsController.php
@@ -150,11 +150,19 @@ class EmpruntsController extends AppController @@ -150,11 +150,19 @@ class EmpruntsController extends AppController
150 if ($this->request->is(['patch','post','put'])) { 150 if ($this->request->is(['patch','post','put'])) {
151 //$entity = $this->Emprunts->patchEntity($suivi, $this->request->getData()); 151 //$entity = $this->Emprunts->patchEntity($suivi, $this->request->getData());
152 $entity = $this->$controller->patchEntity($entity, $this->request->getData()); 152 $entity = $this->$controller->patchEntity($entity, $this->request->getData());
  153 + $verb = $IS_ADD ? 'ajouté' : 'modifié';
153 // SAVED OK 154 // SAVED OK
154 //if ($this->Emprunts->save($suivi)) { 155 //if ($this->Emprunts->save($suivi)) {
155 - if ($this->save($entity)) {  
156 - $verb = $IS_ADD ? 'ajouté' : 'modifié'; 156 + if ($this->$controller->save($entity)) {
157 $this->Flash->success(__("L'emprunt a bien été $verb")); 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 // ADD 166 // ADD
159 if ($IS_ADD) return $this->redirect([ 167 if ($IS_ADD) return $this->redirect([
160 'controller' => 'Materiels', 168 'controller' => 'Materiels',
@@ -163,11 +171,12 @@ class EmpruntsController extends AppController @@ -163,11 +171,12 @@ class EmpruntsController extends AppController
163 ]); 171 ]);
164 // EDIT 172 // EDIT
165 else $this->setAction('view', $id); 173 else $this->setAction('view', $id);
166 - /* equivalent à 174 + /S equivalent à
167 else return $this->redirect([ 175 else return $this->redirect([
168 'action' => 'view', 176 'action' => 'view',
169 $id 177 $id
170 ]); 178 ]);
  179 + S/
171 */ 180 */
172 } 181 }
173 // SAVED KO 182 // SAVED KO
@@ -225,7 +234,7 @@ class EmpruntsController extends AppController @@ -225,7 +234,7 @@ class EmpruntsController extends AppController
225 ]); 234 ]);
226 235
227 $this->set(compact( 236 $this->set(compact(
228 - 'IS_ADD', 'IS_EDIT', 237 + 'IS_ADD',
229 238
230 //'emprunt', // @deprecated 239 //'emprunt', // @deprecated
231 'entity', // nouveau nom 240 'entity', // nouveau nom
@@ -428,9 +437,12 @@ class EmpruntsController extends AppController @@ -428,9 +437,12 @@ class EmpruntsController extends AppController
428 } else { 437 } else {
429 $this->Flash->error(__('L\'emprunt n\'a pas pu être supprimé.')); 438 $this->Flash->error(__('L\'emprunt n\'a pas pu être supprimé.'));
430 } 439 }
  440 + $this->setAction('index');
  441 + /* equivaut à
431 return $this->redirect([ 442 return $this->redirect([
432 'action' => 'index' 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,30 +242,47 @@ class SuivisController extends AppController
242 $suivi->typemesure = "Indirect"; 242 $suivi->typemesure = "Indirect";
243 $suivi->panne_resolu = false; 243 $suivi->panne_resolu = false;
244 } 244 }
  245 + $verb = $IS_ADD ? 'ajouté' : 'modifié';
245 // SAVED OK 246 // SAVED OK
246 if ($this->Suivis->save($suivi)) { 247 if ($this->Suivis->save($suivi)) {
247 - $verb = $IS_ADD ? 'ajouté' : 'modifié';  
248 $this->Flash->success(__("Le suivi a bien été $verb")); 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 'controller' => 'Materiels', 255 'controller' => 'Materiels',
252 'action' => 'view', 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 else return $this->redirect([ 269 else return $this->redirect([
257 'action' => 'index', 270 'action' => 'index',
258 $id 271 $id
259 ]); 272 ]);
  273 + S/
  274 + */
260 } 275 }
261 // SAVED KO 276 // SAVED KO
262 else { 277 else {
263 $this->Flash->error(__("Le suivi n'a pas pu être $verb")); 278 $this->Flash->error(__("Le suivi n'a pas pu être $verb"));
  279 + /*
264 if ($IS_ADD) return $this->redirect([ 280 if ($IS_ADD) return $this->redirect([
265 'controller' => 'Materiels', 281 'controller' => 'Materiels',
266 'action' => 'view', 282 'action' => 'view',
267 $this->request->getAttribute('params')['pass'][0] 283 $this->request->getAttribute('params')['pass'][0]
268 ]); 284 ]);
  285 + */
269 } 286 }
270 } // POST 287 } // POST
271 288
@@ -387,7 +404,7 @@ class SuivisController extends AppController @@ -387,7 +404,7 @@ class SuivisController extends AppController
387 //$parent_id = $materiel_id; 404 //$parent_id = $materiel_id;
388 $entity = $suivi; 405 $entity = $suivi;
389 $this->set(compact( 406 $this->set(compact(
390 - 'IS_ADD', 'IS_EDIT', 407 + 'IS_ADD',
391 'unite', 'domaineresp', 408 'unite', 'domaineresp',
392 409
393 //'suivi', // @deprecated 410 //'suivi', // @deprecated
@@ -663,7 +680,7 @@ class SuivisController extends AppController @@ -663,7 +680,7 @@ class SuivisController extends AppController
663 'delete' 680 'delete'
664 ]); 681 ]);
665 $suivi = $this->Suivis->get($id); 682 $suivi = $this->Suivis->get($id);
666 - $id=$suivi->materiel_id; 683 + $parent_id = $suivi->materiel_id;
667 if ($this->Suivis->delete($suivi)) { 684 if ($this->Suivis->delete($suivi)) {
668 $this->Flash->success(__('Le suivi a bien été supprimé.')); 685 $this->Flash->success(__('Le suivi a bien été supprimé.'));
669 } else { 686 } else {
@@ -672,7 +689,7 @@ class SuivisController extends AppController @@ -672,7 +689,7 @@ class SuivisController extends AppController
672 return $this->redirect([ 689 return $this->redirect([
673 'controller' => 'materiels', 690 'controller' => 'materiels',
674 'action' => 'view', 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,7 +77,7 @@ class EmpruntsTable extends AppTable
77 */ 77 */
78 78
79 // Ce champ s'appelle "Pièce" (emprunt interne) 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 function ($context) { 81 function ($context) {
82 //if ($context['providers']['entity']['emprunt_interne'] !== null) { 82 //if ($context['providers']['entity']['emprunt_interne'] !== null) {
83 if ( !empty($context['data']) && !is_null($context['data']['emprunt_interne']) ) { 83 if ( !empty($context['data']) && !is_null($context['data']['emprunt_interne']) ) {
@@ -216,7 +216,7 @@ class EmpruntsTable extends AppTable @@ -216,7 +216,7 @@ class EmpruntsTable extends AppTable
216 }; 216 };
217 $rules->add($checkSiteIsGiven, [ 217 $rules->add($checkSiteIsGiven, [
218 'errorField' => 'site_id', 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 <?php 1 <?php
2 // Variables passées à cette vue par le controleur 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 // add or edit mode ? true=add ; false=edit 52 // add or edit mode ? true=add ; false=edit
4 $IS_ADD = $IS_ADD; 53 $IS_ADD = $IS_ADD;
  54 +$IS_EDIT = !$IS_ADD;
5 // objet document : si ADD : vide ; si EDIT : plein 55 // objet document : si ADD : vide ; si EDIT : plein
6 $document = $document; 56 $document = $document;
7 // - Liste des types de doc 57 // - Liste des types de doc
@@ -17,7 +67,6 @@ $doc = &#39;un document&#39;; @@ -17,7 +67,6 @@ $doc = &#39;un document&#39;;
17 if (isset($photo)) { 67 if (isset($photo)) {
18 $photo = $photo; 68 $photo = $photo;
19 $doc = 'une photo'; 69 $doc = 'une photo';
20 - $idType = $idType;  
21 // ADD only: 70 // ADD only:
22 if ($IS_ADD) $idType = $idType; 71 if ($IS_ADD) $idType = $idType;
23 } 72 }
@@ -86,9 +135,9 @@ if (isset($photo)) { @@ -86,9 +135,9 @@ if (isset($photo)) {
86 */ 135 */
87 if ($IS_ADD) { 136 if ($IS_ADD) {
88 //$control_name = isset($materiel) ? 'materiel_id' : 'suivi_id'; 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 //$label = 'N° materiel labo'; 139 //$label = 'N° materiel labo';
91 - echo $this->Form->hidden($control_name, [ 140 + echo $this->Form->hidden($field, [
92 //'default' => $parent_id, 141 //'default' => $parent_id,
93 'default' => $parent->id, 142 'default' => $parent->id,
94 ]); 143 ]);
@@ -102,17 +151,16 @@ if (isset($photo)) { @@ -102,17 +151,16 @@ if (isset($photo)) {
102 151
103 // - Type (hidden si photo) 152 // - Type (hidden si photo)
104 echo "<i>(Si vous choisissez le type 'Photo', ce document sera affiché en tête de la fiche du $parent_type associé)</i>"; 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 $default = 1; 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 $default = $idType; 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 'label' => 'Type', 164 'label' => 'Type',
117 'options' => $typesD, 165 'options' => $typesD,
118 'default' => $default // ADD only 166 'default' => $default // ADD only
@@ -122,8 +170,8 @@ if (isset($photo)) { @@ -122,8 +170,8 @@ if (isset($photo)) {
122 echo $this->Form->control('description'); 170 echo $this->Form->control('description');
123 171
124 // - File upload (chemin_file) 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 'label' => 'Fichier (' . substr($configuration->taille_max_doc / (1024 * 1024), 0, 4) . ' Mo max)', 175 'label' => 'Fichier (' . substr($configuration->taille_max_doc / (1024 * 1024), 0, 4) . ' Mo max)',
128 'type' => 'file' 176 'type' => 'file'
129 ]); 177 ]);
src/Template/Documents/view.ctp
1 <?php 1 <?php
2 // Variables passées à cette vue par le controleur 2 // Variables passées à cette vue par le controleur
3 $document = $document; 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 // Nouvelles variables définies pour cette vue 9 // Nouvelles variables définies pour cette vue
6 $photo_formats = ['png','jpg','jpeg']; 10 $photo_formats = ['png','jpg','jpeg'];
@@ -51,26 +55,32 @@ $photo_formats = [&#39;png&#39;,&#39;jpg&#39;,&#39;jpeg&#39;]; @@ -51,26 +55,32 @@ $photo_formats = [&#39;png&#39;,&#39;jpg&#39;,&#39;jpeg&#39;];
51 55
52 <?php 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 'controller' => 'Suivis', 72 'controller' => 'Suivis',
64 'action' => 'view', 73 'action' => 'view',
65 - $suivi->id 74 + $parent->id
66 ])); 75 ]));
67 } 76 }
  77 + */
68 78
69 // - Nom du doc 79 // - Nom du doc
70 $displayElement(__('Nom'), h($document->nom)); 80 $displayElement(__('Nom'), h($document->nom));
71 81
72 // - Type 82 // - Type
73 - debug($document); 83 + //debug($document);
74 $displayElement(__('Type'), $document->has('type_document') ? h($document->type_document->nom) : ''); 84 $displayElement(__('Type'), $document->has('type_document') ? h($document->type_document->nom) : '');
75 85
76 /* 86 /*
src/Template/Emprunts/add_edit.ctp
1 <?php 1 <?php
2 // Variables passées à cette vue par le controleur 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 // add or edit mode ? true=add ; false=edit 53 // add or edit mode ? true=add ; false=edit
5 $IS_ADD = $IS_ADD; 54 $IS_ADD = $IS_ADD;
6 -$IS_EDIT = $IS_EDIT; 55 +$IS_EDIT = !$IS_ADD;
7 56
8 //debug($entity); 57 //debug($entity);
9 $entity = $entity; // nouveau nom 58 $entity = $entity; // nouveau nom
@@ -26,6 +75,8 @@ $sites = $sites; @@ -26,6 +75,8 @@ $sites = $sites;
26 75
27 $entity_name = 'emprunt'; 76 $entity_name = 'emprunt';
28 77
  78 +$parent_controller = 'materiels';
  79 +
29 // ADD only 80 // ADD only
30 if ($IS_ADD) { 81 if ($IS_ADD) {
31 $verb = 'Ajouter'; 82 $verb = 'Ajouter';
@@ -130,12 +181,17 @@ else { @@ -130,12 +181,17 @@ else {
130 echo '<div id="interne" style="margin: 0; padding: 0; ' . $disp_interne . ';">'; 181 echo '<div id="interne" style="margin: 0; padding: 0; ' . $disp_interne . ';">';
131 182
132 // - nom emprunteur interne (hidden only pour Utilisateur) 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 'Responsable', 188 'Responsable',
135 'Administration', 189 'Administration',
136 'Administration Plus', 190 'Administration Plus',
137 'Super Administrateur' 191 'Super Administrateur'
138 - ]))) { 192 + ]));
  193 + */
  194 + if ($USER_IS_UTILISATEUR) {
139 $f = 'hidden'; 195 $f = 'hidden';
140 $disabled = true; 196 $disabled = true;
141 } 197 }
@@ -217,9 +273,17 @@ else { @@ -217,9 +273,17 @@ else {
217 273
218 </fieldset> 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 </div> 288 </div>
225 289
src/Template/Materiels/add.ctp
@@ -23,7 +23,7 @@ use Cake\ORM\TableRegistry; @@ -23,7 +23,7 @@ use Cake\ORM\TableRegistry;
23 // 1) FROM AppController: 23 // 1) FROM AppController:
24 24
25 $PROFILE_USER = $PROFILE_USER; 25 $PROFILE_USER = $PROFILE_USER;
26 -$PROFILE_ADMIN = $PROFILE_USER; 26 +$PROFILE_ADMIN = $PROFILE_ADMIN;
27 $PROFILE_RESPONSABLE = $PROFILE_RESPONSABLE; 27 $PROFILE_RESPONSABLE = $PROFILE_RESPONSABLE;
28 $PROFILE_ADMINPLUS = $PROFILE_ADMINPLUS; 28 $PROFILE_ADMINPLUS = $PROFILE_ADMINPLUS;
29 $PROFILE_SUPERADMIN = $PROFILE_SUPERADMIN; 29 $PROFILE_SUPERADMIN = $PROFILE_SUPERADMIN;
@@ -57,8 +57,8 @@ $idGmNa = $idGmNa; @@ -57,8 +57,8 @@ $idGmNa = $idGmNa;
57 $idGtNa = $idGtNa; 57 $idGtNa = $idGtNa;
58 58
59 // ET AUSSI QUELQUES FONCTIONS : 59 // ET AUSSI QUELQUES FONCTIONS :
60 -// $displayElement()  
61 -// $dateProchainControleVerif() 60 +$displayElement = $displayElement;
  61 +$dateProchainControleVerif = $dateProchainControleVerif;
62 62
63 63
64 // 2) FROM my own controller (MaterielController): 64 // 2) FROM my own controller (MaterielController):
src/Template/Suivis/add_edit.ctp
1 <?php 1 <?php
2 // Variables passées à cette vue par le controleur 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 // add or edit mode ? true=add ; false=edit 53 // add or edit mode ? true=add ; false=edit
5 $IS_ADD = $IS_ADD; 54 $IS_ADD = $IS_ADD;
6 -$IS_EDIT = $IS_EDIT; 55 +$IS_EDIT = !$IS_ADD;
7 56
  57 +//debug($entity);
8 $entity = $entity; // nouveau nom 58 $entity = $entity; // nouveau nom
9 $suivi = $entity; // @deprecated 59 $suivi = $entity; // @deprecated
10 $typeSuivis = $typeSuivis; 60 $typeSuivis = $typeSuivis;
@@ -23,6 +73,7 @@ $groupesThematiques = $groupesThematiques; @@ -23,6 +73,7 @@ $groupesThematiques = $groupesThematiques;
23 $groupesMetiers = $groupesMetiers; 73 $groupesMetiers = $groupesMetiers;
24 74
25 $entity_name = 'suivi'; 75 $entity_name = 'suivi';
  76 +$parent_controller = 'materiels';
26 77
27 // ADD only 78 // ADD only
28 if ($IS_ADD) { 79 if ($IS_ADD) {
@@ -122,7 +173,8 @@ else { @@ -122,7 +173,8 @@ else {
122 //'disabled' => TRUE 173 //'disabled' => TRUE
123 // ADD only : 174 // ADD only :
124 'default' => 3, 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 // ADD only 180 // ADD only
@@ -342,10 +394,17 @@ else { @@ -342,10 +394,17 @@ else {
342 394
343 </fieldset> 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 </div> 409 </div>
351 410
tests/TestCase/Controller/MaterielsControllerTest.php
@@ -828,7 +828,7 @@ class MaterielsControllerTest extends General { @@ -828,7 +828,7 @@ class MaterielsControllerTest extends General {
828 $this->get('/materiels/index'); 828 $this->get('/materiels/index');
829 $this->assertResponseContains("Matos Test 2 VALIDATED", "Le matériel CREATED édité n'a pas pu etre passé à VALIDATED"); 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 $data = [ 832 $data = [
833 'designation' => 'Matos Test 2 VALIDATED updated', 833 'designation' => 'Matos Test 2 VALIDATED updated',
834 //'sur_categorie_id' => 1, 834 //'sur_categorie_id' => 1,
@@ -845,8 +845,11 @@ class MaterielsControllerTest extends General { @@ -845,8 +845,11 @@ class MaterielsControllerTest extends General {
845 ]; 845 ];
846 $this->post('/materiels/edit/2', $data); 846 $this->post('/materiels/edit/2', $data);
847 $this->get('/materiels/index'); 847 $this->get('/materiels/index');
  848 + /* Exception pour Superadmin ? NON
848 if ($role=="SUPER") $this->assertResponseContains("Matos Test 2 VALIDATED updated", "Le matériel VALIDATED édité n'a pas pu etre enregistré"); 849 if ($role=="SUPER") $this->assertResponseContains("Matos Test 2 VALIDATED updated", "Le matériel VALIDATED édité n'a pas pu etre enregistré");
849 else $this->assertResponseNotContains("Matos Test 2 VALIDATED updated", "Un matériel VALIDATED ne devrait pas pouvoir être modifié"); 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 // 4) Test que un edit anormal ne fonctionne pas (erreur sur champ status) 854 // 4) Test que un edit anormal ne fonctionne pas (erreur sur champ status)
852 $data = [ 855 $data = [