Commit 3f348400dc443ff7bd3bee3769d03616eea96490
1 parent
8aa326ac
Exists in
master
and in
1 other branch
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
Showing
9 changed files
with
357 additions
and
80 deletions
Show diff stats
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) { | ... | ... |