Commit f63eabb232f4ea12e5ac987606477ee62ded11b4

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

Gestion plus simple des catégories, domaines, et sous-catégories...

Mais aussi :
- chaque utilisateur peut voir sa fiche profil
- liste utilisateurs triée par le nom-pnom (par défaut)
- doc attaché "nom" => "nom du doc" (plus explicite)

v5.2.22-3.7.9
@@ -353,10 +353,17 @@ Commencer à implémenter le nouveau workflow v5 : @@ -353,10 +353,17 @@ Commencer à implémenter le nouveau workflow v5 :
353 ======= TODO ======= 353 ======= TODO =======
354 354
355 PRIO : 355 PRIO :
356 - - vincent (changer nom doc)  
357 - config via page web !!! 356 - config via page web !!!
358 - tests ok 357 - tests ok
359 358
  359 + *) Stats de connexion
  360 + - le tri des autres colonnes ne marche plus
  361 +
  362 + *)
  363 + Rendre modifiable la config via page web "Gérer les champs obligatoires"
  364 + - OFF_nom_du_champ : 'libellé'
  365 + - Restaurer la config par défaut
  366 + - Réactiver une variable : OFF_nom_du_champ => nom_du_champ
360 367
361 *) SUPERADMIN 368 *) SUPERADMIN
362 => par défaut, au minimum, mêmes droits que ADMIN 369 => par défaut, au minimum, mêmes droits que ADMIN
@@ -370,27 +377,23 @@ Commencer à implémenter le nouveau workflow v5 : @@ -370,27 +377,23 @@ Commencer à implémenter le nouveau workflow v5 :
370 - numéro inventaire (hidden par défaut pour l'édition) 377 - numéro inventaire (hidden par défaut pour l'édition)
371 - ... 378 - ...
372 379
  380 + *) Terminer la vue index générique :
  381 + - AppController->index_generic()
  382 + - Template/Common/indexgen.ctp
  383 +
373 384
374 *) => update matos lifecycle diag 385 *) => update matos lifecycle diag
375 386
376 *) Vincent : 387 *) Vincent :
377 - - (admin) supprimer photo d'un matos validé  
378 - - j'ai lié un mauvaise photo à un matériel déjà validé.  
379 - Je souhaiterais la supprimer mais le matériel étant validé, je n'ai pas l'autorisation.  
380 - email pas trouvé (ancienne fiche de vincent) 388 - email pas trouvé (ancienne fiche de vincent)
381 - - photos :  
382 - - "nom" => "nom du doc"  
383 - - et doit être modifiable !  
384 -  
385 - *) Gérer categ/s-categ plus facilement 389 + - doc attaché : nom doit être modifiable
386 390
387 - *) (b) Users list : tri alpha par défaut  
388 -  
389 *) Resp : 391 *) Resp :
390 - voir menus Outils & Autres (ou pas) ? 392 - voir menus Outils & Autres (ou pas) ?
391 - respb de qqch !!! 393 - respb de qqch !!!
392 394
393 *) qqsoit user : doit pouvoir voir sa fiche user (no modif) 395 *) qqsoit user : doit pouvoir voir sa fiche user (no modif)
  396 + => mais pas celle des autres...
394 397
395 *) TESTS !!!! 398 *) TESTS !!!!
396 *) Les tests doivent se faire avec la config par défaut (et non pas celle spécifique du labo) 399 *) Les tests doivent se faire avec la config par défaut (et non pas celle spécifique du labo)
@@ -402,10 +405,6 @@ Commencer à implémenter le nouveau workflow v5 : @@ -402,10 +405,6 @@ Commencer à implémenter le nouveau workflow v5 :
402 (quelle diff avec "[LabInvent] Ajout d'un matériel" ??) 405 (quelle diff avec "[LabInvent] Ajout d'un matériel" ??)
403 406
404 407
405 -  
406 - *) Stats de connexion  
407 - - le tri des autres colonnes ne marche plus  
408 -  
409 *) 408 *)
410 TBO ou ARCHIVED (= validated) : ne pas autoriser edit ou delete des docs attachés 409 TBO ou ARCHIVED (= validated) : ne pas autoriser edit ou delete des docs attachés
411 Autoriser certaines choses pour TBO : 410 Autoriser certaines choses pour TBO :
@@ -423,18 +422,8 @@ Commencer à implémenter le nouveau workflow v5 : @@ -423,18 +422,8 @@ Commencer à implémenter le nouveau workflow v5 :
423 Facture jointe (si > 10K) 422 Facture jointe (si > 10K)
424 Détail lieu stockage + S/N demandé ssi > 10K€ 423 Détail lieu stockage + S/N demandé ssi > 10K€
425 424
426 -  
427 -  
428 -  
429 425
430 *) 426 *)
431 - Rendre modifiable la config via page web "Gérer les champs obligatoires"  
432 - - OFF_nom_du_champ : 'libellé'  
433 - - Restaurer la config par défaut  
434 - - Réactiver une variable : OFF_nom_du_champ => nom_du_champ  
435 -  
436 -  
437 - *)  
438 Procédures pour les utilisateurs et les gestionnaires désormais configurable via le fichier de conf 427 Procédures pour les utilisateurs et les gestionnaires désormais configurable via le fichier de conf
439 428
440 429
@@ -465,6 +454,13 @@ Commencer à implémenter le nouveau workflow v5 : @@ -465,6 +454,13 @@ Commencer à implémenter le nouveau workflow v5 :
465 ======= CHANGES ======= 454 ======= CHANGES =======
466 455
467 ------- 456 -------
  457 +02/11/2021 v5.2.22-3.7.9
  458 + - (e) gestion plus simple des catégories, domaines, et sous-catégories
  459 + - (e) chaque utilisateur peut voir sa fiche profil
  460 + - (e) liste utilisateurs triée par le nom-pnom (par défaut)
  461 + - (e) doc attaché "nom" => "nom du doc" (plus explicite)
  462 +
  463 +-------
