Commit d45cb1dafebe500cdff64418cafb98001573049d

Authored by Etienne Pallier
2 parents 66111fa5 c9ad82a7
Exists in master and in 1 other branch dev

Merge dev branch into master branch (vv3.7.9.58)

README.md
... ... @@ -44,11 +44,16 @@ Logiciel testé et validé sur les configurations suivantes :
44 44  
45 45 VERSION ACTUELLE
46 46  
47   -Date: 07/07/2020
48   -Version: 3.7.9.57
  47 +Date: 08/07/2020
  48 +Version: 3.7.9.58 (encours)
49 49 Author: EP
50 50 Commentaire:
51   - - Nouveau filtre "age" sur page index des matériels : Affichage des matériels par tranche d'âge (0-5 ans, 5-10, ...)
  51 + - Nouveau filtre "age" (FINALISÉ) sur page index des matériels : Affichage des matériels par tranche d'âge (0-5 ans, 5-10, ...)
  52 + - Grosse refactorisation du javascript dans la page materiels/index pour utiliser le meme code pour les 2 filtres "age" et "nb lines"
  53 + - Bugfix url rewriting dans la page materiels/index pour supprimer le paramètre "page" car ça n'est pas pertinent et ça provoque plantages
  54 + - Nombreux petits bugfixes sur les css
  55 +
  56 + - TODO: conserver les arguments de l'url quand on change de statut dans la page materiels/index
52 57  
53 58  
54 59 - Nouvelle page web "Nouveautés" (/pages/changes)
... ... @@ -91,7 +96,8 @@ La liste ci-dessous est aussi en ligne ici : https://tinyurl.com/labinvent#headi
91 96 -----------------------------------------------------------------------------------------------------------
92 97 VERSION ACTUELLE
93 98  
94   -07/07/2020 v3.7.9.56 (EP)
  99 +07/07/2020 v3.7.9.56-57 (EP)
  100 + - Nouveau filtre "age" sur page index des matériels : Affichage des matériels par tranche d'âge (0-5 ans, 5-10, ...)
95 101 - Materiel : technique ou/et inventoriable => trop compliqué et inutile => en fait c’est un OUX (exclusif)
96 102 => simplifier en ne gardant qu'UNE SEULE case à cocher qui s'appelle "materiel technique".
97 103 => Si cette case n'est pas cochée, le prix doit alors être supérieur à 1000E
... ...
src/Controller/MaterielsController.php
... ... @@ -9,6 +9,8 @@ use Cake\Auth\FallbackPasswordHasher;
9 9 use App\Model\Entity\Materiel;
10 10 use App\Model\Entity\User;
11 11 use Cake\I18n\FrozenDate;
  12 +use Cake\Database\Expression\QueryExpression;
  13 +use Cake\Database\Query;
