Commit 3f348400dc443ff7bd3bee3769d03616eea96490

Authored by Etienne Pallier
1 parent 8aa326ac
Exists in master and in 1 other branch dev

bugfix champs readonly

- refactorisation des champs readonly, bien plus compact et lisible
(clean)
		=> fonction $isReadOnlyField() moved to MyHelper (cleaner)
		=> nouvelle fonction MyHelper->control() pour surcharger
Form->control()

- tous les champs peuvent désormais être readonly via config

- refonte de config/app_labinvent_mandatory_fields.default.yml (plus
exhaustif et cleaner)

=> v5.2.16-3.7.9
CHANGELOG
... ... @@ -352,6 +352,16 @@ Commencer à implémenter le nouveau workflow v5 :
352 352  
353 353 ======= TODO =======
354 354  
  355 + *) SUPERADMIN
  356 + => par défaut, au minimum, mêmes droits que ADMIN
  357 + => mais il peut avoir des droits EN PLUS (jamais en moins)
  358 + Donc, en fait, ADMIN = SUPERADMIN (mais superadmin peut éventuellemet faire encore plus de choses)
  359 + (SUPERADMIN = ADMIN++) (SUPERADMIN >= ADMIN)
  360 +
  361 + *) Uneditable fields : (except ADMIN) (except OWNER ???) (ADMIN = ADMIN + SUPERADMIN) (except RESP, ADMIN) (ADMINONLY = seulement admin, pas superadmin)
  362 + => User (proprio) peut modifier SA fiche même APRÈS commande (mais seulement quelques champs)
  363 + => update matos lifecycle diag
  364 +
355 365 *) Vincent :
356 366 - nom acheteur doit être modifiable pour admin+ (c'est lui par défaut mais peut modif, et après coup aussi, en édition)
357 367 - (admin) supprimer photo d'un matos validé
... ... @@ -433,6 +443,14 @@ Commencer à implémenter le nouveau workflow v5 :
433 443 *)
434 444 Gérer les autorisations (ACL) via fichier de conf
435 445  
  446 +
  447 +
  448 + == CAN WAIT ==
  449 +
  450 + *) instance docker sur hyperion2 (et supprimer old pweb2)
  451 +
  452 + *) src/Application.php
  453 +
436 454 *)
437 455 On doit pouvoir supprimer un devis sur un matériel commandé (TOBEORDERED) à condition qu'il en reste au moins 1
438 456 => du coup, astuce, on peut REMPLACER un devis en ajoutant le nouveau puis en supprimant l'ancien
... ... @@ -443,6 +461,15 @@ Commencer à implémenter le nouveau workflow v5 :
443 461 ======= CHANGES =======
444 462  
445 463 -------
  464 +22/10/2021 v5.2.16-3.7.9
  465 + - (b) bugfix champs readonly
  466 + - refactorisation des champs readonly, bien plus compact et lisible (clean)
  467 + => fonction $isReadOnlyField() moved to MyHelper (cleaner)
  468 + => nouvelle fonction MyHelper->control() pour surcharger Form->control()
  469 + - tous les champs peuvent désormais être readonly via config
  470 + - refonte de config/app_labinvent_mandatory_fields.default.yml (plus exhaustif et cleaner)
  471 +
  472 +-------
446 473 20/10/2021 v5.2.15-3.7.9
447 474 - (b) bugfix gestionnaire_ref_email pas initialisé dans AppController
448 475 - (b) message debug dans pdo_error.ctp
... ...
README.md
... ... @@ -52,8 +52,8 @@ Logiciel testé et validé sur les configurations suivantes :
52 52  
53 53 --------------------------------------------------------------------------------------------
54 54  
55   -Date: 20/10/2021
56   -Version: v5.2.15-3.7.9
  55 +Date: 22/10/2021
  56 +Version: v5.2.16-3.7.9
57 57  
58 58  
59 59  
... ...
config/app_labinvent_mandatory_fields.default.yml
... ... @@ -13,10 +13,10 @@ HAS_ORDER_BUTTON: true
13 13 # ************** LOT 0 ****************
14 14 # *************************************
15 15  
16   -# Infos minimum obligatoires pour créer une fiche Matériel
17   -# - Aucun champ obligatoire
  16 +# Champs OBLIGATOIRES pour CRÉER une fiche Matériel
  17 +# - Aucun champ
18 18 #MANDATORY_FIELDS_LOT0: []
19   -# - Au moins un champ obligatoire
  19 +# - Au moins un champ
20 20 MANDATORY_FIELDS_LOT0:
21 21  
22 22 # Infos toujours obligatoires (cachées car calculées automatiquement)
... ... @@ -44,7 +44,7 @@ MANDATORY_FIELDS_LOT0:
44 44 # ******* END OF MANDATORY_FIELDS_LOT0 ********
45 45  
46 46  
47   -# Liste des champs qui sont NON MODIFIABLES après la création d'une fiche
  47 +# Liste des champs qui sont NON MODIFIABLES APRÈS la CRÉATION d'une fiche
48 48 # A priori par défaut : aucun (mais ca reste configurable)
49 49 UNEDITABLE_FIELDS_LOT0: []
50 50  
... ... @@ -56,11 +56,11 @@ UNEDITABLE_FIELDS_LOT0: []
56 56 # ************** LOT 1 ****************
57 57 # *************************************
58 58  
59   -# Infos obligatoires POUR passer la commande (La commande est une action optionnelle)
60   -# Ne mettre ici QUE les infos obligatoires SUPPLEMENTAIRES à celles de LOT0
61   -# - Aucun champ obligatoire
  59 +# Champs OBLIGATOIRES POUR passer la COMMANDE (La commande est une action optionnelle)
  60 +# Attention, les champs MANDATORY_FIELDS_LOT0 sont aussi pris en compte (donc, inutile de les répéter)
  61 +# - Aucun champ
62 62 #MANDATORY_FIELDS_LOT1: []
63   -# - Au moins un champ obligatoire
  63 +# - Au moins un champ
64 64 MANDATORY_FIELDS_LOT1:
65 65  
66 66 # Infos toujours obligatoires (cachées car calculées automatiquement)
... ... @@ -95,7 +95,7 @@ MANDATORY_FIELDS_LOT1:
95 95 prix_ht: 'Prix HT'
96 96  
97 97 # Optionnel car par défaut = acheteur
98   - #'resp_credit' => 'Responsable du crédit',
  98 + #resp_credit: 'Responsable du crédit'