468 27/10/2021 v5.2.21-3.7.9 464 27/10/2021 v5.2.21-3.7.9
469 - (i) Amélioration du fichier de config des champs matériels (généralisation pour les docs attachés et champs recommandés) 465 - (i) Amélioration du fichier de config des champs matériels (généralisation pour les docs attachés et champs recommandés)
470 => on peut maintenant préciser, à chaque étape, TOUT type important de doc attaché (devis, BC, BL, facture) comme étant obligatoire ou non modifiable ni supprimable 466 => on peut maintenant préciser, à chaque étape, TOUT type important de doc attaché (devis, BC, BL, facture) comme étant obligatoire ou non modifiable ni supprimable
@@ -52,8 +52,8 @@ Logiciel testé et validé sur les configurations suivantes : @@ -52,8 +52,8 @@ Logiciel testé et validé sur les configurations suivantes :
52 52
53 -------------------------------------------------------------------------------------------- 53 --------------------------------------------------------------------------------------------
54 54
55 -Date: 27/10/2021  
56 -Version: v5.2.21-3.7.9 55 +Date: 02/11/2021
  56 +Version: v5.2.22-3.7.9
57 57
58 58
59 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) 59 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes)
src/Controller/AppController.php
@@ -2082,8 +2082,36 @@ class AppController extends Controller @@ -2082,8 +2082,36 @@ class AppController extends Controller
2082 2082
2083 } // beforeFilter() 2083 } // beforeFilter()
2084 2084
  2085 +
  2086 + /**
  2087 + * Index method
  2088 + *
  2089 + * @return \Cake\Network\Response|null
  2090 + * TODO: à terminer...
  2091 + */
  2092 + public function index_generic($entity_plural, $fields_names)
  2093 + {
  2094 + $controller_name = $this->getName();
  2095 + //debug($controller_name);
  2096 +
  2097 + $this->paginate = [
  2098 + 'contain' => [
  2099 + 'SurCategories'
  2100 + ]
  2101 + ];
  2102 + //$categories = $this->paginate($this->Categories);
  2103 + $entities = $this->paginate($this->$controller_name);
  2104 +
  2105 + $this->set(compact('entities', 'entity_plural', 'fields_names'));
  2106 +
  2107 + /* (EP) Pas nécessaire
  2108 + $this->set('_serialize', [
  2109 + 'categories'
  2110 + ]);
  2111 + */
  2112 + }
