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

@@ -53,12 +53,12 @@ Logiciel testé et validé sur les configurations suivantes : @@ -53,12 +53,12 @@ Logiciel testé et validé sur les configurations suivantes :
53 53
54 VERSION ACTUELLE 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 Author: EP 58 Author: EP
59 Commentaire: 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 IMPORTANT : 64 IMPORTANT :
@@ -95,7 +95,7 @@ La liste ci-dessous n'est plus à jour, elle est désormais en ligne ici : https @@ -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 17/05/2019 Version: 2.12.15-17 (EP) 101 17/05/2019 Version: 2.12.15-17 (EP)
src/Controller/AppController.php
@@ -610,8 +610,48 @@ class AppController extends Controller @@ -610,8 +610,48 @@ class AppController extends Controller
610 * $this->Auth->allowedActions = array('index', 'view'); 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 if ($configuration->mode_install) 655 if ($configuration->mode_install)
616 $this->LdapAuth->allow([ 656 $this->LdapAuth->allow([
617 'display', 657 'display',
@@ -625,7 +665,8 @@ class AppController extends Controller @@ -625,7 +665,8 @@ class AppController extends Controller
625 ]); 665 ]);
626 666
627 $this->LdapAuth->setConfig('authError', "Désolé, vous n'êtes pas autorisé à accéder à cette zone."); 667 $this->LdapAuth->setConfig('authError', "Désolé, vous n'êtes pas autorisé à accéder à cette zone.");
628 - } 668 +
  669 + } // beforeFilter()
629 670
630 public function afterFilter(Event $event) 671 public function afterFilter(Event $event)
631 { 672 {
@@ -661,15 +702,17 @@ class AppController extends Controller @@ -661,15 +702,17 @@ class AppController extends Controller
661 ])) 702 ]))
662 $this->set('_serialize', true); 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 $configuration = $this->confLabinvent; 708 $configuration = $this->confLabinvent;
667 $this->set('configuration', $configuration); 709 $this->set('configuration', $configuration);
668 $this->request->getSession()->write("authType", $configuration->ldap_authenticationType); 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 * $user = TableRegistry::getTableLocator()->get('Users')->find() 717 * $user = TableRegistry::getTableLocator()->get('Users')->find()
675 * ->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]]) 718 * ->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])
@@ -688,24 +731,31 @@ class AppController extends Controller @@ -688,24 +731,31 @@ class AppController extends Controller
688 $this->set('profile', $profile); 731 $this->set('profile', $profile);
689 732
690 $USER_IS_UTILISATEUR = ($profile == self::PROFILE_USER); 733 $USER_IS_UTILISATEUR = ($profile == self::PROFILE_USER);
691 - $USER_IS_RESPONSABLE = ($profile == self::PROFILE_RESPONSABLE); 734 +
  735 +
