Commit 46defb4b3796787d73a78a57bd32d229671903db

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

(materiels/index) bugfix champ recherche (v3.7.9.84)

Sur liste materiels, champ recherche perdait le contexte des autres
paramètres (nb page, age, ...)
Showing 3 changed files with 97 additions and 32 deletions   Show diff stats
CHANGES.txt
... ... @@ -70,12 +70,19 @@ Outre ces changements, voici d'autres changements importants :
70 70 - Une VM linux (Ubuntu) est désormais disponible pour faciliter le déploiement
71 71  
72 72  
  73 +======= TODO =======
73 74  
  75 + - (materiels/index) bugfix champ recherche sur liste materiels qui perdait le contexte du statut (CREATED, VALIDATED, ...)
  76 + - (materiels/add_edit) bugfix champ fournisseur qui perdait son contenu en cas d'erreur de validation sur un autre champ
74 77  
75 78  
76 79 ======= CHANGES =======
77 80  
78 81 -------
  82 +31/07/2020 v3.7.9.84 (EP)
  83 + - (materiels/index) bugfix champ recherche sur liste materiels qui perdait le contexte des autres paramètres (nb page, age, ...)
  84 +
  85 +-------
79 86 30/07/2020 v3.7.9.78-82 (EP)
80 87 - (i) Meilleure résilience (reprise après crash) du script UPDATE avec fichier ftpf (install/files_to_process.txt file)
81 88 => permet de s'assurer que les script sql non exécutés (à cause crash ou stop script) le seront à l'itération suivante
... ...
README.md
... ... @@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes :
42 42  
43 43 --------------------------------------------------------------------------------------------
44 44  
45   -Date: 30/07/2020
46   -Version: 3.7.9.83
  45 +Date: 31/07/2020
  46 +Version: 3.7.9.84
