Commit c6900c634c789a97025d63e2a036346e7b9086a2

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

refactorisation de la vue 'view' pour toutes les 'autres' entités

=> dans AppController:view_generic()
@@ -119,6 +119,10 @@ Outre ces changements, voici d'autres changements importants : @@ -119,6 +119,10 @@ Outre ces changements, voici d'autres changements importants :
119 119
120 ======= CHANGES ======= 120 ======= CHANGES =======
121 121
  122 +refactorisation de la vue 'view' pour toutes les 'autres' entités
  123 +
  124 +=> dans AppController:view_generic()
  125 +
122 ------- 126 -------
123 05/10/2020 v4.104.5-3.7.9 (EP) 127 05/10/2020 v4.104.5-3.7.9 (EP)
124 - (b) bugfix UPDATE script => les requetes sql n'étaient tout simplement PAS exécutées !!! 128 - (b) bugfix UPDATE script => les requetes sql n'étaient tout simplement PAS exécutées !!!
src/Controller/AppController.php
@@ -32,6 +32,7 @@ use Cake\Log\Log; @@ -32,6 +32,7 @@ use Cake\Log\Log;
32 use Cake\Http\Exception\NotImplementedException; 32 use Cake\Http\Exception\NotImplementedException;
33 use Cake\Controller\Component\AuthComponent; 33 use Cake\Controller\Component\AuthComponent;
34 use Cake\ORM\Entity; 34 use Cake\ORM\Entity;
  35 +use Cake\Utility\Inflector;
35 36
36 37
37 38
@@ -68,8 +69,14 @@ class AppController extends Controller @@ -68,8 +69,14 @@ class AppController extends Controller
68 69
69 // - ATTRIBUTS VARIABLES 70 // - ATTRIBUTS VARIABLES
70 71
71 - // Par défaut, genre masculin  
72 - protected $is_masculin = true; 72 + // Genre
  73 + // Par défaut : masculin
  74 + public $is_masculin = true;
  75 + /*
  76 + public function isMasculin() {
  77 + return isset($this->is_masculin) ? $this->is_masculin ; true;
  78 + }
  79 + */
73 80
74 // (EP) Seulement pour les tests 81 // (EP) Seulement pour les tests
75 // Permet à un test de forcer (si true) le re-chargement d'une entité (car modifiée en BD) 82 // Permet à un test de forcer (si true) le re-chargement d'une entité (car modifiée en BD)
@@ -404,7 +411,6 @@ class AppController extends Controller @@ -404,7 +411,6 @@ class AppController extends Controller
404 } 411 }
405 412
406 413
407 -  
408 protected function is_vowel($char) { return in_array(strtolower($char), ['a','e','i','o','u','y']); } 414 protected function is_vowel($char) { return in_array(strtolower($char), ['a','e','i','o','u','y']); }
409 415
410 // $form=1 => 'le', 'la', ou "l'" 416 // $form=1 => 'le', 'la', ou "l'"
@@ -470,12 +476,39 @@ class AppController extends Controller @@ -470,12 +476,39 @@ class AppController extends Controller
470 * - User => 'utilisateur' 476 * - User => 'utilisateur'
471 * ... 477 * ...
472 */ 478 */
473 - public function getNiceTypeName() { 479 + //public static function getNiceTypeName() {
  480 + public function getTypeNameSingular() {
474 //return strtolower($this->name); 481 //return strtolower($this->name);
475 - return strtolower($this->getName()); 482 + //return __CLASS__;
  483 + //return strtolower( substr($this->getName(),0,-1) );
  484 + return substr($this->getTypeNamePlural(),0,-1);
476 } 485 }
477 //@deprecated 486 //@deprecated
478 - public function getNiceName() { return $this->getNiceTypeName(); } 487 + public function getNiceName() { return $this->getTypeNameSingular(); }
  488 +
  489 + // Nom pluriel affichable pour cette entité
  490 + // ex: 'suivis', 'matériels', 'catégories', ...
  491 + public function getTypeNamePlural() {
  492 + //return strtolower($this->name);
  493 + //return __CLASS__;
  494 + return strtolower( $this->getName() );
  495 + }
  496 +
  497 + // ex: 'sur_categorie_id'
  498 + public function getFkName() {
  499 + // ex: SurCategories => sur_categories
  500 + //debug($this->getName());
  501 + //debug($this->name);
  502 + //$fkname = Inflector::tableize($this->getName());
  503 + //$fkname = Inflector::humanize($this->getName());
  504 + //$fkname = Inflector::camelize($this->getName());
  505 + $fkname = Inflector::underscore($this->getName());
  506 + //debug($fkname);
  507 + //exit;
  508 + // ex: sur_categorie
  509 + $fkname = substr($fkname,0,-1);
  510 + return $fkname.'_id';
  511 + }
