element('materiels_list', [...]); $SELECTED_STATUS = $SELECTED_STATUS; $METRO = $METRO; // - Autres variables passées directement par la vue utilisatrice // En fait, TOUTES les variables créées par la vue sont disponibles ici, // mais on ne précise ici que les variables UTILISÉES par cet "element" // Pas bien mais pratique $controller = $controller; //$HEADERS = $HEADERS; //$HAS_COL_METRO = $HAS_COL_METRO; // Seulement pour la partie données $materiels = $materiels; //debug($materiels); //$today = $today; //$materiel = $materiel; //$color = $color; //$date_color = $date_color; // - Fonction utilisée seulement pour la 2ème partie (affichage d'une ligne de données) $displayActionButtonsForMateriel = function($materiel, $statuses_color, $username, $USER_IS_RESPONSABLE, $USER_IS_ADMIN_OR_MORE, $USER_IS_SUPERADMIN, $controller, $html) { // TODO: Dans l'idéal, ces variables doivent etre définies par le controleur et passées à la vue // (sous forme d'un tableau contenant ces droits pour CHAQUE materiel) // Car la vue doit être la moins "intelligente" possible, la plus simple possible $IS_CREATED = ($materiel->status == 'CREATED'); $IS_VALIDATED = ($materiel->status == 'VALIDATED'); $IS_TOBEARCHIVED = ($materiel->status == 'TOBEARCHIVED'); $IS_ARCHIVED = ($materiel->status == 'ARCHIVED'); /* * Couleurs en fonction du statut du matos * // CREATED => bleu if ($IS_CREATED) $color = 'blue'; // VALIDATED => noir if ($IS_VALIDATED) $color = 'black'; //if ($IS_VALIDATED) $color = 'green'; // TBA => orange if ($IS_TOBEARCHIVED) $color = 'orange'; // ARCHIVED => rouge if ($IS_ARCHIVED) $color = 'red'; */ $color = $statuses_color[$materiel->status]; $color = "style='color: $color'"; $USER_IS_CREATOR_OR_OWNER = in_array($username, [$materiel->nom_createur, $materiel->nom_responsable]); $USER_IS_SAME_GROUP_AS_MATERIEL = ( ( isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id!=$idGmNa && $materiel->groupes_metier_id==$priviledgedUser->groupes_metier_id ) || ( isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id!=$idGtNa && $materiel->groupes_thematique_id==$priviledgedUser->groupes_thematique_id ) ); $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL = $USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL; $CONTEXT1 = $USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL; // Détermination des autorisations pour tous les boutons "éditer", "supprimer", "valider", ... $id = $materiel->id; $CAN_EDIT = $controller->isAuthorizedAction('edit', $id); //$CAN_EDIT = $IS_CREATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL); //$CAN_EDIT = $IS_CREATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP_AS_MATERIEL || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER); $CAN_DELETE = $controller->isAuthorizedAction('delete', $id); //$CAN_DELETE = $CAN_EDIT; /* $CAN_VALIDATE_OR_INVALIDATE = $USER_IS_ADMIN_OR_MORE || ( ($materiel->materiel_administratif == 0) && $USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL ); $CAN_VALIDATE = $IS_CREATED && $CAN_VALIDATE_OR_INVALIDATE; $CAN_INVALIDATE = !$IS_CREATED && $CAN_VALIDATE_OR_INVALIDATE; $CAN_TBA = $IS_VALIDATED && ($USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL)); $CAN_ARCHIVE = $IS_TOBEARCHIVED && $CAN_VALIDATE_OR_INVALIDATE; */ $CAN_INVALIDATE = $controller->isAuthorizedAction('statusCreated', $id); $CAN_VALIDATE = $controller->isAuthorizedAction('statusValidated', $id); $CAN_TBA = $controller->isAuthorizedAction('statusTobearchived', $id); $CAN_ARCHIVE = $controller->isAuthorizedAction('statusArchived', $id); echo ''; // 1) EDIT icon /* if ( in_array($materiel->status, [ 'CREATED', // (EP 17/5/19) ben non, on peut pas si c'est validé !!! //'VALIDATED' ]) && ( $USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL) ) ) */ if ($CAN_EDIT) echo $html->link(__(''), ['action' => 'edit', $materiel->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]); // 2) VALIDER/TBA/ARCHIVER icon /* if ( $USER_IS_ADMIN || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL) ) { */ //if ($materiel->status=='CREATED' && !$USER_IS_RESPONSABLE) { if ($CAN_VALIDATE) echo $html->link('', [ 'action' => 'statusValidated', $materiel->id ], [ 'title' => 'Valider', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => 'Êtes-vous sur de vouloir valider ' . $materiel->designation . ' ?' ] ); //else if (h($materiel->status) == 'VALIDATED') { if ($CAN_TBA) echo $html->link('', [ 'action' => 'statusTobearchived', $materiel->id ], [ 'title' => 'Demander la sortie de l\'inventaire', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => "Êtes-vous sûr de vouloir demander l'archivage de " . $materiel->designation . ' ?' ] ); //else if ($materiel->status=='TOBEARCHIVED' && !$USER_IS_RESPONSABLE) if ($CAN_ARCHIVE) echo $html->link('', [ 'action' => 'statusArchived', $materiel->id ], [ 'title' => 'Sortir de l\'inventaire', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => 'Êtes-vous sur de vouloir archiver ' . $materiel->designation . ' ?' ] ); // 3) DELETE icon /* if (h($materiel->status) == 'CREATED') { if ( $USER_IS_ADMIN_OR_MORE || $USER_IS_CREATOR_OR_OWNER || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL) ) */ if ($CAN_DELETE) echo $html->link(__(''), [ 'action' => 'delete', $materiel->id ], [ 'title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer {0} ?', $materiel->designation) ] ); echo ""; return $color; }; // displayActionButtonsForMateriel ?> '; }?> ".$this->Paginator->sort('metrologie', 'Metro')."" if ($METRO) echo "" ?> year-$time->month-$time->day"); // On extrait la date pour la vérification de fin de garantie //$today = $today->format('Ydm'); // On formatte la date initialement en 31-12-2000 (par exemple) en un format qui pourra etre comparé : 20001231 $today = $today->format('Ymd'); // On formatte la date initialement en 31-12-2000 (par exemple) en un format qui pourra etre comparé : 20001231 */ // BOUCLE SUR CHAQUE MATERIEL, ligne par ligne //$mc = new MaterielsController(); foreach ($materiels as $materiel) : ?> date_fin_garantie; if ($date_fin_gar !== NULL) { // expirée ? //if ($date_fin_gar <= $today) $date_color = 'style="color: #FF0000"'; if ($date_fin_gar <= $today) $date_color = 'style="color: red"'; // dans moins d'1 an ? elseif ($date_fin_gar <= $next_year_same_day) $date_color = 'style="color: orange"'; /* $timeFin = new time($materiel->date_fin_garantie); $date_fin_gar = new date("$timeFin->year-$timeFin->month-$timeFin->day"); //$dateFin = $dateFin->format('Ydm'); $date_fin_gar = $dateFin->format('Ymd'); debug("datefin $date_fin_gar"); */ //debug("couleur $date_color"); } // // (1) COLONNE SELECTION (checkbox) if ($SELECTED_STATUS) { echo ''; } // $color = $displayActionButtonsForMateriel($materiel, $statuses_color, $username, $USER_IS_RESPONSABLE, $USER_IS_ADMIN_OR_MORE, $USER_IS_SUPERADMIN, $controller, $this->Html); ?> getNiceStatus(); /* switch (h($materiel->status)) { case 'CREATED': //$statut = 'C'; $statut = 'A Valider'; break; case 'VALIDATED': //$statut = 'V'; $statut = 'Validé'; break; case 'TOBEARCHIVED': //$statut = 'T'; $statut = 'A sortir'; break; case 'ARCHIVED': //$statut = 'A'; $statut = 'Archivé'; break; default: $statut = ''; break; } */ ?> has('site')) { $site_lieu = h($materiel->site->nom); if ($materiel->lieu_detail) $site_lieu .= ' - '.h($materiel->lieu_detail); if ($materiel->is_site_only) $site_lieu .= ' (réservé au site)'; } ?> '. (h($materiel->metrologie)=='1' ? 'Y':'N').''; ?>
Paginator->sort('designation','Désignation') ?> Paginator->sort('numero_laboratoire', 'N° inv.') ?> Paginator->sort('numero_inventaire_organisme', 'N° tut.') ?> paginator->sort('hors_service', ' ') ?> Paginator->sort('numero_commande', 'BC') ?> Paginator->sort('nom_user', "Utilisateur") ?> Paginator->sort('Users.nom', 'Gestionnaire') ?> Paginator->sort('Categories.nom', 'Catégorie') ?> Paginator->sort('status', 'Statut') ?> Paginator->sort('date_acquisition', 'Date Achat') ?> Paginator->sort('prix_ht', 'Prix') ?> Paginator->sort('Fournisseurs.nom', 'Fournisseur') ?> Paginator->sort('Sites.nom', 'Lieu') ?> ".$this->Paginator->sort('metrologie', 'Metro')."
' . $this->Form->checkbox($materiel->id, [ 'style' => 'margin: 3px', 'id' => $materiel->id ]) . 'has('designation') ? $this->Html->link( $materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $materiel->id],[$color] ) : '' ?> numero_laboratoire) ?> numero_inventaire_organisme) ?> hors_service) ? 'HS' : '' ?> numero_commande) ?> nom_user) ?> has('user') ? h($materiel->user->nom) : '' ?> has('category') ? h($materiel->category->nom) : '' ?> > >date_acquisition) ?> prix_ht.'€') ?> has('fournisseur') ? h($materiel->fournisseur->nom) : '' ?>