diff --git a/README.md b/README.md index 08a3075..21dc586 100644 --- a/README.md +++ b/README.md @@ -53,13 +53,10 @@ Logiciel testé et validé sur les configurations suivantes : VERSION ACTUELLE -Date: 26/03/2020 -Version: 3.7.9.10 +Date: 27/03/2020 +Version: 3.7.9.11 Author: EP -Commentaire: EMPRUNTS : Amélioration par refactorisation (1) - Comme pour les docs attachés et les suivis (même principe) : - - refactorisation des actions add() et edit() en une seule add_or_edit() (car très semblables) - - refactorisation des vues add et edit en une seule add_edit (car très semblables) +Commentaire: Amélioration et Bugfixes de Emprunts, Suivis, et Docs attachés IMPORTANT : - Pour connaitre la version actuelle, taper "./VERSION" @@ -94,27 +91,33 @@ La liste ci-dessous n'est plus à jour, elle est désormais en ligne ici : https ----------------------------------------------------------------------------------------------------------- +26/03/2020 Version 3.7.9.10 (EP) + EMPRUNTS : Amélioration par refactorisation (1) + Comme pour les docs attachés et les suivis (même principe) : + - refactorisation des actions add() et edit() en une seule add_or_edit() (car très semblables) + - refactorisation des vues add et edit en une seule add_edit (car très semblables) + 25/03/2020 Version 3.7.9.9 (EP) - Suivis : Amélioration par refactorisation (2) + SUIVIS : Amélioration par refactorisation (2) Comme pour les docs attachés (même principe) : - refactorisation des actions add() et edit() en une seule add_or_edit() (car très semblables) - refactorisation des vues add et edit en une seule add_edit (car très semblables) - debugging javascript en cours (car ça marchait pas très bien tout ça...) 24/03/2020 Version 3.7.9.8 (EP) - Suivis : Amélioration et nombreux Bugfixes !!! (1) + SUIVIS : Amélioration et nombreux Bugfixes !!! (1) - pb javascript si métrologie - ajout intitulé comme titre - vue édition : champs trop larges, champs éditables, champs inutiles... - ... 23/03/2020 Version 3.7.9.7 (EP) - Amélioration de la gestion des docs attachés (3) + DOCS LIÉS : Amélioration de la gestion des docs attachés (3) - Enorme simplification grâce à la refactorisation des vues add et edit en une seule add_edit car elles sont très semblables - TODO : faire la meme chose pour toutes les vues add et edit des différents objets (materiel, suivi, emprunt...) 20/03/2020 Version 3.7.9.6 (EP) - Amélioration et nombreux bugfixes de la gestion des docs attachés (2) + DOCS LIÉS : Amélioration et nombreux bugfixes de la gestion des docs attachés (2) 16/03/2020 Version 3.7.9.5 (EP) Premiers bugfixes du nouveau site responsive (5) diff --git a/src/Controller/DocumentsController.php b/src/Controller/DocumentsController.php index da39704..30d7375 100755 --- a/src/Controller/DocumentsController.php +++ b/src/Controller/DocumentsController.php @@ -210,22 +210,33 @@ class DocumentsController extends AppController ])->first(); */ // $materiel - $materiel = $this->Documents->Materiels->get($document->materiel_id); - if ($materiel != null) { - $this->set('materiel', $materiel); - // $suivi - } else { - $suivi = $this->Documents->Suivis->find() - ->where([ - 'id =' => $document->suivi_id - ])->first(); - $this->set('suivi', $suivi); + //debug($document->materiel_id); + //exit; + if ($document->materiel_id !== null) { + $parent_controller = 'Materiels'; + $parent_fk = 'materiel_id'; + $PARENT_IS_MATERIEL = true; } - - $this->set('document', $document); + else { + $parent_controller = 'Suivis'; + $parent_fk = 'suivi_id'; + $PARENT_IS_MATERIEL = false; + } + $parent = $this->Documents->$parent_controller->get($document->$parent_fk); + /* + // suivi + $parent = $this->Documents->Suivis->find() + ->where([ + 'id =' => $document->suivi_id + ])->first(); + */ + $this->set(compact('document', 'PARENT_IS_MATERIEL', 'parent', 'parent_controller')); + //$this->set(compact('document', 'parent', 'parent_controller')); + /* (EP) inutile $this->set('_serialize', [ 'document' ]); + */ } @@ -272,6 +283,8 @@ class DocumentsController extends AppController if ($this->request->is(['post','patch','put'])) { $document = $this->Documents->patchEntity($document, $this->request->getData()); + //debug($document); + //exit; if ($IS_ADD) { /* @@ -286,17 +299,17 @@ class DocumentsController extends AppController } // SAVE - $action = $IS_ADD ? 'ajouté' : 'modifié'; + $verb = $IS_ADD ? 'ajouté' : 'modifié'; // - NOT SAVED if (! $this->Documents->save($document)) { //$this->myDebug($document->getErrors()); //debug($document->getErrors()); //debug($document); - $this->Flash->error(__("Le fichier n'a pas pu être $action")); + $this->Flash->error(__("Le fichier n'a pas pu être $verb")); } // - SAVED ok else { - $this->Flash->success(__("Le fichier a bien été $action")); + $this->Flash->success(__("Le fichier a bien été $verb")); //$id = $document->materiel_id; $parent_id = $document->materiel_id; diff --git a/src/Controller/EmpruntsController.php b/src/Controller/EmpruntsController.php index 9b07b3b..0583d4f 100755 --- a/src/Controller/EmpruntsController.php +++ b/src/Controller/EmpruntsController.php @@ -150,11 +150,19 @@ class EmpruntsController extends AppController if ($this->request->is(['patch','post','put'])) { //$entity = $this->Emprunts->patchEntity($suivi, $this->request->getData()); $entity = $this->$controller->patchEntity($entity, $this->request->getData()); + $verb = $IS_ADD ? 'ajouté' : 'modifié'; // SAVED OK //if ($this->Emprunts->save($suivi)) { - if ($this->save($entity)) { - $verb = $IS_ADD ? 'ajouté' : 'modifié'; + if ($this->$controller->save($entity)) { $this->Flash->success(__("L'emprunt a bien été $verb")); + $parent_id = $IS_ADD ? $this->request->getParam('pass.0') : $entity->materiel_id; + // (EP) Redirection vers la vue parente (materiel emprunté) (depuis add ou edit) + return $this->redirect([ + 'controller' => 'Materiels', + 'action' => 'view', + $parent_id + ]); + /* // ADD if ($IS_ADD) return $this->redirect([ 'controller' => 'Materiels', @@ -163,11 +171,12 @@ class EmpruntsController extends AppController ]); // EDIT else $this->setAction('view', $id); - /* equivalent à + /S equivalent à else return $this->redirect([ 'action' => 'view', $id ]); + S/ */ } // SAVED KO @@ -225,7 +234,7 @@ class EmpruntsController extends AppController ]); $this->set(compact( - 'IS_ADD', 'IS_EDIT', + 'IS_ADD', //'emprunt', // @deprecated 'entity', // nouveau nom @@ -428,9 +437,12 @@ class EmpruntsController extends AppController } else { $this->Flash->error(__('L\'emprunt n\'a pas pu être supprimé.')); } + $this->setAction('index'); + /* equivaut à return $this->redirect([ 'action' => 'index' ]); + */ } /** diff --git a/src/Controller/SuivisController.php b/src/Controller/SuivisController.php index 2c4e643..66ddb82 100755 --- a/src/Controller/SuivisController.php +++ b/src/Controller/SuivisController.php @@ -242,30 +242,47 @@ class SuivisController extends AppController $suivi->typemesure = "Indirect"; $suivi->panne_resolu = false; } + $verb = $IS_ADD ? 'ajouté' : 'modifié'; // SAVED OK if ($this->Suivis->save($suivi)) { - $verb = $IS_ADD ? 'ajouté' : 'modifié'; $this->Flash->success(__("Le suivi a bien été $verb")); - // ADD - if ($IS_ADD) return $this->redirect([ + // materiel id + //$parent_id = $IS_ADD ? $this->request->getParam('pass')[0] : $this->request->getData('materiel_id'); + $parent_id = $IS_ADD ? $this->request->getParam('pass.0') : $suivi->materiel_id; + // (EP) Redirection vers la vue parente (materiel suivi) (depuis add ou edit) + //if ($IS_ADD) return $this->redirect([ + return $this->redirect([ 'controller' => 'Materiels', 'action' => 'view', - $this->request->getAttribute('params')['pass'][0] + $parent_id + //$this->request->getParam('pass')[0] + //$this->request->getAttribute('params')['pass'][0] ]); - // EDIT + /* EDIT + //debug($this->request->getData()); + //else $this->setAction('view',$id); + // marche pas, pourquoi ??? + //debug($this->referer()); + //else return $this->redirect($this->referer()); + //else $this->setAction('index'); + /S (EP) equivalent à else return $this->redirect([ 'action' => 'index', $id ]); + S/ + */ } // SAVED KO else { $this->Flash->error(__("Le suivi n'a pas pu être $verb")); + /* if ($IS_ADD) return $this->redirect([ 'controller' => 'Materiels', 'action' => 'view', $this->request->getAttribute('params')['pass'][0] ]); + */ } } // POST @@ -387,7 +404,7 @@ class SuivisController extends AppController //$parent_id = $materiel_id; $entity = $suivi; $this->set(compact( - 'IS_ADD', 'IS_EDIT', + 'IS_ADD', 'unite', 'domaineresp', //'suivi', // @deprecated @@ -663,7 +680,7 @@ class SuivisController extends AppController 'delete' ]); $suivi = $this->Suivis->get($id); - $id=$suivi->materiel_id; + $parent_id = $suivi->materiel_id; if ($this->Suivis->delete($suivi)) { $this->Flash->success(__('Le suivi a bien été supprimé.')); } else { @@ -672,7 +689,7 @@ class SuivisController extends AppController return $this->redirect([ 'controller' => 'materiels', 'action' => 'view', - $id + $parent_id ]); } diff --git a/src/Model/Table/EmpruntsTable.php b/src/Model/Table/EmpruntsTable.php index edccb2d..2850e78 100755 --- a/src/Model/Table/EmpruntsTable.php +++ b/src/Model/Table/EmpruntsTable.php @@ -77,7 +77,7 @@ class EmpruntsTable extends AppTable */ // Ce champ s'appelle "Pièce" (emprunt interne) - $validator->notEmpty('e_lieu_detail', 'Le champ doit être rempli pour un emprunt interne.', + $validator->notEmpty('e_lieu_detail', 'Le champ doit être rempli (pour un emprunt interne)', function ($context) { //if ($context['providers']['entity']['emprunt_interne'] !== null) { if ( !empty($context['data']) && !is_null($context['data']['emprunt_interne']) ) { @@ -216,7 +216,7 @@ class EmpruntsTable extends AppTable }; $rules->add($checkSiteIsGiven, [ 'errorField' => 'site_id', - 'message' => 'Il faut préciser le site' + 'message' => 'Il faut préciser le site (pour un emprunt interne)' ]); diff --git a/src/Template/Documents/add_edit.ctp b/src/Template/Documents/add_edit.ctp index ec21b47..3eb42f8 100644 --- a/src/Template/Documents/add_edit.ctp +++ b/src/Template/Documents/add_edit.ctp @@ -1,7 +1,57 @@ Form->hidden($control_name, [ + echo $this->Form->hidden($field, [ //'default' => $parent_id, 'default' => $parent->id, ]); @@ -102,17 +151,16 @@ if (isset($photo)) { // - Type (hidden si photo) echo "(Si vous choisissez le type 'Photo', ce document sera affiché en tête de la fiche du $parent_type associé)"; - $f = 'control'; + $control = 'control'; $default = 1; - if (isset($photo)) { - $f = 'hidden'; + /* + if ($IS_EDIT) $default = null; + */ + if ($IS_ADD && isset($photo)) { + $control = 'hidden'; $default = $idType; } - if (!$IS_ADD) { - $f = 'control'; - $default = null; - } - echo $this->Form->$f('type_document_id', [ + echo $this->Form->$control('type_document_id', [ 'label' => 'Type', 'options' => $typesD, 'default' => $default // ADD only @@ -122,8 +170,8 @@ if (isset($photo)) { echo $this->Form->control('description'); // - File upload (chemin_file) - $f = $IS_ADD ? 'control' : 'hidden'; - echo $this->Form->$f('chemin_file', [ + $control = $IS_ADD ? 'control' : 'hidden'; + echo $this->Form->$control('chemin_file', [ 'label' => 'Fichier (' . substr($configuration->taille_max_doc / (1024 * 1024), 0, 4) . ' Mo max)', 'type' => 'file' ]); diff --git a/src/Template/Documents/view.ctp b/src/Template/Documents/view.ctp index af29c02..714d671 100755 --- a/src/Template/Documents/view.ctp +++ b/src/Template/Documents/view.ctp @@ -1,6 +1,10 @@ Html->link($materiel->designation, [ - 'controller' => 'Materiels', - 'action' => 'view', - $materiel->id - ])); - } else if (isset($suivi)) { - $displayElement(__('Suivi'), $this->Html->link('Suivi ' . $suivi->id, [ + // - Parent : lien vers le materiel (ou le suivi) + // matériel + //if (isset($materiel)) { + $parent_ref = $PARENT_IS_MATERIEL ? $parent->designation : $parent->intitule.' (suivi#'.$parent->id.')'; + $displayElement(__("Lié au $parent_name"), $this->Html->link($parent_ref, [ + 'controller' => $parent_controller, + 'action' => 'view', + $parent->id + ])); + /* + // suivi + //else if (isset($suivi)) { + else { + $displayElement(__('Suivi'), $this->Html->link('Suivi ' . $parent->id, [ 'controller' => 'Suivis', 'action' => 'view', - $suivi->id + $parent->id ])); } + */ // - Nom du doc $displayElement(__('Nom'), h($document->nom)); // - Type - debug($document); + //debug($document); $displayElement(__('Type'), $document->has('type_document') ? h($document->type_document->nom) : ''); /* diff --git a/src/Template/Emprunts/add_edit.ctp b/src/Template/Emprunts/add_edit.ctp index 2c1841b..515a122 100644 --- a/src/Template/Emprunts/add_edit.ctp +++ b/src/Template/Emprunts/add_edit.ctp @@ -1,9 +1,58 @@ '; // - nom emprunteur interne (hidden only pour Utilisateur) - if (! (in_array($role, [ + /* + debug($role); + $IS_USER = $role=='Utilisateur'; + $IS_USER = ! (in_array($role, [ 'Responsable', 'Administration', 'Administration Plus', 'Super Administrateur' - ]))) { + ])); + */ + if ($USER_IS_UTILISATEUR) { $f = 'hidden'; $disabled = true; } @@ -217,9 +273,17 @@ else { - Form->submit(__('Valider')) ?> + + + id, + $parent_controller + ); - Form->end() ?> + echo $this->Form->end(); + ?> diff --git a/src/Template/Materiels/add.ctp b/src/Template/Materiels/add.ctp index 6ae14e8..33b9591 100755 --- a/src/Template/Materiels/add.ctp +++ b/src/Template/Materiels/add.ctp @@ -23,7 +23,7 @@ use Cake\ORM\TableRegistry; // 1) FROM AppController: $PROFILE_USER = $PROFILE_USER; -$PROFILE_ADMIN = $PROFILE_USER; +$PROFILE_ADMIN = $PROFILE_ADMIN; $PROFILE_RESPONSABLE = $PROFILE_RESPONSABLE; $PROFILE_ADMINPLUS = $PROFILE_ADMINPLUS; $PROFILE_SUPERADMIN = $PROFILE_SUPERADMIN; @@ -57,8 +57,8 @@ $idGmNa = $idGmNa; $idGtNa = $idGtNa; // ET AUSSI QUELQUES FONCTIONS : -// $displayElement() -// $dateProchainControleVerif() +$displayElement = $displayElement; +$dateProchainControleVerif = $dateProchainControleVerif; // 2) FROM my own controller (MaterielController): diff --git a/src/Template/Suivis/add_edit.ctp b/src/Template/Suivis/add_edit.ctp index 950f604..76f686a 100644 --- a/src/Template/Suivis/add_edit.ctp +++ b/src/Template/Suivis/add_edit.ctp @@ -1,10 +1,60 @@ TRUE // ADD only : 'default' => 3, - 'empty' => "Choisir le type de suivi" + 'empty' => "Choisir le type de suivi", + 'required' => 'required' ]); // ADD only @@ -342,10 +394,17 @@ else { - - Form->submit(__('Enregistrer'))?> - - Form->end()?> + + + id, + $parent_controller + ); + + echo $this->Form->end(); + ?> diff --git a/tests/TestCase/Controller/MaterielsControllerTest.php b/tests/TestCase/Controller/MaterielsControllerTest.php index 4207fa4..52607d0 100755 --- a/tests/TestCase/Controller/MaterielsControllerTest.php +++ b/tests/TestCase/Controller/MaterielsControllerTest.php @@ -828,7 +828,7 @@ class MaterielsControllerTest extends General { $this->get('/materiels/index'); $this->assertResponseContains("Matos Test 2 VALIDATED", "Le matériel CREATED édité n'a pas pu etre passé à VALIDATED"); - // 3) Test qu'on NE PEUT PAS modifier un materiel VALIDATED (certains champs, a completer TODO:) (sauf SUPERADMIN) + // 3) Test qu'on NE PEUT PAS modifier un materiel VALIDATED (certains champs, a completer TODO:) $data = [ 'designation' => 'Matos Test 2 VALIDATED updated', //'sur_categorie_id' => 1, @@ -845,8 +845,11 @@ class MaterielsControllerTest extends General { ]; $this->post('/materiels/edit/2', $data); $this->get('/materiels/index'); + /* Exception pour Superadmin ? NON if ($role=="SUPER") $this->assertResponseContains("Matos Test 2 VALIDATED updated", "Le matériel VALIDATED édité n'a pas pu etre enregistré"); else $this->assertResponseNotContains("Matos Test 2 VALIDATED updated", "Un matériel VALIDATED ne devrait pas pouvoir être modifié"); + */ + $this->assertResponseNotContains("Matos Test 2 VALIDATED updated", "Un matériel VALIDATED ne devrait pas pouvoir être modifié"); // 4) Test que un edit anormal ne fonctionne pas (erreur sur champ status) $data = [ -- libgit2 0.21.2