Commit 4d0f315d7449429abd6d4da2089987750f02e619
1 parent
3151d13d
Exists in
master
and in
2 other branches
Bugfix et amelioration tests + Simplification des vues (en cours)
Showing
6 changed files
with
268 additions
and
249 deletions
Show diff stats
README.md
... | ... | @@ -53,10 +53,13 @@ Logiciel testé et validé sur les configurations suivantes : |
53 | 53 | |
54 | 54 | VERSION ACTUELLE |
55 | 55 | |
56 | -Date: 16/05/2019 | |
57 | -Version: 2.12.14 | |
56 | +Date: 20/05/2019 | |
57 | +Version: 2.12.17 | |
58 | 58 | Author: EP |
59 | -Commentaire: Ajout tests pour fonctionnalité "Copier ce materiel" | |
59 | +Commentaire: | |
60 | + Bugfix et amelioration tests | |
61 | + Simplification des vues (en cours) | |
62 | + | |
60 | 63 | |
61 | 64 | IMPORTANT : |
62 | 65 | - Pour connaitre la version actuelle, taper "./VERSION" |
... | ... | @@ -92,11 +95,19 @@ La liste ci-dessous n'est plus à jour, elle est désormais en ligne ici : https |
92 | 95 | |
93 | 96 | ----------------------------------------------------------------------------------------------------------- |
94 | 97 | |
98 | +20/05/2019 Version: 2.12.17 (EP) | |
99 | + | |
100 | + | |
101 | +17/05/2019 Version: 2.12.15-17 (EP) | |
102 | + Bugfix modif matos: on ne doit plus pouvoir modifier un materiel validé (ou plus) => il faut le dé-valider avant ! | |
103 | + Bugfix et amelioration tests | |
104 | + Simplification des vues (en cours) | |
105 | + | |
95 | 106 | 16/05/2019 Version: 2.12.12-14 (EP) |
96 | 107 | Bugfix ajout materiel |
97 | 108 | Bugfix tests |
98 | 109 | Ajout tests pour fonctionnalité "Copier ce materiel" |
99 | - | |
110 | + | |
100 | 111 | 15/05/2019 Version: 2.12.11 (EP) |
101 | 112 | Bugfix, simplification, et amélioration de la fonctionnalité "Copier ce matériel" |
102 | 113 | ... | ... |
src/Controller/AppController.php
... | ... | @@ -197,7 +197,7 @@ class AppController extends Controller |
197 | 197 | * @param string $id |
198 | 198 | */ |
199 | 199 | // public function isAuthorizedAction(AppController $controller, $roleLong, $action, $id=null, $user=null) { |
200 | - public function isAuthorizedAction($controller, $roleLong, $action, $id = null, $user = null) | |
200 | + public function isAuthorizedAction2($controller, $roleLong, $action, $id = null, $user = null) | |
201 | 201 | { |
202 | 202 | $doDEBUG = true; |
203 | 203 | $doDEBUG = false; |
... | ... | @@ -273,7 +273,7 @@ class AppController extends Controller |
273 | 273 | } |
274 | 274 | if ($doDEBUG) |
275 | 275 | debug("CAS6"); |
276 | - return $this->isAuthorizedAction($controller, $this->getPreviousRole($role), $action, $id, $user); | |
276 | + return $this->isAuthorizedAction2($controller, $this->getPreviousRole($role), $action, $id, $user); | |
277 | 277 | } |
278 | 278 | |
279 | 279 | // @todo |
... | ... | @@ -587,6 +587,11 @@ class AppController extends Controller |
587 | 587 | * |
588 | 588 | * @see \Cake\Controller\Controller::beforeFilter() 1) Autorisations SANS (ou AVANT) connexion |
589 | 589 | * 2) Ensuite, c'est isAuthorized qui gère |
590 | + * | |
591 | + * Cette méthode est appelée pendant l’event Controller.initialize qui se produit | |
592 | + * AVANT chaque action du controller. | |
593 | + * C’est un endroit pratique pour vérifier le statut d’une session ou les permissions d’un utilisateur. | |
594 | + * ATTENTION: cette méthode sera appelée pour les actions manquantes. | |
590 | 595 | * |
591 | 596 | */ |
592 | 597 | public function beforeFilter(Event $event) |
... | ... | @@ -697,7 +702,7 @@ class AppController extends Controller |
697 | 702 | $this->set('USER_IS_ADMINPLUS', $USER_IS_ADMINPLUS); |
698 | 703 | $this->set('USER_IS_SUPERADMIN', $USER_IS_SUPERADMIN); |
699 | 704 | $this->set('USER_IS_RESPONSABLE_OR_MORE', $USER_IS_RESPONSABLE_OR_MORE); |
700 | - $this->set('USER_IS_ADMIN_OR_MORE', $USER_IS_ADMIN_OR_MORE); | |
705 | + $this->set(compact('USER_IS_ADMIN_OR_MORE')); | |
701 | 706 | $this->set('USER_IS_ADMINPLUS_OR_MORE', $USER_IS_ADMINPLUS_OR_MORE); |
702 | 707 | |
703 | 708 | $this->set('priviledgedUser', $priviledgedUser); |
... | ... | @@ -747,10 +752,13 @@ class AppController extends Controller |
747 | 752 | ->first()['id']); |
748 | 753 | |
749 | 754 | $displayElement = function ($nom, $valeur, $params = "") { |
750 | - $balise = ($params != "") ? '<td ' . $params . '>' : '<td>'; | |
755 | + $TD = ($params=="") ? 'TD' : "TD $params"; | |
756 | + //$TD = ($params=="") ? '<TD>' : '<TD '.$params.'>'; | |
757 | + //$tdstyle = $params!="" ? $params : ''; | |
751 | 758 | // Ca c'est parce que sinon y'a au moins deux tests qui passent pas, a cause de l'espace dans la balise ... |
752 | - if ($valeur != "") | |
753 | - echo '<tr><td><strong>' . $nom . ' </strong></td>' . $balise . $valeur . '</td></tr>'; | |
759 | + //if ($valeur != "") echo '<tr> <td><strong>'.$nom.' </strong></td>' . $TD.$valeur.'</td></tr>'; | |
760 | + //if ($valeur != "") echo '<tr><td><strong>' . $nom . ' </strong></td>' . $balise . $valeur . '</td></tr>'; | |
761 | + if ($valeur!="") echo "<TR> <TD><strong>$nom</strong></TD> <$TD>$valeur</TD> </TR>"; | |
754 | 762 | }; |
755 | 763 | $this->set('displayElement', $displayElement); |
756 | 764 | |
... | ... | @@ -766,7 +774,31 @@ class AppController extends Controller |
766 | 774 | return (int) $strInterval; |
767 | 775 | }; |
768 | 776 | $this->set('dateProchainControleVerif', $dateProchainControleVerif); |
769 | - } | |
777 | + | |
778 | + // Pass this function to all views | |
779 | + //function echoActionButton($html, $icon_class, $title, $action, $id, $tip='', $controller='materiels', $mat=NULL, $photo=NULL) { | |
780 | + $echoActionButton = function($html, $icon_class, $title, $action, $id, $tip='', $controller='materiels', $mat=NULL, $photo=NULL) { | |
781 | + echo $html->link( | |
782 | + __("<i class=$icon_class></i> $title"), | |
783 | + [ | |
784 | + 'controller' => $controller, | |
785 | + 'action' => $action, | |
786 | + $id, | |
787 | + $mat, | |
788 | + $photo | |
789 | + ], | |
790 | + [ | |
791 | + 'title' => $tip, | |
792 | + 'escape' => false, | |
793 | + 'onclick' => 'return true;', | |
794 | + 'style' => 'margin-right: 10px' | |
795 | + ] | |
796 | + ); | |
797 | + }; | |
798 | + $this->set(compact('echoActionButton')); | |
799 | + | |
800 | + | |
801 | + } // beforeRender() | |
770 | 802 | |
771 | 803 | // "le materiel", "le suivi"... |
772 | 804 | protected function getArticle() | ... | ... |
src/Controller/MaterielsController.php
... | ... | @@ -140,14 +140,37 @@ class MaterielsController extends AppController |
140 | 140 | ) |
141 | 141 | ); |
142 | 142 | // $ACL |
143 | + | |
144 | + /* | |
145 | + * Cette méthode est appelée pendant l’event Controller.initialize qui se produit avant chaque action du controller. | |
146 | + * C’est un endroit pratique pour vérifier le statut d’une session ou les permissions d’un utilisateur. | |
147 | + * Attention: La méthode beforeFilter() sera appelée pour les actions manquantes. | |
148 | + * Retourner une réponse à partir d’une méthode beforeFilter ne va pas empêcher l’appel des autres écouteurs du même event. | |
149 | + * Vous devez explicitement stopper l’event (cf https://book.cakephp.org/3.0/fr/controllers.html) | |
150 | + * | |
151 | + */ | |
152 | + //use Cake\Event\Event; | |
153 | + public function beforeFilter(\Cake\Event\Event $event) | |
154 | + { | |
155 | + $this->myDebug("step 0: beforeFilter()"); | |
156 | + parent::beforeFilter($event); | |
157 | + } | |
143 | 158 | |
144 | 159 | /* |
145 | 160 | * EP added 13/6/17 |
146 | 161 | * Set some useful global variables for all (Materiel) views |
147 | 162 | * Overload beforeRender() |
163 | + * | |
164 | + * Cette méthode est appelée pendant l’event Controller.beforeRender qui se produit | |
165 | + * APRES l’action du controller mais AVANT que la vue ne soit rendue. | |
166 | + * Ce callback n’est pas souvent utilisé, mais peut-être nécessaire si vous appelez render() manuellement à la fin d’une action donnée | |
167 | + * | |
168 | + * Voir aussi beforeFilter() appellée AVANT l'action du controller | |
148 | 169 | */ |
149 | 170 | public function beforeRender(\Cake\Event\Event $event) |
150 | 171 | { |
172 | + $this->myDebug("step 3: beforeRender()"); | |
173 | + | |
151 | 174 | parent::beforeRender($event); |
152 | 175 | |
153 | 176 | // $this->layout = 'default'; |
... | ... | @@ -175,6 +198,16 @@ class MaterielsController extends AppController |
175 | 198 | * } |
176 | 199 | * } |
177 | 200 | */ |
201 | + | |
202 | + //TODO: temporaire, à MOVE dans AppController | |
203 | + /* | |
204 | + $action = $this->getActionPassed(); | |
205 | + if ($action == 'view') { | |
206 | + $CAN_EDIT = $IS_CREATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER); | |
207 | + $this->set(compact('CAN_EDIT')); | |
208 | + } | |
209 | + */ | |
210 | + | |
178 | 211 | } |
179 | 212 | |
180 | 213 | |
... | ... | @@ -182,14 +215,15 @@ class MaterielsController extends AppController |
182 | 215 | |
183 | 216 | /** |
184 | 217 | * |
185 | - * @param | |
186 | - * $user | |
218 | + * //param $user | |
219 | + * @param $userFromSession | |
187 | 220 | * @return boolean Give authorization for materiels |
188 | 221 | */ |
222 | + // CAKEPHP function | |
189 | 223 | public function isAuthorized($userFromSession) |
190 | 224 | { |
191 | 225 | //if (parent::isAuthorized($userFromSession)) return TRUE; |
192 | - | |
226 | + $this->myDebug("step 1: isAuthorized()"); | |
193 | 227 | $user = $userFromSession; |
194 | 228 | $configuration = $this->confLabinvent; |
195 | 229 | $userCname = $user[$configuration->ldap_authenticationType][0]; |
... | ... | @@ -221,8 +255,20 @@ class MaterielsController extends AppController |
221 | 255 | * |
222 | 256 | * Tout le reste en dessous de cette ligne devient inutile !!! |
223 | 257 | */ |
224 | - $this->myDebug("isAuthorizedAction ? " . $this->isAuthorizedAction($this, $role, $action, $id, $user)); | |
258 | + $this->myDebug("isAuthorizedAction ? " . $this->isAuthorizedAction2($this, $role, $action, $id, $user)); | |
259 | + return $this->isAuthorizedAction($role, $action, $id, $userFromSession, $userCname); | |
260 | + | |
261 | + } // isAuthorized | |
225 | 262 | |
263 | + | |
264 | + /* | |
265 | + * EP own defined function (18/5/19), date importante | |
266 | + * Avantage: TOUTES les ACL (droits des utilisateurs) sont définies en UN SEUL UNIQUE endroit: ICI | |
267 | + * Les 3 niveaux successifs parcourus par cakephp (isAuthorized() puis beforeRender() puis la VUE) font tous appels à cette MEME fonction | |
268 | + * On ne définit et modifie les droits qu'ici et nulle part ailleurs, surtout pas dans les vues !!! | |
269 | + */ | |
270 | + private function isAuthorizedAction($role, $action, $id, $user, $userCname) { | |
271 | + | |
226 | 272 | /* |
227 | 273 | * Structure mise en place: |
228 | 274 | * |
... | ... | @@ -230,7 +276,6 @@ class MaterielsController extends AppController |
230 | 276 | * switch ROLE |
231 | 277 | * |
232 | 278 | */ |
233 | - | |
234 | 279 | switch ($action) { |
235 | 280 | |
236 | 281 | // INDEX, VIEW, ADD, FIND |
... | ... | @@ -452,7 +497,7 @@ class MaterielsController extends AppController |
452 | 497 | } // end of switch case |
453 | 498 | |
454 | 499 | // DEFAULT PARENT RULE |
455 | - return parent::isAuthorized($userFromSession); | |
500 | + return parent::isAuthorized($user); | |
456 | 501 | } |
457 | 502 | |
458 | 503 | /* |
... | ... | @@ -548,6 +593,8 @@ class MaterielsController extends AppController |
548 | 593 | */ |
549 | 594 | public function index() |
550 | 595 | { |
596 | + $this->myDebug("step 2: index()"); | |
597 | + | |
551 | 598 | $condition = ''; |
552 | 599 | if (isset($this->request->getAttribute('params')['pass'][0])) { |
553 | 600 | $condition = [ |
... | ... | @@ -685,6 +732,7 @@ class MaterielsController extends AppController |
685 | 732 | */ |
686 | 733 | public function view($id = null) |
687 | 734 | { |
735 | + $this->myDebug("step 2: view()"); | |
688 | 736 | $materiel = $this->Materiels->get($id, [ |
689 | 737 | 'contain' => [ |
690 | 738 | 'SurCategories', |
... | ... | @@ -750,6 +798,13 @@ class MaterielsController extends AppController |
750 | 798 | $this->set('_serialize', [ |
751 | 799 | 'materiel' |
752 | 800 | ]); |
801 | + | |
802 | + // TODO, mais plutot dans le beforeFilter() ou beforeRender()... | |
803 | + /* | |
804 | + $CAN_EDIT = $IS_CREATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER); | |
805 | + $this->set(compact('CAN_EDIT')); | |
806 | + */ | |
807 | + | |
753 | 808 | } // view |
754 | 809 | |
755 | 810 | |
... | ... | @@ -763,6 +818,8 @@ class MaterielsController extends AppController |
763 | 818 | */ |
764 | 819 | public function add_or_edit($is_add, $id=null, $valeurs=null, $erreurs=null) |
765 | 820 | { |
821 | + $this->myDebug("step 2: add_or_edit()"); | |
822 | + | |
766 | 823 | $usersTable = TableRegistry::getTableLocator()->get('Users'); |
767 | 824 | |
768 | 825 | // Set $materiel | ... | ... |
src/Template/Materiels/view.ctp
... | ... | @@ -3,6 +3,40 @@ use Cake\I18n\Time; |
3 | 3 | use Cake\I18n\Date; |
4 | 4 | use Cake\ORM\TableRegistry; |
5 | 5 | |
6 | +// (EP 18/5/19) Elements set by Controller for this view: | |
7 | +// - Constants : | |
8 | +//$CAN_EDIT = $CAN_EDIT; | |
9 | +$PDF_ENGINE = $PDF_ENGINE; | |
10 | +$USER_IS_ADMIN_OR_MORE = $USER_IS_ADMIN_OR_MORE; | |
11 | +// - Fonctions : | |
12 | +$displayElement = $displayElement; | |
13 | +$dateProchainControleVerif = $dateProchainControleVerif; | |
14 | +$echoActionButton = $echoActionButton; | |
15 | +// TODO: yena plein d'autres | |
16 | +// ... | |
17 | + | |
18 | +/* (EP) moved to controller | |
19 | +function $echoActionButton($html, $icon_class, $title, $action, $id, $tip='', $controller='materiels', $mat=NULL, $photo=NULL) { | |
20 | + echo $html->link( | |
21 | + __("<i class=$icon_class></i> $title"), | |
22 | + [ | |
23 | + 'controller' => $controller, | |
24 | + 'action' => $action, | |
25 | + $id, | |
26 | + $mat, | |
27 | + $photo | |
28 | + ], | |
29 | + [ | |
30 | + 'title' => $tip, | |
31 | + 'escape' => false, | |
32 | + 'onclick' => 'return true;', | |
33 | + 'style' => 'margin-right: 10px' | |
34 | + ] | |
35 | + ); | |
36 | +} | |
37 | +*/ | |
38 | + | |
39 | + | |
6 | 40 | //$PDF_ENGINE = "FPDF"; |
7 | 41 | //$PDF_ENGINE = "DOMPDF"; |
8 | 42 | |
... | ... | @@ -82,6 +116,13 @@ $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER = $USER_IS_RESPONSABLE && in_array($us |
82 | 116 | |
83 | 117 | $USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)); |
84 | 118 | |
119 | + | |
120 | +// TODO: to be set by controller | |
121 | +$CAN_EDIT = $IS_CREATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER); | |
122 | +$CAN_ATTACH_A_DOC = $USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER; | |
123 | +$CAN_COPY = $IS_CREATED and ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER); | |
124 | +$CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN_OR_MORE; | |
125 | + | |
85 | 126 | ?> |
86 | 127 | |
87 | 128 | |
... | ... | @@ -89,52 +130,28 @@ $USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE && ((isset($priviledg |
89 | 130 | <div class="materiels view"> |
90 | 131 | |
91 | 132 | <h2> |
92 | - <?php | |
93 | - | |
94 | - /* | |
95 | - echo $materiel; | |
96 | - $materiel2 = TableRegistry::get('Materiels')->find('all', [ | |
97 | - 'conditions' => [ | |
98 | - 'numero_laboratoire' => "IRAP18-2018-0001" | |
99 | - ], | |
100 | - 'contain' => ['Fournisseurs', 'Organismes'] | |
101 | - ] | |
102 | - )->first(); | |
103 | - $materiel2 = TableRegistry::get('Materiels')->find('all')->contain(['Fournisseurs', 'Organismes']); | |
104 | - foreach ($materiel2 as $matos) { | |
105 | - echo $matos; | |
106 | - echo "fournisseur=".$matos->fournisseur->nom; | |
107 | - echo "id=".$matos->id; | |
108 | - } | |
109 | - echo "fournisseur=".$materiel2->fournisseur->nom; | |
110 | - echo "<br/>"; | |
111 | - */ | |
112 | - | |
113 | -// if (h($materiel->status) == 'ARCHIVED') echo '<i class="icon-inbox"></i> '; | |
114 | -if ($IS_ARCHIVED) | |
115 | - echo '<i class="icon-inbox"></i> '; | |
116 | -$panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; | |
117 | -?> | |
118 | - <?=h($materiel->designation) . $panne?> | |
119 | - | |
120 | - <span style="font-size: 70%; color: grey;"> | |
121 | - <?=h($materiel->numero_laboratoire)?> | |
122 | - <?php | |
123 | - // if (h($materiel->status) == 'ARCHIVED') echo ' (Archivé)'; | |
124 | - if ($IS_ARCHIVED) | |
125 | - echo ' (Archivé)'; | |
126 | - ?> | |
127 | - </span> | |
133 | + <?php | |
134 | + // if (h($materiel->status) == 'ARCHIVED') echo '<i class="icon-inbox"></i> '; | |
135 | + if ($IS_ARCHIVED) echo '<i class="icon-inbox"></i> '; | |
136 | + $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; | |
137 | + ?> | |
138 | + <?=h($materiel->designation) . $panne?> | |
139 | + <span style="font-size: 70%; color: grey;"><?=h($materiel->numero_laboratoire)?> | |
140 | + <?php | |
141 | + if ($IS_ARCHIVED) echo ' (Archivé)'; | |
142 | + ?> | |
143 | + </span> | |
128 | 144 | </h2> |
129 | 145 | <br /> |
130 | 146 | |
131 | 147 | <div id="materiel_images" style="text-align: center;"> |
132 | 148 | <?php |
133 | - //maintenant que les dénominations des fichiers dl on changé on a besoin des | |
134 | - //informations de la photo pour retrouver son nom et l'afficher, l'id ne suffit plus | |
135 | - //on parcourt donc les documents liés à ce matériel | |
136 | - foreach ($materiel->documents as $documents) : | |
137 | - //et si le document est la photo liée, on l'affiche, pour cela | |
149 | + /* Maintenant que les dénominations des fichiers dl on changé on a besoin des | |
150 | + * informations de la photo pour retrouver son nom et l'afficher, l'id ne suffit plus | |
151 | + * on parcourt donc les documents liés à ce matériel | |
152 | + */ | |
153 | + foreach ($materiel->documents as $documents) { | |
154 | + // et si le document est la photo liée, on l'affiche, pour cela | |
138 | 155 | if($documents->photo) { |
139 | 156 | //on récupère le doc |
140 | 157 | $photo = $documents; |
... | ... | @@ -149,11 +166,10 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
149 | 166 | 'style' => 'max-width: 300px; text-align: center;' |
150 | 167 | ]); |
151 | 168 | } |
152 | - } | |
153 | - endforeach ; | |
154 | - | |
169 | + } | |
170 | + } | |
155 | 171 | |
156 | - // Url transformed in QrCode | |
172 | + // QRCODE (Url) | |
157 | 173 | $this->request->getSession()->write("qrUrl", $this->request->env('SERVER_NAME') . $this->request->env('REQUEST_URI')); |
158 | 174 | $this->requestAction('/QrCodes/creer/'); |
159 | 175 | echo $this->Html->image('qrcodes/' . $this->request->getSession() |
... | ... | @@ -167,50 +183,29 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
167 | 183 | |
168 | 184 | |
169 | 185 | <!-- BOUTONS --> |
170 | - | |
171 | - <div id="boutons" class="actions" | |
172 | - style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;"> | |
186 | + <div id="boutons" class="actions" style="margin-bottom:20px; width:100%; float:none; padding:5px 0;"> | |
173 | 187 | |
174 | 188 | <?php |
175 | 189 | // CREATED or VALIDATED |
176 | 190 | // if ( in_array($materiel->status, ['CREATED','VALIDATED']) ) { |
177 | 191 | // (EP 17/5/19) Ben non, on peut pas éditer si validé !!! |
178 | 192 | //if ($IS_CREATED || $IS_VALIDATED) { |
179 | - if ($IS_CREATED) { | |
180 | - if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER)/* | |
181 | - //in_array($role, ['Administration','Administration Plus','Super Administrateur']) | |
182 | - || | |
183 | - ( | |
184 | - //$role == 'Utilisateur' | |
185 | - //&& in_array($username, [$materiel->nom_createur, $materiel->nom_responsable]) | |
186 | - ) | |
187 | - || | |
188 | - ( | |
189 | - $role == 'Responsable' | |
190 | - && ( | |
191 | - ( | |
192 | - isset($priviledgedUser->groupes_metier_id) | |
193 | - && $priviledgedUser->groupes_metier_id != $idGmNa | |
194 | - && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id | |
195 | - ) | |
196 | - || | |
197 | - ( | |
198 | - isset($priviledgedUser->groupe_thematique_id) | |
199 | - && $priviledgedUser->groupe_thematique_id != $idGtNa | |
200 | - && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id | |
201 | - ) | |
202 | - ) | |
203 | - ) | |
204 | - */ | |
205 | - echo $this->Html->link(__('<i class="icon-pencil"></i> Editer ce matériel'), [ | |
206 | - 'action' => 'edit', | |
207 | - $materiel->id | |
208 | - ], [ | |
209 | - 'escape' => false, | |
210 | - 'onclick' => 'return true;', | |
211 | - 'style' => 'margin-right: 10px' | |
212 | - ]); | |
213 | - } | |
193 | + //if ($IS_CREATED) { | |
194 | + if ($CAN_EDIT) $echoActionButton($this->Html, 'icon-pencil', 'Editer ce matériel', 'edit', $materiel->id); | |
195 | + /* | |
196 | + echo $this->Html->link( | |
197 | + __('<i class="icon-pencil"></i> Editer ce matériel'), | |
198 | + [ | |
199 | + 'action' => 'edit', | |
200 | + $materiel->id | |
201 | + ], | |
202 | + [ | |
203 | + 'escape' => false, | |
204 | + 'onclick' => 'return true;', | |
205 | + 'style' => 'margin-right: 10px' | |
206 | + ] | |
207 | + ); | |
208 | + */ | |
214 | 209 | |
215 | 210 | /* |
216 | 211 | * // TOBEARCHIVED+ |
... | ... | @@ -231,6 +226,8 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
231 | 226 | if ($IS_VALIDATED) { |
232 | 227 | |
233 | 228 | // BOUTON NOUVEAU SUIVI |
229 | + $echoActionButton($this->Html, 'icon-plus', 'Nouv. Suivi', 'add', $materiel->id, 'Faire un nouveau suivi de ce matériel', 'suivis'); | |
230 | + /* | |
234 | 231 | echo $this->Html->link('<i class="icon-plus"></i> Nouv. Suivi', [ |
235 | 232 | 'controller' => 'suivis', |
236 | 233 | 'action' => 'add', |
... | ... | @@ -240,8 +237,11 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
240 | 237 | 'style' => 'margin-right: 10px', |
241 | 238 | 'escape' => false |
242 | 239 | ]); // End link |
243 | - | |
240 | + */ | |
241 | + | |
244 | 242 | // BOUTON NOUVEL EMPRUNT |
243 | + $echoActionButton($this->Html, 'icon-plus', 'Nouv. Emprunt', 'add', $materiel->id, 'Faire un nouvel emprunt de ce matériel', 'emprunts'); | |
244 | + /* | |
245 | 245 | echo $this->Html->link('<i class="icon-plus"></i> Nouv. Emprunt', [ |
246 | 246 | 'controller' => 'emprunts', |
247 | 247 | 'action' => 'add', |
... | ... | @@ -251,36 +251,19 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
251 | 251 | 'style' => 'margin-right: 10px', |
252 | 252 | 'escape' => false |
253 | 253 | ]); // End link |
254 | + */ | |
254 | 255 | } |
255 | 256 | |
256 | - // BOUTON "Lier un Doc" | |
257 | - if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER) { | |
257 | + // BOUTONS "Lier un Doc" et "Remplacer/Lier photo" | |
258 | + if ($CAN_ATTACH_A_DOC) { | |
259 | + //if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER) { | |
260 | + $echoActionButton($this->Html, 'icon-file', 'Lier un Doc.', 'add', $materiel->id, 'Attacher un Doc. à ce matériel', 'documents', 'mat'); | |
261 | + // BOUTON "photo" | |
262 | + if ($materiel->photo_id != null) | |
263 | + $echoActionButton($this->Html, 'icon-file', 'Remplacer la photo.', 'add', $materiel->id, 'Remplacer la photo de ce matériel', 'documents', 'mat', 'photo'); | |
264 | + else | |
265 | + $echoActionButton($this->Html, 'icon-file', 'Lier une photo.', 'add', $materiel->id, 'Attacher une photo à ce matériel', 'documents', 'mat', 'photo'); | |
258 | 266 | /* |
259 | - * if ( | |
260 | - * in_array($role, ['Administration','Administration Plus','Super Administrateur']) | |
261 | - * || | |
262 | - * ( | |
263 | - * $role == 'Utilisateur' | |
264 | - * && in_array($username, [$materiel->nom_createur,$materiel->nom_responsable]) | |
265 | - * ) | |
266 | - * || ( | |
267 | - * $role == 'Responsable' | |
268 | - * && ( | |
269 | - * ( | |
270 | - * isset($priviledgedUser->groupes_metier_id) | |
271 | - * && $priviledgedUser->groupes_metier_id != $idGmNa | |
272 | - * && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id | |
273 | - * ) | |
274 | - * || | |
275 | - * ( | |
276 | - * isset($priviledgedUser->groupe_thematique_id) | |
277 | - * && $priviledgedUser->groupe_thematique_id != $idGtNa | |
278 | - * && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id | |
279 | - * ) | |
280 | - * ) | |
281 | - * ) | |
282 | - * ) { | |
283 | - */ | |
284 | 267 | echo $this->Html->link('<i class="icon-file"></i> Lier un Doc.', [ |
285 | 268 | 'controller' => 'documents', |
286 | 269 | 'action' => 'add', |
... | ... | @@ -291,9 +274,9 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
291 | 274 | 'style' => 'margin-right: 10px', |
292 | 275 | 'escape' => false |
293 | 276 | ]); |
277 | + */ | |
294 | 278 | |
295 | - // BOUTON "photo" | |
296 | - if ($materiel->photo_id != null) { | |
279 | + /* | |
297 | 280 | echo $this->Html->link('<i class="icon-file"></i> Remplacer la photo.', [ |
298 | 281 | 'controller' => 'documents', |
299 | 282 | 'action' => 'add', |
... | ... | @@ -305,7 +288,8 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
305 | 288 | 'style' => 'margin-right: 10px', |
306 | 289 | 'escape' => false |
307 | 290 | ]); |
308 | - } else { | |
291 | + */ | |
292 | + /* | |
309 | 293 | echo $this->Html->link('<i class="icon-file"></i> Lier une photo.', [ |
310 | 294 | 'controller' => 'documents', |
311 | 295 | 'action' => 'add', |
... | ... | @@ -317,7 +301,7 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
317 | 301 | 'style' => 'margin-right: 10px', |
318 | 302 | 'escape' => false |
319 | 303 | ]); |
320 | - } | |
304 | + */ | |
321 | 305 | } // BOUTON Lier un doc |
322 | 306 | |
323 | 307 | // Doc admission et sortie (admin+) |
... | ... | @@ -337,12 +321,14 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
337 | 321 | $data = $materiel->numero_laboratoire . ".pdf"; |
338 | 322 | } |
339 | 323 | // if (($materiel->status == 'VALIDATED') || ($materiel->status == 'CREATED')) { |
324 | + $echoActionButton($this->Html, 'icon-file', 'Doc. admission', $action, $data, "Voir le document d'admission", 'documents'); | |
325 | + /* | |
340 | 326 | echo $this->Html->link('<i class="icon-file"></i> Doc. admission', [ |
341 | 327 | 'controller' => 'documents', |
342 | - /* | |
328 | + /// | |
343 | 329 | 'action' => 'admission', |
344 | 330 | $materiel->numero_laboratoire |
345 | - */ | |
331 | + /// | |
346 | 332 | 'action' => $action, |
347 | 333 | $data |
348 | 334 | ], [ |
... | ... | @@ -350,6 +336,7 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
350 | 336 | 'style' => 'margin-right: 10px', |
351 | 337 | 'escape' => false |
352 | 338 | ]); |
339 | + */ | |
353 | 340 | } |
354 | 341 | |
355 | 342 | // Doc sortie (admin only) |
... | ... | @@ -365,6 +352,8 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
365 | 352 | $data = $materiel->numero_laboratoire . ".pdf"; |
366 | 353 | } |
367 | 354 | // else if (($materiel->status == 'ARCHIVED') || ($materiel->status == 'TOBEARCHIVED')) { |
355 | + $echoActionButton($this->Html, 'icon-file', 'Doc. sortie', $action, $data, "Voir le document de sortie", 'documents'); | |
356 | + /* | |
368 | 357 | echo $this->Html->link('<i class="icon-file"></i> Doc. sortie', [ |
369 | 358 | 'controller' => 'documents', |
370 | 359 | 'action' => $action, |
... | ... | @@ -380,6 +369,7 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
380 | 369 | 'style' => 'margin-right: 10px', |
381 | 370 | 'escape' => false |
382 | 371 | ]); |
372 | + */ | |
383 | 373 | } |
384 | 374 | } |
385 | 375 | |
... | ... | @@ -473,6 +463,8 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
473 | 463 | } // BOUTON changement statut |
474 | 464 | |
475 | 465 | // BOUTON Copier (seulement pour les materiels qui sont CREATED et pour les ADMINet+ ou USER owner) |
466 | + if ($CAN_COPY) $echoActionButton($this->Html, 'icon-plus', 'Copier ce matériel', 'add', $materiel->id, "Copier ce matériel"); | |
467 | + /* | |
476 | 468 | if ( $IS_CREATED and ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER) ) |
477 | 469 | echo $this->Html->link('<i class="icon-pencil"></i> Copier ce matériel', |
478 | 470 | [ |
... | ... | @@ -485,9 +477,11 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
485 | 477 | 'style' => 'margin-right: 10px; margin-top: 10px; display: inline-block', |
486 | 478 | 'escape' => false |
487 | 479 | ]); |
480 | + */ | |
488 | 481 | |
489 | 482 | // BOUTON ETIQUETTE (si imprimante disponible) |
490 | - if ($IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN_OR_MORE) { | |
483 | + if ($CAN_PRINT_LABEL) { | |
484 | + //if ($IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN_OR_MORE) { | |
491 | 485 | /* |
492 | 486 | in_array($role, [ |
493 | 487 | 'Administration', |
... | ... | @@ -707,32 +701,6 @@ if ($USER_IS_ADMIN_OR_MORE) { |
707 | 701 | <td class="actions" style="padding: 6px 0; text-align: left;"> |
708 | 702 | <?php |
709 | 703 | if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER) { |
710 | - /* | |
711 | - * if ( | |
712 | - * in_array($role, ['Administration','Administration Plus','Super Administrateur']) | |
713 | - * || | |
714 | - * ( | |
715 | - * $role == 'Utilisateur' | |
716 | - * && in_array($username, [$materiel->nom_createur,$materiel->nom_responsable]) | |
717 | - * ) | |
718 | - * || ( | |
719 | - * $role == 'Responsable' | |
720 | - * && ( | |
721 | - * ( | |
722 | - * isset($priviledgedUser->groupes_metier_id) | |
723 | - * && $priviledgedUser->groupes_metier_id != $idGmNa | |
724 | - * && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id | |
725 | - * ) | |
726 | - * || | |
727 | - * ( | |
728 | - * isset($priviledgedUser->groupe_thematique_id) | |
729 | - * && $priviledgedUser->groupe_thematique_id != $idGtNa | |
730 | - * && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id | |
731 | - * ) | |
732 | - * ) | |
733 | - * ) | |
734 | - * ) { | |
735 | - */ | |
736 | 704 | echo $this->Html->link(__('<i class="icon-pencil"></i>'), [ |
737 | 705 | 'controller' => 'Suivis', |
738 | 706 | 'action' => 'edit', |
... | ... | @@ -797,7 +765,7 @@ if ($USER_IS_ADMIN_OR_MORE) { |
797 | 765 | </tr> |
798 | 766 | <?php |
799 | 767 | |
800 | -foreach ($materiel->emprunts as $emprunt) : | |
768 | + foreach ($materiel->emprunts as $emprunt) : | |
801 | 769 | $type = 'Externe'; |
802 | 770 | $lieu = $emprunt['laboratoire']; |
803 | 771 | if ($emprunt['emprunt_interne'] == 1) { |
... | ... | @@ -812,33 +780,7 @@ foreach ($materiel->emprunts as $emprunt) : |
812 | 780 | <tr> |
813 | 781 | <td class="actions" style="padding: 6px 0; text-align: left;"> |
814 | 782 | <?php |
815 | - if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER ) { | |
816 | - /* | |
817 | - * if ( | |
818 | - * in_array($role, ['Administration','Administration Plus','Super Administrateur']) | |
819 | - * || | |
820 | - * ( | |
821 | - * $role == 'Utilisateur' | |
822 | - * && in_array($username, [$materiel->nom_createur,$materiel->nom_responsable]) | |
823 | - * ) | |
824 | - * || ( | |
825 | - * $role == 'Responsable' | |
826 | - * && ( | |
827 | - * ( | |
828 | - * isset($priviledgedUser->groupes_metier_id) | |
829 | - * && $priviledgedUser->groupes_metier_id != $idGmNa | |
830 | - * && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id | |
831 | - * ) | |
832 | - * || | |
833 | - * ( | |
834 | - * isset($priviledgedUser->groupe_thematique_id) | |
835 | - * && $priviledgedUser->groupe_thematique_id != $idGtNa | |
836 | - * && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id | |
837 | - * ) | |
838 | - * ) | |
839 | - * ) | |
840 | - * ) { | |
841 | - */ | |
783 | + if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER ) { | |
842 | 784 | echo $this->Html->link(__('<i class="icon-pencil"></i>'), [ |
843 | 785 | 'controller' => 'Emprunts', |
844 | 786 | 'action' => 'edit', |
... | ... | @@ -919,33 +861,6 @@ foreach ($materiel->emprunts as $emprunt) : |
919 | 861 | ]); |
920 | 862 | } |
921 | 863 | if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER) { |
922 | - /* | |
923 | - * if ( | |
924 | - * in_array($role, ['Administration','Administration Plus','Super Administrateur']) | |
925 | - * || | |
926 | - * ( | |
927 | - * $role == 'Utilisateur' | |
928 | - * && in_array($username, [$materiel->nom_createur,$materiel->nom_responsable]) | |
929 | - * ) | |
930 | - * || | |
931 | - * ( | |
932 | - * $role == 'Responsable' | |
933 | - * && ( | |
934 | - * ( | |
935 | - * isset($priviledgedUser->groupes_metier_id) | |
936 | - * && $priviledgedUser->groupes_metier_id != $idGmNa | |
937 | - * && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id | |
938 | - * ) | |
939 | - * || | |
940 | - * ( | |
941 | - * isset($priviledgedUser->groupe_thematique_id) | |
942 | - * && $priviledgedUser->groupe_thematique_id != $idGtNa | |
943 | - * && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id | |
944 | - * ) | |
945 | - * ) | |
946 | - * ) | |
947 | - * ) { | |
948 | - */ | |
949 | 864 | echo $this->Html->link(__('<i class="icon-pencil"></i>'), [ |
950 | 865 | 'controller' => 'Documents', |
951 | 866 | 'action' => 'edit', | ... | ... |
src/Template/Suivis/view.ctp
... | ... | @@ -58,11 +58,15 @@ |
58 | 58 | else |
59 | 59 | $style = '"color: green"'; |
60 | 60 | |
61 | - $displayElement(__('Materiel'), $suivi->has('materiel') ? $this->Html->link($suivi->materiel->designation, [ | |
62 | - 'controller' => 'Materiels', | |
63 | - 'action' => 'view', | |
64 | - $suivi->materiel->id | |
65 | - ]) : ''); | |
61 | + $displayElement(__('Materiel'), $suivi->has('materiel') ? | |
62 | + $this->Html->link($suivi->materiel->designation, [ | |
63 | + 'controller' => 'Materiels', | |
64 | + 'action' => 'view', | |
65 | + $suivi->materiel->id | |
66 | + ]) | |
67 | + : | |
68 | + '' | |
69 | + ); | |
66 | 70 | $displayElement(__('Numéro interne (labo)'), $suivi->has('materiel') ? h($suivi->materiel->numero_laboratoire) : ''); |
67 | 71 | $displayElement(__('Statut'), h($suivi->statut)); |
68 | 72 | $displayElement(__('Prestataire'), h($suivi->organisme)); | ... | ... |
tests/TestCase/Controller/MaterielsControllerTest.php
... | ... | @@ -125,6 +125,23 @@ class MaterielsControllerTest extends General { |
125 | 125 | // Idem dataProviderRoles5 mais avec USER_from_ldap en plus: |
126 | 126 | public function dataProviderRoles6() { return $this->ROLES6; } |
127 | 127 | |
128 | + | |
129 | + private function _checkMaterielExistsInViewsIndexAndViewAndInDatabase($role, $id, $designation=NULL, $num_inventaire=NULL) {} | |
130 | + private function _checkMaterielExistsInViewsIndexAndView($role, $id, $designation=NULL, $num_inventaire=NULL) {} | |
131 | + private function _checkMaterielExistsInViewIndex($role, $id, $designation=NULL, $num_inventaire=NULL) {} | |
132 | + private function _checkMaterielExistsInViewView($role, $id, $designation=NULL, $num_inventaire=NULL) {} | |
133 | + private function _checkMaterielExistsInDatabase($role, $id, $designation=NULL, $num_inventaire=NULL) {} | |
134 | + private function _checkMaterielViewIsOK($role, $id, $designation=NULL, $num_inventaire=NULL) {} | |
135 | + private function _checkNbMaterielInIndexViewIs(bool $COPIED, $role, $nbmat, $designation=NULL, $num_inventaire=NULL) { | |
136 | + $this->get('/materiels/index'); | |
137 | + if (! $COPIED) | |
138 | + $this->assertResponseNotContains("Liste des matériels (".$nbmat.")", $role); | |
139 | + else { | |
140 | + $this->assertResponseContains("Liste des matériels (".$nbmat.")", $role); | |
141 | + if (isset($designation)) $this->assertResponseContains($designation, "Le matériel ne s'ajoute pas correctement."); | |
142 | + if (isset($num_inventaire)) $this->assertResponseContains($num_inventaire, "La génération du n°de labo n'est pas bonne."); | |
143 | + } | |
144 | + } | |
128 | 145 | |
129 | 146 | |
130 | 147 | /* |
... | ... | @@ -225,7 +242,7 @@ class MaterielsControllerTest extends General { |
225 | 242 | */ |
226 | 243 | } |
227 | 244 | private function _testEasyACL(AppController $controller, $roleLong, $action, $expectedRule) { |
228 | - $rule = $controller->isAuthorizedAction($controller, $roleLong, $action); | |
245 | + $rule = $controller->isAuthorizedAction2($controller, $roleLong, $action); | |
229 | 246 | $this->assertEquals($expectedRule, $rule, $roleLong.' do '.$action); |
230 | 247 | } |
231 | 248 | |
... | ... | @@ -655,7 +672,7 @@ class MaterielsControllerTest extends General { |
655 | 672 | $this->_testMatCopy(2, TRUE, $role, 1, $modified_data, 'TEST-2016-0015'); |
656 | 673 | |
657 | 674 | // 3) RULE MATERIEL.COPY.3 : |
658 | - // Impossible de copier un matos de status superieur à CREATED (sauf pour SUPERADMIN) | |
675 | + // Impossible de copier un matos de statut superieur à CREATED (sauf pour SUPERADMIN) | |
659 | 676 | $this->_testMatCopy(3, $role=="SUPER", $role, 3); |
660 | 677 | |
661 | 678 | // 4) RULE MATERIEL.COPY.4 : |
... | ... | @@ -666,26 +683,8 @@ class MaterielsControllerTest extends General { |
666 | 683 | |
667 | 684 | } |
668 | 685 | |
669 | - | |
670 | - private function _checkMaterielExistsInViewsIndexAndViewAndInDatabase($role, $id, $designation=NULL, $num_inventaire=NULL) {} | |
671 | - private function _checkMaterielExistsInViewsIndexAndView($role, $id, $designation=NULL, $num_inventaire=NULL) {} | |
672 | - private function _checkMaterielExistsInViewIndex($role, $id, $designation=NULL, $num_inventaire=NULL) {} | |
673 | - private function _checkMaterielExistsInViewView($role, $id, $designation=NULL, $num_inventaire=NULL) {} | |
674 | - private function _checkMaterielExistsInDatabase($role, $id, $designation=NULL, $num_inventaire=NULL) {} | |
675 | - private function _checkMaterielViewIsOK($role, $id, $designation=NULL, $num_inventaire=NULL) {} | |
676 | - private function _checkNbMaterielInIndexViewIs(bool $COPIED, $role, $nbmat, $designation=NULL, $num_inventaire=NULL) { | |
677 | - $this->get('/materiels/index'); | |
678 | - if (! $COPIED) | |
679 | - $this->assertResponseNotContains("Liste des matériels (".$nbmat.")", $role); | |
680 | - else { | |
681 | - $this->assertResponseContains("Liste des matériels (".$nbmat.")", $role); | |
682 | - if (isset($designation)) $this->assertResponseContains($designation, "Le matériel ne s'ajoute pas correctement."); | |
683 | - if (isset($num_inventaire)) $this->assertResponseContains($num_inventaire, "La génération du n°de labo n'est pas bonne."); | |
684 | - } | |
685 | - } | |
686 | - | |
687 | - // Called by testMatCopy() | |
688 | - private function _testMatCopy(int $testnum, bool $COPIED, string $role, $id, array $materiel_new_data=[], $num_inventaire=NULL) { | |
686 | + // Called by testMatCopy() just above | |
687 | + private function _testMatCopy($testnum, $COPIED, $role, $id, array $materiel_new_data=[], $num_inventaire=NULL) { | |
689 | 688 | //debug("_testMatCopy numéro ".$testnum); |
690 | 689 | echo("\n"); |
691 | 690 | echo("_testMatCopy (with role ".$role.") numéro ".$testnum." :"); |
... | ... | @@ -728,12 +727,13 @@ class MaterielsControllerTest extends General { |
728 | 727 | if ($COPIED) { |
729 | 728 | // On supprime le dernier materiel pour garder toujours la meme fixture de départ |
730 | 729 | //debug(TableRegistry::getTableLocator()->get('Materiels')->find()->last()->id); |
731 | - $matos_last = TableRegistry::getTableLocator()->get('Materiels')->find()->last(); | |
732 | - //debug($matos_last->id); | |
730 | + //$matos_last = TableRegistry::getTableLocator()->get('Materiels')->find()->last(); | |
731 | + $matos_last = $this->Materiels->find()->last(); | |
732 | + $this->Materiels->delete($matos_last); | |
733 | + // Ca marche aussi comme ça, mais c'est moins rapide: | |
734 | + //$this->post('/materiels/delete/'.$matos_last->id); | |
733 | 735 | //$this->post('/materiels/delete/15'); |
734 | - $this->post('/materiels/delete/'.$matos_last->id); | |
735 | 736 | //$this->get('/materiels/view/15'); |
736 | - //$this->assertResponseContains($designation, "Le matériel ne s'ajoute pas correctement."); | |
737 | 737 | } |
738 | 738 | } |
739 | 739 | |
... | ... | @@ -1269,7 +1269,7 @@ class MaterielsControllerTest extends General { |
1269 | 1269 | $this->post('/materiels/set-label-is-placed/11/view'); |
1270 | 1270 | $this->get('/materiels/view/11'); |
1271 | 1271 | |
1272 | - $this->assertResponseContains('Etiquette posée </strong></td><td>Oui', "Le placement de l'étiquette sur le materiel ne se fait pas correctement."); | |
1272 | + $this->assertResponseContains('Etiquette posée</strong></TD> <TD>Oui', "Le placement de l'étiquette sur le materiel ne se fait pas correctement."); | |
1273 | 1273 | } |
1274 | 1274 | |
1275 | 1275 | /** |
... | ... | @@ -1283,7 +1283,7 @@ class MaterielsControllerTest extends General { |
1283 | 1283 | $this->post('/materiels/set-label-is-not-placed/12/view'); |
1284 | 1284 | $this->get('/materiels/view/12'); |
1285 | 1285 | |
1286 | - $this->assertResponseContains('Etiquette posée </strong></td><td>Non', "L'enlevement de l'étiquette sur le materiel ne se fait pas correctement."); | |
1286 | + $this->assertResponseContains('Etiquette posée</strong></TD> <TD>Non', "L'enlevement de l'étiquette sur le materiel ne se fait pas correctement."); | |
1287 | 1287 | } |
1288 | 1288 | |
1289 | 1289 | /** | ... | ... |