479 512
480 513
481 514
@@ -2087,8 +2120,126 @@ class AppController extends Controller @@ -2087,8 +2120,126 @@ class AppController extends Controller
2087 } // beforeFilter() 2120 } // beforeFilter()
2088 2121
2089 2122
  2123 + public function view_generic($id, $associated_entity_types) {
  2124 +
  2125 + // ex: SurCategories
  2126 + $controller_name = $this->getName();
  2127 + /*
  2128 + $entity = $this->SurCategories->get($id, [
  2129 + 'contain' => []
  2130 + ]);
  2131 + */
  2132 + $entity = $this->$controller_name->get($id, [
  2133 + 'contain' => []
  2134 + ]);
  2135 + $entities_list = [];
  2136 + // ex: 'sur_categorie_id'
  2137 + $fk_name = $this->getFkName();
  2138 + //debug($fk_name);exit;
  2139 + //debug($fk_name);
  2140 + //$fk_name = 'sur_categorie_id';
  2141 + /*
  2142 + $categories = TableRegistry::get('Categories')->find()->where([
  2143 + 'sur_categorie_id =' => $id
  2144 + ]);
  2145 + $materiels = TableRegistry::get('Materiels')->find('all')->where([
  2146 + 'sur_categorie_id =' => $id
  2147 + ]);
  2148 + */
  2149 + foreach ($associated_entity_types as $entity_type) {
  2150 + $entities_list[$entity_type] = [];
  2151 + // shortcut
  2152 + $et = &$entities_list[$entity_type];
  2153 + $et['controller_name'] = $entity_type;
  2154 + // ex: 'App\Controller\CategoriesController'
  2155 + $c = 'App\\Controller\\'.$entity_type.'Controller';
  2156 + // instance du controleur
  2157 + $c = new $c();
  2158 + // ex: 'catégorie'
  2159 + $et['entity_type_name_singular'] = $c->getTypeNameSingular();
  2160 + // ex: 'catégories'
  2161 + $et['entity_title'] = $c->getTypeNamePlural();
  2162 + $et['is_masculin'] = $c->is_masculin;
  2163 + $et['name_field_label'] = $c->getNameFieldLabel();
  2164 + //$et['entities'] = $this->SurCategories->$entity_type->find()->where([
  2165 + //$et['entities'] = $this->$controller_name->$entity_type->find()->where([
  2166 + //$table = $this->$controller_name;
  2167 + //$table = $this->getTableLocator()->get($controller_name);
  2168 + //$table = $this->getTableLocator()->get($controller_name);
  2169 + /*
  2170 + $et['entities'] = $table->$entity_type->find()->where([
  2171 + "$fk_name =" => $id
  2172 + ]);
  2173 + */
  2174 + $table = TableRegistry::getTableLocator()->get($entity_type);
  2175 + //$table = TableRegistry::getTableLocator()->get('SurCategories');
  2176 + //debug($table); exit;
  2177 + $et['entities'] = $table->find()->where([
  2178 + "$fk_name =" => $id
  2179 + ]);
  2180 + }
  2181 + //debug($entities_list); exit;
  2182 +
  2183 + //$controller_name = $this->SurCategories->get($id, [
  2184 +
  2185 + /*
  2186 + $categories = [
  2187 + 'controller_name' => 'Categories',
  2188 + 'entity_type_name' => 'catégorie',
  2189 + 'title' => 'Catégories',
  2190 + //'id_name' => 'categs',
  2191 + 'is_masculine' => false,
  2192 + 'name_field_name' => 'nom',
  2193 + 'entities' => $categories,
  2194 + ];
  2195 + $materiels = [
  2196 + 'controller_name' => 'Materiels',
  2197 + 'entity_type_name' => 'matériel',
  2198 + 'title' => 'Matériels',
  2199 + //'id_name' => 'categs',
  2200 + 'is_masculine' => true,
  2201 + 'name_field_name' => 'designation',
  2202 + 'entities' => $materiels,
  2203 + ];
  2204 + */
  2205 +
  2206 + // On passe ces variables à la vue
  2207 + //$entities_list = [$categories, $materiels];
  2208 + //$entity_article = 'le ';
  2209 + $entity_article = $this->getMyArticle();
  2210 + //$entity_type_name = 'domaine';
  2211 + $entity_type_name_singular = $this->getTypeNameSingular();
  2212 + //$entity_name = $entity->getMyName();
  2213 + //$entity_name = $entity->nom;
  2214 + $entity_name_field_label = $this->getNameFieldLabel();
  2215 + $entity_name = $entity->$entity_name_field_label;
  2216 + $this->set(compact(
  2217 +
  2218 + // Infos sur l'entité courante
  2219 + 'entity_article',
  2220 + 'entity_type_name_singular',
  2221 + 'entity_name',
  2222 + 'entity',
  2223 +
  2224 + // Infos sur les entités associées
  2225 + 'entities_list'
  2226 + ));
  2227 + //debug($this->viewVars);exit;
  2228 + //$this->set('surCategory', $surCategory);
  2229 + //$this->set('categories', $categories);
  2230 + //$this->set('materiels', $materiels);
  2231 +
  2232 + // (EP) Automatique depuis 3.1 (et inutile pour nous)
  2233 + /*
  2234 + // Spécifie quelles variables de vues JsonView doit sérialiser
  2235 + $this->set('_serialize', [
  2236 + 'surCategory'
  2237 + ]);
  2238 + */
  2239 + } // view()
  2240 +