2085 2113
2086 - public function index_generic($group_type1, $group_type2, $lab_website_url=null) { 2114 + public function index_groups($group_type1, $group_type2, $lab_website_url=null) {
2087 2115
2088 // https://book.cakephp.org/3/fr/controllers/components/pagination.html 2116 // https://book.cakephp.org/3/fr/controllers/components/pagination.html
2089 $groups = $this->paginate(); 2117 $groups = $this->paginate();
@@ -2108,7 +2136,7 @@ class AppController extends Controller @@ -2108,7 +2136,7 @@ class AppController extends Controller
2108 2136
2109 //public function view_generic($id, $associated_entity_types, $parent_entity_controller_name=[]) { 2137 //public function view_generic($id, $associated_entity_types, $parent_entity_controller_name=[]) {
2110 //public function view_generic($id, $associated_entity_types, $containavirer=[]) { 2138 //public function view_generic($id, $associated_entity_types, $containavirer=[]) {
2111 - public function view_generic($id, $child_entity_types=[]) { 2139 + public function view_generic($id, $child_entity_types=[], $sub_controller=null, $sub_controller_singular=null) {
2112 2140
2113 //debug($contain_children); 2141 //debug($contain_children);
2114 // ex: SurCategories 2142 // ex: SurCategories
@@ -2374,6 +2402,8 @@ class AppController extends Controller @@ -2374,6 +2402,8 @@ class AppController extends Controller
2374 $entity_name = $entity->$entity_name_field_label; 2402 $entity_name = $entity->$entity_name_field_label;
2375 $this->set(compact( 2403 $this->set(compact(
2376 2404
  2405 + 'id',
  2406 +
2377 'fields_label', 2407 'fields_label',
2378 2408
2379 // Infos sur l'entité courante 2409 // Infos sur l'entité courante
@@ -2388,7 +2418,11 @@ class AppController extends Controller @@ -2388,7 +2418,11 @@ class AppController extends Controller
2388 //'parent_entity_name','parent_entity_id', 2418 //'parent_entity_name','parent_entity_id',
2389 2419
2390 // Infos sur les entités associées 2420 // Infos sur les entités associées
2391 - 'child_entities_list' 2421 + 'child_entities_list',
  2422 +
  2423 + // Optionnel : sous-controleur pour pouvoir ajouter une sous-entité (ex: ajouter une sous-catégorie à une catégorie)
  2424 + 'sub_controller',
  2425 + 'sub_controller_singular'
2392 2426
2393 )); 2427 ));
2394 //debug($this->viewVars);exit; 2428 //debug($this->viewVars);exit;
@@ -2405,6 +2439,7 @@ class AppController extends Controller @@ -2405,6 +2439,7 @@ class AppController extends Controller
2405 */ 2439 */
2406 } // view_generic() 2440 } // view_generic()
2407 2441
  2442 +
2408 /** 2443 /**
2409 * Add or Edit generic method (do either add() or edit()) 2444 * Add or Edit generic method (do either add() or edit())
2410 * => Factorisation de add() et edit() 2445 * => Factorisation de add() et edit()
@@ -2907,7 +2942,10 @@ class AppController extends Controller @@ -2907,7 +2942,10 @@ class AppController extends Controller
2907 // Pass this function to all views 2942 // Pass this function to all views
2908 //function echoActionButton($html, $icon_class, $title, $action, $id, $tip='', $controller='materiels', $mat=NULL, $photo=NULL) { 2943 //function echoActionButton($html, $icon_class, $title, $action, $id, $tip='', $controller='materiels', $mat=NULL, $photo=NULL) {
2909 //$echoActionButton = function($html, $icon_class, $buttonStyle='', $title, $controller='', $action, $id, $other_args=[], $tip='', $confirmMessage='') { 2944 //$echoActionButton = function($html, $icon_class, $buttonStyle='', $title, $controller='', $action, $id, $other_args=[], $tip='', $confirmMessage='') {
2910 - $getActionButton = function($html, $icon_class, $buttonStyle, $title, $controller, $action, $id, $other_args=[], $tip='', $confirmMessage='', $moreButtonStyle='') { 2945 + $getActionButton = function(
  2946 + $html, $icon_class, $buttonStyle,
  2947 + $title, $controller, $action, $id, $other_args=[], $tip='', $confirmMessage='', $moreButtonStyle=''
  2948 + ) {
2911 if ($controller=='') $controller='materiels'; 2949 if ($controller=='') $controller='materiels';
2912 $controllerArgs = []; 2950 $controllerArgs = [];
2913 $controllerArgs['controller'] = $controller; 2951 $controllerArgs['controller'] = $controller;
src/Controller/CategoriesController.php
@@ -101,6 +101,16 @@ class CategoriesController extends AppController @@ -101,6 +101,16 @@ class CategoriesController extends AppController
101 */ 101 */
102 public function index() 102 public function index()
103 { 103 {
  104 +
  105 + $this->index_generic(
  106 + 'catégories',
  107 + [
  108 + 'nom'=>'Nom',
  109 + 'sur_categorie_id' => 'Domaine',
  110 + ]
  111 + );
  112 +
  113 + /*
104 $this->paginate = [ 114 $this->paginate = [
105 'contain' => [ 115 'contain' => [
106 'SurCategories' 116 'SurCategories'
@@ -112,6 +122,7 @@ class CategoriesController extends AppController @@ -112,6 +122,7 @@ class CategoriesController extends AppController
112 $this->set('_serialize', [ 122 $this->set('_serialize', [
113 'categories' 123 'categories'
114 ]); 124 ]);
  125 + */
115 } 126 }
116 127
117 /** 128 /**
@@ -130,7 +141,7 @@ class CategoriesController extends AppController @@ -130,7 +141,7 @@ class CategoriesController extends AppController
130 //return parent::view($id, $associated_entity_types); 141 //return parent::view($id, $associated_entity_types);
131 //return $this->view_generic($id, $associated_entity_types, 'SurCategories'); 142 //return $this->view_generic($id, $associated_entity_types, 'SurCategories');
132 //return $this->view_generic($id, $child_entity_types, ['SurCategories']); 143 //return $this->view_generic($id, $child_entity_types, ['SurCategories']);
133 - return $this->view_generic($id, $child_entity_types); 144 + return $this->view_generic($id, $child_entity_types, 'sous-categories', ' une sous-catégorie');
134 145
135 /* 146 /*
136 $category = $this->Categories->get($id, [ 147 $category = $this->Categories->get($id, [
@@ -160,8 +171,10 @@ class CategoriesController extends AppController @@ -160,8 +171,10 @@ class CategoriesController extends AppController
160 * 171 *
161 * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. 172 * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise.
162 */ 173 */
163 - public function add() 174 + //public function add()
  175 + public function add($parent_id=null)
164 { 176 {
  177 + //debug($parent_id);
165 $category = $this->Categories->newEntity(); 178 $category = $this->Categories->newEntity();
166 if ($this->request->is('post')) { 179 if ($this->request->is('post')) {
167 $category = $this->Categories->patchEntity($category, $this->request->getData()); 180 $category = $this->Categories->patchEntity($category, $this->request->getData());
src/Controller/GroupesMetiersController.php
@@ -78,7 +78,7 @@ class GroupesMetiersController extends AppController @@ -78,7 +78,7 @@ class GroupesMetiersController extends AppController
78 */ 78 */
79 public function index() { 79 public function index() {
80 80
81 - $this->index_generic( 81 + $this->index_groups(
82 'metier', 'métier', 82 'metier', 'métier',
83 "https://www.irap.omp.eu/homepage/organisation/groupes-metiers" 83 "https://www.irap.omp.eu/homepage/organisation/groupes-metiers"
84 ); 84 );
src/Controller/GroupesThematiquesController.php
@@ -71,7 +71,7 @@ class GroupesThematiquesController extends AppController @@ -71,7 +71,7 @@ class GroupesThematiquesController extends AppController
71 */ 71 */
72 public function index() { 72 public function index() {
73 73
74 - $this->index_generic( 74 + $this->index_groups(
75 'thematique', 'thématique', 75 'thematique', 'thématique',
76 "https://www.irap.omp.eu/homepage/organisation/groupes-thematiques" 76 "https://www.irap.omp.eu/homepage/organisation/groupes-thematiques"
77 ); 77 );
src/Controller/SousCategoriesController.php
@@ -146,7 +146,7 @@ class SousCategoriesController extends AppController @@ -146,7 +146,7 @@ class SousCategoriesController extends AppController
146 * 146 *
147 * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. 147 * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise.
148 */ 148 */
149 - public function add() 149 + public function add($parent_id=null)
150 { 150 {
151 $sousCategory = $this->SousCategories->newEntity(); 151 $sousCategory = $this->SousCategories->newEntity();
152 if ($this->request->is('post')) { 152 if ($this->request->is('post')) {
src/Controller/SurCategoriesController.php
@@ -195,7 +195,8 @@ class SurCategoriesController extends AppController @@ -195,7 +195,8 @@ class SurCategoriesController extends AppController
195 'Materiels' 195 'Materiels'
196 ]; 196 ];
197 //return parent::view($id, $associated_entity_types); 197 //return parent::view($id, $associated_entity_types);
198 - return $this->view_generic($id, $child_entity_types); 198 + return $this->view_generic($id, $child_entity_types, 'categories', ' une catégorie');
  199 +
199 } 200 }
200 201
201 202
src/Template/Categories/add.ctp
  1 +<?php
  2 +// add/id pour préciser d'ajouter cette catégorie dans le domaine numéro id
  3 +$parent_id = isset($this->request->getParam('pass')[0]) ? $this->request->getParam('pass')[0] : null;
  4 +?>
1 5
2 <div class="categories form col-lg-5 col-md-7 col-sm-9"> 6 <div class="categories form col-lg-5 col-md-7 col-sm-9">
3 <?= $this->Form->create($category) ?> 7 <?= $this->Form->create($category) ?>
@@ -9,7 +13,8 @@ @@ -9,7 +13,8 @@
9 echo $this->Form->control('nom'); 13 echo $this->Form->control('nom');
10 echo $this->Form->control('sur_categorie_id', [ 14 echo $this->Form->control('sur_categorie_id', [
11 'label' => 'Domaine', 15 'label' => 'Domaine',
12 - 'options' => $surCategories 16 + 'options' => $surCategories,
  17 + 'default' => $parent_id,
13 ]); 18 ]);
14 ?> 19 ?>
15 </fieldset> 20 </fieldset>
src/Template/Categories/index.ctp
1 -  
2 -<div class="categories index">  
3 -  
4 - <?php echo '<h2><i class="icon-list"></i> Liste des catégories</h2>'; ?>  
5 -  
6 - <?=$this->element('button_add'); ?>  
7 -  
8 - <table style="border-collapse: separate; border-spacing: 0;width: 270px;">  
9 - <thead>  
10 - <tr>  
11 - <th class="actions"><?= __('') ?></th>  
12 - <th><?= $this->Paginator->sort('nom', 'Nom') ?></th>  
13 - <th><?= $this->Paginator->sort('sur_categorie_id', 'Domaine') ?></th>  
14 -  
15 - </tr>  
16 - </thead>  
17 - <tbody>  
18 - <?php foreach ($categories as $category): ?>  
19 - <tr>  
20 - <td class="actions" style="padding: 6px 0; text-align: left;">  
21 - <?php if (in_array($role, ['Administration Plus', 'Super Administrateur'])) { ?>  
22 - <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $category->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?>  
23 - <?php } ?>  
24 -  
25 - <?php if (in_array($role, ['Super Administrateur'])) { ?>  
26 - <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $category->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $category->id)]) ?>  
27 - <?php } ?>  
28 - </td>  
29 -  
30 - <td class="smallText"><?= $this->Html->link($category->nom, ['action' => 'view', $category->id]) ?></td>  
31 - <td class="smallText"><?= $category->has('sur_category') ? $this->Html->link($category->sur_category->nom, ['controller' => 'SurCategories', 'action' => 'view', $category->sur_category->id]) : '' ?></td>  
32 -  
33 -  
34 -  
35 - </tr>  
36 - <?php endforeach; ?>  
37 - </tbody>  
38 - </table>  
39 -  
40 - <?php echo $this->element('pagination_with_first_and_last'); ?>  
41 -  
42 -  
43 -</div>  
44 -  
45 -<!--  
46 -<div class="actions">  
47 - <php echo $this->element('menu') ?>  
48 - <php  
49 -  
50 -echo $this->element('menu_index', [  
51 - 'pluralHumanName' => 'Catégories',  
52 - 'singularHumanName' => 'Catégorie'  
53 -])?>  
54 - </div>  
55 --->  
56 - 1 +<?php
  2 +$this->extend('/Common/index_gen');
57 \ No newline at end of file 3 \ No newline at end of file
src/Template/Common/index_gen.ctp 0 → 100755
@@ -0,0 +1,87 @@ @@ -0,0 +1,87 @@
  1 +<?php
  2 +
  3 +$DEBUG=false;
  4 +//$DEBUG=true;
  5 +
  6 +// Variables passées par le contrôleur
  7 +$role = $role;
  8 +$entities = $entities;
  9 +$entity_plural = $entity_plural;
  10 +$fields_names = $fields_names;
  11 +
  12 +?>
  13 +
  14 +<div class="entities index">
  15 +
  16 + <?php echo "<h2><i class='icon-list'></i> Liste des $entity_plural</h2>"; ?>
  17 +
  18 + <?=$this->element('button_add'); ?>
  19 +
  20 + <table style="border-collapse: separate; border-spacing: 0;width: 270px;">
  21 +
  22 + <thead>
  23 + <tr>
  24 + <th class="actions"><?= __('') ?></th>
  25 + <!--
  26 + <th><?= $this->Paginator->sort('sur_categorie_id', 'Domaine') ?></th>
  27 + -->
  28 + <?php
  29 + foreach ($fields_names as $fname=>$fnicename)
  30 + echo "<th>".$this->Paginator->sort($fname, $fnicename)."</th>";
  31 + ?>
  32 + </tr>
  33 + </thead>
  34 +
  35 + <tbody>
  36 + <?php foreach ($entities as $e): ?>
  37 + <tr>
  38 +
  39 + <!--
  40 + Actions edit / delete
  41 + -->
  42 + <td class="actions" style="padding: 6px 0; text-align: left;">
  43 + <?php if (in_array($role, ['Administration Plus', 'Super Administrateur'])) { ?>
  44 + <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $e->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?>
  45 + <?php } ?>
  46 +
  47 + <?php if (in_array($role, ['Super Administrateur'])) { ?>
  48 + <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $e->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $e->id)]) ?>
  49 + <?php } ?>
  50 + </td>
  51 +
  52 + <!--
  53 + Data
  54 + -->
  55 + <td class="smallText"><?= $this->Html->link($e->nom, ['action' => 'view', $e->id]) ?></td>
  56 + <td class="smallText"><?= $e->has('sur_category') ? $this->Html->link($e->sur_category->nom, ['controller' => 'SurCategories', 'action' => 'view', $e->sur_category->id]) : '' ?></td>
  57 + <?php
  58 + /*
  59 + //TODO:
  60 + foreach ($e->toArray() as $fname=>$fval) {
  61 + }
  62 + */
  63 + ?>
  64 +
  65 + </tr>
  66 + <?php endforeach; ?>
  67 + </tbody>
  68 +
  69 + </table>
  70 +
  71 + <?php echo $this->element('pagination_with_first_and_last'); ?>
  72 +
  73 +
  74 +</div>
  75 +
  76 +<!--
  77 +<div class="actions">
  78 + <php echo $this->element('menu') ?>
  79 + <php
  80 +
  81 +echo $this->element('menu_index', [
  82 + 'pluralHumanName' => 'Catégories',
  83 + 'singularHumanName' => 'Catégorie'
  84 +])?>
  85 + </div>
  86 +-->
  87 +
src/Template/Common/index.ctp renamed to src/Template/Common/index_groups.ctp
src/Template/Common/view.ctp
1 -<?php 1 +<?php
  2 +/*
2 use App\Controller\SurCategoriesController; 3 use App\Controller\SurCategoriesController;
3 -use App\Model\Entity\SurCategory;  
4 use Cake\ORM\Entity; 4 use Cake\ORM\Entity;
5 use App\Model\Entity\GroupesThematique; 5 use App\Model\Entity\GroupesThematique;
6 use App\Model\Entity\GroupesMetier; 6 use App\Model\Entity\GroupesMetier;
  7 +*/
7 8
8 $DEBUG=false; 9 $DEBUG=false;
9 //$DEBUG=true; 10 //$DEBUG=true;
10 11
11 -// Variables passées par le contrôleur 12 +// Arguments passés par le contrôleur
12 13
13 $role = $role; 14 $role = $role;
14 15
  16 +$id = $id;
  17 +
15 $entity = $entity; 18 $entity = $entity;
16 //debug($entity); 19 //debug($entity);
17 //$parent_entity_infos=$parent_entity_infos; 20 //$parent_entity_infos=$parent_entity_infos;
@@ -34,6 +37,12 @@ $entity_name = $entity_name; @@ -34,6 +37,12 @@ $entity_name = $entity_name;
34 // En général, par défaut : "Matériels associés" et "Utilisateurs associés" 37 // En général, par défaut : "Matériels associés" et "Utilisateurs associés"
35 $child_entities_list = $child_entities_list; 38 $child_entities_list = $child_entities_list;
36 39
  40 +// OPTIONNELS
  41 +if (isset($sub_controller)) {
  42 + $sub_controller = $sub_controller;
  43 + $sub_controller_singular = $sub_controller_singular;
  44 +}
  45 +
37 // Fonctions 46 // Fonctions
38 //$displayElement = $displayElement; 47 //$displayElement = $displayElement;
39 48
@@ -70,7 +79,8 @@ $child_entities_list = $child_entities_list; @@ -70,7 +79,8 @@ $child_entities_list = $child_entities_list;
70 79
71 // Lien Editer 80 // Lien Editer
72 if (in_array($role, [ 81 if (in_array($role, [
73 - 'Administration Plus', 82 + //'Administration Plus',
  83 + 'Administration',
74 'Super Administrateur' 84 'Super Administrateur'
75 ])) { 85 ])) {
76 echo $this->Html->link(__('<i class="icon-pencil"></i> Editer'), [ 86 echo $this->Html->link(__('<i class="icon-pencil"></i> Editer'), [
@@ -100,7 +110,7 @@ $child_entities_list = $child_entities_list; @@ -100,7 +110,7 @@ $child_entities_list = $child_entities_list;
100 } 110 }
101 111
102 /* 112 /*
103 - * I - Affichage des champs de l'entité (nom, description) 113 + * I - Affichage des champs de l'entité (nom, description, ...)
104 * 114 *
105 * avec les entités associées "PARENTES" (groupes metier/thema, projet, user, ...) 115 * avec les entités associées "PARENTES" (groupes metier/thema, projet, user, ...)
106 */ 116 */
@@ -197,6 +207,26 @@ $child_entities_list = $child_entities_list; @@ -197,6 +207,26 @@ $child_entities_list = $child_entities_list;
197 ?> 207 ?>
198 208
199 209
  210 + <!-- Bouton "Ajouter" pour ajouter un nouvel élément (ssi autorisé) -->
  211 + <?php
  212 + if (isset($sub_controller)) {
  213 + echo $this->element('button_add', compact(
  214 + 'id',
  215 + 'sub_controller',
  216 + 'sub_controller_singular'
  217 + ));
  218 + /*
  219 + echo $this->element('button_add', [
  220 + 'id' => $id,
  221 + 'sub_controller' => $sub_controller,
  222 + 'sub_controller_singular' => $sub_controller_singular
  223 + ]);
  224 + */
  225 + //echo "<br />";
  226 + }
  227 + ?>
  228 +
  229 +
200 <!-- II - Affichage des entités associées "ENFANTS" (matériels, utilisateurs, ...) --> 230 <!-- II - Affichage des entités associées "ENFANTS" (matériels, utilisateurs, ...) -->
201 231
202 <?php 232 <?php
src/Template/Documents/add_edit.ctp
@@ -147,8 +147,12 @@ if (isset($photo)) { @@ -147,8 +147,12 @@ if (isset($photo)) {
147 // (Malik) 147 // (Malik)
148 // EDIT only : On met le nom du doc en read only vu qu'il apparait dans le nom du fichier sur le serveur 148 // EDIT only : On met le nom du doc en read only vu qu'il apparait dans le nom du fichier sur le serveur
149 // et une opération pour remodifier ces fichiers peut être complexe 149 // et une opération pour remodifier ces fichiers peut être complexe
150 - echo $this->Form->control('nom', ['readonly' => !$IS_ADD]);  
151 - 150 + //echo $this->Form->control('nom', ['readonly' => !$IS_ADD]);
  151 + echo $this->Form->control('nom',[
  152 + 'label' => 'Nom du doc attaché',
  153 + 'readonly' => !$IS_ADD
  154 + ]);
  155 +
152 // - Type (hidden si photo) 156 // - Type (hidden si photo)
153 echo "<i>(Si vous choisissez le type 'Photo', ce document sera affiché en tête de la fiche du $parent_type associé)</i>"; 157 echo "<i>(Si vous choisissez le type 'Photo', ce document sera affiché en tête de la fiche du $parent_type associé)</i>";
154 $control = 'control'; 158 $control = 'control';
src/Template/Element/button_add.ctp
1 <!-- Bouton "Ajouter" pour ajouter un nouvel élément (ssi autorisé) --> 1 <!-- Bouton "Ajouter" pour ajouter un nouvel élément (ssi autorisé) -->
2 2
  3 +<?php
  4 +// Arguments passées à cet Element
  5 +$role = $role;
  6 +// optionnels :
  7 +$id = isset($id) ? $id : null;
  8 +if (isset($sub_controller)) {
  9 + $sub_controller = $sub_controller;
  10 + $sub_controller_singular = $sub_controller_singular;
  11 +}
  12 +?>
  13 +
3 <div id="boutons" class="actions" style="margin-bottom:5px; width:100%; float:none; padding:5px 0;"> 14 <div id="boutons" class="actions" style="margin-bottom:5px; width:100%; float:none; padding:5px 0;">
4 <?php 15 <?php
  16 + $controller = $this->request->controller;
  17 + $entities_name = '';
  18 + if (isset($sub_controller)) {
  19 + $controller = $sub_controller;
  20 + $entities_name = $sub_controller_singular;
  21 + }
5 //echo $this->request->controller; 22 //echo $this->request->controller;
6 //$entity = $this->request->controller; // controller name (Sites, Suivis, Organismes, ...) 23 //$entity = $this->request->controller; // controller name (Sites, Suivis, Organismes, ...)
7 $bStyle = 'margin-right: 10px'; 24 $bStyle = 'margin-right: 10px';
@@ -14,6 +31,6 @@ @@ -14,6 +31,6 @@
14 //in_array($singularHumanName, ['Matériel','Suivi','Emprunt','Fournisseur']) 31 //in_array($singularHumanName, ['Matériel','Suivi','Emprunt','Fournisseur'])
15 in_array($this->request->controller, ['Materiels','Suivis','Emprunts','Fournisseurs']) 32 in_array($this->request->controller, ['Materiels','Suivis','Emprunts','Fournisseurs'])
16 ); 33 );
17 - if ($CAN_ADD) $echoActionButton($this->Html, 'icon-plus', $bStyle, ' Ajouter', $this->request->controller, 'add', null); 34 + if ($CAN_ADD) $echoActionButton($this->Html, 'icon-plus', $bStyle, ' Ajouter'.$entities_name, $controller, 'add', $id);
18 ?> 35 ?>
19 </div> 36 </div>
src/Template/GroupesMetiers/index.ctp
1 <?php 1 <?php
2 -$this->extend('/Common/index');  
3 \ No newline at end of file 2 \ No newline at end of file
  3 +$this->extend('/Common/index_groups');
4 \ No newline at end of file 4 \ No newline at end of file
src/Template/GroupesThematiques/index.ctp
1 <?php 1 <?php
2 -$this->extend('/Common/index');  
3 \ No newline at end of file 2 \ No newline at end of file
  3 +$this->extend('/Common/index_groups');
4 \ No newline at end of file 4 \ No newline at end of file
src/Template/Layout/default.ctp
1 <?php 1 <?php
2 2
  3 +// Voir toutes les variables passées à cette vue :
  4 +//debug($this->viewVars);
  5 +
3 /** 6 /**
4 7
5 Logiciel LabInvent - Inventaire des matériels d'un laboratoire 8 Logiciel LabInvent - Inventaire des matériels d'un laboratoire
@@ -203,8 +206,14 @@ $this-&gt;append(&#39;script&#39;, $this-&gt;Html-&gt;script([&#39;script&#39;, &#39;DatepickerConfig&#39;, &#39;onTa @@ -203,8 +206,14 @@ $this-&gt;append(&#39;script&#39;, $this-&gt;Html-&gt;script([&#39;script&#39;, &#39;DatepickerConfig&#39;, &#39;onTa
203 <div class="offset-lg-6 col-lg-4 user"> 206 <div class="offset-lg-6 col-lg-4 user">
204 <?php 207 <?php
205 if (isset($username) && $username != " ") { 208 if (isset($username) && $username != " ") {
206 - echo 'Bienvenue ' . $username . '<br/>';  
207 - echo $role . '<br/>'; 209 + //echo 'Bienvenue ' . $username . '<br/>';
  210 + echo 'Bienvenue '.$this->Html->link($username, [
  211 + 'controller' => 'Users',
  212 + 'action' => 'view',
  213 + $priviledgedUser->id
  214 + //$user->id,
  215 + ]).'<br/>';
  216 + echo "<i>(profil $role)</i>" . '<br/>';
208 echo $this->Html->link('Se déconnecter', [ 217 echo $this->Html->link('Se déconnecter', [
209 'controller' => 'Users', 218 'controller' => 'Users',
210 'action' => 'logout' 219 'action' => 'logout'
src/Template/Pages/tools.ctp
@@ -139,7 +139,7 @@ $no_limit_mode = $no_limit_mode; @@ -139,7 +139,7 @@ $no_limit_mode = $no_limit_mode;
139 //if ($role == 'Super Administrateur') : 139 //if ($role == 'Super Administrateur') :
140 if ($USER_IS_SUPERADMIN) : 140 if ($USER_IS_SUPERADMIN) :
141 141
142 - $this->MyHelper->echoMenuItemWithIcon("user.jpg", "Gérer les utilisateurs", 'users'); 142 + $this->MyHelper->echoMenuItemWithIcon("user.jpg", "Gérer les utilisateurs", 'users?sort=nom&direction=asc');
143 /* 143 /*
144 echo '<tr><td>'; 144 echo '<tr><td>';
145 //echo $this->Html->link('Gérer les utilisateurs privilégiés', [ 145 //echo $this->Html->link('Gérer les utilisateurs privilégiés', [
src/Template/SousCategories/add.ctp
  1 +<?php
  2 +// add/id pour préciser d'ajouter cette sous-catégorie dans la catégorie numéro id
  3 +$parent_id = isset($this->request->getParam('pass')[0]) ? $this->request->getParam('pass')[0] : null;
  4 +?>
1 5
2 <div class="sousCategories form"> 6 <div class="sousCategories form">
3 <?= $this->Form->create($sousCategory) ?> 7 <?= $this->Form->create($sousCategory) ?>
@@ -9,7 +13,8 @@ @@ -9,7 +13,8 @@
9 echo $this->Form->control('nom'); 13 echo $this->Form->control('nom');
10 echo $this->Form->control('categorie_id', [ 14 echo $this->Form->control('categorie_id', [
11 'label' => 'Catégorie', 15 'label' => 'Catégorie',
12 - 'options' => $categories 16 + 'options' => $categories,
  17 + 'default' => $parent_id,
13 ]); 18 ]);
14 ?> 19 ?>
15 </fieldset> 20 </fieldset>
src/Template/Users/index.ctp
@@ -30,7 +30,9 @@ $nbUsers = $this-&gt;Paginator-&gt;param(&#39;count&#39;); @@ -30,7 +30,9 @@ $nbUsers = $this-&gt;Paginator-&gt;param(&#39;count&#39;);
30 //'controller' => 'users', 30 //'controller' => 'users',
31 //'action' => 'indexRecap', 31 //'action' => 'indexRecap',
32 //'sort' => 'sur_categorie_id', 32 //'sort' => 'sur_categorie_id',
33 - 'filtre' => $new_filtre 33 + 'sort' => 'nom',
  34 + 'direction' => 'asc',
  35 + 'filtre' => $new_filtre,
34 ]); 36 ]);
35 echo "<br/><br/>"; 37 echo "<br/><br/>";
36 ?> 38 ?>