Commit 48227abd5cccaa512aa261758398850811690590

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

Optimisation, bugfix, et amélioration des pages de listes utilisateurs

...et responsables

=> refactorisées en 1 seule action index() (index_recap() virée)
et 1 seule vue index.ctp (index_recap.ctp virée)

+ bugfix tri colonnes de la liste des materiels

v4.105.14-3.7.9
CHANGES.txt
... ... @@ -120,6 +120,12 @@ Outre ces changements, voici d'autres changements importants :
120 120 ======= CHANGES =======
121 121  
122 122 -------
  123 +09/10/2020 v4.105.14-3.7.9 (EP)
  124 + - (e) Optimisation, bugfix, et amélioration des pages de listes utilisateurs et responsables
  125 + => refactorisées en 1 seule action index() (index_recap() virée) et 1 seule vue index.ctp (index_recap.ctp virée)
  126 + - (b) bugfix tri colonnes de la liste des materiels
  127 +
  128 +-------
123 129 09/10/2020 v4.105.13-3.7.9 (EP)
124 130 - (b) bugfix requete sql db-update-2020-06-10.sql
125 131 - (i) requete sql corrective
... ...
README.md
... ... @@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes :
42 42  
43 43 --------------------------------------------------------------------------------------------
44 44  
45   -Date: 09/10/2020
46   -Version: 4.105.13-3.7.9
  45 +Date: 12/10/2020
  46 +Version: 4.105.14-3.7.9
