Commit f94cf6ea105151b47772e325c40b638f0a0329c3
1 parent
171b7320
Exists in
master
and in
2 other branches
Bugfix affichage boutons vue matériel et simplification vues
Showing
4 changed files
with
248 additions
and
307 deletions
Show diff stats
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 && ((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 && $configuration->hasPrinter && $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 && $configuration->hasPrinter && $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 && $configuration->hasPrinter && $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 && $configuration->hasPrinter && $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 && $configuration->hasPrinter && $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 && $configuration->hasPrinter && $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 | ?> | ... | ... |