Commit 6f74ba5c0e86df4b80bed2ef70f55f07bdc88c3f
1 parent
f4e6dc02
Exists in
master
and in
3 other branches
Version: 2.5.3.0
ajout "administrer" form materiels + index "mes materiels" Demande (terminé) : https://projects.irap.omp.eu/issues/3906 https://projects.irap.omp.eu/issues/3916 Version majeure en cours (2.5): https://projects.irap.omp.eu/versions/99 ROADMAP: https://projects.irap.omp.eu/projects/labinvent/roadmap
Showing
8 changed files
with
435 additions
and
9 deletions
Show diff stats
README-LABINVENT.md
@@ -51,13 +51,12 @@ Logiciel testé et validé sur les configurations suivantes : | @@ -51,13 +51,12 @@ Logiciel testé et validé sur les configurations suivantes : | ||
51 | VERSION ACTUELLE | 51 | VERSION ACTUELLE |
52 | 52 | ||
53 | Date: 29/06/2016 | 53 | Date: 29/06/2016 |
54 | -Version: 2.5.2.0 | 54 | +Version: 2.5.3.0 |
55 | 55 | ||
56 | -envoi mail ajout document + bugfixes + edition details doc + acl documents + pb saut de ligne champ "text | 56 | +ajout "administrer" form materiels + index "mes materiels" |
57 | 57 | ||
58 | -Demande (terminé) : https://projects.irap.omp.eu/issues/3913 | ||
59 | - https://projects.irap.omp.eu/issues/3716 | ||
60 | - https://projects.irap.omp.eu/issues/3912 | 58 | +Demande (terminé) : https://projects.irap.omp.eu/issues/3906 |
59 | + https://projects.irap.omp.eu/issues/3916 | ||
61 | 60 | ||
62 | Version majeure en cours (2.5): https://projects.irap.omp.eu/versions/99 | 61 | Version majeure en cours (2.5): https://projects.irap.omp.eu/versions/99 |
63 | 62 |
src/Controller/MaterielsController.php
@@ -179,9 +179,19 @@ class MaterielsController extends AppController | @@ -179,9 +179,19 @@ class MaterielsController extends AppController | ||
179 | if(isset($GMV)) { | 179 | if(isset($GMV)) { |
180 | $condition = ['Materiels.groupes_metier_id =' => $this->request->query('GMV'), 'Materiels.status =' => 'CREATED', 'Materiels.status !=' => 'ARCHIVED']; | 180 | $condition = ['Materiels.groupes_metier_id =' => $this->request->query('GMV'), 'Materiels.status =' => 'CREATED', 'Materiels.status !=' => 'ARCHIVED']; |
181 | } | 181 | } |
182 | + | ||
183 | + $MY = $this->request->query('MY'); | ||
184 | + if(isset($MY)) { | ||
185 | + if(in_array($this->role, ['Utilisateur', 'Responsable'])) { | ||
186 | + $condition = ['Materiels.nom_responsable =' => $this->request->query('MY'), 'Materiels.status !=' => 'ARCHIVED']; | ||
187 | + } else { | ||
188 | + $condition = ['Materiels.nom_responsable =' => $this->request->query('MY')]; | ||
189 | + } | ||
190 | + | ||
191 | + } | ||
182 | 192 | ||
183 | 193 | ||
184 | - if($this->role == 'Utilisateur') { | 194 | + if(in_array($this->role, ['Utilisateur', 'Responsable']) && $condition != '') { |
185 | $condition = ['Materiels.status !=' => 'ARCHIVED']; | 195 | $condition = ['Materiels.status !=' => 'ARCHIVED']; |
186 | } | 196 | } |
187 | 197 | ||
@@ -344,6 +354,61 @@ class MaterielsController extends AppController | @@ -344,6 +354,61 @@ class MaterielsController extends AppController | ||
344 | $this->set(compact('materiel', 'surCategories', 'categories', 'sousCategories', 'groupesThematiques', 'groupesMetiers', 'organismes', 'sites', 'utilisateurs', 'mail_responsable')); | 354 | $this->set(compact('materiel', 'surCategories', 'categories', 'sousCategories', 'groupesThematiques', 'groupesMetiers', 'organismes', 'sites', 'utilisateurs', 'mail_responsable')); |
345 | $this->set('_serialize', ['materiel']); | 355 | $this->set('_serialize', ['materiel']); |
346 | } | 356 | } |
357 | + | ||
358 | + | ||
359 | + /** | ||
360 | + * Administrer method | ||
361 | + * | ||
362 | + * @param string|null $id Materiel id. | ||
363 | + * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise. | ||
364 | + * @throws \Cake\Network\Exception\NotFoundException When record not found. | ||
365 | + */ | ||
366 | + public function administrer($id = null) | ||
367 | + { | ||
368 | + $materiel = $this->Materiels->get($id, [ | ||
369 | + 'contain' => [] | ||
370 | + ]); | ||
371 | + if ($this->request->is(['patch', 'post', 'put'])) { | ||
372 | + $materiel = $this->Materiels->patchEntity($materiel, $this->request->data); | ||
373 | + if ($this->Materiels->save($materiel, ['checkRules' => false])) { | ||
374 | + $this->Flash->success(__('Le matériel a bien été édité.')); | ||
375 | + return $this->redirect(['action' => 'view', $id]); | ||
376 | + } else { | ||
377 | + $this->Flash->error(__('Le matériel n\'a pas pu être édité.')); | ||
378 | + } | ||
379 | + } | ||
380 | + $surCategories = $this->Materiels->SurCategories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'SurCategories.nom']); | ||
381 | + $categories = $this->Materiels->Categories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'Categories.nom']); | ||
382 | + $sousCategories = $this->Materiels->SousCategories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'SousCategories.nom']); | ||
383 | + $groupesThematiques = $this->Materiels->GroupesThematiques->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'GroupesThematiques.nom']); | ||
384 | + $groupesMetiers = $this->Materiels->GroupesMetiers->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'GroupesMetiers.nom']); | ||
385 | + $organismes = $this->Materiels->Organismes->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'Organismes.nom']); | ||
386 | + $sites = $this->Materiels->Sites->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'Sites.nom']); | ||
387 | + | ||
388 | + $users = TableRegistry::get('LdapConnections')->getListUsers(); | ||
389 | + //tri des utilisateurs par nom | ||
390 | + sort($users); | ||
391 | + $utilisateurs = []; | ||
392 | + for($i = 0; $i < sizeof($users); $i++) { | ||
393 | + $utilisateurs[$users[$i]] = $users[$i]; | ||
394 | + } | ||
395 | + | ||
396 | + if(!empty($materiel->get('nom_responsable'))){ | ||
397 | + if(!in_array($materiel->get('nom_responsable'), $utilisateurs)){ | ||
398 | + $nom_ancien_responsable = $materiel->get('nom_responsable'); | ||
399 | + $this->set(compact('nom_ancien_responsable')); | ||
400 | + } | ||
401 | + } | ||
402 | + $mail_responsable = TableRegistry::get('Users')->find()->select('email')->where(['username =' => $this->LdapAuth->user($this->request->session()->read('authType'))[0]])->first()['email']; | ||
403 | + | ||
404 | + $this->set('IS_CREATED', $materiel->status == 'CREATED'); | ||
405 | + $this->set('IS_VALIDATED', $materiel->status == 'VALIDATED'); | ||
406 | + $this->set('IS_ARCHIVED_OR_TOBE', in_array ( $materiel->status, ['TOBEARCHIVED','ARCHIVED'])); | ||
407 | + | ||
408 | + $this->set(compact('materiel', 'surCategories', 'categories', 'sousCategories', 'groupesThematiques', 'groupesMetiers', 'organismes', 'sites', 'utilisateurs', 'mail_responsable')); | ||
409 | + $this->set('_serialize', ['materiel']); | ||
410 | + } | ||
411 | + | ||
347 | 412 | ||
348 | /** | 413 | /** |
349 | * Delete method | 414 | * Delete method |
src/Model/Table/MaterielsTable.php
@@ -278,6 +278,9 @@ class MaterielsTable extends AppTable | @@ -278,6 +278,9 @@ class MaterielsTable extends AppTable | ||
278 | 278 | ||
279 | public function beforeSave($event, $entity, $options) | 279 | public function beforeSave($event, $entity, $options) |
280 | { | 280 | { |
281 | + if(!$entity->get('administrer')) { | ||
282 | + | ||
283 | + | ||
281 | if(!empty($entity->get('nom_responsable')) && empty($entity->get('nom_responsable'))){ | 284 | if(!empty($entity->get('nom_responsable')) && empty($entity->get('nom_responsable'))){ |
282 | $entity->set('nom_responsable', $entity->get('nom_ancien_responsable')); | 285 | $entity->set('nom_responsable', $entity->get('nom_ancien_responsable')); |
283 | } | 286 | } |
@@ -328,7 +331,8 @@ class MaterielsTable extends AppTable | @@ -328,7 +331,8 @@ class MaterielsTable extends AppTable | ||
328 | } | 331 | } |
329 | } | 332 | } |
330 | 333 | ||
331 | - | 334 | + } |
335 | + | ||
332 | if(empty($entity->get('date_acquisition'))){ | 336 | if(empty($entity->get('date_acquisition'))){ |
333 | $entity->set('date_acquisition', null); | 337 | $entity->set('date_acquisition', null); |
334 | } | 338 | } |
src/Template/Layout/default.ctp
@@ -94,7 +94,7 @@ $cakeDescription = 'Labinvent 2'; | @@ -94,7 +94,7 @@ $cakeDescription = 'Labinvent 2'; | ||
94 | </i></td> | 94 | </i></td> |
95 | <td id="version"> | 95 | <td id="version"> |
96 | <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) --> | 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.2.0 (29/06/2016)</font> | 97 | + <font color="black">VERSION 2.5.3.0 (29/06/2016)</font> |
98 | </td> | 98 | </td> |
99 | </tr> | 99 | </tr> |
100 | </table> | 100 | </table> |
@@ -0,0 +1,344 @@ | @@ -0,0 +1,344 @@ | ||
1 | +<div class="materiels form"> | ||
2 | + <?= $this->Form->create($materiel) ?> | ||
3 | + <fieldset> | ||
4 | + <h2><i class="icon-edit"></i> Administrer un Matériel</h2> | ||
5 | + | ||
6 | + <?php | ||
7 | + echo $this->Html->link('Retourner au formulaire d\'édition classique', ['action' => 'edit', $materiel->id]); | ||
8 | + echo '<br><br>'; | ||
9 | + ?> | ||
10 | + <?= $this->Form->submit(__('Enregistrer')) ?> | ||
11 | + | ||
12 | + <?php | ||
13 | + | ||
14 | + echo $this->Form->input('designation', ['label' => 'Désignation']); | ||
15 | + | ||
16 | + echo $this->Form->input('numero_laboratoire', ['label' => 'Numéro de laboratoire']); | ||
17 | + | ||
18 | + echo $this->Form->input('hors_service', ['label' => 'Appareil hors_service']); | ||
19 | + | ||
20 | + echo $this->Form->input('etiquette', [ | ||
21 | + 'label' => 'Etiquette posée', | ||
22 | + ]); | ||
23 | + | ||
24 | + | ||
25 | + echo $this->Form->input('sur_categorie_id', [ | ||
26 | + 'label' => 'Domaine', | ||
27 | + 'options' => $surCategories, | ||
28 | + 'empty' => 'Choisir un domaine', | ||
29 | + 'style' => 'width: 260px', | ||
30 | + | ||
31 | + ]); | ||
32 | + | ||
33 | + $categs = $categories; | ||
34 | + // if a domaine is selected, reduce the categories list to this domaine | ||
35 | + if (isset ( $this->request->data['sur_categorie_id'] ) && ($this->request->data['sur_categorie_id'] != '')) { | ||
36 | + $categs = $categs->where(['sur_categorie_id =' => $this->request->data['sur_categorie_id']]); | ||
37 | + } | ||
38 | + echo $this->Form->input('categorie_id', [ | ||
39 | + 'label' => 'Catégorie', | ||
40 | + 'style' => 'width: 380px', | ||
41 | + 'options' => $categs, | ||
42 | + 'empty' => 'Choisir une catégorie', | ||
43 | + ]); | ||
44 | + | ||
45 | + // SOUS-CATEGORIES | ||
46 | + // by default, list is empty | ||
47 | + $souscategs = []; | ||
48 | + // if a categ is selected, update sous-categs list for this categ (only) | ||
49 | + if (isset ( $this->request->data['categorie_id'] ) && ($this->request->data['categorie_id'] != '')) { | ||
50 | + $souscategs = $sousCategories; | ||
51 | + $souscategs = $souscategs->where(['categorie_id' => $this->request->data['categorie_id']]); | ||
52 | + } | ||
53 | + echo $this->Form->input('sous_categorie_id', [ | ||
54 | + 'label' => 'Sous-catégorie', | ||
55 | + 'style' => 'width: 380px', | ||
56 | + 'options' => $souscategs, | ||
57 | + 'empty' => 'Choisir une sous-catégorie', | ||
58 | + ]); | ||
59 | + | ||
60 | + echo $this->Form->input('materiel_technique', [ | ||
61 | + 'label' => 'Technique', | ||
62 | + ]); | ||
63 | + echo $this->Form->input('materiel_administratif', [ | ||
64 | + 'label' => 'Inventoriable (>'.$configuration->prix_inventaire_administratif.'€)', | ||
65 | + ]); | ||
66 | + | ||
67 | + echo $this->Form->input('description', [ | ||
68 | + 'label' => 'Description', | ||
69 | + ]); | ||
70 | + | ||
71 | + | ||
72 | + echo $this->Form->input('site_id', [ | ||
73 | + 'options' => $sites, | ||
74 | + 'style' => 'width: 380px', | ||
75 | + 'default' => 9, | ||
76 | + ]); | ||
77 | + | ||
78 | + echo $this->Form->input('lieu_detail', ['label' => 'Détail lieu de stockage']); | ||
79 | + | ||
80 | + echo $this->Form->input('date_acquisition', [ | ||
81 | + 'type' => 'text', | ||
82 | + 'label' => 'Date de la commande', | ||
83 | + 'class' => 'datepicker', | ||
84 | + 'placeholder' => 'Cliquez pour sélectionner une date', | ||
85 | + ]); | ||
86 | + echo $this->Form->input('date_reception', [ | ||
87 | + 'type' => 'text', | ||
88 | + 'label' => 'Date de réception', | ||
89 | + 'class' => 'datepicker', | ||
90 | + 'placeholder' => 'A éditer lors de la réception uniquement.', | ||
91 | + 'empty' => true]); | ||
92 | + | ||
93 | + | ||
94 | + echo '<table id="tableAlignementFrequence"><tr><td>'; | ||
95 | + echo $this->Form->input('duree_garantie', [ | ||
96 | + 'type' => 'text', | ||
97 | + 'style' => 'width: 100px', | ||
98 | + 'label' => 'Durée garantie', | ||
99 | + 'templates' => ['inputContainer' => '<div class="A">{{content}}</div>'], | ||
100 | + 'placeholder' => '' | ||
101 | + ]); | ||
102 | + echo '</td><td>'; | ||
103 | + echo $this->Form->input ('unite_duree_garantie', [ | ||
104 | + 'label' => false, | ||
105 | + 'templates' => ['inputContainer' => '<div class="typeFrequence">{{content}}</div>'], | ||
106 | + 'options' => ['Mois' => 'Mois', 'Ans' => 'Ans'], | ||
107 | + 'default' => 'Ans' | ||
108 | + ]); | ||
109 | + echo '</td></tr></table>'; | ||
110 | + echo $this->Form->input('date_fin_garantie', [ | ||
111 | + 'type' => 'text', | ||
112 | + 'label' => 'Date fin de garantie', | ||
113 | + 'placeholder' => 'Cliquez pour selectionner une date', | ||
114 | + 'class' => 'datepicker', | ||
115 | + 'default' => NULL | ||
116 | + ]); | ||
117 | + | ||
118 | + | ||
119 | + echo $this->Form->input('status', ['label' => 'Statut', 'options' => [ | ||
120 | + 'CREATED' => 'CREATED', | ||
121 | + 'VALIDATED' => 'VALIDATED', | ||
122 | + 'TOBEARCHIVED' => 'TOBEARCHIVED', | ||
123 | + 'ARCHIVED' => 'ARCHIVED']]); | ||
124 | + | ||
125 | + echo $this->Form->input('numero_serie', [ | ||
126 | + 'label' => 'Numéro de série', | ||
127 | + ]); | ||
128 | + echo $this->Form->input('groupes_thematique_id', [ | ||
129 | + 'label' => $configuration->nom_groupe_thematique, | ||
130 | + 'options' => $groupesThematiques, | ||
131 | + 'default' => 1]); | ||
132 | + echo $this->Form->input('groupes_metier_id', [ | ||
133 | + 'label' => $configuration->nom_groupe_metier, | ||
134 | + 'options' => $groupesMetiers, | ||
135 | + 'default' => 1]); | ||
136 | + | ||
137 | + if(!(in_array($role, ['Responsable', 'Administration', 'Administration Plus', 'Super Administrateur']))) { | ||
138 | + echo $this->Form->hidden('nom_responsable', [ | ||
139 | + 'label' => 'Nom du propriétaire', | ||
140 | + 'disabled' => $isReadonlyField('nom_responsable', $myReadonlyFields), | ||
141 | + 'empty' => 'Choisir un utilisateur', | ||
142 | + 'default' => $username, | ||
143 | + 'options' => $utilisateurs, | ||
144 | + ]); | ||
145 | + } | ||
146 | + | ||
147 | + if(isset($nom_ancien_responsable)){ | ||
148 | + echo $this->Form->input ('nom_ancien_responsable', [ | ||
149 | + 'label' => 'Nom ancien propriétaire', | ||
150 | + 'readonly' => true, | ||
151 | + 'default' => $nom_ancien_responsable | ||
152 | + ]); | ||
153 | + } | ||
154 | + | ||
155 | + echo $this->Form->input('email_responsable', [ | ||
156 | + 'label' => 'Email du propriétaire', | ||
157 | + 'default' => $mail_responsable | ||
158 | + ]); | ||
159 | + | ||
160 | + | ||
161 | + echo $this->Form->input('fournisseur', [ | ||
162 | + 'label' => 'Fournisseur', | ||
163 | + ]); | ||
164 | + echo $this->Form->input('organisme_id', [ | ||
165 | + 'options' => $organismes, | ||
166 | + 'style' => 'width: 380px', | ||
167 | + 'empty' => 'Choisir un organisme' | ||
168 | + ]); | ||
169 | + echo $this->Form->input('prix_ht', [ | ||
170 | + 'label' => 'Prix HT (€)', | ||
171 | + ]); | ||
172 | + | ||
173 | + 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>'; | ||
174 | + | ||
175 | + echo $this->Form->input('adminEdit', [ | ||
176 | + 'type' => 'checkbox', | ||
177 | + 'label' => 'Editer la partie administrative', | ||
178 | + 'onchange' => 'changeAdminEdit();', | ||
179 | + 'default' => false | ||
180 | + ]); | ||
181 | + | ||
182 | + echo $this->Form->input('eotp', [ | ||
183 | + 'label' => 'Centre financier/EOTP', | ||
184 | + 'disabled' => true | ||
185 | + ]); | ||
186 | + echo $this->Form->input('numero_commande', [ | ||
187 | + 'label' => 'Numéro de commande', | ||
188 | + 'disabled' => true | ||
189 | + ]); | ||
190 | + echo $this->Form->input('code_comptable', [ | ||
191 | + 'label' => 'Code comptable', | ||
192 | + 'disabled' => true | ||
193 | + ]); | ||
194 | + echo $this->Form->input('numero_inventaire_organisme', [ | ||
195 | + 'label' => 'N° inventaire organisme', | ||
196 | + 'disabled' => true | ||
197 | + ]); | ||
198 | + echo $this->Form->input('numero_inventaire_old', [ | ||
199 | + 'label' => 'Ancien N° inventaire', | ||
200 | + 'disabled' => true | ||
201 | + ]); | ||
202 | + echo '</div>'; | ||
203 | + | ||
204 | + echo $this->Form->input('nom_createur', ['label' => 'Nom du créateur']); | ||
205 | + echo $this->Form->input('created', [ | ||
206 | + 'label' => 'Date de création']); | ||
207 | + echo $this->Form->input('nom_modificateur', ['label' => 'Nom du modificateur', 'value' => $username ]); | ||
208 | + echo $this->Form->input('modified', [ | ||
209 | + 'label' => 'Date de modification']); | ||
210 | + | ||
211 | + echo $this->Form->hidden('administrer', ['default' => 1]); | ||
212 | + ?> | ||
213 | + </fieldset> | ||
214 | + <?= $this->Form->submit(__('Enregistrer')) ?> | ||
215 | + <?= $this->Form->end() ?> | ||
216 | +</div> | ||
217 | + | ||
218 | +<div class="actions"> | ||
219 | + <?php | ||
220 | + echo $this->element('menu'); | ||
221 | + echo $this->element('menu_form', [ 'pluralHumanName' => 'Matériels' ]); | ||
222 | + ?> | ||
223 | +</div> | ||
224 | + | ||
225 | + | ||
226 | +<?php | ||
227 | +/** | ||
228 | + * GESTION DES EVENEMENTS SUR LES DOMAINES/CATEGORIES/SOUS-CATEGORIES | ||
229 | + * | ||
230 | + * Phase initialisation (1ère ouverture de la page) : | ||
231 | + * - domaine ==> value = TOUS, select = "choisir" (ADD) ou data (EDIT) | ||
232 | + * - categ ==> value = TOUTES (ADD) ou from domaine (EDIT), select = "choisir" (ADD) ou data (EDIT) | ||
233 | + * - scateg ==> value = Aucune (ADD) ou from categ (EDIT), select = "choisir" (ADD) ou data (EDIT) | ||
234 | + * | ||
235 | + * Event domaine change : | ||
236 | + * - si select <> "choisir" ==> categ value = from domaine (select="choisir"), et vider scateg | ||
237 | + * - si select = "choisir" ==> categ value = TOUTES (select="choisir"), et vider scateg | ||
238 | + * | ||
239 | + * Event categ change : | ||
240 | + * - si select <> "choisir" ==> domaine select = from categ, et scateg values = from categ | ||
241 | + * - si select = "choisir" ==> vider scateg | ||
242 | + * | ||
243 | + * Event scateg change : RIEN A FAIRE | ||
244 | + */ | ||
245 | +?> | ||
246 | + | ||
247 | +<script type="text/javascript"> | ||
248 | + | ||
249 | +/** | ||
250 | + * Event DOMAINE change | ||
251 | + * | ||
252 | + * Sur sélection d'un DOMAINE ==> update CATEGORIES + empty SOUS-CATEGORIES | ||
253 | + * | ||
254 | + * Dans le détail : | ||
255 | + * - si select <> "choisir" ==> categ value = from domaine (select="choisir") | ||
256 | + * - si select = "choisir" ==> categ value = TOUTES (select="choisir") | ||
257 | + * - puis (dans les 2 cas) vider scateg | ||
258 | + * | ||
259 | + */ | ||
260 | + | ||
261 | +$(document).ready(function () { | ||
262 | + $("#sur-categorie-id").bind("change", function (event) { | ||
263 | + var domaineId=$("#sur-categorie-id :selected").val(); | ||
264 | + | ||
265 | + if (domaineId=="") | ||
266 | + updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getAll", "Choisir une catégorie"); | ||
267 | + else | ||
268 | + updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getBySurCategorie", "Choisir une catégorie"); | ||
269 | + emptySelectOptions("#sous-categorie-id","Choisir une sous-catégorie"); | ||
270 | + return false; | ||
271 | + }); | ||
272 | +}); | ||
273 | + | ||
274 | +/** | ||
275 | + * | ||
276 | + * Event CATEGORIE change | ||
277 | + * | ||
278 | + * - si select = "choisir" ==> vider scateg | ||
279 | + * - si select <> "choisir" ==> domaine value selected = celui de la categ, et scateg values = from categ | ||
280 | + */ | ||
281 | +$(document).ready(function () { | ||
282 | + $("#categorie-id").bind("change", function (event) { | ||
283 | + var categId=$("#categorie-id :selected").val(); | ||
284 | + var categLabel=$("#categorie-id :selected").text(); | ||
285 | + | ||
286 | + if (categId=="") emptySelectOptions("#sous-categorie-id","Choisir une sous-catégorie"); | ||
287 | + else { | ||
288 | + updateSelectOptionsFromAnother("#sous-categorie-id", "#categorie-id", "SousCategories/getByCategorie", "Choisir une sous-catégorie "+categLabel); | ||
289 | + updateSelectOptionsFromAnother("#sur-categorie-id", "#categorie-id", "SurCategories/getFromCategorie", ""); | ||
290 | + } | ||
291 | + return false; | ||
292 | + }); | ||
293 | +}); | ||
294 | + | ||
295 | + | ||
296 | + /** | ||
297 | + * Event Mail change | ||
298 | + */ | ||
299 | + $(document).ready(function () { | ||
300 | + $("#nom-responsable").bind("change", function (event) { | ||
301 | + var url = document.URL; | ||
302 | + var reg=new RegExp("(materiels).*$","g"); | ||
303 | + var emailUrl = url.replace(reg, "Users/getLdapEmail/"); | ||
304 | + $.ajax({ | ||
305 | + url: emailUrl + $("#nom-responsable").val() | ||
306 | + }).done(function(data) { | ||
307 | + $("#email-responsable").val(data) | ||
308 | + }); | ||
309 | + }); | ||
310 | + }); | ||
311 | + | ||
312 | + | ||
313 | + /** | ||
314 | + * Event calcul date fin de garantie | ||
315 | + */ | ||
316 | + $(document).ready(function () { | ||
317 | + $("#duree-garantie").bind("change", function (event) { | ||
318 | + if($("#date-reception").val() != "" && $("#duree-garantie").val() != "") { | ||
319 | + var url = document.URL; | ||
320 | + var reg=new RegExp("(materiels).*$","g"); | ||
321 | + var dateUrl = url.replace(reg, "Materiels/getDateGarantie/"); | ||
322 | + $.ajax({ | ||
323 | + url: dateUrl + $("#date-reception").val() + "/" + $("#duree-garantie").val() + "/" + $("#unite-duree-garantie").val() | ||
324 | + }).done(function(data) { | ||
325 | + $("#date-fin-garantie").val(data) | ||
326 | + }); | ||
327 | + } | ||
328 | + }); | ||
329 | + $("#unite-duree-garantie").bind("change", function (event) { | ||
330 | + if($("#date-reception").val() != "" && $("#duree-garantie").val() != "") { | ||
331 | + var url = document.URL; | ||
332 | + var reg=new RegExp("(materiels).*$","g"); | ||
333 | + var dateUrl = url.replace(reg, "Materiels/getDateGarantie/"); | ||
334 | + $.ajax({ | ||
335 | + url: dateUrl + $("#date-reception").val() + "/" + $("#duree-garantie").val() + "/" + $("#unite-duree-garantie").val() | ||
336 | + }).done(function(data) { | ||
337 | + $("#date-fin-garantie").val(data) | ||
338 | + }); | ||
339 | + } | ||
340 | + }); | ||
341 | + }); | ||
342 | + | ||
343 | + | ||
344 | +</script> |
src/Template/Materiels/edit.ctp
@@ -39,6 +39,14 @@ if ($IS_VALIDATED) | @@ -39,6 +39,14 @@ if ($IS_VALIDATED) | ||
39 | <?= $this->Form->create($materiel) ?> | 39 | <?= $this->Form->create($materiel) ?> |
40 | <fieldset> | 40 | <fieldset> |
41 | <h2><i class="icon-edit"></i> Editer un Matériel</h2> | 41 | <h2><i class="icon-edit"></i> Editer un Matériel</h2> |
42 | + | ||
43 | + | ||
44 | + <?php | ||
45 | + if($role == 'Super Administrateur') { | ||
46 | + echo $this->Html->link('Aller au formulaire d\'édition avancée', ['action' => 'administrer', $materiel->id]); | ||
47 | + echo '<br><br>'; | ||
48 | + } | ||
49 | + ?> | ||
42 | <?= $this->Form->submit(__('Enregistrer')) ?> | 50 | <?= $this->Form->submit(__('Enregistrer')) ?> |
43 | 51 | ||
44 | <?php | 52 | <?php |
src/Template/Pages/home_app.ctp
@@ -10,6 +10,12 @@ | @@ -10,6 +10,12 @@ | ||
10 | echo 'et avec le niveau d\'authentification <b>'.$role.'</b>.'; | 10 | echo 'et avec le niveau d\'authentification <b>'.$role.'</b>.'; |
11 | echo '<p>'; | 11 | echo '<p>'; |
12 | 12 | ||
13 | + echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">'; | ||
14 | + echo '<tr><th></th></tr>'; | ||
15 | + echo '<tr><td> '.$this->Html->link('Voir mes matériels', [ | ||
16 | + 'controller' => 'materiels', 'action' => 'index', 'MY' => $username]).' </td></tr>'; | ||
17 | + echo '</table>'; | ||
18 | + | ||
13 | //Utilisateur admin/super admin | 19 | //Utilisateur admin/super admin |
14 | if (in_array($role, ['Administration', 'Administration Plus'])) { | 20 | if (in_array($role, ['Administration', 'Administration Plus'])) { |
15 | echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">'; | 21 | echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">'; |
src/Template/Pages/tools.ctp
@@ -24,7 +24,7 @@ | @@ -24,7 +24,7 @@ | ||
24 | echo '<tr><td>'; | 24 | echo '<tr><td>'; |
25 | echo $this->Html->link('Gérer les fichiers', ['controller' => 'documents', 'action' => 'index']); | 25 | echo $this->Html->link('Gérer les fichiers', ['controller' => 'documents', 'action' => 'index']); |
26 | echo '</td></tr>'; | 26 | echo '</td></tr>'; |
27 | - endif; | 27 | + endif; |
28 | 28 | ||
29 | echo '<tr><td>'; | 29 | echo '<tr><td>'; |
30 | echo $this->Html->link('Export de la liste des materiels actifs (format CSV)', ['controller' => 'materiels', 'action' => 'export']); | 30 | echo $this->Html->link('Export de la liste des materiels actifs (format CSV)', ['controller' => 'materiels', 'action' => 'export']); |