Commit 914c9f1523438f0050bce0d98fc980625ed23227
Exists in
master
and in
3 other branches
merge dev-IRAP
Showing
3 changed files
with
110 additions
and
111 deletions
Show diff stats
README-LABINVENT.md
... | ... | @@ -54,7 +54,7 @@ Logiciel testé et validé sur les configurations suivantes : |
54 | 54 | VERSION ACTUELLE |
55 | 55 | |
56 | 56 | Date: 19/06/2017 |
57 | -Version: 2.6.6 | |
57 | +Version: 2.6.7 | |
58 | 58 | -> Bugfixes add/edit dates materiels |
59 | 59 | - ATTENTION : Mise à jour de la base de données requise (cf database/update) |
60 | 60 | ... | ... |
src/Template/Layout/default.ctp
... | ... | @@ -101,7 +101,7 @@ $cakeDescription = 'Labinvent 2'; |
101 | 101 | </i></td> |
102 | 102 | <td id="version"> |
103 | 103 | <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) --> |
104 | - <font color="black">VERSION 2.6.6 (19/06/2017)</font> | |
104 | + <font color="black">VERSION 2.6.7 (19/06/2017)</font> | |
105 | 105 | <br/> |
106 | 106 | <font color="black"><a href="<?php |
107 | 107 | ... | ... |
src/Template/Materiels/edit.ctp
... | ... | @@ -66,15 +66,6 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
66 | 66 | <?=$this->Form->submit(__('Enregistrer'))?> |
67 | 67 | |
68 | 68 | <?php |
69 | - // Version LATMOS - Désignation | |
70 | - /* | |
71 | - * echo '<div class="input text required"><label for="designation">Désignation</label><input list="designa" disabled="' . $isReadonlyField('designation', $myReadonlyFields) . '" id="designation" name="designation" value="' . array_shift($designation_edit) . '" type="text" placeholder="choisir/ajouter une designation" autocomplete="off"><datalist id="designa">'; | |
72 | - * foreach ($designation as $e) { | |
73 | - * echo "<option value=\"$e\">"; | |
74 | - * } | |
75 | - * echo '</datalist> </div>'; | |
76 | - */ | |
77 | - // Version IRAP - Désignation | |
78 | 69 | echo $this->Form->input('designation', [ |
79 | 70 | 'label' => 'Désignation', |
80 | 71 | 'disabled' => $isReadonlyField('designation', $myReadonlyFields) |
... | ... | @@ -407,47 +398,43 @@ echo $this->element('menu_form', ['pluralHumanName' => 'Matériels']); |
407 | 398 | |
408 | 399 | <script type="text/javascript"> |
409 | 400 | |
410 | -/** | |
411 | - * Event DOMAINE change | |
412 | - * | |
413 | - * Sur sélection d'un DOMAINE ==> update CATEGORIES + empty SOUS-CATEGORIES | |
414 | - * | |
415 | - * Dans le détail : | |
416 | - * - si select <> "choisir" ==> categ value = from domaine (select="choisir") | |
417 | - * - si select = "choisir" ==> categ value = TOUTES (select="choisir") | |
418 | - * - puis (dans les 2 cas) vider scateg | |
419 | - * | |
420 | - */ | |
421 | - | |
422 | 401 | $(document).ready(function () { |
402 | + | |
403 | + /** | |
404 | + * Event DOMAINE change | |
405 | + * | |
406 | + * Sur sélection d'un DOMAINE ==> update CATEGORIES + empty SOUS-CATEGORIES | |
407 | + * | |
408 | + * Dans le détail : | |
409 | + * - si select <> "choisir" ==> categ value = from domaine (select="choisir") | |
410 | + * - si select = "choisir" ==> categ value = TOUTES (select="choisir") | |
411 | + * - puis (dans les 2 cas) vider scateg | |
412 | + * | |
413 | + */ | |
423 | 414 | $("#sur-categorie-id").bind("change", function (event) { |
424 | - var domaineId=$("#sur-categorie-id :selected").val(); | |
425 | - var domaineresp= "<?=$domaineresp?>"; | |
426 | - var role= "<?=$role?>"; | |
427 | - if(domaineId== domaineresp){ | |
428 | - if(role == "Responsable"){ | |
429 | - $("#metro").css("display", "block"); | |
430 | - }else | |
431 | - $("#metro").css("display", "none"); | |
432 | - } | |
433 | - else | |
415 | + var domaineId=$("#sur-categorie-id :selected").val(); | |
416 | + var domaineresp= "<?=$domaineresp?>"; | |
417 | + var role= "<?=$role?>"; | |
418 | + if(domaineId== domaineresp){ | |
419 | + if(role == "Responsable"){ | |
420 | + $("#metro").css("display", "block"); | |
421 | + }else | |
434 | 422 | $("#metro").css("display", "none"); |
423 | + } | |
424 | + else | |
425 | + $("#metro").css("display", "none"); | |
435 | 426 | |
436 | - if (domaineId=="") | |
437 | - updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getAll", "Choisir une catégorie"); | |
438 | - else | |
439 | - updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getBySurCategorie", "Choisir une catégorie"); | |
440 | - emptySelectOptions("#sous-categorie-id", "Choisir une sous-catégorie"); | |
441 | - return false; | |
442 | - }); | |
427 | + if (domaineId=="") | |
428 | + updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getAll", "Choisir une catégorie"); | |
429 | + else | |
430 | + updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getBySurCategorie", "Choisir une catégorie"); | |
431 | + emptySelectOptions("#sous-categorie-id", "Choisir une sous-catégorie"); | |
432 | + return false; | |
443 | 433 | }); |
444 | 434 | |
445 | -//Mettre un gestionnaire par défaut si c'est un admin qui modifie la fiche. Sinon l'utilisateur aura a le rentrer à la mano | |
446 | - $(document).ready(function () { | |
435 | + /* Mettre un gestionnaire par défaut si c'est un admin qui modifie la fiche. Sinon l'utilisateur aura a le rentrer à la mano */ | |
447 | 436 | if ( <?=(! is_null($res)) ? "true" : "false"?>) $("#gestionnaire-id").val("<?=$_SESSION['Auth']['User']['sn'][0]?>"); |
448 | - // Oui, c'est un batard entre du JavaScript et du PHP ... Mais au moins ca fonctionne en une seule ligne ! | |
449 | - }); | |
450 | - | |
437 | + /* Oui, c'est un batard entre du JavaScript et du PHP ... Mais au moins ca fonctionne en une seule ligne ! */ | |
451 | 438 | |
452 | 439 | /** |
453 | 440 | * |
... | ... | @@ -456,33 +443,29 @@ $(document).ready(function () { |
456 | 443 | * - si select = "choisir" ==> vider scateg |
457 | 444 | * - si select <> "choisir" ==> domaine value selected = celui de la categ, et scateg values = from categ |
458 | 445 | */ |
459 | - $(document).ready(function() { | |
460 | - $("#categorie-id").bind("change", function(event) { | |
461 | - var categId = $("#categorie-id :selected").val(); | |
462 | - var categLabel = $("#categorie-id :selected").text(); | |
446 | + $("#categorie-id").bind("change", function(event) { | |
447 | + var categId = $("#categorie-id :selected").val(); | |
448 | + var categLabel = $("#categorie-id :selected").text(); | |
463 | 449 | |
464 | - if (categId == "") emptySelectOptions("#sous-categorie-id", "Choisir une sous-catégorie"); | |
465 | - else { | |
466 | - updateSelectOptionsFromAnother("#sous-categorie-id", "#categorie-id", "SousCategories/getByCategorie", "Choisir une sous-catégorie " + categLabel); | |
467 | - updateSelectOptionsFromAnother("#sur-categorie-id", "#categorie-id", "SurCategories/getFromCategorie", ""); | |
468 | - } | |
469 | - return false; | |
470 | - }); | |
450 | + if (categId == "") emptySelectOptions("#sous-categorie-id", "Choisir une sous-catégorie"); | |
451 | + else { | |
452 | + updateSelectOptionsFromAnother("#sous-categorie-id", "#categorie-id", "SousCategories/getByCategorie", "Choisir une sous-catégorie " + categLabel); | |
453 | + updateSelectOptionsFromAnother("#sur-categorie-id", "#categorie-id", "SurCategories/getFromCategorie", ""); | |
454 | + } | |
455 | + return false; | |
471 | 456 | }); |
472 | 457 | |
473 | 458 | /** |
474 | 459 | * Event Mail change |
475 | 460 | */ |
476 | - $(document).ready(function() { | |
477 | - $("#nom-responsable").bind("change", function(event) { | |
478 | - var url = document.URL; | |
479 | - var reg = new RegExp("(materiels).*$", "g"); | |
480 | - var emailUrl = url.replace(reg, "Users/getLdapEmail/"); | |
481 | - $.ajax({ | |
482 | - url: emailUrl + $("#nom-responsable").val() | |
483 | - }).done(function(data) { | |
484 | - $("#email-responsable").val(data) | |
485 | - }); | |
461 | + $("#nom-responsable").bind("change", function(event) { | |
462 | + var url = document.URL; | |
463 | + var reg = new RegExp("(materiels).*$", "g"); | |
464 | + var emailUrl = url.replace(reg, "Users/getLdapEmail/"); | |
465 | + $.ajax({ | |
466 | + url: emailUrl + $("#nom-responsable").val() | |
467 | + }).done(function(data) { | |
468 | + $("#email-responsable").val(data) | |
486 | 469 | }); |
487 | 470 | }); |
488 | 471 | |
... | ... | @@ -490,60 +473,76 @@ $(document).ready(function () { |
490 | 473 | /** |
491 | 474 | * Event calcul date fin de garantie |
492 | 475 | */ |
493 | - $(document).ready(function() { | |
494 | - $("#duree-garantie").bind("change", function(event) { | |
495 | - update_date(); | |
496 | - }); | |
476 | + /* On formatte COMME IL FAUT les dates des formulaires */ | |
477 | + $("#date-acquisition")[0].value = $("#date-acquisition")[0].value.replace(/\//g, "-"); | |
478 | + $("#date-reception")[0].value = $("#date-reception")[0].value.replace(/\//g, "-"); | |
479 | + $("#date-fin-garantie")[0].value = $("#date-fin-garantie")[0].value.replace(/\//g, "-"); | |
497 | 480 | |
498 | - $("#unite-duree-garantie").bind("change", function(event) { | |
499 | - update_date(); | |
500 | - }); | |
481 | + /* Puis si nécessaire on update la date de fin de gurantie au chargement de la page */ | |
482 | + if ($("#date-fin-garantie")[0].value != "") dateUpdate(); | |
501 | 483 | |
502 | - $("#date-reception").change( function(event) { | |
503 | - update_date(); | |
504 | - }); | |
505 | - | |
506 | - }); | |
507 | - | |
508 | - /** | |
509 | - * Fonction de mise à jour de la date de fin de guarantie | |
510 | - */ | |
511 | - function update_date() { | |
512 | - if ($("#date-reception").val() != "" && $("#duree-garantie").val() != "") { | |
513 | - var url = document.URL; | |
514 | - var reg = new RegExp("(materiels).*$", "g"); | |
515 | - var dateUrl = url.replace(reg, "Materiels/getDateGarantie/"); | |
516 | - $.ajax({ | |
517 | - url: dateUrl + $("#date-reception").val() + "/" + $("#duree-garantie").val() + "/" + $("#unite-duree-garantie").val() | |
518 | - }).done(function(data) { | |
519 | - $("#date-fin-garantie").val(data) | |
520 | - }); | |
521 | - } | |
522 | - } | |
484 | + /* Et enfin les events purs */ | |
485 | + $("#date-reception").change( function(event) { dateUpdate(); }); | |
486 | + $("#duree-garantie").bind("change", function(event) { dateUpdate(); }); | |
487 | + $("#unite-duree-garantie").bind("change", function(event) { dateUpdate(); }); | |
488 | + $("#date-fin-garantie").bind("change", function(event) { $("#duree-garantie")[0].value = "" }); | |
523 | 489 | |
524 | 490 | /** |
525 | 491 | * Event - à la validation, on vérifie les dates |
526 | 492 | */ |
527 | - $(document).ready(function(){ | |
528 | - $( ".form" ).submit(function( event ) { | |
529 | - d1 = toDate($("#date-acquisition")[0].value); // Date de la commande | |
530 | - d2 = toDate($("#date-reception")[0].value); // Date de réception | |
531 | - if($("#date-reception")[0].value != undefined){ | |
532 | - if(d1 > d2) { | |
533 | - alert("Les dates ne correspondent pas, la date de réception doit être supérieure à la date de commande."); | |
534 | - event.preventDefault(); | |
535 | - } | |
493 | + $( ".form" ).submit(function( event ) { | |
494 | + s1 = $("#date-acquisition")[0].value; | |
495 | + s2 = $("#date-reception")[0].value; | |
496 | + s3 = $("#date-fin-garantie")[0].value; | |
497 | + if (!checkDate(s1) || !checkDate(s2) || !checkDate(s3)) { | |
498 | + alert("Les dates doivent être de la forme dd-mm-YYYY"); | |
499 | + event.preventDefault(); | |
500 | + } | |
501 | + d1 = toDate($("#date-acquisition")[0].value); /* Date de la commande */ | |
502 | + d2 = toDate($("#date-reception")[0].value); /* Date de réception */ | |
503 | + if($("#date-reception")[0].value != undefined){ | |
504 | + if(d1 > d2) { | |
505 | + alert("Les dates ne correspondent pas, la date de réception doit être supérieure à la date de commande."); | |
506 | + event.preventDefault(); | |
536 | 507 | } |
537 | - }); | |
508 | + } | |
538 | 509 | }); |
510 | +}); | |
511 | + | |
512 | +/** | |
513 | + * Fonction qui vérifie que la date en parametre soit bien au format dd-mm-YYYY ou d-m-YYYY | |
514 | + */ | |
515 | +function checkDate(str) { | |
516 | + return str.match(/^(\d{1,2})-(\d{1,2})-(\d{4})$/); | |
517 | +} | |
539 | 518 | |
540 | - function toDate(param) { | |
541 | - var DateString = param.split("-"); | |
542 | - return new Date(parseInt(DateString[2]), parseInt(DateString[1]) + 1, parseInt(DateString[0]), 12, 00, 00); | |
543 | - // new Date(YYYY, mm+1, dd, 12, 00, 00) | |
544 | - // Le +1 du mois est nécessaire car les mois commencent à 0 en JS | |
545 | - // les 3 derniers chiffres ne sont pas nécessaires, mais si on les retire ça bug uniquement sous firefox (il est plus strict que chrome paar exemple) | |
546 | - // et la date devient du grand n'importe quoi | |
519 | +/** | |
520 | +* Fonction de mise à jour de la date de fin de guarantie | |
521 | +*/ | |
522 | +function dateUpdate() { | |
523 | + if ($("#date-reception").val() != "" && $("#duree-garantie").val() != "") { | |
524 | + var url = document.URL; | |
525 | + var reg = new RegExp("(materiels).*$", "g"); | |
526 | + var dateUrl = url.replace(reg, "Materiels/getDateGarantie/"); | |
527 | + $.ajax({ | |
528 | + url: dateUrl + $("#date-reception").val() + "/" + $("#duree-garantie").val() + "/" + $("#unite-duree-garantie").val() | |
529 | + }).done(function(data) { | |
530 | + $("#date-fin-garantie").val(data) | |
531 | + }); | |
547 | 532 | } |
533 | +} | |
534 | + | |
535 | +/** | |
536 | +* Fonction qui transforme la chaine de format dd-mm-YYYY en date js pour pouvoir être comparée par la suite | |
537 | +*/ | |
538 | +function toDate(str) { | |
539 | + var DateString = str.split("-"); | |
540 | + return new Date(parseInt(DateString[2]), parseInt(DateString[1]) + 1, parseInt(DateString[0]), 12, 00, 00); | |
541 | + /* new Date(YYYY, mm+1, dd, 12, 00, 00) | |
542 | + Le +1 du mois est nécessaire car les mois commencent à 0 en JS | |
543 | + les 3 derniers chiffres ne sont pas nécessaires, mais si on les retire ça bug uniquement sous firefox (il est plus strict que chrome paar exemple) | |
544 | + et la date devient du grand n'importe quoi | |
545 | + */ | |
546 | +} | |
548 | 547 | |
549 | 548 | </script> | ... | ... |