12 14  
13 15 //use App\Controller\DocumentsController;
14 16 //App::import('Controller', 'Documents');
... ... @@ -746,9 +748,9 @@ class MaterielsController extends AppController {
746 748 $this->myDebug("step 3: MaterielsController.index()");
747 749  
748 750 // /materiels/index/VALIDATED
749   - $condition = '';
  751 + $conditions = [];
750 752 if (isset($this->request->getAttribute('params')['pass'][0])) {
751   - $condition = [
  753 + $conditions = [
752 754 'Materiels.status =' => $this->request->getAttribute('params')['pass'][0]
753 755 ];
754 756 //$this->set('STATUS', $this->request->getAttribute('params')['pass'][0]);
... ... @@ -766,7 +768,7 @@ class MaterielsController extends AppController {
766 768 'nom =' => 'N/A'
767 769 ])
768 770 ->first()['id'])
769   - $condition = [
  771 + $conditions = [
770 772 'Materiels.groupes_metier_id =' => $GM,
771 773 'Materiels.status !=' => 'ARCHIVED'
772 774 ];
... ... @@ -776,12 +778,12 @@ class MaterielsController extends AppController {
776 778 'nom =' => 'N/A'
777 779 ])
778 780 ->first()['id'])
779   - $condition = [
  781 + $conditions = [
780 782 'Materiels.groupes_thematique_id =' => $GT,
781 783 'Materiels.status !=' => 'ARCHIVED'
782 784 ];
783 785 else
784   - $condition = [
  786 + $conditions = [
785 787 'Materiels.id =' => 0
786 788 ];
787 789 }
... ... @@ -794,7 +796,7 @@ class MaterielsController extends AppController {
794 796 'nom =' => 'N/A'
795 797 ])
796 798 ->first()['id'])
797   - $condition = [
  799 + $conditions = [
798 800 'Materiels.groupes_metier_id =' => $GMV,
799 801 'Materiels.status =' => 'CREATED',
800 802 'Materiels.status !=' => 'ARCHIVED'
... ... @@ -804,13 +806,13 @@ class MaterielsController extends AppController {
804 806 'nom =' => 'N/A'
805 807 ])
806 808 ->first()['id'])
807   - $condition = [
  809 + $conditions = [
808 810 'Materiels.groupes_metier_id =' => $GTV,
809 811 'Materiels.status =' => 'CREATED',
810 812 'Materiels.status !=' => 'ARCHIVED'
811 813 ];
812 814 else
813   - $condition = [
  815 + $conditions = [
814 816 'Materiels.id =' => 0
815 817 ];
816 818 }
... ... @@ -823,12 +825,12 @@ class MaterielsController extends AppController {
823 825 'Utilisateur',
824 826 'Responsable'
825 827 ]))
826   - $condition = [
  828 + $conditions = [
827 829 'Materiels.nom_responsable =' => $this->request->getQuery('MY'),
828 830 'Materiels.status !=' => 'ARCHIVED'
829 831 ];
830 832 else
831   - $condition = [
  833 + $conditions = [
832 834 'Materiels.nom_responsable =' => $this->request->getQuery('MY')
833 835 ];
834 836 }
... ... @@ -837,8 +839,8 @@ class MaterielsController extends AppController {
837 839 if (in_array($this->getUserRole(), [
838 840 'Utilisateur',
839 841 'Responsable'
840   - ]) && $condition == '')
841   - $condition = [
  842 + ]) && $conditions == '')
  843 + $conditions = [
842 844 'Materiels.status !=' => 'ARCHIVED'
843 845 ];
844 846  
... ... @@ -854,8 +856,9 @@ class MaterielsController extends AppController {
854 856 * 21 = 20+
855 857 */
856 858 $age = $this->request->getQuery('age');
857   - // Par défaut, TOUS les ages
858   - if (is_null($age)) $age = 0;
  859 + // Par défaut, 0-5 ans
  860 + if (is_null($age)) $age = 5;
  861 + // Si age==0 on ne fait rien (car on prend TOUS les materiels)
859 862 if ($age>0) {
860 863 $today_year = (new FrozenDate('now'))->year;
861 864 // ex: si on est en 2020 :
... ... @@ -873,16 +876,22 @@ class MaterielsController extends AppController {
873 876 //debug("$year_min a $year_max");
874 877 // $year_min <= year(date_acquisition) <= $year_max
875 878 //$condition['date_acquisition !='] = 'null'; // Date non nulle sinon ça plante !!!
876   - //$condition['date_acquisition IS NOT'] = 'NULL'; // Date non nulle sinon ça plante !!!
  879 + //$conditions['date_acquisition IS NOT'] = 'NULL'; // Date non nulle sinon ça plante !!!
  880 + /*
877 881 // Pour faire NON EXCLUSIF, faire ceci :
878 882 $condition['year(date_acquisition) <='] = $year_max; // <= 2015
879 883 $condition['year(date_acquisition) >='] = $year_min; // >= 2010
880   - /*
881   - // Pour bien faire EXCLUSIF, faire ceci :
882   - $condition['year(date_acquisition) <='] = $year_max; // <= 2015
883   - $condition['year(date_acquisition) >'] = $year_min; // > 2010
884 884 */
  885 + // Pour bien faire EXCLUSIF, faire ceci :
  886 + $conditions['year(date_acquisition) <='] = $year_max; // <= 2015
  887 + $conditions['year(date_acquisition) >'] = $year_min; // > 2010
  888 + }
  889 + // Age inconnu (date nulle)
  890 + /*
  891 + elseif ($age==-1) {
  892 + $conditions['date_acquisition IS'] = 'NULL';
885 893 }
  894 + */
886 895  
887 896 // Nb lignes par page
888 897 $limit = $this->request->getQuery('aff');
... ... @@ -907,15 +916,60 @@ class MaterielsController extends AppController {
907 916 ];
908 917  
909 918 // TOUS les materiels
  919 + /*
910 920 $this->set('nbMateriels', $this->Materiels->find('all', [
911 921 'conditions' => $condition
912 922 ])->count());
  923 + */
  924 + $materiels = $this->Materiels
  925 + //->find('all')
  926 + ->find()
  927 + ->where($conditions);
  928 + if ($age==-1) $materiels = $materiels
  929 + ->where(function (QueryExpression $exp, Query $q) {
  930 + return $exp->isNull('date_acquisition');
  931 + }
  932 + );
  933 + $this->set('nbMateriels', $materiels->count());
  934 +
  935 + /*
  936 + $this->set('nbMateriels',
  937 + $this->Materiels
  938 + //->find('all')
  939 + ->find()
  940 + ->where($conditions)
  941 + ->count()
  942 + );
  943 + */
913 944  
914 945 // Seulement le nombre de materiels demandés par paginate
915 946 //debug($condition);
  947 + /*
916 948 $materiels = $this->paginate($this->Materiels->find('all', [
917   - 'conditions' => $condition
  949 + 'conditions' => $conditions
918 950 ]));
  951 + */
  952 + # WHERE (population) IS NOT NULL
  953 + /*
  954 + $materiels = $this->Materiels
  955 + ->find()
  956 + ->where(function (QueryExpression $exp, Query $q) {
  957 + return $exp->isNotNull('date_acquisition');
  958 + }
  959 + );
  960 + $materiels = $this->paginate($materiels
  961 + ->where($conditions)
  962 + );
  963 + */
  964 +
  965 + // Paginated materiels
  966 + /*
  967 + $materiels = $this->paginate($this->Materiels
  968 + ->find()
  969 + ->where($conditions)
  970 + );
  971 + */
  972 + $materiels = $this->paginate($materiels);
919 973 $this->set(compact('materiels'));
920 974  
921 975 // Pas bien..., mais pratique :
... ...
src/Template/Materiels/index.ctp
... ... @@ -187,6 +187,7 @@ $displayNbLinesSelector = function($form, $request) {
187 187 //echo $this->Form->control('aff_par_defaut', [
188 188 echo $form->control('aff_par_defaut', [
189 189 'label' => 'Nombre lignes',
  190 + 'onchange' => "updateUrlWithSelectedValue('aff-par-defaut', 'aff')",
190 191 'options' => [
191 192 '20' => 20,
192 193 '30' => 30,
... ... @@ -204,14 +205,20 @@ $displayAgeSelector = function($form, $request) {
204 205 //echo '<div class="col-lg-2 col-md-3 col-sm-4">';
205 206 echo $form->control('age_selector', [
206 207 'label' => 'Age',
  208 + 'onchange' => "updateUrlWithSelectedValue('age-selector', 'age')",
207 209 'options' => [
208 210 '0' => 'Tous',
209   - '5' => '0-5 ans',
  211 + '5' => 'Récents (5 ans max)',
210 212 '10' => '5-10 ans',
211 213 '15' => '10-15 ans',
212 214 '20' => '15-20 ans',
  215 + //'20plus' => '+ 20 ans',
213 216 '21' => '+ 20 ans',
214   - ]
  217 + //'unknown' => 'inconnu',
  218 + '-1' => 'inconnu',
  219 + ],
  220 + // Inutile car géré via javascript
  221 + //'default' => '5',
215 222 ]);
216 223 //echo '</div>';
217 224 }; // displayNbLinesSelector()
... ... @@ -267,6 +274,7 @@ $displayActionButtonsForSelectedOrAllElements = function($form, $SELECTED_STATUS
267 274 };
268 275  
269 276  
  277 +
270 278 /*
271 279 * Couleurs en fonction du statut du matos
272 280 *
... ... @@ -276,7 +284,8 @@ $displayColorLegend = function() {
276 284 // VALIDATED => vert
277 285 // TBA => orange
278 286 // ARCHIVED => rouge
279   - echo "<p><i><b><u>Couleur</u> :</b> bleu=créé ; vert=validé ; orange=à sortir ; rouge=archivé (couleur date rouge = fin garantie)</i></p>";
  287 + //echo "<p><i><b><u>Couleur</u> :</b> <div>bleu=à valider</div> ; vert=validé ; orange=à sortir ; rouge=archivé (couleur date rouge = fin garantie)</i></p>";
  288 + echo "<p><i><b><u>Couleur</u> :</b> <i style='color:blue'>bleu=à valider</i> ; <i style='color:green'>vert=validé</i> ; <i style='color:orange'>orange=à sortir</i> ; <i style='color:red'>rouge=archivé</i> ; couleur date rouge = <i style='color:red'>fin garantie</i></i></p>";
280 289 };
281 290  
282 291  
... ... @@ -483,35 +492,37 @@ echo $this-&gt;Form-&gt;create(&#39;materiels&#39;, [
483 492 // <!-- AFFICHAGE DES MATERIELS -->
484 493  
485 494 if ($nbMateriels == 0) echo 'Aucun matériel';
486   -
487 495 else {
488   - // $form2 = $this->Form;
489   - // /echo $this->Form->create('materiels', ['url' => '/materiels/execActions']);
490   - if ($SELECTED_STATUS) echo $this->Form->hidden('what', [
491   - 'value' => $SELECTED_STATUS
492   - ]);
493   - ?>
494   - <table style="border-collapse: separate; border-spacing: 0;">
495   - <thead>
496   - <tr>
497   - <?php if ($SELECTED_STATUS) { echo '<th></th>'; }?>
498   - <th class="actions"><?= __('') ?></th>
499   - <th><?= $this->Paginator->sort('designation','Désignation') ?></th>
500   - <th><?= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th>
501   - <th><?= $this->paginator->sort('hors_service', ' ') ?></th>
502   - <th><?= $this->Paginator->sort('categorie_id', 'Catégorie') ?></th>
503   - <th><?= $this->Paginator->sort('organisme_id', 'Org.') ?></th>
504   - <th><?= $this->Paginator->sort('numero_inventaire_organisme', 'N° Invent. Org.') ?></th>
505   - <th><?= $this->Paginator->sort('nom_responsable', 'Nom de l\'utilisateur') ?></th>
506   - <th><?= $this->Paginator->sort('status', 'Statut') ?></th>
507   - <th><?= $this->Paginator->sort('date_acquisition', 'Date Achat') ?></th>
508   - <?= "<th>".$this->Paginator->sort('etiquette', 'Et')."</th>" ?>
509   - <?php if ($METRO) echo "<th>".$this->Paginator->sort('metrologie', 'Metro')."</th>" ?>
510   - </tr>
511   - </thead>
512   - <tbody>
513   -
514   - <?php
  496 +
  497 +// $form2 = $this->Form;
  498 +// /echo $this->Form->create('materiels', ['url' => '/materiels/execActions']);
  499 +if ($SELECTED_STATUS) echo $this->Form->hidden('what', ['value'=>$SELECTED_STATUS]);
  500 +?>
  501 +<table style="border-collapse: separate; border-spacing: 0;">
  502 +
  503 + <!-- HEAD (Titres) -->
  504 + <thead>
  505 + <tr>
  506 + <?php if ($SELECTED_STATUS) { echo '<th></th>'; }?>
  507 + <th class="actions"><?= __('') ?></th>
  508 + <th><?= $this->Paginator->sort('designation','Désignation') ?></th>
  509 + <th><?= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th>
  510 + <th><?= $this->paginator->sort('hors_service', ' ') ?></th>
  511 + <th><?= $this->Paginator->sort('categorie_id', 'Catégorie') ?></th>
  512 + <th><?= $this->Paginator->sort('organisme_id', 'Org.') ?></th>
  513 + <th><?= $this->Paginator->sort('numero_inventaire_organisme', 'N° Invent. Org.') ?></th>
  514 + <th><?= $this->Paginator->sort('nom_responsable', "Nom de l'utilisateur") ?></th>
  515 + <th><?= $this->Paginator->sort('status', 'Statut') ?></th>
  516 + <th><?= $this->Paginator->sort('date_acquisition', 'Date Achat') ?></th>
  517 + <th><?= $this->Paginator->sort('etiquette', 'Et') ?></th>
  518 + <?php if ($METRO) echo "<th>".$this->Paginator->sort('metrologie', 'Metro')."</th>" ?>
  519 + </tr>
  520 + </thead>
  521 +
  522 + <!-- BODY (Lignes matériels) -->
  523 + <tbody>
  524 +
  525 + <?php
515 526 // Pour changer la couleur du nom du matos si la garantie est passée
516 527 $time = Time::now(); // On récupère la date et l'heure actuelles
517 528 $today = new date("$time->year-$time->month-$time->day"); // On extrait la date pour la vérification de fin de garantie
... ... @@ -646,8 +657,11 @@ echo $this-&gt;element(&#39;menu_index&#39;, [
646 657  
647 658 <script type="text/javascript">
648 659  
649   -// Pour changer l'url lorsque le nombre d'éléments souhaités est modifié
650   -$(document).ready(function () {
  660 +/*
  661 +// Pour changer l'url lorsque le nombre de lignes souhaité est modifié
  662 +//$(document).ready(function () {
  663 +$(document).ready(onSelectNbLines);
  664 +function onSelectNbLines() {
651 665 $("#aff-par-defaut").bind("change", function (event) {
652 666 var nbr=$("#aff-par-defaut :selected").val();
653 667 var urlDeBase = window.location.href.split("?");
... ... @@ -674,7 +688,9 @@ $(document).ready(function () {
674 688 urlDecoupeeBis[param][1] = nbr; //urlDecoupeeBis[i][0] c'est le nom du parametre, et urlDecoupeeBis[i][1] c'est la valeur associée
675 689 var url = "";
676 690 for(i=0; i<urlDecoupee.length; ++i) { //... on reconstruit une url propre ...
677   - if(/^\?[a-zA-A0-9]*/.test(urlDecoupeeBis[0][0])) {
  691 + */
  692 + //////if(/^\?[a-zA-A0-9]*/.test(urlDecoupeeBis[0][0])) {
  693 + /*
678 694 if(i!=0) url += "&";
679 695 // Sauf pour le 1er parametre, qui lui commence par un "?"
680 696 } else url += "&";
... ... @@ -686,57 +702,128 @@ $(document).ready(function () {
686 702 else window.location.href = window.location.href + '&aff=' + nbr;
687 703  
688 704 });
689   -});
690   -
  705 +}
  706 +//);
  707 +*/
691 708  
692   -$(document).ready(function () {
  709 +// Pour changer l'url lorsque l'age est modifié
  710 +//$(document).ready(function () {
  711 +/*
  712 +$(document).ready(onSelectAge);
  713 +function onSelectAge() {
693 714 $("#age-selector").bind("change", function (event) {
694   - var nbr=$("#age-selector :selected").val();
695   - var urlDeBase = window.location.href.split("?");
696   - var urlDecoupee = window.location.search.split("&"), i, j; // On sépare la chaine des paramètres en fonction du &
697   - var urlDecoupeeBis = new Array();
698   - var param = 0;
699   - var bool = false;
700   - //console.log(nbr);
  715 +*/
  716 +//$(document).ready($("#age-selector").onchange = onSelectAge);
  717 +//function changeAge(select_name, param_name) {
  718 +function updateUrlWithSelectedValue(select_name, param_name) {
  719 + //$("#age-selector").bind("change", function (event) {
701 720  
702   - for(i=0; i<urlDecoupee.length; ++i) {
703   - urlDecoupeeBis[i] = urlDecoupee[i].split("="); // On sépare les parametres de leurs valeurs
704   - for(j=0; j<urlDecoupeeBis[i].length; ++j){
705   - if(urlDecoupeeBis[i][0] == "age" || urlDecoupeeBis[i][0] == "?age") {
706   - //console.info('toto');
  721 + // Exemple pour http://labinvent.devv/materiels/index/CREATED?aff=30&age=5&page=3 :
  722 +
  723 + // 5
  724 + //var param_val=$("#age-selector :selected").val();
  725 + selected_elem = "#" + select_name + " :selected";
  726 + var param_val = $(selected_elem).val();
  727 +
  728 + // Array [ "http://labinvent.devv/materiels/CREATED", "aff=30&age=15&page=3" ]
  729 + // Array [ "http://labinvent.devv/materiels/CREATED" ] s'il n'y a aucun argument (pas de chaine commençant par "?...")
  730 + var urlDeBase = window.location.href.split("?");
  731 +
  732 + // Array [ "?aff=30", "age=15", "page=3" ]
  733 + // Array [ "" ] si pas d'argument passé
  734 + var args = window.location.search.split("&");
  735 +
  736 + var i; //, j;
  737 + //var param = 0;
  738 + //var bool = false;
  739 + var argsBis = new Array();
  740 +
  741 + //console.log(age, args);
  742 +
  743 + for(i=0; i<args.length; ++i) {
  744 + // On sépare les parametres de leurs valeurs
  745 + // ex:
  746 + argsBis[i] = args[i].split("=");
  747 + /*
  748 + for(j=0; j<argsBis[i].length; ++j){
  749 + if(argsBis[i][0] == "age" || argsBis[i][0] == "?age") {
707 750 bool = true;
708 751 param = i; // Si le parametre "age" est trouvé, on le récupère
709 752 break;
710 753 }
711 754 }
  755 + */
712 756 }
  757 + // Resultat :
  758 + /*
  759 + 0: Array [ "?aff", "30" ]
  760 + 1: Array [ "age", "20" ]
  761 + 2: Array [ "page", "3" ]
  762 + */
  763 + //console.log(argsBis);
713 764  
714   - if(bool) { // Si le parametre recherché a ete trouvé, ...
715   - //console.log("coucouT");
716   - urlDecoupeeBis[param][1] = nbr; //urlDecoupeeBis[i][0] c'est le nom du parametre, et urlDecoupeeBis[i][1] c'est la valeur associée
717   - var url = "";
718   - for(i=0; i<urlDecoupee.length; ++i) { //... on reconstruit une url propre ...
719   - if(/^\?[a-zA-A0-9]*/.test(urlDecoupeeBis[0][0])) {
720   - if(i!=0) url += "&";
721   - // Sauf pour le 1er parametre, qui lui commence par un "?"
722   - } else url += "&";
723   - url += urlDecoupeeBis[i][0]+"="+urlDecoupeeBis[i][1];
724   - // On reforme les parametres "&nom=valeur" en les concatenant
725   - }
726   - window.location.href = urlDeBase[0]+url; // ... et on fait la redirection
727   - } else if(urlDecoupee[0]=="") window.location.href = window.location.href + '?age=' + nbr; // Sinon on ajoute juste le parametre en fin d'url
728   - else window.location.href = window.location.href + '&age=' + nbr;
729   -
730   - });
731   -});
732   -
733   -
734   -// Pour lire l'url et actualiser l'option sélectionnée
735   -$(document).ready(function () {
736   - var affichage = parseInt($_GET('aff'));
  765 + //if(bool) { // Si le parametre recherché a ete trouvé
  766 + //argsBis[param][1] = age; //argsBis[i][0] c'est le nom du parametre, et argsBis[i][1] c'est la valeur associée
  767 + var oldargs = "";
  768 + for(i=0; i<args.length; ++i) { //... on reconstruit une url propre ...
  769 + // On ne conserve pas l'argument de pagination (page=x) car les données ne seront plus les mêmes et cette page risque de ne plus exister => ERROR
  770 + // On ne conserve pas non plus l'argument 'age' car on va l'ajouter en tête des arguments
  771 + arg_name = argsBis[i][0];
  772 + // Si "?arg" on supprime le ?
  773 + if (arg_name.startsWith('?')) arg_name = arg_name.substring(1);
  774 + //if (['page','age'].includes(arg_name)) continue;
  775 + if (['page', param_name].includes(arg_name)) continue;
  776 + /*
  777 + if (argsBis[i][0] == 'page') continue;
  778 + if (argsBis[i][0] == 'age') continue;
  779 + */
  780 + //if(/^\?[a-zA-A0-9]*/.test(argsBis[0][0])) {
  781 + // if(i!=0) oldargs += "&";
  782 + // Sauf pour le 1er parametre, qui lui commence par un "?"
  783 + //}
  784 + //else oldargs += "&";
  785 + /*
  786 + // "&arg=valeur", sauf pour le 1er paramètre (pas de '&')
  787 + if (i > 0) oldargs += "&";
  788 + oldargs += arg_name + "=" + argsBis[i][1];
  789 + */
  790 + oldargs += '&' + arg_name + "=" + argsBis[i][1];
  791 + // On reforme les parametres "&nom=valeur" en les concatenant
  792 + }
  793 + //window.location.href = urlDeBase[0]+oldargs; // ... et on fait la redirection
  794 + //}
  795 + //else if(args[0]=="") window.location.href = window.location.href + '?age=' + age; // Sinon on ajoute juste le parametre en fin d'url
  796 + //else window.location.href = window.location.href + '&age=' + age;
  797 + //console.log(urlDeBase[0]);
  798 + //console.log(urlDeBase[0] + '?age='+age + oldargs);
  799 + //new_url = urlDeBase[0] + '?age='+age + oldargs;
  800 + new_url = urlDeBase[0] + '?'+param_name+'='+param_val+ oldargs;
  801 + //if (oldargs) new_url += oldargs;
  802 + window.location.href = new_url;
  803 +
  804 + //});
  805 +}
  806 +//);
  807 +
  808 +
  809 +//Pour lire l'url et actualiser l'age sélectionné
  810 +$(document).ready(selectAge);
  811 +// Pour lire l'url et actualiser le nombre de lignes sélectionné
  812 +$(document).ready(selectNbLines);
  813 +
  814 +//$(document).ready(function () {
  815 +function selectNbLines() {
  816 + var nblines = parseInt($_GET('aff'));
  817 + //document.getElementById('aff-par-defaut').value = affichage;
  818 + if ( [20,30,50,100,200].includes(nblines) )
  819 + $("#aff-par-defaut").val(nblines);
  820 + else
  821 + $("#aff-par-defaut").val(<?=$configuration->aff_par_defaut?>);
  822 + /*
737 823 switch(affichage) {
738 824 case 20 :
739   - document.getElementById('aff-par-defaut').selectedIndex = 0;
  825 + //document.getElementById('aff-par-defaut').selectedIndex = 0;
  826 + document.getElementById('aff-par-defaut').value = 20;
740 827 break;
741 828 case 30 :
742 829 document.getElementById('aff-par-defaut').selectedIndex = 1;
... ... @@ -749,46 +836,58 @@ $(document).ready(function () {
749 836 break;
750 837 case 150 :
751 838 document.getElementById('aff-par-defaut').selectedIndex = 4;
  839 + //document.getElementById('aff-par-defaut').value = 20;
752 840 break;
753 841 case 200 :
754 842 document.getElementById('aff-par-defaut').selectedIndex = 5;
755 843 break;
756 844 default : // Par défaut, lorsque le parametre "aff" n'existe pas, au premier affichage
757   - $("#aff-par-defaut").val(<?php echo $configuration->aff_par_defaut ?>);
  845 + $("#aff-par-defaut").val(<S echo $configuration->aff_par_defaut S>);
758 846 // On récupère la valeur dans la BD directement, mais en PHP, faut pas déconner
759 847 break;
760 848 }
761   -});
762   -
763   -
764   -//Pour lire l'url et actualiser l'option sélectionnée
765   -$(document).ready(function () {
766   - var affichage = parseInt($_GET('age'));
767   - switch(affichage) {
768   - case 0 :
769   - document.getElementById('age-selector').selectedIndex = 0;
770   - break;
771   - case 5 :
772   - document.getElementById('age-selector').selectedIndex = 1;
773   - break;
774   - case 10 :
775   - document.getElementById('age-selector').selectedIndex = 2;
776   - break;
777   - case 15 :
778   - document.getElementById('age-selector').selectedIndex = 3;
779   - break;
780   - case 20 :
781   - document.getElementById('age-selector').selectedIndex = 4;
782   - break;
783   - case 21 :
784   - document.getElementById('age-selector').selectedIndex = 5;
785   - break;
786   - default : // Par défaut, lorsque le parametre "aff" n'existe pas, au premier affichage
787   - $("#age-selector").val(0);
788   - // On récupère la valeur dans la BD directement, mais en PHP, faut pas déconner
789   - break;
  849 + */
  850 +}
  851 +//);
  852 +
  853 +//$(document).ready(function () {
  854 +function selectAge() {
  855 + var age = parseInt($_GET('age'));
  856 + /*
  857 + if ( [0,5,10,15,20,21,-1].includes(age) )
  858 + $("#aff-par-defaut").val(age);
  859 + else
  860 + $("#aff-par-defaut").val(5);
  861 + */
  862 + switch(age) {
  863 + // TOUS
  864 + case 0 : $("#age-selector")[0].selectedIndex = 0; break;
  865 + //case 0 : document.getElementById('age-selector').selectedIndex = 0; break;
  866 + // 5 ans max
  867 + case 5 : $("#age-selector")[0].selectedIndex = 1; break;
  868 + //case 5 : document.getElementById('age-selector').selectedIndex = 1; break;
  869 + // 5-10 ans
  870 + case 10 : $("#age-selector")[0].selectedIndex = 2; break;
  871 + //case 10 : document.getElementById('age-selector').selectedIndex = 2; break;
  872 + // 10-15
  873 + case 15 : document.getElementById('age-selector').selectedIndex = 3; break;
  874 + //case 15 : $("#age-selector").selectedIndex = 3; break;
  875 + // 15-20
  876 + case 20 : document.getElementById('age-selector').selectedIndex = 4; break;
  877 + //case 20 : $("#age-selector").selectedIndex = 4; break;
  878 + //case '20plus' :
  879 + case 21 : document.getElementById('age-selector').selectedIndex = 5; break;
  880 + //case 21 : $("#age-selector").selectedIndex = 5; break;
  881 + //case 'unknown' :
  882 + case -1 : document.getElementById('age-selector').selectedIndex = 6; break;
  883 + //case -1 : $("#age-selector").selectedIndex = 6; break;
  884 + // Par défaut, lorsque le parametre "age" n'existe pas => 0-5 ans
  885 + default : document.getElementById('age-selector').selectedIndex = 1;
  886 + //default : $("#age-selector").selectedIndex = 1; break;
  887 + //default : $("#age-selector").val(5);
790 888 }
791   -});
  889 +}
  890 +//);
792 891  
793 892  
794 893  
... ...
webroot/css/inventirap.css
... ... @@ -367,12 +367,14 @@ ul.pagination .disabled:hover a {
367 367 }
368 368 .paginator .prev {
369 369 border-left: 1px solid #ccc;
  370 + /* Propriété « -moz-border-radius » inconnue. Déclaration abandonnée.
370 371 -moz-border-radius: 4px 0 0 4px;
  372 + */
371 373 -webkit-border-radius: 4px 0 0 4px;
372 374 border-radius: 4px 0 0 4px;
373 375 }
374 376 .paginator .next {
375   - -moz-border-radius: 0 4px 4px 0;
  377 + /*-moz-border-radius: 0 4px 4px 0;*/
376 378 -webkit-border-radius: 0 4px 4px 0;
377 379 border-radius: 0 4px 4px 0;
378 380 }
... ... @@ -462,7 +464,7 @@ form .input {
462 464 form .input:hover {
463 465 background: rgb(242,242,242);
464 466 -webkit-border-radius: 4px;
465   - -moz-border-radius: 4px;
  467 + /*-moz-border-radius: 4px;*/
466 468 border-radius: 4px;
467 469 }
468 470 form .error:hover {
... ... @@ -551,15 +553,15 @@ form .submit input[type=submit]:hover {
551 553 /* Form errors */
552 554 form .error {
553 555 background: #FFDACC;
554   - -moz-border-radius: 4px;
  556 + /*-moz-border-radius: 4px;*/
555 557 -webkit-border-radius: 4px;
556 558 border-radius: 4px;
557 559 font-weight: normal;
558 560 }
559 561 form .error-message {
560   - -moz-border-radius: none;
561   - -webkit-border-radius: none;
562   - border-radius: none;
  562 + /*-moz-border-radius: none;*/
  563 + /*-webkit-border-radius: none;*/
  564 + /*border-radius: none;*/
563 565 border: none;
564 566 background: none;
565 567 margin: 0;
... ... @@ -570,7 +572,7 @@ form .error,
570 572 form .error-message {
571 573 color: #9E2424;
572 574 -webkit-box-shadow: none;
573   - -moz-box-shadow: none;
  575 + /*-moz-box-shadow: none;*/
574 576 -ms-box-shadow: none;
575 577 -o-box-shadow: none;
576 578 box-shadow: none;
... ... @@ -609,10 +611,10 @@ p.error,
609 611 color: #404040;
610 612 text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
611 613 -webkit-border-radius: 4px;
612   - -moz-border-radius: 4px;
  614 + /*-moz-border-radius: 4px;*/
613 615 border-radius: 4px;
614 616 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
615   - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
  617 + /*-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);*/
616 618 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
617 619 }
618 620 .success,
... ... @@ -704,12 +706,12 @@ input[type=submit],
704 706 color:#333;
705 707 border:1px solid #bbb;
706 708 -webkit-border-radius: 4px;
707   - -moz-border-radius: 4px;
  709 + /*-moz-border-radius: 4px;*/
708 710 border-radius: 4px;
709 711 text-decoration: none;
710 712 text-shadow: #fff 0px 1px 0px;
711 713 min-width: 0;
712   - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2);
  714 + /*-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2);*/
713 715 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2);
714 716 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2);
715 717 -webkit-user-select: none;
... ... @@ -732,7 +734,7 @@ input[type=submit]:active,
732 734 background-image: -o-linear-gradient(top, #dfdfdf, #eee);
733 735 background-image: linear-gradient(top, #dfdfdf, #eee);
734 736 text-shadow: #eee 0px 1px 0px;
735   - -moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3);
  737 + /*-moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3);*/
736 738 -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3);
737 739 box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3);
738 740 border-color: #aaa;
... ... @@ -751,7 +753,7 @@ pre {
751 753 color: #000;
752 754 background: #f0f0f0;
753 755 padding: 15px;
754   - -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
  756 + /*-moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);*/
755 757 -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
756 758 box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
757 759 }
... ... @@ -764,14 +766,14 @@ pre {
764 766 top: 5px;
765 767 right: 5px;
766 768 background: rgba(255, 255, 255, 0.3);
767   - -moz-border-radius: 4px;
  769 + /*-moz-border-radius: 4px;*/
768 770 -webkit-border-radius: 4px;
769 771 border-radius: 4px;
770 772 padding: 5px 6px;
771 773 color: #000;
772 774 display: block;
773 775 float: left;
774   - -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(255, 255, 255, 0.5);
  776 + /*-moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(255, 255, 255, 0.5);*/
775 777 -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(255, 255, 255, 0.5);
776 778 box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(255, 255, 255, 0.5);
777 779 text-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
... ... @@ -797,7 +799,7 @@ pre {
797 799 line-height: 140%;
798 800 overflow: auto;
799 801 position: relative;
800   - -moz-border-radius: 4px;
  802 + /*-moz-border-radius: 4px;*/
801 803 -webkit-border-radius: 4px;
802 804 border-radius: 4px;
803 805 }
... ... @@ -805,7 +807,7 @@ pre {
805 807 text-shadow: none;
806 808 background: rgba(255, 255, 255, 0.7);
807 809 padding: 5px;
808   - -moz-border-radius: 10px;
  810 + /*-moz-border-radius: 10px;*/
809 811 -webkit-border-radius: 10px;
810 812 border-radius: 10px;
811 813 margin: 0px 4px 10px 2px;
... ... @@ -814,7 +816,7 @@ pre {
814 816 line-height: 14px;
815 817 display: inline-block;
816 818 text-decoration: none;
817   - -moz-box-shadow: inset 0px 1px 0 rgba(0, 0, 0, 0.3);
  819 + /*-moz-box-shadow: inset 0px 1px 0 rgba(0, 0, 0, 0.3);*/
818 820 -webkit-box-shadow: inset 0px 1px 0 rgba(0, 0, 0, 0.3);
819 821 box-shadow: inset 0px 1px 0 rgba(0, 0, 0, 0.3);
820 822 }
... ... @@ -838,7 +840,7 @@ pre {
838 840 margin: 0 0 4px 0;
839 841 font-family: monospace;
840 842 border: 1px solid #bbb;
841   - -moz-border-radius: 4px;
  843 + /*-moz-border-radius: 4px;*/
842 844 -wekbkit-border-radius: 4px;
843 845 border-radius: 4px;
844 846 background: #dcdcdc;
... ...
webroot/css/responsive.css
... ... @@ -12,7 +12,7 @@
12 12  
13 13 #footer {
14 14 clear: both;
15   - padding: auto;
  15 + /*padding: auto;*/
16 16 text-align: left;
17 17 border-top: 1px solid #CCC;
18 18 margin-right: 0px;
... ...
webroot/css/smoothness.css
... ... @@ -337,13 +337,13 @@
337 337 */
338 338 /* IE/Win - Fix animation bug - #4615 */
339 339 .ui-accordion { width: 100%; }
340   -.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
  340 +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; /*zoom: 1;*/ }
341 341 .ui-accordion .ui-accordion-li-fix { display: inline; }
342 342 .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
343 343 .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
344 344 .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
345 345 .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
346   -.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
  346 +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; /*zoom: 1;*/ }
347 347 .ui-accordion .ui-accordion-content-active { display: block; }
348 348 /*
349 349 * jQuery UI Autocomplete 1.8.12
... ... @@ -381,7 +381,7 @@
381 381 .ui-menu .ui-menu-item {
382 382 margin:0;
383 383 padding: 0;
384   - zoom: 1;
  384 + /*zoom: 1;*/
385 385 float: left;
386 386 clear: left;
387 387 width: 100%;
... ... @@ -391,7 +391,7 @@
391 391 display:block;
392 392 padding:.2em .4em;
393 393 line-height:1.5;
394   - zoom:1;
  394 + /*zoom:1;*/
395 395 }
396 396 .ui-menu .ui-menu-item a.ui-state-hover,
397 397 .ui-menu .ui-menu-item a.ui-state-active {
... ... @@ -407,7 +407,7 @@
407 407 *
408 408 * http://docs.jquery.com/UI/Button#theming
409 409 */
410   -.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
  410 +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; /*zoom: 1;*/ overflow: visible; } /* the overflow property removes extra width in IE */
411 411 .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
412 412 button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
413 413 .ui-button-icons-only { width: 3.4em; }
... ... @@ -451,7 +451,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
451 451 .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
452 452 .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
453 453 .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
454   -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
  454 +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; /*zoom: 1;*/ }
455 455 .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
456 456 .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
457 457 .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
... ... @@ -489,7 +489,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
489 489 *
490 490 * http://docs.jquery.com/UI/Tabs#theming
491 491 */
492   -.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
  492 +.ui-tabs { position: relative; padding: .2em; /*zoom: 1;*/ } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
493 493 .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
494 494 .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
495 495 .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
... ...