99 99  
100 100 #TODO: a remettre ? avec "je ne sais pas"
101 101 gestionnaire_id: 'Gestionnaire de référence'
... ... @@ -118,8 +118,11 @@ MANDATORY_FIELDS_LOT1:
118 118 # ******* END OF MANDATORY_FIELDS_LOT1 ********
119 119  
120 120  
121   -# Liste des champs NON MODIFIABLES APRÈS la demande d'achat (c'est à dire APRÈS avoir fait la "commande")
  121 +# Liste des champs NON MODIFIABLES APRÈS la demande d'ACHAT (c'est à dire APRÈS avoir fait la "COMMANDE")
  122 +# Attention, les champs UNEDITABLE_FIELDS_LOT0 sont aussi pris en compte (donc, inutile de les répéter)
  123 +# - Aucun champ
122 124 #UNEDITABLE_FIELDS_LOT1: []
  125 +# - Au moins un champ
123 126 UNEDITABLE_FIELDS_LOT1:
124 127  
125 128 #- designation
... ... @@ -139,7 +142,7 @@ UNEDITABLE_FIELDS_LOT1:
139 142 - email_responsable
140 143  
141 144 # (par défaut = acheteur)
142   - - resp_credit
  145 + #- resp_credit
143 146  
144 147 #- organisme_id
145 148  
... ... @@ -148,7 +151,7 @@ UNEDITABLE_FIELDS_LOT1:
148 151 #- gestionnaire_id
149 152  
150 153 # Fournisseur
151   - - fournisseur_id
  154 + #- fournisseur_id
152 155  
153 156 # Utilisé par la Gestion pour remplir le champ eotp
154 157 #- budgets
... ... @@ -166,11 +169,11 @@ UNEDITABLE_FIELDS_LOT1:
166 169 # ************** LOT 2 ****************
167 170 # *************************************
168 171  
169   -# Infos obligatoires POUR valider la livraison
170   -# Ne mettre ici QUE les infos obligatoires SUPPLEMENTAIRES à celles de LOT1
171   -# - Aucun champ obligatoire
  172 +# Champs OBLIGATOIRES POUR VALIDER la livraison
  173 +# Attention, les champs MANDATORY_FIELDS_LOT1 sont aussi pris en compte (donc, inutile de les répéter)
  174 +# - Aucun champ
172 175 #MANDATORY_FIELDS_LOT2: []
173   -# - Au moins un champ obligatoire
  176 +# - Au moins un champ
174 177 MANDATORY_FIELDS_LOT2:
175 178  
176 179 #//'fournisseur_id' => 'Fournisseur',
... ... @@ -206,47 +209,90 @@ MANDATORY_FIELDS_LOT2:
206 209 # ******* END OF $MANDATORY_FIELDS_LOT2 ********
207 210  
208 211  
209   -# Liste des champs qui sont NON MODIFIABLES APRÈS la validation (livraison)
  212 +# Liste des champs qui sont NON MODIFIABLES APRÈS la VALIDATION (livraison)
  213 +# Attention, les champs UNEDITABLE_FIELDS_LOT1 sont aussi pris en compte
  214 +# - Aucun champ
210 215 #UNEDITABLE_FIELDS_LOT2: []
  216 +# - Au moins un champ
211 217 UNEDITABLE_FIELDS_LOT2:
212 218  
213 219 # Champs généraux :
214 220  
  221 + #- designation
  222 +
  223 + #- will_stay
  224 +
  225 + #- description
  226 +
  227 + #- hors_service
  228 +
215 229 - sur_categorie_id
216 230  
217 231 - categorie_id
218 232  
219   - - sous_categorie_id
  233 + #- sous_categorie_id
220 234  
221   - #- numero_serie
  235 + #- groupes_thematique_id
  236 +
  237 + #- groupes_metier_id
  238 +
  239 + #- projet_id
  240 +
  241 + #- materiel_technique
  242 + #- materiel_administratif
  243 +
  244 + #- metrologie
222 245  
223   - - materiel_administratif
  246 + #- etiquette
224 247  
225   - - materiel_technique
  248 + #- site_id
226 249  
227   - - site_id
  250 + #- lieu_detail
228 251  
229 252 - date_acquisition
230 253  
231 254 - date_reception
232 255  
233   - - organisme_id
  256 + # Garantie
  257 + #- duree_garantie
  258 + #- unite_duree_garantie
  259 + #- date_fin_garantie
  260 +
  261 + #- status
  262 +
  263 + #- numero_serie
  264 +
  265 + #- nom_user
  266 + #- nom_responsable
  267 + # (rempli automatiquement)
  268 + #- email_responsable
  269 + #- nom_ancien_responsable
234 270  
235   - - prix_ht
  271 + #- resp_credit
  272 +
  273 + #- gestionnaire_id
236 274  
237   - - gestionnaire_id
  275 + #- fournisseur_id
238 276  
239   - - budgets
  277 + #- organisme_id
240 278  
241   - # Champs administratifs :
  279 + #- prix_ht
  280 +
  281 + #- budgets
  282 +
  283 +
  284 + # #### CHAMPS ADMINISTRATIFS : ####
242 285  
243   - #- eotp
  286 + - eotp
244 287  
245 288 - numero_commande
246 289  
247   - - numero_inventaire_organisme
  290 + # READONLY toujours car généré automatiquement
  291 + - numero_laboratoire
  292 +
  293 + #- numero_inventaire_organisme
248 294  
249   - - numero_inventaire_old
  295 + #- numero_inventaire_old
250 296  
251 297  
252 298  
... ...
src/Controller/AppController.php
... ... @@ -1650,11 +1650,9 @@ class AppController extends Controller
1650 1650 return $this->userHasRole($expectedRole, true);
1651 1651 }
1652 1652  
1653   - public function USER_IS_ADMIN_AT_LEAST()
1654   - {
1655   - return $this->userHasRoleAtLeast('Administration');
1656   - }
1657   -
  1653 + public function USER_IS_ADMIN_OR_MORE() { return $this->userHasRoleAtLeast('Administration'); }
  1654 + public function USER_IS_ADMIN_AT_LEAST() { return $this->USER_IS_ADMIN_OR_MORE(); }
  1655 +
