From a6df1a78b9fc74ee3c72d9c05f735948d1ed75a9 Mon Sep 17 00:00:00 2001 From: Etienne Pallier Date: Fri, 26 Nov 2021 16:18:54 +0100 Subject: [PATCH] Préparation du partitionnement des materiels par site (phase 2/3) --- CHANGELOG | 9 ++++++++- src/Controller/SitesController.php | 2 +- src/Controller/UsersController.php | 25 ++++++++++++++++++++----- src/Model/Table/SitesTable.php | 4 ++++ src/Model/Table/UsersTable.php | 6 ++++++ src/Template/Element/materiels_list.ctp | 11 ++++++----- src/Template/Materiels/add_edit.ctp | 9 ++++++--- src/Template/Materiels/view.ctp | 15 ++++++++++++--- src/Template/Users/edit.ctp | 11 +++++++++++ 9 files changed, 74 insertions(+), 18 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b88a925..ee191b0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -631,8 +631,15 @@ Ne pas autoriser la commande via url si le bouton order est désactivé dans la ======= CHANGES ======= ------- +26/11/2021 v5.3.12-3.7.9 + - (e) Préparation du partitionnement optionnel des materiels par site (phase 2/3) + => Ajout liste users associés dans vue site (view) + => Ajout champ site_id dans vues users edit, view, et index : "site" + => Ajout champ is_site_only dans vues materiels edit, view, et index : "(réservé au site)" + +------- 26/11/2021 v5.3.11-3.7.9 - - (i) Préparation du partitionnement optionnel des materiels par site + - (i) Préparation du partitionnement optionnel des materiels par site (phase 1/3) => Ajout de nouveaux champs site_id et is_site_only dans les tables users et materiels (resp.) - (a) Attention, update bd diff --git a/src/Controller/SitesController.php b/src/Controller/SitesController.php index 20c2aa3..820c5b1 100755 --- a/src/Controller/SitesController.php +++ b/src/Controller/SitesController.php @@ -85,7 +85,7 @@ class SitesController extends AppController */ public function view($id = null) { - return $this->view_generic($id, ['Emprunts', 'Materiels',]); + return $this->view_generic($id, ['Emprunts', 'Materiels', 'Users']); /* $site = $this->Sites->get($id, [ diff --git a/src/Controller/UsersController.php b/src/Controller/UsersController.php index e3eb7b1..1fd9dda 100755 --- a/src/Controller/UsersController.php +++ b/src/Controller/UsersController.php @@ -549,6 +549,7 @@ class UsersController extends AppController { */ $contains = [ + 'Sites', 'GroupesThematiques', 'GroupesMetiers', 'SurCategories' @@ -558,6 +559,7 @@ class UsersController extends AppController { 'nom' => 'nom', 'email' => 'email', 'role' => 'role', + 'site_id' => 'Sites.nom', 'groupes_thematique_id' => 'GroupesThematiques.nom', 'groupes_metier_id' => 'GroupesMetiers.nom', 'sur_categorie_id' => 'SurCategories.nom', @@ -571,6 +573,10 @@ class UsersController extends AppController { 'nom' => [], 'email' => [], 'role' => [], + 'site_id'=>[ + //'nice_name'=>'Domaine', + 'contained_entity_name'=>'site', 'controller_name'=>'Sites', + ], 'groupes_thematique_id'=>[ //'nice_name'=>'Groupe Thématique', 'contained_entity_name'=>'groupes_thematique', @@ -714,9 +720,10 @@ class UsersController extends AppController { $user = $this->Users->get($id, [ 'contain' => [ - 'GroupesMetiers', - 'GroupesThematiques', - 'SurCategories' + //'Sites', + //'GroupesMetiers', + //'GroupesThematiques', + //'SurCategories' ] ]); $this->set('user', $user); @@ -824,7 +831,9 @@ class UsersController extends AppController { public function edit($id = null) { $user = $this->Users->get($id, [ - 'contain' => [] + 'contain' => [ + //'Sites', + ] ]); if ($this->request->is([ 'patch', @@ -856,6 +865,10 @@ class UsersController extends AppController { $this->Flash->error(__("L'utilisateur n'a pas pu être modifié")); } } + $sites = $this->Users->Sites->find('list', [ + 'keyField' => 'id', + 'valueField' => 'nom' + ]); $groupesMetiers = $this->Users->GroupesMetiers->find('list', [ 'keyField' => 'id', 'valueField' => 'nom' @@ -880,10 +893,12 @@ class UsersController extends AppController { 'keyField' => 'id', 'valueField' => 'nom' ]); - $this->set(compact('user', 'groupesMetiers', 'groupesThematiques', 'sur_categorie')); + $this->set(compact('user', 'sites', 'groupesMetiers', 'groupesThematiques', 'sur_categorie')); + /* inutile si pas json $this->set('_serialize', [ 'user' ]); + */ } // edit() /** diff --git a/src/Model/Table/SitesTable.php b/src/Model/Table/SitesTable.php index 65b272d..5725397 100755 --- a/src/Model/Table/SitesTable.php +++ b/src/Model/Table/SitesTable.php @@ -28,6 +28,10 @@ class SitesTable extends AppTable //$this->setDisplayField('id'); $this->setDisplayField('nom'); $this->setPrimaryKey('id'); + + $this->hasMany('Users', [ + 'foreignKey' => 'site_id' + ]); $this->hasMany('Materiels', [ 'foreignKey' => 'site_id' diff --git a/src/Model/Table/UsersTable.php b/src/Model/Table/UsersTable.php index 58c7591..5877ea1 100755 --- a/src/Model/Table/UsersTable.php +++ b/src/Model/Table/UsersTable.php @@ -12,10 +12,12 @@ use Cake\ORM\TableRegistry; * @property \Cake\ORM\Association\BelongsTo $GroupesThematiques * @property \Cake\ORM\Association\BelongsTo $GroupesMetiers * @property \Cake\ORM\Association\BelongsTo $SurCategories + * @property \Cake\ORM\Association\BelongsTo $Sites */ class UsersTable extends AppTable { + /** * Initialize method * @@ -31,6 +33,10 @@ class UsersTable extends AppTable //$this->setDisplayField('id'); $this->setDisplayField('nom'); $this->setPrimaryKey('id'); + + $this->belongsTo('Sites', [ + 'foreignKey' => 'site_id' + ]); $this->belongsTo('GroupesMetiers', [ 'foreignKey' => 'groupes_metier_id' diff --git a/src/Template/Element/materiels_list.ctp b/src/Template/Element/materiels_list.ctp index f0264f7..b33b0e3 100644 --- a/src/Template/Element/materiels_list.ctp +++ b/src/Template/Element/materiels_list.ctp @@ -391,13 +391,14 @@ $displayActionButtonsForMateriel = function($materiel, $statuses_color, $usernam has('fournisseur') ? h($materiel->fournisseur->nom) : '' ?> has('site') ? h($materiel->site->nom) : ''; - if ($materiel->lieu_detail) { - if ($materiel->has('site')) $lieu .= '-'; - $lieu .= $materiel->lieu_detail; + $site_lieu = ''; + if ($materiel->has('site')) { + $site_lieu = h($materiel->site->nom); + if ($materiel->lieu_detail) $site_lieu .= ' - '.h($materiel->lieu_detail); + if ($materiel->is_site_only) $site_lieu .= ' (réservé au site)'; } ?> - +