Commit ace84fa7a8a999fe99248e427722216e8f0891fc

Authored by Etienne Pallier
2 parents 2c168334 e5f096f9

Merge branch 'dev-IRAP'

README-LABINVENT.md
... ... @@ -53,9 +53,9 @@ Logiciel testé et validé sur les configurations suivantes :
53 53  
54 54 VERSION ACTUELLE
55 55  
56   -Date: 22/06/2017
57   -Version: 2.6.9
58   - -> Bugfixes materiels/index (boutons admin inactifs)
  56 +Date: 23/06/2017
  57 +Version: 2.6.10
  58 + -> Bugfixes materiels/add/edit/validate
59 59  
60 60 Version majeure en cours (2.6): https://projects.irap.omp.eu/versions/161
61 61  
... ...
install/update_version_and_date.sh 0 → 100755
... ... @@ -0,0 +1,2 @@
  1 +vi README-LABINVENT.md
  2 +vi src/Template/Layout/default.ctp
... ...
src/Controller/AppController.php
... ... @@ -276,40 +276,40 @@ class AppController extends Controller {
276 276 Switch ($action) {
277 277 case 'add' :
278 278 $subject = "Ajout d'un matériel";
279   - $msg = "$acteur a ajouté le matériel $nom_materiel";
  279 + $msg = "$acteur a ajouté le matériel \"$nom_materiel\".";
280 280 break;
281 281 case 'edit' :
282 282 $subject = "Modification d'un matériel";
283   - $msg = "$acteur a modifié le matériel $nom_materiel";
  283 + $msg = "$acteur a modifié le matériel \"$nom_materiel\".";
284 284 break;
285 285 case 'delete' :
286 286 $subject = "Suppression d'un matériel";
287   - $msg = "$acteur a supprimé le matériel $nom_materiel";
  287 + $msg = "$acteur a supprimé le matériel \"$nom_materiel\".";
288 288 // if ($materiel->description != "") $msg .= "\n\nDescription :\n\n". $materiel->description;
289 289 break;
290 290 case 'statusValidated' :
291 291 $subject = "Validation d'un matériel";
292   - $msg = "$acteur a validé le matériel $nom_materiel";
  292 + $msg = "$acteur a validé le matériel \"$nom_materiel\".";
293 293 break;
294 294 case 'statusToBeArchived' :
295 295 $subject = "Demande d'archivage d'un matériel";
296   - $msg = "$acteur a demandé l'archivage du matériel $nom_materiel";
  296 + $msg = "$acteur a demandé l'archivage du matériel \"$nom_materiel\".";
297 297 break;
298 298 case 'statusArchived' :
299 299 $subject = "Archivage d'un matériel";
300   - $msg = "$acteur a archivé le matériel $nom_materiel";
  300 + $msg = "$acteur a archivé le matériel \"$nom_materiel\".";
301 301 break;
302 302 case 'setLabelIsPlaced' :
303 303 $subject = "Etiquette posée sur un matériel";
304   - $msg = "Etiquette posée sur le matériel $nom_materiel";
  304 + $msg = "Etiquette posée sur le matériel \"$nom_materiel\".";
305 305 break;
306 306 case 'printLabelRuban' :
307 307 $subject = "Etiquette imprimée";
308   - $msg = "L'étiquette concerant votre matériel $nom_materiel a été imprimée. Veuillez vérifier et compléter si besoin la fiche corespondante.";
  308 + $msg = "L'étiquette concerant votre matériel \"$nom_materiel\" a été imprimée.";
309 309 $mailList[0] = $materiel->email_responsable;
310 310 default :
311 311 $subject = "Action \"$action\" sur un matériel";
312   - $msg = "$acteur a effectué l'action \"$action\" sur le matériel $nom_materiel";
  312 + $msg = "$acteur a effectué l'action \"$action\" sur le matériel \"$nom_materiel\".";
313 313 break;
314 314 }
315 315 }
... ... @@ -376,11 +376,14 @@ class AppController extends Controller {
376 376 $role = TableRegistry::get('Users')->find()->select('role')->where(['email =' => $mail])->first()['role'];
377 377  
378 378 if ($action != 'statusValidated' && $materiel != null)
379   - $message .= " Veuillez vérifier et compléter si besoin la fiche corespondante.";
  379 + $message .= "\nVeuillez vérifier et compléter si besoin la fiche corespondante.";
  380 +
  381 + // Génération du message "Vous recevez ce message en tant que $role"
  382 + // Si $role innexistant (lorsque c'est un mail de la liste entrée en configuration), le message est plutot "Vous recevez ce message car vous avez demandé à le recevoir. [...]"
380 383 if ($role)
381 384 $role = 'en tant que ' . $role;
382 385 else
383   - $role = 'car vous avez demandé à le recevoir. Pour faire retirer votre mail de la liste, veuillez contacter un SuperAdmin';
  386 + $role = 'car vous avez demandé à le recevoir. Pour faire retirer votre mail de la liste, veuillez contacter un SuperAdmin.';
384 387  
385 388 $message .= "\n\n" . 'Vous recevez ce message ' . $role;
386 389 $this->sendEmailTo("$subject", $message, $mail, $configuration);
... ...
src/Controller/MaterielsController.php
... ... @@ -850,7 +850,7 @@ class MaterielsController extends AppController {
850 850 // Ne pas oublier les espaces après chaque virgule/fin de ligne (sinon le message d'erreur est pas joli)
851 851  
852 852 foreach ($mandatoryFields as $field){
853   - if (!isset($field)){
  853 + if (!isset($field) || $field == '' ){
854 854 $this->Flash->error($msgError);
855 855 return $this->redirect(['action' => 'edit', $id]);
856 856 }
... ...
src/Template/Layout/default.ctp
... ... @@ -101,7 +101,7 @@ $cakeDescription = 'Labinvent 2';
101 101 </i></td>
102 102 <td id="version">
103 103 <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) -->
104   - <font color="black">VERSION 2.6.9 (22/06/2017)</font>
  104 + <font color="black">VERSION 2.6.10 (23/06/2017)</font>
105 105 <br/>
106 106 <font color="black"><a href="<?php
107 107  
... ...
src/Template/Materiels/edit.ctp
... ... @@ -263,7 +263,7 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie)
263 263 ]);
264 264 } else {
265 265 echo $this->Form->input('nom_responsable', [
266   - 'label' => 'Nom du propriétaire',
  266 + 'label' => 'Nom de l\'utilisateur',
267 267 'disabled' => $isReadonlyField('nom_responsable', $myReadonlyFields),
268 268 'empty' => 'Choisir un utilisateur',
269 269 'default' => $username,
... ...
src/Template/Materiels/find.ctp
... ... @@ -240,6 +240,7 @@
240 240 <th class="actions"><?= __('') ?></th>
241 241 <th><?= $this->Paginator->sort('designation','Désignation') ?></th>
242 242 <th><?= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th>
  243 + <th><?= $this->Paginator->sort('hors_service', 'HS') ?></th>
243 244 <th><?= $this->Paginator->sort('categorie_id', 'Catégorie') ?></th>
244 245 <th><?= $this->Paginator->sort('nom_responsable', $configuration->nom_responsable) ?></th>
245 246 <th><?= $this->Paginator->sort('status', 'Statut') ?></th>
... ... @@ -251,19 +252,30 @@
251 252 <tbody>
252 253 <!-- Affichage des lignes de données -->
253 254 <?php
254   - foreach ( $_results as $material ) :
255   - echo '<tr>';
256   - echo ' <td class="actions" style="padding: 6px 0; text-align: left;">';
  255 + foreach ( $_results as $materiel ) :
  256 +
  257 + if ($materiel->date_fin_garantie !== NULL) {
  258 + $timeFin = new time($materiel->date_fin_garantie);
  259 + $dateFin = new date("$timeFin->year-$timeFin->month-$timeFin->day");
  260 + $dateFin = $dateFin->format('Ydm');
  261 + }
  262 + if($materiel->date_fin_garantie !== NULL) $styleLien = ($today >= $dateFin) ? 'style="color: #FF0000"' : '' ;
  263 + else $styleLien = '';
  264 + ?>
  265 + <tr>
  266 + <td class="actions" style="padding: 6px 0; text-align: left;">
  267 +
  268 + <?php
257 269 /*
258 270 * ACTION 'edit'
259 271 */
260   - if (in_array($material->status, ['CREATED', 'VALIDATED'])) {
261   - if(($role == 'Utilisateur' && (in_array($username, [$material->nom_createur, $material->nom_responsable]))) || (in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur']))
  272 + if (in_array($materiel->status, ['CREATED', 'VALIDATED'])) {
  273 + if(($role == 'Utilisateur' && (in_array($username, [$materiel->nom_createur, $materiel->nom_responsable]))) || (in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur']))
262 274 || ($role == 'Responsable' &&
263   - ((isset($userConnected->groupes_metier_id) && $userConnected->groupes_metier_id != $idGmNa && $material->groupes_metier_id == $userConnected->groupes_metier_id)
264   - ||(isset($userConnected->groupe_thematique_id) && $userConnected->groupe_thematique_id != $idGtNa && $material->groupes_thematique_id == $userConnected->groupe_thematique_id)))) {
  275 + ((isset($userConnected->groupes_metier_id) && $userConnected->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $userConnected->groupes_metier_id)
  276 + ||(isset($userConnected->groupe_thematique_id) && $userConnected->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id)))) {
265 277 echo $this->Html->link('<i class="icon-pencil"></i>',
266   - ['action' => 'edit', $material->id],
  278 + ['action' => 'edit', $materiel->id],
267 279 ['title' => 'Éditer', 'style' => 'margin: 0 2px', 'escape' => false]
268 280 );
269 281 }
... ... @@ -271,7 +283,7 @@
271 283 if(in_array($role, ['Administration Plus', 'Super Administrateur'])) {
272 284  
273 285 echo $this->Html->link('<i class="icon-pencil"></i>',
274   - ['action' => 'edit', $material->id],
  286 + ['action' => 'edit', $materiel->id],
275 287 ['title' => 'Éditer', 'style' => 'margin: 0 2px', 'escape' => false]
276 288 );
277 289 }
... ... @@ -280,56 +292,60 @@
280 292  
281 293 if(in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])
282 294 || ($role == 'Responsable' &&
283   - ((isset($userConnected->groupes_metier_id) && $userConnected->groupes_metier_id != $idGmNa && $material->groupes_metier_id == $userConnected->groupes_metier_id)
284   - ||(isset($userConnected->groupe_thematique_id) && $userConnected->groupe_thematique_id != $idGtNa && $material->groupes_thematique_id == $userConnected->groupe_thematique_id)))) {
285   - if(h($material->status) == 'CREATED') {
  295 + ((isset($userConnected->groupes_metier_id) && $userConnected->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $userConnected->groupes_metier_id)
  296 + ||(isset($userConnected->groupe_thematique_id) && $userConnected->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id)))) {
  297 + if(h($materiel->status) == 'CREATED') {
286 298 echo $this->Html->link('<i class="icon-ok-sign"></i>',
287   - ['action' => 'statusValidated', $material->id],
  299 + ['action' => 'statusValidated', $materiel->id],
288 300 ['title' => 'Valider', 'style' => 'margin: 0 2px', 'escape' => false,
289   - 'confirm' => 'Êtes-vous sur de vouloir valider '.$material->designation.' ?']);
  301 + 'confirm' => 'Êtes-vous sur de vouloir valider '.$materiel->designation.' ?']);
290 302 }
291   - else if (h($material->status) == 'VALIDATED') {
  303 + else if (h($materiel->status) == 'VALIDATED') {
292 304 echo $this->Html->link('<i class="icon-inbox"></i>',
293   - ['action' => 'statusToBeArchived', $material->id],
  305 + ['action' => 'statusToBeArchived', $materiel->id],
294 306 ['title' => 'Demander la sortie de l\'inventaire', 'style' => 'margin: 0 2px', 'escape' => false,
295   - 'confirm' => 'Êtes-vous sur de vouloir faire une demande d\'archive '.$material->designation.' ?']);
  307 + 'confirm' => 'Êtes-vous sur de vouloir faire une demande d\'archive '.$materiel->designation.' ?']);
296 308  
297 309 }
298   - else if (h($material->status) == 'TOBEARCHIVED' && $role != 'Responsable' && $role != 'Super Administrateur'){
  310 + else if (h($materiel->status) == 'TOBEARCHIVED' && $role != 'Responsable' && $role != 'Super Administrateur'){
299 311 echo $this->Html->link('<i class="icon-inbox"></i>',
300   - ['action' => 'statusArchived', $material->id],
  312 + ['action' => 'statusArchived', $materiel->id],
301 313 ['title' => 'Sortir de l\'inventaire', 'style' => 'margin: 0 2px', 'escape' => false,
302   - 'confirm' => 'Êtes-vous sur de vouloir archivé '.$material->designation.' ?']);
  314 + 'confirm' => 'Êtes-vous sur de vouloir archivé '.$materiel->designation.' ?']);
303 315 }
304 316 }
305 317 /*
306 318 * ACTION 'delete'
307 319 */
308 320 // Seul un materiel CREATED peut être supprimer
309   - if ($material->status == 'CREATED') {
310   - if(($role != 'Utilisateur' && $role != 'Responsable') || in_array($username, [$material->nom_createur, $material->nom_responsable])
  321 + if ($materiel->status == 'CREATED') {
  322 + if(($role != 'Utilisateur' && $role != 'Responsable') || in_array($username, [$materiel->nom_createur, $materiel->nom_responsable])
311 323 || ($role == 'Responsable' &&
312   - ((isset($userConnected->groupes_metier_id) && $userConnected->groupes_metier_id != $idGmNa && $material->groupes_metier_id == $userConnected->groupes_metier_id)
313   - ||(isset($userConnected->groupe_thematique_id) && $userConnected->groupe_thematique_id != $idGtNa && $material->groupes_thematique_id == $userConnected->groupe_thematique_id)))) {
  324 + ((isset($userConnected->groupes_metier_id) && $userConnected->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $userConnected->groupes_metier_id)
  325 + ||(isset($userConnected->groupe_thematique_id) && $userConnected->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id)))) {
314 326 echo $this->Html->link(__('<i class="icon-trash"></i>'),
315   - ['action' => 'delete', $material->id],
316   - ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $material->designation)]
  327 + ['action' => 'delete', $materiel->id],
  328 + ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $materiel->designation)]
317 329 );
318 330 }
319 331 }
320   - echo '</td>';
321   -
  332 +/* echo '</td>';
  333 +
322 334 echo '<td class="smallText">';
323   - echo $this->Html->link ( h($material->designation), [
  335 + echo $this->Html->link ( h($materiel->designation), [
324 336 'action' => 'view',
325   - $material->id
  337 + $materiel->id
326 338 ], ['title' => 'Détails']);
327 339 echo '</td>';
328 340 echo '<td class="smallText">';
329   - echo $material->numero_laboratoire;
  341 + echo $materiel->numero_laboratoire;
330 342 echo '</td>';
331 343  
332   - $cat = $categories->find()->where(['id =' => $material->categorie_id])->first();
  344 + echo '<td class="smallText">';
  345 + echo ($materiel->hors_service) ? 'HS' : '';
  346 + echo'</td>';
  347 +
  348 + $cat = $categories->find()->where(['id =' => $materiel->categorie_id])->first();
333 349 echo '<td class="smallText">';
334 350 echo $this->Html->link ( $cat['nom'], [
335 351 'controller' => 'categories',
... ... @@ -338,20 +354,36 @@
338 354 ]);
339 355 echo '</td>';
340 356 echo '<td class="smallText">';
341   - echo $material->nom_responsable;
  357 + echo $materiel->nom_responsable;
342 358 echo '</td>';
343 359 echo '<td class="smallText">';
344   - echo $material->status;
  360 + echo $materiel->status;
345 361 echo '</td>';
346 362 echo '<td class="smallText">';
347   - echo $material->date_acquisition;
  363 + echo $materiel->date_acquisition;
348 364 echo '</td>';
349 365 echo '<td class="smallText">';
350   - echo $material->fournisseur;
  366 + echo $materiel->fournisseur;
351 367 echo '</td>';
352 368 echo '<td class="smallText">';
353   - echo $material->lieu_detail;
354   - echo '</td>';
  369 + echo $materiel->lieu_detail;
  370 + echo '</td>'; */
  371 +
  372 + // Le code au-dessous est presque le même code (à é-" ajouts près) mais en plus joli et plus compact
  373 + ?>
  374 +
  375 + </td>
  376 + <td class="smallText"><?= $materiel->has('designation') ? $this->Html->link($materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $materiel->id]) : '' ?></td>
  377 + <td class="smallText"><?= h($materiel->numero_laboratoire) ?></td>
  378 + <td class="smallText" style="color: red"><strong><?= ($materiel->hors_service) ? 'HS' : '' ?></strong></td>
  379 + <td class="smallText"><?= $materiel->has('category') ? h($materiel->category->nom) : '' ?></td>
  380 + <td class="smallText"><?= $materiel->has('organisme') ? h($materiel->organisme->nom) : '' ?></td>
  381 + <td class="smallText"><?= h($materiel->numero_inventaire_organisme) ?></td>
  382 + <td class="smallText"><?= h($materiel->nom_responsable) ?></td>
  383 + <td class="smallText"><?= $materiel->has('fournisseur') ? h($materiel->fournisseur) : ''?></td>
  384 + <td class="smallText"><?= $materiel->has('lieu_detail') ? h($materiel->lieu_detail) : ''?></td>
  385 +
  386 + <?php