47 47  
48 48  
49 49 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes)
... ...
src/Template/Materiels/index.ctp
... ... @@ -75,7 +75,67 @@ $METRO=false;
75 75 -->
76 76 */
77 77  
78   -$displayStatusButtons = function($SELECTED_STATUS, $nbMateriels, $html) {
  78 +$displaySearchField = function($params, $searchfor, $html, $form) {
  79 + /*
  80 + <div class="actions" style="width: 100%; float: none; padding: 0 0;">
  81 + echo $html->link('Chercher', [
  82 + 'action' => 'index',
  83 + '?' => $params
  84 + ], [
  85 + 'title' => 'Tous',
  86 + 'style' => 'margin-right: 5px',
  87 + 'escape' => false
  88 + ]);
  89 + echo "</div>";
  90 + */
  91 + //echo $this->Form->create('Materiel', ['url' => '/materiels/find']);
  92 + /*
  93 + echo $this->Form->create('Materiel', ['action' => 'index', '?'=>$params]);
  94 + echo '<input name="searchfor" class="form-control mr-2 mr-sm-2 col-8 col-sm-6 col-md-6 col-lg-9" type="search" placeholder="Recherche (matériels)" aria-label="Search" id="MaterielSAll barre">';
  95 + echo $this->Form->button('Chercher', [ 'class'=>'btn btn-outline-success', 'type'=>'submit', 'name' => 'MaterielSAll', 'id' => 'MaterielSAll', 'style' => 'margin: 0px;' ]);
  96 + echo $this->Form->end();
  97 + */
  98 + // Bien mais insuffisant car les autres paramètres (page, age, domain, sont perdus)
  99 + echo $this->Form->create('Materiel', [
  100 + // OK mais renvoie sur la vue materiesl/find/ alors qu'on veut rester sur la liste des materiels
  101 + //'url' => '/materiels/find'
  102 + //'url' => '/materiels/index?searchfor='.$this->request->getQuery('searchfor'),
  103 + 'type' => 'get',
  104 + //'valueSources' => 'query'
  105 + 'url' => [
  106 + 'action' => "index",
  107 + //'?' => $params
  108 + ]
  109 + ]);
  110 + //echo '<input name="s_all_2" class="search-input" type="text" id="MaterielSAll">';
  111 + //echo $this->Form->control('s_all_2', [
  112 + echo $this->Form->control('searchfor', [
  113 + 'id' => 'MaterielSAll',
  114 + 'class' => 'search-input',
  115 + 'label' => 'Chercher',
  116 + //'type' => 'text',
  117 + 'placeholder' => "Entrez un ou plusieurs mots séparés par un espace",
  118 + 'default' => $searchfor,
  119 + ]);
  120 + $param = 'age';
  121 + echo $this->Form->hidden($param, [
  122 + 'value' => isset($params[$param]) ? $params[$param] : null
  123 + ]);
  124 + $param = 'domain';
  125 + echo $this->Form->hidden($param, [
  126 + 'value' => isset($params[$param]) ? $params[$param] : null
  127 + ]);
  128 + /*
  129 + echo $this->Form->submit('Chercher', [
  130 + 'name' => 'MaterielSAll',
  131 + 'id' => 'MaterielSAll',
  132 + 'style' => 'margin: 0px;'
  133 + ]);
  134 + */
  135 + echo $this->Form->end();
  136 +};
  137 +
  138 +$displayStatusButtons = function($SELECTED_STATUS, $params, $nbMateriels, $html) {
79 139 ?>
80 140 <div class="actions" style="width: 100%; float: none; padding: 0 0;">
81 141 <?php
... ... @@ -99,13 +159,19 @@ $displayStatusButtons = function($SELECTED_STATUS, $nbMateriels, $html) {
99 159 } else $b_all = $SELECTED;
100 160  
101 161  
102   - // Affichage des boutons de filtrage par statut (en haut de la page)
103   -
  162 + /*
  163 + * Affichage des boutons de filtrage par statut (en haut de la page)
  164 + */
  165 +
  166 + /*
  167 + // On récupère les paramètres passés actuellement à l'URL (age, domain, searchfor...)
  168 + // afin de les rappeler quand on clique sur les boutons de filtrage
104 169 //$args = explode('?',$_SERVER['REQUEST_URI']);
105 170 //$args = count($args)==2 ? '?'.$args[1] : null;
106 171 $params = $this->request->getParam('?');
107 172 // S'il y a des paramètres, supprimer le paramètre 'page' car inapproprié
108 173 if ($params) unset($params['page']);
  174 + */
109 175  
110 176 //echo $this->Html->link($b_all . ' Tous', [
111 177 echo $html->link($b_all . ' Tous', [
... ... @@ -480,6 +546,18 @@ $displayActionButtonsForMateriel = function($materiel, $username, $USER_IS_RESPO
480 546  
481 547 }; // displayActionButtonsForMateriel
482 548  
  549 +
  550 +/*
  551 + * On récupère les paramètres passés actuellement à l'URL (age, domain, searchfor...)
  552 + * afin de les rappeler quand on clique sur les boutons de filtrage
  553 + */
  554 + //$args = explode('?',$_SERVER['REQUEST_URI']);
  555 + //$args = count($args)==2 ? '?'.$args[1] : null;
  556 + $params = $this->request->getParam('?');
  557 + // S'il y a des paramètres, supprimer le paramètre 'page' car inapproprié
  558 + if ($params) unset($params['page']);
  559 +
  560 +
483 561 ?>
484 562  
485 563  
... ... @@ -511,7 +589,7 @@ echo $this-&gt;Html-&gt;link(&#39;&lt;i class=&quot;icon-plus&quot;&gt;&lt;/i&gt; Nouveau Matériel&#39;, [
511 589 'escape' => false
512 590 ]);
513 591 echo '</p>';*/
514   -if ($USER_IS_ADMIN_OR_MORE) $displayStatusButtons($SELECTED_STATUS, $nbMateriels, $this->Html);
  592 +if ($USER_IS_ADMIN_OR_MORE) $displayStatusButtons($SELECTED_STATUS, $params, $nbMateriels, $this->Html);
515 593 //</div>
516 594  
517 595  
... ... @@ -522,32 +600,12 @@ $displaySelectors($this-&gt;Form, $this-&gt;request, $displayNbLinesSelector, $display
522 600  
523 601 // Formulaire de RECHERCHE de materiels
524 602  
525   -// Search function
526   -echo $this->Form->create('Materiel', [
527   - // OK mais renvoie sur la vue materiesl/find/ alors qu'on veut rester sur la liste des materiels
528   - //'url' => '/materiels/find'
529   - //'url' => '/materiels/index?searchfor='.$this->request->getQuery('searchfor'),
530   - 'type' => 'get',
531   - //'valueSources' => 'query'
532   -]);
533   - //echo '<input name="s_all_2" class="search-input" type="text" id="MaterielSAll">';
534   - //echo $this->Form->control('s_all_2', [
535   - echo $this->Form->control('searchfor', [
536   - 'id' => 'MaterielSAll',
537   - 'class' => 'search-input',
538   - 'label' => 'Chercher',
539   - //'type' => 'text',
540   - 'placeholder' => "Entrez un ou plusieurs mots séparés par un espace",
541   - 'default' => $searchfor
542   - ]);
543   - /*
544   - echo $this->Form->submit('Chercher', [
545   - 'name' => 'MaterielSAll',
546   - 'id' => 'MaterielSAll',
547   - 'style' => 'margin: 0px;'
548   - ]);
549   - */
550   -echo $this->Form->end();
  603 +// Search field
  604 +echo "\n";
  605 +echo "\n";
  606 +$displaySearchField($params, $searchfor, $this->Html, $this->Form);
  607 +echo "\n";
  608 +echo "\n";
551 609  
552 610 // DEBUT FORMULAIRE
553 611  
... ...