diff --git a/src/Template/Categories/index.ctp b/src/Template/Categories/index.ctp index 1a249ff..382c025 100755 --- a/src/Template/Categories/index.ctp +++ b/src/Template/Categories/index.ctp @@ -1,36 +1,38 @@ -
= $this->Paginator->sort('id') ?> | -= $this->Paginator->sort('nom') ?> | -= $this->Paginator->sort('sur_categorie_id') ?> | -= __('Actions') ?> | += $this->Paginator->sort('nom', 'Nom') ?> | += $this->Paginator->sort('sur_categorie_id', 'Domaine') ?> | += __('') ?> |
---|---|---|---|---|---|---|
= $this->Number->format($category->id) ?> | -= h($category->nom) ?> | -= $category->has('sur_category') ? $this->Html->link($category->sur_category->id, ['controller' => 'SurCategories', 'action' => 'view', $category->sur_category->id]) : '' ?> | -- = $this->Html->link(__('View'), ['action' => 'view', $category->id]) ?> - = $this->Html->link(__('Edit'), ['action' => 'edit', $category->id]) ?> - = $this->Form->postLink(__('Delete'), ['action' => 'delete', $category->id], ['confirm' => __('Are you sure you want to delete # {0}?', $category->id)]) ?> + | = $this->Html->link($category->nom, ['action' => 'view', $category->id]) ?> | += $category->has('sur_category') ? $this->Html->link($category->sur_category->nom, ['controller' => 'SurCategories', 'action' => 'view', $category->sur_category->id]) : '' ?> | + ++ = $this->Html->link(__(''), ['action' => 'view', $category->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Html->link(__(''), ['action' => 'edit', $category->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Form->postLink(__(''), ['action' => 'delete', $category->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $category->id)]) ?> | +
= $this->Paginator->counter() ?>
+ += $this->Paginator->sort('id') ?> | -= $this->Paginator->sort('nom') ?> | -= $this->Paginator->sort('description') ?> | -= __('Actions') ?> | += $this->Paginator->sort('nom', 'Nom') ?> | += $this->Paginator->sort('description', 'Description') ?> | += __('') ?> |
---|---|---|---|---|---|---|
= $this->Number->format($groupesMetier->id) ?> | -= h($groupesMetier->nom) ?> | += $this->Html->link($groupesMetier->nom, ['action' => 'view', $groupesMetier->id]) ?> | = h($groupesMetier->description) ?> | -- = $this->Html->link(__('View'), ['action' => 'view', $groupesMetier->id]) ?> - = $this->Html->link(__('Edit'), ['action' => 'edit', $groupesMetier->id]) ?> - = $this->Form->postLink(__('Delete'), ['action' => 'delete', $groupesMetier->id], ['confirm' => __('Are you sure you want to delete # {0}?', $groupesMetier->id)]) ?> + + | + = $this->Html->link(__(''), ['action' => 'view', $groupesMetier->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Html->link(__(''), ['action' => 'edit', $groupesMetier->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Form->postLink(__(''), ['action' => 'delete', $groupesMetier->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $groupesMetier->id)]) ?> | +
= $this->Paginator->counter() ?>
+ += $this->Paginator->sort('id') ?> | -= $this->Paginator->sort('nom') ?> | -= $this->Paginator->sort('description') ?> | -= __('Actions') ?> | += $this->Paginator->sort('nom', 'Nom') ?> | += $this->Paginator->sort('description', 'Description') ?> | += __('') ?> |
---|---|---|---|---|---|---|
= $this->Number->format($groupesThematique->id) ?> | -= h($groupesThematique->nom) ?> | += $this->Html->link($groupesThematique->nom, ['action' => 'view', $groupesThematique->id]) ?> | = h($groupesThematique->description) ?> | -- = $this->Html->link(__('View'), ['action' => 'view', $groupesThematique->id]) ?> - = $this->Html->link(__('Edit'), ['action' => 'edit', $groupesThematique->id]) ?> - = $this->Form->postLink(__('Delete'), ['action' => 'delete', $groupesThematique->id], ['confirm' => __('Are you sure you want to delete # {0}?', $groupesThematique->id)]) ?> + + | + = $this->Html->link(__(''), ['action' => 'view', $groupesThematique->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Html->link(__(''), ['action' => 'edit', $groupesThematique->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Form->postLink(__(''), ['action' => 'delete', $groupesThematique->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $groupesThematique->id)]) ?> | +
= $this->Paginator->counter() ?>
+ += $this->Paginator->sort('id') ?> | -= $this->Paginator->sort('nom') ?> | -= __('Actions') ?> | += $this->Paginator->sort('nom', 'Nom') ?> | += __('') ?> |
---|---|---|---|---|
= $this->Number->format($organisme->id) ?> | -= h($organisme->nom) ?> | -- = $this->Html->link(__('View'), ['action' => 'view', $organisme->id]) ?> - = $this->Html->link(__('Edit'), ['action' => 'edit', $organisme->id]) ?> - = $this->Form->postLink(__('Delete'), ['action' => 'delete', $organisme->id], ['confirm' => __('Are you sure you want to delete # {0}?', $organisme->id)]) ?> + | = $this->Html->link($organisme->nom, ['action' => 'view', $organisme->id]) ?> | + ++ = $this->Html->link(__(''), ['action' => 'view', $organisme->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Html->link(__(''), ['action' => 'edit', $organisme->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Form->postLink(__(''), ['action' => 'delete', $organisme->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $organisme->id)]) ?> | +
= $this->Paginator->counter() ?>
+ +ACL (Access Control List)
I – Cycle de vie du statut du matériel
Créer un matériel ==> passe alors en statut CREATED ==> peut alors être éventuellement supprimé (mais ne pourra plus être supprimé ensuite)
Valider un matériel CREATED ==> passe alors en statut VALIDATED (admin only)
Demander l'Archivage d'un materiel VALIDATED ==> passe alors en statut TOBEARCHIVED (resp et admin only)
Sortir de l'inventaire (Valider une demande d'archivage d'un matériel TOBEARCHIVED) ==> statut ARCHIVED (admin only)
Désarchiver un matériel ==> repasse de TOBEARCHIVED ou ARCHIVED à VALIDATED (admin only)
En résumé : TODO (schéma)
CREATED ==> VALIDATED ==> TOBEARCHIVED ==> ARCHIVED
I /\ I I
V I ------------------------ I --------------------------------- I (adminplus only)
DELETED
II - Droits des utilisateurs selon leur profil
A – Globalement (principes généraux)
Un utilisateur non logué ne doit RIEN pouvoir faire. Seulement se loguer, c'est tout. Il n'a accès qu'à la page d'accueil (de login).
Une fois logué, un utilisateur a des droits différents selon son profil, globalement :
- un USER ne peut que créer un matériel, un suivi, ou un emprunt, consulter, et modifier (uniquement ce qu'il a créé lui-même)
- un RESPONSABLE a tous les droits sauf accès à certains champs et certaines vues réservées à l'administration (ADMIN). Il ne peut pas non plus archiver un matériel, mais seulement demander l'archivage (comme un USER)
- un ADMIN(istratif) a tous les droits (y-compris champs réservés à l'administration)
- un ADMINPLUS (administratif Plus) a tous les droits de ADMIN et en plus il peut modifier un matériel quelque soit son statut (y-compris TOBEARCHIVED et ARCHIVED), notamment il peut modifier le statut du matériel (pour le rétrograder)
- un SUPERADMIN a tous les droits : ceux d'ADMINPLUS et certains droits supplémentaires pour lui permettre des corrections d'erreur et la configuration de l'application (notamment l'administration des utilisateurs...)
Concernant les informations internes permettant de savoir qui a fait quoi (mises en place en février 2014), elles ne sont bien sûr pas modifiables puisque gérées automatiquement par le système, mais sont visibles par tous excepté le profil USER.
B - sur la table MATERIEL
| Read (un seul ou une liste)
(view ou index) | Create (1)
(add) | Update (1)
(edit) | Delete
(delete) | Valider
(statusValidated) | Demander archivage
(statusToBeArchived) | Sortir de l'inventaire
(statusArchived) | Désarchiver (2) | Exporter
(csv)
| Montée de statut groupée (3)
(execActions) | Edition (4)
DOCUMENTS entrée & sortie |
ALL (TOUS)
(droits par défaut) | Y
champs exclus (cachés) : données admin | Y
champs exclus (cachés) : données admin + statut + créateur + étiquette | Y ssi CREATED (tous les champs) ou VALIDATED (certains champs seulement)
champs exclus (cachés) : données admin + statut + créateur + étiquette | Y ssi CREATED | N
(resp+) | N
(resp+) | N
(admin+) | N
(adminplus+) | N
(resp+) | N
(admin+) | N
(admin+) |
User (quelconque) | idem ALL | idem ALL ssi créateur | idem ALL | ||||||||
Responsable | idem ALL | idem ALL (+ créateur + étiquette) | idem ALL | Y ssi CREATED
| Y ssi VALIDATED | idem ALL | Y | idem ALL | |||
Admin | (idem Responsable + données admin) | idem Responsable | Y ssi TOBEARCHIVED | idem Responsable | Y | Y - admission : ssi VALIDATED - sortie : ssi TOBEARCHIVED ou ARCHIVED | |||||
Adminplus | idem Admin | idem Admin (tous les statuts) (+ champ statut) TOBEARCHIVED ou ARCHIVED: seulement le statut | idem Admin | Y ssi ARCHIVED ou TOBEARCHIVED | idem Admin | ||||||
Superadmin | Y idem Adminplus (+num_inventaire_old) |
Par défaut, le superadmin a TOUS les droits
Conventions d'écriture :
- resp+ = possible pour un Responsable et plus (responsable, admin, adminplus, et superadmin)
- admin+ = possible pour un Admin et plus (admin, adminplus, et superadmin)
- ...
Notes :
(1)Droits en modification (edit) :
- Un simple « user » ne doit pas pouvoir modifier le responsable, ni le statut, ni l'étiquette, ni les données admin d'un matériel (en mode Création comme Modification)
- Un «responsable » ne doit pas pouvoir modifier le statut, ni les données admin d'un matériel (en mode Création comme Modification)
- Les données admin ne sont accessibles qu'aux profils admin+
- Le champ "status" n'est modifiable que par les profils adminplus+
- Tout le monde peut modifier un matériel VALIDATED (user ne peut modifier que ses matériels),
MAIS UNIQUEMENT certains champs (designation, sous_categorie, materiel_administratif, materiel_technique, description, etiquette, lieu_stockage, lieu_detail, numero_serie, groupes_thematique, groupes_metier)
- Seuls les profils adminplus+ peuvent modifier un matériel TOBEARCHIVED, ou ARCHIVED mais UNIQUEMENT le champ "status" (pour pouvoir rétrograder à CREATED ou VALIDATED)
- Le seul moyen de modifier COMPLÈTEMENT un matériel VALIDATED, TOBEARCHIVED, ou ARCHIVED,
c'est de changer son statut, en le rétrogradant à CREATED (seuls les profils adminplus+ peuvent le faire)
(2)Désarchiver : consiste à rétrograder un matériel ARCHIVED ou TOBEARCHIVED dans le statut VALIDATED ou CREATED (adminplus+ only) ; utile en cas d'erreur
(3)Montée de statut groupée : seul ADMIN peut (exporter tout ou partie de la liste des matériels, et) augmenter (+1) le statut d'un groupe de matériels, depuis la vue « index » (vue spéciale pour ADMIN, avec des cases à cocher et boutons pour exporter ou faire évoluer le statut)
(4)Edition des documents :
Admission : quand on "VALIDE" un matériel "CREATED", le statut passe en VALIDATED et le document d'admission est automatiquement édité
Sortie : quand on "ARCHIVE" un document "TOBEARCHIVED", le statut passe en ARCHIVED et le document de sortie est automatiquement édité
De plus :
- Bouton "Doc admission" affiché à partir du statut "VALIDATED"
- Bouton "Doc Sortie" affiché à partir du statut TOBEARCHIVED (et donc aussi pour ARCHIVED)
Enfin, Le doc de sortie doit être couplée avec la liste des matériels a archiver (TOBEARCHIVED) quand il y a une demande de sortie.
C - sur les différentes VUES liées au matériel
Page accueil :
Administration voit un menu avec 2 options :
.« Voir les matériels à valider »
.« Voir les matériels à sortir de l'inventaire »
Page Outils :
User n'a pas accès à cette page
Les autres ont quelques options
superadmin a ces options en plus :
.Gérer les utilisateurs
.Passer en mode debug
Vue materiel/index (liste) : limiter aux matériels actifs (non archivés)
.Administration voit des boutons pour filtrer par « tous », « à valider », « validés », « à sortir », « archivés »
Vue materiel/find : limiter aux matériels actifs (non archivés)
Seul le profil Administration voit TOUS les matériels (y-compris archivés)
Vue materiel/view :
boutons « Imprimer Etiquettes » : admin et resp only
Vue materiel/edit :
.Etiquette O/N (administratif only)
.Statut (superadmin only)
.Informations administratives (administratif only)
.Numero ancien inventaire (superadmin only)
D - sur un SUIVI et un EMPRUNT
.Dans tous les cas, on ne doit pas pouvoir emprunter ou suivre un materiel non validé (CREATED)
.User a les droits C, R, U (si créateur), D (si créateur)
.Resp+ a les droits C, R, U, D
Un USER peut modifier/supprimer un emprunt dont il est soit le créateur soit l'emprunteur.
Un USER qui créé un emprunt ne doit pas pouvoir changer le nom de l'emprunteur (par défaut, c'est lui). Ainsi, il pourra modifier/supprimer cette fiche au besoin plus tard. Par défaut donc, pour un user, emprunt.emprunteur=creator, materiel.responsable=creator
E - sur les UTILISATEURS
Par défaut, superadmin a tous les droits, et les autres profils n'ont que le droit de lecture (view et index)
F - sur tous les autres objets métiers
Voici la liste des autres objets métiers :
.Catégories (et domaines et sous-catégories)
.Groupes thématiques
.Groupes métiers
Par défaut, pour tous ces objets, superadmin a tous les droits, admin a tous les droits sauf « delete », et les autres profils n'ont que le droit de lecture (view et index)
\ No newline at end of file diff --git a/src/Template/Pages/printers.ctp b/src/Template/Pages/printers.ctp new file mode 100755 index 0000000..275b5ad --- /dev/null +++ b/src/Template/Pages/printers.ctp @@ -0,0 +1,160 @@ ++Nom : "Imprimante d'étiquettes - Dymo - LabelManager PnP - USB" +
+ ++Prix : environ 50 € HT +
+ ++Ruban à commander : "D1 en 12mm" +
+ ++Lien chez Lyreco (Réf : 4.976.543) +
+ ++Lien chez OfficeDepot (Réf : 5375844) +
+ ++Lien chez le constructeur DYMO (Réf : S0915350) +
+ + += $this->Html->image('etiqueteuse.jpg', ['alt' => 'Image de l\'etiqueteuse Dymo - LabelManager PnP - USB']) ?> + ++ Pas de logiciel ni de pilote à installer. Le logiciel intégré s’ouvre à l’écran, prêt à l’emploi. + Garantie 2 ans. + Fonctionne avec les rubans D1 6, 9 et 12 mm. + Petite et compacte, elle trouve facilement sa place sur un bureau. + Batterie lithium-ion fournie, rechargeable par USB - pas d’adaptateur secteur ni de piles. + Personnalisez vos étiquettes avec les polices et graphiques de votre ordinateur. + Connectez-là à votre PC ou Mac et imprimez instantanément et très facilement des étiquettes professionnelles ! + Connexion USB à votre PC ou Mac. ++ +
+Page d'aide et de documentation +
+ + + ++Autre lien pour le téléchargement +
+ + +
+
+Au total, ça fait donc 9.
+
= $this->Paginator->sort('id') ?> | -= $this->Paginator->sort('nom') ?> | -= __('Actions') ?> | += $this->Paginator->sort('nom', 'Nom') ?> | += __('') ?> |
---|---|---|---|---|
= $this->Number->format($site->id) ?> | -= h($site->nom) ?> | -- = $this->Html->link(__('View'), ['action' => 'view', $site->id]) ?> - = $this->Html->link(__('Edit'), ['action' => 'edit', $site->id]) ?> - = $this->Form->postLink(__('Delete'), ['action' => 'delete', $site->id], ['confirm' => __('Are you sure you want to delete # {0}?', $site->id)]) ?> + | = $this->Html->link($site->nom, ['action' => 'view', $site->id]) ?> | + ++ = $this->Html->link(__(''), ['action' => 'view', $site->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Html->link(__(''), ['action' => 'edit', $site->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Form->postLink(__(''), ['action' => 'delete', $site->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $site->id)]) ?> | +
= $this->Paginator->counter() ?>
+ += $this->Paginator->sort('id') ?> | -= $this->Paginator->sort('nom') ?> | -= $this->Paginator->sort('categorie_id') ?> | -= __('Actions') ?> | += $this->Paginator->sort('nom', 'Nom') ?> | += $this->Paginator->sort('categorie_id', 'Catégorie') ?> | += __('') ?> |
---|---|---|---|---|---|---|
= $this->Number->format($sousCategory->id) ?> | -= h($sousCategory->nom) ?> | -= $sousCategory->has('category') ? $this->Html->link($sousCategory->category->id, ['controller' => 'Categories', 'action' => 'view', $sousCategory->category->id]) : '' ?> | -- = $this->Html->link(__('View'), ['action' => 'view', $sousCategory->id]) ?> - = $this->Html->link(__('Edit'), ['action' => 'edit', $sousCategory->id]) ?> - = $this->Form->postLink(__('Delete'), ['action' => 'delete', $sousCategory->id], ['confirm' => __('Are you sure you want to delete # {0}?', $sousCategory->id)]) ?> + | = $this->Html->link($sousCategory->nom, ['action' => 'view', $sousCategory->id]) ?> | += $sousCategory->has('category') ? $this->Html->link($sousCategory->category->nom, ['controller' => 'Categories', 'action' => 'view', $sousCategory->category->id]) : '' ?> | + ++ = $this->Html->link(__(''), ['action' => 'view', $sousCategory->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Html->link(__(''), ['action' => 'edit', $sousCategory->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Form->postLink(__(''), ['action' => 'delete', $sousCategory->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $sousCategory->id)]) ?> | +
= $this->Paginator->counter() ?>
+ += $this->Paginator->sort('id') ?> | -= $this->Paginator->sort('nom') ?> | -= __('Actions') ?> | += $this->Paginator->sort('nom', 'Nom') ?> | += __('') ?> |
---|---|---|---|---|
= $this->Number->format($surCategory->id) ?> | -= h($surCategory->nom) ?> | -- = $this->Html->link(__('View'), ['action' => 'view', $surCategory->id]) ?> - = $this->Html->link(__('Edit'), ['action' => 'edit', $surCategory->id]) ?> - = $this->Form->postLink(__('Delete'), ['action' => 'delete', $surCategory->id], ['confirm' => __('Are you sure you want to delete # {0}?', $surCategory->id)]) ?> + | = $this->Html->link($surCategory->nom, ['action' => 'view', $surCategory->id]) ?> | + ++ = $this->Html->link(__(''), ['action' => 'view', $surCategory->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Html->link(__(''), ['action' => 'edit', $surCategory->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Form->postLink(__(''), ['action' => 'delete', $surCategory->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $surCategory->id)]) ?> |
= $this->Paginator->counter() ?>
+ += $this->Paginator->sort('id') ?> | -= $this->Paginator->sort('nom') ?> | -= __('Actions') ?> | += $this->Paginator->sort('nom', 'Nom') ?> | += __('') ?> |
---|---|---|---|---|
= $this->Number->format($typeSuivi->id) ?> | -= h($typeSuivi->nom) ?> | -- = $this->Html->link(__('View'), ['action' => 'view', $typeSuivi->id]) ?> - = $this->Html->link(__('Edit'), ['action' => 'edit', $typeSuivi->id]) ?> - = $this->Form->postLink(__('Delete'), ['action' => 'delete', $typeSuivi->id], ['confirm' => __('Are you sure you want to delete # {0}?', $typeSuivi->id)]) ?> + | = $this->Html->link($typeSuivi->nom, ['action' => 'view', $typeSuivi->id]) ?> | + ++ = $this->Html->link(__(''), ['action' => 'view', $typeSuivi->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Html->link(__(''), ['action' => 'edit', $typeSuivi->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Form->postLink(__(''), ['action' => 'delete', $typeSuivi->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $typeSuivi->id)]) ?> | +
= $this->Paginator->counter() ?>
+ += $this->Paginator->sort('id') ?> | = $this->Paginator->sort('nom') ?> | -= $this->Paginator->sort('username') ?> | -= $this->Paginator->sort('password') ?> | -= $this->Paginator->sort('email') ?> | = $this->Paginator->sort('role') ?> | = $this->Paginator->sort('groupes_metier_id') ?> | -= __('Actions') ?> | += __('') ?> | ||
---|---|---|---|---|---|---|---|---|---|---|
= $this->Number->format($user->id) ?> | -= h($user->nom) ?> | -= h($user->username) ?> | -= h($user->password) ?> | -= h($user->email) ?> | += $this->Html->link($user->nom, ['action' => 'view', $user->id]) ?> | = h($user->role) ?> | -= $user->has('groupes_metier') ? $this->Html->link($user->groupes_metier->id, ['controller' => 'GroupesMetiers', 'action' => 'view', $user->groupes_metier->id]) : '' ?> | -- = $this->Html->link(__('View'), ['action' => 'view', $user->id]) ?> - = $this->Html->link(__('Edit'), ['action' => 'edit', $user->id]) ?> - = $this->Form->postLink(__('Delete'), ['action' => 'delete', $user->id], ['confirm' => __('Are you sure you want to delete # {0}?', $user->id)]) ?> + | = $user->has('groupes_metier') ? h($user->groupes_metier->nom) : '' ?> | + ++ = $this->Html->link(__(''), ['action' => 'view', $user->id], ['title' => 'Visualiser', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Html->link(__(''), ['action' => 'edit', $user->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> + = $this->Form->postLink(__(''), ['action' => 'delete', $user->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $user->id)]) ?> | +
= $this->Paginator->counter() ?>
+ +