47 47  
48 48  
49 49 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes)
... ...
src/Controller/MaterielsController.php
... ... @@ -877,6 +877,7 @@ class MaterielsController extends AppController {
877 877 {
878 878 $this->myDebug("step 3: MaterielsController.index()");
879 879  
  880 + //debug($this->request);
880 881 $conditions = [];
881 882 //$contain = [];
882 883 $contain = ['Fournisseurs', 'Categories', 'Organismes', 'Projets', 'Users'];
... ... @@ -1251,9 +1252,11 @@ class MaterielsController extends AppController {
1251 1252 $materiels = $this->paginate($materiels, [
1252 1253 'limit' => $limit,
1253 1254 'maxLimit' => 1000,
  1255 + /* ATTENTION, ca rentre en conflit avec la colonne de tri numero_laboratoire...
1254 1256 'order' => [
1255 1257 'Materiels.numero_laboratoire' => 'desc'
1256 1258 ],
  1259 + */
1257 1260 'sortWhitelist' => [
1258 1261 'designation',
1259 1262 'numero_laboratoire',
... ...
src/Controller/UsersController.php
... ... @@ -206,6 +206,9 @@ class UsersController extends AppController
206 206 */
207 207 public function index() {
208 208  
  209 + $filtre = $this->request->getQuery('filtre');
  210 + //debug($this->viewVars);
  211 +
209 212 // Si on est sur l'instance de l'IRAP (InventIrap),
210 213 // on affiche l'url vers la page de l'ANNUAIRE du site web du labo
211 214 $lab_website_urls = ($this->confLabinvent->labNameShort != 'IRAP') ? [] : [
... ... @@ -229,8 +232,34 @@ class UsersController extends AppController
229 232 ];
230 233 */
231 234  
  235 + $this->paginate = [
  236 + 'contain' => [
  237 + 'GroupesMetiers',
  238 + 'GroupesThematiques',
  239 + 'SurCategories'
  240 + ],
  241 + 'sortWhitelist' => [
  242 + 'nom',
  243 + 'email',
  244 + 'role',
  245 + 'GroupesThematiques.nom',
  246 + 'GroupesMetiers.nom',
  247 + 'SurCategories.nom',
  248 + ],
  249 + 'limit' => 20,
  250 + /*
  251 + 'order' => [
  252 + 'Users.nom' => 'asc'
  253 + ]
  254 + */
  255 + ];
  256 +
  257 + $conditions = $filtre ? ['role =' => 'Responsable'] : [];
  258 + $entities = $this->paginate($this->Users->find('all', [
  259 + 'conditions' => $conditions
  260 + ]));
232 261 // ALL users
233   - $entities = $this->paginate();
  262 + //$entities = $this->paginate();
234 263 // ce qui revient au même que :
235 264 //$users = $this->paginate($this->Users);
236 265 // Only priviledged users
... ... @@ -239,11 +268,11 @@ class UsersController extends AppController
239 268 // Affichage informations disponible pour l'utilisateur connecté
240 269 $this->myDebug($this->LdapAuth->user());
241 270  
242   - $this->set('nbUsers', $this->Users->find()->count());
  271 + //////$this->set('nbUsers', $this->Users->find()->count());
243 272 //$this->set('nbUsers', $this->Users->find('all')->count());
244 273 //$this->set('nbUsers', $priviledgedUsers->count());
245 274  
246   - $this->set(compact('entities', 'lab_website_urls'));
  275 + $this->set(compact('entities', 'lab_website_urls', 'filtre'));
247 276 /* Inutile si pas de JSON
248 277 $this->set('_serialize', [
249 278 'users'
... ... @@ -258,6 +287,7 @@ class UsersController extends AppController
258 287 *
259 288 * @return \Cake\Network\Response|null
260 289 */
  290 + /*
261 291 public function indexRecap()
262 292 {
263 293 $this->paginate = [
... ... @@ -284,22 +314,24 @@ class UsersController extends AppController
284 314 // Affichage informations disponible pour l'utilisateur connecté
285 315 $this->myDebug($this->LdapAuth->user());
286 316  
287   - /*
  317 + /S
288 318 $this->set('nbUsers', $this->Users->find('all', [
289 319 'conditions' => [
290 320 'role =' => 'Responsable'
291 321 ]
292 322 ])
293 323 ->count());
294   - */
  324 + S/
295 325  
296 326 $this->set(compact('entities'));
297   - /* Uniquement pour JSON
  327 + /S Uniquement pour JSON
298 328 $this->set('_serialize', [
299 329 'users'
300 330 ]);
301   - */
  331 + S/
302 332 }
  333 + */
  334 +
303 335  
304 336 /**
305 337 * View method
... ...
src/Template/Materiels/index.ctp
... ... @@ -821,7 +821,7 @@ if ($SELECTED_STATUS) echo $this->Form->hidden('what', ['value'=>$SELECTED_STATU
821 821 <?php if ($SELECTED_STATUS) { echo '<th></th>'; }?>
822 822 <th class="actions"><?= __('') ?></th>
823 823 <th><?= $this->Paginator->sort('designation','Désignation') ?></th>
824   - <th><?= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th>
  824 + <th><?= $this->Paginator->sort('numero_laboratoire', 'N° inventaire') ?></th>
825 825 <th><?= $this->paginator->sort('hors_service', ' ') ?></th>
826 826 <!--
827 827 <th><= $this->Paginator->sort('categorie_id', 'Catégorie') ?></th>
... ...
src/Template/Users/index.ctp
... ... @@ -2,13 +2,19 @@
2 2 // Variables passées par le contrôleur
3 3 $entities = $entities;
4 4 $lab_website_urls = $lab_website_urls;
5   -$nbUsers = $nbUsers;
  5 +$filtre = $filtre;
  6 +//$nbUsers = $nbUsers;
  7 +
  8 +// Nombre total d'entités
  9 +$nbUsers = $this->Paginator->param('count');
6 10  
7 11 ?>
8 12  
9 13 <div class="users index">
10   - <?php
11   - echo '<h2><i class="icon-list"></i> Liste des utilisateurs ('.$nbUsers.')</h2>';
  14 + <?php
  15 + $title = $filtre ? 'Liste des Responsables' : 'Liste des utilisateurs';
  16 + $title .= " ($nbUsers)";
  17 + echo "<h2><i class='icon-list'></i> $title</h2>";
12 18  
13 19 // Si des urls sont données vers des pages web du labo, on les affiche
14 20 //$lab_website_urls = [];
... ... @@ -18,10 +24,13 @@ $nbUsers = $nbUsers;
18 24 echo "<br/>";
19 25 }
20 26  
21   - echo $this->Html->link('Voir uniquement les responsables de groupes', [
  27 + $new_filtre = $filtre ? null : 'responsable';
  28 + $link = $filtre ? 'Voir tous les utilisateurs' : 'Voir uniquement les responsables de groupes';
  29 + echo $this->Html->link($link, [
22 30 //'controller' => 'users',
23   - 'action' => 'indexRecap',
24   - 'sort' => 'sur_categorie_id'
  31 + //'action' => 'indexRecap',
  32 + //'sort' => 'sur_categorie_id',
  33 + 'filtre' => $new_filtre
25 34 ]);
26 35 echo "<br/><br/>";
27 36 ?>
... ... @@ -31,10 +40,17 @@ $nbUsers = $nbUsers;
31 40 <tr>
32 41 <th class="actions"><?= __('') ?></th>
33 42 <th><?= $this->Paginator->sort('nom') ?></th>
34   - <th><?= $this->Paginator->sort('role') ?></th>
35   - <th><?= $this->Paginator->sort('groupes_metier_id', $configuration->nom_groupe_metier) ?></th>
36   - <th><?= $this->Paginator->sort('groupes_thematique_id', $configuration->nom_groupe_thematique) ?></th>
37   - <th><?= $this->Paginator->sort('sur_categorie_id', 'Domaine') ?></th>
  43 + <th><?= $this->Paginator->sort('email') ?></th>
  44 +
  45 + <!-- Seulement si pas de filtre -->
  46 + <?php if (! $filtre) {?>
  47 + <th><?= $this->Paginator->sort('role') ?></th>
  48 + <?php }?>
  49 +
  50 + <th><?= $this->Paginator->sort('GroupesThematiques.nom', $configuration->nom_groupe_thematique) ?></th>
  51 + <th><?= $this->Paginator->sort('GroupesMetiers.nom', $configuration->nom_groupe_metier) ?></th>
  52 + <th><?= $this->Paginator->sort('SurCategories.nom', 'Domaine') ?></th>
  53 +
38 54 <th class="actions"><?= __('') ?></th>
39 55 </tr>
40 56 </thead>
... ... @@ -49,10 +65,17 @@ $nbUsers = $nbUsers;
49 65 }
50 66 ?>
51 67 </td>
  68 +
52 69 <td class="smallText"><?= $this->Html->link($user->nom, ['action' => 'view', $user->id]) ?></td>
  70 + <td class="smallText"><?= h($user->email) ?></td>
  71 +
  72 + <!-- Seulement si pas de filtre -->
  73 + <?php if (! $filtre) {?>
53 74 <td class="smallText"><?= h($user->role) ?></td>
54   - <td class="smallText"><?= $user->has('groupes_metier') ? h($user->groupes_metier->nom) : '' ?></td>
  75 + <?php }?>
  76 +
55 77 <td class="smallText"><?= $user->has('groupes_thematique') ? h($user->groupes_thematique->nom) : '' ?></td>
  78 + <td class="smallText"><?= $user->has('groupes_metier') ? h($user->groupes_metier->nom) : '' ?></td>
56 79 <td class="smallText"><?= $user->has('sur_categorie_id') ? h($user->sur_category->nom) : '' ?></td>
57 80  
58 81 </tr>
... ...