Commit 43c3d80490bb5c05bab93376ace19225ae166f8e

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

Bugfix label (configurable) des groupes métier et thématique :

maintenant ok dans toutes les vues

- et aussi : détermination automatique des noms de colonnes des FK dans
les listes (index) génériques

v5.2.29-3.7.9
CHANGELOG
... ... @@ -542,13 +542,20 @@ TODO :
542 542  
543 543 ======= NEXT =======
544 544  
545   -index view : groupe metier et thematique => recup nom selon config
  545 +user : ne doit pas voir boutons edit/delete sur autres listes
546 546  
547   -garantie jqa 8/11/22 pour les 2 serveurs
  547 +view générique à utiliser pour plusieurs entités
  548 +
  549 +print etiquette pour les 2 serveurs + tester fin garantie orange
548 550  
549 551 ======= CHANGES =======
550 552  
551 553 -------
  554 +12/11/2021 v5.2.29-3.7.9
  555 + - (b) Bugfix label (configurable) des groupes métier et thématique : maintenant ok dans toutes les vues
  556 + - (i) détermination automatique des noms de colonnes des FK dans les listes (index) génériques
  557 +
  558 +-------
552 559 11/11/2021 v5.2.28-3.7.9
553 560 - (i) Refactorisation : vue users/index generique
554 561 - (e) amélioration des tris par colonne pour toutes les listes
... ...
README.md
... ... @@ -53,7 +53,7 @@ Logiciel testé et validé sur les configurations suivantes :
53 53 --------------------------------------------------------------------------------------------
54 54  
55 55 Date: 11/11/2021
56   -Version: v5.2.28-3.7.9
  56 +Version: v5.2.29-3.7.9
57 57  
58 58  
59 59 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes)
... ...
src/Controller/AppController.php
... ... @@ -353,6 +353,9 @@ class AppController extends Controller
353 353 return $elems;
354 354 }
355 355  
  356 + // "le materiel", "le suivi", "l'emprunt", "la catégorie"...
  357 + // Par défaut
  358 + public function getArticle() { return "Le "; }
