Commit f94cf6ea105151b47772e325c40b638f0a0329c3

Authored by Etienne Pallier
1 parent 171b7320
Exists in master and in 2 other branches dev, dev-IRAP

Bugfix affichage boutons vue matériel et simplification vues

README.md
... ... @@ -53,12 +53,12 @@ Logiciel testé et validé sur les configurations suivantes :
53 53  
54 54 VERSION ACTUELLE
55 55  
56   -Date: 20/05/2019
57   -Version: 2.12.17
  56 +Date: 21/05/2019
  57 +Version: 2.12.18
58 58 Author: EP
59 59 Commentaire:
60   - Bugfix et amelioration tests
61   - Simplification des vues (en cours)
  60 + Bugfix affichage boutons vue matériel (parfois 2e ligne chevauchait 1ère ligne)
  61 + Simplification des vues (toujours en cours)
62 62  
63 63  
64 64 IMPORTANT :
... ... @@ -95,7 +95,7 @@ La liste ci-dessous n'est plus à jour, elle est désormais en ligne ici : https
95 95  
96 96 -----------------------------------------------------------------------------------------------------------
97 97  
98   -20/05/2019 Version: 2.12.17 (EP)
  98 +21/05/2019 Version: 2.12.18 (EP)
99 99  
100 100  
101 101 17/05/2019 Version: 2.12.15-17 (EP)
... ...
src/Controller/AppController.php
... ... @@ -610,8 +610,48 @@ class AppController extends Controller
610 610 * $this->Auth->allowedActions = array('index', 'view');
611 611 * }
612 612 */
613   - $configuration = $this->confLabinvent;
614 613  
  614 +
  615 +
  616 + // (EP 21/5/19) NEW
  617 +
  618 + $role = $this->getUserRole();
  619 + $profile = self::PROFILES["$role"];
  620 +
  621 + // Set General CONSTANTS for all CONTROLLERS
  622 + // (Before, they used to be in beforeFilter())
  623 + // - Users constants
  624 + $this->userName = $this->LdapAuth->user('sn')[0] . ' ' . $this->LdapAuth->user('givenname')[0];
  625 + //$this->set('username', $this->LdapAuth->user('sn')[0] . ' ' . $this->LdapAuth->user('givenname')[0]);
  626 +
  627 + // ATTENTION, $priviledgedUser = NULL si l'utilisateur courant n'est pas un utilisateur privilégié
  628 + // (c'est à dire s'il n'est pas dans la table "utilisateurs")
  629 + $this->priviledgedUser = $this->getTablePriviledgedUserFromCurrentSessionUserIfExists();
  630 +
  631 + $this->USER_IS_RESPONSABLE = ($profile == self::PROFILE_RESPONSABLE);
  632 + $this->USER_IS_ADMIN_OR_MORE = ($profile >= self::PROFILE_ADMIN);
  633 + // - Misc constants
  634 + $this->idGmNa = TableRegistry::getTableLocator()->get('GroupesMetiers')->find()
  635 + ->where([
  636 + 'nom =' => 'N/A'
  637 + ])
  638 + ->first()['id'];
  639 + $this->idGtNa = TableRegistry::getTableLocator()->get('GroupesThematiques')->find()
  640 + ->where([
  641 + 'nom =' => 'N/A'
  642 + ])
  643 + ->first()['id'];
  644 +
  645 + // Now, set these constants for all VIEWS
  646 + $this->set('username', $this->userName);
  647 + $this->set('priviledgedUser', $this->priviledgedUser);
  648 + $this->set('idGmNa', $this->idGmNa);
  649 + $this->set('idGtNa', $this->idGtNa);
  650 + $this->set('USER_IS_RESPONSABLE', $this->USER_IS_RESPONSABLE);
  651 + $this->set('USER_IS_ADMIN_OR_MORE', $this->USER_IS_ADMIN_OR_MORE);
  652 +
  653 +
  654 + $configuration = $this->confLabinvent;
615 655 if ($configuration->mode_install)
616 656 $this->LdapAuth->allow([
617 657 'display',
... ... @@ -625,7 +665,8 @@ class AppController extends Controller
625 665 ]);
626 666  
627 667 $this->LdapAuth->setConfig('authError', "Désolé, vous n'êtes pas autorisé à accéder à cette zone.");
628   - }
  668 +
  669 + } // beforeFilter()
