Commit aca4ed9be4febe1876a03ce0c08c2de0920dda27

Authored by Alexandre
1 parent 8eb47d08

Version: 2.5.4.0

!!! Se placer dans database/update et exécuter le script
./db-update-2016-06-30.sh !!!

statut suivi + modif icone + liste - cacher n/a + divers ajustements +
envoi mails + bugfixes 
	   
Demande terminé : https://projects.irap.omp.eu/issues/3759	
				  https://projects.irap.omp.eu/issues/3923   
				  https://projects.irap.omp.eu/issues/3922 
				  https://projects.irap.omp.eu/issues/3917  
	   
Version majeure en cours (2.5): https://projects.irap.omp.eu/versions/99

ROADMAP: https://projects.irap.omp.eu/projects/labinvent/roadmap
README-LABINVENT.md
... ... @@ -50,10 +50,17 @@ Logiciel testé et validé sur les configurations suivantes :
50 50  
51 51 VERSION ACTUELLE
52 52  
53   -Date: 29/06/2016
54   -Version: 2.5.3.1
  53 +Date: 30/06/2016
  54 +Version: 2.5.4.0
55 55  
56   -bugfixes
  56 +!!! Se placer dans database/update et exécuter le script ./db-update-2016-06-30.sh !!!
  57 +
  58 +statut suivi + modif icone + liste - cacher n/a + divers ajustements + envoi mails + bugfixes
  59 +
  60 +Demande terminé : https://projects.irap.omp.eu/issues/3759
  61 + https://projects.irap.omp.eu/issues/3923
  62 + https://projects.irap.omp.eu/issues/3922
  63 + https://projects.irap.omp.eu/issues/3917
57 64  
58 65 Version majeure en cours (2.5): https://projects.irap.omp.eu/versions/99
59 66  
... ... @@ -92,6 +99,8 @@ Liste complète des évolutions: https://gitlab.irap.omp.eu/epallier/labinvent/c
92 99  
93 100 MODIFICATIONS STRUCTURELLES A FAIRE MANUELLEMENT APRES LA MISE A JOUR (git pull)
94 101  
  102 +30/06/16 (v2.5.4.0) Se placer dans database/update et exécuter le script ./db-update-2016-06-30.sh
  103 +
