Commit eba0192d2095698e9e0ea9b6abf614e40aafd7f0

Authored by Etienne Pallier
1 parent 4cf3322f
Exists in master and in 1 other branch dev

Suivis : Amélioration par refactorisation (2) (v3.7.9.9)

Comme pour les docs attachés (même principe) :
- refactorisation des actions add() et edit() en une seule add_or_edit()
(car très semblables)
- refactorisation des vues add et edit en une seule add_edit (car très
semblables)
- debugging javascript en cours (car ça marchait pas très bien tout
ça...)
README.md
... ... @@ -53,14 +53,14 @@ Logiciel testé et validé sur les configurations suivantes :
53 53  
54 54 VERSION ACTUELLE
55 55  
56   -Date: 24/03/2020
57   -Version: 3.7.9.8
  56 +Date: 25/03/2020
  57 +Version: 3.7.9.9
58 58 Author: EP
59   -Commentaire: Suivis : Amélioration et nombreux Bugfixes !!! (1)
60   - - pb javascript si métrologie
61   - - ajout intitulé comme titre
62   - - vue édition : champs trop larges, champs éditables, champs inutiles...
63   - - ...
  59 +Commentaire: Suivis : Amélioration par refactorisation (2)
  60 + Comme pour les docs attachés (même principe) :
  61 + - refactorisation des actions add() et edit() en une seule add_or_edit() (car très semblables)
  62 + - refactorisation des vues add et edit en une seule add_edit (car très semblables)
  63 + - debugging javascript en cours (car ça marchait pas très bien tout ça...)
64 64  
65 65  
66 66 IMPORTANT :
... ... @@ -96,6 +96,13 @@ La liste ci-dessous n'est plus à jour, elle est désormais en ligne ici : https
96 96  
97 97 -----------------------------------------------------------------------------------------------------------
98 98  
  99 +24/03/2020 Version 3.7.9.8 (EP)
  100 + Suivis : Amélioration et nombreux Bugfixes !!! (1)
  101 + - pb javascript si métrologie
  102 + - ajout intitulé comme titre
  103 + - vue édition : champs trop larges, champs éditables, champs inutiles...
  104 + - ...
  105 +