629 670  
630 671 public function afterFilter(Event $event)
631 672 {
... ... @@ -661,15 +702,17 @@ class AppController extends Controller
661 702 ]))
662 703 $this->set('_serialize', true);
663 704  
664   - $this->set('username', $this->LdapAuth->user('sn')[0] . ' ' . $this->LdapAuth->user('givenname')[0]);
  705 + // moved to beforeFilter()
  706 + //$this->set('username', $this->LdapAuth->user('sn')[0] . ' ' . $this->LdapAuth->user('givenname')[0]);
665 707  
666 708 $configuration = $this->confLabinvent;
667 709 $this->set('configuration', $configuration);
668 710 $this->request->getSession()->write("authType", $configuration->ldap_authenticationType);
669 711  
670   - // ATTENTION, $priviledgedUser = NULL si l'utilisateur courant n'est pas un utilisateur privilégié
671   - // (c'est à dire s'il n'est pas dans la table "utilisateurs")
672   - $priviledgedUser = $this->getTablePriviledgedUserFromCurrentSessionUserIfExists();
  712 +
  713 + // moved to beforeFilter()
  714 + //$priviledgedUser = $this->getTablePriviledgedUserFromCurrentSessionUserIfExists();
  715 +
673 716 /*
674 717 * $user = TableRegistry::getTableLocator()->get('Users')->find()
675 718 * ->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])
... ... @@ -688,24 +731,31 @@ class AppController extends Controller
688 731 $this->set('profile', $profile);
689 732  
690 733 $USER_IS_UTILISATEUR = ($profile == self::PROFILE_USER);
691   - $USER_IS_RESPONSABLE = ($profile == self::PROFILE_RESPONSABLE);
  734 +
  735 +
692 736 $USER_IS_ADMIN = ($profile == self::PROFILE_ADMIN);
693 737 $USER_IS_ADMINPLUS = ($profile == self::PROFILE_ADMINPLUS);
694 738 $USER_IS_SUPERADMIN = ($profile == self::PROFILE_SUPERADMIN);
695 739 $USER_IS_RESPONSABLE_OR_MORE = ($profile >= self::PROFILE_RESPONSABLE);
696   - $USER_IS_ADMIN_OR_MORE = ($profile >= self::PROFILE_ADMIN);
  740 +
  741 + // moved to beforeFilter()
  742 + //$USER_IS_RESPONSABLE = ($profile == self::PROFILE_RESPONSABLE);
  743 + //$USER_IS_ADMIN_OR_MORE = ($profile >= self::PROFILE_ADMIN);
  744 +
697 745 $USER_IS_ADMINPLUS_OR_MORE = ($profile >= self::PROFILE_ADMINPLUS);
698 746  
699 747 $this->set('USER_IS_UTILISATEUR', $USER_IS_UTILISATEUR);
700   - $this->set('USER_IS_RESPONSABLE', $USER_IS_RESPONSABLE);
701 748 $this->set('USER_IS_ADMIN', $USER_IS_ADMIN);
702 749 $this->set('USER_IS_ADMINPLUS', $USER_IS_ADMINPLUS);
703 750 $this->set('USER_IS_SUPERADMIN', $USER_IS_SUPERADMIN);
704 751 $this->set('USER_IS_RESPONSABLE_OR_MORE', $USER_IS_RESPONSABLE_OR_MORE);
705   - $this->set(compact('USER_IS_ADMIN_OR_MORE'));
  752 + // moved to beforeFilter()
  753 + //$this->set('USER_IS_RESPONSABLE', $USER_IS_RESPONSABLE);
  754 + //$this->set(compact('USER_IS_ADMIN_OR_MORE'));
706 755 $this->set('USER_IS_ADMINPLUS_OR_MORE', $USER_IS_ADMINPLUS_OR_MORE);
707 756  
708   - $this->set('priviledgedUser', $priviledgedUser);
  757 + // moved to beforeFilter()
  758 + //$this->set('priviledgedUser', $priviledgedUser);
709 759  
710 760 /*
711 761 * @todo EP 08/2017 Nouvelle organisation des ACL avec $easyACL
... ... @@ -740,6 +790,8 @@ class AppController extends Controller
740 790 }
741 791 }
742 792  
  793 + // Moved to beforeFilter()
  794 + /*
743 795 $this->set('idGmNa', TableRegistry::getTableLocator()->get('GroupesMetiers')->find()
744 796 ->where([
745 797 'nom =' => 'N/A'
... ... @@ -750,6 +802,7 @@ class AppController extends Controller
750 802 'nom =' => 'N/A'
751 803 ])
752 804 ->first()['id']);
  805 + */