95 104 28/06/16 (v2.5.1.0) Se placer dans database/update et exécuter le script ./db-update-2016-06-28.sh
96 105  
97 106 27/06/16 (v2.5.0.0) Se placer dans database/update et exécuter le script ./db-update-2016-06-27.sh
... ...
database/labinvent_2.1_12-05-16.sql
... ... @@ -255,6 +255,7 @@ CREATE TABLE IF NOT EXISTS `suivis` (
255 255 `panne_resolu` tinyint(1) DEFAULT 1,
256 256 `groupes_thematique_id` int(11) DEFAULT NULL,
257 257 `groupes_metier_id` int(11) DEFAULT NULL,
  258 + `statut` varchar(30) DEFAULT 'En cours',
258 259 `nom_createur` varchar(45) DEFAULT NULL COMMENT 'nom du createur de la fiche',
259 260 `nom_modificateur` varchar(45) DEFAULT NULL COMMENT 'nom du modificateur de la fiche',
260 261 `created` datetime DEFAULT NULL COMMENT 'date et heure de creation de la fiche',
... ...
database/update/db-update-2016-06-30.sh 0 → 100755
... ... @@ -0,0 +1,34 @@
  1 +#!/bin/bash
  2 +
  3 +# Pour Mac OS recent (10.10, Yosemite), la syntaxe du SED est differente
  4 +# Il faut donc faire une copie de ce fichier et transformer les instructions sed a l'interieur
  5 +# Pour cela, il suffit d'executer ces 2 lignes :
  6 +# cp ce_script.sh ce_script_macosx.sh
  7 +# sed -e "s/ -i / -i '' /" -i '' ce_script_macosx.sh
  8 +
  9 +if [ ! -f ../../config/app.php ] ; then
  10 +echo "Vous devez executer ce script depuis le dossier database/update/"
  11 +exit 1
  12 +fi
  13 +
  14 +
  15 +# Get login, pass, dbname, and hostname
  16 +username=$(grep "/\*d\*/'username'" ../../config/app.php | cut -d"'" -f4)
  17 +password=$(grep "/\*d\*/'password'" ../../config/app.php | cut -d"'" -f4)
  18 +database=$(grep "/\*d\*/'database'" ../../config/app.php | cut -d"'" -f4)
  19 +host=$(grep "/\*d\*/'host'" ../../config/app.php | cut -d"'" -f4)
  20 +
  21 +
  22 +cp -p ./script_sql/db-update-2016-06-30.sql ./script_sql/db-update-2016-06-30-build.sql
  23 +
  24 +# Execute sql update script
  25 +sed -e "s/database/$database/" -i ./script_sql/db-update-2016-06-30-build.sql
  26 +mysql --user=$username --password=$password -h $host < ./script_sql/db-update-2016-06-30-build.sql
  27 +
  28 +# Delete cakephp cache
  29 +sudo rm ../../tmp/cache/models/*
  30 +sudo rm ../../tmp/cache/persistent/*
  31 +
  32 +sudo chmod -R 777 ../../tmp
  33 +sudo chmod -R 777 ../../vendor
  34 +sudo chmod -R 777 ../../webroot
... ...
database/update/script_sql/db-update-2016-06-30.sql 0 → 100755
... ... @@ -0,0 +1,3 @@
  1 +use database;
  2 +
  3 +ALTER TABLE `suivis` ADD `statut` varchar(30) DEFAULT 'En cours';
... ...
src/Controller/AppController.php
... ... @@ -191,6 +191,45 @@ class AppController extends Controller
191 191 }
192 192  
193 193 /**
  194 + * @param string $subject
  195 + * @param string $message
  196 + * @param string[] $to
  197 + */
  198 + public function sendEmailTo($subject, $message, $to = null) {
  199 +
  200 + $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  201 +
  202 + if ($to != null && !$configuration->test) {
  203 +
  204 + for($i = 0; $i < sizeof($to); $i++) {
  205 +
  206 +
  207 + if (filter_var($to[$i], FILTER_VALIDATE_EMAIL)) {
  208 + $email = new Email();
  209 +
  210 + $etiquetteFrom = explode("@", $configuration->sender_mail);
  211 +
  212 + if($configuration->envoi_mail_management_dev) {
  213 + $email->transport('dev')
  214 + ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  215 + ->to($to[$i])
  216 + ->subject("[LabInvent] ".$subject)
  217 + ->send($message);
  218 + } else {
  219 + $email->transport('default')
  220 + ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  221 + ->to($to[$i])
  222 + ->subject("[LabInvent] ".$subject)
  223 + ->send($message);
  224 + }
  225 + }
  226 +
  227 + }
  228 + }
  229 +
  230 + }
  231 +
  232 + /**
194 233 * Envoi d'un email à la gestion (et aux devs) pour prévenir qu'un matériel a été créé ou modifié
195 234 * (cf howto dans http://book.cakephp.org/2.0/fr/core-utility-libraries/email.html)
196 235 * @param string $subject
... ... @@ -317,21 +356,23 @@ class AppController extends Controller
317 356 if($role == null) $role = 'Utilisateur';
318 357  
319 358 $subject = 'Ajout d\'un matériel';
320   - $message = $createurName.' (email = '.$createurEmail.', role = '.$role.') a ajouté le matériel "'.$materiel->designation.'" et vous a nommé propriétaire de ce matériel.';
  359 + $message = $createurName.' (email = '.$createurEmail.', role = '.$role.') a ajouté le matériel "'.$materiel->designation.'" ('.$materiel->numero_laboratoire.') et vous a nommé propriétaire de ce matériel.';
321 360  
322 361 if ($toEmail != null && !$configuration->test) {
323 362 if (filter_var($toEmail, FILTER_VALIDATE_EMAIL)) {
324 363 $email = new Email();
325   -
  364 +
  365 + $etiquetteFrom = explode("@", $configuration->sender_mail);
  366 +
326 367 if($configuration->envoi_mail_management_dev) {
327 368 $email->transport('dev')
328   - ->from(["labinvent2@".$configuration->from_mail => "Labinvent2"])
  369 + ->from([$configuration->sender_mail => $etiquetteFrom[0]])
329 370 ->to($toEmail)
330 371 ->subject("[LabInvent] ".$subject)
331 372 ->send($message);
332 373 } else {
333 374 $email->transport('default')
334   - ->from(["labinvent2@".$configuration->from_mail => "Labinvent2"])
  375 + ->from([$configuration->sender_mail => $etiquetteFrom[0]])
335 376 ->to($toEmail)
336 377 ->subject("[LabInvent] ".$subject)
337 378 ->send($message);
... ...
src/Controller/DocumentsController.php
... ... @@ -184,10 +184,13 @@ class DocumentsController extends AppController
184 184  
185 185 if(isset($this->passedArgs[2]) && $this->passedArgs[2] == 'photo') {
186 186 $this->set('photo', 1);
187   - }
188   -
  187 + $typesD = $this->Documents->TypeDocuments->find('list', [ 'keyField' => 'id', 'valueField' => 'nom'])->where(['nom =' => 'Photo']);
  188 + $idType = $this->Documents->TypeDocuments->find()->where(['nom =' => 'Photo'])->first()['id'];
  189 + $this->set('idType', $idType);
  190 + } else {
  191 + $typesD = $this->Documents->TypeDocuments->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'TypeDocuments.nom']);
  192 + }
189 193  
190   - $typesD = $this->Documents->TypeDocuments->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'TypeDocuments.nom']);
191 194  
192 195 $this->set(compact('document', 'typesD'));
193 196 $this->set('_serialize', ['document']);
... ...
src/Controller/MaterielsController.php
... ... @@ -252,10 +252,30 @@ class MaterielsController extends AppController
252 252 $materiel = $this->Materiels->patchEntity($materiel, $this->request->data);
253 253 if ($this->Materiels->save($materiel)) {
254 254 $this->Flash->success(__('Le matériel a bien été ajouté.'));
  255 +
255 256 $this->sendEmailToManagement($materiel->id);
  257 +
256 258 if($materiel->nom_createur != $materiel->nom_responsable) {
257 259 $this->sendEmailToCreate($materiel->id);
258 260 }
  261 +
  262 + $message = $materiel->get('nom_createur').' a ajouté le matériel '.$materiel->get('designation').' ('.$materiel->numero_laboratoire.')';
  263 +
  264 + $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $materiel->get('groupes_metier_id')])->orWhere(['role =' => 'Responsable', 'groupe_thematique_id =' => $materiel->get('groupes_thematique_id')])->toArray();
  265 + $mails = [];
  266 + for($i = 0; $i < sizeof($mailsResp); $i++) {
  267 + $mails[$i] = $mailsResp[$i]['email'];
  268 + }
  269 + $this->sendEmailTo('Ajout d\'un matériel', $message, $mails);
  270 +
  271 + $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->orWhere(['role =' => 'Administration'])->toArray();
  272 + $mails = [];
  273 + for($i = 0; $i < sizeof($mailsResp); $i++) {
  274 + $mails[$i] = $mailsResp[$i]['email'];
  275 + }
  276 + $this->sendEmailTo('Ajout d\'un matériel', $message, $mails);
  277 +
  278 +
259 279 return $this->redirect(['action' => 'view', $materiel->id]);
260 280 } else {
261 281 $this->Flash->error(__('Le matériel n\'a pas pu être ajouté.'));
... ... @@ -307,6 +327,10 @@ class MaterielsController extends AppController
307 327 if ($this->Materiels->save($materiel)) {
308 328 $this->Flash->success(__('Le matériel a bien été édité.'));
309 329 $this->sendEmailToManagement($id);
  330 + if($materiel->nom_modificateur != $materiel->nom_responsable) {
  331 + $message = $materiel->get('nom_modificateur').' a édité le matériel '.$materiel->get('designation').' ('.$materiel->numero_laboratoire.')';
  332 + $this->sendEmailTo('Modification d\'un matériel', $message, [$materiel->get('email_responsable')]);
  333 + }
310 334 return $this->redirect(['action' => 'view', $id]);
311 335 } else {
312 336 $this->Flash->error(__('Le matériel n\'a pas pu être édité.'));
... ... @@ -448,9 +472,11 @@ class MaterielsController extends AppController
448 472  
449 473 if($newStatus == 'VALIDATED') {
450 474 if(!isset($materiel->nom_responsable) || !isset($materiel->fournisseur) || !isset($materiel->numero_commande) || !isset($materiel->organisme_id) || !isset($materiel->date_reception) || !isset($materiel->prix_ht)) {
451   - $this->Flash->success('Pour valider un matériel, les champs suivants ne doivent pas être vide : Nom propriétaire, Fournisseur, Numéro de commande, Organisme, prix et date de reception');
  475 + $this->Flash->error('Pour valider un matériel, les champs suivants ne doivent pas être vide : Nom propriétaire, Fournisseur, Numéro de commande, Organisme, prix et date de reception');
452 476 return $this->redirect(['action' => 'edit', $id]);
453 477 }
  478 + $message = 'Le matériel '.$materiel->get('designation').' ('.$materiel->numero_laboratoire.') a été validé.';
  479 + $this->sendEmailTo('Validation d\'un matériel', $message, [$materiel->get('email_responsable')]);
454 480 }
455 481  
456 482 if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) {
... ...
src/Controller/SuivisController.php
... ... @@ -235,6 +235,7 @@ class SuivisController extends AppController
235 235 $periode_interventionRequest,
236 236 $this->getConditionForFieldNumber('type_suivi_id'),
237 237 $this->getConditionForField('organisme'),
  238 + $this->getConditionForField('statut'),
238 239 $this->getConditionForFieldNumber('groupes_metier_id'),
239 240 $this->getConditionForFieldNumber('groupes_thematique_id'),
240 241 ];
... ...
src/Model/Entity/Suivi.php
... ... @@ -23,6 +23,7 @@ use Cake\ORM\Entity;
23 23 * @property string $commentaire
24 24 * @property string $nom_createur
25 25 * @property string $nom_modificateur
  26 + * @property string $statut
26 27 * @property bool panne_resolu
27 28 * @property \Cake\I18n\Time $created
28 29 * @property \Cake\I18n\Time $modified
... ...
src/Template/Documents/add.ctp
... ... @@ -16,7 +16,14 @@
16 16 }
17 17  
18 18 echo $this->Form->input('nom');
19   - echo $this->Form->input('type_document_id', ['label' => 'Type', 'options' => $typesD, 'default' => 1]);
  19 +
  20 + if(isset($photo)) {
  21 + echo $this->Form->hidden('type_document_id', ['label' => 'Type', 'options' => $typesD, 'default' => $idType]);
  22 + }
  23 + else {
  24 + echo $this->Form->input('type_document_id', ['label' => 'Type', 'options' => $typesD, 'default' => 1]);
  25 + }
  26 +
20 27 echo $this->Form->input('description');
21 28 echo $this->Form->input('chemin_file', ['label' => 'Fichier ('.substr($configuration->taille_max_doc/(1024*1024), 0, 4).' Mo max)', 'type' => 'file']);
22 29  
... ...
src/Template/Documents/edit.ctp
... ... @@ -16,7 +16,14 @@
16 16 }
17 17  
18 18 echo $this->Form->input('nom');
19   - echo $this->Form->input('type_document_id', ['label' => 'Type', 'options' => $typesD, 'default' => 1]);
  19 +
  20 + if(isset($photo)) {
  21 + echo $this->Form->hidden('type_document_id', ['label' => 'Type', 'options' => $typesD]);
  22 + }
  23 + else {
  24 + echo $this->Form->input('type_document_id', ['label' => 'Type', 'options' => $typesD]);
  25 + }
  26 +
20 27 echo $this->Form->input('description');
21 28  
22 29 echo $this->Form->hidden('chemin_file', ['label' => 'Fichier ('.substr($configuration->taille_max_doc/(1024*1024), 0, 4).' Mo max)', 'type' => 'file']);
... ...
src/Template/Documents/index.ctp
... ... @@ -9,7 +9,7 @@
9 9 <th><?= $this->Paginator->sort('suivi_id', 'Suivi') ?></th>
10 10 <th><?= $this->Paginator->sort('type_document_id', 'Type') ?></th>
11 11 <th><?= $this->Paginator->sort('type_doc', 'Extension fichier') ?></th>
12   - <th><?= $this->Paginator->sort('photo', 'Photo') ?></th>
  12 + <th><?= $this->Paginator->sort('photo', 'Miniature') ?></th>
13 13 <th class="actions"><?= __('') ?></th>
14 14 </tr>
15 15 </thead>
... ... @@ -40,12 +40,12 @@
40 40 <?= $this->Html->link(__('<i class="icon-eye-open"></i>'), ['action' => 'view', $document->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?>
41 41 <?php
42 42 if($document->photo) {
43   - echo $this->Form->postLink(__('<i class="icon-download"></i>'), '/webroot/img/photos/'.$document->id.'.'.$document->type_doc, ['title' => 'Télécharger', 'style' => 'margin: 0 2px', 'escape' => false ]);
  43 + echo $this->Form->postLink(__('<i class="icon-download-alt"></i>'), '/webroot/img/photos/'.$document->id.'.'.$document->type_doc, ['title' => 'Télécharger', 'style' => 'margin: 0 2px', 'escape' => false ]);
44 44 }else {
45   - echo $this->Form->postLink(__('<i class="icon-download"></i>'), '/webroot/files/'.$document->id.'.'.$document->type_doc, ['title' => 'Télécharger', 'style' => 'margin: 0 2px', 'escape' => false ]);
  45 + echo $this->Form->postLink(__('<i class="icon-download-alt"></i>'), '/webroot/files/'.$document->id.'.'.$document->type_doc, ['title' => 'Télécharger', 'style' => 'margin: 0 2px', 'escape' => false ]);
46 46 }
47 47 ?>
48   - <?= $this->Html->link(__('<i class="icon-edit"></i>'), ['action' => 'edit', $document->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false]) ?>
  48 + <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $document->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false]) ?>
49 49  
50 50 <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $document->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $document->id)]) ?>
51 51 </td>
... ...
src/Template/Documents/view.ctp
... ... @@ -2,7 +2,16 @@
2 2  
3 3 <div class="documents view">
4 4 <h2>Détail document</h2>
5   -
  5 + <?php
  6 + if($document->photo) {
  7 + echo '<div style="text-align: center;">';
  8 + echo $this->Html->image ( 'photos/' . $document->id.'.'.$document->type_doc, [
  9 + 'alt' => 'Photo',
  10 + 'style' => 'max-width: 300px; text-align: center;'
  11 + ]);
  12 + echo '</div>';
  13 + }
  14 + ?>
6 15 <table style="margin-bottom: 30px;">
7 16 <tr><th style="width: 250px;"></th><th></th></tr>
8 17  
... ... @@ -18,6 +27,13 @@
18 27 $displayElement(__('Nom'), h($document->nom));
19 28 $displayElement(__('Type'), $document->has('type_document') ? h($document->type_document->nom) : '');
20 29  
  30 + if($document->photo) {
  31 + $p = 'Oui';
  32 + } else {
  33 + $p = 'Non';
  34 + }
  35 + $displayElement(__('Miniature'), $p);
  36 +
21 37 echo '<tr><td><strong>'.__('Description').' </strong></td><td>'.nl2br($document->description).'</td></tr>';
22 38  
23 39 $displayElement(__('Extension fichier'), h($document->type_doc));
... ... @@ -29,8 +45,6 @@
29 45 echo '<tr><td><strong>Fichier</strong></td><td><a href="'.$this->request->webroot.'webroot/files/'.$document->id.'.'.$document->type_doc.'">Télécharger fichier</a></td></tr>';
30 46 }
31 47  
32   -
33   -
34 48  
35 49  
36 50 ?>
... ...
src/Template/GroupesMetiers/index.ctp
... ... @@ -10,7 +10,9 @@
10 10 </tr>
11 11 </thead>
12 12 <tbody>
13   - <?php foreach ($groupesMetiers as $groupesMetier): ?>
  13 + <?php foreach ($groupesMetiers as $groupesMetier):
  14 + if($groupesMetier->nom != 'N/A') {
  15 + ?>
14 16 <tr>
15 17 <td class="smallText"><?= $this->Html->link($groupesMetier->nom, ['action' => 'view', $groupesMetier->id]) ?></td>
16 18 <td class="smallText"><?= h($groupesMetier->description) ?></td>
... ... @@ -28,7 +30,9 @@
28 30 </td>
29 31  
30 32 </tr>
31   - <?php endforeach; ?>
  33 + <?php
  34 + }
  35 + endforeach; ?>
32 36 </tbody>
33 37 </table>
34 38  
... ...
src/Template/GroupesThematiques/index.ctp
... ... @@ -10,7 +10,8 @@
10 10 </tr>
11 11 </thead>
12 12 <tbody>
13   - <?php foreach ($groupesThematiques as $groupesThematique): ?>
  13 + <?php foreach ($groupesThematiques as $groupesThematique):
  14 + if($groupesThematique->nom != 'N/A') {?>
14 15 <tr>
15 16 <td class="smallText"><?= $this->Html->link($groupesThematique->nom, ['action' => 'view', $groupesThematique->id]) ?></td>
16 17 <td class="smallText"><?= h($groupesThematique->description) ?></td>
... ... @@ -28,7 +29,9 @@
28 29 </td>
29 30  
30 31 </tr>
31   - <?php endforeach; ?>
  32 + <?php
  33 + }
  34 + endforeach; ?>
32 35 </tbody>
33 36 </table>
34 37  
... ...
src/Template/Layout/default.ctp
... ... @@ -94,7 +94,7 @@ $cakeDescription = &#39;Labinvent 2&#39;;
94 94 </i></td>
95 95 <td id="version">
96 96 <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) -->
97   - <font color="black">VERSION 2.5.3.1 (29/06/2016)</font>
  97 + <font color="black">VERSION 2.5.4.0 (30/06/2016)</font>
98 98 </td>
99 99 </tr>
100 100 </table>
... ...
src/Template/Materiels/view.ctp
... ... @@ -402,18 +402,22 @@ if (h ( $materiel-&gt;status ) == &#39;ARCHIVED&#39;)
402 402 <?php if (!empty($materiel->suivis)) { ?>
403 403 <table>
404 404 <tr>
  405 + <th><?= __('N°') ?></th>
405 406 <th><?= __('Prestataire') ?></th>
406 407 <th><?= __('Date du contrôle') ?></th>
407 408 <th><?= __('Date prochain contrôle') ?></th>
408 409 <th><?= __('Type d\'intervention') ?></th>
  410 + <th><?= __('Statut') ?></th>
409 411 <th style="width: 50px;"><?= __('Détail') ?></th>
410 412 </tr>
411 413 <?php foreach ($materiel->suivis as $suivis): ?>
412 414 <tr>
  415 + <td><?= $this->Html->link('Suivi '.$suivis->id, ['controller' => 'suivis', 'action' => 'view', $suivis->id]) ?></td>
413 416 <td><?= h($suivis->organisme) ?></td>
414 417 <td><?= h($suivis->date_controle) ?></td>
415 418 <td><?= h($suivis->date_prochain_controle) ?></td>
416 419 <td><?= $typeSuivis->find()->where(['id =' => h($suivis->type_suivi_id)])->first()['nom']; ?></td>
  420 + <td><?= h($suivis->statut) ?></td>
417 421  
418 422 <td class="actions">
419 423 <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Suivis', 'action' => 'view', $suivis->id], ['escape' => false, 'style' => 'margin:0'])?>
... ... @@ -435,6 +439,7 @@ if (h ( $materiel-&gt;status ) == &#39;ARCHIVED&#39;)
435 439 <?php if (!empty($materiel->emprunts)) { ?>
436 440 <table>
437 441 <tr>
  442 + <th><?= __('N°') ?></th>
438 443 <th><?= __('Emprunteur') ?></th>
439 444 <th><?= __('Type d\'Emprunt') ?></th>
440 445 <th><?= __('Où') ?></th>
... ... @@ -456,6 +461,7 @@ foreach ( $materiel-&gt;emprunts as $emprunts ) :
456 461 }
457 462 ?>
458 463 <tr>
  464 + <td><?= $this->Html->link('Emprunt '.$emprunts->id, ['controller' => 'emprunts', 'action' => 'view', $emprunts->id]) ?></td>
459 465 <td><?= h($emprunts->nom_emprunteur) ?></td>
460 466 <td><?= h($type) ?></td>
461 467 <td><?= h($lieu) ?></td>
... ... @@ -488,7 +494,7 @@ foreach ( $materiel-&gt;emprunts as $emprunts ) :
488 494 <tr>
489 495 <th><?= __('Nom') ?></th>
490 496 <th><?= __('Type') ?></th>
491   - <th><?= __('Photo') ?></th>
  497 + <th><?= __('Miniature') ?></th>
492 498 <th style="width: 50px;"><?= __('Détail') ?></th>
493 499 <th style="width: 50px;"><?= __('Télécharger') ?></th>
494 500 <?php
... ... @@ -512,7 +518,8 @@ foreach ( $materiel-&gt;documents as $documents ) :
512 518 ] )->first () ['nom'];
513 519 ?>
514 520 <tr>
515   - <td><?= h($documents->nom) ?></td>
  521 +
  522 + <td><?= $this->Html->link($documents->nom, ['controller' => 'documents', 'action' => 'view', $documents->id]) ?></td>
516 523 <td><?= $type ?></td>
517 524 <td><?= $p ?></td>
518 525  
... ... @@ -523,13 +530,13 @@ foreach ( $materiel-&gt;documents as $documents ) :
523 530 <td class="actions">
524 531 <?php
525 532 if ($documents->photo) {
526   - echo $this->Html->link ( __ ( '<i class="icon-download"></i>' ), '/webroot/img/photos/' . $documents->id . '.' . $documents->type_doc, [
  533 + echo $this->Html->link ( __ ( '<i class="icon-download-alt"></i>' ), '/webroot/img/photos/' . $documents->id . '.' . $documents->type_doc, [
527 534 'title' => 'Télécharger',
528 535 'style' => 'margin:0',
529 536 'escape' => false
530 537 ] );
531 538 } else {
532   - echo $this->Html->link ( __ ( '<i class="icon-download"></i>' ), '/webroot/files/' . $documents->id . '.' . $documents->type_doc, [
  539 + echo $this->Html->link ( __ ( '<i class="icon-download-alt"></i>' ), '/webroot/files/' . $documents->id . '.' . $documents->type_doc, [
533 540 'title' => 'Télécharger',
534 541 'style' => 'margin:0',
535 542 'escape' => false
... ... @@ -541,7 +548,7 @@ foreach ( $materiel-&gt;documents as $documents ) :
541 548 if(($role == 'Utilisateur' && (in_array($username, [$materiel->nom_createur, $materiel->nom_responsable]))) || (in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) || ($role == 'Responsable' && ($materiel->groupes_metier_id == $userConnected->groupes_metier_id || $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id))) {
542 549 ?>
543 550 <td class="actions">
544   - <?= $this->Html->link(__('<i class="icon-edit"></i>'), ['controller' => 'Documents', 'action' => 'edit', $documents->id], ['escape' => false, 'style' => 'margin:0'])?>
  551 + <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['controller' => 'Documents', 'action' => 'edit', $documents->id], ['escape' => false, 'style' => 'margin:0'])?>
545 552 </td>
546 553 <td class="actions">
547 554 <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0', 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $documents->id)])?>
... ...
src/Template/Suivis/edit.ctp
... ... @@ -18,6 +18,10 @@
18 18 'options' => $typeSuivis
19 19 ]);
20 20  
  21 + echo $this->Form->input ('statut', [
  22 + 'options' => ['En cours' => 'En cours', 'Terminé' => 'Terminé'],
  23 + ]);
  24 +
21 25 echo $this->Form->input('date_controle', [
22 26 'type' => 'text',
23 27 'label' => 'Date intervention',
... ...
src/Template/Suivis/find.ctp
... ... @@ -26,6 +26,12 @@ $r = isset ($_results);
26 26 // FORMULAIRE DE RECHERCHE
27 27 echo $this->Form->create();
28 28  
  29 + echo $this->Form->input ('s_statut', [
  30 + 'label' => 'Statut',
  31 + 'empty' => 'Tous',
  32 + 'options' => ['En cours' => 'En cours', 'Terminé' => 'Terminé'],
  33 + ]);
  34 +
29 35 // Type suivi
30 36 echo $this->Form->input ( 's_type_suivi_id', [
31 37 'label' => 'Type de suivi',
... ... @@ -103,6 +109,7 @@ $r = isset ($_results);
103 109 <th><?= $this->Paginator->sort('date_controle', 'Date intervention') ?></th>
104 110 <th><?= $this->Paginator->sort('date_prochain_controle', 'Date prochaine intervention') ?></th>
105 111 <th><?= $this->Paginator->sort('type_suivi_id', "Type d'intervention") ?></th>
  112 + <th><?= $this->Paginator->sort('statut', "Statut") ?></th>
106 113 <th style="width: 20px;"></th>
107 114 <th style="width: 20px;"></th>
108 115 <th style="width: 20px;"></th>
... ... @@ -123,6 +130,7 @@ $r = isset ($_results);
123 130 <td class="smallText"><?= h($suivi->date_controle) ?></td>
124 131 <td class="smallText"><?= h($suivi->date_prochain_controle) ?></td>
125 132 <td class="smallText"><?= $s_type_suivis->find()->where(['id =' => h($suivi->type_suivi_id)])->first()['nom'] ?></td>
  133 + <td class="smallText"><?= h($suivi->statut) ?></td>
126 134  
127 135 <?php
128 136 echo '<td class="actions" style="padding: 6px 0;">';
... ...
src/Template/Suivis/index.ctp
... ... @@ -10,6 +10,7 @@
10 10 <th><?= $this->Paginator->sort('date_controle', 'Date intervention') ?></th>
11 11 <th><?= $this->Paginator->sort('date_prochain_controle', 'Date prochaine intervention') ?></th>
12 12 <th><?= $this->Paginator->sort('type_suivi_id', "Type d'intervention") ?></th>
  13 + <th><?= $this->Paginator->sort('statut', "Statut") ?></th>
13 14 <th class="actions"><?= __('') ?></th>
14 15 </tr>
15 16 </thead>
... ... @@ -22,6 +23,7 @@
22 23 <td class="smallText"><?= h($suivi->date_controle) ?></td>
23 24 <td class="smallText"><?= h($suivi->date_prochain_controle) ?></td>
24 25 <td class="smallText"><?= $suivi->has('type_suivi') ? h($suivi->type_suivi->nom) : '' ?></td>
  26 + <td class="smallText"><?= h($suivi->statut) ?></td>
25 27  
26 28 <td class="actions" style="padding: 6px 0;">
27 29 <?= $this->Html->link(__('<i class="icon-eye-open"></i>'), ['action' => 'view', $suivi->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?>
... ...
src/Template/Suivis/view.ctp
... ... @@ -33,6 +33,7 @@
33 33  
34 34 $displayElement(__('Materiel'), $suivi->has('materiel') ? $this->Html->link($suivi->materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $suivi->materiel->id]) : '');
35 35 $displayElement(__('Numéro interne (labo)'), $suivi->has('materiel') ? h($suivi->materiel->numero_laboratoire) : '');
  36 + $displayElement(__('Statut'), h($suivi->statut));
36 37 $displayElement(__('Date Intervention'), h($suivi->date_controle));
37 38 $displayElement(__('Date Prochaine Intervention'), h($suivi->date_prochain_controle));
38 39 $displayElement(__('Type d\'intervention'), $suivi->has('type_suivi') ? h($suivi->type_suivi->nom) : '');
... ... @@ -80,20 +81,20 @@
80 81  
81 82 ?>
82 83 <tr>
83   - <td><?= h($documents->nom) ?></td>
  84 + <td><?= $this->Html->link($documents->nom, ['controller' => 'documents', 'action' => 'view', $documents->id]) ?></td>
84 85 <td><?= $type ?></td>
85 86  
86 87 <td class="actions">
87 88 <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Documents', 'action' => 'view', $documents->id], ['escape' => false, 'style' => 'margin:0']) ?>
88 89 </td>
89 90 <td class="actions">
90   - <?= $this->Html->link(__('<i class="icon-download"></i>'), '/webroot/files/'.$documents->id.'.'.$documents->type_doc, ['title' => 'Télécharger', 'style' => 'margin:0', 'escape' => false ]) ?>
  91 + <?= $this->Html->link(__('<i class="icon-download-alt"></i>'), '/webroot/files/'.$documents->id.'.'.$documents->type_doc, ['title' => 'Télécharger', 'style' => 'margin:0', 'escape' => false ]) ?>
91 92 </td>
92 93 <?php
93 94 if(($role == 'Utilisateur' && in_array($username, [$suivi->nom_createur])) || (in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur'])) || $role == 'Responsable' && ($suivi->groupes_metier_id == $userConnected->groupes_metier_id || $suivi->groupes_thematique_id == $userConnected->groupe_thematique_id)) {
94 95 ?>
95 96 <td class="actions">
96   - <?= $this->Html->link(__('<i class="icon-edit"></i>'), ['controller' => 'Documents', 'action' => 'edit', $documents->id], ['escape' => false, 'style' => 'margin:0'])?>
  97 + <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['controller' => 'Documents', 'action' => 'edit', $documents->id], ['escape' => false, 'style' => 'margin:0'])?>
97 98 </td>
98 99 <td class="actions">
99 100 <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0', 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $documents->id)]) ?>
... ...
src/Template/TypeDocuments/index.ctp
... ... @@ -11,6 +11,8 @@
11 11 <tbody>
12 12 <?php
13 13 foreach ($typeDocuments as $typeDocument):
  14 +
  15 + if($typeDocument->nom != 'N/A') {
14 16 ?>
15 17  
16 18 <tr>
... ... @@ -31,6 +33,7 @@
31 33 </tr>
32 34  
33 35 <?php
  36 + }
34 37 endforeach;
35 38 ?>
36 39 </tbody>
... ...
tests/Fixture/SuivisFixture.php
... ... @@ -29,7 +29,8 @@ class SuivisFixture extends TestFixture
29 29 'type_frequence' => ['type' => 'string', 'length' =>30, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'fixed' => null],
30 30 'panne_resolu' => ['type' => 'boolean', 'length' =>null, 'null' => true, 'default' => 1, 'comment' => '', 'precision' => null, 'fixed' => null],
31 31 'commentaire' => ['type' => 'string', 'length' => 100, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'fixed' => null],
32   - 'nom_createur' => ['type' => 'string', 'length' => 45, 'null' => true, 'default' => null, 'comment' => 'nom du createur de la fiche', 'precision' => null, 'fixed' => null],
  32 + 'statut' => ['type' => 'string', 'length' => 30, 'null' => true, 'default' => 'En cours', 'comment' => '', 'precision' => null, 'fixed' => null],
  33 + 'nom_createur' => ['type' => 'string', 'length' => 45, 'null' => true, 'default' => null, 'comment' => 'nom du createur de la fiche', 'precision' => null, 'fixed' => null],
33 34 'nom_modificateur' => ['type' => 'string', 'length' => 45, 'null' => true, 'default' => null, 'comment' => 'nom du modificateur de la fiche', 'precision' => null, 'fixed' => null],
34 35 'created' => ['type' => 'datetime', 'length' => null, 'null' => true, 'default' => null, 'comment' => 'date et heure de creation de la fiche', 'precision' => null],
35 36 'modified' => ['type' => 'datetime', 'length' => null, 'null' => true, 'default' => null, 'comment' => 'date et heure de modif de la fiche', 'precision' => null],
... ...