692 $USER_IS_ADMIN = ($profile == self::PROFILE_ADMIN); 736 $USER_IS_ADMIN = ($profile == self::PROFILE_ADMIN);
693 $USER_IS_ADMINPLUS = ($profile == self::PROFILE_ADMINPLUS); 737 $USER_IS_ADMINPLUS = ($profile == self::PROFILE_ADMINPLUS);
694 $USER_IS_SUPERADMIN = ($profile == self::PROFILE_SUPERADMIN); 738 $USER_IS_SUPERADMIN = ($profile == self::PROFILE_SUPERADMIN);
695 $USER_IS_RESPONSABLE_OR_MORE = ($profile >= self::PROFILE_RESPONSABLE); 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 $USER_IS_ADMINPLUS_OR_MORE = ($profile >= self::PROFILE_ADMINPLUS); 745 $USER_IS_ADMINPLUS_OR_MORE = ($profile >= self::PROFILE_ADMINPLUS);
698 746
699 $this->set('USER_IS_UTILISATEUR', $USER_IS_UTILISATEUR); 747 $this->set('USER_IS_UTILISATEUR', $USER_IS_UTILISATEUR);
700 - $this->set('USER_IS_RESPONSABLE', $USER_IS_RESPONSABLE);  
701 $this->set('USER_IS_ADMIN', $USER_IS_ADMIN); 748 $this->set('USER_IS_ADMIN', $USER_IS_ADMIN);
702 $this->set('USER_IS_ADMINPLUS', $USER_IS_ADMINPLUS); 749 $this->set('USER_IS_ADMINPLUS', $USER_IS_ADMINPLUS);
703 $this->set('USER_IS_SUPERADMIN', $USER_IS_SUPERADMIN); 750 $this->set('USER_IS_SUPERADMIN', $USER_IS_SUPERADMIN);
704 $this->set('USER_IS_RESPONSABLE_OR_MORE', $USER_IS_RESPONSABLE_OR_MORE); 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 $this->set('USER_IS_ADMINPLUS_OR_MORE', $USER_IS_ADMINPLUS_OR_MORE); 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 * @todo EP 08/2017 Nouvelle organisation des ACL avec $easyACL 761 * @todo EP 08/2017 Nouvelle organisation des ACL avec $easyACL
@@ -740,6 +790,8 @@ class AppController extends Controller @@ -740,6 +790,8 @@ class AppController extends Controller
740 } 790 }
741 } 791 }
742 792
  793 + // Moved to beforeFilter()
  794 + /*
743 $this->set('idGmNa', TableRegistry::getTableLocator()->get('GroupesMetiers')->find() 795 $this->set('idGmNa', TableRegistry::getTableLocator()->get('GroupesMetiers')->find()
744 ->where([ 796 ->where([
745 'nom =' => 'N/A' 797 'nom =' => 'N/A'
@@ -750,6 +802,7 @@ class AppController extends Controller @@ -750,6 +802,7 @@ class AppController extends Controller
750 'nom =' => 'N/A' 802 'nom =' => 'N/A'
751 ]) 803 ])
752 ->first()['id']); 804 ->first()['id']);
  805 + */