753 806  
754 807 $displayElement = function ($nom, $valeur, $params = "") {
755 808 $TD = ($params=="") ? 'TD' : "TD $params";
... ... @@ -777,7 +830,36 @@ class AppController extends Controller
777 830  
778 831 // Pass this function to all views
779 832 //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) {
  833 + $echoActionButton = function($html, $icon_class, $title, $controller='', $action, $id, $other_args=[], $tip='', $confirmMessage='', $moreButtonStyle='') {
  834 + if ($controller=='') $controller='materiels';
  835 + $controllerArgs = [];
  836 + $controllerArgs['controller'] = $controller;
  837 + $controllerArgs['action'] = $action;
  838 + $controllerArgs[] = $id;
  839 + foreach ($other_args as $other_arg) $controllerArgs[] = $other_arg;
  840 + echo $html->link(
  841 + __("<i class=$icon_class></i> $title"),
  842 + $controllerArgs,
  843 + /*
  844 + [
  845 + 'controller' => $controller,
  846 + 'action' => $action,
  847 + $id,
  848 + $other_args
  849 + ],
  850 + */
  851 + [
  852 + 'title' => $tip,
  853 + 'escape' => false,
  854 + 'onclick' => 'return true;',
  855 + 'style' => 'margin-right: 10px'.$moreButtonStyle,
  856 + 'confirm' => $confirmMessage
  857 + ]
  858 + );
  859 + };
  860 + /*
  861 + $echoActionButton = function($html, $icon_class, $title, $action, $id, $controller='', $tip='', $confirmMessage='', $moreButtonStyle='', $mat=NULL, $photo=NULL) {
  862 + if ($controller=='') $controller='materiels';
781 863 echo $html->link(
782 864 __("<i class=$icon_class></i> $title"),
783 865 [
... ... @@ -791,15 +873,17 @@ class AppController extends Controller
791 873 'title' => $tip,
792 874 'escape' => false,
793 875 'onclick' => 'return true;',
794   - 'style' => 'margin-right: 10px'
  876 + 'style' => 'margin-right: 10px'.$moreButtonStyle,
  877 + 'confirm' => $confirmMessage
795 878 ]
796 879 );
797 880 };
  881 + */
798 882 $this->set(compact('echoActionButton'));
799 883  
800   -
801 884 } // beforeRender()
802 885  
  886 +
803 887 // "le materiel", "le suivi"...
804 888 protected function getArticle()
805 889 {
... ...
src/Controller/MaterielsController.php
... ... @@ -153,6 +153,10 @@ class MaterielsController extends AppController
153 153 public function beforeFilter(\Cake\Event\Event $event)
154 154 {
155 155 $this->myDebug("step 0: beforeFilter()");
  156 + // ICI CEST OK
  157 + $toto="tititoto";
  158 + $this->set(compact('toto'));
  159 +
156 160 parent::beforeFilter($event);
157 161 }
158 162  
... ... @@ -180,6 +184,13 @@ class MaterielsController extends AppController
180 184 $this->set('ARCHIVED', self::ARCHIVED);
181 185  
182 186 /*
  187 + $CAN_EDIT = $IS_CREATED && (
  188 + $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
  189 + );
  190 + $this->set(compact('CAN_EDIT'));
  191 + */
  192 +
  193 + /*
183 194 * @todo EP 08/2017 Nouvelle organisation des ACL avec $easyACL
184 195 */
185 196 // !!! MOVED TO APPCONTROLLER !!!
... ... @@ -224,6 +235,12 @@ class MaterielsController extends AppController
224 235 {
225 236 //if (parent::isAuthorized($userFromSession)) return TRUE;
226 237 $this->myDebug("step 1: isAuthorized()");
  238 +
  239 + /* ICI C'EST OK
  240 + $toto="tititoto";
  241 + $this->set(compact('toto'));
  242 + */
  243 +
227 244 $user = $userFromSession;
228 245 $configuration = $this->confLabinvent;
229 246 $userCname = $user[$configuration->ldap_authenticationType][0];
... ... @@ -276,6 +293,12 @@ class MaterielsController extends AppController
276 293 * switch ROLE
277 294 *
278 295 */
  296 +
  297 + // ICI C'EST PAS OK, why ???
  298 + //$toto="tititoto";
  299 + //$this->set(compact('toto'));
  300 +
  301 +
279 302 switch ($action) {
280 303  
281 304 // INDEX, VIEW, ADD, FIND
... ... @@ -769,6 +792,27 @@ class MaterielsController extends AppController
769 792 $IS_VALIDATED = ($materiel->status == 'VALIDATED');
770 793 $IS_TOBEARCHIVED = ($materiel->status == 'TOBEARCHIVED');
771 794 $IS_ARCHIVED = ($materiel->status == 'ARCHIVED');
  795 +
  796 + // NEW TODO:
  797 + $USER_IS_CREATOR_OR_OWNER = in_array($this->userName, [
  798 + $materiel->nom_createur,
  799 + $materiel->nom_responsable
  800 + ]);
  801 + $USER_IS_SAME_GROUP = (
  802 + ( isset($this->priviledgedUser->groupes_metier_id) && $this->priviledgedUser->groupes_metier_id != $this->idGmNa && $materiel->groupes_metier_id == $this->priviledgedUser->groupes_metier_id )
  803 + ||
  804 + ( isset($this->priviledgedUser->groupe_thematique_id) && $this->priviledgedUser->groupe_thematique_id != $this->idGtNa && $materiel->groupes_thematique_id == $this->priviledgedUser->groupe_thematique_id )
  805 + );
  806 + $CAN_EDIT = $IS_CREATED && (
  807 + $this->USER_IS_ADMIN_OR_MORE
  808 + ||
  809 + $USER_IS_CREATOR_OR_OWNER
  810 + ||
  811 + ( $this->USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP )
  812 + );
  813 + $this->set(compact('CAN_EDIT'));
  814 + // END TODO
  815 +
772 816 // $status = $this->allStatus[$materiel->status];
773 817 $status = self::allStatus[$materiel->status];
774 818 $this->set('IS_CREATED', $IS_CREATED);
... ... @@ -799,9 +843,10 @@ class MaterielsController extends AppController
799 843 'materiel'
800 844 ]);
801 845  
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);
  846 + /* TODO:
  847 + $CAN_EDIT = $IS_CREATED && (
  848 + $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
  849 + );
805 850 $this->set(compact('CAN_EDIT'));
806 851 */
807 852  
... ...
src/Template/Materiels/view.ctp
... ... @@ -7,13 +7,32 @@ use Cake\ORM\TableRegistry;
7 7 // - Constants :
8 8 //$CAN_EDIT = $CAN_EDIT;
9 9 $PDF_ENGINE = $PDF_ENGINE;
  10 +// - User status:
  11 +$username = $username;
  12 +$priviledgedUser = $priviledgedUser;
  13 +$USER_IS_UTILISATEUR = $USER_IS_UTILISATEUR;
  14 +$USER_IS_RESPONSABLE = $USER_IS_RESPONSABLE;
  15 +$USER_IS_ADMIN = $USER_IS_ADMIN;
