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()
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-&gt;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>";
... ...