Commit fe2c64d9cfc909c3797c3f35c506b37c9ecd5ee1
1 parent
484f7858
Exists in
master
and in
1 other branch
Amélioration et rationalisation des notifications (étape 6)
Les noms et verbes associés aux actions (pour les notifs) sont désormais aussi configurables, et par labo v4.103.7-3.7.9
Showing
9 changed files
with
250 additions
and
95 deletions
Show diff stats
CHANGES.txt
... | ... | @@ -105,6 +105,15 @@ Outre ces changements, voici d'autres changements importants : |
105 | 105 | |
106 | 106 | ======= CHANGES ======= |
107 | 107 | |
108 | +TODO : | |
109 | + - (e) Ajout d'une page web "/pages/Notifications" qui donne l'état actuel des notifications (quelles notifs pour quelles actions) | |
110 | + (sur le modèle de /pages/acls) | |
111 | + | |
112 | +------- | |
113 | +25/09/2020 v4.103.7-3.7.9 (EP) | |
114 | + - (i) Grosse amélioration et rationalisation de la gestion des notifications : log et/ou email (étape 6) | |
115 | + - (i) Les noms et verbes associés aux actions (pour les notifs) sont désormais aussi configurables, et par labo | |
116 | + | |
108 | 117 | ------- |
109 | 118 | 24/09/2020 v4.103.6-3.7.9 (EP) |
110 | 119 | - (i) Grosse amélioration et rationalisation de la gestion des notifications : log et/ou email (étapes 4 et 5) | ... | ... |
README.md
... | ... | @@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes : |
42 | 42 | |
43 | 43 | -------------------------------------------------------------------------------------------- |
44 | 44 | |
45 | -Date: 24/09/2020 | |
46 | -Version: 4.103.6-3.7.9 | |
45 | +Date: 25/09/2020 | |
46 | +Version: 4.103.7-3.7.9 | |
47 | 47 | |
48 | 48 | |
49 | 49 | HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) | ... | ... |
src/Controller/AppController.php
... | ... | @@ -31,6 +31,7 @@ use App\Model\Entity\Emprunt; |
31 | 31 | use Cake\Log\Log; |
32 | 32 | use Cake\Http\Exception\NotImplementedException; |
33 | 33 | use Cake\Controller\Component\AuthComponent; |
34 | +use Cake\ORM\Entity; | |
34 | 35 | |
35 | 36 | |
36 | 37 | |
... | ... | @@ -327,7 +328,10 @@ class AppController extends Controller |
327 | 328 | ); |
328 | 329 | // $easyACL |
329 | 330 | |
330 | - const actionNounAndPastVerbs = [ | |
331 | + // Valeurs par défaut pour TOUS les controleurs | |
332 | + //const actionNounAndPastVerbs = [ | |
333 | + //protected static $actionNounAndPastVerbs = [ | |
334 | + protected $actionsNounAndPastVerb = [ | |
331 | 335 | // C |
332 | 336 | 'add' => ['Ajout','ajouté'], |
333 | 337 | // R |
... | ... | @@ -338,9 +342,49 @@ class AppController extends Controller |
338 | 342 | // D |
339 | 343 | 'delete' => ['Suppression','supprimé'], |
340 | 344 | ]; |
345 | + protected function setActionsNounAndPastVerb(array $actionsNounAndPastVerb) { | |
346 | + foreach ($actionsNounAndPastVerb as $action=>$nounAndPastVerb) | |
347 | + $this->actionsNounAndPastVerb[$action] = $nounAndPastVerb; | |
348 | + } | |
349 | + /* | |
350 | + * Retourne ['nom','verbe_au_passé'] correspondants à l'action $action | |
351 | + * | |
352 | + * ex: | |
353 | + * => ['Ajout','ajouté'] pour l'action 'add' | |
354 | + * => ['Modification','modifié'] pour l'action 'edit' | |
355 | + * ... | |
356 | + * | |
357 | + * Actions générales : add, edit, delete, view... | |
358 | + * | |
359 | + */ | |
360 | + protected function getActionNounAndPastVerb($action) { | |
361 | + //if (in_array($action, array_keys($this->actionNounAndPastVerbs))) return $this->actionNounAndPastVerbs[$action]; | |
362 | + //$control = $this->name.'Controller'; | |
363 | + //if (in_array($action, array_keys($control::$actionNounAndPastVerbs))) | |
364 | + if (in_array($action, array_keys($this->actionsNounAndPastVerb))) | |
365 | + $elems = $this->actionsNounAndPastVerb[$action]; | |
366 | + /* | |
367 | + //elseif (in_array($action, array_keys(AppController::actionNounAndPastVerbs))) $elems = AppController::actionNounAndPastVerbs[$action]; | |
368 | + elseif (in_array($action, array_keys(AppController::$actionNounAndPastVerbs))) | |
369 | + $elems = AppController::$actionNounAndPastVerbs[$action]; | |
370 | + */ | |
371 | + // Pas de définition pour cette action | |
372 | + //return [null,null]; | |
373 | + // par défaut, par exemple 'edit-ion' et 'edit-é' pour action 'edit' | |
374 | + else | |
375 | + $elems = [$action.'ion', $action.'é']; | |
376 | + //return $elems; | |
377 | + return [ | |
378 | + 'noun' => $elems[0], | |
379 | + 'past_verb' => $elems[1], | |
380 | + 'noun_article' => isset($elems[2]) ? $elems[2] : null, | |
381 | + 'verb_article' => isset($elems[3]) ? $elems[3] : null, | |
382 | + ]; | |
383 | + } | |
384 | + | |
341 | 385 | |
342 | 386 | |
343 | - protected function is_vowel($char) { return in_array($char, ['a','e','i','o','u','y']); } | |
387 | + protected function is_vowel($char) { return in_array(strtolower($char), ['a','e','i','o','u','y']); } | |
344 | 388 | |
345 | 389 | // $form=1 => 'le', 'la', ou "l'" |
346 | 390 | // $form=2 => 'du' ou 'de la' ou "de l'" |
... | ... | @@ -349,18 +393,18 @@ class AppController extends Controller |
349 | 393 | $first_char_is_vowel = $this->is_vowel(substr($this->getName(),0,1)); |
350 | 394 | // $form=1 => 'Le', 'La', ou "L'" |
351 | 395 | if ($form==1) { |
352 | - // Si commence par voyelle => "L'" (L'emprunt, L'utilisateur, L'entité...) | |
396 | + // Si commence par voyelle => "l'" (l'emprunt, l'utilisateur, l'entité...) | |
353 | 397 | if ($first_char_is_vowel) return "l'"; |
354 | - return $this->is_masculin ? "le" : "la"; | |
398 | + return $this->is_masculin ? "le " : "la "; | |
355 | 399 | } |
356 | 400 | // $form=2 => 'du' ou 'de la' ou "de l'" |
357 | 401 | elseif ($form==2) { |
358 | 402 | if ($first_char_is_vowel) return "de l'"; |
359 | - return $this->is_masculin ? "du" : "de la"; | |
403 | + return $this->is_masculin ? "du " : "de la "; | |
360 | 404 | } |
361 | 405 | // $form=3 => "d'un" ou "d'une" |
362 | 406 | else |
363 | - return $this->is_masculin ? "d'un" : "d'une"; | |
407 | + return $this->is_masculin ? "d'un " : "d'une "; | |
364 | 408 | } |
365 | 409 | |
366 | 410 | |
... | ... | @@ -378,34 +422,6 @@ class AppController extends Controller |
378 | 422 | return 'nom'; |
379 | 423 | } |
380 | 424 | |
381 | - /* | |
382 | - * Retourne ['nom','verbe_au_passé'] correspondants à l'action $action | |
383 | - * | |
384 | - * ex: | |
385 | - * => ['Ajout','ajouté'] pour l'action 'add' | |
386 | - * => ['Modification','modifié'] pour l'action 'edit' | |
387 | - * ... | |
388 | - * | |
389 | - * Actions générales : add, edit, delete, view... | |
390 | - * | |
391 | - */ | |
392 | - protected function getActionNounAndPastVerb($action) { | |
393 | - //if (in_array($action, array_keys($this->actionNounAndPastVerbs))) return $this->actionNounAndPastVerbs[$action]; | |
394 | - if (in_array($action, array_keys($this->actionNounAndPastVerbs))) $elems = $this->actionNounAndPastVerbs[$action]; | |
395 | - elseif (in_array($action, array_keys(AppController::actionNounAndPastVerbs))) $elems = AppController::actionNounAndPastVerbs[$action]; | |
396 | - // Pas de définition pour cette action | |
397 | - //return [null,null]; | |
398 | - // par défaut, par exemple 'edit-ion' et 'edit-é' pour action 'edit' | |
399 | - else $elems = [$action.'ion', $action.'é']; | |
400 | - //return $elems; | |
401 | - return [ | |
402 | - 'noun' => $elems[0], | |
403 | - 'past_verb' => $elems[1], | |
404 | - 'noun_article' => isset($elems[2]) ? $elems[2] : null, | |
405 | - 'verb_article' => isset($elems[3]) ? $elems[3] : null, | |
406 | - ]; | |
407 | - } | |
408 | - | |
409 | 425 | |
410 | 426 | |
411 | 427 | /* |
... | ... | @@ -3078,15 +3094,47 @@ class AppController extends Controller |
3078 | 3094 | $article_dun = $action_attrs['noun_article'] ? $action_attrs['noun_article'] : $this->getMyArticle(3); |
3079 | 3095 | $id = $entity ? $entity->id : null; |
3080 | 3096 | |
3081 | - $materiel = null; | |
3082 | 3097 | |
3083 | 3098 | |
3099 | + /* | |
3100 | + * 2) Identification du type d'entité : 3 types | |
3101 | + * | |
3102 | + * - Materiel => $IS_ENTITY_MATERIEL => max d'infos | |
3103 | + * - Entité liée au Materiel (HasMany Document, Emprunt, Suivi, ...) => $IS_ENTITY_LINKED_TO_MATERIEL => infos sur l'entité ET sur le matériel lié | |
3104 | + * - Entité autre (BelongsTo User, Categorie, ...) => $IS_ENTITY_OTHER => infos minimum sur l'entité seulement | |
3105 | + */ | |
3106 | + $IS_ENTITY_MATERIEL = $entity instanceof Materiel; | |
3107 | + $IS_ENTITY_LINKED_TO_MATERIEL = false; | |
3108 | + $entity_types_linked_to_materiel = ['Suivi', 'Emprunt', 'Document']; | |
3109 | + foreach ($entity_types_linked_to_materiel as $Entity_type_linked) | |
3110 | + // Si c'est une entité liée et qu'elle a bien un Materiel associé | |
3111 | + // (par exemple pour Document, ce n'est pas forcément le cas car il peut être associé à un Suivi et non un Materiel) | |
3112 | + //if ( ($entity instanceof $Entity_type_linked) && $entity->materiel_id ) { | |
3113 | + //if ( is_a($entity, "App\\Model\\Entity\\".$Entity_type_linked) && $entity->materiel_id ) { | |
3114 | + if ( is_a($entity, "App\\Model\\Entity\\".$Entity_type_linked) ) { | |
3115 | + if (! $entity->materiel_id) | |
3116 | + throw new \Exception("L'entité $entity devrait être liée à un matériel via son champ FK materiel_id, or ce champ est null !"); | |
3117 | + $IS_ENTITY_LINKED_TO_MATERIEL = true; | |
3118 | + break; | |
3119 | + } | |
3120 | + $IS_ENTITY_OTHER = !$IS_ENTITY_MATERIEL && !$IS_ENTITY_LINKED_TO_MATERIEL; | |
3121 | + // On définit quelques infos sur le matériel s'il est disponible | |
3122 | + $materiel = null; | |
3123 | + $contain = ['SurCategories', 'Categories', 'SousCategories']; | |
3124 | + if ($IS_ENTITY_MATERIEL) { | |
3125 | + $materiel = $this->getEntity($entity->id, false, $contain); | |
3126 | + } | |
3127 | + else { | |
3128 | + $materiel = $this->getCurrentEntityRelatedMateriel($entity->materiel_id, $contain); | |
3129 | + } | |
3130 | + | |
3084 | 3131 | |
3085 | 3132 | /* |
3086 | - * 2) LOG | |
3133 | + * 3) LOG | |
3087 | 3134 | */ |
3088 | 3135 | |
3089 | - // ex: "Matériel ajouté = 'toto' (id=15)" | |
3136 | + // ex: "/materiels/add fait par Pallier Etienne (Super Administrateur) - Matériel ajouté = 'toto' (id=15)" | |
3137 | + // ex: "/emprunts/delete/29 fait par Pallier Etienne (Super Administrateur) - emprunt supprimé = 'Emprunt#29 (de toto)' (id=29) - matériel lié 'tititoto' (http://labinvent.devv/materiels/view/12042)" | |
3090 | 3138 | // ex: "Document modifié = 'doc-toto' (id=112)" |
3091 | 3139 | // ex: "Utilisateur connecté = 'Pierre Durand' (id=112)" |
3092 | 3140 | // ex: "Utilisateur déconnecté = 'Pierre Durand' (id=112)" |
... | ... | @@ -3096,6 +3144,11 @@ class AppController extends Controller |
3096 | 3144 | //$msglog = "$entity_type {$action_attrs['past_verb']} = '$entity_name' (id=$id)"; |
3097 | 3145 | $msglog = "$entity_type {$action_attrs['past_verb']}"; |
3098 | 3146 | if ($entity) $msglog .= " = '$entity_name' (id=$id)"; |
3147 | + // Si c'est une entité liée à un matériel, on ajoute des infos sur le matériel : " - matériel lié 'tititoto' (url)" | |
3148 | + if ($IS_ENTITY_LINKED_TO_MATERIEL) { | |
3149 | + //$msglog .= " - matériel lié '{$materiel->designation}' ($host/materiels/view/{$materiel->id})"; | |
3150 | + $msglog .= " - matériel lié '{$materiel->designation}' (id={$materiel->id})"; | |
3151 | + } | |
3099 | 3152 | //debug($msglog); |
3100 | 3153 | //(!$DEBUG) && |
3101 | 3154 | //$this->isNotifierActionSendingLog($action) && $this->ilog("$entity_name $action_verb = '$entity' (id=$id)"); |
... | ... | @@ -3107,7 +3160,7 @@ class AppController extends Controller |
3107 | 3160 | ////if (! $this->isNotifierActionSendingEmail($action)) return null; |
3108 | 3161 | |
3109 | 3162 | /* |
3110 | - * 3) CRÉATION DU MAIL (sujet et body) | |
3163 | + * 4) CRÉATION DU MAIL (sujet et body) | |
3111 | 3164 | * |
3112 | 3165 | * On détermine le message et le sujet du mail en fonction de l'action effectuee |
3113 | 3166 | * |
... | ... | @@ -3115,31 +3168,9 @@ class AppController extends Controller |
3115 | 3168 | |
3116 | 3169 | // MESSAGE GÉNÉRIQUE |
3117 | 3170 | |
3118 | - /* Identification du type d'entité : 3 types | |
3119 | - * - Materiel => $IS_ENTITY_MATERIEL => max d'infos | |
3120 | - * - Entité liée au Materiel (HasMany Document, Emprunt, Suivi, ...) => $IS_ENTITY_LINKED_TO_MATERIEL => infos sur l'entité ET sur le matériel lié | |
3121 | - * - Entité autre (BelongsTo User, Categorie, ...) => $IS_ENTITY_OTHER => infos minimum sur l'entité seulement | |
3122 | - */ | |
3123 | - $IS_ENTITY_MATERIEL = $entity instanceof Materiel; | |
3124 | - $IS_ENTITY_LINKED_TO_MATERIEL = false; | |
3125 | - $entity_types_linked_to_materiel = ['Suivi', 'Emprunt', 'Document']; | |
3126 | - foreach ($entity_types_linked_to_materiel as $Entity_type_linked) | |
3127 | - // Si c'est une entité liée et qu'elle a bien un Materiel associé | |
3128 | - // (par exemple pour Document, ce n'est pas forcément le cas car il peut être associé à un Suivi et non un Materiel) | |
3129 | - //if ( ($entity instanceof $Entity_type_linked) && $entity->materiel_id ) { | |
3130 | - //if ( is_a($entity, "App\\Model\\Entity\\".$Entity_type_linked) && $entity->materiel_id ) { | |
3131 | - if ( is_a($entity, "App\\Model\\Entity\\".$Entity_type_linked) ) { | |
3132 | - if (! $entity->materiel_id) | |
3133 | - throw new \Exception("L'entité $entity devrait être liée à un matériel via son champ FK materiel_id, or ce champ est null !"); | |
3134 | - $IS_ENTITY_LINKED_TO_MATERIEL = true; | |
3135 | - break; | |
3136 | - } | |
3137 | - $IS_ENTITY_OTHER = !$IS_ENTITY_MATERIEL && !$IS_ENTITY_LINKED_TO_MATERIEL; | |
3138 | - | |
3139 | - | |
3140 | 3171 | // Sujet : |
3141 | 3172 | |
3142 | - $subject = $subject ? $subject : "{$action_attrs['noun']} $article_dun $entity_type"; | |
3173 | + $subject = $subject ? $subject : "{$action_attrs['noun']} $article_dun$entity_type"; | |
3143 | 3174 | debug($subject); |
3144 | 3175 | |
3145 | 3176 | // Message (body) : |
... | ... | @@ -3149,7 +3180,7 @@ class AppController extends Controller |
3149 | 3180 | //$msg_mail .= "$user a {$action_attrs['past_verb']} $article_le $entity_type '$entity'"; |
3150 | 3181 | $msg_mail .= "$user a ".$action_attrs['past_verb']; |
3151 | 3182 | if ($entity) { |
3152 | - $msg_mail .= " $article_le $entity_type '$entity_name'"; | |
3183 | + $msg_mail .= " $article_le$entity_type '$entity_name'"; | |
3153 | 3184 | // (EP) Ajout de l'url (ou id) du materiel |
3154 | 3185 | //$msg_mail .= $action=='delete' ? " (id=$id)" : " ($host/materiels/view/$id)"; |
3155 | 3186 | $msg_mail .= $action=='delete' ? " (id=$id)" : " ($host/$entities_name/view/$id)"; |
... | ... | @@ -3175,7 +3206,7 @@ class AppController extends Controller |
3175 | 3206 | if ($IS_ENTITY_MATERIEL || $IS_ENTITY_LINKED_TO_MATERIEL) { |
3176 | 3207 | $msg_detail = "\n\nAttributs du matériel "; |
3177 | 3208 | //$materiel = ($entity instanceof Materiel) ? $entity : $this->getMateriel($entity->materiel_id); |
3178 | - $contain = ['SurCategories', 'Categories', 'SousCategories']; | |
3209 | + ////$contain = ['SurCategories', 'Categories', 'SousCategories']; | |
3179 | 3210 | //$materiel = ($IS_ENTITY_MATERIEL) ? $this->getEntity($entity->id, false, $contain) : $this->getCurrentEntityRelatedMateriel($entity->materiel_id, $contain); |
3180 | 3211 | /* |
3181 | 3212 | if ($entity instanceof Materiel) |
... | ... | @@ -3188,11 +3219,11 @@ class AppController extends Controller |
3188 | 3219 | } |
3189 | 3220 | */ |
3190 | 3221 | if ($IS_ENTITY_MATERIEL) { |
3191 | - $materiel = $this->getEntity($entity->id, false, $contain); | |
3222 | + ///$materiel = $this->getEntity($entity->id, false, $contain); | |
3192 | 3223 | $msg_detail .= ':'; |
3193 | 3224 | } |
3194 | 3225 | else { |
3195 | - $materiel = $this->getCurrentEntityRelatedMateriel($entity->materiel_id, $contain); | |
3226 | + ///$materiel = $this->getCurrentEntityRelatedMateriel($entity->materiel_id, $contain); | |
3196 | 3227 | $msg_detail .= "lié ($host/materiels/view/{$materiel->id}) :"; |
3197 | 3228 | $msg_detail .= "\n\n- Nom : {$materiel->designation}"; |
3198 | 3229 | } | ... | ... |
src/Controller/DocumentsController.php
... | ... | @@ -20,10 +20,6 @@ class DocumentsController extends AppController |
20 | 20 | // Formats autorisés pour photo |
21 | 21 | var $photo_formats = ['png','jpg','jpeg']; |
22 | 22 | |
23 | - // @override parent | |
24 | - protected $actionNounAndPastVerbs = [ | |
25 | - 'mailDevis' => ['Partage','partagé'], | |
26 | - ]; | |
27 | 23 | |
28 | 24 | // private pour qu'elle ne puisse pas être appelée via url comme une action |
29 | 25 | private function is_photo_type_from_extension($doc) { |
... | ... | @@ -38,7 +34,16 @@ class DocumentsController extends AppController |
38 | 34 | |
39 | 35 | |
40 | 36 | /* |
41 | - * a) Actions de ce controleur qui enverront des notifications (log et/ou email) | |
37 | + * a) Noms et verbes à utiliser (surtout dans les notifications) pour les actions | |
38 | + * | |
39 | + */ | |
40 | + $this->setActionsNounAndPastVerb([ | |
41 | + 'mailDevis' => ['Partage (devis)','partagé (devis)'], | |
42 | + ]); | |
43 | + | |
44 | + | |
45 | + /* | |
46 | + * b) Actions de ce controleur qui enverront des notifications (log et/ou email) | |
42 | 47 | * |
43 | 48 | * 'log' = logger seulement |
44 | 49 | * 'mail' => envoyer un mail seulement |
... | ... | @@ -59,7 +64,7 @@ class DocumentsController extends AppController |
59 | 64 | ]); |
60 | 65 | */ |
61 | 66 | |
62 | - // b) Règles d'accès (ACLs) | |
67 | + // c) Règles d'accès (ACLs) | |
63 | 68 | |
64 | 69 | // Action 'add' (ajout d'une nouvelle entité) : statut quelconque mais doit appartenir au user |
65 | 70 | // Proprio only | ... | ... |
src/Controller/EmpruntsController.php
... | ... | @@ -127,6 +127,49 @@ class EmpruntsController extends AppController |
127 | 127 | //@Override parent |
128 | 128 | protected function setAuthorizations() { |
129 | 129 | |
130 | + | |
131 | + /* | |
132 | + * a) Noms et verbes à utiliser (surtout dans les notifications) pour les actions | |
133 | + * | |
134 | + */ | |
135 | + /* | |
136 | + $this->setActionsNounAndPastVerb([ | |
137 | + 'add' => ['Ajoutage','ajoutéeee'], | |
138 | + // C | |
139 | + 'add' => ['Ajout','ajouté'], | |
140 | + // R | |
141 | + 'view' => ['Visualisation (détail)','visualisé'], | |
142 | + 'index' => ['Visualisation (liste)','visualisé'], | |
143 | + // U | |
144 | + 'edit' => ['Modification','modifié'], | |
145 | + // D | |
146 | + 'delete' => ['Suppression','supprimé'], | |
147 | + ]); | |
148 | + */ | |
149 | + | |
150 | + | |
151 | + /* | |
152 | + * b) Actions de ce controleur qui enverront des notifications (log et/ou email) | |
153 | + * | |
154 | + * 'log' = logger seulement | |
155 | + * 'mail' => envoyer un mail seulement | |
156 | + * 'both' = faire les 2 (logger ET envoyer un mail) | |
157 | + * | |
158 | + */ | |
159 | + $this->setNotificationAllowedOnActions([ | |
160 | + //'add' => 'both', | |
161 | + //'add' => 'mail', | |
162 | + 'add' => 'log', | |
163 | + 'edit' => 'log', | |
164 | + 'delete' => 'log', | |
165 | + ]); | |
166 | + | |
167 | + | |
168 | + /* | |
169 | + * c) Règles d'accès (ACLs) | |
170 | + * | |
171 | + */ | |
172 | + | |
130 | 173 | // Action 'add' (ajout d'une nouvelle entité) |
131 | 174 | $this->setAuthorizationsForAction('add', ['VALIDATED',1]); |
132 | 175 | //$this->setAuthorizationsForAction('edit', ['VALIDATED',1]); | ... | ... |
src/Controller/MaterielsController.php
... | ... | @@ -53,18 +53,6 @@ class MaterielsController extends AppController { |
53 | 53 | ); |
54 | 54 | |
55 | 55 | |
56 | - // @override parent | |
57 | - protected $actionNounAndPastVerbs = [ | |
58 | - 'statusCreated' => ['Dé-validation','dé-validé'], | |
59 | - 'statusValidated' => ['Validation','validé'], | |
60 | - //TODO: spécial | |
61 | - 'statusTobearchived' => ["Demande d'archivage","demandé l'archivage", '', "d'un"], | |
62 | - 'statusArchived' => ['Archivage','archivé'], | |
63 | - 'setLabelIsPlaced' => ["Positionnement d'étiquette","posé l'étiquette", 'sur un', 'sur un'], | |
64 | - 'printLabelRuban' => ["Impression de l'étiquette", "imprimé l'étiquette", '', 'sur un'], | |
65 | - ]; | |
66 | - | |
67 | - | |
68 | 56 | // EP 08/2017 |
69 | 57 | // protected $easyACL = array( |
70 | 58 | const OLD_easyACL = array( |
... | ... | @@ -293,7 +281,22 @@ class MaterielsController extends AppController { |
293 | 281 | //debug("GENERIC!"); |
294 | 282 | |
295 | 283 | /* |
296 | - * a) Actions de ce controleur qui enverront des notifications (log et/ou email) | |
284 | + * a) Noms et verbes à utiliser (surtout dans les notifications) pour les actions | |
285 | + * | |
286 | + */ | |
287 | + $this->setActionsNounAndPastVerb([ | |
288 | + 'statusCreated' => ['Dé-validation','dé-validé'], | |
289 | + 'statusValidated' => ['Validation','validé'], | |
290 | + //TODO: spécial | |
291 | + 'statusTobearchived' => ["Demande d'archivage","demandé l'archivage", '', "d'un"], | |
292 | + 'statusArchived' => ['Archivage','archivé'], | |
293 | + 'setLabelIsPlaced' => ["Positionnement d'étiquette","posé l'étiquette", 'sur un', 'sur un'], | |
294 | + 'printLabelRuban' => ["Impression de l'étiquette", "imprimé l'étiquette", '', 'sur un'], | |
295 | + ]); | |
296 | + | |
297 | + | |
298 | + /* | |
299 | + * b) Actions de ce controleur qui enverront des notifications (log et/ou email) | |
297 | 300 | * |
298 | 301 | * 'log' = logger seulement |
299 | 302 | * 'mail' => envoyer un mail seulement |
... | ... | @@ -321,7 +324,10 @@ class MaterielsController extends AppController { |
321 | 324 | ]); |
322 | 325 | */ |
323 | 326 | |
324 | - // b) Règles d'accès (ACLs) | |
327 | + /* | |
328 | + * c) Règles d'accès (ACLs) | |
329 | + * | |
330 | + */ | |
325 | 331 | |
326 | 332 | // - Action 'add' (ajout d'un nouveau matériel) => autorisé pour tous |
327 | 333 | //$this->setAuthorizationsForAction('add', 0); | ... | ... |
src/Controller/SuivisController.php
... | ... | @@ -11,6 +11,7 @@ use Cake\ORM\TableRegistry; |
11 | 11 | */ |
12 | 12 | class SuivisController extends AppController |
13 | 13 | { |
14 | + | |
14 | 15 | |
15 | 16 | //@Override |
16 | 17 | public function getNameFieldLabel() { |
... | ... | @@ -86,6 +87,47 @@ class SuivisController extends AppController |
86 | 87 | */ |
87 | 88 | protected function setAuthorizations() { |
88 | 89 | |
90 | + /* | |
91 | + * a) Noms et verbes à utiliser (surtout dans les notifications) pour les actions | |
92 | + * | |
93 | + */ | |
94 | + /* | |
95 | + $this->setActionsNounAndPastVerb([ | |
96 | + 'add' => ['Ajoutage','ajoutéeee'], | |
97 | + // C | |
98 | + 'add' => ['Ajout','ajouté'], | |
99 | + // R | |
100 | + 'view' => ['Visualisation (détail)','visualisé'], | |
101 | + 'index' => ['Visualisation (liste)','visualisé'], | |
102 | + // U | |
103 | + 'edit' => ['Modification','modifié'], | |
104 | + // D | |
105 | + 'delete' => ['Suppression','supprimé'], | |
106 | + ]); | |
107 | + */ | |
108 | + | |
109 | + | |
110 | + /* | |
111 | + * b) Actions de ce controleur qui enverront des notifications (log et/ou email) | |
112 | + * | |
113 | + * 'log' = logger seulement | |
114 | + * 'mail' => envoyer un mail seulement | |
115 | + * 'both' = faire les 2 (logger ET envoyer un mail) | |
116 | + * | |
117 | + */ | |
118 | + $this->setNotificationAllowedOnActions([ | |
119 | + //'add' => 'both', | |
120 | + //'add' => 'mail', | |
121 | + 'add' => 'log', | |
122 | + 'edit' => 'log', | |
123 | + 'delete' => 'log', | |
124 | + ]); | |
125 | + | |
126 | + /* | |
127 | + * c) Règles d'accès (ACLs) | |
128 | + * | |
129 | + */ | |
130 | + | |
89 | 131 | // Action 'add' (ajout d'une nouvelle entité) |
90 | 132 | $this->setAuthorizationsForAction('add', ['VALIDATED',1]); |
91 | 133 | //$this->setAuthorizationsForAction('edit', ['VALIDATED',1]); | ... | ... |
src/Controller/UsersController.php
... | ... | @@ -45,11 +45,6 @@ class UsersController extends AppController |
45 | 45 | return "L'"; |
46 | 46 | } |
47 | 47 | |
48 | - // @override parent | |
49 | - protected $actionNounAndPastVerbs = [ | |
50 | - 'login' => ['Connexion','connecté'], | |
51 | - 'logout' => ['Déconnexion','déconnecté'], | |
52 | - ]; | |
53 | 48 | |
54 | 49 | // 1) AVANT connexion |
55 | 50 | public function beforeFilter(Event $event) |
... | ... | @@ -67,9 +62,26 @@ class UsersController extends AppController |
67 | 62 | */ |
68 | 63 | protected function setAuthorizations() { |
69 | 64 | |
70 | - // Actions qui envoient des notifs | |
65 | + | |
66 | + /* | |
67 | + * a) Noms et verbes à utiliser (surtout dans les notifications) pour les actions | |
68 | + * | |
69 | + */ | |
70 | + $this->setActionsNounAndPastVerb([ | |
71 | + 'login' => ['Connexion','connecté'], | |
72 | + 'logout' => ['Déconnexion','déconnecté'], | |
73 | + ]); | |
74 | + | |
75 | + | |
76 | + /* | |
77 | + * b) Actions de ce controleur qui enverront des notifications (log et/ou email) | |
78 | + * | |
79 | + * 'log' = logger seulement | |
80 | + * 'mail' => envoyer un mail seulement | |
81 | + * 'both' = faire les 2 (logger ET envoyer un mail) | |
82 | + * | |
83 | + */ | |
71 | 84 | $this->setNotificationAllowedOnActions([ |
72 | - | |
73 | 85 | //'login' => 'log', |
74 | 86 | |
75 | 87 | // Ne marchera pas car pas d'utilisateur en session |
... | ... | @@ -79,9 +91,14 @@ class UsersController extends AppController |
79 | 91 | 'edit' => 'log', |
80 | 92 | 'delete' => 'log', |
81 | 93 | // ... |
82 | - | |
83 | 94 | ]); |
84 | 95 | |
96 | + | |
97 | + /* | |
98 | + * c) Règles d'accès (ACLs) | |
99 | + * | |
100 | + */ | |
101 | + | |
85 | 102 | // Actions autorisées à tous |
86 | 103 | foreach (['login', 'logout', 'getLdapLogin', 'getLdapEmail', 'indexRecap'] as $action) |
87 | 104 | $this->setAuthorizationsForAction($action, 0); | ... | ... |
src/Model/Entity/Emprunt.php
... | ... | @@ -50,6 +50,8 @@ class Emprunt extends Entity { |
50 | 50 | // Instance du controleur EmpruntsController pour messages de debug |
51 | 51 | private $mycontroller = null; |
52 | 52 | |
53 | + // Ce qui s'affiche quand on fait echo $entity | |
54 | + public function __toString() { return "Emprunt#{$this->id} (de {$this->nom_emprunteur})"; } | |
53 | 55 | |
54 | 56 | private function d($arg) { |
55 | 57 | if (! $this->mycontroller) $this->mycontroller = new EmpruntsController(); | ... | ... |