356 359  
357 360 // Jolis labels pour chaque champ de l'entité
358 361 // Par défaut, aucun => on utilise donc directement le nom des champs
... ... @@ -477,30 +480,31 @@ class AppController extends Controller
477 480 * ...
478 481 */
479 482 //public static function getNiceTypeName() {
480   - public function getTypeNameSingular($alias_controller_name=null) {
  483 + public function getNiceNameSingularLowerCase($alias_controller_name=null) {
481 484 //return strtolower($this->name);
482 485 //return __CLASS__;
483 486 //return strtolower( substr($this->getName(),0,-1) );
484 487 // 1) on récupère chaque mot du nom du controleur
485   - $words = explode(' ',$this->getTypeNamePlural($alias_controller_name));
  488 + $words = explode(' ',$this->getNiceNamePluralLowerCase($alias_controller_name));
486 489 //debug($words);
487 490 // 2) on supprime les 's' éventuels à la fin de chaque mot
488 491 $type_name_singular = '';
489 492 foreach($words as $word) $type_name_singular .= (substr($word,-1)=='s') ? substr($word,0,-1).' ' : $word.' ';
490 493 //debug($type_name_singular);
491 494 return rtrim($type_name_singular);
492   - //return substr($this->getTypeNamePlural(),0,-1);
  495 + //return substr($this->getNiceNamePluralLowerCase(),0,-1);
493 496 }
494   - //@deprecated
495   - public function getNiceName() { return $this->getTypeNameSingular(); }
  497 + public function getNiceName() { return $this->getNiceNameSingularLowerCase(); }
496 498  
  499 +
497 500 // Nom pluriel affichable pour cette entité
  501 + public function getNiceNamePluralLowerCase($alias_controller_name=null) {
498 502 // ex: 'suivis', 'matériels', 'catégories', ...
499   - public function getTypeNamePlural($alias_controller_name=null) {
500 503 //return strtolower($this->name);
501 504 //return __CLASS__;
502   - return strtolower( $this->getName() );
  505 + return strtolower($this->getName());
503 506 }
  507 +
504 508  
505 509 // ex: 'sur_categorie_id'
506 510 public function getFkName() {
... ... @@ -2153,7 +2157,17 @@ class AppController extends Controller
2153 2157 $limit = 20
2154 2158 )
2155 2159 {
2156   - $controller_name = $this->getName();
  2160 + foreach ($fields_names as $fname=>$infos) {
  2161 + // Si $fname est une FK, on définit son nice_name à partir de son controleur
  2162 + if (substr($fname,-3)=='_id') {
  2163 + $fk_controller_name = $infos['controller_name'];
  2164 + //$fk_controller_instance = new $fk_controller_name;
  2165 + $fk_controller_instance = $this->getControllerInstanceForName($fk_controller_name);
  2166 + $nice_name = ucwords($fk_controller_instance->getNiceNameSingularLowerCase());
  2167 + $fields_names[$fname]['nice_name'] = $nice_name;
  2168 + }
  2169 + }
  2170 + $controller_name = $this->getName();
2157 2171 //debug($controller_name);
2158 2172  
2159 2173 $this->paginate = [
... ... @@ -2354,7 +2368,7 @@ class AppController extends Controller
2354 2368 $c = new $c();
2355 2369 */
2356 2370 // 'Domaine'
2357   - $parent_entity_type_name=$c->getTypeNameSingular($parent_entity_controller_name);
  2371 + $parent_entity_type_name=$c->getNiceNameSingularLowerCase($parent_entity_controller_name);
2358 2372 //debug($parent_entity_type_name);
2359 2373 // nom de l'instance de l'entité parente
2360 2374 // 'sur_category'
... ... @@ -2401,7 +2415,7 @@ class AppController extends Controller
2401 2415 $c_parent = 'App\\Controller\\'.$parent_entity_controller_name.'Controller';
2402 2416 $c_parent = new $c_parent();
2403 2417 // 'Domaine'
2404   - $parent_entity_type_name=$c_parent->getTypeNameSingular();
  2418 + $parent_entity_type_name=$c_parent->getNiceNameSingularLowerCase();
2405 2419 //debug($parent_entity_type_name);
2406 2420 // nom de l'instance de l'entité parente
2407 2421 // 'sur_category'
... ... @@ -2453,9 +2467,9 @@ class AppController extends Controller
2453 2467 $c = new $c();
2454 2468 */
2455 2469 // ex: 'catégorie'
2456   - $et['entity_type_name_singular'] = $c->getTypeNameSingular();
  2470 + $et['entity_type_name_singular'] = $c->getNiceNameSingularLowerCase();
2457 2471 // ex: 'catégories'
2458   - $et['entity_title'] = $c->getTypeNamePlural();
  2472 + $et['entity_title'] = $c->getNiceNamePluralLowerCase();
2459 2473 $et['is_masculin'] = $c->is_masculin;
2460 2474 $et['name_field_label'] = $c->getNameFieldLabel();
2461 2475 //$et['entities'] = $this->SurCategories->$entity_type->find()->where([
... ... @@ -2512,7 +2526,8 @@ class AppController extends Controller
2512 2526 //$entity_article = 'le ';
2513 2527 $entity_article = $this->getMyArticle();
2514 2528 //$entity_type_name = 'domaine';
2515   - $entity_type_name_singular = $this->getTypeNameSingular();
  2529 + //$entity_type_name_singular = $this->getNiceNameSingularLowerCase();
  2530 + $entity_type_name_singular = $this->getNiceNameSingularLowerCase();
2516 2531 //$entity_name = $entity->getMyName();
2517 2532 //$entity_name = $entity->nom;
2518 2533 $entity_name_field_label = $this->getNameFieldLabel();
... ... @@ -3169,9 +3184,6 @@ class AppController extends Controller
3169 3184 } // beforeRender()
3170 3185  
3171 3186  
3172   - // "le materiel", "le suivi", "l'emprunt", "la catégorie"...
3173   - // Par défaut
3174   - public function getArticle() { return "Le "; }
3175 3187  
3176 3188 static function isLabinventDebugMode()
3177 3189 {
... ... @@ -3590,7 +3602,7 @@ class AppController extends Controller
3590 3602  
3591 3603 // Entité (Entity)
3592 3604 //$entity_nice_name = $this->getNiceName(); // matériel, domaine, utilisateur...
3593   - $entity_nice_type_name = $this->getTypeNameSingular(); // matériel, domaine, utilisateur...
  3605 + $entity_nice_type_name = $this->getNiceNameSingularLowerCase(); // matériel, domaine, utilisateur...
3594 3606  
3595 3607 // Si pas d'entité définie => return
3596 3608 ////$entity = $this->e;
... ...
src/Controller/CategoriesController.php
... ... @@ -23,7 +23,7 @@ class CategoriesController extends AppController
23 23  
24 24 // Nom pluriel affichable pour cette entité
25 25 //@Override
26   - public function getTypeNamePlural($alias_controller_name=null) { return 'catégories'; }
  26 + public function getNiceNamePluralLowerCase($alias_controller_name=null) { return 'catégories'; }
27 27  
28 28 //@deprecated
29 29 public function getArticle()
... ... @@ -107,7 +107,11 @@ class CategoriesController extends AppController
107 107 [
108 108 //'nom'=>['nice_name'=>'Nom'],
109 109 'nom'=>[],
110   - 'sur_categorie_id'=>['nice_name'=>'Domaine', 'contained_entity_name'=>'sur_category', 'controller_name'=>'SurCategories'],
  110 + 'sur_categorie_id'=>[
  111 + //'nice_name'=>'Domaine',
  112 + 'contained_entity_name'=>'sur_category',
  113 + 'controller_name'=>'SurCategories'
  114 + ],
111 115 ],
112 116 ['SurCategories'],
113 117 true, true,
... ...
src/Controller/GroupesMetiersController.php
... ... @@ -13,9 +13,12 @@ class GroupesMetiersController extends AppController
13 13 {
14 14  
15 15 // Nom pluriel affichable pour cette entité
  16 + //public function getNiceNamePluralLowerCase($alias_controller_name=null) { return 'groupes métiers'; }
16 17 //@Override
17   - public function getTypeNamePlural($alias_controller_name=null) {
18   - return 'groupes métiers';
  18 + // Par défaut = 'groupes métiers'
  19 + public function getNiceNamePluralLowerCase($alias_controller_name=null) {
  20 + //return 'groupes métiers';
  21 + return strtolower( $this->confLabinvent->nom_groupe_metier ? $this->confLabinvent->nom_groupe_metier : 'groupes métiers' );
19 22 }
20 23  
21 24 /**
... ... @@ -162,19 +165,21 @@ class GroupesMetiersController extends AppController
162 165 if ($this->request->is('post')) {
163 166 $groupesMetier = $this->GroupesMetiers->patchEntity($groupesMetier, $this->request->getData());
164 167 if ($this->GroupesMetiers->save($groupesMetier)) {
165   - $this->Flash->success(__('Le groupe métier a bien été ajouté.'));
  168 + $this->Flash->success(__("L'entité a bien été ajoutée"));
166 169 return $this->redirect([
167 170 'action' => 'view',
168 171 $groupesMetier->id
169 172 ]);
170 173 } else {
171   - $this->Flash->error(__('Le groupe métier n\'a pas pu être ajouté.'));
  174 + $this->Flash->error(__("L'entité n'a pas pu être ajoutée"));
172 175 }
173 176 }
174 177 $this->set(compact('groupesMetier'));
  178 + /* (EP) inutile, seulement pour json
175 179 $this->set('_serialize', [
176 180 'groupesMetier'
177 181 ]);
  182 + */
178 183 }
179 184  
180 185 /**
... ...
src/Controller/GroupesThematiquesController.php
... ... @@ -13,14 +13,15 @@ class GroupesThematiquesController extends AppController
13 13 {
14 14  
15 15 // Nom pluriel affichable pour cette entité
  16 + //public function getNiceNamePluralLowerCase($alias_controller_name=null) { return 'groupes métiers'; }
16 17 //@Override
17   - public function getTypeNamePlural($alias_controller_name=null) {
18   - //return strtolower($this->name);
19   - //return strtolower($this->getName());
20   - //return 'sur-catégories';
21   - return 'groupes thématiques';
  18 + // Par défaut = 'groupes métiers'
  19 + public function getNiceNamePluralLowerCase($alias_controller_name=null) {
  20 + //return 'groupes métiers';
  21 + return strtolower( $this->confLabinvent->nom_groupe_thematique ? $this->confLabinvent->nom_groupe_thematique : 'groupes thématiques' );
22 22 }
23 23  
  24 +
24 25 /**
25 26 * Give authorization for groupes thematiques
26 27 *
... ...
src/Controller/MaterielsController.php
... ... @@ -129,11 +129,11 @@ class MaterielsController extends AppController {
129 129 /*
130 130 // Nom singulier affichable pour cette entité
131 131 // @Override
132   - public function getTypeNameSingular() { return "matériel"; }
  132 + public function getNiceNameSingularLowerCase() { return "matériel"; }
133 133 */
134 134 // Nom pluriel affichable pour cette entité
135 135 //@Override
136   - public function getTypeNamePlural($alias_controller_name=null) { return 'matériels'; }
  136 + public function getNiceNamePluralLowerCase($alias_controller_name=null) { return 'matériels'; }
137 137  
138 138  
139 139 private $NOTARCHIVED = [
... ...
src/Controller/SousCategoriesController.php
... ... @@ -32,7 +32,7 @@ class SousCategoriesController extends AppController
32 32  
33 33 // Nom pluriel affichable pour cette entité
34 34 //@Override
35   - public function getTypeNamePlural($alias_controller_name=null) { return 'sous-catégories'; }
  35 + public function getNiceNamePluralLowerCase($alias_controller_name=null) { return 'sous-catégories'; }
36 36  
37 37 /*
38 38 * @Override
... ... @@ -99,7 +99,10 @@ class SousCategoriesController extends AppController
99 99 [
100 100 //'nom'=>['nice_name'=>'Nom'],
101 101 'nom'=>[],
102   - 'categorie_id'=>['nice_name'=>'Catégorie', 'contained_entity_name'=>'category', 'controller_name'=>'Categories'],
  102 + 'categorie_id'=>[
  103 + //'nice_name'=>'Catégorie',
  104 + 'contained_entity_name'=>'category',
  105 + 'controller_name'=>'Categories'],
103 106 ],
104 107 ['Categories'],
105 108 true, true,
... ...
src/Controller/StatsController.php
... ... @@ -39,13 +39,18 @@ class StatsController extends AppController
39 39 'statistiques de connexion',
40 40 [
41 41 'year'=>['nice_name'=>'Année'],
42   - 'user_id'=>['nice_name'=>'Utilisateur', 'contained_entity_name'=>'user', 'controller_name'=>'Users'],
  42 + 'user_id'=>[
  43 + //'nice_name'=>'Utilisateur',
  44 + 'contained_entity_name'=>'user', 'controller_name'=>'Users'],
43 45 'last_login_time' => [],
44   - 'last_connex_dur'=>['nice_name'=>'Last connexion duration (h)', 'f'=>'getHourMnSecForDuration'],
  46 + 'last_connex_dur'=>[
  47 + 'nice_name'=>'Last connexion duration (h)', 'f'=>'getHourMnSecForDuration'],
45 48 'last_logout_time'=>[],
46   - 'connex_dur_tot'=>['nice_name'=>"Temps connexion cumulé (h)", 'f'=>'getHourMnSecForDuration'],
  49 + 'connex_dur_tot'=>[
  50 + 'nice_name'=>"Temps connexion cumulé (h)", 'f'=>'getHourMnSecForDuration'],
47 51 'connex_nb'=>['nice_name'=>"Nb connexions"],
48   - 'connexDurAvg'=>['nice_name'=>"Durée connexion moyenne (sur année)", 'f'=>'getHourMnSecForDuration']
  52 + 'connexDurAvg'=>[
  53 + 'nice_name'=>"Durée connexion moyenne (sur année)", 'f'=>'getHourMnSecForDuration']
49 54 ],
50 55 ['Users'],
51 56 false, false,
... ...
src/Controller/SurCategoriesController.php
... ... @@ -23,7 +23,7 @@ class SurCategoriesController extends AppController
23 23 /*
24 24 // Nom singulier affichable pour cette entité
25 25 // @Override parent
26   - public function getTypeNameSingular() {
  26 + public function getNiceNameSingularLowerCase() {
27 27 //return strtolower($this->name);
28 28 //return strtolower($this->getName());
29 29 return 'domaine';
... ... @@ -53,7 +53,7 @@ class SurCategoriesController extends AppController
53 53 }
54 54 // Nom pluriel affichable pour cette entité
55 55 //@Override
56   - public function getTypeNamePlural($alias_controller_name=null) {
  56 + public function getNiceNamePluralLowerCase($alias_controller_name=null) {
57 57 //return strtolower($this->name);
58 58 //return strtolower($this->getName());
59 59 //return 'sur-catégories';
... ...
src/Controller/TypeDocumentsController.php
... ... @@ -14,7 +14,7 @@ class TypeDocumentsController extends AppController
14 14  
15 15 // Nom pluriel affichable pour cette entité
16 16 //@Override
17   - public function getTypeNamePlural($alias_controller_name=null) {
  17 + public function getNiceNamePluralLowerCase($alias_controller_name=null) {
18 18 return 'types de documents';
19 19 }
20 20  
... ...
src/Controller/TypeSuivisController.php
... ... @@ -12,6 +12,11 @@ use Cake\ORM\TableRegistry;
12 12 class TypeSuivisController extends AppController
13 13 {
14 14  
  15 +
  16 + public function getNiceNamePluralLowerCase($alias_controller_name=null) {
  17 + return 'types de suivis';
  18 + }
  19 +
15 20 // Jolis labels pour chaque champ de l'entité
16 21 //@Override
17 22 protected $nice_field_labels = [
... ...
src/Controller/UsersController.php
... ... @@ -34,7 +34,7 @@ class UsersController extends AppController {
34 34 */
35 35 // Nom pluriel affichable pour cette entité
36 36 //@Override
37   - public function getTypeNamePlural($alias_controller_name=null) {
  37 + public function getNiceNamePluralLowerCase($alias_controller_name=null) {
38 38 //return strtolower($this->name);
39 39 //return strtolower($this->getName());
40 40 if ($alias_controller_name == 'ChefSciences') return 'responsables scientifiques (PI)';
... ... @@ -572,15 +572,15 @@ class UsersController extends AppController {
572 572 'email' => [],
573 573 'role' => [],
574 574 'groupes_thematique_id'=>[
575   - 'nice_name'=>'Groupe Thématique',
  575 + //'nice_name'=>'Groupe Thématique',
576 576 'contained_entity_name'=>'groupes_thematique', 'controller_name'=>'GroupesThematiques'
577 577 ],
578 578 'groupes_metier_id'=>[
579   - 'nice_name'=>'Groupe Métier',
  579 + //'nice_name'=>'Groupe Métier',
580 580 'contained_entity_name'=>'groupes_metier', 'controller_name'=>'GroupesMetiers'
581 581 ],
582 582 'sur_categorie_id'=>[
583   - 'nice_name'=>'Domaine',
  583 + //'nice_name'=>'Domaine',
584 584 'contained_entity_name'=>'sur_category', 'controller_name'=>'SurCategories'
585 585 ],
586 586 ],
... ...
src/Template/Common/index_gen.ctp
... ... @@ -71,6 +71,7 @@ if (empty($fields_names['nom'])) $fields_names['nom'] = ['nice_name'=>'Nom'];
71 71 //foreach ($fields_names as $fname=>$fnicename) echo "<th>".$this->Paginator->sort($fname, $fnicename)."</th>";
72 72 //foreach ($fields_names as $fname=>$infos) {
73 73 foreach ($fields_names as $fname=>$infos) {
  74 + // Joli nom pour le titre de la colonne (nice name)
74 75 $nice_name = isset($infos['nice_name']) ? $infos['nice_name'] : $fname;
75 76 if ( in_array($fname, array_keys($sortWhitelist)) ) $fname = $sortWhitelist[$fname];
76 77 echo "<th>".$this->Paginator->sort($fname, ucfirst($nice_name))."</th>";
... ...
src/Template/Common/index_groups.ctp
... ... @@ -25,6 +25,7 @@ $groups = $groups;
25 25 $words = explode(' ',$group_type_name);
26 26 $group_type_name_plural = '';
27 27 foreach($words as $word) $group_type_name_plural .= $word.'s ';
  28 + $group_type_name_plural = ucwords($group_type_name_plural);
28 29 echo "<h2><i class='icon-list'></i> Liste des $group_type_name_plural</h2>";
29 30  
30 31 // Si une url est donnée vers la page des Groupes thématiques sur le site web du labo, on l'affiche
... ...
src/Template/Common/view.ctp
... ... @@ -71,7 +71,10 @@ if (isset($sub_controller)) {
71 71 -->
72 72 <div class="Entity view">
73 73  
74   - <h2>Informations sur <?=$entity_article.$entity_type_name_singular.' "'.$entity_name.'"'?></h2>
  74 + <!--
  75 + <h2>Informations sur <=$entity_article.$entity_type_name_singular.' "'.$entity_name.'"'?></h2>
  76 + -->
  77 + <h2><?=ucfirst($entity_type_name_singular).' "'.$entity_name.'"'?></h2>
75 78  
76 79 <?= $this->Html->link("Voir toutes les entités (liste)", ['action'=>'index']) ?>
77 80 <br />
... ...
src/Template/Pages/tools_sm.ctp
... ... @@ -136,6 +136,7 @@ foreach ([&#39;metier&#39;,&#39;thematique&#39;] as $group_type) {
136 136 } else {
137 137 $nom = $names[0] . 's';
138 138 }
  139 + $nom = ucwords($nom);
139 140 //$this->MyHelper->echoListToManageOrViewWithIcon($this->Html, $nom, 'groupes_thematiques');
140 141 //$this->MyHelper->echoListToManageOrViewWithIcon($CAN_MANAGE, $nom, 'groupes_'.$group_type.'s');
141 142 $entity_name = 'groupes_'.$group_type.'s';
... ...