Commit c6900c634c789a97025d63e2a036346e7b9086a2
1 parent
521ce3e5
Exists in
master
and in
1 other branch
refactorisation de la vue 'view' pour toutes les 'autres' entités
=> dans AppController:view_generic()
Showing
11 changed files
with
324 additions
and
184 deletions
Show diff stats
CHANGES.txt
... | ... | @@ -119,6 +119,10 @@ Outre ces changements, voici d'autres changements importants : |
119 | 119 | |
120 | 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 | 127 | 05/10/2020 v4.104.5-3.7.9 (EP) |
124 | 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 | 32 | use Cake\Http\Exception\NotImplementedException; |
33 | 33 | use Cake\Controller\Component\AuthComponent; |
34 | 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 | 69 | |
69 | 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 | 81 | // (EP) Seulement pour les tests |
75 | 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 | 411 | } |
405 | 412 | |
406 | 413 | |
407 | - | |
408 | 414 | protected function is_vowel($char) { return in_array(strtolower($char), ['a','e','i','o','u','y']); } |
409 | 415 | |
410 | 416 | // $form=1 => 'le', 'la', ou "l'" |
... | ... | @@ -470,12 +476,39 @@ class AppController extends Controller |
470 | 476 | * - User => 'utilisateur' |
471 | 477 | * ... |
472 | 478 | */ |
473 | - public function getNiceTypeName() { | |
479 | + //public static function getNiceTypeName() { | |
480 | + public function getTypeNameSingular() { | |
474 | 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 | 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 | 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 | 2243 | * => Factorisation de add() et edit() |
2093 | 2244 | * (voir aussi https://book.cakephp.org/3.0/en/orm.html) |
2094 | 2245 | * |
... | ... | @@ -3076,7 +3227,9 @@ class AppController extends Controller |
3076 | 3227 | //debug($control); exit; |
3077 | 3228 | |
3078 | 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 | 3233 | // Si pas d'entité définie => return |
3081 | 3234 | ////$entity = $this->e; |
3082 | 3235 | $entity = $this->getCurrentEntity(); |
... | ... | @@ -3127,7 +3280,7 @@ class AppController extends Controller |
3127 | 3280 | $action_verb = $action_noun_and_verb[1]; |
3128 | 3281 | */ |
3129 | 3282 | //$entity_type = $this->getEntityTypeName(); |
3130 | - $entity_type = strtolower( substr($control,0,-1) ); | |
3283 | + //$entity_type = strtolower( substr($control,0,-1) ); | |
3131 | 3284 | $article_le = $action_attrs['verb_article'] ? $action_attrs['verb_article'] : $this->getMyArticle(1); |
3132 | 3285 | $article_dun = $action_attrs['noun_article'] ? $action_attrs['noun_article'] : $this->getMyArticle(3); |
3133 | 3286 | $id = $entity ? $entity->id : null; |
... | ... | @@ -3185,7 +3338,7 @@ class AppController extends Controller |
3185 | 3338 | //$msglog = "$entity_type {$action_attrs['past_verb']} = '$entity' (id=$id)"; |
3186 | 3339 | //$msglog = "$entity_type {$action_attrs['past_verb']} = '$entity_name' (id=$id)"; |
3187 | 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 | 3342 | if ($entity) $msglog .= " = '$entity_name' (id=$id)"; |
3190 | 3343 | // Cas particulier d'un Document : on affiche son type |
3191 | 3344 | if ($entity instanceof Document) $msglog .= " (type={$entity->type_doc})"; |
... | ... | @@ -3228,7 +3381,7 @@ class AppController extends Controller |
3228 | 3381 | // (1) Sujet : |
3229 | 3382 | |
3230 | 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 | 3385 | $DEBUG && debug($subject); |
3233 | 3386 | |
3234 | 3387 | // (2) Message (body) : |
... | ... | @@ -3244,7 +3397,7 @@ class AppController extends Controller |
3244 | 3397 | $msg_mail .= "$user a ".$action_attrs['past_verb']; |
3245 | 3398 | if ($entity) { |
3246 | 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 | 3401 | // Cas particulier d'un Document : on affiche son type |
3249 | 3402 | if ($entity instanceof Document) $msg_mail .= " (type={$entity->type_doc})"; |
3250 | 3403 | // (EP) Ajout de l'url (ou id) du materiel | ... | ... |
src/Controller/CategoriesController.php
... | ... | @@ -12,6 +12,13 @@ use Cake\ORM\TableRegistry; |
12 | 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 | 22 | public function getArticle() |
16 | 23 | { |
17 | 24 | return "La"; |
... | ... | @@ -110,6 +117,14 @@ class CategoriesController extends AppController |
110 | 117 | */ |
111 | 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 | 128 | $category = $this->Categories->get($id, [ |
114 | 129 | 'contain' => [ |
115 | 130 | 'SurCategories' |
... | ... | @@ -129,6 +144,7 @@ class CategoriesController extends AppController |
129 | 144 | $this->set('_serialize', [ |
130 | 145 | 'category' |
131 | 146 | ]); |
147 | + */ | |
132 | 148 | } |
133 | 149 | |
134 | 150 | /** | ... | ... |
src/Controller/MaterielsController.php
... | ... | @@ -38,9 +38,14 @@ class MaterielsController extends AppController { |
38 | 38 | |
39 | 39 | // - ATTRIBUTS VARIABLES |
40 | 40 | |
41 | - // Nom affichable pour cette entité | |
41 | + /* | |
42 | + // Nom singulier affichable pour cette entité | |
42 | 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 | 51 | private $NOTARCHIVED = [ | ... | ... |
src/Controller/SurCategoriesController.php
... | ... | @@ -11,17 +11,38 @@ use Cake\ORM\TableRegistry; |
11 | 11 | */ |
12 | 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 | 40 | // Genre |
16 | 41 | // @Override |
17 | - protected $is_masculin = false; | |
42 | + //public $is_masculin = false; | |
18 | 43 | // @deprected |
19 | 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 | 47 | static public function getActions() { |
27 | 48 | // Toutes les actions CRUD |
... | ... | @@ -134,6 +155,7 @@ class SurCategoriesController extends AppController |
134 | 155 | */ |
135 | 156 | } |
136 | 157 | |
158 | + | |
137 | 159 | /** |
138 | 160 | * View method |
139 | 161 | * |
... | ... | @@ -144,24 +166,15 @@ class SurCategoriesController extends AppController |
144 | 166 | */ |
145 | 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 | 180 | * Add method | ... | ... |
src/Controller/UsersController.php
... | ... | @@ -14,9 +14,19 @@ class UsersController extends AppController |
14 | 14 | { |
15 | 15 | |
16 | 16 | |
17 | + /* | |
17 | 18 | // Nom affichable pour cette entité |
18 | 19 | // @Override |
19 | 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 | 31 | // "l'" utilisateur (et non pas "le utilisateur") |
22 | 32 | // @deprecated | ... | ... |
src/Model/Table/SurCategoriesTable.php
... | ... | @@ -25,12 +25,27 @@ class SurCategoriesTable extends AppTable |
25 | 25 | parent::initialize($config); |
26 | 26 | |
27 | 27 | $this->setTable('sur_categories'); |
28 | - $this->setDisplayField('id'); | |
28 | + //$this->setDisplayField('id'); | |
29 | + $this->setDisplayField('nom'); | |
29 | 30 | $this->setPrimaryKey('id'); |
30 | - | |
31 | + | |
32 | + /* C'EST FAUX | |
31 | 33 | $this->hasMany('Users', [ |
32 | 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 | 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 | 1 | <?php |
2 | +$DEBUG=false; | |
3 | +//$DEBUG=true; | |
4 | + | |
2 | 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 | 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 | 23 | //debug($entity); |
12 | 24 | //debug($entity->getSource()); |
13 | - | |
14 | -$DEBUG=false; | |
15 | -//$DEBUG=true; | |
25 | +//exit; | |
16 | 26 | |
17 | 27 | if ($DEBUG) { |
18 | - $article = 'le '; | |
19 | - $entity_type_name = 'domaine'; | |
28 | + $entity_article = 'le '; | |
29 | + $entity_type_name_singular = 'domaine'; | |
20 | 30 | //$entity_name = $entity->getMyName(); |
21 | 31 | $entity_name = $entity->nom; |
22 | 32 | |
... | ... | @@ -45,15 +55,9 @@ if ($DEBUG) { |
45 | 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 | 62 | <div class="surCategories view"> |
59 | 63 | --> |
... | ... | @@ -62,8 +66,13 @@ $entities_list = $entities_list; |
62 | 66 | <!-- |
63 | 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 | 76 | <table style="margin-bottom: 30px;"> |
68 | 77 | |
69 | 78 | <tr> |
... | ... | @@ -121,11 +130,11 @@ $entities_list = $entities_list; |
121 | 130 | // function displaySectionShowHide($controller_name, $entity_type_name, $title, $id_name, $is_masculine, $name_field_name, $entities) { |
122 | 131 | $this->MyHelper->displayAssociatedEntitiesAsSectionShowHide( |
123 | 132 | $es['controller_name'], |
124 | - $es['entity_type_name'], | |
125 | - $es['title'], | |
133 | + $es['entity_type_name_singular'], | |
134 | + $es['entity_title'], | |
126 | 135 | //$es['id_name'], |
127 | - $es['is_masculine'], | |
128 | - $es['name_field_name'], | |
136 | + $es['is_masculin'], | |
137 | + $es['name_field_label'], | |
129 | 138 | $es['entities'] |
130 | 139 | ); |
131 | 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->materiel_technique) == 1) |
582 | 582 | //$displayElement(__('Nom du materiel'),$entity->designation); |
583 | 583 | //$displayElement(__('Description'),$entity->description); |
584 | 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 | 587 | // (EP202009) Deplacé tout en bas du tableau et affiché avec Text->autoParagraph() |
588 | 588 | //$this->MyButton->displayElement('Description',$entity->description); |
589 | 589 | |
590 | -$this->MyButton->displayElement('Materiel inventorié',$type); | |
590 | +$this->MyHelper->displayElement('Materiel inventorié',$type); | |
591 | 591 | $displayElement(__('Domaine'), $entity->has('sur_category') ? h($entity->sur_category->nom) : ''); |
592 | 592 | $displayElement(__('Catégorie'), $entity->has('category') ? h($entity->category->nom) : ''); |
593 | 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 | 62 | $id_name = $controller_name; |
63 | 63 | $id_h3 = 't_'.$id_name; |
64 | 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 | 67 | echo "<h3 id='$id_h3' class='toggle' style='cursor: pointer;'>"; |
68 | 68 | echo "<i class='icon-chevron-down' style='font-size: 14px;' id='$id_i'></i>"; | ... | ... |