Commit 3ef8f907776d03861a6f2109ab679fb190c51e34

Authored by Alexandre
1 parent 1f42188e

Version: 2.4.5.0

guide utilisateur + bouton retour (form) + liste autres (menu) + garde
fou materiel/edit (partie admin) + attribut panne (suivi) + bugfixes

Demande (terminé) : https://projects.irap.omp.eu/issues/3842
					https://projects.irap.omp.eu/issues/3798
					https://projects.irap.omp.eu/issues/3786
					https://projects.irap.omp.eu/issues/3792
					https://projects.irap.omp.eu/issues/3802
					https://projects.irap.omp.eu/issues/3806
					
					   
Version majeure en cours (2.4):
https://projects.irap.omp.eu/versions/107

ROADMAP: https://projects.irap.omp.eu/projects/labinvent/roadmap
README-LABINVENT.md
... ... @@ -50,23 +50,18 @@ Logiciel testé et validé sur les configurations suivantes :
50 50  
51 51 VERSION ACTUELLE
52 52  
53   -Date: 17/06/2016
54   -Version: 2.4.4.4
55   -
56   -!!!
57   -Exécuter les lignes suivantes (à la racine) :
58   -cp -p config/app.php ../config/app.php.ORIG
59   -cp config/app.default.php ../config/app.php
60   -
61   -Puis completez app.php (datasources => default & test (username, password, database)) avec app.php.ORIG
62   -!!!
63   -
64   -Qrcode (url) + modele script update bd & cache + script copie app.php
65   -
66   -Demande (terminé) : https://projects.irap.omp.eu/issues/3841
67   -
68   -Demande (en cours) : https://projects.irap.omp.eu/issues/3843
69   -
  53 +Date: 20/06/2016
  54 +Version: 2.4.5.0
  55 +
  56 +guide utilisateur + bouton retour (form) + liste autres (menu) + garde fou materiel/edit (partie admin) + attribut panne (suivi) + bugfixes
  57 +
  58 +Demande (terminé) : https://projects.irap.omp.eu/issues/3842
  59 + https://projects.irap.omp.eu/issues/3798
  60 + https://projects.irap.omp.eu/issues/3786
  61 + https://projects.irap.omp.eu/issues/3792
  62 + https://projects.irap.omp.eu/issues/3802
  63 + https://projects.irap.omp.eu/issues/3806
  64 +
70 65  
71 66 Version majeure en cours (2.4): https://projects.irap.omp.eu/versions/107
72 67  
... ...
src/Controller/AppController.php
... ... @@ -173,6 +173,11 @@ class AppController extends Controller
173 173 };
174 174 $this->set('displayElement', $displayElement);
175 175  
  176 + if(in_array($this->request->params['action'], ['edit', 'add'])) {
  177 + $this->request->session()->write("retourForm", true);
  178 + }
  179 +
  180 +
176 181 }
177 182  
178 183 // "le materiel", "le suivi"...
... ...
src/Controller/GroupesThematiquesController.php
... ... @@ -70,6 +70,9 @@ class GroupesThematiquesController extends AppController
70 70 $materiels = TableRegistry::get('Materiels')->find('all')->where(['groupes_thematique_id =' => $id]);
71 71 $this->set('materiels', $materiels);
72 72  
  73 + $utilisateurs = TableRegistry::get('Users')->find('all')->where(['groupe_thematique_id =' => $id]);
  74 + $this->set('utilisateurs', $utilisateurs);
  75 +
73 76 $this->set('groupesThematique', $groupesThematique);
74 77 $this->set('_serialize', ['groupesThematique']);
75 78 }
... ...
src/Controller/MaterielsController.php
... ... @@ -179,8 +179,8 @@ class MaterielsController extends AppController
179 179 'contain' => ['SurCategories', 'Categories', 'SousCategories', 'GroupesThematiques', 'GroupesMetiers', 'Organismes', 'Sites', 'Documents', 'Emprunts', 'Suivis']
180 180 ]);
181 181  
182   - $sites = TableRegistry::get('Sites')->find();
183   - $typeSuivis = TableRegistry::get('TypeSuivis')->find();
  182 + $sites = TableRegistry::get('Sites');
  183 + $typeSuivis = TableRegistry::get('TypeSuivis');