10 16 $USER_IS_ADMIN_OR_MORE = $USER_IS_ADMIN_OR_MORE;
  17 +$USER_IS_SUPERADMIN = $USER_IS_SUPERADMIN;
  18 +// - Materiel status:
  19 +$idGmNa = $idGmNa;
  20 +$idGtNa = $idGtNa;
  21 +$IS_CREATED = $IS_CREATED;
  22 +$IS_VALIDATED = $IS_VALIDATED;
  23 +$IS_TOBEARCHIVED = $IS_TOBEARCHIVED;
  24 +$IS_ARCHIVED = $IS_ARCHIVED;
  25 +// - User capabilities on materiel:
  26 +$CAN_EDIT = $CAN_EDIT;
  27 +// Autres
  28 +// TODO: yena plein d'autres
  29 +// ...
11 30 // - Fonctions :
12 31 $displayElement = $displayElement;
13 32 $dateProchainControleVerif = $dateProchainControleVerif;
14 33 $echoActionButton = $echoActionButton;
15   -// TODO: yena plein d'autres
16   -// ...
  34 +
  35 +
17 36  
18 37 /* (EP) moved to controller
19 38 function $echoActionButton($html, $icon_class, $title, $action, $id, $tip='', $controller='materiels', $mat=NULL, $photo=NULL) {
... ... @@ -118,7 +137,7 @@ $USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE &amp;&amp; ((isset($priviledg
118 137  
119 138  
120 139 // 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);
  140 +//$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 141 $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 142 $CAN_COPY = $IS_CREATED and ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER);
124 143 $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN_OR_MORE;
... ... @@ -132,7 +151,7 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
132 151 <h2>
133 152 <?php
134 153 // if (h($materiel->status) == 'ARCHIVED') echo '<i class="icon-inbox"></i> ';
135   - if ($IS_ARCHIVED) echo '<i class="icon-inbox"></i> ';
  154 + if ($IS_ARCHIVED) echo '<i class="icon-inbox"></i> ';
136 155 $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : '';
137 156 ?>
138 157 <?=h($materiel->designation) . $panne?>
... ... @@ -182,51 +201,21 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
182 201 <br />
183 202  
184 203  
185   - <!-- BOUTONS -->
  204 + <!-- BOUTONS (DIV) -->
  205 +
186 206 <div id="boutons" class="actions" style="margin-bottom:20px; width:100%; float:none; padding:5px 0;">
187 207  
188 208 <?php
189   - // CREATED or VALIDATED
190   - // if ( in_array($materiel->status, ['CREATED','VALIDATED']) ) {
191   - // (EP 17/5/19) Ben non, on peut pas éditer si validé !!!
192   - //if ($IS_CREATED || $IS_VALIDATED) {
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   - */
209 209  
210   - /*
211   - * // TOBEARCHIVED+
212   - * else {
213   - * //if (in_array($role, ['Administration Plus','Super Administrateur'])) {
214   - * if ($USER_IS_ADMIN_OR_MORE) {
215   - * echo $this->Html->link(
216   - * __('<i class="icon-pencil"></i> Editer ce matériel'),
217   - * ['action' => 'edit', $materiel->id],
218   - * ['escape' => false, 'onclick' => 'return true;', 'style' => 'margin-right: 10px']
219   - * );
220   - * }
221   - * }
222   - */
  210 + // --- (1) BOUTONS 1st row ---
  211 +
  212 + // BOUTON "Editer"
  213 + if ($CAN_EDIT) $echoActionButton($this->Html, 'icon-pencil', 'Editer ce matériel', 'materiels', 'edit', $materiel->id);
