Commit da9733a9eadba1eb5419edff5ca451a5d30f7e5d
Exists in
master
and in
1 other branch
Merge dev branch into master branch (vv3.7.9.56)
Showing
4 changed files
with
403 additions
and
276 deletions
Show diff stats
README.md
... | ... | @@ -44,22 +44,19 @@ Logiciel testé et validé sur les configurations suivantes : |
44 | 44 | |
45 | 45 | VERSION ACTUELLE |
46 | 46 | |
47 | -Date: 03/07/2020 | |
48 | -Version: 3.7.9.55 | |
47 | +Date: 07/07/2020 | |
48 | +Version: 3.7.9.56 | |
49 | 49 | Author: EP |
50 | 50 | Commentaire: |
51 | - - Fichier LICENSE (AGPL) | |
52 | - - Conditions d'utilisation à accepter lors de l'installation | |
53 | - - script ./INSTALLATION | |
54 | - - Mode "nolimit" dans la config ("Superadmin a tous les droits", depuis menu Tools) | |
55 | - - Ajout d'un "alias" pour décrire chaque action de chaque controleur | |
56 | - | |
57 | - - Amélioration page /pages/acls | |
58 | - - Tests génériques automatiques pour (presque) toutes les actions de (presque) tous les controleurs principaux (Materiels, Suivis, Emprunts, Users) mais aussi du controleur "quelconque" SurCategories (pour vérifier que ça marche aussi !!!) | |
59 | - - Dans ces tests génériques, on teste non seulement qu'une action s'exécute seulement quand elle y est autorisée, mais aussi qu'elle s'exécute correctement (au moins pour les actions CRUD : add,edit,delete...) | |
60 | - - Le nombre total de tests (en ajoutant ces tests automatiques) monte à 220 !! | |
61 | - - ... | |
62 | - | |
51 | + - Materiel : technique ou/et inventoriable => trop compliqué et inutile => en fait c’est un OUX (exclusif) | |
52 | + => simplifier en ne gardant qu'UNE SEULE case à cocher qui s'appelle "materiel technique". | |
53 | + => Si cette case n'est pas cochée, le prix doit alors être supérieur à 1000E | |
54 | + => par contre, on garde quand même le champ ds la BD au cas où. | |
55 | + - Colorisation selon statut du matériel : | |
56 | + CREATED => bleu | |
57 | + VALIDATED => vert | |
58 | + TBA => orange | |
59 | + ARCHIVED => rouge | |
63 | 60 | |
64 | 61 | IMPORTANT : |
65 | 62 | - Pour connaitre la version actuelle, taper "./VERSION" |
... | ... | @@ -97,8 +94,13 @@ La liste ci-dessous est aussi en ligne ici : https://tinyurl.com/labinvent#headi |
97 | 94 | ----------------------------------------------------------------------------------------------------------- |
98 | 95 | VERSION ACTUELLE |
99 | 96 | |
100 | -06/07/2020 v3.7.9.54 (EP) | |
97 | +06/07/2020 v3.7.9.54-55 (EP) | |
101 | 98 | - Bugfix test SurCategories : marche maintenant sur php5 et php7 |
99 | + - Fichier LICENSE (AGPL) | |
100 | + - Conditions d'utilisation à accepter lors de l'installation | |
101 | + - script ./INSTALLATION | |
102 | + - Mode "nolimit" dans la config ("Superadmin a tous les droits", depuis menu Tools) | |
103 | + - Ajout d'un "alias" pour décrire chaque action de chaque controleur | |
102 | 104 | |
103 | 105 | 03/07/2020 v3.7.9.53 (EP) |
104 | 106 | - Bugfix Emprunts calcul sur les dates pourri : on utilise maintenant FrozenDate et FrozenTime de cakephp au lieu de DateTime de php | ... | ... |
src/Model/Table/MaterielsTable.php
... | ... | @@ -293,10 +293,7 @@ class MaterielsTable extends AppTable |
293 | 293 | return $validator; |
294 | 294 | } |
295 | 295 | |
296 | - public function checkStatus($check) | |
297 | - { | |
298 | - return ($check !== null && in_array($check, $this->ALL_STATUS)); | |
299 | - } | |
296 | + public function checkStatus($check) { return ($check !== null && in_array($check, $this->ALL_STATUS)); } | |
300 | 297 | |
301 | 298 | /** |
302 | 299 | * Returns a rules checker object that will be used for validating |
... | ... | @@ -308,15 +305,19 @@ class MaterielsTable extends AppTable |
308 | 305 | */ |
309 | 306 | public function buildRules(RulesChecker $rules) |
310 | 307 | { |
311 | - $configuration = TableRegistry::get('Configurations')->find() | |
308 | + //$configuration = TableRegistry::get('Configurations')->find() | |
309 | + /* | |
310 | + $configuration = TableRegistry::getTableLocator()->get('Configurations')->find() | |
312 | 311 | ->where([ |
313 | 312 | 'id =' => 1 |
314 | 313 | ])->first(); |
315 | - | |
314 | + */ | |
315 | + $this->config = TableRegistry::getTableLocator()->get('Configurations')->get(1); | |
316 | 316 | |
317 | 317 | /* |
318 | 318 | * CONTROLE de la cohérence des champs materiel_administratif et materiel_technique |
319 | 319 | */ |
320 | + /* | |
320 | 321 | $checkAtLeastOneChecked = function ($entity) { |
321 | 322 | return ($entity->materiel_administratif || $entity->materiel_technique); |
322 | 323 | }; |
... | ... | @@ -337,19 +338,24 @@ class MaterielsTable extends AppTable |
337 | 338 | ->first(); |
338 | 339 | return ! ($entity->prix_ht !== null && $entity->prix_ht < $configuration->prix_inventaire_administratif && $entity->materiel_administratif); |
339 | 340 | }; |
341 | + */ | |
340 | 342 | // return if checked as "administratif" price MUST be set |
341 | 343 | $checkPriceIfIsAdministratif = function ($entity) { |
342 | - if ($entity->materiel_administratif) | |
343 | - return ($entity->prix_ht !== null); | |
344 | + //if ($entity->materiel_administratif) | |
345 | + if (! $entity->materiel_technique) | |
346 | + return ($entity->prix_ht >= $this->config->prix_inventaire_administratif); // 1000€ pour l'IRAP | |
347 | + //return ($entity->prix_ht !== null); | |
344 | 348 | return true; |
345 | 349 | }; |
350 | + /* | |
346 | 351 | $rules->add($checkAtLeastOneChecked, [ |
347 | 352 | 'errorField' => 'materiel_administratif', |
348 | 353 | 'message' => 'Le matériel est obligatoirement inventoriable ou technique.' |
349 | 354 | ]); |
350 | 355 | $rules->add($checkAtLeastOneChecked, [ |
351 | 356 | 'errorField' => 'materiel_technique', |
352 | - 'message' => 'Le matériel est obligatoirement inventoriable ou technique.' | |
357 | + //'message' => 'Le matériel est obligatoirement inventoriable ou technique.' | |
358 | + 'message' => "Si le matériel n'est pas technique, son prix doit obligatoirement être supérieur à 1000€" | |
353 | 359 | ]); |
354 | 360 | $rules->add($checkIfIsAdministratifWhenShouldBe, [ |
355 | 361 | 'errorField' => 'materiel_administratif', |
... | ... | @@ -359,9 +365,16 @@ class MaterielsTable extends AppTable |
359 | 365 | 'errorField' => 'materiel_administratif', |
360 | 366 | 'message' => 'Le matériel vaut moins de ' . $configuration->prix_inventaire_administratif . '€ HT, il n\'est donc pas inventoriable.' |
361 | 367 | ]); |
368 | + */ | |
362 | 369 | $rules->add($checkPriceIfIsAdministratif, [ |
363 | 370 | 'errorField' => 'prix_ht', |
364 | - 'message' => 'Le matériel ne peut pas être inventoriable et ne pas avoir de prix' | |
371 | + //'message' => 'Le matériel ne peut pas être inventoriable et ne pas avoir de prix' | |
372 | + 'message' => "Si le matériel n'est pas technique, son prix doit obligatoirement être supérieur à 1000€ (inventoriable)" | |
373 | + ]); | |
374 | + $rules->add($checkPriceIfIsAdministratif, [ | |
375 | + 'errorField' => 'materiel_technique', | |
376 | + //'message' => 'Le matériel ne peut pas être inventoriable et ne pas avoir de prix' | |
377 | + 'message' => "Si le matériel n'est pas technique, son prix doit obligatoirement être supérieur à 1000€ (inventoriable)" | |
365 | 378 | ]); |
366 | 379 | |
367 | 380 | $rules->add($rules->isUnique([ | ... | ... |
src/Template/Materiels/add_edit.ctp
... | ... | @@ -451,7 +451,7 @@ if (isset($cpMateriel)) { |
451 | 451 | |
452 | 452 | // - Technique et/ou Inventoriable ? |
453 | 453 | echo $this->Form->control('materiel_technique', [ |
454 | - 'label' => 'Technique', | |
454 | + 'label' => "Technique (pas pour l'inventaire officiel)", | |
455 | 455 | // ADD only |
456 | 456 | //'default' => $Mat_technique |
457 | 457 | 'default' => $materiel->materiel_technique, |
... | ... | @@ -459,6 +459,7 @@ if (isset($cpMateriel)) { |
459 | 459 | 'disabled' => $IS_ADD ? false : $isReadonlyField('materiel_technique', $myReadonlyFields) |
460 | 460 | ]); |
461 | 461 | echo "\n"; |
462 | + /* | |
462 | 463 | echo $this->Form->control('materiel_administratif', [ |
463 | 464 | 'label' => 'Inventoriable (>' . $configuration->prix_inventaire_administratif . '€)', |
464 | 465 | // ADD only |
... | ... | @@ -467,6 +468,7 @@ if (isset($cpMateriel)) { |
467 | 468 | // EDIT only |
468 | 469 | 'disabled' => $IS_ADD ? false : $isReadonlyField('materiel_administratif', $myReadonlyFields) |
469 | 470 | ]); |
471 | + */ | |
470 | 472 | |
471 | 473 | // - Metrologie |
472 | 474 | //if ($configuration->metrologie == '1') { | ... | ... |
src/Template/Materiels/index.ctp
... | ... | @@ -21,7 +21,7 @@ $materiels = $materiels; |
21 | 21 | $configuration = $configuration; |
22 | 22 | |
23 | 23 | // Uniquement quand un statut est sélectionné (pour filtrer) |
24 | -if (isset($SELECTED_STATUS)) $SELECTED_STATUS = $SELECTED_STATUS; | |
24 | +$SELECTED_STATUS = isset($SELECTED_STATUS) ? $SELECTED_STATUS : null; | |
25 | 25 | |
26 | 26 | // TODO: yena plein d'autres |
27 | 27 | // ... |
... | ... | @@ -57,34 +57,33 @@ $displayElement = $displayElement; |
57 | 57 | $dateProchainControleVerif = $dateProchainControleVerif; |
58 | 58 | $echoActionButton = $echoActionButton; |
59 | 59 | |
60 | -?> | |
60 | +// @TODO : get from Configurations | |
61 | +$METRO=false; | |
61 | 62 | |
62 | 63 | |
63 | -<div class="materiels index col-lg-12 col-md-12 col-sm-12"> | |
64 | -<?php echo '<h2><i class="icon-list"></i> Liste des matériels ('.$nbMateriels.')</h2>'; ?> | |
65 | 64 | |
66 | -<div class="actions" style="width: 100%; float: none; padding: 0 0;"> | |
67 | -<?php | |
68 | -// @TODO : get from Configurations | |
69 | -$METRO=false; | |
70 | 65 | |
71 | -/*echo '<p>'; | |
72 | -echo $this->Html->link('<i class="icon-plus"></i> Nouveau Matériel', [ | |
73 | - 'action' => 'add' | |
74 | -], [ | |
75 | - 'title' => 'Ajouter un matériel', | |
76 | - 'escape' => false | |
77 | -]); | |
78 | -echo '</p>';*/ | |
66 | +/* | |
67 | +<!-- | |
68 | +****************************************************************************** | |
69 | + FONCTIONS D'AFFICHAGE DES DIFFÉRENTES SECTIONS DE LA PAGE WEB | |
70 | +****************************************************************************** | |
71 | +--> | |
72 | +*/ | |
79 | 73 | |
80 | -if ($USER_IS_ADMIN_OR_MORE) { | |
74 | +$displayStatusButtons = function($SELECTED_STATUS, $nbMateriels, $html) { | |
75 | + ?> | |
76 | + <div class="actions" style="width: 100%; float: none; padding: 0 0;"> | |
77 | + <?php | |
78 | + | |
81 | 79 | echo '<p>'; |
82 | 80 | echo "Afficher les matériels : "; |
83 | 81 | echo '</br>'; |
84 | 82 | echo '</br>'; |
85 | 83 | $b_all = $b_cre = $b_val = $b_toarc = $b_arc = ''; |
86 | 84 | $SELECTED = '<i class="icon-ok"></i>'; |
87 | - if (isset($SELECTED_STATUS)) { | |
85 | + //if (isset($SELECTED_STATUS)) { | |
86 | + if ($SELECTED_STATUS) { | |
88 | 87 | if ($SELECTED_STATUS == 'CREATED') |
89 | 88 | $b_cre = $SELECTED; |
90 | 89 | else if ($SELECTED_STATUS == 'VALIDATED') |
... | ... | @@ -93,11 +92,11 @@ if ($USER_IS_ADMIN_OR_MORE) { |
93 | 92 | $b_toarc = $SELECTED; |
94 | 93 | else if ($SELECTED_STATUS == 'ARCHIVED') |
95 | 94 | $b_arc = $SELECTED; |
96 | - } else | |
97 | - $b_all = $SELECTED; | |
98 | - | |
95 | + } else $b_all = $SELECTED; | |
96 | + | |
99 | 97 | // Affichage des boutons en haut de la page |
100 | - echo $this->Html->link($b_all . ' Tous', [ | |
98 | + //echo $this->Html->link($b_all . ' Tous', [ | |
99 | + echo $html->link($b_all . ' Tous', [ | |
101 | 100 | 'action' => 'index' |
102 | 101 | ], [ |
103 | 102 | 'title' => 'Tous', |
... | ... | @@ -105,7 +104,7 @@ if ($USER_IS_ADMIN_OR_MORE) { |
105 | 104 | 'escape' => false |
106 | 105 | ]); |
107 | 106 | |
108 | - echo $this->Html->link($b_cre . ' A valider', [ | |
107 | + echo $html->link($b_cre . ' A valider', [ | |
109 | 108 | 'action' => 'index', |
110 | 109 | 'CREATED' |
111 | 110 | ], [ |
... | ... | @@ -114,7 +113,7 @@ if ($USER_IS_ADMIN_OR_MORE) { |
114 | 113 | 'escape' => false |
115 | 114 | ]); |
116 | 115 | |
117 | - echo $this->Html->link($b_val . ' Validés', [ | |
116 | + echo $html->link($b_val . ' Validés', [ | |
118 | 117 | 'action' => 'index', |
119 | 118 | 'VALIDATED' |
120 | 119 | ], [ |
... | ... | @@ -123,7 +122,7 @@ if ($USER_IS_ADMIN_OR_MORE) { |
123 | 122 | 'escape' => false |
124 | 123 | ]); |
125 | 124 | |
126 | - echo $this->Html->link($b_toarc . ' A sortir', [ | |
125 | + echo $html->link($b_toarc . ' A sortir', [ | |
127 | 126 | 'action' => 'index', |
128 | 127 | 'TOBEARCHIVED' |
129 | 128 | ], [ |
... | ... | @@ -132,7 +131,7 @@ if ($USER_IS_ADMIN_OR_MORE) { |
132 | 131 | 'escape' => false |
133 | 132 | ]); |
134 | 133 | |
135 | - echo $this->Html->link($b_arc . ' Archivés', [ | |
134 | + echo $html->link($b_arc . ' Archivés', [ | |
136 | 135 | 'action' => 'index', |
137 | 136 | 'ARCHIVED' |
138 | 137 | ], [ |
... | ... | @@ -145,58 +144,320 @@ if ($USER_IS_ADMIN_OR_MORE) { |
145 | 144 | |
146 | 145 | // ACTIONS : buttons "Tout selectionner", "Tout decocher" |
147 | 146 | // - show only with "A valider" and "A sortir" |
148 | - if (isset($SELECTED_STATUS) && $nbMateriels != 0) { | |
149 | - echo $this->Html->link('<i class="icon-check"></i> Tout cocher', '#all', [ | |
147 | + if ($SELECTED_STATUS && $nbMateriels>0) { | |
148 | + echo $html->link('<i class="icon-check"></i> Tout cocher', '#all', [ | |
150 | 149 | 'onclick' => 'selectAll()', |
151 | 150 | 'title' => 'Sélectionner tout les matériels', |
152 | 151 | 'style' => ': 400px; margin-right: 50px', |
153 | 152 | 'escape' => false |
154 | 153 | ]); |
155 | - echo $this->Html->link('<i class="icon-check-empty"></i> Tout décocher', '#none', [ | |
154 | + echo $html->link('<i class="icon-check-empty"></i> Tout décocher', '#none', [ | |
156 | 155 | 'onclick' => 'selectNone()', |
157 | 156 | 'title' => 'Sélectionner aucun matériel', |
158 | 157 | 'style' => 'margin-right: 50px', |
159 | 158 | 'escape' => false |
160 | 159 | ]); |
161 | 160 | } |
162 | -} | |
161 | + | |
162 | + echo "</div>"; | |
163 | + | |
164 | +}; // displayStatusButtons() | |
165 | + | |
166 | + | |
167 | +$displayNbLinesSelector = function($form, $request) { | |
168 | + echo '<div class="col-lg-2 col-md-3 col-sm-4">'; | |
169 | + //echo $this->Form->create('materiels', [ | |
170 | + echo $form->create('materiels', [ | |
171 | + //'url' => '/materiels/execActions?page=' . $this->request->getQuery('page') | |
172 | + 'url' => '/materiels/execActions?page=' . $request->getQuery('page') | |
173 | + ]); | |
174 | + // echo $this->Form->create('materiels', ['url' => '/materiels/execActions?page=index']); | |
175 | + //echo $this->Form->control('aff_par_defaut', [ | |
176 | + echo $form->control('aff_par_defaut', [ | |
177 | + 'label' => 'Afficher', | |
178 | + 'options' => [ | |
179 | + '20' => 20, | |
180 | + '30' => 30, | |
181 | + '50' => 50, | |
182 | + '100' => 100, | |
183 | + '150' => 150, | |
184 | + '200' => 200 | |
185 | + ] | |
186 | + ]); | |
187 | + echo '</div>'; | |
188 | +}; // displayNbLinesSelector() | |
189 | + | |
190 | + | |
191 | +$displayActionButtonsForSelectedOrAllElements = function($form, $SELECTED_STATUS, $USER_IS_RESPONSABLE, $USER_IS_ADMIN_OR_MORE, $USER_IS_SUPERADMIN) { | |
192 | + | |
193 | + //if (isset($SELECTED_STATUS)) { | |
194 | + if ($SELECTED_STATUS) { | |
195 | + switch ($SELECTED_STATUS) { | |
196 | + case 'CREATED': | |
197 | + $action = 'Valider les'; | |
198 | + break; | |
199 | + case 'VALIDATED': | |
200 | + $action = "Demander l'archivage des"; | |
201 | + break; | |
202 | + case 'TOBEARCHIVED': | |
203 | + $action = "Sortir les"; | |
204 | + break; | |
205 | + } | |
206 | + | |
207 | + if ($SELECTED_STATUS != 'ARCHIVED') { | |
208 | + //if (! ($role == 'Super Administrateur' && $SELECTED_STATUS == 'TOBEARCHIVED')) { | |
209 | + if (! ($USER_IS_SUPERADMIN && $SELECTED_STATUS=='TOBEARCHIVED') ) { | |
210 | + //echo $this->Form->submit($action . ' matériels cochés', [ | |
211 | + // 'name' => 'updateSelectedStatus', | |
212 | + // 'id' => 'updateSelectedStatus', | |
213 | + // 'style' => 'margin: 0px' | |
214 | + //]); | |
215 | + //echo $this->Form->button($action . ' matériels cochés', [ 'class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'updateSelectedStatus', 'id' => 'updateSelectedStatus', 'style' => 'margin: 0px']); | |
216 | + echo $form->button($action . ' matériels cochés', [ 'class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'updateSelectedStatus', 'id' => 'updateSelectedStatus', 'style' => 'margin: 0px']); | |
217 | + echo "<br /><br />"; | |
218 | + } | |
219 | + } | |
220 | + //echo $this->Form->submit('Exporter la liste des matériels cochés', [ | |
221 | + // 'name' => 'export', | |
222 | + // 'id' => 'export', | |
223 | + // 'style' => 'margin: 0px;' | |
224 | + //]); | |
225 | + echo $form->button('Exporter la liste des matériels cochés', ['class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'export', 'id' => 'export', 'style' => 'margin: 0px;' ]); | |
226 | + echo "<br /><br />"; | |
227 | + } | |
228 | + | |
229 | + if ($USER_IS_ADMIN_OR_MORE || $USER_IS_RESPONSABLE) | |
230 | + //echo $this->Form->submit('Exporter la liste complete', [ | |
231 | + // 'name' => 'exportAll', | |
232 | + // 'id' => 'exportAll', | |
233 | + // 'style' => 'margin: 0px;' | |
234 | + //]); | |
235 | + echo $form->button('Exporter la liste complete', ['class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'exportAll', 'id' => 'exportAll', 'style' => 'margin: 0px;']); | |
236 | + | |
237 | +}; | |
238 | + | |
239 | + | |
240 | +/* | |
241 | + * Couleurs en fonction du statut du matos | |
242 | + * | |
243 | + */ | |
244 | +$displayColorLegend = function() { | |
245 | + // CREATED => bleu | |
246 | + // VALIDATED => vert | |
247 | + // TBA => orange | |
248 | + // ARCHIVED => rouge | |
249 | + echo "<p><i><b><u>Couleur</u> :</b> bleu=créé ; vert=validé ; orange=à sortir ; rouge=archivé (couleur date rouge = fin garantie)</i></p>"; | |
250 | +}; | |
251 | + | |
252 | + | |
253 | + | |
254 | +$displayActionButtonsForMateriel = function($materiel, $username, $USER_IS_RESPONSABLE, $USER_IS_ADMIN_OR_MORE, $USER_IS_SUPERADMIN, $controller, $html) { | |
255 | + | |
256 | + // TODO: Dans l'idéal, ces variables doivent etre définies par le controleur et passées à la vue | |
257 | + // (sous forme d'un tableau contenant ces droits pour CHAQUE materiel) | |
258 | + // Car la vue doit être la moins "intelligente" possible, la plus simple possible | |
259 | + $IS_CREATED = ($materiel->status == 'CREATED'); | |
260 | + $IS_VALIDATED = ($materiel->status == 'VALIDATED'); | |
261 | + $IS_TOBEARCHIVED = ($materiel->status == 'TOBEARCHIVED'); | |
262 | + $IS_ARCHIVED = ($materiel->status == 'ARCHIVED'); | |
263 | + /* | |
264 | + * Couleurs en fonction du statut du matos | |
265 | + * | |
266 | + */ | |
267 | + // CREATED => bleu | |
268 | + if ($IS_CREATED) $color = 'blue'; | |
269 | + // VALIDATED => vert | |
270 | + if ($IS_VALIDATED) $color = 'green'; | |
271 | + // TBA => orange | |
272 | + if ($IS_TOBEARCHIVED) $color = 'orange'; | |
273 | + // ARCHIVED => rouge | |
274 | + if ($IS_ARCHIVED) $color = 'red'; | |
275 | + $color = "style='color: $color'"; | |
276 | + | |
277 | + $USER_IS_CREATOR_OR_OWNER = in_array($username, [$materiel->nom_createur, $materiel->nom_responsable]); | |
278 | + $USER_IS_SAME_GROUP_AS_MATERIEL = ( | |
279 | + ( isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id!=$idGmNa && $materiel->groupes_metier_id==$priviledgedUser->groupes_metier_id ) | |
280 | + || | |
281 | + ( isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id!=$idGtNa && $materiel->groupes_thematique_id==$priviledgedUser->groupes_thematique_id ) | |
282 | + ); | |
283 | + $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL = $USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL; | |
284 | + $CONTEXT1 = $USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL; | |
285 | + | |
286 | + // Détermination des autorisations pour tous les boutons "éditer", "supprimer", "valider", ... | |
287 | + $id = $materiel->id; | |
288 | + | |
289 | + $CAN_EDIT = $controller->isAuthorizedAction('edit', $id); | |
290 | + //$CAN_EDIT = $IS_CREATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL); | |
291 | + //$CAN_EDIT = $IS_CREATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER); | |
292 | + | |
293 | + $CAN_DELETE = $controller->isAuthorizedAction('delete', $id); | |
294 | + //$CAN_DELETE = $CAN_EDIT; | |
295 | + | |
296 | + /* | |
297 | + $CAN_VALIDATE_OR_INVALIDATE = $USER_IS_ADMIN_OR_MORE || ( ($materiel->materiel_administratif == 0) && $USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL ); | |
298 | + $CAN_VALIDATE = $IS_CREATED && $CAN_VALIDATE_OR_INVALIDATE; | |
299 | + $CAN_INVALIDATE = !$IS_CREATED && $CAN_VALIDATE_OR_INVALIDATE; | |
300 | + $CAN_TBA = $IS_VALIDATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL)); | |
301 | + $CAN_ARCHIVE = $IS_TOBEARCHIVED && $CAN_VALIDATE_OR_INVALIDATE; | |
302 | + */ | |
303 | + $CAN_INVALIDATE = $controller->isAuthorizedAction('statusCreated', $id); | |
304 | + $CAN_VALIDATE = $controller->isAuthorizedAction('statusValidated', $id); | |
305 | + $CAN_TBA = $controller->isAuthorizedAction('statusTobearchived', $id); | |
306 | + $CAN_ARCHIVE = $controller->isAuthorizedAction('statusArchived', $id); | |
307 | + | |
308 | + echo '<td class="actions" style="padding: 6px 0; text-align: left;">'; | |
309 | + | |
310 | + // 1) EDIT icon | |
311 | + /* | |
312 | + if ( | |
313 | + in_array($materiel->status, [ | |
314 | + 'CREATED', | |
315 | + // (EP 17/5/19) ben non, on peut pas si c'est validé !!! | |
316 | + //'VALIDATED' | |
317 | + ]) | |
318 | + && | |
319 | + ( | |
320 | + $USER_IS_ADMIN_OR_MORE | |
321 | + || | |
322 | + $USER_IS_CREATOR_OR_OWNER | |
323 | + || | |
324 | + ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL) | |
325 | + ) | |
326 | + ) | |
327 | + */ | |
328 | + if ($CAN_EDIT) echo $html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $materiel->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]); | |
329 | + | |
330 | + // 2) VALIDER/TBA/ARCHIVER icon | |
331 | + /* | |
332 | + if ( | |
333 | + $USER_IS_ADMIN | |
334 | + || | |
335 | + ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL) | |
336 | + ) { | |
337 | + */ | |
338 | + //if ($materiel->status=='CREATED' && !$USER_IS_RESPONSABLE) { | |
339 | + if ($CAN_VALIDATE) | |
340 | + echo $html->link('<i class="icon-ok-sign"></i>', [ | |
341 | + 'action' => 'statusValidated', | |
342 | + $materiel->id | |
343 | + ], | |
344 | + [ | |
345 | + 'title' => 'Valider', | |
346 | + 'style' => 'margin: 0 2px', | |
347 | + 'escape' => false, | |
348 | + 'confirm' => 'Êtes-vous sur de vouloir valider ' . $materiel->designation . ' ?' | |
349 | + ] | |
350 | + ); | |
351 | + //else if (h($materiel->status) == 'VALIDATED') { | |
352 | + if ($CAN_TBA) | |
353 | + echo $html->link('<i class="icon-inbox"></i>', [ | |
354 | + 'action' => 'statusTobearchived', | |
355 | + $materiel->id | |
356 | + ], | |
357 | + [ | |
358 | + 'title' => 'Demander la sortie de l\'inventaire', | |
359 | + 'style' => 'margin: 0 2px', | |
360 | + 'escape' => false, | |
361 | + 'confirm' => 'Êtes-vous sur de vouloir faire une demande d\'archive ' . $materiel->designation . ' ?' | |
362 | + ] | |
363 | + ); | |
364 | + //else if ($materiel->status=='TOBEARCHIVED' && !$USER_IS_RESPONSABLE) | |
365 | + if ($CAN_ARCHIVE) | |
366 | + echo $html->link('<i class="icon-inbox"></i>', [ | |
367 | + 'action' => 'statusArchived', | |
368 | + $materiel->id | |
369 | + ], | |
370 | + [ | |
371 | + 'title' => 'Sortir de l\'inventaire', | |
372 | + 'style' => 'margin: 0 2px', | |
373 | + 'escape' => false, | |
374 | + 'confirm' => 'Êtes-vous sur de vouloir archiver ' . $materiel->designation . ' ?' | |
375 | + ] | |
376 | + ); | |
377 | + | |
378 | + // 3) DELETE icon | |
379 | + /* | |
380 | + if (h($materiel->status) == 'CREATED') { | |
381 | + if ( | |
382 | + $USER_IS_ADMIN_OR_MORE | |
383 | + || | |
384 | + $USER_IS_CREATOR_OR_OWNER | |
385 | + || | |
386 | + ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL) | |
387 | + ) | |
388 | + */ | |
389 | + if ($CAN_DELETE) | |
390 | + echo $html->link(__('<i class="icon-trash"></i>'), [ | |
391 | + 'action' => 'delete', | |
392 | + $materiel->id | |
393 | + ], | |
394 | + [ | |
395 | + 'title' => 'Supprimer', | |
396 | + 'style' => 'margin: 0 2px', | |
397 | + 'escape' => false, | |
398 | + 'confirm' => __('Êtes-vous sur de vouloir supprimer {0} ?', $materiel->designation) | |
399 | + ] | |
400 | + ); | |
401 | + | |
402 | + echo "</td>"; | |
403 | + | |
404 | + return $color; | |
405 | + | |
406 | +}; // displayActionButtonsForMateriel | |
407 | + | |
163 | 408 | ?> |
164 | -</div> | |
165 | 409 | |
166 | -<div class="col-lg-2 col-md-3 col-sm-4"> | |
410 | + | |
411 | + | |
412 | + | |
413 | + | |
414 | + | |
415 | +<!-- | |
416 | +****************************************************************************** | |
417 | + PAGE WEB HTML | |
418 | +****************************************************************************** | |
419 | +--> | |
420 | + | |
421 | +<div class="materiels index col-lg-12 col-md-12 col-sm-12"> | |
422 | + | |
423 | + | |
424 | +<!-- TITRE --> | |
425 | +<?php echo '<h2><i class="icon-list"></i> Liste des matériels ('.$nbMateriels.')</h2>'; ?> | |
426 | + | |
427 | +<!-- BOUTONS STATUT (admin+ only) | |
428 | +<div class="actions" style="width: 100%; float: none; padding: 0 0;"> | |
429 | +--> | |
167 | 430 | <?php |
168 | -echo $this->Form->create('materiels', [ | |
169 | - 'url' => '/materiels/execActions?page=' . $this->request->getQuery('page') | |
170 | -]); | |
171 | -// echo $this->Form->create('materiels', ['url' => '/materiels/execActions?page=index']); | |
172 | -//echo $this->Form->control('aff_par_defaut', [ | |
173 | -echo $this->Form->control('aff_par_defaut', [ | |
174 | - 'label' => 'Afficher', | |
175 | - 'options' => [ | |
176 | - '20' => 20, | |
177 | - '30' => 30, | |
178 | - '50' => 50, | |
179 | - '100' => 100, | |
180 | - '150' => 150, | |
181 | - '200' => 200 | |
182 | - ] | |
431 | +/*echo '<p>'; | |
432 | +echo $this->Html->link('<i class="icon-plus"></i> Nouveau Matériel', [ | |
433 | + 'action' => 'add' | |
434 | +], [ | |
435 | + 'title' => 'Ajouter un matériel', | |
436 | + 'escape' => false | |
183 | 437 | ]); |
184 | -?> | |
185 | -</div> | |
438 | +echo '</p>';*/ | |
439 | +if ($USER_IS_ADMIN_OR_MORE) $displayStatusButtons($SELECTED_STATUS, $nbMateriels, $this->Html); | |
440 | +//</div> | |
186 | 441 | |
187 | -<?php | |
188 | -if ($nbMateriels > 0) { | |
442 | + | |
443 | +// <!-- SELECTEUR NOMBRE LIGNES PAR PAGE --> | |
444 | +$displayNbLinesSelector($this->Form, $this->request); | |
445 | + | |
446 | +// <!-- AFFICHAGE DES MATERIELS --> | |
447 | +if ($nbMateriels == 0) | |
448 | + echo 'Aucun matériel'; | |
449 | + | |
450 | +else { | |
189 | 451 | // $form2 = $this->Form; |
190 | 452 | // /echo $this->Form->create('materiels', ['url' => '/materiels/execActions']); |
191 | - if (isset($SELECTED_STATUS)) | |
192 | - echo $this->Form->hidden('what', [ | |
193 | - 'value' => $SELECTED_STATUS | |
194 | - ]); | |
453 | + if ($SELECTED_STATUS) echo $this->Form->hidden('what', [ | |
454 | + 'value' => $SELECTED_STATUS | |
455 | + ]); | |
195 | 456 | ?> |
196 | 457 | <table style="border-collapse: separate; border-spacing: 0;"> |
197 | 458 | <thead> |
198 | 459 | <tr> |
199 | - <?php if (isset($SELECTED_STATUS)) { echo '<th></th>'; }?> | |
460 | + <?php if ($SELECTED_STATUS) { echo '<th></th>'; }?> | |
200 | 461 | <th class="actions"><?= __('') ?></th> |
201 | 462 | <th><?= $this->Paginator->sort('designation','Désignation') ?></th> |
202 | 463 | <th><?= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th> |
... | ... | @@ -217,171 +478,45 @@ if ($nbMateriels > 0) { |
217 | 478 | // Pour changer la couleur du nom du matos si la garantie est passée |
218 | 479 | $time = Time::now(); // On récupère la date et l'heure actuelles |
219 | 480 | $today = new date("$time->year-$time->month-$time->day"); // On extrait la date pour la vérification de fin de garantie |
220 | - $today = $today->format('Ydm'); // On formatte la date initialement en 31-12-2000 (par exemple) en un format qui pourra etre comparé : 20001231 | |
481 | + //$today = $today->format('Ydm'); // On formatte la date initialement en 31-12-2000 (par exemple) en un format qui pourra etre comparé : 20001231 | |
482 | + $today = $today->format('Ymd'); // On formatte la date initialement en 31-12-2000 (par exemple) en un format qui pourra etre comparé : 20001231 | |
221 | 483 | |
222 | 484 | // BOUCLE SUR CHAQUE MATERIEL, ligne par ligne |
223 | 485 | //$mc = new MaterielsController(); |
224 | 486 | foreach ($materiels as $materiel) : |
225 | 487 | |
226 | - // TODO: Dans l'idéal, ces variables doivent etre définies par le controleur et passées à la vue | |
227 | - // (sous forme d'un tableau contenant ces droits pour CHAQUE materiel) | |
228 | - // Car la vue doit être la moins "intelligente" possible, la plus simple possible | |
229 | - $IS_CREATED = ($materiel->status == 'CREATED'); | |
230 | - $IS_VALIDATED = ($materiel->status == 'VALIDATED'); | |
231 | - $IS_TOBEARCHIVED = ($materiel->status == 'TOBEARCHIVED'); | |
232 | - $IS_ARCHIVED = ($materiel->status == 'ARCHIVED'); | |
233 | - $USER_IS_CREATOR_OR_OWNER = in_array($username, [$materiel->nom_createur, $materiel->nom_responsable]); | |
234 | - $USER_IS_SAME_GROUP_AS_MATERIEL = ( | |
235 | - ( isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id!=$idGmNa && $materiel->groupes_metier_id==$priviledgedUser->groupes_metier_id ) | |
236 | - || | |
237 | - ( isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id!=$idGtNa && $materiel->groupes_thematique_id==$priviledgedUser->groupes_thematique_id ) | |
238 | - ); | |
239 | - $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL = $USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL; | |
240 | - $CONTEXT1 = $USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL; | |
241 | - | |
242 | - // Détermination des autorisations pour tous les boutons "éditer", "supprimer", "valider", ... | |
243 | - $id = $materiel->id; | |
244 | - | |
245 | - $CAN_EDIT = $controller->isAuthorizedAction('edit', $id); | |
246 | - //$CAN_EDIT = $IS_CREATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL); | |
247 | - //$CAN_EDIT = $IS_CREATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER); | |
248 | - | |
249 | - $CAN_DELETE = $controller->isAuthorizedAction('delete', $id); | |
250 | - //$CAN_DELETE = $CAN_EDIT; | |
251 | - | |
252 | - /* | |
253 | - $CAN_VALIDATE_OR_INVALIDATE = $USER_IS_ADMIN_OR_MORE || ( ($materiel->materiel_administratif == 0) && $USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL ); | |
254 | - $CAN_VALIDATE = $IS_CREATED && $CAN_VALIDATE_OR_INVALIDATE; | |
255 | - $CAN_INVALIDATE = !$IS_CREATED && $CAN_VALIDATE_OR_INVALIDATE; | |
256 | - $CAN_TBA = $IS_VALIDATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL)); | |
257 | - $CAN_ARCHIVE = $IS_TOBEARCHIVED && $CAN_VALIDATE_OR_INVALIDATE; | |
258 | - */ | |
259 | - $CAN_INVALIDATE = $controller->isAuthorizedAction('statusCreated', $id); | |
260 | - $CAN_VALIDATE = $controller->isAuthorizedAction('statusValidated', $id); | |
261 | - $CAN_TBA = $controller->isAuthorizedAction('statusTobearchived', $id); | |
262 | - $CAN_ARCHIVE = $controller->isAuthorizedAction('statusArchived', $id); | |
263 | - | |
264 | 488 | // Date fin garantie ? |
265 | - | |
489 | + $date_color = ''; | |
266 | 490 | if ($materiel->date_fin_garantie !== NULL) { |
491 | + //debug("today $today"); | |
267 | 492 | $timeFin = new time($materiel->date_fin_garantie); |
268 | 493 | $dateFin = new date("$timeFin->year-$timeFin->month-$timeFin->day"); |
269 | - $dateFin = $dateFin->format('Ydm'); | |
494 | + //$dateFin = $dateFin->format('Ydm'); | |
495 | + $dateFin = $dateFin->format('Ymd'); | |
496 | + //debug("datefin $dateFin"); | |
497 | + if ($today>=$dateFin) $date_color = 'style="color: #FF0000"'; | |
498 | + //debug("couleur $date_color"); | |
270 | 499 | } |
271 | - if ($materiel->date_fin_garantie !== NULL) | |
272 | - $styleLien = ($today >= $dateFin) ? 'style="color: #FF0000"' : ''; | |
273 | - else | |
274 | - $styleLien = ''; | |
275 | 500 | ?> |
276 | - | |
277 | - <tr> | |
501 | + | |
502 | + <tr> | |
278 | 503 | <?php |
504 | + //<tr style="color:<?=$color>;"> | |
279 | 505 | |
280 | 506 | // (1) COLONNE SELECTION (checkbox) |
281 | - if (isset($SELECTED_STATUS)) { | |
507 | + if ($SELECTED_STATUS) { | |
282 | 508 | echo '<td class="smallText">' . $this->Form->checkbox($materiel->id, [ |
283 | 509 | 'style' => 'margin: 3px', |
284 | 510 | 'id' => $materiel->id |
285 | 511 | ]) . '</td>'; |
286 | 512 | } |
287 | - ?> | |
288 | - | |
289 | - <!-- (2) COLONNE ACTIONS (Edit, Delete, Validate, TBA, Archive) --> | |
290 | - <td class="actions" | |
291 | - style="padding: 6px 0; text-align: left;"> | |
292 | - <?php | |
293 | - | |
294 | - // 1) EDIT icon | |
295 | - /* | |
296 | - if ( | |
297 | - in_array($materiel->status, [ | |
298 | - 'CREATED', | |
299 | - // (EP 17/5/19) ben non, on peut pas si c'est validé !!! | |
300 | - //'VALIDATED' | |
301 | - ]) | |
302 | - && | |
303 | - ( | |
304 | - $USER_IS_ADMIN_OR_MORE | |
305 | - || | |
306 | - $USER_IS_CREATOR_OR_OWNER | |
307 | - || | |
308 | - ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL) | |
309 | - ) | |
310 | - ) | |
311 | - */ | |
312 | - if ($CAN_EDIT) echo $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $materiel->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]); | |
313 | - | |
314 | - // 2) VALIDER/TBA/ARCHIVER icon | |
315 | - /* | |
316 | - if ( | |
317 | - $USER_IS_ADMIN | |
318 | - || | |
319 | - ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL) | |
320 | - ) { | |
321 | - */ | |
322 | - //if ($materiel->status=='CREATED' && !$USER_IS_RESPONSABLE) { | |
323 | - if ($CAN_VALIDATE) | |
324 | - echo $this->Html->link('<i class="icon-ok-sign"></i>', [ | |
325 | - 'action' => 'statusValidated', | |
326 | - $materiel->id | |
327 | - ], [ | |
328 | - 'title' => 'Valider', | |
329 | - 'style' => 'margin: 0 2px', | |
330 | - 'escape' => false, | |
331 | - 'confirm' => 'Êtes-vous sur de vouloir valider ' . $materiel->designation . ' ?' | |
332 | - ]); | |
333 | - | |
334 | - //else if (h($materiel->status) == 'VALIDATED') { | |
335 | - if ($CAN_TBA) | |
336 | - echo $this->Html->link('<i class="icon-inbox"></i>', [ | |
337 | - 'action' => 'statusTobearchived', | |
338 | - $materiel->id | |
339 | - ], [ | |
340 | - 'title' => 'Demander la sortie de l\'inventaire', | |
341 | - 'style' => 'margin: 0 2px', | |
342 | - 'escape' => false, | |
343 | - 'confirm' => 'Êtes-vous sur de vouloir faire une demande d\'archive ' . $materiel->designation . ' ?' | |
344 | - ]); | |
345 | - | |
346 | - //else if ($materiel->status=='TOBEARCHIVED' && !$USER_IS_RESPONSABLE) | |
347 | - if ($CAN_ARCHIVE) | |
348 | - echo $this->Html->link('<i class="icon-inbox"></i>', [ | |
349 | - 'action' => 'statusArchived', | |
350 | - $materiel->id | |
351 | - ], [ | |
352 | - 'title' => 'Sortir de l\'inventaire', | |
353 | - 'style' => 'margin: 0 2px', | |
354 | - 'escape' => false, | |
355 | - 'confirm' => 'Êtes-vous sur de vouloir archiver ' . $materiel->designation . ' ?' | |
356 | - ]); | |
357 | - | |
358 | - // 3) DELETE icon | |
359 | - /* | |
360 | - if (h($materiel->status) == 'CREATED') { | |
361 | - if ( | |
362 | - $USER_IS_ADMIN_OR_MORE | |
363 | - || | |
364 | - $USER_IS_CREATOR_OR_OWNER | |
365 | - || | |
366 | - ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL) | |
367 | - ) | |
368 | - */ | |
369 | - if ($CAN_DELETE) | |
370 | - echo $this->Html->link(__('<i class="icon-trash"></i>'), [ | |
371 | - 'action' => 'delete', | |
372 | - $materiel->id | |
373 | - ], [ | |
374 | - 'title' => 'Supprimer', | |
375 | - 'style' => 'margin: 0 2px', | |
376 | - 'escape' => false, | |
377 | - 'confirm' => __('Êtes-vous sur de vouloir supprimer {0} ?', $materiel->designation) | |
378 | - ]); | |
379 | 513 | |
514 | + // <!-- (2) COLONNE ACTIONS (Edit, Delete, Validate, TBA, Archive) --> | |
515 | + $color = $displayActionButtonsForMateriel($materiel, $username, $USER_IS_RESPONSABLE, $USER_IS_ADMIN_OR_MORE, $USER_IS_SUPERADMIN, $controller, $this->Html); | |
380 | 516 | ?> |
381 | - </td> | |
382 | - | |
517 | + | |
383 | 518 | <!-- (3) LES AUTRES COLONNES (DATA : designation, num labo, hs, categ, ...) --> |
384 | - <td class="smallText"><?= $materiel->has('designation') ? $this->Html->link($materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $materiel->id],[$styleLien]) : '' ?></td> | |
519 | + <td class="smallText"><?= $materiel->has('designation') ? $this->Html->link($materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $materiel->id],[$color]) : '' ?></td> | |
385 | 520 | <td class="smallText"><?= h($materiel->numero_laboratoire) ?></td> |
386 | 521 | <td class="smallText" style="color: red"><strong><?= ($materiel->hors_service) ? 'HS' : '' ?></strong></td> |
387 | 522 | <td class="smallText"><?= $materiel->has('category') ? h($materiel->category->nom) : '' ?></td> |
... | ... | @@ -409,21 +544,21 @@ if ($nbMateriels > 0) { |
409 | 544 | break; |
410 | 545 | } |
411 | 546 | ?> |
412 | - <td class="smallText"><?= $statut ?></td> | |
547 | + <td class="smallText" <?=$color?>><?= $statut ?></td> | |
413 | 548 | |
414 | 549 | |
415 | 550 | <!-- |
416 | 551 | // (5) COLONNES Date acquisition et Etiquette posée |
417 | 552 | --> |
418 | - <td class="smallText"><?= h($materiel->date_acquisition) ?></td> | |
419 | - <td class="smallText"><?= h($materiel->etiquette)=='1' ? 'Y':'N' ?></td> | |
553 | + <td class="smallText" <?=$date_color?>><?= h($materiel->date_acquisition) ?></td> | |
554 | + <td class="smallText"><?= h($materiel->etiquette)=='1' ? 'Y':'N' ?></td> | |
420 | 555 | |
421 | 556 | <!-- |
422 | 557 | // (6) COLONNE METRO o/n |
423 | 558 | --> |
424 | - <?php if ($METRO) | |
425 | - echo '<td class="smallText">'. (h($materiel->metrologie)=='1' ? 'Y':'N').'</td>'; | |
426 | - ?> | |
559 | + <?php if ($METRO) | |
560 | + echo '<td class="smallText">'. (h($materiel->metrologie)=='1' ? 'Y':'N').'</td>'; | |
561 | + ?> | |
427 | 562 | |
428 | 563 | </tr> |
429 | 564 | <?php endforeach; ?> |
... | ... | @@ -431,56 +566,17 @@ if ($nbMateriels > 0) { |
431 | 566 | </table> |
432 | 567 | |
433 | 568 | <?php |
434 | - if (isset($SELECTED_STATUS)) { | |
435 | - switch ($SELECTED_STATUS) { | |
436 | - case 'CREATED': | |
437 | - $action = 'Valider les'; | |
438 | - break; | |
439 | - case 'VALIDATED': | |
440 | - $action = "Demander l'archivage des"; | |
441 | - break; | |
442 | - case 'TOBEARCHIVED': | |
443 | - $action = "Sortir les"; | |
444 | - break; | |
445 | - } | |
446 | - | |
447 | - if ($SELECTED_STATUS != 'ARCHIVED') { | |
448 | - //if (! ($role == 'Super Administrateur' && $SELECTED_STATUS == 'TOBEARCHIVED')) { | |
449 | - if (! ($USER_IS_SUPERADMIN && $SELECTED_STATUS=='TOBEARCHIVED') ) { | |
450 | - //echo $this->Form->submit($action . ' matériels cochés', [ | |
451 | - // 'name' => 'updateSelectedStatus', | |
452 | - // 'id' => 'updateSelectedStatus', | |
453 | - // 'style' => 'margin: 0px' | |
454 | - //]); | |
455 | - echo $this->Form->button($action . ' matériels cochés', [ 'class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'updateSelectedStatus', 'id' => 'updateSelectedStatus', 'style' => 'margin: 0px']); | |
456 | - echo "<br /><br />"; | |
457 | - } | |
458 | - } | |
459 | - //echo $this->Form->submit('Exporter la liste des matériels cochés', [ | |
460 | - // 'name' => 'export', | |
461 | - // 'id' => 'export', | |
462 | - // 'style' => 'margin: 0px;' | |
463 | - //]); | |
464 | - echo $this->Form->button('Exporter la liste des matériels cochés', ['class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'export', 'id' => 'export', 'style' => 'margin: 0px;' ]); | |
465 | - echo "<br /><br />"; | |
466 | - } | |
467 | 569 | |
468 | - if ($USER_IS_ADMIN_OR_MORE || $USER_IS_RESPONSABLE) | |
469 | - //echo $this->Form->submit('Exporter la liste complete', [ | |
470 | - // 'name' => 'exportAll', | |
471 | - // 'id' => 'exportAll', | |
472 | - // 'style' => 'margin: 0px;' | |
473 | - //]); | |
474 | - echo $this->Form->button('Exporter la liste complete', ['class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'exportAll', 'id' => 'exportAll', 'style' => 'margin: 0px;']); | |
475 | - | |
570 | + $displayColorLegend(); | |
571 | + | |
572 | + $displayActionButtonsForSelectedOrAllElements($this->Form, $SELECTED_STATUS, $USER_IS_RESPONSABLE, $USER_IS_ADMIN_OR_MORE, $USER_IS_SUPERADMIN); | |
573 | + | |
476 | 574 | echo $this->element('pagination_with_first_and_last'); |
477 | 575 | |
478 | 576 | $this->Form->end(); |
479 | -} | |
577 | + | |
578 | +} // (nbMateriels>0) | |
480 | 579 | |
481 | -else { | |
482 | - echo 'Aucun matériel'; | |
483 | -} | |
484 | 580 | ?> |
485 | 581 | </div> |
486 | 582 | |
... | ... | @@ -497,6 +593,20 @@ echo $this->element('menu_index', [ |
497 | 593 | </div> |
498 | 594 | --> |
499 | 595 | |
596 | + | |
597 | + | |
598 | + | |
599 | + | |
600 | + | |
601 | + | |
602 | + | |
603 | + | |
604 | +<!-- | |
605 | +****************************************************************************** | |
606 | + JAVASCRIPT | |
607 | +****************************************************************************** | |
608 | +--> | |
609 | + | |
500 | 610 | <script type="text/javascript"> |
501 | 611 | |
502 | 612 | // Pour changer l'url lorsque le nombre d'éléments souhaités est modifié | ... | ... |