Commit f63eabb232f4ea12e5ac987606477ee62ded11b4
1 parent
f18c8ee2
Exists in
master
and in
1 other branch
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
Showing
21 changed files
with
262 additions
and
109 deletions
Show diff stats
CHANGELOG
@@ -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 |
README.md
@@ -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 |
@@ -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
src/Template/GroupesThematiques/index.ctp
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->append('script', $this->Html->script(['script', 'DatepickerConfig', 'onTa | @@ -203,8 +206,14 @@ $this->append('script', $this->Html->script(['script', 'DatepickerConfig', '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->Paginator->param('count'); | @@ -30,7 +30,9 @@ $nbUsers = $this->Paginator->param('count'); | ||
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 | ?> |