184 184  
185 185 $this->set('sites', $sites);
186 186 $this->set('typeSuivis', $typeSuivis);
... ...
src/Controller/SuivisController.php
... ... @@ -89,6 +89,8 @@ class SuivisController extends AppController
89 89 $suivi = $this->Suivis->newEntity();
90 90 if ($this->request->is('post')) {
91 91 $suivi = $this->Suivis->patchEntity($suivi, $this->request->data);
  92 +
  93 + $suivi->panne_resolu = false;
92 94 if ($this->Suivis->save($suivi)) {
93 95 $this->Flash->success(__('Le suivi a bien été ajouté.'));
94 96 return $this->redirect(['controller' => 'Materiels', 'action' => 'view', $this->passedArgs[0]]);
... ...
src/Template/Element/menu.ctp
... ... @@ -27,6 +27,14 @@
27 27 ['controller' => 'Emprunts', 'action' => 'index'],
28 28 ['escape' => false]) ?></li>
29 29  
  30 + <?php
  31 + echo '<li>';
  32 + echo $this->Html->link('<i class="icon-list"></i> Voir les autres listes',
  33 + ['controller' => 'pages', 'action' => 'tools_menu_sm'],
  34 + ['escape' => false]);
  35 + echo '</li>';
  36 + ?>
  37 +
30 38 <?php if(isset($role) && !(in_array($role, ['Utilisateur']))): ?>
31 39 <li><?= $this->Html->link(__('<i class="icon-wrench"></i> Outils'),
32 40 ['controller' => 'pages', 'action' => 'tools'],
... ...
src/Template/Element/menu_view.ctp
... ... @@ -17,7 +17,12 @@
17 17 <!-- RETOUR action -->
18 18 <li>
19 19 <?php
20   - echo $this->Html->link ('<i class="icon-arrow-left"></i> Retour', 'javascript:window.history.go(-1)', ['escape' => false]);
  20 + if($this->request->session()->read("retourForm")) {
  21 + echo $this->Html->link ('<i class="icon-arrow-left"></i> Retour', 'javascript:window.history.go(-2)', ['escape' => false]);
  22 + } else {
  23 + echo $this->Html->link ('<i class="icon-arrow-left"></i> Retour', 'javascript:window.history.go(-1)', ['escape' => false]);
  24 + }
  25 +
21 26 ?>
22 27 </li>
23 28  
... ...
src/Template/GroupesMetiers/view.ctp
... ... @@ -29,60 +29,62 @@
29 29  
30 30 </table>
31 31  
32   - <h3 id="t_suivis" style="cursor: pointer;">
  32 + <h3 id="t_suivis" style="cursor: pointer;">
33 33 <i class="icon-chevron-down" style="font-size: 14px;" id="i_suivis"></i>
34   - <span style="text-decoration: underline;">Materiels associées (<?= $materiels->count()?>)</span>
  34 + <span style="text-decoration: underline;">Utilisateurs associées (<?= $utilisateurs->count()?>)</span>
35 35 </h3>
36 36 <div id="suivis" style="margin-bottom: 20px;">
37 37  
38   - <?php if (!empty($materiels)) { ?>
  38 + <?php if (!empty($utilisateurs)) { ?>
39 39 <table>
40 40 <tr>
41 41 <th><?= __('Désignation') ?></th>
42 42 <th style="width:50px;"><?= __('Détail') ?></th>
43 43 </tr>
44   - <?php foreach ($materiels as $materiel): ?>
  44 + <?php foreach ($utilisateurs as $utilisateur): ?>
45 45 <tr>
46 46  
47   - <td><?= $this->Html->link(h($materiel->designation), ['controller' => 'Materiels', 'action' => 'view', h($materiel->id)]); ?></td>
  47 + <td><?= $this->Html->link(h($utilisateur->nom), ['controller' => 'Users', 'action' => 'view', h($utilisateur->id)]); ?></td>
48 48  
49 49 <td class="actions">
50   - <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Materiels', 'action' => 'view', $materiel->id], ['escape' => false, 'style' => 'margin:0']) ?>
  50 + <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Users', 'action' => 'view', $utilisateur->id], ['escape' => false, 'style' => 'margin:0']) ?>
51 51 </td>
52 52 </tr>
53 53 <?php endforeach; ?>
54 54 </table>
55   - <?php }else { echo 'Aucun matériel lié à ce '.$configuration->nom_groupe_metier; } ?>
  55 + <?php }else { echo 'Aucun utilisateur lié à ce '.$configuration->nom_groupe_metier; } ?>
56 56 </div>
57 57  
58 58  
59 59 <h3 id="t_suivis" style="cursor: pointer;">
60 60 <i class="icon-chevron-down" style="font-size: 14px;" id="i_suivis"></i>
61   - <span style="text-decoration: underline;">Utilisateurs associées (<?= $utilisateurs->count()?>)</span>
  61 + <span style="text-decoration: underline;">Materiels associées (<?= $materiels->count()?>)</span>
62 62 </h3>
63 63 <div id="suivis" style="margin-bottom: 20px;">
64 64  
65   - <?php if (!empty($utilisateurs)) { ?>
  65 + <?php if (!empty($materiels)) { ?>
66 66 <table>
67 67 <tr>
68 68 <th><?= __('Désignation') ?></th>
69 69 <th style="width:50px;"><?= __('Détail') ?></th>
70 70 </tr>
71   - <?php foreach ($utilisateurs as $utilisateur): ?>
  71 + <?php foreach ($materiels as $materiel): ?>
72 72 <tr>
73 73  
74   - <td><?= $this->Html->link(h($utilisateur->nom), ['controller' => 'Users', 'action' => 'view', h($utilisateur->id)]); ?></td>
  74 + <td><?= $this->Html->link(h($materiel->designation), ['controller' => 'Materiels', 'action' => 'view', h($materiel->id)]); ?></td>
75 75  
76 76 <td class="actions">
77   - <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Users', 'action' => 'view', $utilisateur->id], ['escape' => false, 'style' => 'margin:0']) ?>
  77 + <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Materiels', 'action' => 'view', $materiel->id], ['escape' => false, 'style' => 'margin:0']) ?>
78 78 </td>
79 79 </tr>
80 80 <?php endforeach; ?>
81 81 </table>
82   - <?php }else { echo 'Aucun utilisateur lié à ce '.$configuration->nom_groupe_metier; } ?>
  82 + <?php }else { echo 'Aucun matériel lié à ce '.$configuration->nom_groupe_metier; } ?>
83 83 </div>
84 84  
85 85  
  86 +
  87 +
86 88 </div>
87 89  
88 90 <div class="actions">
... ...
src/Template/GroupesThematiques/view.ctp
... ... @@ -29,6 +29,31 @@
29 29  
30 30 </table>
31 31  
  32 + <h3 id="t_suivis" style="cursor: pointer;">
  33 + <i class="icon-chevron-down" style="font-size: 14px;" id="i_suivis"></i>
  34 + <span style="text-decoration: underline;">Utilisateurs associées (<?= $utilisateurs->count()?>)</span>
  35 + </h3>
  36 + <div id="suivis" style="margin-bottom: 20px;">
  37 +
  38 + <?php if (!empty($utilisateurs)) { ?>
  39 + <table>
  40 + <tr>
  41 + <th><?= __('Désignation') ?></th>
  42 + <th style="width:50px;"><?= __('Détail') ?></th>
  43 + </tr>
  44 + <?php foreach ($utilisateurs as $utilisateur): ?>
  45 + <tr>
  46 +
  47 + <td><?= $this->Html->link(h($utilisateur->nom), ['controller' => 'Users', 'action' => 'view', h($utilisateur->id)]); ?></td>
  48 +
  49 + <td class="actions">
  50 + <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Users', 'action' => 'view', $utilisateur->id], ['escape' => false, 'style' => 'margin:0']) ?>
  51 + </td>
  52 + </tr>
  53 + <?php endforeach; ?>
  54 + </table>
  55 + <?php }else { echo 'Aucun utilisateur lié à ce '.$configuration->nom_groupe_thematique; } ?>
  56 + </div>
32 57  
33 58  
34 59 <h3 id="t_suivis" style="cursor: pointer;">
... ...
src/Template/Layout/default.ctp
... ... @@ -94,7 +94,7 @@ $cakeDescription = &#39;Labinvent 2.0&#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.4.4.4 (17/06/2016)</font>
  97 + <font color="black">VERSION 2.4.5.0 (20/06/2016)</font>
98 98 </td>
99 99 </tr>
100 100 </table>
... ...
src/Template/Materiels/edit.ctp
... ... @@ -206,25 +206,33 @@ if ($IS_VALIDATED)
206 206  
207 207 if(in_array($role, ['Administration', 'Administration Plus'])) {
208 208 echo '<div style="border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; margin-bottom: 0; background: #EEE;"><span style="font-size: 9px; color: red;">Partie administrative</span>';
  209 +
  210 + echo $this->Form->input('adminEdit', [
  211 + 'type' => 'checkbox',
  212 + 'label' => 'Editer la partie administrative',
  213 + 'onchange' => 'changeAdminEdit();',
  214 + 'default' => false
  215 + ]);
  216 +
209 217 echo $this->Form->input('eotp', [
210 218 'label' => 'Centre financier/EOTP',
211   - 'disabled' => $isReadonlyField('eotp', $myReadonlyFields)
  219 + 'disabled' => true
212 220 ]);
213 221 echo $this->Form->input('numero_commande', [
214 222 'label' => 'Numéro de commande',
215   - 'disabled' => $isReadonlyField('numero_commande', $myReadonlyFields)
  223 + 'disabled' => true
216 224 ]);
217 225 echo $this->Form->input('code_comptable', [
218 226 'label' => 'Code comptable',
219   - 'disabled' => $isReadonlyField('code_comptable', $myReadonlyFields)
  227 + 'disabled' => true
220 228 ]);
221 229 echo $this->Form->input('numero_inventaire_organisme', [
222 230 'label' => 'N° inventaire organisme',
223   - 'disabled' => $isReadonlyField('numero_inventaire_organisme', $myReadonlyFields)
  231 + 'disabled' => true
224 232 ]);
225 233 echo $this->Form->input('numero_inventaire_old', [
226 234 'label' => 'Ancien N° inventaire',
227   - 'disabled' => $isReadonlyField('numero_inventaire_old', $myReadonlyFields)
  235 + 'disabled' => true
228 236 ]);
229 237 echo '</div>';
230 238 }
... ...
src/Template/Materiels/view.ctp
... ... @@ -270,7 +270,7 @@
270 270 <td><?= h($suivis->organisme) ?></td>
271 271 <td><?= h($suivis->date_controle) ?></td>
272 272 <td><?= h($suivis->date_prochain_controle) ?></td>
273   - <td><?= $typeSuivis->where(['id =' => h($suivis->type_suivi_id)])->first()['nom']; ?></td>
  273 + <td><?= $typeSuivis->find()->where(['id =' => h($suivis->type_suivi_id)])->first()['nom']; ?></td>
274 274  
275 275 <td class="actions">
276 276 <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Suivis', 'action' => 'view', $suivis->id], ['escape' => false, 'style' => 'margin:0']) ?>
... ... @@ -300,12 +300,13 @@
300 300 <th style="width:50px;"><?= __('Détail') ?></th>
301 301 </tr>
302 302 <?php foreach ($materiel->emprunts as $emprunts):
  303 +
303 304 $type = 'Externe';
304 305 $lieu = $emprunts['laboratoire'];
305 306 if ($emprunts['emprunt_interne'] == 1)
306 307 {
307 308 $type = 'Interne';
308   - $lieu = $sites->where(['id =' => h($emprunts->site_id)])->first()['nom'].'-'.h($emprunts->e_lieu_detail);
  309 + $lieu = $sites->find()->where(['id =' => h($emprunts->site_id)])->first()['nom'].'-'.h($emprunts->e_lieu_detail);
309 310 }
310 311 ?>
311 312 <tr>
... ...
src/Template/Pages/about.ctp
... ... @@ -32,9 +32,9 @@ Licence GPL (http://www.gnu.org/copyleft/gpl.html)
32 32 See http://www.gnu.org/licenses
33 33 </pre>
34 34 EOD;
  35 +echo '<br>';
  36 +echo '<a href="'.$this->request->webroot.'webroot/doc/userguide/labinvent2_userguide.pdf">Guide utilisateur</a>';
35 37 ?>
36   -
37   -
38 38 </div>
39 39  
40 40 <div class="actions">
... ...
src/Template/Pages/tools_menu_cat.ctp 0 → 100755
... ... @@ -0,0 +1,29 @@
  1 +
  2 +<div class="index">
  3 + <h2><i class="icon-wrench"></i> Voir les liste des Catégories</h2>
  4 + <table cellpadding="0" cellspacing="0">
  5 + <tr><th></th></tr>
  6 + <?php
  7 +
  8 +
  9 + echo '<tr><td>';
  10 + echo $this->Html->link('Liste des domaines', ['controller' => 'sur_categories', 'sort' => 'nom']);
  11 + echo '</td></tr>';
  12 +
  13 + echo '<tr><td>';
  14 + echo $this->Html->link('Liste des catégories', ['controller' => 'categories', 'sort' => 'nom']);
  15 + echo '</td></tr>';
  16 +
  17 + echo '<tr><td>';
  18 + echo $this->Html->link('Liste des sous-catégories', ['controller' => 'sous_categories', 'sort' => 'nom']);
  19 + echo '</td></tr>';
  20 +
  21 +
  22 +
  23 + ?>
  24 + </table>
  25 +</div>
  26 +
  27 + <div class="actions">
  28 + <?php echo $this->element('menu') ?>
  29 + </div>
... ...
src/Template/Pages/tools_menu_sm.ctp 0 → 100755
... ... @@ -0,0 +1,56 @@
  1 +<div class="index">
  2 +<h2><i class="icon-wrench"></i> Voir les autres listes</h2>
  3 +<table cellpadding="0" cellspacing="0">
  4 +<tr><th></th></tr>
  5 +<?php
  6 +
  7 +
  8 +
  9 +echo '<tr><td>';
  10 +echo $this->Html->link('Voir les liste des Catégories', ['controller' => 'pages', 'action' => 'tools_menu_cat']);
  11 +echo '</td></tr>';
  12 +
  13 +echo '<tr><td>';
  14 +echo $this->Html->link('Liste des sites', ['controller' => 'sites', 'sort' => 'nom']);
  15 +echo '</td></tr>';
  16 +
  17 +echo '<tr><td>';
  18 +echo $this->Html->link('Liste des organismes', ['controller' => 'organismes', 'sort' => 'nom']);
  19 +echo '</td></tr>';
  20 +
  21 +echo '<tr><td>';
  22 +echo $this->Html->link('Liste des types de suivis', ['controller' => 'type_suivis', 'sort' => 'nom']);
  23 +echo '</td></tr>';
  24 +
  25 +$names = explode(" ", $configuration->nom_groupe_thematique);
  26 +if(isset($names[1])) {
  27 + $nom = $names[0].'s '.$names[1].'s';
  28 +}
  29 +else {
  30 + $nom = $names[0].'s';
  31 +}
  32 +echo '<tr><td>';
  33 +echo $this->Html->link('Liste des '.$nom, ['controller' => 'groupes_thematiques', 'sort' => 'nom']);
  34 +echo '</td></tr>';
  35 +
  36 +$names = explode(" ", $configuration->nom_groupe_metier);
  37 +if(isset($names[1])) {
  38 + $nom = $names[0].'s '.$names[1].'s';
  39 +}
  40 +else {
  41 + $nom = $names[0].'s';
  42 +}
  43 +echo '<tr><td>';
  44 +echo $this->Html->link('Liste des '.$nom, ['controller' => 'groupes_metiers', 'sort' => 'nom']);
  45 +echo '</td></tr>';
  46 +
  47 +
  48 +
  49 +
  50 +?>
  51 + </table>
  52 +</div>
  53 +
  54 + <div class="actions">
  55 + <?php echo $this->element('menu') ?>
  56 + </div>
... ...
src/Template/Suivis/edit.ctp
... ... @@ -18,6 +18,12 @@
18 18 'options' => $typeSuivis
19 19 ]);
20 20  
  21 + if($suivi->type_suivi_id == 9) {
  22 + echo $this->Form->input('panne_resolu', [
  23 + 'label' => 'Panne résolue'
  24 + ]);
  25 + }
  26 +
21 27 echo $this->Form->input('date_controle', [
22 28 'type' => 'text',
23 29 'label' => 'Date intervention',
... ...
src/Template/Suivis/view.ctp
... ... @@ -33,6 +33,17 @@
33 33 $displayElement(__('Date Intervention'), h($suivi->date_controle));
34 34 $displayElement(__('Date Prochaine Intervention'), h($suivi->date_prochain_controle));
35 35 $displayElement(__('Type d\'intervention'), $suivi->has('type_suivi') ? h($suivi->type_suivi->nom) : '');
  36 +
  37 + if($suivi->panne_resolu) {
  38 + $resolu = 'Oui';
  39 + }
  40 + else {
  41 + $resolu = 'Non';
  42 + }
  43 + if($suivi->type_suivi_id == 9) {
  44 + $displayElement(__('Panne résolue'), $resolu);
  45 + }
  46 +
36 47 $displayElement(__('Fournisseur'), h($suivi->organisme));
37 48 $displayElement(__('Fréquence'), h($suivi->frequence).' '.h($suivi->type_frequence));
38 49 $displayElement(__('Commentaire'), h($suivi->commentaire));
... ...
doc/COMMIT_PROCEDURE.txt renamed to webroot/doc/COMMIT_PROCEDURE.txt 100644 → 100755
doc/userguide/ACL.html renamed to webroot/doc/userguide/ACL.html
doc/userguide/ACL.odt renamed to webroot/doc/userguide/ACL.odt 100644 → 100755
No preview for this file type
doc/userguide/ACL.pdf renamed to webroot/doc/userguide/ACL.pdf
No preview for this file type
doc/userguide/IRAP-INV-SpecifBDMateriels_V1.2.docx renamed to webroot/doc/userguide/IRAP-INV-SpecifBDMateriels_V1.2.docx
No preview for this file type
doc/userguide/Inventirap_AdministrationUser_Manual.docx renamed to webroot/doc/userguide/Inventirap_AdministrationUser_Manual.docx
No preview for this file type
doc/userguide/Inventirap_User_Manual.docx renamed to webroot/doc/userguide/Inventirap_User_Manual.docx
No preview for this file type
webroot/doc/userguide/labinvent2_userguide.docx 0 → 100755
No preview for this file type
webroot/doc/userguide/labinvent2_userguide.pdf 0 → 100755
No preview for this file type
webroot/js/script.js
... ... @@ -113,4 +113,21 @@ function selectAll() {
113 113 function selectNone() {
114 114 for(i = 0; i < document.getElementsByTagName("input").length; i++)
115 115 document.getElementsByTagName("input")[i].checked = false;
  116 +}
  117 +
  118 +function changeAdminEdit() {
  119 + if (document.getElementById('eotp').disabled) {
  120 + document.getElementById('eotp').disabled=false;
  121 + document.getElementById('numero-commande').disabled=false;
  122 + document.getElementById('code-comptable').disabled=false;
  123 + document.getElementById('numero-inventaire-organisme').disabled=false;
  124 + document.getElementById('numero-inventaire-old').disabled=false;
  125 + }
  126 + else {
  127 + document.getElementById('eotp').disabled=true;
  128 + document.getElementById('numero-commande').disabled=true;
  129 + document.getElementById('code-comptable').disabled=true;
  130 + document.getElementById('numero-inventaire-organisme').disabled=true;
  131 + document.getElementById('numero-inventaire-old').disabled=true;
  132 + }
116 133 }
117 134 \ No newline at end of file
... ...