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
@@ -70,12 +70,19 @@ Outre ces changements, voici d'autres changements importants : @@ -70,12 +70,19 @@ Outre ces changements, voici d'autres changements importants :
70 - Une VM linux (Ubuntu) est désormais disponible pour faciliter le déploiement 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 ======= CHANGES ======= 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 30/07/2020 v3.7.9.78-82 (EP) 86 30/07/2020 v3.7.9.78-82 (EP)
80 - (i) Meilleure résilience (reprise après crash) du script UPDATE avec fichier ftpf (install/files_to_process.txt file) 87 - (i) Meilleure résilience (reprise après crash) du script UPDATE avec fichier ftpf (install/files_to_process.txt file)
81 => permet de s'assurer que les script sql non exécutés (à cause crash ou stop script) le seront à l'itération suivante 88 => permet de s'assurer que les script sql non exécutés (à cause crash ou stop script) le seront à l'itération suivante
@@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes : @@ -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 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) 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,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 <div class="actions" style="width: 100%; float: none; padding: 0 0;"> 140 <div class="actions" style="width: 100%; float: none; padding: 0 0;">
81 <?php 141 <?php
@@ -99,13 +159,19 @@ $displayStatusButtons = function($SELECTED_STATUS, $nbMateriels, $html) { @@ -99,13 +159,19 @@ $displayStatusButtons = function($SELECTED_STATUS, $nbMateriels, $html) {
99 } else $b_all = $SELECTED; 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 //$args = explode('?',$_SERVER['REQUEST_URI']); 169 //$args = explode('?',$_SERVER['REQUEST_URI']);
105 //$args = count($args)==2 ? '?'.$args[1] : null; 170 //$args = count($args)==2 ? '?'.$args[1] : null;
106 $params = $this->request->getParam('?'); 171 $params = $this->request->getParam('?');
107 // S'il y a des paramètres, supprimer le paramètre 'page' car inapproprié 172 // S'il y a des paramètres, supprimer le paramètre 'page' car inapproprié
108 if ($params) unset($params['page']); 173 if ($params) unset($params['page']);
  174 + */
109 175
110 //echo $this->Html->link($b_all . ' Tous', [ 176 //echo $this->Html->link($b_all . ' Tous', [
111 echo $html->link($b_all . ' Tous', [ 177 echo $html->link($b_all . ' Tous', [
@@ -480,6 +546,18 @@ $displayActionButtonsForMateriel = function($materiel, $username, $USER_IS_RESPO @@ -480,6 +546,18 @@ $displayActionButtonsForMateriel = function($materiel, $username, $USER_IS_RESPO
480 546
481 }; // displayActionButtonsForMateriel 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,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 'escape' => false 589 'escape' => false
512 ]); 590 ]);
513 echo '</p>';*/ 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 //</div> 593 //</div>
516 594
517 595
@@ -522,32 +600,12 @@ $displaySelectors($this-&gt;Form, $this-&gt;request, $displayNbLinesSelector, $display @@ -522,32 +600,12 @@ $displaySelectors($this-&gt;Form, $this-&gt;request, $displayNbLinesSelector, $display
522 600
523 // Formulaire de RECHERCHE de materiels 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 // DEBUT FORMULAIRE 610 // DEBUT FORMULAIRE
553 611