Commit 914c9f1523438f0050bce0d98fc980625ed23227

Authored by Etienne Pallier
2 parents 645f6179 704cd4c6

merge dev-IRAP

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 &amp;&amp; $materiel-&gt;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-&gt;element(&#39;menu_form&#39;, [&#39;pluralHumanName&#39; =&gt; &#39;Matériels&#39;]);
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>
... ...