223 214  
224   - // VALIDATED
  215 + // BOUTONS "NOUVEAU SUIVI" et "NOUVEL EMPRUNT"
225 216 // if ($materiel->status == 'VALIDATED') {
226 217 if ($IS_VALIDATED) {
227   -
228   - // BOUTON NOUVEAU SUIVI
229   - $echoActionButton($this->Html, 'icon-plus', 'Nouv. Suivi', 'add', $materiel->id, 'Faire un nouveau suivi de ce matériel', 'suivis');
  218 + $echoActionButton($this->Html, 'icon-plus', 'Nouv. Suivi', 'suivis', 'add', $materiel->id, [], 'Faire un nouveau suivi de ce matériel');
230 219 /*
231 220 echo $this->Html->link('<i class="icon-plus"></i> Nouv. Suivi', [
232 221 'controller' => 'suivis',
... ... @@ -238,75 +227,21 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
238 227 'escape' => false
239 228 ]); // End link
240 229 */
241   -
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   - echo $this->Html->link('<i class="icon-plus"></i> Nouv. Emprunt', [
246   - 'controller' => 'emprunts',
247   - 'action' => 'add',
248   - $materiel->id
249   - ], [
250   - 'title' => 'Faire un nouvel emprunt de ce matériel',
251   - 'style' => 'margin-right: 10px',
252   - 'escape' => false
253   - ]); // End link
254   - */
  230 + $echoActionButton($this->Html, 'icon-plus', 'Nouv. Emprunt', 'emprunts', 'add', $materiel->id, [], 'Faire un nouvel emprunt de ce matériel');
255 231 }
256 232  
257 233 // BOUTONS "Lier un Doc" et "Remplacer/Lier photo"
258 234 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');
  235 + $echoActionButton($this->Html, 'icon-file', 'Lier un Doc.', 'documents', 'add', $materiel->id, ['mat'], 'Attacher un Doc. à ce matériel');
261 236 // BOUTON "photo"
262 237 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');
  238 + $echoActionButton($this->Html, 'icon-file', 'Remplacer la photo.', 'documents', 'add', $materiel->id, ['mat', 'photo'], 'Remplacer la photo de ce matériel');
264 239 else
265   - $echoActionButton($this->Html, 'icon-file', 'Lier une photo.', 'add', $materiel->id, 'Attacher une photo à ce matériel', 'documents', 'mat', 'photo');
266   - /*
267   - echo $this->Html->link('<i class="icon-file"></i> Lier un Doc.', [
268   - 'controller' => 'documents',
269   - 'action' => 'add',
270   - $materiel->id,
271   - 'mat'
272   - ], [
273   - 'title' => 'Attacher un Doc. à ce matériel',
274   - 'style' => 'margin-right: 10px',
275   - 'escape' => false
276   - ]);
277   - */
278   -
279   - /*
280   - echo $this->Html->link('<i class="icon-file"></i> Remplacer la photo.', [
281   - 'controller' => 'documents',
282   - 'action' => 'add',
283   - $materiel->id,
284   - 'mat',
285   - 'photo'
286   - ], [
287   - 'title' => 'Remplacer la photo de ce matériel',
288   - 'style' => 'margin-right: 10px',
289   - 'escape' => false
290   - ]);
291   - */
292   - /*
293   - echo $this->Html->link('<i class="icon-file"></i> Lier une photo.', [
294   - 'controller' => 'documents',
295   - 'action' => 'add',
296   - $materiel->id,
297   - 'mat',
298   - 'photo'
299   - ], [
300   - 'title' => 'Attacher une photo à ce matériel',
301   - 'style' => 'margin-right: 10px',
302   - 'escape' => false
303   - ]);
304   - */
305   - } // BOUTON Lier un doc
  240 + $echoActionButton($this->Html, 'icon-file', 'Lier une photo.', 'documents', 'add', $materiel->id, ['mat', 'photo'], 'Attacher une photo à ce matériel');
  241 + }