1658 1656 public function USER_IS_RESP_AT_LEAST()
1659 1657 {
1660 1658 return $this->userHasRoleAtLeast('Responsable');
... ...
src/Controller/DocumentsController.php
... ... @@ -82,6 +82,11 @@ class DocumentsController extends AppController
82 82 //$this->setAuthorizationsForAction('add', 'edit');
83 83  
84 84 // Action 'edit' (modif d'une entité) => comme pour 'add'
  85 + /*
  86 + * Cette règle est simple...
  87 + * En fait, c'est plus complexe que ça :
  88 + * => voir la remarque pour l'action "delete" ci-dessous
  89 + */
85 90 $this->setAuthorizationsForAction('edit', 'add', [
86 91 'admin' => 0,
87 92 'super' => ['default',0]
... ... @@ -673,9 +678,10 @@ class DocumentsController extends AppController
673 678 $materiel = $this->Documents->Materiels->get($parent_id);
674 679  
675 680 /* ATTENTION, règles de gestion complexes :
676   - * (1) => On ne doit pas pouvoir modifier ou supprimer un DEVIS associé à un matériel de status TOBEORDERED (commandé)
677   - * (2) => On ne doit pouvoir modifier ou supprimer AUCUN document associé à un matériel de status VALIDATED (validé)
  681 + * (1) => On ne doit pas pouvoir (sauf admin+) modifier ou supprimer un DEVIS associé à un matériel de status TOBEORDERED (commandé)
  682 + * (2) => On ne doit pouvoir (sauf admin+) modifier ou supprimer AUCUN document associé à un matériel de status VALIDATED (validé)
678 683 */
  684 + //if ( ! $this->USER_IS_ADMIN_OR_MORE() ) {
679 685 $CANNOT_DELETE_ERROR_MSG = '';
680 686 // (Règle 1)
681 687 if ($materiel->is_tobeordered && $document->is_devis) $CANNOT_DELETE_ERROR_MSG = "Ce matériel est en Commande, vous ne pouvez donc pas supprimer son devis";
... ... @@ -690,6 +696,7 @@ class DocumentsController extends AppController
690 696 $parent_id
691 697 ]);
692 698 }
  699 + //}