355 387 echo '<tr>';
356 388 endforeach;
357 389 echo '</tbody>';
... ...
src/Template/Materiels/index.ctp
... ... @@ -120,10 +120,11 @@ if ($nbMateriels &gt; 0) {
120 120 <th class="actions"><?= __('') ?></th>
121 121 <th><?= $this->Paginator->sort('designation','Désignation') ?></th>
122 122 <th><?= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th>
  123 + <th><?= $this->paginator->sort('hors_service', 'HS') ?></th>
123 124 <th><?= $this->Paginator->sort('categorie_id', 'Catégorie') ?></th>
124 125 <th><?= $this->Paginator->sort('organisme_id', 'Org.') ?></th>
125 126 <th><?= $this->Paginator->sort('numero_inventaire_organisme', 'N° Invent. Org.') ?></th>
126   - <th><?= $this->Paginator->sort('nom_responsable', 'Nom du propriétaire') ?></th>
  127 + <th><?= $this->Paginator->sort('nom_responsable', 'Nom de l\'utilisateur') ?></th>
127 128 <th><?= $this->Paginator->sort('status', 'Statut') ?></th>
128 129 <th><?= $this->Paginator->sort('date_acquisition', 'Date Achat') ?></th>
129 130 <th><?= $this->Paginator->sort('etiquette', 'Et') ?></th>
... ... @@ -132,16 +133,13 @@ if ($nbMateriels &gt; 0) {
132 133 </thead>
133 134 <tbody>
134 135  
135   - <?php
136   - // Pour changer la couleur du nom du matos si la garantie est passée
137   - $time = Time::now(); // On récupère la date et l'heure actuelles
138   - $today = new date("$time->year-$time->month-$time->day"); // On extrait la date pour la vérification de fin de garantie
139   - $today = $today->format('Ydm'); // On formatte la date initialement en 31-12-2000 (par exemple) en un format qui pourra etre comparé : 20001231
140   - ?>
141   -
142   - <?php foreach ($materiels as $materiel): ?>
  136 + <?php
  137 + // Pour changer la couleur du nom du matos si la garantie est passée
  138 + $time = Time::now(); // On récupère la date et l'heure actuelles
  139 + $today = new date("$time->year-$time->month-$time->day"); // On extrait la date pour la vérification de fin de garantie
  140 + $today = $today->format('Ydm'); // On formatte la date initialement en 31-12-2000 (par exemple) en un format qui pourra etre comparé : 20001231
  141 + foreach ($materiels as $materiel):
143 142  
144   - <?php
145 143 if ($materiel->date_fin_garantie !== NULL) {
146 144 $timeFin = new time($materiel->date_fin_garantie);
147 145 $dateFin = new date("$timeFin->year-$timeFin->month-$timeFin->day");
... ... @@ -208,6 +206,7 @@ if ($nbMateriels &gt; 0) {
208 206 </td>
209 207 <td class="smallText"><?= $materiel->has('designation') ? $this->Html->link($materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $materiel->id],[$styleLien]) : '' ?></td>
210 208 <td class="smallText"><?= h($materiel->numero_laboratoire) ?></td>
  209 + <td class="smallText" style="color: red"><strong><?= ($materiel->hors_service) ? 'HS' : '' ?></strong></td>
211 210 <td class="smallText"><?= $materiel->has('category') ? h($materiel->category->nom) : '' ?></td>
212 211 <td class="smallText"><?= $materiel->has('organisme') ? h($materiel->organisme->nom) : '' ?></td>
213 212 <td class="smallText"><?= h($materiel->numero_inventaire_organisme) ?></td>
... ... @@ -263,7 +262,7 @@ if ($nbMateriels &gt; 0) {
263 262 'id' => 'updateSelectedStatus',
264 263 'style' => 'margin: 0px'
265 264 ]);
266   - echo "<br />" ;
  265 + echo "<br /><br />" ;
267 266 }
268 267 }
269 268 echo $this->Form->submit ( 'Exporter la liste des matériels cochés', [
... ... @@ -271,7 +270,7 @@ if ($nbMateriels &gt; 0) {
271 270 'id' => 'export',
272 271 'style' => 'margin: 0px;'
273 272 ]);
274   - echo "<br />" ;
  273 + echo "<br /><br />" ;
275 274 }
276 275  
277 276 if(in_array($role, ['Responsable', 'Administration', 'Administration Plus', 'Super Administrateur'])):
... ...
src/Template/Materiels/view.ctp
... ... @@ -500,7 +500,7 @@ $USER_IS_RESPONSABLE_AND_SAME_GROUP =
500 500 $displayElement(__('Fournisseur'), $materiel->has('fournisseur') ? $materiel->fournisseur->nom : '');
501 501 $displayElement(__('Lieu de stockage'), $materiel->has('site') ? h($materiel->site->nom) : '');
502 502 $displayElement(__('Détail lieu de stockage'), h($materiel->lieu_detail));
503   - $displayElement(__('Nom du propriétaire'), $this->Html->link(h($materiel->nom_responsable), 'mailto:' . h($materiel->email_responsable)));
  503 + $displayElement(__('Nom de l\'utilisateur'), $this->Html->link(h($materiel->nom_responsable), 'mailto:' . h($materiel->email_responsable)));
504 504 $displayElement(__('N. interne (labo)'), h($materiel->numero_laboratoire));
505 505 $gestionnaire = TableRegistry::get('Users')->find()->where([
506 506 'id =' => $materiel->gestionnaire_id
... ...