306 242  
307   - // Doc admission et sortie (admin+)
  243 + // BOUTONS Doc admission et sortie (admin+)
308 244 if ($USER_IS_ADMIN_OR_MORE) {
309   - // if (in_array($role, ['Administration','Administration Plus','Super Administrateur'])) {
310 245  
311 246 // Doc admission (admin only)
312 247 if ($IS_CREATED || $IS_VALIDATED) {
... ... @@ -321,22 +256,7 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
321 256 $data = $materiel->numero_laboratoire . ".pdf";
322 257 }
323 258 // if (($materiel->status == 'VALIDATED') || ($materiel->status == 'CREATED')) {
324   - $echoActionButton($this->Html, 'icon-file', 'Doc. admission', $action, $data, "Voir le document d'admission", 'documents');
325   - /*
326   - echo $this->Html->link('<i class="icon-file"></i> Doc. admission', [
327   - 'controller' => 'documents',
328   - ///
329   - 'action' => 'admission',
330   - $materiel->numero_laboratoire
331   - ///
332   - 'action' => $action,
333   - $data
334   - ], [
335   - 'title' => 'Voir le document d\'admission',
336   - 'style' => 'margin-right: 10px',
337   - 'escape' => false
338   - ]);
339   - */
  259 + $echoActionButton($this->Html, 'icon-file', 'Doc. admission', 'documents', $action, $data, [], "Voir le document d'admission");
340 260 }
341 261  
342 262 // Doc sortie (admin only)
... ... @@ -352,170 +272,71 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
352 272 $data = $materiel->numero_laboratoire . ".pdf";
353 273 }
354 274 // 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   - /*
357   - echo $this->Html->link('<i class="icon-file"></i> Doc. sortie', [
358   - 'controller' => 'documents',
359   - 'action' => $action,
360   - $data
361   - //'action' => 'sortie',
362   - //'action' => 'sortiePdf',
363   - //'action' => 'sortie_pdf',
364   - //$materiel->numero_laboratoire
365   - //$materiel->numero_laboratoire . ".pdf"
366   -
367   - ], [
368   - 'title' => 'Voir le document de sortie',
369   - 'style' => 'margin-right: 10px',
370   - 'escape' => false
371   - ]);
372   - */
  275 + $echoActionButton($this->Html, 'icon-file', 'Doc. sortie', 'documents', $action, $data, [], "Voir le document de sortie");
373 276 }
374   - }
  277 +
  278 + } // Doc admission et sortie
375 279  
  280 +
  281 + // --- (2) BOUTONS 2nd row ---
  282 +
376 283 echo "<br />";
377 284  
378   - // BOUTON changement statut
  285 + // (EP) Change bouton style pour que la 2ème ligne de boutons ne chevauche pas la 1ère
  286 + // En pratique, il suffit que un seul bouton de cette ligne aie ce style (pas nécessaire pour les autres)
  287 + // Mais bon, c'est difficile de savoir lequel sera toujours présent...
  288 + // Donc, on applique ce style à TOUS les boutons de cette 2e ligne
  289 + $moreButtonStyle = '; margin-top:10px; display:inline-block';
  290 + $moreButtonStyleRed = $moreButtonStyle . '; color:red';
  291 + // BOUTON de changement de statut : Valider, Invalider, Demander archivage, ou Archiver