753 806
754 $displayElement = function ($nom, $valeur, $params = "") { 807 $displayElement = function ($nom, $valeur, $params = "") {
755 $TD = ($params=="") ? 'TD' : "TD $params"; 808 $TD = ($params=="") ? 'TD' : "TD $params";
@@ -777,7 +830,36 @@ class AppController extends Controller @@ -777,7 +830,36 @@ class AppController extends Controller
777 830
778 // Pass this function to all views 831 // Pass this function to all views
779 //function echoActionButton($html, $icon_class, $title, $action, $id, $tip='', $controller='materiels', $mat=NULL, $photo=NULL) { 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 echo $html->link( 863 echo $html->link(
782 __("<i class=$icon_class></i> $title"), 864 __("<i class=$icon_class></i> $title"),
783 [ 865 [
@@ -791,15 +873,17 @@ class AppController extends Controller @@ -791,15 +873,17 @@ class AppController extends Controller
791 'title' => $tip, 873 'title' => $tip,
792 'escape' => false, 874 'escape' => false,
793 'onclick' => 'return true;', 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 $this->set(compact('echoActionButton')); 882 $this->set(compact('echoActionButton'));
799 883
800 -  
801 } // beforeRender() 884 } // beforeRender()
802 885
  886 +
803 // "le materiel", "le suivi"... 887 // "le materiel", "le suivi"...
804 protected function getArticle() 888 protected function getArticle()
805 { 889 {
src/Controller/MaterielsController.php
@@ -153,6 +153,10 @@ class MaterielsController extends AppController @@ -153,6 +153,10 @@ class MaterielsController extends AppController
153 public function beforeFilter(\Cake\Event\Event $event) 153 public function beforeFilter(\Cake\Event\Event $event)
154 { 154 {
155 $this->myDebug("step 0: beforeFilter()"); 155 $this->myDebug("step 0: beforeFilter()");
  156 + // ICI CEST OK
  157 + $toto="tititoto";
  158 + $this->set(compact('toto'));
  159 +
156 parent::beforeFilter($event); 160 parent::beforeFilter($event);
157 } 161 }
158 162
@@ -180,6 +184,13 @@ class MaterielsController extends AppController @@ -180,6 +184,13 @@ class MaterielsController extends AppController
180 $this->set('ARCHIVED', self::ARCHIVED); 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 * @todo EP 08/2017 Nouvelle organisation des ACL avec $easyACL 194 * @todo EP 08/2017 Nouvelle organisation des ACL avec $easyACL
184 */ 195 */
185 // !!! MOVED TO APPCONTROLLER !!! 196 // !!! MOVED TO APPCONTROLLER !!!
@@ -224,6 +235,12 @@ class MaterielsController extends AppController @@ -224,6 +235,12 @@ class MaterielsController extends AppController
224 { 235 {
225 //if (parent::isAuthorized($userFromSession)) return TRUE; 236 //if (parent::isAuthorized($userFromSession)) return TRUE;
226 $this->myDebug("step 1: isAuthorized()"); 237 $this->myDebug("step 1: isAuthorized()");
  238 +
  239 + /* ICI C'EST OK
  240 + $toto="tititoto";
  241 + $this->set(compact('toto'));
  242 + */
  243 +
227 $user = $userFromSession; 244 $user = $userFromSession;
228 $configuration = $this->confLabinvent; 245 $configuration = $this->confLabinvent;
229 $userCname = $user[$configuration->ldap_authenticationType][0]; 246 $userCname = $user[$configuration->ldap_authenticationType][0];
@@ -276,6 +293,12 @@ class MaterielsController extends AppController @@ -276,6 +293,12 @@ class MaterielsController extends AppController
276 * switch ROLE 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 switch ($action) { 302 switch ($action) {
280 303
281 // INDEX, VIEW, ADD, FIND 304 // INDEX, VIEW, ADD, FIND
@@ -769,6 +792,27 @@ class MaterielsController extends AppController @@ -769,6 +792,27 @@ class MaterielsController extends AppController
769 $IS_VALIDATED = ($materiel->status == 'VALIDATED'); 792 $IS_VALIDATED = ($materiel->status == 'VALIDATED');
770 $IS_TOBEARCHIVED = ($materiel->status == 'TOBEARCHIVED'); 793 $IS_TOBEARCHIVED = ($materiel->status == 'TOBEARCHIVED');
771 $IS_ARCHIVED = ($materiel->status == 'ARCHIVED'); 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 // $status = $this->allStatus[$materiel->status]; 816 // $status = $this->allStatus[$materiel->status];
773 $status = self::allStatus[$materiel->status]; 817 $status = self::allStatus[$materiel->status];
774 $this->set('IS_CREATED', $IS_CREATED); 818 $this->set('IS_CREATED', $IS_CREATED);
@@ -799,9 +843,10 @@ class MaterielsController extends AppController @@ -799,9 +843,10 @@ class MaterielsController extends AppController
799 'materiel' 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 $this->set(compact('CAN_EDIT')); 850 $this->set(compact('CAN_EDIT'));
806 */ 851 */
807 852
src/Template/Materiels/view.ctp
@@ -7,13 +7,32 @@ use Cake\ORM\TableRegistry; @@ -7,13 +7,32 @@ use Cake\ORM\TableRegistry;
7 // - Constants : 7 // - Constants :
8 //$CAN_EDIT = $CAN_EDIT; 8 //$CAN_EDIT = $CAN_EDIT;
9 $PDF_ENGINE = $PDF_ENGINE; 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 $USER_IS_ADMIN_OR_MORE = $USER_IS_ADMIN_OR_MORE; 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 // - Fonctions : 30 // - Fonctions :
12 $displayElement = $displayElement; 31 $displayElement = $displayElement;
13 $dateProchainControleVerif = $dateProchainControleVerif; 32 $dateProchainControleVerif = $dateProchainControleVerif;
14 $echoActionButton = $echoActionButton; 33 $echoActionButton = $echoActionButton;
15 -// TODO: yena plein d'autres  
16 -// ... 34 +
  35 +
17 36
18 /* (EP) moved to controller 37 /* (EP) moved to controller
19 function $echoActionButton($html, $icon_class, $title, $action, $id, $tip='', $controller='materiels', $mat=NULL, $photo=NULL) { 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,7 +137,7 @@ $USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE &amp;&amp; ((isset($priviledg
118 137
119 138
120 // TODO: to be set by controller 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 $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; 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 $CAN_COPY = $IS_CREATED and ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER); 142 $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; 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,7 +151,7 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
132 <h2> 151 <h2>
133 <?php 152 <?php
134 // if (h($materiel->status) == 'ARCHIVED') echo '<i class="icon-inbox"></i> '; 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 $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; 155 $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : '';
137 ?> 156 ?>
138 <?=h($materiel->designation) . $panne?> 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,51 +201,21 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
182 <br /> 201 <br />
183 202
184 203
185 - <!-- BOUTONS --> 204 + <!-- BOUTONS (DIV) -->
  205 +
186 <div id="boutons" class="actions" style="margin-bottom:20px; width:100%; float:none; padding:5px 0;"> 206 <div id="boutons" class="actions" style="margin-bottom:20px; width:100%; float:none; padding:5px 0;">
187 207
188 <?php 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 // if ($materiel->status == 'VALIDATED') { 216 // if ($materiel->status == 'VALIDATED') {
226 if ($IS_VALIDATED) { 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 echo $this->Html->link('<i class="icon-plus"></i> Nouv. Suivi', [ 220 echo $this->Html->link('<i class="icon-plus"></i> Nouv. Suivi', [
232 'controller' => 'suivis', 221 'controller' => 'suivis',
@@ -238,75 +227,21 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN @@ -238,75 +227,21 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
238 'escape' => false 227 'escape' => false
239 ]); // End link 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 // BOUTONS "Lier un Doc" et "Remplacer/Lier photo" 233 // BOUTONS "Lier un Doc" et "Remplacer/Lier photo"
258 if ($CAN_ATTACH_A_DOC) { 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 // BOUTON "photo" 236 // BOUTON "photo"
262 if ($materiel->photo_id != null) 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 else 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 if ($USER_IS_ADMIN_OR_MORE) { 244 if ($USER_IS_ADMIN_OR_MORE) {
309 - // if (in_array($role, ['Administration','Administration Plus','Super Administrateur'])) {  
310 245
311 // Doc admission (admin only) 246 // Doc admission (admin only)
312 if ($IS_CREATED || $IS_VALIDATED) { 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,22 +256,7 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
321 $data = $materiel->numero_laboratoire . ".pdf"; 256 $data = $materiel->numero_laboratoire . ".pdf";
322 } 257 }
323 // if (($materiel->status == 'VALIDATED') || ($materiel->status == 'CREATED')) { 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 // Doc sortie (admin only) 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,170 +272,71 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
352 $data = $materiel->numero_laboratoire . ".pdf"; 272 $data = $materiel->numero_laboratoire . ".pdf";
353 } 273 }
354 // else if (($materiel->status == 'ARCHIVED') || ($materiel->status == 'TOBEARCHIVED')) { 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 echo "<br />"; 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 if ($USER_IS_ADMIN_OR_MORE || $USER_IS_RESPONSABLE_AND_SAME_GROUP) { 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 // BOUTON Copier (seulement pour les materiels qui sont CREATED et pour les ADMINet+ ou USER owner) 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 // BOUTON ETIQUETTE (si imprimante disponible) 322 // BOUTON ETIQUETTE (si imprimante disponible)
483 if ($CAN_PRINT_LABEL) { 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 // - Bouton "Imprimer sur un ruban" 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 // - Bouton "Etiquette posée" 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 // BOUTON "Voir fiche matériel" 341 // BOUTON "Voir fiche matériel"
521 echo "<br/>"; 342 echo "<br/>";
@@ -531,21 +352,12 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN @@ -531,21 +352,12 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
531 $action = 'fiche_materiel_pdf'; 352 $action = 'fiche_materiel_pdf';
532 $data = $materiel->numero_laboratoire . ".pdf"; 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 // FIN DIV BOUTONS 362 // FIN DIV BOUTONS
551 ?> 363 ?>