Commit 404b35d8c618e44f6cd8c3f59817152f16fa857b
1 parent
06938694
Exists in
master
and in
1 other branch
Refactorisations, vues index et view génériques
- Vue détaillée users (view) générique avec contenu enrichi ("(responsable)") - Vue liste users (index) générique avec contenu enrichi ("(responsable)") - user->groupe_thematique_with_resp : groupe + (responsable) si c'est le cas - user->groupe_metier_with_resp : groupe + (responsable) si c'est le cas v5.3.0-3.7.9
Showing
8 changed files
with
136 additions
and
139 deletions
Show diff stats
CHANGELOG
... | ... | @@ -359,6 +359,33 @@ Commencer à implémenter le nouveau workflow v5 : |
359 | 359 | ======= TODO ======= |
360 | 360 | |
361 | 361 | |
362 | + *) TESTS !!!! | |
363 | + *) Les tests doivent se faire avec la config par défaut (et non pas celle spécifique du labo) | |
364 | + *) Ajouter test Commande (avec devis joint !) | |
365 | + | |
366 | + *) | |
367 | + Relance auto lors de suivis périodiques | |
368 | + | |
369 | + *) Validation multiple ne marche plus | |
370 | + | |
371 | + *) DOMPDF : pb Qrcode absent sur fiche pdf (mais présent sur page web), alors que le QrCode est bien généré et que le chemin dans le pdf est OK !!! | |
372 | +Par contre, ok avec FPDF | |
373 | + | |
374 | + *) LDAP trou sécu (autres labos) : user se connecte avec bad mdp | |
375 | + | |
376 | + *) | |
377 | + Rendre modifiable la config via page web "Gérer les champs obligatoires" | |
378 | + - OFF_nom_du_champ : 'libellé' | |
379 | + - Restaurer la config par défaut | |
380 | + - Réactiver une variable : OFF_nom_du_champ => nom_du_champ | |
381 | + | |
382 | + *) => update matos lifecycle diag | |
383 | + | |
384 | + | |
385 | + | |
386 | + | |
387 | + | |
388 | + | |
362 | 389 | *) Quand on supprime un matos de “ma liste”, il faut revenir à “ma liste”, pas à “tous les matos” |
363 | 390 | |
364 | 391 | *) TEST_WEB ne marche pas avec docker |
... | ... | @@ -366,22 +393,11 @@ Commencer à implémenter le nouveau workflow v5 : |
366 | 393 | (update doc) |
367 | 394 | Mais ca serait mieux de faire localhost:8080 pour le site web et :8081 pour phpmyadmin (et non pas l’inverse !!) |
368 | 395 | |
369 | - *) LDAP trou sécu (autres labos) : user se connecte avec bad mdp | |
370 | - | |
371 | - *) DOMPDF : pb Qrcode absent sur fiche pdf (mais présent sur page web), alors que le QrCode est bien généré et que le chemin dans le pdf est OK !!! | |
372 | -Par contre, ok avec FPDF | |
373 | - | |
374 | 396 | *) Check extension ldap dans page web installation |
375 | 397 | |
376 | 398 | *) Augmenter taille upload de mon labo |
377 | 399 | |
378 | 400 | *) Créer une page qui liste les gestionnaires |
379 | - | |
380 | - *) | |
381 | - Rendre modifiable la config via page web "Gérer les champs obligatoires" | |
382 | - - OFF_nom_du_champ : 'libellé' | |
383 | - - Restaurer la config par défaut | |
384 | - - Réactiver une variable : OFF_nom_du_champ => nom_du_champ | |
385 | 401 | |
386 | 402 | *) SUPERADMIN |
387 | 403 | => par défaut, au minimum, mêmes droits que ADMIN |
... | ... | @@ -395,7 +411,6 @@ Par contre, ok avec FPDF |
395 | 411 | - numéro inventaire (hidden par défaut pour l'édition) |
396 | 412 | - ... |
397 | 413 | |
398 | - *) => update matos lifecycle diag | |
399 | 414 | |
400 | 415 | *) Vincent : |
401 | 416 | - email pas trouvé (ancienne fiche de vincent) |
... | ... | @@ -407,12 +422,8 @@ Par contre, ok avec FPDF |
407 | 422 | |
408 | 423 | *) qqsoit user : doit pouvoir voir sa fiche user (no modif) |
409 | 424 | => mais pas celle des autres... |
410 | - | |
411 | - *) TESTS !!!! | |
412 | - *) Les tests doivent se faire avec la config par défaut (et non pas celle spécifique du labo) | |
413 | - *) Ajouter test Commande (avec devis joint !) | |
414 | 425 | |
415 | - *) Validation multiple ne marche plus | |
426 | + | |
416 | 427 | |
417 | 428 | *) Mail "[LabInvent] Ajout de matériel(s)" => c'est quoi ? ==> voir message de log associé |
418 | 429 | (quelle diff avec "[LabInvent] Ajout d'un matériel" ??) |
... | ... | @@ -438,10 +449,7 @@ Par contre, ok avec FPDF |
438 | 449 | *) |
439 | 450 | Procédures pour les utilisateurs et les gestionnaires désormais configurable via le fichier de conf |
440 | 451 | |
441 | - | |
442 | - *) | |
443 | - Relance auto lors de suivis périodiques | |
444 | - | |
452 | + | |
445 | 453 | *) |
446 | 454 | Généraliser l'usage de Element/buttons_edit_del.ctp dans tous les formulaires de view |
447 | 455 | |
... | ... | @@ -504,7 +512,6 @@ TODO : |
504 | 512 | |
505 | 513 | - fusionner elem/button_add_edit et MyHelper echoActionButton... |
506 | 514 | (ne garder que elem/) |
507 | - | |
508 | 515 | - séparer elem/button_add, button_edit, button_delete, et button_tout_court (générique) |
509 | 516 | |
510 | 517 | - short_role AppController ligne 819 => généraliser |
... | ... | @@ -537,17 +544,35 @@ TODO : |
537 | 544 | - fusionner groupe thematique et metier (et projet ?) |
538 | 545 | |
539 | 546 | - Utiliser les vues "index" des entités associées pour la vue "view" de materiel (et suivi) : |
540 | - => éviter la redondance, le contenu est pratiquement le meme | |
547 | + => éviter la redondance, le contenu est pratiquement le meme (???, sauf que les colonnes ne sont pas triables) | |
541 | 548 | |
542 | 549 | ======= NEXT ======= |
543 | 550 | |
551 | +print etiquette pour les 2 serveurs + tester fin garantie orange | |
552 | + | |
544 | 553 | view générique à utiliser pour plusieurs entités |
545 | 554 | |
546 | -print etiquette pour les 2 serveurs + tester fin garantie orange | |
555 | +Vues génériques (index et view) : | |
556 | + - savoir gérer les champs virtuels pour le tri | |
557 | + - new champs virtuels à implémenter : | |
558 | + - prets : | |
559 | + - intitulé = nom sinon id | |
560 | + - lieu_stockage = concat(site,lieu) | |
561 | + - users : vue "index" avec (responsable) | |
562 | + | |
563 | +- Suivis.statut => "en cours" ou "à terminer" => à calculer auto | |
547 | 564 | |
565 | + | |
548 | 566 | ======= CHANGES ======= |
549 | 567 | |
550 | 568 | ------- |
569 | +15/11/2021 v5.3.0-3.7.9 | |
570 | + - (e) Refactorisation : Vue détaillée users (view) générique avec contenu enrichi ("(responsable)") | |
571 | + - (e) Refactorisation : Vue liste users (index) générique avec contenu enrichi ("(responsable)") | |
572 | + - user->groupe_thematique_with_resp : groupe + (responsable) si c'est le cas | |
573 | + - user->groupe_metier_with_resp : groupe + (responsable) si c'est le cas | |
574 | + | |
575 | +------- | |
551 | 576 | 12/11/2021 v5.2.30-3.7.9 |
552 | 577 | - (e) Refactorisation : Vue liste projets (index) générique |
553 | 578 | - (e) Amélioration vue des Stats de connexion : le tri des colonnes est maintenant ok |
... | ... | @@ -556,7 +581,7 @@ print etiquette pour les 2 serveurs + tester fin garantie orange |
556 | 581 | - tri par défaut amélioré |
557 | 582 | - bugfix label du champ 'nom' |
558 | 583 | - généralisation de l'affichage des booleens |
559 | - | |
584 | + | |
560 | 585 | ------- |
561 | 586 | 12/11/2021 v5.2.29-3.7.9 |
562 | 587 | - (b) Bugfix label (configurable) des groupes métier et thématique : maintenant ok dans toutes les vues | ... | ... |
README.md
... | ... | @@ -52,8 +52,8 @@ Logiciel testé et validé sur les configurations suivantes : |
52 | 52 | |
53 | 53 | -------------------------------------------------------------------------------------------- |
54 | 54 | |
55 | -Date: 12/11/2021 | |
56 | -Version: v5.2.30-3.7.9 | |
55 | +Date: 15/11/2021 | |
56 | +Version: v5.3.0-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
... | ... | @@ -2148,7 +2148,8 @@ class AppController extends Controller |
2148 | 2148 | */ |
2149 | 2149 | public function index_generic( |
2150 | 2150 | $entity_plural, |
2151 | - $fields_names=[], $contained_controllers=null, | |
2151 | + $fields_names=[], | |
2152 | + $contained_controllers=null, | |
2152 | 2153 | $HAS_ADD_BUTTON=true, |
2153 | 2154 | $HAS_EDIT_DEL_BUTTONS=true, |
2154 | 2155 | $sortBy = null, |
... | ... | @@ -2266,8 +2267,11 @@ class AppController extends Controller |
2266 | 2267 | |
2267 | 2268 | //public function view_generic($id, $associated_entity_types, $parent_entity_controller_name=[]) { |
2268 | 2269 | //public function view_generic($id, $associated_entity_types, $containavirer=[]) { |
2269 | - public function view_generic($id, $child_entity_types=[], | |
2270 | - $sub_controller_class_name=null, $sub_controller=null, $sub_controller_singular=null) { | |
2270 | + public function view_generic( | |
2271 | + $id, $child_entity_types=[], | |
2272 | + $sub_controller_class_name=null, $sub_controller=null, $sub_controller_singular=null, | |
2273 | + $improved=[], $excluded=[] | |
2274 | + ) { | |
2271 | 2275 | |
2272 | 2276 | //debug($contain_children); |
2273 | 2277 | // ex: SurCategories |
... | ... | @@ -2393,6 +2397,9 @@ class AppController extends Controller |
2393 | 2397 | $parent_entity_infos['type_name'] = $parent_entity_type_name; |
2394 | 2398 | $parent_entity_infos['name'] = $parent_entity_name; |
2395 | 2399 | $parent_entity_infos['fk_contained_name'] = $parent_entity_contained_name; |
2400 | + //if ($fk_name=='groupes_thematique_id') $parent_entity_infos['improved'] = 'groupe_thematique_with_resp'; | |
2401 | + if ( isset($improved[$fk_name]) ) $parent_entity_infos['improved'] = $improved[$fk_name]; | |
2402 | + | |
2396 | 2403 | } |
2397 | 2404 | //debug($parent_entities_infos); |
2398 | 2405 | //exit; |
... | ... | @@ -2568,7 +2575,8 @@ class AppController extends Controller |
2568 | 2575 | // Optionnel : sous-controleur pour pouvoir ajouter une sous-entité (ex: ajouter une sous-catégorie à une catégorie) |
2569 | 2576 | 'sub_controller', |
2570 | 2577 | 'sub_controller_singular', |
2571 | - 'CAN_ADD_SUB_ENTITY' | |
2578 | + 'CAN_ADD_SUB_ENTITY', | |
2579 | + 'excluded' | |
2572 | 2580 | |
2573 | 2581 | )); |
2574 | 2582 | //debug($this->viewVars);exit; | ... | ... |
src/Controller/UsersController.php
... | ... | @@ -573,11 +573,15 @@ class UsersController extends AppController { |
573 | 573 | 'role' => [], |
574 | 574 | 'groupes_thematique_id'=>[ |
575 | 575 | //'nice_name'=>'Groupe Thématique', |
576 | - 'contained_entity_name'=>'groupes_thematique', 'controller_name'=>'GroupesThematiques', | |
576 | + 'contained_entity_name'=>'groupes_thematique', | |
577 | + 'controller_name'=>'GroupesThematiques', | |
578 | + 'improved' => 'groupe_thematique_with_resp', | |
577 | 579 | ], |
578 | 580 | 'groupes_metier_id'=>[ |
579 | 581 | //'nice_name'=>'Groupe Métier', |
580 | - 'contained_entity_name'=>'groupes_metier', 'controller_name'=>'GroupesMetiers', | |
582 | + 'contained_entity_name'=>'groupes_metier', | |
583 | + 'controller_name'=>'GroupesMetiers', | |
584 | + 'improved' => 'groupe_metier_with_resp', | |
581 | 585 | ], |
582 | 586 | 'sur_categorie_id'=>[ |
583 | 587 | //'nice_name'=>'Domaine', |
... | ... | @@ -686,6 +690,28 @@ class UsersController extends AppController { |
686 | 690 | */ |
687 | 691 | public function view($id = null) |
688 | 692 | { |
693 | + /* | |
694 | + $child_entity_types = [ | |
695 | + 'GroupesMetiers', | |
696 | + 'GroupesThematiques', | |
697 | + 'SurCategories', | |
698 | + ]; | |
699 | + */ | |
700 | + //return parent::view($id, $associated_entity_types); | |
701 | + //return $this->view_generic($id, $associated_entity_types, 'SurCategories'); | |
702 | + //return $this->view_generic($id, $child_entity_types, ['SurCategories']); | |
703 | + //$this->view_generic($id, $child_entity_types); | |
704 | + $improved = [ | |
705 | + 'groupes_thematique_id' => 'groupe_thematique_with_resp', | |
706 | + 'groupes_metier_id' => 'groupe_metier_with_resp', | |
707 | + ]; | |
708 | + $excluded = [ 'is_resp_groupes_metier', 'is_resp_groupes_thematique', 'modified', ]; | |
709 | + $this->view_generic($id, [], null, null, null, | |
710 | + $improved, | |
711 | + $excluded | |
712 | + ); | |
713 | + return; | |
714 | + | |
689 | 715 | $user = $this->Users->get($id, [ |
690 | 716 | 'contain' => [ |
691 | 717 | 'GroupesMetiers', |
... | ... | @@ -693,11 +719,12 @@ class UsersController extends AppController { |
693 | 719 | 'SurCategories' |
694 | 720 | ] |
695 | 721 | ]); |
696 | - | |
697 | 722 | $this->set('user', $user); |
723 | + /* (EP) inutile sauf json | |
698 | 724 | $this->set('_serialize', [ |
699 | 725 | 'user' |
700 | 726 | ]); |
727 | + */ | |
701 | 728 | } |
702 | 729 | |
703 | 730 | ... | ... |
src/Model/Entity/User.php
... | ... | @@ -87,6 +87,20 @@ class User extends Entity |
87 | 87 | //protected function _getIsAdminplus() { return $this->role == 'Administration Plus'; } |
88 | 88 | // $user->is_super |
89 | 89 | protected function _getIsSuper() { return $this->role == 'Super Administrateur'; } |
90 | + | |
91 | + // $user->groupe_thematique_with_resp | |
92 | + protected function _getGroupeThematiqueWithResp() { | |
93 | + $group_with_resp = ''; | |
94 | + if ($this->has('groupes_thematique')) $group_with_resp .= $this->groupes_thematique->nom; | |
95 | + if ($this->is_resp_groupes_thematique) $group_with_resp .= ' (responsable)'; | |
96 | + return $group_with_resp; | |
97 | + } | |
98 | + protected function _getGroupeMetierWithResp() { | |
99 | + $group_with_resp = ''; | |
100 | + if ($this->has('groupes_metier')) $group_with_resp .= $this->groupes_metier->nom; | |
101 | + if ($this->is_resp_groupes_metier) $group_with_resp .= ' (responsable)'; | |
102 | + return $group_with_resp; | |
103 | + } | |
90 | 104 | |
91 | 105 | |
92 | 106 | /* | ... | ... |
src/Template/Common/index_gen.ctp
... | ... | @@ -127,6 +127,7 @@ if (empty($fields_names['nom'])) $fields_names['nom'] = ['nice_name'=>'Nom']; |
127 | 127 | //debug($fname); |
128 | 128 | //<td class="smallText"><?= $this->Html->link($e->nom, ['action' => 'view', $e->id]) ></td> |
129 | 129 | echo "<td class='smallText'>"; |
130 | + | |
130 | 131 | // - S'il y a une fonction de transformation à appliquer, ben... on l'applique |
131 | 132 | //var_dump($fname); |
132 | 133 | if ( isset($fields_names[$fname]['f']) ) { |
... | ... | @@ -135,9 +136,11 @@ if (empty($fields_names['nom'])) $fields_names['nom'] = ['nice_name'=>'Nom']; |
135 | 136 | //var_dump("Y"); |
136 | 137 | echo $this->MyHelper->$f($fval); |
137 | 138 | } |
139 | + | |
138 | 140 | // - Si c'est le champ "nom" ou "id", on l'affiche comme un lien |
139 | 141 | elseif ($fname == 'nom' || $fname == 'id') |
140 | 142 | echo $this->Html->link($fval, ['action' => 'view', $e->id]); |
143 | + | |
141 | 144 | // - Si le champ est boolean => on affiche oui/non |
142 | 145 | //elseif ( (substr($fname,0,3)=='is_') && ($fval===false || $fval===true) ) |
143 | 146 | elseif ( |
... | ... | @@ -149,6 +152,7 @@ if (empty($fields_names['nom'])) $fields_names['nom'] = ['nice_name'=>'Nom']; |
149 | 152 | //echo $fval ? "Oui" : "Non"; |
150 | 153 | echo $fval ? $bool_values[0] : $bool_values[1]; |
151 | 154 | } |
155 | + | |
152 | 156 | // - Si le champ est une FK => on récupère la valeur du 'contained' |
153 | 157 | //elseif ( strpos($fname,'_id') !== strlen($fname)-3 ) |
154 | 158 | elseif ( substr($fname,-3) == '_id' ) { |
... | ... | @@ -163,7 +167,16 @@ if (empty($fields_names['nom'])) $fields_names['nom'] = ['nice_name'=>'Nom']; |
163 | 167 | $name_field_label = $infos['name_field_label']; // 'nom' ou 'designation' ou ... |
164 | 168 | |
165 | 169 | //$projet->has('chef_science_id') ? $this->Html->link($projet->chef_science->nom, ['controller' => 'Users', 'action' => 'view', $projet->chef_science_id]) : '' ></td> |
166 | - $linkval = $e->has($contained_entity_name) ? $e->$contained_entity_name->$name_field_label : $fval; | |
170 | + //$linkval = $e->has($contained_entity_name) ? $e->$contained_entity_name->$name_field_label : $fval; | |
171 | + if ($e->has($contained_entity_name)) { | |
172 | + if ( isset($fields_names[$fname]['improved']) ) { | |
173 | + $fk_field = $fields_names[$fname]['improved']; | |
174 | + $linkval = $e->$fk_field; | |
175 | + } | |
176 | + else | |
177 | + $linkval = $e->$contained_entity_name->$name_field_label; | |
178 | + } | |
179 | + else $linkval = $fval; | |
167 | 180 | //echo $this->Html->link($fval, ['controller' => $controller_name, 'action' => 'view', $e->sur_category->id]); |
168 | 181 | echo $this->Html->link($linkval, ['controller' => $controller_name, 'action' => 'view', $fval]); |
169 | 182 | /* | ... | ... |
src/Template/Common/view.ctp
... | ... | @@ -32,6 +32,9 @@ $entity = $entity; |
32 | 32 | //debug($entity); |
33 | 33 | //$parent_entity_infos=$parent_entity_infos; |
34 | 34 | $parent_entities_infos = $parent_entities_infos; |
35 | +//$parent_entities_infos['groupes_thematique_id']['improved'] = 'groupe_thematique_with_resp'; | |
36 | +//$parent_entities_infos['groupes_metier_id']['improved'] = 'groupe_metier_with_resp'; | |
37 | +//debug($parent_entities_infos); | |
35 | 38 | $fields_label = $fields_label; |
36 | 39 | /* |
37 | 40 | $parent_entity_controller_name = $parent_entity_controller_name; |
... | ... | @@ -49,6 +52,7 @@ $entity_name = $entity_name; |
49 | 52 | // Liste des entités à afficher (en tant qu'entité associée) : |
50 | 53 | // En général, par défaut : "Matériels associés" et "Utilisateurs associés" |
51 | 54 | $child_entities_list = $child_entities_list; |
55 | +$excluded = $excluded; | |
52 | 56 | |
53 | 57 | // OPTIONNELS |
54 | 58 | if (isset($sub_controller)) { |
... | ... | @@ -130,13 +134,15 @@ if (isset($sub_controller)) { |
130 | 134 | //debug($fields_label); |
131 | 135 | //debug($parent_entities_infos); |
132 | 136 | foreach ($entity->toArray() as $fname=>$fval) { |
137 | + if (in_array($fname, $excluded)) continue; | |
133 | 138 | if ( $fval!==null && $fname!='id' && $fname!='description' && !is_array($fval) ) { |
134 | 139 | //debug($fname); |
135 | 140 | //debug($fval); |
136 | 141 | $flabel = ucfirst($fields_label[$fname]); |
137 | 142 | $fvalue = $fval; |
138 | 143 | // Si le champ n'est pas une FK (terminant par '_id') => on l'affiche directement |
139 | - if ( strpos($fname,'_id') !== strlen($fname)-3 ) | |
144 | + //if ( strpos($fname,'_id') !== strlen($fname)-3 ) | |
145 | + if ( substr($fname,-3)!='_id' ) | |
140 | 146 | $this->MyHelper->displayTableRowLabelAndValue(__($flabel), h($fvalue)); |
141 | 147 | // Si le champ est une FK => on récupère la valeur du 'contained' |
142 | 148 | else { |
... | ... | @@ -146,7 +152,11 @@ if (isset($sub_controller)) { |
146 | 152 | $fk_contained_name = $parent_entity_infos['fk_contained_name']; |
147 | 153 | //debug($fk_contained_name); |
148 | 154 | //$fvalue = $associated_entity_infos['name']; |
149 | - $fvalue = $entity->$fk_contained_name->nom; | |
155 | + | |
156 | + //$fvalue = $entity->$fk_contained_name->nom; | |
157 | + $fk_field = isset($parent_entity_infos['improved']) ? $parent_entity_infos['improved'] : null; | |
158 | + $fvalue = $fk_field ? $entity->$fk_field : $entity->$fk_contained_name->nom; | |
159 | + | |
150 | 160 | $this->MyHelper->displayTableRowLabelAndValue( |
151 | 161 | __(ucfirst($parent_entity_infos['type_name'])), |
152 | 162 | //$category->has('sur_category') ? $this->Html->link($category->sur_category->nom, [ | ... | ... |
src/Template/Users/view.ctp
1 | - | |
2 | - | |
3 | -<div class="users view"> | |
4 | - <h2>Détail utilisateur</h2> | |
5 | - <table style="margin-bottom: 30px;"> | |
6 | - | |
7 | - <tr> | |
8 | - <th style="width: 250px;"></th> | |
9 | - <th></th> | |
10 | - </tr> | |
11 | - | |
12 | - <?php | |
13 | - if ($role == 'Super Administrateur') { | |
14 | - echo $this->Html->link(__('<i class="icon-pencil"></i> Editer cet utilisateur'), [ | |
15 | - 'action' => 'edit', | |
16 | - $user->id | |
17 | - ], [ | |
18 | - 'style' => 'margin-right: 40px; display: inline-block', | |
19 | - 'escape' => false, | |
20 | - 'onclick' => 'return true;' | |
21 | - ]); | |
22 | - /* | |
23 | - * (EP 3/6/19) | |
24 | - * Voir ma remarque dans la vue edit.ctp | |
25 | - * La table users n'est qu'un CACHE du LDAP ou du fake ldap (pas d'autre alternative). | |
26 | - * On ne doit donc pas pouvoir supprimer un user de cette table, mais seulement depuis le LDAP (ou fake ldap, c'est à dire table fakeldapusers) | |
27 | - */ | |
28 | - echo $this->Form->postLink(__('<i class="icon-trash"></i> Supprimer cet utilisateur'), [ | |
29 | - 'action' => 'delete', | |
30 | - $user->id | |
31 | - ], [ | |
32 | - 'style' => 'display: inline-block;', | |
33 | - 'escape' => false, | |
34 | - 'confirm' => __('Êtes-vous sur de vouloir supprimer ?', $user->nom) | |
35 | - ]); | |
36 | - } | |
37 | - | |
38 | - $displayElement(__('Nom'), h($user->nom)); | |
39 | - $displayElement(__('Login'), h($user->username)); | |
40 | - $displayElement(__('Email'), h($user->email)); | |
41 | - $displayElement(__('Rôle'), h($user->role)); | |
42 | - | |
43 | - // Groupes métier et thématique | |
44 | - foreach (['metier','thematique'] as $ftype) { | |
45 | - //$ftype = 'thematique'; | |
46 | - $fname = 'groupes_'.$ftype; | |
47 | - $fname_sing = 'groupe_'.$ftype; | |
48 | - $fname_isresp = 'is_resp_'.$fname; | |
49 | - $fname_conf = 'nom_'.$fname_sing; | |
50 | - $control = 'Groupes'.ucfirst($ftype).'s'; | |
51 | - if ($user->has($fname)) { | |
52 | - $group_name = $user->$fname->nom; | |
53 | - if ($user->$fname_isresp) $group_name .= ' (responsable)'; | |
54 | - $displayElement(__($configuration->$fname_conf), $this->Html->link($group_name, [ | |
55 | - 'controller' => $control, | |
56 | - 'action' => 'view', | |
57 | - $user->$fname->id | |
58 | - ])); | |
59 | - } | |
60 | - } | |
61 | - /* | |
62 | - if ($user->has('groupes_metier')) { | |
63 | - $groupe_metier = $user->groupes_metier->nom; | |
64 | - if ($user->is_resp_groupe_metier) $groupe_metier .= ' (responsable)'; | |
65 | - $displayElement(__($configuration->nom_groupe_metier), $this->Html->link($groupe_metier, [ | |
66 | - 'controller' => 'GroupesMetiers', | |
67 | - 'action' => 'view', | |
68 | - $user->groupes_metier->id | |
69 | - ])); | |
70 | - } | |
71 | - $displayElement(__($configuration->nom_groupe_metier), $user->has('groupes_metier') ? $this->Html->link($user->groupes_metier->nom, [ | |
72 | - 'controller' => 'GroupesMetiers', | |
73 | - 'action' => 'view', | |
74 | - $user->groupes_metier->id | |
75 | - ]) : ''); | |
76 | - $displayElement(__('Responsable groupe'), h($user->is_resp_groupe_metier)); | |
77 | - */ | |
78 | - | |
79 | - if ( $user->has('sur_categorie_id') ) $displayElement(__('Domaine'), | |
80 | - $this->Html->link($user->sur_category->nom, [ | |
81 | - 'controller' => 'SurCategories', | |
82 | - 'action' => 'view', | |
83 | - $user->sur_category->id | |
84 | - ])); | |
85 | - | |
86 | - ?> | |
87 | - | |
88 | - </table> | |
89 | -</div> | |
90 | - | |
91 | -<!-- | |
92 | -<div class="actions"> | |
93 | - <php echo $this->element('menu') ?> | |
94 | - <php | |
95 | - | |
96 | -echo $this->element('menu_view', [ | |
97 | - 'pluralHumanName' => 'Utilisateurs', | |
98 | - 'singularHumanName' => 'Utilisateur', | |
99 | - 'lien' => $user->id | |
100 | -])?> | |
101 | - </div> | |
102 | ---> | |
103 | 1 | \ No newline at end of file |
2 | +<?php | |
3 | +$this->extend('/Common/view'); | |
104 | 4 | \ No newline at end of file | ... | ... |