From f94cf6ea105151b47772e325c40b638f0a0329c3 Mon Sep 17 00:00:00 2001 From: Etienne Pallier Date: Tue, 21 May 2019 17:51:18 +0200 Subject: [PATCH] Bugfix affichage boutons vue matériel et simplification vues --- README.md | 10 +++++----- src/Controller/AppController.php | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------- src/Controller/MaterielsController.php | 51 ++++++++++++++++++++++++++++++++++++++++++++++++--- src/Template/Materiels/view.ctp | 382 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4 files changed, 248 insertions(+), 307 deletions(-) diff --git a/README.md b/README.md index 83b25e1..3fdb6b9 100644 --- a/README.md +++ b/README.md @@ -53,12 +53,12 @@ Logiciel testé et validé sur les configurations suivantes : VERSION ACTUELLE -Date: 20/05/2019 -Version: 2.12.17 +Date: 21/05/2019 +Version: 2.12.18 Author: EP Commentaire: - Bugfix et amelioration tests - Simplification des vues (en cours) + Bugfix affichage boutons vue matériel (parfois 2e ligne chevauchait 1ère ligne) + Simplification des vues (toujours en cours) IMPORTANT : @@ -95,7 +95,7 @@ La liste ci-dessous n'est plus à jour, elle est désormais en ligne ici : https ----------------------------------------------------------------------------------------------------------- -20/05/2019 Version: 2.12.17 (EP) +21/05/2019 Version: 2.12.18 (EP) 17/05/2019 Version: 2.12.15-17 (EP) diff --git a/src/Controller/AppController.php b/src/Controller/AppController.php index ffbede1..4f94956 100755 --- a/src/Controller/AppController.php +++ b/src/Controller/AppController.php @@ -610,8 +610,48 @@ class AppController extends Controller * $this->Auth->allowedActions = array('index', 'view'); * } */ - $configuration = $this->confLabinvent; + + + // (EP 21/5/19) NEW + + $role = $this->getUserRole(); + $profile = self::PROFILES["$role"]; + + // Set General CONSTANTS for all CONTROLLERS + // (Before, they used to be in beforeFilter()) + // - Users constants + $this->userName = $this->LdapAuth->user('sn')[0] . ' ' . $this->LdapAuth->user('givenname')[0]; + //$this->set('username', $this->LdapAuth->user('sn')[0] . ' ' . $this->LdapAuth->user('givenname')[0]); + + // ATTENTION, $priviledgedUser = NULL si l'utilisateur courant n'est pas un utilisateur privilégié + // (c'est à dire s'il n'est pas dans la table "utilisateurs") + $this->priviledgedUser = $this->getTablePriviledgedUserFromCurrentSessionUserIfExists(); + + $this->USER_IS_RESPONSABLE = ($profile == self::PROFILE_RESPONSABLE); + $this->USER_IS_ADMIN_OR_MORE = ($profile >= self::PROFILE_ADMIN); + // - Misc constants + $this->idGmNa = TableRegistry::getTableLocator()->get('GroupesMetiers')->find() + ->where([ + 'nom =' => 'N/A' + ]) + ->first()['id']; + $this->idGtNa = TableRegistry::getTableLocator()->get('GroupesThematiques')->find() + ->where([ + 'nom =' => 'N/A' + ]) + ->first()['id']; + + // Now, set these constants for all VIEWS + $this->set('username', $this->userName); + $this->set('priviledgedUser', $this->priviledgedUser); + $this->set('idGmNa', $this->idGmNa); + $this->set('idGtNa', $this->idGtNa); + $this->set('USER_IS_RESPONSABLE', $this->USER_IS_RESPONSABLE); + $this->set('USER_IS_ADMIN_OR_MORE', $this->USER_IS_ADMIN_OR_MORE); + + + $configuration = $this->confLabinvent; if ($configuration->mode_install) $this->LdapAuth->allow([ 'display', @@ -625,7 +665,8 @@ class AppController extends Controller ]); $this->LdapAuth->setConfig('authError', "Désolé, vous n'êtes pas autorisé à accéder à cette zone."); - } + + } // beforeFilter() public function afterFilter(Event $event) { @@ -661,15 +702,17 @@ class AppController extends Controller ])) $this->set('_serialize', true); - $this->set('username', $this->LdapAuth->user('sn')[0] . ' ' . $this->LdapAuth->user('givenname')[0]); + // moved to beforeFilter() + //$this->set('username', $this->LdapAuth->user('sn')[0] . ' ' . $this->LdapAuth->user('givenname')[0]); $configuration = $this->confLabinvent; $this->set('configuration', $configuration); $this->request->getSession()->write("authType", $configuration->ldap_authenticationType); - // ATTENTION, $priviledgedUser = NULL si l'utilisateur courant n'est pas un utilisateur privilégié - // (c'est à dire s'il n'est pas dans la table "utilisateurs") - $priviledgedUser = $this->getTablePriviledgedUserFromCurrentSessionUserIfExists(); + + // moved to beforeFilter() + //$priviledgedUser = $this->getTablePriviledgedUserFromCurrentSessionUserIfExists(); + /* * $user = TableRegistry::getTableLocator()->get('Users')->find() * ->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]]) @@ -688,24 +731,31 @@ class AppController extends Controller $this->set('profile', $profile); $USER_IS_UTILISATEUR = ($profile == self::PROFILE_USER); - $USER_IS_RESPONSABLE = ($profile == self::PROFILE_RESPONSABLE); + + $USER_IS_ADMIN = ($profile == self::PROFILE_ADMIN); $USER_IS_ADMINPLUS = ($profile == self::PROFILE_ADMINPLUS); $USER_IS_SUPERADMIN = ($profile == self::PROFILE_SUPERADMIN); $USER_IS_RESPONSABLE_OR_MORE = ($profile >= self::PROFILE_RESPONSABLE); - $USER_IS_ADMIN_OR_MORE = ($profile >= self::PROFILE_ADMIN); + + // moved to beforeFilter() + //$USER_IS_RESPONSABLE = ($profile == self::PROFILE_RESPONSABLE); + //$USER_IS_ADMIN_OR_MORE = ($profile >= self::PROFILE_ADMIN); + $USER_IS_ADMINPLUS_OR_MORE = ($profile >= self::PROFILE_ADMINPLUS); $this->set('USER_IS_UTILISATEUR', $USER_IS_UTILISATEUR); - $this->set('USER_IS_RESPONSABLE', $USER_IS_RESPONSABLE); $this->set('USER_IS_ADMIN', $USER_IS_ADMIN); $this->set('USER_IS_ADMINPLUS', $USER_IS_ADMINPLUS); $this->set('USER_IS_SUPERADMIN', $USER_IS_SUPERADMIN); $this->set('USER_IS_RESPONSABLE_OR_MORE', $USER_IS_RESPONSABLE_OR_MORE); - $this->set(compact('USER_IS_ADMIN_OR_MORE')); + // moved to beforeFilter() + //$this->set('USER_IS_RESPONSABLE', $USER_IS_RESPONSABLE); + //$this->set(compact('USER_IS_ADMIN_OR_MORE')); $this->set('USER_IS_ADMINPLUS_OR_MORE', $USER_IS_ADMINPLUS_OR_MORE); - $this->set('priviledgedUser', $priviledgedUser); + // moved to beforeFilter() + //$this->set('priviledgedUser', $priviledgedUser); /* * @todo EP 08/2017 Nouvelle organisation des ACL avec $easyACL @@ -740,6 +790,8 @@ class AppController extends Controller } } + // Moved to beforeFilter() + /* $this->set('idGmNa', TableRegistry::getTableLocator()->get('GroupesMetiers')->find() ->where([ 'nom =' => 'N/A' @@ -750,6 +802,7 @@ class AppController extends Controller 'nom =' => 'N/A' ]) ->first()['id']); + */ $displayElement = function ($nom, $valeur, $params = "") { $TD = ($params=="") ? 'TD' : "TD $params"; @@ -777,7 +830,36 @@ class AppController extends Controller // Pass this function to all views //function echoActionButton($html, $icon_class, $title, $action, $id, $tip='', $controller='materiels', $mat=NULL, $photo=NULL) { - $echoActionButton = function($html, $icon_class, $title, $action, $id, $tip='', $controller='materiels', $mat=NULL, $photo=NULL) { + $echoActionButton = function($html, $icon_class, $title, $controller='', $action, $id, $other_args=[], $tip='', $confirmMessage='', $moreButtonStyle='') { + if ($controller=='') $controller='materiels'; + $controllerArgs = []; + $controllerArgs['controller'] = $controller; + $controllerArgs['action'] = $action; + $controllerArgs[] = $id; + foreach ($other_args as $other_arg) $controllerArgs[] = $other_arg; + echo $html->link( + __(" $title"), + $controllerArgs, + /* + [ + 'controller' => $controller, + 'action' => $action, + $id, + $other_args + ], + */ + [ + 'title' => $tip, + 'escape' => false, + 'onclick' => 'return true;', + 'style' => 'margin-right: 10px'.$moreButtonStyle, + 'confirm' => $confirmMessage + ] + ); + }; + /* + $echoActionButton = function($html, $icon_class, $title, $action, $id, $controller='', $tip='', $confirmMessage='', $moreButtonStyle='', $mat=NULL, $photo=NULL) { + if ($controller=='') $controller='materiels'; echo $html->link( __(" $title"), [ @@ -791,15 +873,17 @@ class AppController extends Controller 'title' => $tip, 'escape' => false, 'onclick' => 'return true;', - 'style' => 'margin-right: 10px' + 'style' => 'margin-right: 10px'.$moreButtonStyle, + 'confirm' => $confirmMessage ] ); }; + */ $this->set(compact('echoActionButton')); - } // beforeRender() + // "le materiel", "le suivi"... protected function getArticle() { diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php index b62e372..f2b8c05 100755 --- a/src/Controller/MaterielsController.php +++ b/src/Controller/MaterielsController.php @@ -153,6 +153,10 @@ class MaterielsController extends AppController public function beforeFilter(\Cake\Event\Event $event) { $this->myDebug("step 0: beforeFilter()"); + // ICI CEST OK + $toto="tititoto"; + $this->set(compact('toto')); + parent::beforeFilter($event); } @@ -180,6 +184,13 @@ class MaterielsController extends AppController $this->set('ARCHIVED', self::ARCHIVED); /* + $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 + ); + $this->set(compact('CAN_EDIT')); + */ + + /* * @todo EP 08/2017 Nouvelle organisation des ACL avec $easyACL */ // !!! MOVED TO APPCONTROLLER !!! @@ -224,6 +235,12 @@ class MaterielsController extends AppController { //if (parent::isAuthorized($userFromSession)) return TRUE; $this->myDebug("step 1: isAuthorized()"); + + /* ICI C'EST OK + $toto="tititoto"; + $this->set(compact('toto')); + */ + $user = $userFromSession; $configuration = $this->confLabinvent; $userCname = $user[$configuration->ldap_authenticationType][0]; @@ -276,6 +293,12 @@ class MaterielsController extends AppController * switch ROLE * */ + + // ICI C'EST PAS OK, why ??? + //$toto="tititoto"; + //$this->set(compact('toto')); + + switch ($action) { // INDEX, VIEW, ADD, FIND @@ -769,6 +792,27 @@ class MaterielsController extends AppController $IS_VALIDATED = ($materiel->status == 'VALIDATED'); $IS_TOBEARCHIVED = ($materiel->status == 'TOBEARCHIVED'); $IS_ARCHIVED = ($materiel->status == 'ARCHIVED'); + + // NEW TODO: + $USER_IS_CREATOR_OR_OWNER = in_array($this->userName, [ + $materiel->nom_createur, + $materiel->nom_responsable + ]); + $USER_IS_SAME_GROUP = ( + ( isset($this->priviledgedUser->groupes_metier_id) && $this->priviledgedUser->groupes_metier_id != $this->idGmNa && $materiel->groupes_metier_id == $this->priviledgedUser->groupes_metier_id ) + || + ( isset($this->priviledgedUser->groupe_thematique_id) && $this->priviledgedUser->groupe_thematique_id != $this->idGtNa && $materiel->groupes_thematique_id == $this->priviledgedUser->groupe_thematique_id ) + ); + $CAN_EDIT = $IS_CREATED && ( + $this->USER_IS_ADMIN_OR_MORE + || + $USER_IS_CREATOR_OR_OWNER + || + ( $this->USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP ) + ); + $this->set(compact('CAN_EDIT')); + // END TODO + // $status = $this->allStatus[$materiel->status]; $status = self::allStatus[$materiel->status]; $this->set('IS_CREATED', $IS_CREATED); @@ -799,9 +843,10 @@ class MaterielsController extends AppController 'materiel' ]); - // TODO, mais plutot dans le beforeFilter() ou beforeRender()... - /* - $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); + /* TODO: + $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 + ); $this->set(compact('CAN_EDIT')); */ diff --git a/src/Template/Materiels/view.ctp b/src/Template/Materiels/view.ctp index 6a27f7e..6ba3515 100755 --- a/src/Template/Materiels/view.ctp +++ b/src/Template/Materiels/view.ctp @@ -7,13 +7,32 @@ use Cake\ORM\TableRegistry; // - Constants : //$CAN_EDIT = $CAN_EDIT; $PDF_ENGINE = $PDF_ENGINE; +// - User status: +$username = $username; +$priviledgedUser = $priviledgedUser; +$USER_IS_UTILISATEUR = $USER_IS_UTILISATEUR; +$USER_IS_RESPONSABLE = $USER_IS_RESPONSABLE; +$USER_IS_ADMIN = $USER_IS_ADMIN; $USER_IS_ADMIN_OR_MORE = $USER_IS_ADMIN_OR_MORE; +$USER_IS_SUPERADMIN = $USER_IS_SUPERADMIN; +// - Materiel status: +$idGmNa = $idGmNa; +$idGtNa = $idGtNa; +$IS_CREATED = $IS_CREATED; +$IS_VALIDATED = $IS_VALIDATED; +$IS_TOBEARCHIVED = $IS_TOBEARCHIVED; +$IS_ARCHIVED = $IS_ARCHIVED; +// - User capabilities on materiel: +$CAN_EDIT = $CAN_EDIT; +// Autres +// TODO: yena plein d'autres +// ... // - Fonctions : $displayElement = $displayElement; $dateProchainControleVerif = $dateProchainControleVerif; $echoActionButton = $echoActionButton; -// TODO: yena plein d'autres -// ... + + /* (EP) moved to controller 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 // TODO: to be set by controller -$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); +//$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); $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; $CAN_COPY = $IS_CREATED and ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER); $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

