diff --git a/CHANGES.txt b/CHANGES.txt
index ff783d5..320692c 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -119,9 +119,14 @@ Outre ces changements, voici d'autres changements importants :
======= CHANGES =======
-refactorisation de la vue 'view' pour toutes les 'autres' entités
+-------
+06/10/2020 v4.105.0-3.7.9 (EP)
+ - (i) refactorisation de la vue 'view' pour toutes les 'autres' entités (étape 2, étape 3 en cours...)
+ => dans AppController:view_generic()
+ => utilisation de mon helper src/View/Helper/MyHelperHelper/displayAssociatedEntitiesAsSectionShowHide()
+ => un seul template unique utilisé /src/Template/Common/view.ctp, évite toutes ces trop nombreuses redondances,
+ => plus efficace, on modifie tout en un seul endroit ! (au lieu d'une dizaine de pages web différentes avant !)
-=> dans AppController:view_generic()
-------
05/10/2020 v4.104.5-3.7.9 (EP)
diff --git a/README.md b/README.md
index 60f07b8..88cb004 100644
--- a/README.md
+++ b/README.md
@@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes :
--------------------------------------------------------------------------------------------
-Date: 05/10/2020
-Version: 4.104.5-3.7.9
+Date: 06/10/2020
+Version: 4.105.0-3.7.9
HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes)
diff --git a/src/Controller/AppController.php b/src/Controller/AppController.php
index becc0ba..c7f2350 100755
--- a/src/Controller/AppController.php
+++ b/src/Controller/AppController.php
@@ -481,7 +481,13 @@ class AppController extends Controller
//return strtolower($this->name);
//return __CLASS__;
//return strtolower( substr($this->getName(),0,-1) );
- return substr($this->getTypeNamePlural(),0,-1);
+ $words = explode(' ',$this->getTypeNamePlural());
+ //debug($words);
+ $type_name_singular = '';
+ foreach($words as $word) $type_name_singular .= substr($word,0,-1).' ';
+ //debug($type_name_singular);
+ return rtrim($type_name_singular);
+ //return substr($this->getTypeNamePlural(),0,-1);
}
//@deprecated
public function getNiceName() { return $this->getTypeNameSingular(); }
@@ -2120,18 +2126,47 @@ class AppController extends Controller
} // beforeFilter()
- public function view_generic($id, $associated_entity_types) {
+ public function view_generic($id, $associated_entity_types, $parent_entity_controller_name=[]) {
// ex: SurCategories
$controller_name = $this->getName();
+ //debug($controller_name); exit;
/*
$entity = $this->SurCategories->get($id, [
'contain' => []
]);
*/
$entity = $this->$controller_name->get($id, [
- 'contain' => []
+ //'contain' => ['SurCategories']
+ 'contain' => $parent_entity_controller_name
]);
+
+ // S'il y a une entité parente, on récupère ses infos
+ $parent_entity_infos = [];
+ if ($parent_entity_controller_name) {
+ //$parent_entity_name=$entity->sur_category->nom;
+ //$c_parent = 'App\\Controller\\'.'SurCategories'.'Controller';
+ $c_parent = 'App\\Controller\\'.$parent_entity_controller_name.'Controller';
+ $c_parent = new $c_parent();
+ // 'Domaine'
+ $parent_entity_type_name=$c_parent->getTypeNameSingular();
+ //debug($parent_entity_type_name);
+ // nom de l'instance de l'entité parente
+ // 'sur_category'
+ $parent_entity_contained_name = Inflector::classify($parent_entity_controller_name);
+ $parent_entity_contained_name = Inflector::underscore($parent_entity_contained_name);
+ //debug($parent_entity_contained_name);exit;
+ //$parent_entity_name=$entity->sur_category->nom;
+ $parent_entity_name_field_label = $c_parent->getNameFieldLabel();
+ $parent_entity_name=$entity->$parent_entity_contained_name->$parent_entity_name_field_label;
+ //debug($parent_entity_name);exit;
+ $parent_entity_id=$entity->$parent_entity_contained_name->id;
+ $parent_entity_infos['controller_name'] = $parent_entity_controller_name;
+ $parent_entity_infos['type_name'] = $parent_entity_type_name;
+ $parent_entity_infos['name'] = $parent_entity_name;
+ $parent_entity_infos['id'] = $parent_entity_id;
+ }
+
$entities_list = [];
// ex: 'sur_categorie_id'
$fk_name = $this->getFkName();
@@ -2220,6 +2255,9 @@ class AppController extends Controller
'entity_type_name_singular',
'entity_name',
'entity',
+ 'parent_entity_infos',
+ //'parent_entity_controller_name','parent_entity_type_name',
+ //'parent_entity_name','parent_entity_id',
// Infos sur les entités associées
'entities_list'
@@ -2699,7 +2737,7 @@ class AppController extends Controller
$printTableRow = $displayElement;
$this->set(compact('printTableRow'));
//@deprecated
- $this->set('displayElement', $displayElement);
+ $this->set(compact('displayElement'));
// Pass this function to all views
// @todo : Si cette fonction ne concerne que SuivisController, il faut la déplacer dans ce controleur
diff --git a/src/Controller/CategoriesController.php b/src/Controller/CategoriesController.php
index 7ff09f5..8028486 100755
--- a/src/Controller/CategoriesController.php
+++ b/src/Controller/CategoriesController.php
@@ -19,6 +19,7 @@ class CategoriesController extends AppController
//@Override
public function getTypeNamePlural() { return 'catégories'; }
+ //@deprecated
public function getArticle()
{
return "La";
@@ -115,14 +116,13 @@ class CategoriesController extends AppController
* @return \Cake\Network\Response|null
* @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
*/
- public function view($id = null)
- {
+ public function view($id = null) {
$associated_entity_types = [
'SousCategories',
'Materiels'
];
//return parent::view($id, $associated_entity_types);
- return $this->view_generic($id, $associated_entity_types);
+ return $this->view_generic($id, $associated_entity_types, 'SurCategories');
/*
$category = $this->Categories->get($id, [
diff --git a/src/Controller/GroupesThematiquesController.php b/src/Controller/GroupesThematiquesController.php
index c15ed57..0324bf1 100755
--- a/src/Controller/GroupesThematiquesController.php
+++ b/src/Controller/GroupesThematiquesController.php
@@ -12,6 +12,15 @@ use Cake\ORM\TableRegistry;
class GroupesThematiquesController extends AppController
{
+ // Nom pluriel affichable pour cette entité
+ //@Override
+ public function getTypeNamePlural() {
+ //return strtolower($this->name);
+ //return strtolower($this->getName());
+ //return 'sur-catégories';
+ return 'groupes thématiques';
+ }
+
/**
* Give authorization for groupes thematiques
*
@@ -80,6 +89,15 @@ class GroupesThematiquesController extends AppController
*/
public function view($id = null)
{
+ $associated_entity_types = [
+ 'Users',
+ 'Materiels',
+ 'Suivis',
+ ];
+ //return parent::view($id, $associated_entity_types);
+ return $this->view_generic($id, $associated_entity_types);
+
+ /*
$groupesThematique = $this->GroupesThematiques->get($id, [
'contain' => [
'Materiels'
@@ -105,6 +123,7 @@ class GroupesThematiquesController extends AppController
$this->set('_serialize', [
'groupesThematique'
]);
+ */
}
/**
diff --git a/src/Controller/SousCategoriesController.php b/src/Controller/SousCategoriesController.php
index 25e4cb5..67c0fa7 100755
--- a/src/Controller/SousCategoriesController.php
+++ b/src/Controller/SousCategoriesController.php
@@ -11,12 +11,28 @@ use Cake\ORM\TableRegistry;
*/
class SousCategoriesController extends AppController
{
-
+ // Genre
+ public $is_masculin = false;
+
+ //@deprecated
public function getArticle()
{
return "La";
}
+ // Surcharge pour corriger bug cakephp qui renvoie 'Souscategories' au lieu de 'SousCategories' !!
+ //@Override
+ public function getName() {
+ //return strtolower($this->name);
+ //return strtolower($this->getName());
+ //return 'SousCategories';
+ $controller_name = substr(__CLASS__,strlen('App\\Controller\\'));
+ return substr($controller_name,0,strpos($controller_name,'Controller'));
+ }
+
+ // Nom pluriel affichable pour cette entité
+ //@Override
+ public function getTypeNamePlural() { return 'sous-catégories'; }
/*
* @Override
@@ -99,8 +115,13 @@ class SousCategoriesController extends AppController
* @return \Cake\Network\Response|null
* @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
*/
- public function view($id = null)
- {
+ public function view($id = null) {
+ $associated_entity_types = [
+ 'Materiels'
+ ];
+ //return parent::view($id, $associated_entity_types);
+ return $this->view_generic($id, $associated_entity_types, 'Categories');
+ /*
$sousCategory = $this->SousCategories->get($id, [
'contain' => [
'Categories'
@@ -116,6 +137,7 @@ class SousCategoriesController extends AppController
$this->set('_serialize', [
'sousCategory'
]);
+ */
}
/**
diff --git a/src/Controller/SurCategoriesController.php b/src/Controller/SurCategoriesController.php
index 03ce137..fe048aa 100755
--- a/src/Controller/SurCategoriesController.php
+++ b/src/Controller/SurCategoriesController.php
@@ -21,18 +21,34 @@ class SurCategoriesController extends AppController
return 'domaine';
}
*/
- // Surcharge pour corriger bug cakephp qui renvoie 'Surcategories' au lieu de 'SurCategories' !!
+ /*
+ * Surcharge pour corriger bug cakephp qui renvoie 'Surcategories' au lieu de 'SurCategories' !!
+ * (alors qu'il renvoie bien 'GroupesThematiques' pour le controleur GroupesThematiquesController !!)
+ *
+ * En fait, ce bug n'arrive que si on tape une URL comme ceci :
+ * /surcategories/view/2
+ * au lieu de :
+ * /sur-categories/view/2
+ *
+ * Avec /sur-categories/view/2 => pas de problème, on a bien SurCategories
+ * Avec /surcategories/view/2 => problème, on a Surcategories !!!
+ *
+ */
//@Override
public function getName() {
//return strtolower($this->name);
//return strtolower($this->getName());
- return 'SurCategories';
+ //return 'SurCategories';
+ //return __CLASS__;
+ $controller_name = substr(__CLASS__,strlen('App\\Controller\\'));
+ return substr($controller_name,0,strpos($controller_name,'Controller'));
}
// Nom pluriel affichable pour cette entité
//@Override
public function getTypeNamePlural() {
//return strtolower($this->name);
//return strtolower($this->getName());
+ //return 'sur-catégories';
return 'domaines';
}
diff --git a/src/Template/Common/view.ctp b/src/Template/Common/view.ctp
index e2e7db6..2e7e668 100755
--- a/src/Template/Common/view.ctp
+++ b/src/Template/Common/view.ctp
@@ -1,4 +1,7 @@
MyHelper->displayElement(__('Nom'), h($entity_name));
$this->MyHelper->displayElement(__('Description'), h($entity->description));
-
+ // Affichage du nom de l'entité parente si elle existe
+ // (ex: Domaine pour une catégorie, ou catégorie pour une sous-catégorie)
+ //debug($entity->sur_category->getSource()); // 'SurCategories'
+ /*
+ $e = new SurCategory();
+ debug($e->getSource());
+ */
+ if($parent_entity_infos)
+ //$this->MyHelper->displayElement(__('Domaine'), h($entity->sur_category->nom));
+ //$this->MyHelper->displayElement(__(ucfirst($parent_entity_type_name)), h($parent_entity_name));
+ $this->MyHelper->displayElement(
+ __(ucfirst($parent_entity_infos['type_name'])),
+ //$category->has('sur_category') ? $this->Html->link($category->sur_category->nom, [
+ $this->Html->link($parent_entity_infos['name'], [
+ 'controller' => $parent_entity_infos['controller_name'],
+ //'controller' => 'SurCategories',
+ 'action' => 'view',
+ $parent_entity_infos['id']
+ //$category->sur_category->id
+ ])
+ );
+ /*
+ $this->MyHelper->displayElement(__('Domaine'), $this->Html->link($entity->sur_category->nom, [
+ 'controller' => 'SurCategories',
+ 'action' => 'view',
+ $entity->sur_category->id
+ ])
+ );
+ */
?>
diff --git a/src/Template/GroupesThematiques/view.ctp b/src/Template/GroupesThematiques/view.ctp
index 10b590a..df7213a 100755
--- a/src/Template/GroupesThematiques/view.ctp
+++ b/src/Template/GroupesThematiques/view.ctp
@@ -1,143 +1,3 @@
-
-
-
-
Détail = $configuration->nom_groupe_thematique ?>
-
-
-
-
- |
- |
-
-
- Html->link(__(' Editer ce ' . $configuration->nom_groupe_thematique), [
- 'action' => 'edit',
- $groupesThematique->id
- ], [
- 'style' => 'margin-right: 40px; display: inline-block',
- 'escape' => false,
- 'onclick' => 'return true;'
- ]);
- }
-
- if (in_array($role, [
- 'Super Administrateur'
- ])) {
- echo $this->Form->postLink(__(' Supprimer ce ' . $configuration->nom_groupe_thematique), [
- 'action' => 'delete',
- $groupesThematique->id
- ], [
- 'style' => 'display: inline-block',
- 'escape' => false,
- 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $groupesThematique->id)
- ]);
- }
-
- $displayElement(__('Nom'), h($groupesThematique->nom));
- $displayElement(__('Description'), h($groupesThematique->description));
- ?>
-
-
-
-
-
-
- Utilisateurs associés (= $utilisateurs->count()?>)
-
-
-
-
-
-
- = __('Nom') ?> |
- = __('Détail') ?> |
-
-
-
-
- = $this->Html->link(h($utilisateur->nom), ['controller' => 'Users', 'action' => 'view', h($utilisateur->id)]); ?> |
-
-
- = $this->Html->link(__(''), ['controller' => 'Users', 'action' => 'view', $utilisateur->id], ['escape' => false, 'style' => 'margin:0']) ?>
- |
-
-
-
- nom_groupe_thematique; } ?>
-
-
-
-
-
- Suivis associés (= $suivis->count()?>)
-
-
-
-
-
-
- = __('N° suivi') ?> |
- = __('Détail') ?> |
-
-
-
-
- = $this->Html->link('Suivi '.h($suivi->id), ['controller' => 'Suivis', 'action' => 'view', h($suivi->id)]); ?> |
-
-
- = $this->Html->link(__(''), ['controller' => 'Suivis', 'action' => 'view', $suivi->id], ['escape' => false, 'style' => 'margin:0']) ?>
- |
-
-
-
- nom_groupe_thematique; } ?>
-
-
-
-
-
- Materiels associés (= $materiels->count()?>)
-
-
-
-
-
-
- = __('Désignation') ?> |
- = __('Détail') ?> |
-
-
-
-
- = $this->Html->link(h($materiel->designation), ['controller' => 'Materiels', 'action' => 'view', h($materiel->id)]); ?> |
-
-
- = $this->Html->link(__(''), ['controller' => 'Materiels', 'action' => 'view', $materiel->id], ['escape' => false, 'style' => 'margin:0']) ?>
- |
-
-
-
- nom_groupe_thematique.'.'; } ?>
-
-
-
-
-
-
-
\ No newline at end of file
+
+extend('/Common/view');
\ No newline at end of file
diff --git a/src/Template/SousCategories/view.ctp b/src/Template/SousCategories/view.ctp
index d08385e..db2b3cc 100755
--- a/src/Template/SousCategories/view.ctp
+++ b/src/Template/SousCategories/view.ctp
@@ -1,91 +1,10 @@
-
-
-
-
Détail sous-catégorie
-
-
-
- |
- |
-
-
- Html->link(__(' Editer cette sous-catégorie'), [
- 'action' => 'edit',
- $sousCategory->id
- ], [
- 'style' => 'margin-right: 40px; display: inline-block',
- 'escape' => false,
- 'onclick' => 'return true;'
- ]);
- }
-
- if (in_array($role, [
- 'Super Administrateur'
- ])) {
- echo $this->Form->postLink(__(' Supprimer cette sous-catégorie'), [
- 'action' => 'delete',
- $sousCategory->id
- ], [
- 'style' => 'display: inline-block',
- 'escape' => false,
- 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $sousCategory->id)
- ]);
- }
-
- $displayElement(__('Nom'), h($sousCategory->nom));
- $displayElement(__('Catégorie'), $sousCategory->has('category') ? $this->Html->link($sousCategory->category->nom, [
- 'controller' => 'Categories',
- 'action' => 'view',
- $sousCategory->category->id
- ]) : '');
-
- ?>
-
-
-
-
-
- Materiels associés (= $materiels->count()?>)
-
-
-
-
-
-
- = __('Désignation') ?> |
- = __('Détail') ?> |
-
-
-
-
- = $this->Html->link(h($materiel->designation), ['controller' => 'Materiels', 'action' => 'view', h($materiel->id)]); ?> |
-
-
- = $this->Html->link(__(''), ['controller' => 'Materiels', 'action' => 'view', $materiel->id], ['escape' => false, 'style' => 'margin:0']) ?>
- |
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+extend('/Common/view');
\ No newline at end of file
diff --git a/src/View/Helper/MyHelperHelper.php b/src/View/Helper/MyHelperHelper.php
index f5b9cbe..16b3f9e 100644
--- a/src/View/Helper/MyHelperHelper.php
+++ b/src/View/Helper/MyHelperHelper.php
@@ -52,17 +52,21 @@ class MyHelperHelper extends Helper {
// Ca c'est parce que sinon y'a au moins deux tests qui passent pas, a cause de l'espace dans la balise ...
//if ($valeur != "") echo ' '.$nom.' | ' . $TD.$valeur.'
';
//if ($valeur != "") echo '' . $nom . ' | ' . $balise . $valeur . '
';
- if ($valeur!="") echo " ".__($nom)." | <$TD>".h($valeur)."
";
+ //if ($valeur!="") echo " ".__($nom)." | <$TD>".h($valeur)."
";
+ if ($valeur!="") echo " ".__($nom)." | <$TD>".$valeur."
";
+ //if ($valeur!="") echo " $nom | <$TD>$valeur
";
}
+
+
//function displaySectionShowHide($controller_name, $entity_type_name, $title, $id_name, $is_masculine, $name_field_name, $entities) {
//function displaySectionShowHide($controller_name, $entity_type_name, $title, $is_masculine, $name_field_name, $entities) {
- function displayAssociatedEntitiesAsSectionShowHide($controller_name, $entity_type_name, $title, $is_masculine, $name_field_name, $entities) {
+ function displayAssociatedEntitiesAsSectionShowHide($controller_name, $entity_type_name, $title, $is_masculin, $name_field_name, $entities) {
$id_name = $controller_name;
$id_h3 = 't_'.$id_name;
$id_i = 'i_'.$id_name;
- $title = ucfirst($title).' associé'. ($is_masculine ? 's' : 'es');
+ $title = ucfirst($title).' associé'. ($is_masculin ? 's' : 'es');
echo "";
echo "";
@@ -71,9 +75,12 @@ class MyHelperHelper extends Helper {
echo "";
//if (true) {
- if (empty($entities)) {
+ //if (empty($entities)) {
+ $shift3 = ' ';
+ $shift5 = ' ';
+ if ($entities->isEmpty()) {
//echo "Aucune $entity_name liée à ce domaine.";
- echo ($is_masculine ? "Aucun $entity_type_name associé" : "Aucune $entity_type_name associée");
+ echo $shift5.($is_masculin ? "Aucun $entity_type_name associé" : "Aucune $entity_type_name associée");
}
else {
echo "
";
@@ -86,7 +93,7 @@ class MyHelperHelper extends Helper {
foreach ($entities as $entity) {
echo "";
echo "";
- echo ' '.$this->Html->link(h($entity->$name_field_name), ['controller' => $controller_name, 'action' => 'view', h($entity->id)]);
+ echo $shift3.$this->Html->link(h($entity->$name_field_name), ['controller' => $controller_name, 'action' => 'view', h($entity->id)]);
echo " | ";
/*
--
libgit2 0.21.2 |