99 106 23/03/2020 Version 3.7.9.7 (EP)
100 107 Amélioration de la gestion des docs attachés (3)
101 108 - Enorme simplification grâce à la refactorisation des vues add et edit en une seule add_edit car elles sont très semblables
... ...
src/Controller/DocumentsController.php
... ... @@ -260,8 +260,6 @@ class DocumentsController extends AppController
260 260  
261 261 $this->myDebug("step 3: DocumentsController.add_or_edit()");
262 262  
263   - // add
264   -
265 263 $document = $IS_ADD ? $this->Documents->newEntity() : $this->Documents->get($id, ['contain' => []]);
266 264  
267 265 // POST (on vient de soumettre un nouveau doc)
... ...
src/Controller/SuivisController.php
... ... @@ -22,7 +22,7 @@ class SuivisController extends AppController
22 22 {
23 23 // $configuration = $this->confLabinvent;
24 24 /*
25   - * $role = TableRegistry::get('Users')->find()
  25 + * $role = TableRegistry::getTableLocator()->get('Users')->find()
26 26 * ->where([
27 27 * 'username' => $user[$configuration->authentificationType_ldap][0]
28 28 * ])
... ... @@ -61,12 +61,12 @@ class SuivisController extends AppController
61 61  
62 62 public function isRespGroup($id, $loginResponsable)
63 63 {
64   - $u = TableRegistry::get('Users')->find()
  64 + $u = TableRegistry::getTableLocator()->get('Users')->find()
65 65 ->where([
66 66 'username' => $loginResponsable
67 67 ])
68 68 ->first();
69   - if ($u['groupes_metier_id'] !== null && $u['groupes_metier_id'] != TableRegistry::get('GroupesMetiers')->find()
  69 + if ($u['groupes_metier_id'] !== null && $u['groupes_metier_id'] != TableRegistry::getTableLocator()->get('GroupesMetiers')->find()
70 70 ->where([
71 71 'nom =' => 'N/A'
72 72 ])
... ... @@ -75,7 +75,7 @@ class SuivisController extends AppController
75 75 'id' => $id,
76 76 'groupes_metier_id' => $u['groupes_metier_id']
77 77 ]));
78   - } else if ($u['groupe_thematique_id'] !== null && $u['groupe_thematique_id'] != TableRegistry::get('GroupesThematiques')->find()
  78 + } else if ($u['groupe_thematique_id'] !== null && $u['groupe_thematique_id'] != TableRegistry::getTableLocator()->get('GroupesThematiques')->find()
79 79 ->where([
80 80 'nom =' => 'N/A'
81 81 ])
... ... @@ -100,7 +100,7 @@ class SuivisController extends AppController
100 100 $GM = $this->request->getQuery('GM');
101 101 $GT = $this->request->getQuery('GT');
102 102 if ($GM !== null || $GT !== null) {
103   - if ($GM !== null && $GM != TableRegistry::get('GroupesMetiers')->find()
  103 + if ($GM !== null && $GM != TableRegistry::getTableLocator()->get('GroupesMetiers')->find()
104 104 ->where([
105 105 'nom =' => 'N/A'
106 106 ])
... ... @@ -108,7 +108,7 @@ class SuivisController extends AppController
108 108 $condition = [
109 109 'Suivis.groupes_metier_id =' => $GM
110 110 ];
111   - } else if ($GT !== null && $GT != TableRegistry::get('GroupesThematiques')->find()
  111 + } else if ($GT !== null && $GT != TableRegistry::getTableLocator()->get('GroupesThematiques')->find()
112 112 ->where([
113 113 'nom =' => 'N/A'
114 114 ])
... ... @@ -164,8 +164,8 @@ class SuivisController extends AppController
164 164 'Fichemetrologiques'
165 165 ]
166 166 ]);
167   - $typeDocuments = TableRegistry::get('TypeDocuments');
168   - $fichemet = TableRegistry::get('Fichemetrologiques')->find('all', [
  167 + $typeDocuments = TableRegistry::getTableLocator()->get('TypeDocuments');
  168 + $fichemet = TableRegistry::getTableLocator()->get('Fichemetrologiques')->find('all', [
169 169 'conditions' => [
170 170 'suivi_id' => $this->request->getAttribute('params')['pass'][0]
171 171 ],
... ... @@ -208,12 +208,214 @@ class SuivisController extends AppController
208 208 $this->set(compact('typeDocuments', 'suivi', 'fiche', 'CAN_EDIT_DELETE_LINK'));
209 209 } // view
210 210  
  211 +
  212 + /**
  213 + * Add or Edit method (do either add() or edit())
  214 + * => Factorisation de add() et edit()
  215 + * (voir aussi https://book.cakephp.org/3.0/en/orm.html)
  216 + *
  217 + * @param $IS_ADD: True = add ; False = edit
  218 + * @return \Cake\Network\Response|void Redirects on successful add/edit, renders view otherwise.
  219 + */
  220 + private function add_or_edit($IS_ADD, $id=null, $valeurs=null, $erreurs=null) {
  221 +
  222 + $this->myDebug("step 3: SuivisController.add_or_edit()");
  223 +
  224 + $IS_EDIT = !$IS_ADD;
  225 + // TODO: utiliser $entity au lieu de $suivi (car c'est plus générique)
  226 + $suivi = $IS_ADD ?
  227 + $this->Suivis->newEntity()
  228 + :
  229 + // cf https://book.cakephp.org/3/fr/orm/retrieving-data-and-resultsets.html#eager-loading-associations
  230 + // Ceci permettra des accès du type $suivi->type_suivi->nom depuis la vue
  231 + $this->Suivis->get($id, ['contain' => ['TypeSuivis']]);
  232 +
  233 + //debug($suivi);
  234 + // POST (on arrive ici après un SUBMIT)
  235 + // add
  236 + //if ($this->request->is('post')) {
  237 + if ($this->request->is(['patch','post','put'])) {
  238 + $suivi = $this->Suivis->patchEntity($suivi, $this->request->getData());
  239 + if ($IS_ADD) {
  240 + if ($this->request->getData('typemesure') !== null && $this->request->getData('typemesure') == "1")
  241 + $suivi->typemesure = "Indirect";
  242 + $suivi->panne_resolu = false;
  243 + }
  244 + // SAVED OK
  245 + if ($this->Suivis->save($suivi)) {
  246 + $verb = $IS_ADD ? 'ajouté' : 'modifié';
  247 + $this->Flash->success(__("Le suivi a bien été $verb"));
  248 + // ADD
  249 + if ($IS_ADD) return $this->redirect([
  250 + 'controller' => 'Materiels',
  251 + 'action' => 'view',
  252 + $this->request->getAttribute('params')['pass'][0]
  253 + ]);
  254 + // EDIT
  255 + else return $this->redirect([
  256 + 'action' => 'index',
  257 + $id
  258 + ]);
  259 + }
  260 + // SAVED KO
  261 + else {
  262 + $this->Flash->error(__("Le suivi n'a pas pu être $verb"));
  263 + if ($IS_ADD) return $this->redirect([
  264 + 'controller' => 'Materiels',
  265 + 'action' => 'view',
  266 + $this->request->getAttribute('params')['pass'][0]
  267 + ]);
  268 + }
  269 + } // POST
  270 +
  271 +
  272 + // START (on arrive ici la première fois qu'on ouvre la vue)
  273 + $unite = TableRegistry::getTableLocator()->get('Unites')->find('list', [
  274 + 'keyfield' => 'id',
  275 + 'valueField' => 'nom'
  276 + ]);
  277 + $materiels = $this->Suivis->Materiels->find('list');
  278 + $materiel_id = $IS_EDIT ? $suivi->materiel_id : $this->request->getAttribute('params')['pass'][0];
  279 + $materiel = $this->Suivis->Materiels->get($materiel_id);
  280 + /*
  281 + $materiel = $IS_EDIT ?
  282 + $this->Suivis->Materiels->get($suivi->materiel_id)
  283 + /S
  284 + $this->Suivis->Materiels->find()
  285 + ->where([
  286 + 'id =' => $suivi->materiel_id
  287 + ])
  288 + ->first();
  289 + S/
  290 + :
  291 + $this->Suivis->Materiels->find()
  292 + ->where([
  293 + 'id =' => $this->request->getAttribute('params')['pass'][0]
  294 + ])
  295 + ->first();
  296 + */
  297 + // ADD only
  298 + if ($IS_ADD) {
  299 + $formule = TableRegistry::getTableLocator()->get('Formules')->find('list', [
  300 + 'keyfield' => 'id',
  301 + 'valueField' => 'formule'
  302 + ]);
  303 + $formules = TableRegistry::getTableLocator()->get('Formules')->find('all');
  304 + $variables = TableRegistry::getTableLocator()->get('Variables')->find('list')->toArray();
  305 + }
  306 + // EDIT only
  307 + else {
  308 + $numMateriel = $this->Suivis->Materiels->find()
  309 + ->select('numero_laboratoire')
  310 + ->where([
  311 + 'id =' => $suivi->get('materiel_id')
  312 + ])
  313 + ->first()['numero_laboratoire'];
  314 + }
  315 +
  316 + // Le materiel est-il suivi en métrologie ou non ?
  317 + //$matos_id = $IS_ADD ? $this->request->getAttribute('params')['pass'][0] : $suivi->materiel_id;
  318 + $metro = TableRegistry::getTableLocator()->get('Materiels')->find()
  319 + ->select('metrologie')
  320 + ->where([
  321 + 'id =' => $materiel_id
  322 + ])
  323 + ->first()['metrologie'];
  324 +
  325 + if ($metro == 1)
  326 + $typeSuivis = $this->Suivis->TypeSuivis->find('list', [
  327 + 'keyField' => 'id',
  328 + 'valueField' => 'nom'
  329 + ]);
  330 + else {
  331 + $conditions = [
  332 + 'AND' => [
  333 + 'nom !=' => 'Vérification métrologique'
  334 + ]
  335 + ];
  336 + if ($IS_EDIT) $conditions = [
  337 + 'AND' => [
  338 + [
  339 + 'id !=' => '4'
  340 + ],
  341 + [
  342 + 'id !=' => '5'
  343 + ],
  344 + [
  345 + 'id !=' => '6'
  346 + ]
  347 + ]
  348 + ];
  349 + $typeSuivis = $this->Suivis->TypeSuivis->find('list', [
  350 + 'keyField' => 'id',
  351 + 'valueField' => 'nom',
  352 + 'conditions' => $conditions
  353 + ]);
  354 + }
  355 +
  356 + // $domaineresp= TableRegistry::getTableLocator()->get('Users')->find()->select('sur_categorie_id')->where(['username =' => $this->LdapAuth->user($this->request->getSession()->read('authType'))[0]])->first()['sur_categorie_id'];
  357 + $matos_id = $IS_ADD ? $materiel->id : $suivi->materiel_id;
  358 + $dom = TableRegistry::getTableLocator()->get('Materiels')->find()
  359 + ->select('sur_categorie_id')
  360 + ->where([
  361 + 'id =' => $matos_id
  362 + ])
  363 + ->first()['sur_categorie_id'];
  364 + $domaines = TableRegistry::getTableLocator()->get('Users')->find()
  365 + ->select('sur_categorie_id')
  366 + ->where([
  367 + 'username =' => $this->LdapAuth->user($this->request->getSession()
  368 + ->read('authType'))[0]
  369 + ])
  370 + ->first()['sur_categorie_id'];
  371 + $domaineresp = ($dom==$domaines);
  372 +
  373 + $groupesThematiques = $this->Suivis->GroupesThematiques->find('list', [
  374 + 'keyField' => 'id',
  375 + 'valueField' => 'nom',
  376 + 'order' => 'GroupesThematiques.nom'
  377 + ]);
  378 + $groupesMetiers = $this->Suivis->GroupesMetiers->find('list', [
  379 + 'keyField' => 'id',
  380 + 'valueField' => 'nom',
  381 + 'order' => 'GroupesMetiers.nom'
  382 + ]);
  383 +
  384 + $parent = $materiel;
  385 + // Utile ?
  386 + //$parent_id = $materiel_id;
  387 + $model = $suivi;
  388 + $this->set(compact(
  389 + 'IS_ADD', 'IS_EDIT',
  390 + 'unite', 'domaineresp',
  391 + 'suivi','model',
  392 + 'materiel','parent',
  393 + //'materiel_id', 'parent_id',
  394 + 'groupesThematiques', 'groupesMetiers',
  395 + 'materiels', 'typeSuivis'
  396 + ));
  397 + if ($IS_ADD)
  398 + $this->set(compact('variables', 'formule', 'formules'));
  399 + else
  400 + $this->set(compact('metro', 'numMateriel'));
  401 + /* (EP inutile)
  402 + $this->set('_serialize', [
  403 + 'suivi'
  404 + ]);
  405 + */
  406 +
  407 + } // add_or_edit()
  408 +
211 409 /**
212 410 * Add method
213 411 *
214 412 * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise.
215 413 */
216   - public function add()
  414 + //public function add()
  415 + public function add($valeurs = null, $erreurs = null) {
  416 + $this->add_or_edit(TRUE, null, $valeurs, $erreurs);
  417 + }
  418 + private function add_orig()
217 419 {
218 420 $suivi = $this->Suivis->newEntity();
219 421 if ($this->request->is('post')) {
... ... @@ -238,29 +440,29 @@ class SuivisController extends AppController
238 440 }
239 441 }
240 442 $materiels = $this->Suivis->Materiels->find('list');
241   - $unite = TableRegistry::get('Unites')->find('list', [
  443 + $unite = TableRegistry::getTableLocator()->get('Unites')->find('list', [
242 444 'keyfield' => 'id',
243 445 'valueField' => 'nom'
244 446 ]);
245   - $formule = TableRegistry::get('Formules')->find('list', [
  447 + $formule = TableRegistry::getTableLocator()->get('Formules')->find('list', [
246 448 'keyfield' => 'id',
247 449 'valueField' => 'formule'
248 450 ]);
249   - $formules = TableRegistry::get('Formules')->find('all');
  451 + $formules = TableRegistry::getTableLocator()->get('Formules')->find('all');
250 452 // Le materiel est-il suivi en métrologie ou non ?
251   - $metro = TableRegistry::get('Materiels')->find()
  453 + $metro = TableRegistry::getTableLocator()->get('Materiels')->find()
252 454 ->select('metrologie')
253 455 ->where([
254 456 'id =' => $this->request->getAttribute('params')['pass'][0]
255 457 ])
256 458 ->first()['metrologie'];
257   - $variables = TableRegistry::get('Variables')->find('list')->toArray();
  459 + $variables = TableRegistry::getTableLocator()->get('Variables')->find('list')->toArray();
258 460 $materiel = $this->Suivis->Materiels->find()
259 461 ->where([
260 462 'id =' => $this->request->getAttribute('params')['pass'][0]
261 463 ])
262 464 ->first();
263   - // $domaineresp= TableRegistry::get('Users')->find()->select('sur_categorie_id')->where(['username =' => $this->LdapAuth->user($this->request->getSession()->read('authType'))[0]])->first()['sur_categorie_id'];
  465 + // $domaineresp= TableRegistry::getTableLocator()->get('Users')->find()->select('sur_categorie_id')->where(['username =' => $this->LdapAuth->user($this->request->getSession()->read('authType'))[0]])->first()['sur_categorie_id'];
264 466 if ($metro == 1) {
265 467 $typeSuivis = $this->Suivis->TypeSuivis->find('list', [
266 468 'keyField' => 'id',
... ... @@ -277,13 +479,13 @@ class SuivisController extends AppController
277 479 ]
278 480 ]);
279 481 }
280   - $dom = TableRegistry::get('Materiels')->find()
  482 + $dom = TableRegistry::getTableLocator()->get('Materiels')->find()
281 483 ->select('sur_categorie_id')
282 484 ->where([
283 485 'id =' => $materiel->id
284 486 ])
285 487 ->first()['sur_categorie_id'];
286   - $domaines = TableRegistry::get('Users')->find()
  488 + $domaines = TableRegistry::getTableLocator()->get('Users')->find()
287 489 ->select('sur_categorie_id')
288 490 ->where([
289 491 'username =' => $this->LdapAuth->user($this->request->getSession()
... ... @@ -308,7 +510,7 @@ class SuivisController extends AppController
308 510 $this->set('_serialize', [
309 511 'suivi'
310 512 ]);
311   - }
  513 + } // add()
312 514  
313 515 /**
314 516 * Edit method
... ... @@ -318,13 +520,17 @@ class SuivisController extends AppController
318 520 * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise.
319 521 * @throws \Cake\Network\Exception\NotFoundException When record not found.
320 522 */
321   - public function edit($id = null)
  523 + public function edit($id = null) {
  524 + $this->add_or_edit(FALSE, $id);
  525 + }
  526 + private function edit_orig($id = null)
322 527 {
323 528 // cf https://book.cakephp.org/3/fr/orm/retrieving-data-and-resultsets.html#eager-loading-associations
324 529 // Ceci permettra des accès du type $suivi->type_suivi->nom depuis la vue
325 530 $suivi = $this->Suivis->get($id, [
326 531 'contain' => ['TypeSuivis']
327 532 ]);
  533 + // POST
328 534 if ($this->request->is([
329 535 'patch',
330 536 'post',
... ... @@ -341,42 +547,49 @@ class SuivisController extends AppController
341 547 $this->Flash->error(__('Le suivi n\'a pas pu être édité.'));
342 548 }
343 549 }
  550 +
  551 + // START
344 552 $materiels = $this->Suivis->Materiels->find('list');
345 553 $materiel = $this->Suivis->Materiels->find()
346 554 ->where([
347 555 'id =' => $suivi->materiel_id
348 556 ])
349 557 ->first();
350   - $unite = TableRegistry::get('Unites')->find('list', [
  558 + $unite = TableRegistry::getTableLocator()->get('Unites')->find('list', [
351 559 'keyfield' => 'id',
352 560 'valueField' => 'nom'
353 561 ]);
  562 +
354 563 $numMateriel = $this->Suivis->Materiels->find()
355 564 ->select('numero_laboratoire')
356 565 ->where([
357 566 'id =' => $suivi->get('materiel_id')
358 567 ])
359 568 ->first()['numero_laboratoire'];
360   - $metro = TableRegistry::get('Materiels')->find()
  569 +
  570 + $metro = TableRegistry::getTableLocator()->get('Materiels')->find()
361 571 ->select('metrologie')
362 572 ->where([
363 573 'id =' => $suivi->materiel_id
364 574 ])
365 575 ->first()['metrologie'];
366   - $typeSuivis = $this->Suivis->TypeSuivis->find('list', [
367   - 'keyField' => 'id',
368   - 'valueField' => 'nom'
369   - ]);
  576 +
370 577 $groupesThematiques = $this->Suivis->GroupesThematiques->find('list', [
371 578 'keyField' => 'id',
372 579 'valueField' => 'nom',
373 580 'order' => 'GroupesThematiques.nom'
374 581 ]);
  582 +
375 583 $groupesMetiers = $this->Suivis->GroupesMetiers->find('list', [
376 584 'keyField' => 'id',
377 585 'valueField' => 'nom',
378 586 'order' => 'GroupesMetiers.nom'
379 587 ]);
  588 +
  589 + $typeSuivis = $this->Suivis->TypeSuivis->find('list', [
  590 + 'keyField' => 'id',
  591 + 'valueField' => 'nom'
  592 + ]);
380 593 if ($metro == 1) {
381 594 $typeSuivis = $this->Suivis->TypeSuivis->find('list', [
382 595 'keyField' => 'id',
... ... @@ -401,13 +614,13 @@ class SuivisController extends AppController
401 614 ]
402 615 ]);
403 616 }
404   - $dom = TableRegistry::get('Materiels')->find()
  617 + $dom = TableRegistry::getTableLocator()->get('Materiels')->find()
405 618 ->select('sur_categorie_id')
406 619 ->where([
407 620 'id =' => $suivi->materiel_id
408 621 ])
409 622 ->first()['sur_categorie_id'];
410   - $domaines = TableRegistry::get('Users')->find()
  623 + $domaines = TableRegistry::getTableLocator()->get('Users')->find()
411 624 ->select('sur_categorie_id')
412 625 ->where([
413 626 'username =' => $this->LdapAuth->user($this->request->getSession()
... ... @@ -415,6 +628,7 @@ class SuivisController extends AppController
415 628 ])
416 629 ->first()['sur_categorie_id'];
417 630 $domaineresp = ($dom == $domaines);
  631 +
418 632 $parent = $materiel;
419 633 $this->set(compact('unite', 'metro', 'domaineresp', 'suivi', 'parent', 'materiel', 'materiels', 'typeSuivis', 'numMateriel', 'groupesThematiques', 'groupesMetiers'));
420 634 /* (EP inutile)
... ...
src/Template/Documents/add_edit.ctp
1 1 <?php
2 2 // Variables passées à cette vue par le controleur
  3 +// add or edit mode ? true=add ; false=edit
  4 +$IS_ADD = $IS_ADD;
3 5 // objet document : si ADD : vide ; si EDIT : plein
4 6 $document = $document;
5 7 // - Liste des types de doc
... ... @@ -9,8 +11,6 @@ $parent = $parent;
9 11 $parent_type = $parent_type;
10 12 $parent_controller = $parent_controller;
11 13 $parent_name = $parent_name;
12   -// add or edit mode ? true=add ; false=edit
13   -$IS_ADD = $IS_ADD;
14 14  
15 15 // optionnel
16 16 $doc = 'un document';
... ...
src/Template/Element/menu_responsive.ctp
... ... @@ -39,7 +39,7 @@
39 39 <li class="nav-item dropdown">
40 40 <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" style="text-decoration-color: #17457F;">Suivi</a>
41 41 <div class="dropdown-menu" aria-labelledby="navbarDropdown">
42   - <?=$this->Html->link('<i class="dropdown-item">Liste</i>', ['controller' => 'Suivis','action' => 'index'], ['escape' => false])?>
  42 + <?=$this->Html->link('<i class="dropdown-item">Tous</i>', ['controller' => 'Suivis','action' => 'index'], ['escape' => false])?>
43 43 <?=$this->Html->link('<i class="dropdown-item">Rechercher</i>', ['controller' => 'suivis','action' => 'find'], ['escape' => false]);?>
44 44 </div>
45 45 </li>
... ... @@ -48,7 +48,7 @@
48 48 <li class="nav-item dropdown">
49 49 <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" style="text-decoration-color: #17457F;">Emprunt</a>
50 50 <div class="dropdown-menu" aria-labelledby="navbarDropdown">
51   - <?=$this->Html->link('<i class="dropdown-item">Liste</i>', ['controller' => 'Emprunts','action' => 'index'], ['escape' => false]);?>
  51 + <?=$this->Html->link('<i class="dropdown-item">Tous</i>', ['controller' => 'Emprunts','action' => 'index'], ['escape' => false]);?>
52 52 <?=$this->Html->link('<i class="dropdown-item">Rechercher</i>', ['controller' => 'emprunts','action' => 'find'], ['escape' => false])?>
53 53 </div>
54 54 </li>
... ...
src/Template/Suivis/add.ctp
1   -
2   -<div class="suivis form col-lg-12 col-md-12 col-sm-12">
3   - <?=$this->Form->create($suivi)?>
4   - <fieldset>
5   - <h2>
6   - <i class="icon-plus"></i> Ajouter un suivi
7   - </h2>
8   - <?php
9   - echo $this->Form->hidden('materiel_id', [
10   - 'options' => $materiels,
11   - 'default' => $this->request->getAttribute('params')['pass'][0]
12   - ]);
13   - echo $this->Form->control('materiel_numero_laboratoire', [
14   - 'label' => 'N° materiel labo',
15   - 'default' => $materiel['numero_laboratoire'],
16   - 'disabled' => TRUE
17   - ]);
18   -
19   - echo '<div id="listes" style="display:none">';
20   - echo $this->Form->control('listeunite', [
21   - 'options' => $unite
22   - ]);
23   - echo $this->Form->control('listeformule', [
24   - 'options' => $formule
25   - ]);
26   - echo '</div>';
27   -
28   - echo $this->Form->control('type_suivi_id', [
29   - 'label' => 'Type d\'intervention',
30   - 'options' => $typeSuivis,
31   - 'default' => 3,
32   - 'empty' => "Choisir le type de suivi"
33   - ]);
34   -
35   - echo '<div id="frequence" style="display:none">';
36   - echo '</div>';
37   -
38   - echo '<div id="dates" style="display:none">';
39   - echo $this->Form->control('date_controle', [
40   - 'type' => 'text',
41   - 'id' => 'date_deb',
42   - 'label' => 'Date de la prise en charge',
43   - 'class' => 'datepicker',
44   - 'placeholder' => 'Cliquez pour sélectionner une date'
45   - ]);
46   - echo $this->Form->control('date_prochain_controle', [
47   - 'type' => 'text',
48   - 'id' => 'date_fin',
49   - 'label' => 'Date estimee de fin',
50   - 'class' => 'datepicker',
51   - 'placeholder' => 'Cliquez pour sélectionner une date'
52   - ]);
53   -
54   -
55   - echo '</div>';
56   -
57   - echo $this->Form->control('organisme', [
58   - 'label' => 'Prestataire'
59   - ]);
60   - echo $this->Form->control('groupes_thematique_id', [
61   - 'label' => $configuration->nom_groupe_thematique,
62   - 'options' => $groupesThematiques,
63   - 'default' => $materiel['groupes_thematique_id']
64   - ]);
65   - echo $this->Form->control('groupes_metier_id', [
66   - 'label' => $configuration->nom_groupe_metier,
67   - 'options' => $groupesMetiers,
68   - 'default' => $materiel['groupes_metier_id']
69   - ]);
70   - echo $this->Form->control('intitule', [
71   - 'label' => 'Intitulé',
72   - 'required' => 'required'
73   - ]);
74   -
75   - echo '<div id="typedemesure">';
76   - echo '</div>';
77   -
78   - echo '<div id="metro">';
79   - echo '</div>';
80   -
81   - echo $this->Form->control('commentaire', [
82   - 'type' => 'textarea'
83   - ]);
84   - echo $this->Form->hidden('nom_createur', [
85   - 'value' => $username
86   - ]);
87   - ?>
88   - </fieldset>
89   - <?=$this->Form->submit(__('Valider'))?>
90   - <?=$this->Form->end()?>
91   -</div>
92   -
93   -<!--
94   -<div class="actions">
95   - <php
96   -echo $this->element('menu');
97   -echo $this->element('menu_form', [
98   - 'pluralHumanName' => 'Suivis'
99   -]);
100   -?>
101   -</div>
102   --->
103   -
104   -<script type="text/javascript">
105   -
106   - $(document).ready(function () {
107   -
108   - // $('#metro').hide();
109   - var cpt = 0;
110   - $('#metro').children('.input').each(function(){
111   - $(this).hide();
112   - cpt ++;
113   - var props="";
114   - console.log('Yolo' + cpt + ' - ' + this.textContent + ' - ' + this.hidden);
115   - for (prop in this){
116   - props+= prop + " => " +this[prop] + "\n";
117   - }
118   - console.log(props);
119   - });
120   -
121   -
122   - console.log("Doc. chargé");
123   -
124   - $("#type-suivi-id").bind("change", function (event) {
125   - var domaineId=$("#type-suivi-id :selected").text();
126   -
127   - if (domaineId== "Vérification métrologique") {
128   - document.getElementById('typedemesure').innerHTML ="<div class=\"input select required\"><label for=\"typemesure\">Type de mesure</label><select name=\"typemesure\" onchange=\"typedemesure()\" id=\"typemesure\"><option value=\"1\">Direct</option><option value=\"2\">Indirect</option></select></div>";
129   - $('#listes').show();
130   - typedemesure();
131   - } else {
132   -// document.getElementById('metro').innerHTML ="";
133   - document.getElementById('typedemesure').innerHTML = "";
134   - $('#listes').hide();
135   - }
136   - //gère l'affichage dynamique après choix du type de suivi
137   -
138   - if( domaineId == "Panne"){
139   - document.getElementById('frequence').innerHTML = "";
140   - $("#frequence").hide();
141   - $("#dates").show();
142   -
143   - } else {
144   - $("#dates").hide();
145   - $("#frequence").show();
146   - document.getElementById('frequence').innerHTML = "<div class=\"input text required\" ><table id=\"tableAlignementFrequence\" ><tbody><tr><td><div class=\"A\"><label for=\"SuiviFrequence\">Fréquence</label><input type=\"text\" name=\"frequence\" id=\"SuiviFrequence\" placeholder=\"\" required=\"required\" maxlength=\"11\"></div></td><td><div class=\"typeFrequence\" ><select name=\"type_frequence\" id=\"type-frequence\"><option value=\"/ Jours\">/ Jours</option><option value=\"/ Semaines\">/ Semaines</option><option value=\"/ Mois\" selected=\"selected\">/ Mois</option><option value=\"/ Ans\">/ Ans</option></select></div></td></tr></tbody></table></div>";
147   - }
148   - });
149   -
150   -
151   -
152   -
153   - /**
154   - * Event calcul date prochain controle
155   - */
156   - $("#SuiviFrequence").bind("change", function (event) {
157   - console.log("SuiviFrequence changed");
158   - if($("#date-controle").val() != "" && $("#SuiviFrequence").val() != "") {
159   - var url = document.URL;
160   - var reg=new RegExp("(suivis).*$","g");
161   - var dateUrl = url.replace(reg, "Suivis/getNextDate/");
162   - $.ajax({
163   - url: dateUrl + $("#date-controle").val() + "/" + $("#SuiviFrequence").val() + "/" + $("#type-frequence").val().substring(2)
164   - }).done(function(data) {
165   - $("#date-prochain-controle").val(data)
166   - });
167   - }
168   - });
169   -
170   - $("#type-frequence").bind("change", function (event) {
171   - console.log("type-frequence changed");
172   - if($("#date-controle").val() != "" && $("#SuiviFrequence").val() != "") {
173   - var url = document.URL;
174   - var reg=new RegExp("(suivis).*$","g");
175   - var dateUrl = url.replace(reg, "Suivis/getNextDate/");
176   - $.ajax({
177   - url: dateUrl + $("#date-controle").val() + "/" + $("#SuiviFrequence").val() + "/" + $("#type-frequence").val().substring(2)
178   - }).done(function(data) {
179   - $("#date-prochain-controle").val(data)
180   - });
181   - }
182   - });
183   -});
184   -
185   -function typedemesure(){
186   - var domaineId=$("#type-suivi-id :selected").text();
187   - var opts ="";
188   - $('#listeunite option').each(function(){
189   - if($(this).val()==10){
190   - opts += "<option selected=\"selected\" value=\""+$(this).val()+"\">"+$(this).text()+"</option>";
191   - } else {
192   - opts += "<option value=\""+$(this).val()+"\">"+$(this).text()+"</option>";
193   - }
194   - });
195   -
196   - var listformule = "<option selected=\"selected\"></option>";
197   - $('#listeformule option').each(function(){
198   - listformule += "<option value=\""+$(this).val()+"\">"+$(this).text()+"</option>";
199   - });
200   -
201   -
202   - if($('#typemesure option:selected').val() == '1') {
203   - document.getElementById('metro').innerHTML ="<div class=\"input text required\" ><label for=\"nommesure\">Nom de la mesure</label><input type=\"text\" name=\"nommesure\" maxlength=\"45\" id=\"nommesure\"></div><div class=\"input text required\" ><label for=\"symbole\">Symbole</label><input type=\"text\" name=\"symbole\" maxlength=\"45\" id=\"symbole\"></div>";
204   - document.getElementById('metro').innerHTML +="<div class=\"input select required\" ><label for=\"unite-id\">Unité</label><select name=\"unite_id\" id=\"unite-id\" >"+opts+"</select></div>";
205   - } else {
206   - document.getElementById('metro').innerHTML ="<div class=\"input select required\" ><label for=\"formule_id\">Formule</label><select onchange=\"changeformule()\" name=\"formule_id\" id=\"formule-id\" >"+listformule+"</select></div>";
207   - document.getElementById('metro').innerHTML +="<div class=\"input text required\" ><label for=\"nommesure\">Nom de la mesure</label><input type=\"text\" readonly name=\"nommesure\" maxlength=\"45\" id=\"nommesure\"></div>";
208   - document.getElementById('metro').innerHTML +="<div class=\"input text required\" ><label for=\"symbole\">Symbole</label><input type=\"text\" readonly name=\"symbole\" maxlength=\"45\" id=\"symbole\"></div>";
209   - document.getElementById('metro').innerHTML +="<div class=\"input text required\" ><label for=\"unite\">Unité</label><input type=\"text\" readonly name=\"unite\" id=\"unite\"></div>"
210   - }
211   - document.getElementById('metro').innerHTML +="<div class=\"input number required\" ><label for=\"valeurref\">Valeur de référence</label><input type=\"number\" name=\"valeurRef\" step=\"any\" id=\"valeurref\"></div><div class=\"input number\" ><label for=\"plage-debut\">Plage de mesure (debut)</label><input type=\"number\" name=\"plage_debut\" step=\"any\" id=\"plage-debut\"></div><div class=\"input number\" ><label for=\"plage-fin\">Plage de mesure (fin)</label><input type=\"number\" name=\"plage_fin\" step=\"any\" id=\"plage-fin\"></div>";
212   - document.getElementById('metro').innerHTML +="<div class=\"input number required\" ><label for=\"resolution\">Resolution</label><input type=\"number\" name=\"resolution\" step=\"any\" id=\"resolution\"></div><div class=\"input number required\" ><label for=\"tolerance\">Tolerance</label><input type=\"number\" name=\"tolerance\" step=\"any\" id=\"tolerance\"></div><div class=\"input number\" ><label for=\"sensibilite\">Sensibilité</label><input type=\"number\" name=\"sensibilite\" step=\"any\" id=\"sensibilite\"></div>";
213   - document.getElementById('metro').innerHTML +="<div class=\"input number \" ><label for=\"justesse\">Justesse</label><input type=\"number\" name=\"justesse\" step=\"any\" id=\"justesse\"></div><div class=\"input number \" ><label for=\"fidelite\">Fidelite</label><input type=\"number\" name=\"fidelite\" step=\"any\" id=\"fidelite\"></div><div class=\"input number required\" ><label for=\"emtstandart\">EMT standart</label><input type=\"number\" name=\"emtstandart\" step=\"any\" id=\"emtstandart\"></div>";
214   -}
215   -
216   -function changeformule(){
217   - var listeformules = $('#listeformules');
218   - var formule_id=document.getElementById('formule-id').options[document.getElementById('formule-id').selectedIndex].value;
219   - var re=new RegExp('.*\"id\": '+formule_id+',.*');
220   - var formule;
221   - var formule_array;
222   - $('#listeformules option').each(function() {
223   - if(re.test($(this).text())){
224   - formule =$(this).text();
225   - formule= formule.substring(2,formule.length-2);
226   - var reg=new RegExp('[ ,:]+');
227   - formule_array = formule.split(reg);
228   - var regE=new RegExp('[ "]+');
229   - for (var i=0; i< formule_array.length;i++){
230   - if(regE.test(formule_array[i])){
231   - formule_array[i]= formule_array[i].substring(1,formule_array[i].length-1);
232   - }
233   - }
234   - }
235   - });
236   - document.getElementById("nommesure").value=formule_array[4];
237   - document.getElementById("symbole").value=formule_array[8];
238   - document.getElementById("unite").value=formule_array[10];
239   - var var_array = new Array(<?php $variables?>);
240   - alert(var_array);
241   -}
242   -
243   -</script>
  1 +<?php
  2 +$this->extend('/Suivis/add_edit');
  3 +?>
244 4 \ No newline at end of file
... ...
src/Template/Suivis/edit.ctp
1 1 <?php
2   -// Variables passées à cette vue par le controleur
3   -$suivi = $suivi;
4   -
5   -$parent = $parent;
6   -//@deprecated
7   -$materiel = $materiel;
8   -
9   -$materiels = $materiels;
10   -$unite = $unite;
11   -$metro = $metro;
12   -$domaineresp = $domaineresp;
13   -$typeSuivis = $typeSuivis;
14   -$numMateriel = $numMateriel;
15   -$groupesThematiques = $groupesThematiques;
16   -$groupesMetiers = $groupesMetiers;
17   -?>
18   -
19   -<!--
20   -<div class="suivis form col-lg-12 col-md-12 col-sm-12">
21   --->
22   -<div class="suivis form col-lg-5 col-md-7 col-sm-9">
23   -
24   - <h2>
25   - <i class="icon-edit"></i> Editer un suivi
26   - </h2>
27   -
28   - <?php
29   -
30   - // Ce suivi concerne le materiel...
31   - //$link = isset($materiel) ? $materiel->designation : 'Suivi '.$suivi->id;
32   - $displayElement(__("Matériel concerné :"), $this->Html->link($parent->designation, [
33   - 'controller' => 'materiels',
34   - 'action' => 'view',
35   - $parent->id
36   - ]));
37   -
38   - echo $this->Form->create($suivi);
39   - ?>
40   -
41   - <fieldset>
42   -
43   - <?php
44   -
45   - // - intitulé
46   - echo $this->Form->control('intitule', ['label' => 'Intitulé']);
47   -
48   - // - matériel suivi (hidden)
49   - echo $this->Form->hidden('materiel_id', [
50   - 'options' => $materiels,
51   - 'default' => $suivi->get('materiel_id')
52   - ]);
53   -
54   - // - num labo
55   - /* (EP inutile)
56   - echo $this->Form->control('materiel_numero_laboratoire', [
57   - 'label' => 'N° materiel labo',
58   - 'default' => $materiel['numero_laboratoire'],
59   - 'disabled' => TRUE
60   - ]);
61   - */
62   -
63   - // - type suivi
64   - echo $this->Form->control('type_suivi_id', [
65   - 'label' => "Type d'intervention",
66   - 'options' => $typeSuivis,
67   - 'disabled' => false
68   - //'disabled' => TRUE
69   - ]);
70   -
71   - // Affichage des bonnes informations en fonction du type de suivi
72   -
73   - // type = maintenance ? => cas spécifique
74   - //if ($suivi->type_suivi_id == 2 ) {
75   - //debug($suivi->type_suivi->nom);
76   - if ($suivi->type_suivi->nom == 'Maintenance' ) {
77   - // - date controle
78   - echo $this->Form->control('date_controle', [
79   - 'type' => 'text',
80   - 'id' => 'date_deb',
81   - 'label' => 'Date de la prise en charge',
82   - 'class' => 'datepicker',
83   - 'placeholder' => 'Cliquez pour sélectionner une date',
84   - //'disabled' => true
85   - ]);
86   - // - date prochain controle
87   - echo $this->Form->control('date_prochain_controle', [
88   - 'type' => 'text',
89   - 'id' => 'date_fin',
90   - 'label' => 'Date de fin estimée',
91   - 'class' => 'datepicker',
92   - 'placeholder' => 'Cliquez pour sélectionner une date'
93   - ]);
94   - } // maintenance
95   -
96   - // autre type que maintenance ? => cas général
97   - else {
98   - //echo '<table id="tableAlignementFrequence" border=1><tr>';
99   - echo '<table id="tableAlignementFrequence" border=0><tr>';
100   - // - fréquence
101   - echo '<td>';
102   - echo $this->Form->control('frequence', [
103   - 'type' => 'text',
104   - 'id' => 'SuiviFrequence',
105   - 'label' => 'Fréquence',
106   - //'disabled' => true,
107   - 'templates' => [
108   - 'inputContainer' => '<div class="A">{{content}}</div>'
109   - ],
110   - 'placeholder' => ''
111   - ]);
112   - echo '</td>';
113   - // - type fréquence
114   - echo '<td>';
115   - echo $this->Form->control('type_frequence', [
116   - //'label' => false,
117   - 'label' => 'Intervalle',
118   - //'disabled' => true,
119   - 'templates' => [
120   - 'inputContainer' => '<div class="typeFrequence">{{content}}</div>'
121   - ],
122   - 'options' => [
123   - '/ Jours' => '/ Jours',
124   - '/ Semaines' => '/ Semaines',
125   - '/ Mois' => '/ Mois',
126   - '/ Ans' => '/ Ans'
127   - ],
128   - 'default' => '/ Mois'
129   - ]);
130   - echo '</td>';
131   - echo '</tr></table>';
132   - } // autre type que maintenance
133   -
134   - // statut
135   - echo $this->Form->control('statut', [
136   - 'options' => [
137   - 'En cours' => 'En cours',
138   - 'Terminé' => 'Terminé'
139   - ]
140   - ]);
141   -
142   - // prestataire
143   - echo $this->Form->control('organisme', [
144   - 'label' => 'Prestataire'
145   - ]);
146   -
147   - // groupe thématique
148   - echo $this->Form->control('groupes_thematique_id', [
149   - 'label' => $configuration->nom_groupe_thematique,
150   - 'options' => $groupesThematiques,
151   - 'default' => $materiel['groupes_thematique_id']
152   - ]);
153   -
154   - // groupe métier
155   - echo $this->Form->control('groupes_metier_id', [
156   - 'label' => $configuration->nom_groupe_metier,
157   - 'options' => $groupesMetiers,
158   - 'default' => $materiel['groupes_metier_id']
159   - ]);
160   -
161   - // (metro) type mesure (hidden)
162   - echo '<div id="typedemesure" style="display:none">';
163   - // echo '<div class="input select required"><label for="typemesure">Type de mesure</label><select name="typemesure" id="typemesure"><option value="1">Direct</option><option value="2">Indirect</option></select></div>';
164   - // La ligne du dessus est l'équivalent en pas propre de l'input juste en dessous !
165   - echo $this->Form->control('typemesure', [
166   - 'label' => 'Type de mesure',
167   - 'options' => [
168   - '1' => 'Direct',
169   - '2' => 'Indirect'
170   - ]
171   - // 'required' => 'required'
172   - ]);
173   - echo '</div>';
174   -
175   - // Section métrologie (hidden)
176   - echo '<div id="metro" style="display:none">';
177   - // (metro) nom mesure (hidden)
178   - echo $this->Form->control('nommesure', [
179   - 'label' => 'Nom de la mesure'
180   - // 'required' => 'required'
181   - ]);
182   - echo $this->Form->control('symbole', [
183   - 'label' => 'Symbole'
184   - // 'required' => 'required'
185   - ]);
186   - echo $this->Form->control('unite_id', [
187   - 'options' => $unite,
188   - 'label' => 'Unité',
189   - 'empty' => 'choisir une unité'
190   - // 'required' => 'required'
191   - ]);
192   - echo $this->Form->control('valeurRef', [
193   - 'label' => 'Valeur de référence'
194   - // 'required' => 'required'
195   - ]);
196   - echo $this->Form->control('plage_debut', [
197   - 'label' => 'Plage de mesure (debut)'
198   - ]);
199   - echo $this->Form->control('plage_fin', [
200   - 'label' => 'Plage de mesure (fin)'
201   - ]);
202   - echo $this->Form->control('resolution', [
203   - 'label' => 'Resolution'
204   - // 'required' => 'required'
205   - ]);
206   - echo $this->Form->control('tolerance', [
207   - 'label' => 'Tolerance'
208   - // 'required' => 'required'
209   - ]);
210   - echo $this->Form->control('sensibilite', [
211   - 'label' => 'Sensibilité'
212   - ]);
213   - echo $this->Form->control('justesse', [
214   - 'label' => 'Justesse'
215   - ]);
216   - echo $this->Form->control('fidelite', [
217   - 'label' => 'Fidelite'
218   - ]);
219   - echo $this->Form->control('emtstandart', [
220   - 'label' => 'EMT standart'
221   - // 'required' => 'required'
222   - ]);
223   - echo '</div>'; // Section métrologie (hidden)
224   -
225   - // commentaire
226   - echo $this->Form->control('commentaire', [
227   - 'type' => 'textarea'
228   - ]);
229   -
230   - // nom modificateur (hidden)
231   - echo $this->Form->hidden('nom_modificateur', [
232   - 'value' => $username
233   - ]);
234   - ?>
235   -
236   - </fieldset>
237   -
238   - <!-- Bouton enregistrer -->
239   - <?=$this->Form->submit(__('Enregistrer'))?>
240   -
241   - <?=$this->Form->end()?>
242   -
243   -</div>
244   -
245   -<!--
246   -<div class="actions">
247   - <php
248   -echo $this->element('menu');
249   -echo $this->element('menu_form', [
250   - 'pluralHumanName' => 'Suivis'
251   -]);
252   -?>
253   -</div>
254   --->
255   -
256   -
257   -
258   -
259   -
260   -
261   -<!--
262   -********************************************************************************
263   - JAVASCRIPT functions
264   -********************************************************************************
265   --->
266   -
267   -<script type="text/javascript">
268   -
269   -$(document).ready(function () {
270   -
271   - var domaineId = $("#type-suivi-id :selected").text();
272   - var ismetro = "<?=$materiel['metrologie']?>";
273   -
274   - //$("#metro").show();
275   - //$("#metro").hide();
276   - //if (domaineId != "Vérification métrologique") {
277   - if (domaineId == "Vérification métrologique") {
278   - $("#metro").show();
279   - $("#nommesure").attr('required',true);
280   - $("#symbole").attr('required',true);
281   - $("#unite_id").attr('required',true);
282   - $("#valeurRef").attr('required',true);
283   - $("#resolution").attr('required',true);
284   - $("#tolerance").attr('required',true);
285   - $("#emtstandart").attr('required',true);
286   - $("#typedemesure").show();
287   - $("#typedemesure").attr('required',true);
288   - } else if (ismetro == 1) {
289   - $("#metro").hide();
290   - $("#nommesure").attr('required',false);
291   - $("#symbole").attr('required',false);
292   - $("#unite_id").attr('required',false);
293   - $("#valeurRef").attr('required',false);
294   - $("#resolution").attr('required',false);
295   - $("#tolerance").attr('required',false);
296   - $("#emtstandart").attr('required',false);
297   - $("#typedemesure").hide();
298   - $("#typedemesure").attr('required',false);
299   - }
300   -
301   - if(domaineId == "Réparation") $("#frequence").hide();
302   - else $("#frequence").show();
303   -
304   -});
305   -
306   -
307   -/*
308   - * Vérification date début > date fin dans le cas d'une panne
309   - */
310   -
311   -
312   -$(document).ready(function () {
313   -d1 = toDate($("#date_deb")[0].value); /* Date de la prise en charge de la panne */
314   -d2 = toDate($("#date_fin")[0].value); /* Date estimee de fin de la panne */
315   -
316   -if($("#date_fin")[0].value != undefined){
317   - if(d1 > d2) {
318   - alert("Les dates ne correspondent pas, la date de début de prise en charge doit être antérieure à la date de fin.");
319   - event.preventDefault();
320   - }
321   -}
322   -
323   - });
324   -
325   -
326   -/**
327   - * Event calcul date prochain controle
328   - */
329   - $(document).ready(function () {
330   - $("#SuiviFrequence").bind("change", function (event) {
331   - if($("#date-controle").val() != "" && $("#SuiviFrequence").val() != "") {
332   - var url = document.URL;
333   - var reg=new RegExp("(suivis).*$","g");
334   - var dateUrl = url.replace(reg, "Suivis/getNextDate/");
335   - $.ajax({
336   - url: dateUrl + $("#date-controle").val() + "/" + $("#SuiviFrequence").val() + "/" + $("#type-frequence").val().substring(2)
337   - }).done(function(data) {
338   - $("#date-prochain-controle").val(data)
339   - });
340   - }
341   - });
342   - $("#type-frequence").bind("change", function (event) {
343   - if($("#date-controle").val() != "" && $("#SuiviFrequence").val() != "") {
344   - var url = document.URL;
345   - var reg=new RegExp("(suivis).*$","g");
346   - var dateUrl = url.replace(reg, "Suivis/getNextDate/");
347   - $.ajax({
348   - url: dateUrl + $("#date-controle").val() + "/" + $("#SuiviFrequence").val() + "/" + $("#type-frequence").val().substring(2)
349   - }).done(function(data) {
350   - $("#date-prochain-controle").val(data)
351   - });
352   - }
353   - });
354   - });
355   -
356   -</script>
357 2 \ No newline at end of file
  3 +$this->extend('/Suivis/add_edit');
  4 +?>
358 5 \ No newline at end of file
... ...