379 292 if ($USER_IS_ADMIN_OR_MORE || $USER_IS_RESPONSABLE_AND_SAME_GROUP) {
380   - /*
381   - * if (
382   - * in_array($role, ['Administration','Administration Plus','Super Administrateur'])
383   - * || (
384   - * $role == 'Responsable'
385   - * && (
386   - * (
387   - * isset($priviledgedUser->groupes_metier_id)
388   - * && $priviledgedUser->groupes_metier_id != $idGmNa
389   - * && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id
390   - * )
391   - * ||
392   - * (
393   - * isset($priviledgedUser->groupe_thematique_id)
394   - * && $priviledgedUser->groupe_thematique_id != $idGtNa
395   - * && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id
396   - * )
397   - * )
398   - * )
399   - * ) {
400   - */
401   - // 2) Bouton de changement de statut : Valider, Demander archivage, ou Archiver
402   - // switch ($materiel->status) {
403   - switch ($status) {
404   -
405   - // case "CREATED" :
406   - case $CREATED:
407   - // Bouton VALIDER
408   - echo $this->Html->link('<i class="icon-ok-sign"></i> Valider', [
409   - 'action' => 'statusValidated',
410   - $materiel->id,
411   - 'view'
412   - ], [
413   - 'title' => 'Valider le matériel',
414   - 'style' => 'margin-right: 10px; color: red',
415   - 'escape' => false
416   - ]);
417   - break;
418   -
419   - // case "VALIDATED" or more :
420   - case $VALIDATED:
421   - case $TOBEARCHIVED:
422   - case $ARCHIVED:
423   - // Bouton DE-VALIDER (invalider)
424   - echo $this->Html->link('<i class="icon-remove-sign"></i> Dé-valider', [
425   - 'action' => 'statusCreated',
426   - $materiel->id,
427   - 'view'
428   - ], [
429   - 'title' => 'dé-valider le matériel (le repasser au statut Créé)',
430   - // 'style' => 'margin-right: 10px; background: red; color: white',
431   - 'style' => 'margin-right: 10px; color: red',
432   - 'escape' => false
433   - ]);
434   - if ($status == $VALIDATED) {
435   - // Bouton TBA
436   - echo $this->Html->link('<i class="icon-ok-sign"></i> Demander sortie', [
437   - 'action' => 'statusToBeArchived',
438   - $materiel->id,
439   - 'view'
440   - ], [
441   - 'title' => 'Demander la sortie de l\'inventaire',
442   - 'style' => 'margin-right: 10px; color: red',
443   - 'escape' => false
444   - ]);
445   - } else if ($status == $TOBEARCHIVED) {
446   - // Bouton ARCHIVER
447   - // if ($role != 'Responsable' && $role != 'Super Administrateur') {
448   - if ($role != 'Responsable') {
449   - echo $this->Html->link('<i class="icon-ok-sign"></i> Sortie inventaire', [
450   - 'action' => 'statusArchived',
451   - $materiel->id,
452   - 'view'
453   - ], [
454   - 'title' => 'Sortir définitivement de l\'inventaire',
455   - 'style' => 'margin-right: 10px; color: red',
456   - 'escape' => false,
457   - 'confirm' => 'Êtes-vous sur de bien vouloir archiver ' . $materiel->designation . ' ?'
458   - ]);
459   - }
460   - }
461   - break;
462   - } // switch
463   - } // BOUTON changement statut
  293 + // CREATED
  294 + if ($IS_CREATED)
  295 + // Bouton VALIDER
  296 + $echoActionButton($this->Html, 'icon-ok-sign', 'Valider', '', 'statusValidated', $materiel->id, [], "Valider ce matériel", '', $moreButtonStyleRed);
  297 + // VALIDATED or more
  298 + else {
  299 + // Bouton Invalider
  300 + $echoActionButton($this->Html, 'icon-remove-sign', 'Invalider', '', 'statusCreated', $materiel->id, [],
  301 + "dé-valider le matériel (le repasser au statut Créé, il faudra le re-valider ensuite)",
  302 + '', $moreButtonStyleRed
  303 + );
  304 + // Bouton TBA
  305 + if ($IS_VALIDATED) $echoActionButton($this->Html, 'icon-ok-sign', 'Demander sortie', '', 'statusToBeArchived', $materiel->id, [],
  306 + "Demander la sortie de l'inventaire", '', $moreButtonStyleRed
  307 + );
  308 + // Bouton ARCHIVER
  309 + //if ($IS_TOBEARCHIVED && $role!='Responsable') $echoActionButton(
  310 + if ($IS_TOBEARCHIVED && $USER_IS_ADMIN_OR_MORE) $echoActionButton(
  311 + $this->Html, 'icon-ok-sign', 'Sortie inventaire', '', 'statusArchived', $materiel->id, [],
  312 + "Sortir définitivement de l'inventaire",
  313 + "Êtes-vous sur de bien vouloir archiver $materiel->designation ?",
  314 + $moreButtonStyleRed
  315 + );
  316 + }
  317 + }