693 700  
694 701 if ($document->photo) {
695 702 /*
... ...
src/Controller/MaterielsController.php
... ... @@ -2605,18 +2605,23 @@ class MaterielsController extends AppController {
2605 2605 }
2606 2606 }
2607 2607  
  2608 + /* (EP 2021 10) moved to MyHelper
2608 2609 // (EP) Fonction utilisée dans la vue, déclarée ici pour éviter les problèmes de tests
2609 2610 $isReadonlyField = function ($fieldName, $myReadonlyFields) {
  2611 + // Fonctionnement inversé : TOUS readonly (*) SAUF certains champs (listés)
2610 2612 if (!empty($myReadonlyFields) && $myReadonlyFields[0]=='*') {
2611 2613 $modifiableFields = $myReadonlyFields;
2612 2614 array_shift($modifiableFields);
2613 2615 return ! in_array($fieldName, $modifiableFields);
2614 2616 }
2615   - return ( !empty($materiel->$fieldName) && in_array($fieldName, $myReadonlyFields) );
  2617 + // Fonctionnement normal :
  2618 + //return ( !empty($materiel->$fieldName) && in_array($fieldName, $myReadonlyFields) );
  2619 + return ( in_array($fieldName, $myReadonlyFields) );
2616 2620 };
2617   -
2618 2621 //$this->set('isReadonlyField', $isReadonlyField);
2619 2622 $this->set(compact('isReadonlyField'));
  2623 + */
  2624 +
2620 2625 $this->set('IS_CREATED', $materiel->status == 'CREATED');
2621 2626 $this->set('IS_VALIDATED', $materiel->status == 'VALIDATED');
2622 2627 $this->set('IS_ARCHIVED', $materiel->status == 'ARCHIVED');
... ...
src/Template/Materiels/add_edit.ctp
... ... @@ -104,6 +104,7 @@ $projets = $projets;
104 104 //foreach($projets as $k=>$p) debug($k);
105 105 //foreach($surCategories as $k=>$e) debug($k);
106 106 $readonlyFields = $readonlyFields;
  107 +//debug($readonlyFields);
107 108  
108 109  
109 110 // ADD only
... ... @@ -117,7 +118,6 @@ else {
117 118 $verb = 'Éditer';
118 119 $icon = 'icon-edit';
119 120 $redirect_action = 'view';
120   - $isReadonlyField = $isReadonlyField; // function
121 121 //$numMateriel = $numMateriel;
122 122 if (isset($nom_ancien_responsable)) $nom_ancien_responsable = $nom_ancien_responsable;
123 123 $IS_CREATED = $IS_CREATED;
... ... @@ -127,6 +127,8 @@ else {
127 127 $role = $role;
128 128 $designation_edit = $designation_edit;
129 129 $lieu_detail_edit = $lieu_detail_edit; // [12007 => '']
  130 +
  131 + //$isReadonlyField = $isReadonlyField; // function
130 132 if ($IS_ARCHIVED) $readonlyFields = array('*','status');
131 133 } // EDIT only
132 134 //debug($readonlyFields);
... ... @@ -361,7 +363,10 @@ if (isset($cpMateriel)) {
361 363 */
362 364  
363 365 // - designation
364   - echo $this->Form->control('designation', [
  366 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'designation', 'Désignation');
  367 + /*
  368 + $f = 'designation';
  369 + echo $this->Form->control($f, [
365 370 //'type' => 'text',
366 371 'label' => 'Désignation',
367 372 //'default' => $Designation,
... ... @@ -370,8 +375,9 @@ if (isset($cpMateriel)) {
370 375 //'default' => $designations,
371 376 //'default' => $designations->toArray(),
372 377 // EDIT only
373   - 'disabled' => $IS_ADD ? false : $isReadonlyField('designation', $readonlyFields)
  378 + 'disabled' => $IS_ADD ? false : $this->MyHelper->isReadonlyField($f, $readonlyFields)
374 379 ]);
  380 + */
375 381 /*
376 382 $value = $IS_EDIT ? array_shift($designation_edit) : '';
377 383 ?>
... ... @@ -386,21 +392,32 @@ if (isset($cpMateriel)) {
386 392 */
387 393  
388 394 // will_stay
389   - echo $this->Form->control('will_stay', [
  395 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'will_stay', 'Ce matériel restera au laboratoire');
  396 + /*
  397 + $f = 'will_stay';
  398 + echo $this->Form->control($f, [
390 399 'label' => 'Ce matériel restera au laboratoire',
391 400 // Inutile, défini via controller
392 401 //'default' => 1,
  402 + //'disabled' => $IS_ADD ? false : $isReadonlyField($f, $readonlyFields)
  403 + 'disabled' => $IS_ADD ? false : $this->MyHelper->isReadonlyField($f, $readonlyFields)
393 404 ]);
  405 + */
  406 +
394 407  
395 408 // - Description
396   - echo $this->Form->control('description', [
  409 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'description');
  410 + /*
  411 + $f = 'description';
  412 + echo $this->Form->control($f, [
397 413 'label' => 'Description',
398 414 // ADD only
399 415 //'default' => $Description
400 416 /////'default' => $materiel->description,
401 417 // EDIT only
402   - 'disabled' => $IS_ADD ? false : $isReadonlyField('description', $readonlyFields)
  418 + 'disabled' => $IS_ADD ? false : $isReadonlyField($f, $readonlyFields)
403 419 ]);
  420 + */
404 421  
405 422 // - materiel HS ?
406 423 if ($IS_EDIT &&
... ... @@ -412,7 +429,14 @@ if (isset($cpMateriel)) {
412 429 $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL
413 430 )
414 431 )
415   - echo $this->Form->control('hors_service', ['label' => 'hors service']);
  432 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'hors_service', 'hors service');
  433 + /*
  434 + $f = 'hors_service';
  435 + echo $this->Form->control($f, [
  436 + 'label' => 'hors service',
  437 + 'disabled' => $IS_ADD ? false : $isReadonlyField($f, $readonlyFields)
  438 + ]);
  439 + */
416 440 /*
417 441 * if (in_array($role, [
418 442 * 'Administration',
... ... @@ -431,10 +455,15 @@ if (isset($cpMateriel)) {
431 455  
432 456 <div id='domaine_categ_souscateg'><fieldset>
433 457 <legend>Domaine, catégorie, et sous-catégorie :</legend>
  458 +
434 459 <?php
435 460 // - DOMAINE (SUR-CATEGORIE)
436 461 //debug($surCategories);
437   - echo $this->Form->control('sur_categorie_id', [
  462 + //debug($isReadonlyField('sur_categorie_id', $readonlyFields));
  463 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'sur_categorie_id', 'Domaine', 'Choisir un domaine');
  464 + /*
  465 + $f = 'sur_categorie_id';
  466 + echo $this->Form->control($f, [
438 467 'label' => 'Domaine',
439 468 //'style' => 'width: 260px',
440 469 // inutile car automatique si le nom de la variable passée par le controleur respecte la norme
... ... @@ -445,8 +474,10 @@ if (isset($cpMateriel)) {
445 474 //////'default' => $materiel->sur_categorie_id,
446 475 // EDIT only
447 476 //'readonly' => $IS_ADD ? false : $isReadonlyField('sur_categorie_id', $readonlyFields),
448   - 'disabled' => $IS_ADD ? false : $isReadonlyField('sur_categorie_id', $readonlyFields)
  477 + 'disabled' => $IS_ADD ? false : $isReadonlyField($f, $readonlyFields)
449 478 ]);
  479 + */
  480 +
450 481 // - CATEGORIE
451 482 //$categs = $categories;
452 483 /*
... ... @@ -459,6 +490,8 @@ if (isset($cpMateriel)) {
459 490 }
460 491 //$categs = [];
461 492 */
  493 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'categorie_id', 'Catégorie', 'Choisir une catégorie');
  494 + /*
462 495 echo $this->Form->control('categorie_id', [
463 496 'label' => 'Catégorie',
464 497 //'style' => 'width: 380px',
... ... @@ -468,10 +501,12 @@ if (isset($cpMateriel)) {
468 501 'empty' => 'Choisir une catégorie',
469 502 //'default' => $Categ_id
470 503 // ADD only
471   - //////'default' => $materiel->categorie_id,
  504 + ////'default' => $materiel->categorie_id,
472 505 // EDIT only
473   - 'disabled' => $IS_ADD ? false : $isReadonlyField('categorie_id', $readonlyFields)
  506 + //'disabled' => $IS_ADD ? false : $isReadonlyField('categorie_id', $readonlyFields)
474 507 ]);
  508 + */
  509 +
475 510 // - SOUS-CATEGORIE (by default, list is empty)
476 511 //$souscategs = $sousCategories;
477 512 /*
... ... @@ -486,6 +521,8 @@ if (isset($cpMateriel)) {
486 521 ]);
487 522 }
488 523 */
  524 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'sous_categorie_id', 'Sous-catégorie', 'Choisir une sous-catégorie');
  525 + /*
489 526 echo $this->Form->control('sous_categorie_id', [
490 527 'label' => 'Sous-catégorie',
491 528 //'style' => 'width: 380px',
... ... @@ -500,6 +537,8 @@ if (isset($cpMateriel)) {
500 537 'disabled' => $IS_ADD ? false : $isReadonlyField('sous_categorie_id', $readonlyFields)
501 538  
502 539 ]);
  540 + */
  541 +
503 542 echo "</fieldset></div>"; // 'domaine_categ_souscateg'
504 543  
505 544  
... ... @@ -509,7 +548,10 @@ if (isset($cpMateriel)) {
509 548 $nom_groupe_metier = $configuration->nom_groupe_metier;
510 549 echo "<div id='groupes_metier_thematique'><fieldset>";
511 550 echo "<legend>Le matériel peut-il être rattaché à un ".lcfirst($nom_groupe_thematique)." ou/et un ".lcfirst($nom_groupe_metier)." ?</legend>";
  551 +
512 552 // - Groupe thématique
  553 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'groupes_thematique_id', $nom_groupe_thematique, 'N/A');
  554 + /*
513 555 echo $this->Form->control('groupes_thematique_id', [
514 556 'label' => $nom_groupe_thematique,
515 557 'empty' => 'N/A',
... ... @@ -520,7 +562,11 @@ if (isset($cpMateriel)) {
520 562 // EDIT only
521 563 'disabled' => $IS_ADD ? false : $isReadonlyField('groupes_thematique_id', $readonlyFields),
522 564 ]);
  565 + */
  566 +
523 567 // - Groupe métier
  568 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'groupes_metier_id', $nom_groupe_metier, 'N/A');
  569 + /*
524 570 echo $this->Form->control('groupes_metier_id', [
525 571 'label' => $nom_groupe_metier,
526 572 'empty' => 'N/A',
... ... @@ -531,6 +577,8 @@ if (isset($cpMateriel)) {
531 577 // EDIT only
532 578 'disabled' => $IS_ADD ? false : $isReadonlyField('groupes_metier_id', $readonlyFields),
533 579 ]);
  580 + */
  581 +
534 582 echo "</fieldset></div>"; // 'domaine_categ_souscateg'
535 583 ?>
536 584  
... ... @@ -540,6 +588,8 @@ if (isset($cpMateriel)) {
540 588 <div id='projet'><fieldset>
541 589 <legend>Le matériel peut-il être rattaché à un projet ?</legend>
542 590 <?php
  591 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'projet_id', null, 'N/A');
  592 + /*
543 593 echo $this->Form->control('projet_id', [
544 594 'label' => 'Projet',
545 595 'empty' => 'N/A',
... ... @@ -551,10 +601,13 @@ if (isset($cpMateriel)) {
551 601 //'default' => $Sous_categ_id
552 602 //'default' => $materiel->projet_id,
553 603 ]);
  604 + */
554 605 echo "</fieldset></div>"; // 'domaine_categ_souscateg'
555 606  
556 607  
557 608 // - Technique et/ou Inventoriable ?
  609 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'materiel_technique', "Technique (pas pour l'inventaire officiel)");
  610 + /*
558 611 echo $this->Form->control('materiel_technique', [
559 612 'label' => "Technique (pas pour l'inventaire officiel)",
560 613 // ADD only
... ... @@ -563,6 +616,7 @@ if (isset($cpMateriel)) {
563 616 // EDIT only
564 617 'disabled' => $IS_ADD ? false : $isReadonlyField('materiel_technique', $readonlyFields)
565 618 ]);
  619 + */
566 620 echo "\n";
567 621 /*
568 622 echo $this->Form->control('materiel_administratif', [
... ... @@ -579,12 +633,15 @@ if (isset($cpMateriel)) {
579 633 //if ($configuration->metrologie == '1') {
580 634 if ($configuration->metrologie) {
581 635 echo "\n";
582   - echo "<div id='metro' > ";
583   - echo $this->Form->control('metrologie', [
584   - 'label' => 'Suivi en métrologie',
585   - // ADD only
586   - 'default' => false
587   - ]);
  636 + echo "<div id='metro'>";
  637 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'metrologie', "Suivi en métrologie");
  638 + /*
  639 + echo $this->Form->control('metrologie', [
  640 + 'label' => 'Suivi en métrologie',
  641 + // ADD only
  642 + 'default' => false
  643 + ]);
  644 + */
588 645 echo "</div>";
589 646 }
590 647  
... ... @@ -599,14 +656,19 @@ if (isset($cpMateriel)) {
599 656 * 'Super Administrateur'
600 657 * ])) {
601 658 */
  659 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'etiquette', "Étiquette posée");
  660 + /*
602 661 echo $this->Form->control('etiquette', [
603 662 'label' => 'Etiquette posée',
604 663 // EDIT only
605 664 'disabled' => $IS_ADD ? false : $isReadonlyField('etiquette', $readonlyFields)
606 665 ]);
  666 + */