2090 /** 2241 /**
2091 - * Add or Edit method (do either add() or edit()) 2242 + * Add or Edit generic method (do either add() or edit())
2092 * => Factorisation de add() et edit() 2243 * => Factorisation de add() et edit()
2093 * (voir aussi https://book.cakephp.org/3.0/en/orm.html) 2244 * (voir aussi https://book.cakephp.org/3.0/en/orm.html)
2094 * 2245 *
@@ -3076,7 +3227,9 @@ class AppController extends Controller @@ -3076,7 +3227,9 @@ class AppController extends Controller
3076 //debug($control); exit; 3227 //debug($control); exit;
3077 3228
3078 // Entité (Entity) 3229 // Entité (Entity)
3079 - $entity_nice_name = $this->getNiceName(); // matériel, domaine, utilisateur... 3230 + //$entity_nice_name = $this->getNiceName(); // matériel, domaine, utilisateur...
  3231 + $entity_nice_type_name = $this->getTypeNameSingular(); // matériel, domaine, utilisateur...
  3232 +
3080 // Si pas d'entité définie => return 3233 // Si pas d'entité définie => return
3081 ////$entity = $this->e; 3234 ////$entity = $this->e;
3082 $entity = $this->getCurrentEntity(); 3235 $entity = $this->getCurrentEntity();
@@ -3127,7 +3280,7 @@ class AppController extends Controller @@ -3127,7 +3280,7 @@ class AppController extends Controller
3127 $action_verb = $action_noun_and_verb[1]; 3280 $action_verb = $action_noun_and_verb[1];
3128 */ 3281 */
3129 //$entity_type = $this->getEntityTypeName(); 3282 //$entity_type = $this->getEntityTypeName();
3130 - $entity_type = strtolower( substr($control,0,-1) ); 3283 + //$entity_type = strtolower( substr($control,0,-1) );
3131 $article_le = $action_attrs['verb_article'] ? $action_attrs['verb_article'] : $this->getMyArticle(1); 3284 $article_le = $action_attrs['verb_article'] ? $action_attrs['verb_article'] : $this->getMyArticle(1);
3132 $article_dun = $action_attrs['noun_article'] ? $action_attrs['noun_article'] : $this->getMyArticle(3); 3285 $article_dun = $action_attrs['noun_article'] ? $action_attrs['noun_article'] : $this->getMyArticle(3);
3133 $id = $entity ? $entity->id : null; 3286 $id = $entity ? $entity->id : null;
@@ -3185,7 +3338,7 @@ class AppController extends Controller @@ -3185,7 +3338,7 @@ class AppController extends Controller
3185 //$msglog = "$entity_type {$action_attrs['past_verb']} = '$entity' (id=$id)"; 3338 //$msglog = "$entity_type {$action_attrs['past_verb']} = '$entity' (id=$id)";
3186 //$msglog = "$entity_type {$action_attrs['past_verb']} = '$entity_name' (id=$id)"; 3339 //$msglog = "$entity_type {$action_attrs['past_verb']} = '$entity_name' (id=$id)";
3187 //$msglog = ucfirst($entity_type).' '.$action_attrs['past_verb_conj']; 3340 //$msglog = ucfirst($entity_type).' '.$action_attrs['past_verb_conj'];
3188 - $msglog = ucfirst($entity_nice_name).' '.$action_attrs['past_verb_conj']; 3341 + $msglog = ucfirst($entity_nice_type_name).' '.$action_attrs['past_verb_conj'];
3189 if ($entity) $msglog .= " = '$entity_name' (id=$id)"; 3342 if ($entity) $msglog .= " = '$entity_name' (id=$id)";
3190 // Cas particulier d'un Document : on affiche son type 3343 // Cas particulier d'un Document : on affiche son type
3191 if ($entity instanceof Document) $msglog .= " (type={$entity->type_doc})"; 3344 if ($entity instanceof Document) $msglog .= " (type={$entity->type_doc})";
@@ -3228,7 +3381,7 @@ class AppController extends Controller @@ -3228,7 +3381,7 @@ class AppController extends Controller
3228 // (1) Sujet : 3381 // (1) Sujet :
3229 3382
3230 //$subject = $subject ? $subject : "{$action_attrs['noun']} $article_dun$entity_type"; 3383 //$subject = $subject ? $subject : "{$action_attrs['noun']} $article_dun$entity_type";
3231 - $subject = $subject ? $subject : "{$action_attrs['noun']} $article_dun$entity_nice_name"; 3384 + $subject = $subject ? $subject : "{$action_attrs['noun']} $article_dun$entity_nice_type_name";
3232 $DEBUG && debug($subject); 3385 $DEBUG && debug($subject);
3233 3386
3234 // (2) Message (body) : 3387 // (2) Message (body) :
@@ -3244,7 +3397,7 @@ class AppController extends Controller @@ -3244,7 +3397,7 @@ class AppController extends Controller
3244 $msg_mail .= "$user a ".$action_attrs['past_verb']; 3397 $msg_mail .= "$user a ".$action_attrs['past_verb'];
3245 if ($entity) { 3398 if ($entity) {
3246 //$msg_mail .= " $article_le$entity_type '$entity_name'"; 3399 //$msg_mail .= " $article_le$entity_type '$entity_name'";
3247 - $msg_mail .= " $article_le$entity_nice_name '$entity_name'"; 3400 + $msg_mail .= " $article_le$entity_nice_type_name '$entity_name'";
3248 // Cas particulier d'un Document : on affiche son type 3401 // Cas particulier d'un Document : on affiche son type
3249 if ($entity instanceof Document) $msg_mail .= " (type={$entity->type_doc})"; 3402 if ($entity instanceof Document) $msg_mail .= " (type={$entity->type_doc})";
3250 // (EP) Ajout de l'url (ou id) du materiel 3403 // (EP) Ajout de l'url (ou id) du materiel
src/Controller/CategoriesController.php
@@ -12,6 +12,13 @@ use Cake\ORM\TableRegistry; @@ -12,6 +12,13 @@ use Cake\ORM\TableRegistry;
12 class CategoriesController extends AppController 12 class CategoriesController extends AppController
13 { 13 {
14 14
  15 + // Genre
  16 + public $is_masculin = false;
  17 +
  18 + // Nom pluriel affichable pour cette entité
  19 + //@Override
  20 + public function getTypeNamePlural() { return 'catégories'; }
  21 +
15 public function getArticle() 22 public function getArticle()
16 { 23 {
17 return "La"; 24 return "La";
@@ -110,6 +117,14 @@ class CategoriesController extends AppController @@ -110,6 +117,14 @@ class CategoriesController extends AppController
110 */ 117 */
111 public function view($id = null) 118 public function view($id = null)
112 { 119 {
  120 + $associated_entity_types = [
  121 + 'SousCategories',
  122 + 'Materiels'
  123 + ];
  124 + //return parent::view($id, $associated_entity_types);
  125 + return $this->view_generic($id, $associated_entity_types);
  126 +
  127 + /*
113 $category = $this->Categories->get($id, [ 128 $category = $this->Categories->get($id, [
114 'contain' => [ 129 'contain' => [
115 'SurCategories' 130 'SurCategories'
@@ -129,6 +144,7 @@ class CategoriesController extends AppController @@ -129,6 +144,7 @@ class CategoriesController extends AppController
129 $this->set('_serialize', [ 144 $this->set('_serialize', [
130 'category' 145 'category'
131 ]); 146 ]);
  147 + */
132 } 148 }
133 149
134 /** 150 /**
src/Controller/MaterielsController.php
@@ -38,9 +38,14 @@ class MaterielsController extends AppController { @@ -38,9 +38,14 @@ class MaterielsController extends AppController {
38 38
39 // - ATTRIBUTS VARIABLES 39 // - ATTRIBUTS VARIABLES
40 40
41 - // Nom affichable pour cette entité 41 + /*
  42 + // Nom singulier affichable pour cette entité
42 // @Override 43 // @Override
43 - public function getNiceName() { return "matériel"; } 44 + public function getTypeNameSingular() { return "matériel"; }
  45 + */
  46 + // Nom pluriel affichable pour cette entité
  47 + //@Override
  48 + public function getTypeNamePlural() { return 'matériels'; }
44 49
45 50
46 private $NOTARCHIVED = [ 51 private $NOTARCHIVED = [
src/Controller/SurCategoriesController.php
@@ -11,17 +11,38 @@ use Cake\ORM\TableRegistry; @@ -11,17 +11,38 @@ use Cake\ORM\TableRegistry;
11 */ 11 */
12 class SurCategoriesController extends AppController 12 class SurCategoriesController extends AppController
13 { 13 {
  14 +
  15 + /*
  16 + // Nom singulier affichable pour cette entité
  17 + // @Override parent
  18 + public function getTypeNameSingular() {
  19 + //return strtolower($this->name);
  20 + //return strtolower($this->getName());
  21 + return 'domaine';
  22 + }
  23 + */
  24 + // Surcharge pour corriger bug cakephp qui renvoie 'Surcategories' au lieu de 'SurCategories' !!
  25 + //@Override
  26 + public function getName() {
  27 + //return strtolower($this->name);
  28 + //return strtolower($this->getName());
  29 + return 'SurCategories';
  30 + }
  31 + // Nom pluriel affichable pour cette entité
  32 + //@Override
  33 + public function getTypeNamePlural() {
  34 + //return strtolower($this->name);
  35 + //return strtolower($this->getName());
  36 + return 'domaines';
  37 + }
  38 +
14 39
15 // Genre 40 // Genre
16 // @Override 41 // @Override
17 - protected $is_masculin = false; 42 + //public $is_masculin = false;
18 // @deprected 43 // @deprected
19 public function getArticle() { return "La "; } 44 public function getArticle() { return "La "; }
20 45
21 - // Nom affichable pour cette entité  
22 - // @Override  
23 - public function getNiceName() { return "domaine"; }  
24 -  
25 /* 46 /*
26 static public function getActions() { 47 static public function getActions() {
27 // Toutes les actions CRUD 48 // Toutes les actions CRUD
@@ -134,6 +155,7 @@ class SurCategoriesController extends AppController @@ -134,6 +155,7 @@ class SurCategoriesController extends AppController
134 */ 155 */
135 } 156 }
136 157
  158 +
137 /** 159 /**
138 * View method 160 * View method
139 * 161 *
@@ -144,24 +166,15 @@ class SurCategoriesController extends AppController @@ -144,24 +166,15 @@ class SurCategoriesController extends AppController
144 */ 166 */
145 public function view($id = null) 167 public function view($id = null)
146 { 168 {
147 - $surCategory = $this->SurCategories->get($id, [  
148 - 'contain' => []  
149 - ]);  
150 - $categories = TableRegistry::get('Categories')->find()->where([  
151 - 'sur_categorie_id =' => $id  
152 - ]);  
153 - $this->set('categories', $categories);  
154 -  
155 - $materiels = TableRegistry::get('Materiels')->find('all')->where([  
156 - 'sur_categorie_id =' => $id  
157 - ]);  
158 - $this->set('materiels', $materiels);  
159 -  
160 - $this->set('surCategory', $surCategory);  
161 - $this->set('_serialize', [  
162 - 'surCategory'  
163 - ]); 169 + $associated_entity_types = [
  170 + 'Categories',
  171 + 'Users',
  172 + 'Materiels'
  173 + ];
  174 + //return parent::view($id, $associated_entity_types);
  175 + return $this->view_generic($id, $associated_entity_types);
164 } 176 }
  177 +
165 178
166 /** 179 /**
167 * Add method 180 * Add method
src/Controller/UsersController.php
@@ -14,9 +14,19 @@ class UsersController extends AppController @@ -14,9 +14,19 @@ class UsersController extends AppController
14 { 14 {
15 15
16 16
  17 + /*
17 // Nom affichable pour cette entité 18 // Nom affichable pour cette entité
18 // @Override 19 // @Override
19 public function getNiceName() { return "utilisateur"; } 20 public function getNiceName() { return "utilisateur"; }
  21 + */
  22 + // Nom pluriel affichable pour cette entité
  23 + //@Override
  24 + public function getTypeNamePlural() {
  25 + //return strtolower($this->name);
  26 + //return strtolower($this->getName());
  27 + return 'utilisateurs';
  28 + }
  29 +
20 30
21 // "l'" utilisateur (et non pas "le utilisateur") 31 // "l'" utilisateur (et non pas "le utilisateur")
22 // @deprecated 32 // @deprecated
src/Model/Table/SurCategoriesTable.php
@@ -25,12 +25,27 @@ class SurCategoriesTable extends AppTable @@ -25,12 +25,27 @@ class SurCategoriesTable extends AppTable
25 parent::initialize($config); 25 parent::initialize($config);
26 26
27 $this->setTable('sur_categories'); 27 $this->setTable('sur_categories');
28 - $this->setDisplayField('id'); 28 + //$this->setDisplayField('id');
  29 + $this->setDisplayField('nom');
29 $this->setPrimaryKey('id'); 30 $this->setPrimaryKey('id');
30 - 31 +
  32 + /* C'EST FAUX
31 $this->hasMany('Users', [ 33 $this->hasMany('Users', [
32 'foreignKey' => 'groupes_thematique_id' 34 'foreignKey' => 'groupes_thematique_id'
33 ]); 35 ]);
  36 + */
  37 + $this->hasMany('Users', [
  38 + 'foreignKey' => 'sur_categorie_id'
  39 + ]);
  40 +
  41 + $this->hasMany('Categories')
  42 + ->setForeignKey('sur_categorie_id')
  43 + ->setDependent(true); // si le domaine est supprimé, les catégories liées le seront aussi
  44 +
  45 + $this->hasMany('Materiels')
  46 + ->setForeignKey('sur_categorie_id')
  47 + ->setDependent(false); // si le domaine est supprimé, les matos liés eux NE LE SERONT PAS !!
  48 +
34 } 49 }
35 50
36 /** 51 /**
src/Template/Categories/view.ctp
1 -  
2 -<div class="categories view">  
3 - <h2>Détail catégorie</h2>  
4 - <table style="margin-bottom: 30px;">  
5 -  
6 - <tr>  
7 - <th style="width: 250px;"></th>  
8 - <th></th>  
9 - </tr>  
10 -  
11 - <?php  
12 - if (in_array($role, [  
13 - 'Administration Plus',  
14 - 'Super Administrateur'  
15 - ])) {  
16 - echo $this->Html->link(__('<i class="icon-pencil"></i> Editer cette catégorie'), [  
17 - 'action' => 'edit',  
18 - $category->id  
19 - ], [  
20 - 'style' => 'margin-right: 40px; display: inline-block',  
21 - 'escape' => false,  
22 - 'onclick' => 'return true;'  
23 - ]);  
24 - }  
25 -  
26 - if (in_array($role, [  
27 - 'Super Administrateur'  
28 - ])) {  
29 - echo $this->Form->postLink(__('<i class="icon-trash"></i> Supprimer cette catégorie'), [  
30 - 'action' => 'delete',  
31 - $category->id  
32 - ], [  
33 - 'style' => 'display: inline-block',  
34 - 'escape' => false,  
35 - 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $category->id)  
36 - ]);  
37 - }  
38 -  
39 - $displayElement(__('Nom'), h($category->nom));  
40 - $displayElement(__('Domaine'), $category->has('sur_category') ? $this->Html->link($category->sur_category->nom, [  
41 - 'controller' => 'SurCategories',  
42 - 'action' => 'view',  
43 - $category->sur_category->id  
44 - ]) : '');  
45 -  
46 - ?>  
47 -  
48 - </table>  
49 -  
50 -  
51 - <h3 id="t_souscategs" class='toggle' style="cursor: pointer;">  
52 - <i class="icon-chevron-down" style="font-size: 14px;" id="i_souscategs"></i>  
53 - <span style="text-decoration: underline;">Sous-Catégories associées (<?= $sousCategories->count()?>)</span>  
54 - </h3>  
55 - <div id="souscategs" style="margin-bottom: 20px;">  
56 -  
57 - <?php if (!empty($sousCategories)) { ?>  
58 - <table>  
59 - <tr>  
60 - <th><?= __('Nom') ?></th>  
61 - <th style="width: 50px;"><?= __('Détail') ?></th>  
62 - </tr>  
63 - <?php foreach ($sousCategories as $sous_category): ?>  
64 - <tr>  
65 -  
66 - <td><?= $this->Html->link(h($sous_category->nom), ['controller' => 'SousCategories', 'action' => 'view', h($sous_category->id)]); ?></td>  
67 -  
68 - <td class="actions">  
69 - <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'SousCategories', 'action' => 'view', $sous_category->id], ['escape' => false, 'style' => 'margin:0']) ?>  
70 - </td>  
71 - </tr>  
72 - <?php endforeach; ?>  
73 - </table>  
74 - <?php }else { echo 'Aucune sous-catégorie lié à cette catégorie.'; } ?>  
75 - </div>  
76 -  
77 -  
78 - <h3 id="t_matos" class='toggle' style="cursor: pointer;">  
79 - <i class="icon-chevron-down" style="font-size: 14px;" id="i_matos"></i>  
80 - <span style="text-decoration: underline;">Materiels associés (<?= $materiels->count()?>)</span>  
81 - </h3>  
82 - <div id="matos" style="margin-bottom: 20px;">  
83 -  
84 - <?php if (!empty($materiels)) { ?>  
85 - <table>  
86 - <tr>  
87 - <th><?= __('Désignation') ?></th>  
88 - <th style="width: 50px;"><?= __('Détail') ?></th>  
89 - </tr>  
90 - <?php foreach ($materiels as $materiel): ?>  
91 - <tr>  
92 -  
93 - <!-- (EP 20200310) bugfix: si on utilise h(), les accents sont mal affichés...  
94 - <td><?= $this->Html->link(h($materiel->designation), ['controller' => 'Materiels', 'action' => 'view', h($materiel->id)]); ?></td>  
95 - -->  
96 - <td><?= $this->Html->link($materiel->designation, ['controller' => 'Materiels', 'action' => 'view', h($materiel->id)]); ?></td>  
97 -  
98 - <td class="actions">  
99 - <?= $this->Html->link(__('<i class="icon-search"></i>'), ['controller' => 'Materiels', 'action' => 'view', $materiel->id], ['escape' => false, 'style' => 'margin:0']) ?>  
100 - </td>  
101 - </tr>  
102 - <?php endforeach; ?>  
103 - </table>  
104 - <?php }else { echo 'Aucun matériel lié à cette catégorie.'; } ?>  
105 - </div>  
106 -  
107 -  
108 -</div>  
109 -  
110 -<!--  
111 -<div class="actions">  
112 - <php echo $this->element('menu') ?>  
113 - <php  
114 -  
115 -echo $this->element('menu_view', [  
116 - 'pluralHumanName' => 'Catégories',  
117 - 'singularHumanName' => 'Catégorie',  
118 - 'lien' => $category->id  
119 -])?>  
120 - </div>  
121 --->  
122 \ No newline at end of file 1 \ No newline at end of file
  2 +<!-- src/Template/Categories/view.ctp -->
  3 +
  4 +<?php
  5 +/*
  6 +Le fichier de vue étendu ici est utilisé comme une vue parente.
  7 +Il s’attend à ce que la vue l’étendant (celle-ci par exemple)
  8 +définisse des blocks sidebar et title.
  9 +Le block content est un block spécial que CakePHP crée.
  10 +Il contiendra tous les contenus non capturés de la vue étendue.
  11 +*/
  12 +$this->extend('/Common/view');
  13 +
  14 +/*
  15 +//Vous pouvez récupérer la liste de tous blocks existants en utilisant la méthode blocks():
  16 +$list = $this->blocks();
  17 +
  18 +(En admettant que notre fichier de vue a une variable $post avec les données sur notre post)
  19 +
  20 +$this->assign('title', $post->title);
  21 +$this->start('sidebar');
  22 +?>
  23 + <li>
  24 + <?php
  25 + echo $this->Html->link('edit', [
  26 + 'action' => 'edit',
  27 + $post->id
  28 + ]); ?>
  29 + </li>
  30 +<?php
  31 +$this->end();
  32 +?>
  33 +
  34 +// The remaining content will be available as the 'content' block
  35 +// In the parent view.
  36 +<?= h($post->body) ?>
  37 +*/
src/Template/Common/view.ctp
1 <?php 1 <?php
  2 +$DEBUG=false;
  3 +//$DEBUG=true;
  4 +
2 // Variables passées par le contrôleur 5 // Variables passées par le contrôleur
3 6
4 -// fonctions  
5 -//$displayElement = $displayElement;  
6 -$categories = $categories;  
7 -$materiels = $materiels; 7 +$role = $role;
8 8
9 -$entity = $surCategory;  
10 $entity = $entity; 9 $entity = $entity;
  10 +//$categories = $categories;
  11 +//$materiels = $materiels;
  12 +$entity_article = $entity_article;
  13 +$entity_type_name_singular = $entity_type_name_singular;
  14 +$entity_name = $entity_name;
  15 +
  16 +// Liste des entités à afficher (en tant qu'entité associée) :
  17 +// En général, par défaut : "Matériels associés" et "Utilisateurs associés"
  18 +$entities_list = $entities_list;
  19 +
  20 +// Fonctions
  21 +//$displayElement = $displayElement;
  22 +
11 //debug($entity); 23 //debug($entity);
12 //debug($entity->getSource()); 24 //debug($entity->getSource());
13 -  
14 -$DEBUG=false;  
15 -//$DEBUG=true; 25 +//exit;
16 26
17 if ($DEBUG) { 27 if ($DEBUG) {
18 - $article = 'le ';  
19 - $entity_type_name = 'domaine'; 28 + $entity_article = 'le ';
  29 + $entity_type_name_singular = 'domaine';
20 //$entity_name = $entity->getMyName(); 30 //$entity_name = $entity->getMyName();
21 $entity_name = $entity->nom; 31 $entity_name = $entity->nom;
22 32
@@ -45,15 +55,9 @@ if ($DEBUG) { @@ -45,15 +55,9 @@ if ($DEBUG) {
45 $entities_list = [$categories, $materiels]; 55 $entities_list = [$categories, $materiels];
46 } 56 }
47 57
48 -$entity_name = $entity_name;  
49 -  
50 -  
51 -  
52 -// Liste des entités à afficher (en tant qu'entité associée) :  
53 -// En général, par défaut : "Matériels associés" et "Utilisateurs associés"  
54 -$entities_list = $entities_list;  
55 ?> 58 ?>
56 59
  60 +
57 <!-- 61 <!--
58 <div class="surCategories view"> 62 <div class="surCategories view">
59 --> 63 -->
@@ -62,8 +66,13 @@ $entities_list = $entities_list; @@ -62,8 +66,13 @@ $entities_list = $entities_list;
62 <!-- 66 <!--
63 <h2>Détail domaine</h2> 67 <h2>Détail domaine</h2>
64 --> 68 -->
65 - <h2>Informations sur <?=$article.$entity_type_name." $entity_name"?></h2> 69 +
  70 + <h2>Informations sur <?=$entity_article.$entity_type_name_singular.' "'.$entity_name.'"'?></h2>
66 71
  72 + <?= $this->Html->link("Voir toutes les entités (liste)", ['action'=>'index']) ?>
  73 + <br />
  74 + <br />
  75 +
67 <table style="margin-bottom: 30px;"> 76 <table style="margin-bottom: 30px;">
68 77
69 <tr> 78 <tr>
@@ -121,11 +130,11 @@ $entities_list = $entities_list; @@ -121,11 +130,11 @@ $entities_list = $entities_list;
121 // function displaySectionShowHide($controller_name, $entity_type_name, $title, $id_name, $is_masculine, $name_field_name, $entities) { 130 // function displaySectionShowHide($controller_name, $entity_type_name, $title, $id_name, $is_masculine, $name_field_name, $entities) {
122 $this->MyHelper->displayAssociatedEntitiesAsSectionShowHide( 131 $this->MyHelper->displayAssociatedEntitiesAsSectionShowHide(
123 $es['controller_name'], 132 $es['controller_name'],
124 - $es['entity_type_name'],  
125 - $es['title'], 133 + $es['entity_type_name_singular'],
  134 + $es['entity_title'],
126 //$es['id_name'], 135 //$es['id_name'],
127 - $es['is_masculine'],  
128 - $es['name_field_name'], 136 + $es['is_masculin'],
  137 + $es['name_field_label'],
129 $es['entities'] 138 $es['entities']
130 ); 139 );
131 //displaySectionShowHide($this->Html, false, 'Aucune catégorie liée', 'categs', 'Catégories', $categories, 'nom', 'Categories', 'catégorie'); 140 //displaySectionShowHide($this->Html, false, 'Aucune catégorie liée', 'categs', 'Catégories', $categories, 'nom', 'Categories', 'catégorie');
src/Template/Materiels/view.ctp
@@ -582,12 +582,12 @@ else if (h($entity-&gt;materiel_technique) == 1) @@ -582,12 +582,12 @@ else if (h($entity-&gt;materiel_technique) == 1)
582 //$displayElement(__('Nom du materiel'),$entity->designation); 582 //$displayElement(__('Nom du materiel'),$entity->designation);
583 //$displayElement(__('Description'),$entity->description); 583 //$displayElement(__('Description'),$entity->description);
584 //$displayElement(__('Materiel inventorié'), $type); 584 //$displayElement(__('Materiel inventorié'), $type);
585 -$this->MyButton->displayElement('Nom du materiel',$entity->designation); 585 +$this->MyHelper->displayElement('Nom du materiel',$entity->designation);
586 586
587 // (EP202009) Deplacé tout en bas du tableau et affiché avec Text->autoParagraph() 587 // (EP202009) Deplacé tout en bas du tableau et affiché avec Text->autoParagraph()
588 //$this->MyButton->displayElement('Description',$entity->description); 588 //$this->MyButton->displayElement('Description',$entity->description);
589 589
590 -$this->MyButton->displayElement('Materiel inventorié',$type); 590 +$this->MyHelper->displayElement('Materiel inventorié',$type);
591 $displayElement(__('Domaine'), $entity->has('sur_category') ? h($entity->sur_category->nom) : ''); 591 $displayElement(__('Domaine'), $entity->has('sur_category') ? h($entity->sur_category->nom) : '');
592 $displayElement(__('Catégorie'), $entity->has('category') ? h($entity->category->nom) : ''); 592 $displayElement(__('Catégorie'), $entity->has('category') ? h($entity->category->nom) : '');
593 $displayElement(__('Sous-Catégorie'), $entity->has('sous_category') ? h($entity->sous_category->nom) : ''); 593 $displayElement(__('Sous-Catégorie'), $entity->has('sous_category') ? h($entity->sous_category->nom) : '');
src/View/Helper/MyHelperHelper.php
@@ -62,7 +62,7 @@ class MyHelperHelper extends Helper { @@ -62,7 +62,7 @@ class MyHelperHelper extends Helper {
62 $id_name = $controller_name; 62 $id_name = $controller_name;
63 $id_h3 = 't_'.$id_name; 63 $id_h3 = 't_'.$id_name;
64 $id_i = 'i_'.$id_name; 64 $id_i = 'i_'.$id_name;
65 - $title = $title.' associé'. ($is_masculine ? 's' : 'es'); 65 + $title = ucfirst($title).' associé'. ($is_masculine ? 's' : 'es');
66 66
67 echo "<h3 id='$id_h3' class='toggle' style='cursor: pointer;'>"; 67 echo "<h3 id='$id_h3' class='toggle' style='cursor: pointer;'>";
68 echo "<i class='icon-chevron-down' style='font-size: 14px;' id='$id_i'></i>"; 68 echo "<i class='icon-chevron-down' style='font-size: 14px;' id='$id_i'></i>";