464 318  
465 319 // 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   - /*
468   - if ( $IS_CREATED and ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER) )
469   - echo $this->Html->link('<i class="icon-pencil"></i> Copier ce matériel',
470   - [
471   - 'controller' => 'materiels',
472   - 'action' => 'add',
473   - $materiel->id
474   - ],
475   - [
476   - 'title' => 'Copier ce matériel',
477   - 'style' => 'margin-right: 10px; margin-top: 10px; display: inline-block',
478   - 'escape' => false
479   - ]);
480   - */
  320 + if ($CAN_COPY) $echoActionButton($this->Html, 'icon-plus', 'Copier ce matériel', '', 'add', $materiel->id, [], "Copier ce matériel");
481 321  
482 322 // BOUTON ETIQUETTE (si imprimante disponible)
483 323 if ($CAN_PRINT_LABEL) {
484   - //if ($IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN_OR_MORE) {
485   - /*
486   - in_array($role, [
487   - 'Administration',
488   - 'Administration Plus',
489   - 'Super Administrateur'
490   - ])) {
491   - */
492   - // echo "<br/>";
493   - // echo '<div id="etiquette" class="actions" style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;">';
494 324 // - Bouton "Imprimer sur un ruban"
495   - $action = 'Impr. étiquette';
496   - echo $this->Html->link('<i class="icon-print"></i> ' . $action, [
497   - 'action' => 'printLabelRuban',
498   - h($materiel->id),
499   - 'view'
500   - ], [
501   - 'title' => 'Imprimer sur un ruban 12mm',
502   - 'style' => 'margin-right: 10px',
503   - 'escape' => false,
504   - 'onclick' => 'return true;'
505   - ]);
  325 + $echoActionButton($this->Html, 'icon-print', 'Impr. étiquette', '', 'printLabelRuban', h($materiel->id), [], "Imprimer sur un ruban");
506 326 // - Bouton "Etiquette posée"
507   - echo $this->Html->link('<i class="icon-file"></i> ' . (h($materiel->etiquette) ? "Etiquette NON posée sur le matériel" : "Etiquette posée sur le matériel"), [
508   - 'controller' => 'materiels',
509   - 'action' => h($materiel->etiquette) ? 'setLabelIsNotPlaced' : 'setLabelIsPlaced',
510   - h($materiel->id),
511   - 'view'
512   - ], [
513   - 'title' => h($materiel->etiquette) ? "En cliquant sur ce bouton, vous déclarez que l'étiquette n'a PAS été posée sur le matériel" : "En cliquant sur ce bouton, vous certifiez que l'étiquette a bien été posée sur le matériel",
514   - 'style' => 'margin-left: 0px; margin-right: 10px',
515   - 'escape' => false
516   - ]);
517   - // echo '</div>';
518   - } // BOUTON ETIQUETTE
  327 + $echoActionButton(
  328 + $this->Html, 'icon-file',
  329 + $materiel->etiquette ? "Etiquette NON collée" : "Etiquette collée",
  330 + 'materiels',
  331 + $materiel->etiquette ? 'setLabelIsNotPlaced' : 'setLabelIsPlaced',
  332 + h($materiel->id), ['view'],
  333 + $materiel->etiquette ?
  334 + "En cliquant sur ce bouton, vous déclarez que l'étiquette n'a PAS été posée sur le matériel"
  335 + :
  336 + "En cliquant sur ce bouton, vous certifiez que l'étiquette a bien été posée sur le matériel"
  337 + );
  338 + //'style' => 'margin-left: 0px; margin-right: 10px',
  339 + }
519 340  
520 341 // BOUTON "Voir fiche matériel"
521 342 echo "<br/>";
... ... @@ -531,21 +352,12 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
531 352 $action = 'fiche_materiel_pdf';
532 353 $data = $materiel->numero_laboratoire . ".pdf";
533 354 }
534   - echo $this->Html->link('<i class="icon-file"></i> Fiche PDF du matériel', [
535   - 'controller' => 'documents',
536   - 'action' => $action,
537   - $data
538   - //'action' => 'ficheMateriel',
539   - //'action' => 'ficheMaterielPdf',
540   - //'action' => 'fiche_materiel_pdf',
541   - //$materiel->numero_laboratoire
542   - //$materiel->numero_laboratoire . ".pdf"
543   - ], [
544   - 'title' => 'Voir la fiche du materiel',
545   - 'style' => 'margin-right: 10px; background: green; color: white',
546   - 'escape' => false
547   - ]);
548   - // echo '</div>';
  355 + $echoActionButton($this->Html, 'icon-file', 'Fiche PDF du matériel', 'documents', $action, $data, [],
  356 + "Voir la fiche du materiel",
  357 + '',
  358 + '; background: green; color: white'
  359 + );
  360 +
549 361  
550 362 // FIN DIV BOUTONS
551 363 ?>
... ...