status) == 'ARCHIVED') echo ' '; - if ($IS_ARCHIVED) echo ' '; + if ($IS_ARCHIVED) echo ' '; $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; ?> designation) . $panne?> @@ -182,51 +201,21 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN
- + +
status, ['CREATED','VALIDATED']) ) { - // (EP 17/5/19) Ben non, on peut pas éditer si validé !!! - //if ($IS_CREATED || $IS_VALIDATED) { - //if ($IS_CREATED) { - if ($CAN_EDIT) $echoActionButton($this->Html, 'icon-pencil', 'Editer ce matériel', 'edit', $materiel->id); - /* - echo $this->Html->link( - __(' Editer ce matériel'), - [ - 'action' => 'edit', - $materiel->id - ], - [ - 'escape' => false, - 'onclick' => 'return true;', - 'style' => 'margin-right: 10px' - ] - ); - */ - /* - * // TOBEARCHIVED+ - * else { - * //if (in_array($role, ['Administration Plus','Super Administrateur'])) { - * if ($USER_IS_ADMIN_OR_MORE) { - * echo $this->Html->link( - * __(' Editer ce matériel'), - * ['action' => 'edit', $materiel->id], - * ['escape' => false, 'onclick' => 'return true;', 'style' => 'margin-right: 10px'] - * ); - * } - * } - */ + // --- (1) BOUTONS 1st row --- + + // BOUTON "Editer" + if ($CAN_EDIT) $echoActionButton($this->Html, 'icon-pencil', 'Editer ce matériel', 'materiels', 'edit', $materiel->id); - // VALIDATED + // BOUTONS "NOUVEAU SUIVI" et "NOUVEL EMPRUNT" // if ($materiel->status == 'VALIDATED') { if ($IS_VALIDATED) { - - // BOUTON NOUVEAU SUIVI - $echoActionButton($this->Html, 'icon-plus', 'Nouv. Suivi', 'add', $materiel->id, 'Faire un nouveau suivi de ce matériel', 'suivis'); + $echoActionButton($this->Html, 'icon-plus', 'Nouv. Suivi', 'suivis', 'add', $materiel->id, [], 'Faire un nouveau suivi de ce matériel'); /* echo $this->Html->link(' Nouv. Suivi', [ 'controller' => 'suivis', @@ -238,75 +227,21 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN 'escape' => false ]); // End link */ - - // BOUTON NOUVEL EMPRUNT - $echoActionButton($this->Html, 'icon-plus', 'Nouv. Emprunt', 'add', $materiel->id, 'Faire un nouvel emprunt de ce matériel', 'emprunts'); - /* - echo $this->Html->link(' Nouv. Emprunt', [ - 'controller' => 'emprunts', - 'action' => 'add', - $materiel->id - ], [ - 'title' => 'Faire un nouvel emprunt de ce matériel', - 'style' => 'margin-right: 10px', - 'escape' => false - ]); // End link - */ + $echoActionButton($this->Html, 'icon-plus', 'Nouv. Emprunt', 'emprunts', 'add', $materiel->id, [], 'Faire un nouvel emprunt de ce matériel'); } // BOUTONS "Lier un Doc" et "Remplacer/Lier photo" if ($CAN_ATTACH_A_DOC) { - //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) { - $echoActionButton($this->Html, 'icon-file', 'Lier un Doc.', 'add', $materiel->id, 'Attacher un Doc. à ce matériel', 'documents', 'mat'); + $echoActionButton($this->Html, 'icon-file', 'Lier un Doc.', 'documents', 'add', $materiel->id, ['mat'], 'Attacher un Doc. à ce matériel'); // BOUTON "photo" if ($materiel->photo_id != null) - $echoActionButton($this->Html, 'icon-file', 'Remplacer la photo.', 'add', $materiel->id, 'Remplacer la photo de ce matériel', 'documents', 'mat', 'photo'); + $echoActionButton($this->Html, 'icon-file', 'Remplacer la photo.', 'documents', 'add', $materiel->id, ['mat', 'photo'], 'Remplacer la photo de ce matériel'); else - $echoActionButton($this->Html, 'icon-file', 'Lier une photo.', 'add', $materiel->id, 'Attacher une photo à ce matériel', 'documents', 'mat', 'photo'); - /* - echo $this->Html->link(' Lier un Doc.', [ - 'controller' => 'documents', - 'action' => 'add', - $materiel->id, - 'mat' - ], [ - 'title' => 'Attacher un Doc. à ce matériel', - 'style' => 'margin-right: 10px', - 'escape' => false - ]); - */ - - /* - echo $this->Html->link(' Remplacer la photo.', [ - 'controller' => 'documents', - 'action' => 'add', - $materiel->id, - 'mat', - 'photo' - ], [ - 'title' => 'Remplacer la photo de ce matériel', - 'style' => 'margin-right: 10px', - 'escape' => false - ]); - */ - /* - echo $this->Html->link(' Lier une photo.', [ - 'controller' => 'documents', - 'action' => 'add', - $materiel->id, - 'mat', - 'photo' - ], [ - 'title' => 'Attacher une photo à ce matériel', - 'style' => 'margin-right: 10px', - 'escape' => false - ]); - */ - } // BOUTON Lier un doc + $echoActionButton($this->Html, 'icon-file', 'Lier une photo.', 'documents', 'add', $materiel->id, ['mat', 'photo'], 'Attacher une photo à ce matériel'); + } - // Doc admission et sortie (admin+) + // BOUTONS Doc admission et sortie (admin+) if ($USER_IS_ADMIN_OR_MORE) { - // if (in_array($role, ['Administration','Administration Plus','Super Administrateur'])) { // Doc admission (admin only) if ($IS_CREATED || $IS_VALIDATED) { @@ -321,22 +256,7 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN $data = $materiel->numero_laboratoire . ".pdf"; } // if (($materiel->status == 'VALIDATED') || ($materiel->status == 'CREATED')) { - $echoActionButton($this->Html, 'icon-file', 'Doc. admission', $action, $data, "Voir le document d'admission", 'documents'); - /* - echo $this->Html->link(' Doc. admission', [ - 'controller' => 'documents', - /// - 'action' => 'admission', - $materiel->numero_laboratoire - /// - 'action' => $action, - $data - ], [ - 'title' => 'Voir le document d\'admission', - 'style' => 'margin-right: 10px', - 'escape' => false - ]); - */ + $echoActionButton($this->Html, 'icon-file', 'Doc. admission', 'documents', $action, $data, [], "Voir le document d'admission"); } // Doc sortie (admin only) @@ -352,170 +272,71 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN $data = $materiel->numero_laboratoire . ".pdf"; } // else if (($materiel->status == 'ARCHIVED') || ($materiel->status == 'TOBEARCHIVED')) { - $echoActionButton($this->Html, 'icon-file', 'Doc. sortie', $action, $data, "Voir le document de sortie", 'documents'); - /* - echo $this->Html->link(' Doc. sortie', [ - 'controller' => 'documents', - 'action' => $action, - $data - //'action' => 'sortie', - //'action' => 'sortiePdf', - //'action' => 'sortie_pdf', - //$materiel->numero_laboratoire - //$materiel->numero_laboratoire . ".pdf" - - ], [ - 'title' => 'Voir le document de sortie', - 'style' => 'margin-right: 10px', - 'escape' => false - ]); - */ + $echoActionButton($this->Html, 'icon-file', 'Doc. sortie', 'documents', $action, $data, [], "Voir le document de sortie"); } - } + + } // Doc admission et sortie + + // --- (2) BOUTONS 2nd row --- + echo "
"; - // BOUTON changement statut + // (EP) Change bouton style pour que la 2ème ligne de boutons ne chevauche pas la 1ère + // En pratique, il suffit que un seul bouton de cette ligne aie ce style (pas nécessaire pour les autres) + // Mais bon, c'est difficile de savoir lequel sera toujours présent... + // Donc, on applique ce style à TOUS les boutons de cette 2e ligne + $moreButtonStyle = '; margin-top:10px; display:inline-block'; + $moreButtonStyleRed = $moreButtonStyle . '; color:red'; + // BOUTON de changement de statut : Valider, Invalider, Demander archivage, ou Archiver if ($USER_IS_ADMIN_OR_MORE || $USER_IS_RESPONSABLE_AND_SAME_GROUP) { - /* - * if ( - * in_array($role, ['Administration','Administration Plus','Super Administrateur']) - * || ( - * $role == 'Responsable' - * && ( - * ( - * isset($priviledgedUser->groupes_metier_id) - * && $priviledgedUser->groupes_metier_id != $idGmNa - * && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id - * ) - * || - * ( - * isset($priviledgedUser->groupe_thematique_id) - * && $priviledgedUser->groupe_thematique_id != $idGtNa - * && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id - * ) - * ) - * ) - * ) { - */ - // 2) Bouton de changement de statut : Valider, Demander archivage, ou Archiver - // switch ($materiel->status) { - switch ($status) { - - // case "CREATED" : - case $CREATED: - // Bouton VALIDER - echo $this->Html->link(' Valider', [ - 'action' => 'statusValidated', - $materiel->id, - 'view' - ], [ - 'title' => 'Valider le matériel', - 'style' => 'margin-right: 10px; color: red', - 'escape' => false - ]); - break; - - // case "VALIDATED" or more : - case $VALIDATED: - case $TOBEARCHIVED: - case $ARCHIVED: - // Bouton DE-VALIDER (invalider) - echo $this->Html->link(' Dé-valider', [ - 'action' => 'statusCreated', - $materiel->id, - 'view' - ], [ - 'title' => 'dé-valider le matériel (le repasser au statut Créé)', - // 'style' => 'margin-right: 10px; background: red; color: white', - 'style' => 'margin-right: 10px; color: red', - 'escape' => false - ]); - if ($status == $VALIDATED) { - // Bouton TBA - echo $this->Html->link(' Demander sortie', [ - 'action' => 'statusToBeArchived', - $materiel->id, - 'view' - ], [ - 'title' => 'Demander la sortie de l\'inventaire', - 'style' => 'margin-right: 10px; color: red', - 'escape' => false - ]); - } else if ($status == $TOBEARCHIVED) { - // Bouton ARCHIVER - // if ($role != 'Responsable' && $role != 'Super Administrateur') { - if ($role != 'Responsable') { - echo $this->Html->link(' Sortie inventaire', [ - 'action' => 'statusArchived', - $materiel->id, - 'view' - ], [ - 'title' => 'Sortir définitivement de l\'inventaire', - 'style' => 'margin-right: 10px; color: red', - 'escape' => false, - 'confirm' => 'Êtes-vous sur de bien vouloir archiver ' . $materiel->designation . ' ?' - ]); - } - } - break; - } // switch - } // BOUTON changement statut + // CREATED + if ($IS_CREATED) + // Bouton VALIDER + $echoActionButton($this->Html, 'icon-ok-sign', 'Valider', '', 'statusValidated', $materiel->id, [], "Valider ce matériel", '', $moreButtonStyleRed); + // VALIDATED or more + else { + // Bouton Invalider + $echoActionButton($this->Html, 'icon-remove-sign', 'Invalider', '', 'statusCreated', $materiel->id, [], + "dé-valider le matériel (le repasser au statut Créé, il faudra le re-valider ensuite)", + '', $moreButtonStyleRed + ); + // Bouton TBA + if ($IS_VALIDATED) $echoActionButton($this->Html, 'icon-ok-sign', 'Demander sortie', '', 'statusToBeArchived', $materiel->id, [], + "Demander la sortie de l'inventaire", '', $moreButtonStyleRed + ); + // Bouton ARCHIVER + //if ($IS_TOBEARCHIVED && $role!='Responsable') $echoActionButton( + if ($IS_TOBEARCHIVED && $USER_IS_ADMIN_OR_MORE) $echoActionButton( + $this->Html, 'icon-ok-sign', 'Sortie inventaire', '', 'statusArchived', $materiel->id, [], + "Sortir définitivement de l'inventaire", + "Êtes-vous sur de bien vouloir archiver $materiel->designation ?", + $moreButtonStyleRed + ); + } + } // BOUTON Copier (seulement pour les materiels qui sont CREATED et pour les ADMINet+ ou USER owner) - if ($CAN_COPY) $echoActionButton($this->Html, 'icon-plus', 'Copier ce matériel', 'add', $materiel->id, "Copier ce matériel"); - /* - if ( $IS_CREATED and ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER) ) - echo $this->Html->link(' Copier ce matériel', - [ - 'controller' => 'materiels', - 'action' => 'add', - $materiel->id - ], - [ - 'title' => 'Copier ce matériel', - 'style' => 'margin-right: 10px; margin-top: 10px; display: inline-block', - 'escape' => false - ]); - */ + if ($CAN_COPY) $echoActionButton($this->Html, 'icon-plus', 'Copier ce matériel', '', 'add', $materiel->id, [], "Copier ce matériel"); // BOUTON ETIQUETTE (si imprimante disponible) if ($CAN_PRINT_LABEL) { - //if ($IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN_OR_MORE) { - /* - in_array($role, [ - 'Administration', - 'Administration Plus', - 'Super Administrateur' - ])) { - */ - // echo "
"; - // echo '
'; // - Bouton "Imprimer sur un ruban" - $action = 'Impr. étiquette'; - echo $this->Html->link(' ' . $action, [ - 'action' => 'printLabelRuban', - h($materiel->id), - 'view' - ], [ - 'title' => 'Imprimer sur un ruban 12mm', - 'style' => 'margin-right: 10px', - 'escape' => false, - 'onclick' => 'return true;' - ]); + $echoActionButton($this->Html, 'icon-print', 'Impr. étiquette', '', 'printLabelRuban', h($materiel->id), [], "Imprimer sur un ruban"); // - Bouton "Etiquette posée" - echo $this->Html->link(' ' . (h($materiel->etiquette) ? "Etiquette NON posée sur le matériel" : "Etiquette posée sur le matériel"), [ - 'controller' => 'materiels', - 'action' => h($materiel->etiquette) ? 'setLabelIsNotPlaced' : 'setLabelIsPlaced', - h($materiel->id), - 'view' - ], [ - '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", - 'style' => 'margin-left: 0px; margin-right: 10px', - 'escape' => false - ]); - // echo '
'; - } // BOUTON ETIQUETTE + $echoActionButton( + $this->Html, 'icon-file', + $materiel->etiquette ? "Etiquette NON collée" : "Etiquette collée", + 'materiels', + $materiel->etiquette ? 'setLabelIsNotPlaced' : 'setLabelIsPlaced', + h($materiel->id), ['view'], + $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" + ); + //'style' => 'margin-left: 0px; margin-right: 10px', + } // BOUTON "Voir fiche matériel" echo "
"; @@ -531,21 +352,12 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN $action = 'fiche_materiel_pdf'; $data = $materiel->numero_laboratoire . ".pdf"; } - echo $this->Html->link(' Fiche PDF du matériel', [ - 'controller' => 'documents', - 'action' => $action, - $data - //'action' => 'ficheMateriel', - //'action' => 'ficheMaterielPdf', - //'action' => 'fiche_materiel_pdf', - //$materiel->numero_laboratoire - //$materiel->numero_laboratoire . ".pdf" - ], [ - 'title' => 'Voir la fiche du materiel', - 'style' => 'margin-right: 10px; background: green; color: white', - 'escape' => false - ]); - // echo '
'; + $echoActionButton($this->Html, 'icon-file', 'Fiche PDF du matériel', 'documents', $action, $data, [], + "Voir la fiche du materiel", + '', + '; background: green; color: white' + ); + // FIN DIV BOUTONS ?> -- libgit2 0.21.2