607 667 }
608 668  
609 669 // - Site
  670 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'site_id', null, 'N/A');
  671 + /*
610 672 echo $this->Form->control('site_id', [
611 673 // inutile car automatique si le nom de la variable passée par le controleur respecte la norme
612 674 //'options' => $sites,
... ... @@ -618,6 +680,7 @@ if (isset($cpMateriel)) {
618 680 // EDIT only
619 681 'disabled' => $IS_ADD ? false : $isReadonlyField('site_id', $readonlyFields)
620 682 ]);
  683 + */
621 684  
622 685 // - Detail lieu stockage (avec affichage auto des lieux déjà saisis)
623 686 /* OLD
... ... @@ -646,9 +709,19 @@ if (isset($cpMateriel)) {
646 709 </div>
647 710 <?php
648 711  
649   - $comment = 'Entrez une date (JJ/MM/AAAA)';
650 712  
  713 +
  714 + // DATES achat et livraison
  715 + $comment = 'Entrez une date (JJ/MM/AAAA)';
  716 +
651 717 // - Date acquisition
  718 + // php5...
  719 + $value = $IS_ADD ? null : ($materiel->date_acquisition ? $materiel->date_acquisition->format('d/m/Y') : null);
  720 + echo $this->MyHelper->control(
  721 + $IS_ADD, $readonlyFields, 'date_acquisition', 'Date commande (BC)',
  722 + null, date("d/m/Y"), 'text', 'datepicker', $comment, $value
  723 + );
  724 + /*
652 725 echo $this->Form->control('date_acquisition', [
653 726 //echo $this->Form->date('date_acquisition', [
654 727 'type' => 'text',
... ... @@ -670,10 +743,18 @@ if (isset($cpMateriel)) {
670 743 // EDIT only
671 744 'disabled' => $IS_ADD ? false : $isReadonlyField('date_acquisition', $readonlyFields)
672 745 ]);
  746 + */
673 747  
674 748 // - Date réception
675 749 $value_edit = null;
676 750 if ($IS_EDIT && $materiel->date_reception) $value_edit = $materiel->date_reception->format('d/m/Y');
  751 + // php5...
  752 + $value = $IS_ADD ? null : $value_edit;
  753 + echo $this->MyHelper->control(
  754 + $IS_ADD, $readonlyFields, 'date_reception', 'Date de livraison',
  755 + true, null, $type='text', $class='datepicker', $comment, $value
  756 + );
  757 + /*
677 758 echo $this->Form->control('date_reception', [
678 759 'type' => 'text',
679 760 'label' => 'Date de livraison',
... ... @@ -690,9 +771,13 @@ if (isset($cpMateriel)) {
690 771 // EDIT only
691 772 'disabled' => $IS_ADD ? false : $isReadonlyField('date_reception', $readonlyFields)
692 773 ]);
  774 + */
693 775  
  776 +
694 777 // - Durée garantie
695 778 echo '<table id="tableAlignementFrequence"><tr>';
  779 +
  780 + // - durée
