'Domaine', ]; */ /* // Nom singulier affichable pour cette entité // @Override parent public function getNiceNameSingularLowerCase() { //return strtolower($this->name); //return strtolower($this->getName()); return 'domaine'; } */ /* * 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 __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 getNiceNamePluralLowerCase($alias_controller_name=null) { //return strtolower($this->name); //return strtolower($this->getName()); //return 'sur-catégories'; return 'domaines'; } // Genre // @Override //public $is_masculin = false; // @deprected public function getArticle() { return "La "; } /* static public function getActions() { // Toutes les actions CRUD $actions = parent::getActions(); // sauf 'find' unset($actions['find']); debug("Actions are:"); debug($actions); // Retourne toutes les méthodes publiques, mêmes celles qui ne sont pas des actions, donc pas bon //$actions = get_class_methods('App\Controller\MaterielsController'); return $actions; } */ /* * Toute première méthode appelée, * * AVANT authentification * */ public function initialize() { $this->myDebug("step 0A (specific): SurCategoriesController.initialize()"); //$this->loadComponent('RequestHandler'); parent::initialize(); // On autorise l'action add SANS authentification (unauthenticated) //$this->Auth->allow(['add']); /* * (EP) * Pas nécessaire pour l'exécution normale car $this->SurCategories est bizarrement * déjà trouvé grâce à la ligne "property" juste au-dessus du début de définition de la classe SurCategoriesController * (pareil pour MaterielsController). * Mais nécessaire pour le test de ce controleur (mais bizarrement pas pour les tests de MaterielsController..., * peut-être un problème dû au nom compliqué en 2 parties de "SurCategories" au lieu du nom simple "Materiels"... ?) * */ $this->SurCategories = TableRegistry::getTableLocator()->get('SurCategories'); } /* * @Override * * Initialisation des autorisations pour les actions spécifiques à ce controleur * */ protected function setAuthorizations() { // Action 'getFromCategorie' $this->setAuthorizationsForAction('getFromCategorie', 0); } /** * Give authorization for sur categories * * @param * $user * @return boolean */ /* //public function isAuthorized($user) public function isAuthorized($user, $action = null, $id=null, $role=null, $userCname=null) { $action = $this->getActionPassed(); /S * $configuration = $this->confLabinvent; * $role = TableRegistry::get('Users')->find()->where(['username' => $user[$configuration->authentificationType_ldap][0]])->first()['role']; * $action = $this->request->getAttribute('params')['action']; * * // Super-Admin peut accéder à chaque action * if($role == 'Super Administrateur') return true; * * // Administration peut ajouter, supprimer ou modifier une sous categorie * if($role == 'Administration' && in_array($action,['add','delete','edit'])) return true; S/ // if (in_array($action, ['getByCategorie', 'view', 'index'])) { if (in_array($action, [ 'getFromCategorie' ])) return true; /S * if($this->userHasRoleAtLeast('Administration Plus')) { * if($action != 'delete') return true; * } * * return false; S/ return $this->isAuthorizedCommons($user); } */ /** * Index method * * @return \Cake\Network\Response|null */ public function index() { $this->index_generic( 'domaines', [ 'nom'=>[], //'nom'=>['nice_name'=>'Nom'], //'sur_categorie_id'=>['nice_name'=>'Domaine', 'contained_entity_name'=>'sur_category', 'controller_name'=>'SurCategories'], ], //['SurCategories'] [], true, true, 'nom' ); /* $surCategories = $this->paginate($this->SurCategories); $this->set('nb_entities', $this->SurCategories->find()->count()); $this->set(compact('surCategories')); */ /* (EP) inutile $this->set('_serialize', [ 'surCategories' ]); */ } /** * View method * * @param string|null $id * Sur Category id. * @return \Cake\Network\Response|null * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function view($id = null) { $child_entity_types = [ 'Categories', 'Users', 'Materiels' ]; //return parent::view($id, $associated_entity_types); return $this->view_generic($id, $child_entity_types, 'Categories', 'categories', ' une catégorie'); } /** * Add method * * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. */ public function add() { $surCategory = $this->SurCategories->newEntity(); if ($this->request->is('post')) { $surCategory = $this->SurCategories->patchEntity($surCategory, $this->request->getData()); if ($this->SurCategories->save($surCategory)) { $this->Flash->success(__('Le domaine a bien été ajouté.')); return $this->redirect([ 'action' => 'view', $surCategory->id ]); } else { $this->Flash->error(__('Le domaine n\'a pas pu être ajouté.')); } } $this->set(compact('surCategory')); $this->set('_serialize', [ 'surCategory' ]); } /** * Edit method * * @param string|null $id * Sur Category id. * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise. * @throws \Cake\Network\Exception\NotFoundException When record not found. */ public function edit($id = null) { $surCategory = $this->SurCategories->get($id, [ 'contain' => [] ]); // En mode POST if ($this->request->is([ 'patch', 'post', 'put' ])) { $surCategory = $this->SurCategories->patchEntity($surCategory, $this->request->getData()); if ($this->SurCategories->save($surCategory)) { //debug("save OK"); $this->Flash->success(__('Le domaine a bien été modifié')); return $this->redirect([ 'action' => 'view', $id ]); } else { //debug("save KO"); $this->Flash->error(__('Le domaine n\'a pas pu être édité.')); } } // En mode GET (ou alors POST après une erreur) $this->set(compact('surCategory')); /* (EP) inutile sauf si json $this->set('_serialize', [ 'surCategory' ]); */ } /** * Delete method * * @param string|null $id * Sur Category id. * @return \Cake\Network\Response|null Redirects to index. * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function delete($id = null) { $this->delete_generic($id); /* $this->request->allowMethod([ 'post', 'delete' ]); $surCategory = $this->SurCategories->get($id); if ($this->SurCategories->delete($surCategory)) { $this->Flash->success(__('Le domaine a bien été supprimé.')); } else { $this->Flash->error(__('Le domaine n\'a pas pu être supprimé.')); } return $this->redirect([ 'action' => 'index' ]); */ } /* * (EP 01/02/2019) * * Called only by JAVASCRIPT * Used by Materiels view ADD/EDIT (form), on categorie change * Pour tester : entrer cette url : /SurCategories/getFromCategorie */ public function getFromCategorie() { //$categorie_id = isset($this->request->data['Materiel']['s_categorie_id']) ? $this->request->data['Materiel']['s_categorie_id'] : $this->request->data['Materiel']['categorie_id']; $selected_categorie_id = ($this->request->getData('s_categorie_id') !== null) ? $this->request->getData('s_categorie_id') : $categorie_id = $this->request->getData('categorie_id'); /* $surcategorie = $categ->find('first', array( 'conditions' => array('Categorie.id' => $categorie_id), 'fields' => array('Categorie.sur_categorie_id'), 'recursive' => -1 ))->first(); */ $selected_categorie = TableRegistry::getTableLocator()->get('Categories') ->find() ->where([ 'id' => $selected_categorie_id //'id' => '5' ]) ->first(); //$surcategorie = $surcategorie->sur_categorie_id; $Sur_categ_id = $selected_categorie->sur_categorie_id; // Pour tester : //debug($selected_categorie); //debug($Sur_categ_id); //$this->set('Sur_categ_id',"5"); // puis, taper cette url : /SurCategories/getFromCategorie $this->set('Sur_categ_id', $Sur_categ_id); //$this->layout = 'ajax'; $this->viewBuilder()->layout = 'ajax'; } }