696 781 echo '<td>';
697 782 echo $this->Form->control('duree_garantie',
698 783 [
... ... @@ -705,6 +790,8 @@ if (isset($cpMateriel)) {
705 790 'placeholder' => ''
706 791 ]);
707 792 echo '</td>';
  793 +
  794 + // - unité
708 795 echo '<td>';
709 796 echo $this->Form->control('unite_duree_garantie', [
710 797 'label' => false,
... ... @@ -720,8 +807,11 @@ if (isset($cpMateriel)) {
720 807 'default' => 'Ans'
721 808 ]);
722 809 echo '</td>';
  810 +
723 811 echo '</tr></table>';
  812 +
724 813  
  814 +
725 815 // - Date fin garantie
726 816 echo $this->Form->control('date_fin_garantie', [
727 817 'type' => 'text',
... ... @@ -733,9 +823,11 @@ if (isset($cpMateriel)) {
733 823 // php5...
734 824 //'value' => $IS_ADD ? null : $materiel->date_fin_garantie->format('d/m/Y'),
735 825 ]);
  826 +
  827 +
736 828  
737   - // EDIT only
738 829 // - Statut
  830 + // EDIT only
739 831 //if ($IS_EDIT && $USER_IS_ADMINPLUS_OR_MORE) {
740 832 if ($IS_EDIT && $USER_IS_SUPERADMIN) {
741 833 /*
... ... @@ -760,6 +852,8 @@ if (isset($cpMateriel)) {
760 852 }
761 853  
762 854 // - Num série
  855 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'numero_serie', 'Numéro de série');
  856 + /*
763 857 $f = 'numero_serie';
764 858 echo $this->Form->control($f, [
765 859 'label' => 'Numéro de série',
... ... @@ -767,10 +861,12 @@ if (isset($cpMateriel)) {
767 861 //'disabled' => $IS_ADD ? false : $isReadonlyField($f, $readonlyFields)
768 862 'disabled' => $IS_ADD ? false : $isReadonlyField($f, $readonlyFields)
769 863 ]);
770   -
  864 + */
771 865  
772 866 // - Nom utilisateur (ou destination du matériel)
773 867 //$readonly = $USER_IS_UTILISATEUR ? TRUE : FALSE;
  868 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'nom_user', "Nom de l'Utilisateur (ou destination du bien)");
  869 + /*
774 870 echo $this->Form->control('nom_user', [
775 871 'label' => "Nom de l'Utilisateur (ou destination du bien)",
776 872 //'empty' => 'Choisir une personne',
... ... @@ -780,12 +876,18 @@ if (isset($cpMateriel)) {
780 876 //'options' => $users_option_list,
781 877 //'readonly' => $IS_EDIT ? false : $readonly,
782 878 ]);
  879 + */
783 880  
784   - // - Nom Acheteur (responsable du matériel)
  881 + // - Nom Acheteur (responsable du matériel) = celui qui crée la fiche (par défaut)
785 882 /*
786 883 $fieldType = $USER_IS_UTILISATEUR ? 'hidden' : 'input';
787 884 echo $this->Form->$fieldType('nom_responsable', [
788 885 */
  886 + // Un role "Utilisateur" ne peut pas modifier l'acheteur, c'est forcément lui-même
  887 + /*
  888 + if ($USER_IS_UTILISATEUR) $readonlyFields[] = 'nom_responsable';
  889 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'nom_responsable', "Nom de l'Acheteur");
  890 + */
789 891 $f = 'nom_responsable';
790 892 $readonly = $USER_IS_UTILISATEUR ? TRUE : FALSE;
791 893 echo $this->Form->control($f, [
... ... @@ -798,7 +900,7 @@ if (isset($cpMateriel)) {
798 900 //'options' => $utilisateurs
799 901 //'readonly' => $IS_EDIT ? false : $readonly,
800 902 //'readonly' => $readonly,
801   - 'disabled' => $readonly || ( $IS_ADD ? false : $isReadonlyField($f, $readonlyFields) ),
  903 + 'disabled' => $readonly || ( $IS_ADD ? false : $this->MyHelper->isReadonlyField($f, $readonlyFields) ),
802 904 ]);
803 905  
804 906 // EDIT only
... ... @@ -823,12 +925,15 @@ if (isset($cpMateriel)) {
823 925  
824 926  
825 927 // - Nom Responsable du crédit
  928 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'resp_credit', "Responsable du crédit (par défaut l'acheteur)");
  929 + /*
826 930 $f = 'resp_credit';
827 931 echo $this->Form->control($f, [
828 932 //'label' => "Responsable du crédit (si différent de l'acheteur)",
829 933 'label' => "Responsable du crédit (par défaut l'acheteur)",
830 934 'disabled' => $IS_ADD ? false : $isReadonlyField($f, $readonlyFields)
831 935 ]);
  936 + */
832 937  
833 938  
834 939 // (EP) Attention, était désactivé (commenté) pour ADD mais pas pour EDIT
... ... @@ -854,6 +959,10 @@ if (isset($cpMateriel)) {
854 959 */
855 960  
856 961 // - Nom du gestionnaire de ref
  962 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'gestionnaire_id', "Nom gestionnaire de référence",
  963 + 'Je ne sais pas qui choisir', $_SESSION['Auth']['User']['sn'][0]
  964 + );
  965 + /*
857 966 $f = 'gestionnaire_id';
858 967 echo $this->Form->control($f, [
859 968 // inutile car automatique si le nom de la variable passée par le controleur respecte la norme
... ... @@ -867,12 +976,14 @@ if (isset($cpMateriel)) {
867 976 'default' => $_SESSION['Auth']['User']['sn'][0],
868 977 'disabled' => $IS_ADD ? false : $isReadonlyField($f, $readonlyFields)
869 978 ]);
  979 + */
870 980  
871 981  
872 982  
873 983 /*
874   - * - Fournisseur (+ ajout possible)
  984 + * - FOURNISSEUR (+ ajout possible)
875 985 */
  986 +
876 987 $f = 'fournisseur_id';
877 988 //nouveau champ de saisie de Fournisseur, il ne se saisissait pas à l'ajout
878 989 //echo '<DIV>';
... ... @@ -911,13 +1022,15 @@ if (isset($cpMateriel)) {
911 1022 - $disabled = ''; // enabled
912 1023 */
913 1024 $disabled = ''; // enabled
914   - if ( $IS_EDIT && $isReadonlyField($f, $readonlyFields) ) $disabled = 'disabled';
  1025 + if ( $IS_EDIT && $this->MyHelper->isReadonlyField($f, $readonlyFields) ) $disabled = 'disabled';
915 1026  
916 1027 ?>
917 1028 <div class="form-group text">
918 1029 <label class="control-label" for="fournisseur-name">Fournisseur</label>
919 1030 <!-- autocomplete="on" => ajoute les éléments saisis auparavant (depuis l'historique du navigateur) => pas bon -->
920   - <input type="text" id="fournisseur-name" name="fournisseur[name]" <?=$disabled?> value="<?=$value?>" list="fournisseurs" placeholder="choisir/ajouter un fournisseur" autocomplete="off">
  1031 + <input type="text" id="fournisseur-name" name="fournisseur[name]" <?=$disabled?>
  1032 + value="<?=$value?>" list="fournisseurs" placeholder="choisir/ajouter un fournisseur" autocomplete="off"
  1033 + >
921 1034 <datalist id="fournisseurs">
922 1035 <?php foreach ($values as $v) echo "<option value='$v'>"; ?>
923 1036 </datalist>
... ... @@ -974,6 +1087,8 @@ if (isset($cpMateriel)) {
974 1087  
975 1088  
976 1089 // - Organisme
  1090 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'organisme_id', null, 'Choisir un organisme');
  1091 + /*
977 1092 echo $this->Form->control('organisme_id', [
978 1093 // inutile car automatique si le nom de la variable passée par le controleur respecte la norme
979 1094 //'options' => $organismes,
... ... @@ -985,8 +1100,11 @@ if (isset($cpMateriel)) {
985 1100 // EDIT only
986 1101 'disabled' => $IS_ADD ? false : $isReadonlyField('organisme_id', $readonlyFields)
987 1102 ]);
  1103 + */
988 1104  
989 1105 // - Prix HT
  1106 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'prix_ht', 'Prix HT (€)');
  1107 + /*
990 1108 $f = 'prix_ht';
991 1109 echo $this->Form->control($f, [
992 1110 'label' => 'Prix HT (€)',
... ... @@ -996,7 +1114,10 @@ if (isset($cpMateriel)) {
996 1114 // EDIT only
997 1115 'disabled' => $IS_ADD ? false : $isReadonlyField($f, $readonlyFields),
998 1116 ]);
  1117 + */
999 1118  
  1119 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'budgets', 'Sur quel(s) budget(s) ?');
  1120 + /*
1000 1121 $f = 'budgets';
1001 1122 echo $this->Form->control($f, [
1002 1123 'label' => 'Sur quel(s) budget(s) ?',
... ... @@ -1004,6 +1125,7 @@ if (isset($cpMateriel)) {
1004 1125 'placeholder' => 'Si plusieurs, séparer avec virgule',
1005 1126 'disabled' => $IS_ADD ? false : $isReadonlyField($f, $readonlyFields),
1006 1127 ]);
  1128 + */
1007 1129  
1008 1130  
1009 1131 /*
... ... @@ -1012,6 +1134,8 @@ if (isset($cpMateriel)) {
1012 1134 * ************************************************************************************
1013 1135 */
1014 1136  
  1137 + // Section READONLY sauf pour ADMIN
  1138 + $READONLY = ! $USER_IS_ADMIN_OR_MORE;
1015 1139 if ($IS_EDIT || ($IS_ADD && $USER_IS_ADMIN_OR_MORE)) {
1016 1140 //$DISABLED = $IS_ADD ? false : !$USER_IS_ADMIN_OR_MORE;
1017 1141 echo '<div style="border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; margin-bottom: 0; background: #EEE;"><span style="font-size: 9px; color: red;">Partie administrative</span>';
... ... @@ -1034,6 +1158,11 @@ if (isset($cpMateriel)) {
1034 1158 * 'Super Administrateur'
1035 1159 * ])) {
1036 1160 */
  1161 + /*
  1162 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'eotp', 'Entité(s) dépensière(s) (voir champ Budgets juste au-dessus)',
  1163 + null, null, null, null, 'Si plusieurs, séparer avec virgule'
  1164 + );
  1165 + */
1037 1166 $f = 'eotp';
1038 1167 echo $this->Form->control($f, [
1039 1168 'label' => 'Entité(s) dépensière(s) (voir champ Budgets juste au-dessus)',
... ... @@ -1041,20 +1170,21 @@ if (isset($cpMateriel)) {
1041 1170 //'label' => 'Centre(s) financier(s) / EOTP',
1042 1171 // EDIT only
1043 1172 //'disabled' => $DISABLED,
1044   - 'disabled' => $IS_ADD ? false : $isReadonlyField($f, $readonlyFields),
  1173 + 'disabled' => $READONLY || ( $IS_ADD ? false : $this->MyHelper->isReadonlyField($f, $readonlyFields) ),
1045 1174 'placeholder' => 'Si plusieurs, séparer avec virgule'
1046 1175 ]);
1047 1176  
1048 1177 // - Numéro BC
1049 1178 // On peut entrer le numero bon commande si le materiel est technique et qu'on est responsable du groupe
  1179 + //echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'numero_commande', 'Numéro BC');
1050 1180 $fname = 'numero_commande';
1051 1181 //$BC_DISABLED = $DISABLED;
1052   - $BC_DISABLED = $IS_ADD ? false : $isReadonlyField($fname, $readonlyFields);
  1182 + $BC_DISABLED = $IS_ADD ? false : $this->MyHelper->isReadonlyField($fname, $readonlyFields);
1053 1183 if ($IS_EDIT && $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL && $materiel->materiel_administratif==0) $BC_DISABLED = False;
1054 1184 echo $this->Form->control($fname, [
1055 1185 'label' => 'Numéro BC',
1056 1186 // EDIT only
1057   - 'disabled' => $BC_DISABLED
  1187 + 'disabled' => $READONLY || $BC_DISABLED
1058 1188 ]);
1059 1189  
1060 1190 /* Champ désormais inutile
... ... @@ -1067,7 +1197,8 @@ if (isset($cpMateriel)) {
1067 1197 */
1068 1198  
1069 1199 // - Numéro labo
1070   - //(EP) NON, on ne doit pas pouvoir modifier ce numéro, non mais !!!
  1200 + // EDIT only
  1201 + // NON, on ne doit pas pouvoir modifier ce numéro, non mais !!!
1071 1202 if ($IS_EDIT)
1072 1203 echo $this->Form->control('numero_laboratoire', [
1073 1204 'label' => 'N° inventaire labo',
... ... @@ -1076,17 +1207,23 @@ if (isset($cpMateriel)) {
1076 1207 ]);
1077 1208  
1078 1209 // Num inventaire organisme
1079   - echo $this->Form->control('numero_inventaire_organisme', [
  1210 + //echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'numero_inventaire_organisme', 'N° inventaire comptable/tutelles');
  1211 + $f = 'numero_inventaire_organisme';
  1212 + echo $this->Form->control($f, [
1080 1213 'label' => 'N° inventaire comptable/tutelles',
1081   - // EDIT only
1082   - //'disabled' => $DISABLED
  1214 + // EDIT only
  1215 + //'disabled' => $DISABLED,
  1216 + 'disabled' => $READONLY || ( $IS_ADD ? false : $this->MyHelper->isReadonlyField($f, $readonlyFields) ),
1083 1217 ]);
1084 1218  
1085 1219 // Num inventaire (ancien)
1086   - echo $this->Form->control('numero_inventaire_old', [
  1220 + //echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'numero_inventaire_old', 'Ancien N° inventaire');
  1221 + $f = 'numero_inventaire_old';
  1222 + echo $this->Form->control($f, [
1087 1223 'label' => 'Ancien N° inventaire',
1088   - // EDIT only
1089   - //'disabled' => $DISABLED
  1224 + // EDIT only
  1225 + //'disabled' => $DISABLED,
  1226 + 'disabled' => $READONLY || ( $IS_ADD ? false : $this->MyHelper->isReadonlyField($f, $readonlyFields) ),
1090 1227 ]);
1091 1228  
1092 1229 echo '</div>';
... ...
src/Template/Materiels/index.ctp
... ... @@ -519,10 +519,10 @@ $displayLegend = function() {
519 519 //echo "<p><i><b><u>Couleur</u> :</b> <i style='color:blue'>bleu=à valider</i> ; <i style='color:green'>vert=validé</i> ; <i style='color:orange'>orange=à sortir</i> ; <i style='color:red'>rouge=archivé</i> ; couleur date rouge = <i style='color:red'>fin garantie</i></i></p>";
520 520 echo "<p><i><b><u>Couleur</u> :</b>
521 521 <i style='color:orange'>orange=créé (à valider)</i> ;
522   - <i style='color:red'>rouge=en commande (à valider)</i> ;
523   - <i style='color:black'>noir=livré (validé)</i> ;
524   - <i style='color:red'>rouge=à sortir</i> ;
525   - <i style='color:blue'>bleu=archivé</i> ;
  522 + <i style='color:red'>rouge=en commande (à valider) ou à sortir</i> ;
  523 + <i style='color:black'>noir=livré (validé)</i> ;"
  524 + //<i style='color:red'>rouge=à sortir</i> ;
  525 + ." <i style='color:blue'>bleu=archivé</i> ;
526 526 (couleur date rouge = <i style='color:red'>fin garantie</i>)
527 527 </i></p>";
528 528 };
... ...
src/View/Helper/MyHelperHelper.php
... ... @@ -17,6 +17,63 @@ class MyHelperHelper extends Helper {
17 17 }
18 18  
19 19  
  20 + // (EP) Fonction utilisée dans la vue Materiels/add_or_edit
  21 + function isReadonlyField ($fieldName, $myReadonlyFields) {
  22 + // Fonctionnement inversé : TOUS readonly (*) SAUF certains champs (listés)
  23 + if (!empty($myReadonlyFields) && $myReadonlyFields[0]=='*') {
  24 + $modifiableFields = $myReadonlyFields;
  25 + array_shift($modifiableFields);
  26 + return ! in_array($fieldName, $modifiableFields);
  27 + }
  28 + // Fonctionnement normal :
  29 + //return ( !empty($materiel->$fieldName) && in_array($fieldName, $myReadonlyFields) );
  30 + return ( in_array($fieldName, $myReadonlyFields) );
  31 + }
  32 +
  33 + /*
  34 + private function getLabelForFieldName ($fieldName) {
  35 + if ( substr($fieldName, -3) === '_id' ) $fieldName = substr($fieldName,0,-3);
  36 + return ucfirst($fieldName);
  37 + }
  38 + */
  39 +
  40 + // (EP) Fonction utilisée dans la vue Materiels/add_or_edit
  41 + function control(
  42 + $IS_ADD, $readonlyFields, $fieldName, $label=null,
  43 + $empty=null, $default=null, $type=null, $class=null, $placeholder=null, $value=null
  44 + ) {
  45 +
  46 + $options = [
  47 + //'type' => 'text',
  48 + //'label' => $label ? $label : $this->getLabelForFieldName($fieldName),
  49 + 'label' => $label, // si null, c'est le framework qui génère un label auto
  50 + //'empty' => 'Choisir un domaine',
  51 + 'empty' => $empty,
  52 + 'default' => $default,
  53 +
  54 + 'type' => $type,
  55 + 'class' => $class,
  56 + 'placeholder' => $placeholder,
  57 + //'value' => $value,
  58 +
  59 + //'style' => 'width: 260px',
  60 + // inutile car automatique si le nom de la variable passée par le controleur respecte la norme
  61 + //'options' => $surCategories,
  62 + //'default' => $Designation,
  63 + // ADD only
  64 + /////'default' => $materiel->designation,
  65 + //'default' => $designations,
  66 + //'default' => $designations->toArray(),
  67 + // EDIT only
  68 + 'disabled' => $IS_ADD ? false : $this->isReadonlyField($fieldName, $readonlyFields)
  69 + ];
  70 + //if (!is_null($default)) $options['default'] = $default;
  71 + if (!is_null($value)) $options['value'] = $value;
  72 +
  73 + return $this->Form->control($fieldName, $options);
  74 +
  75 + }
  76 +
20 77  
21 78 function echoListToManageOrViewWithIcon($can_manage=false, $list_name, $controller_name, $action_name='index') {
22 79 //function echo_list($html, $verb, $list_name, $controller_name, $action_name) {
... ...