Commit 6441f31558c5cd6c8788d7bb32bf2296307ca758
1 parent
de013b4c
Exists in
master
and in
3 other branches
Bugfixes, améliorations visuelles du site et réadaptation de la fonctionnalité d…
…'envoi de mails, beaucoup plus simple à utiliser
Showing
14 changed files
with
484 additions
and
411 deletions
Show diff stats
database/labinvent_2.1_12-05-16.sql
@@ -346,7 +346,7 @@ CREATE TABLE IF NOT EXISTS `configurations` ( | @@ -346,7 +346,7 @@ CREATE TABLE IF NOT EXISTS `configurations` ( | ||
346 | `hasPrinter` tinyint(1) DEFAULT NULL, | 346 | `hasPrinter` tinyint(1) DEFAULT NULL, |
347 | `nom_groupe_thematique` varchar(50) DEFAULT 'Groupe thematique', | 347 | `nom_groupe_thematique` varchar(50) DEFAULT 'Groupe thematique', |
348 | `nom_groupe_metier` varchar(50) DEFAULT 'Groupe metier', | 348 | `nom_groupe_metier` varchar(50) DEFAULT 'Groupe metier', |
349 | - `envoi_mail_management_dev` tinyint(1) NOT NULL DEFAULT 1, | 349 | + `envoi_mail` tinyint(1) NOT NULL DEFAULT 0, |
350 | `sender_mail` varchar(500) DEFAULT 'labinvent@irap.omp.eu', | 350 | `sender_mail` varchar(500) DEFAULT 'labinvent@irap.omp.eu', |
351 | `emailGuest1` varchar(45) DEFAULT NULL, | 351 | `emailGuest1` varchar(45) DEFAULT NULL, |
352 | `emailGuest2` varchar(45) DEFAULT NULL, | 352 | `emailGuest2` varchar(45) DEFAULT NULL, |
@@ -448,44 +448,8 @@ Insert into type_documents(nom) values ('Certificat de conformité'); | @@ -448,44 +448,8 @@ Insert into type_documents(nom) values ('Certificat de conformité'); | ||
448 | Insert into type_documents(nom) values ('Manuel d\'utilisation'); | 448 | Insert into type_documents(nom) values ('Manuel d\'utilisation'); |
449 | 449 | ||
450 | -- Insertion par défaut pour la table configuration | 450 | -- Insertion par défaut pour la table configuration |
451 | -Insert into `configurations`( | ||
452 | -`nom`, | ||
453 | -`mode_install`, | ||
454 | -`mode_debug`, | ||
455 | -`use_ldap`, | ||
456 | -`host_ldap`, | ||
457 | -`port_ldap`, | ||
458 | -`authentificationType_ldap`, | ||
459 | -`baseDn_ldap`, | ||
460 | -`filter_ldap`, | ||
461 | -`labName`, | ||
462 | -`labNameShort`, | ||
463 | -`labPresent`, | ||
464 | -`labUmr`, | ||
465 | -`hasPrinter`, | ||
466 | -`envoi_mail_management_dev` | ||
467 | -`emailGuest1`, | ||
468 | -`emailGuest2`, | ||
469 | -`emailGuest3`) | ||
470 | -values ( | ||
471 | -'default', | ||
472 | -'1', | ||
473 | -'0', | ||
474 | -'0', | ||
475 | -'', | ||
476 | -'', | ||
477 | -'xxx', | ||
478 | -'', | ||
479 | -'', | ||
480 | -'LABONAME', | ||
481 | -'LABO', | ||
482 | -'du ', | ||
483 | -'', | ||
484 | -'0', | ||
485 | -'0', | ||
486 | -'', | ||
487 | -'', | ||
488 | -''); | 451 | +Insert into `configurations`(`nom`, `mode_install`, `mode_debug`, `use_ldap`, `host_ldap`, `port_ldap`, `authentificationType_ldap`, `baseDn_ldap`, `filter_ldap`, `labName`, `labNameShort`, `labPresent`, `labUmr`, `hasPrinter`, `emailGuest1`, `emailGuest2`, `emailGuest3`) |
452 | +values ('default', '1', '0', '0', '', '', 'xxx', '', '', 'LABONAME', 'LABO', 'du ', '', '0', '', '', ''); | ||
489 | 453 | ||
490 | 454 | ||
491 | 455 |
@@ -0,0 +1,34 @@ | @@ -0,0 +1,34 @@ | ||
1 | +#!/bin/bash | ||
2 | + | ||
3 | +# Pour Mac OS recent (10.10, Yosemite), la syntaxe du SED est differente | ||
4 | +# Il faut donc faire une copie de ce fichier et transformer les instructions sed a l'interieur | ||
5 | +# Pour cela, il suffit d'executer ces 2 lignes : | ||
6 | +# cp ce_script.sh ce_script_macosx.sh | ||
7 | +# sed -e "s/ -i / -i '' /" -i '' ce_script_macosx.sh | ||
8 | + | ||
9 | +if [ ! -f ../../config/app.php ] ; then | ||
10 | +echo "Vous devez executer ce script depuis le dossier database/update/" | ||
11 | +exit 1 | ||
12 | +fi | ||
13 | + | ||
14 | + | ||
15 | +# Get login, pass, dbname, and hostname | ||
16 | +username=$(grep "/\*d\*/'username'" ../../config/app.php | cut -d"'" -f4) | ||
17 | +password=$(grep "/\*d\*/'password'" ../../config/app.php | cut -d"'" -f4) | ||
18 | +database=$(grep "/\*d\*/'database'" ../../config/app.php | cut -d"'" -f4) | ||
19 | +host=$(grep "/\*d\*/'host'" ../../config/app.php | cut -d"'" -f4) | ||
20 | + | ||
21 | + | ||
22 | +cp -p ./script_sql/db-update-2017-05-18.sql ./script_sql/db-update-2017-05-18-build.sql | ||
23 | + | ||
24 | +# Execute sql update script | ||
25 | +sed -e "s/database/$database/" -i ./script_sql/db-update-2017-05-18-build.sql | ||
26 | +mysql --user=$username --password=$password -h $host < ./script_sql/db-update-2017-05-18-build.sql | ||
27 | + | ||
28 | +# Delete cakephp cache | ||
29 | +sudo rm ../../tmp/cache/models/* | ||
30 | +sudo rm ../../tmp/cache/persistent/* | ||
31 | + | ||
32 | +sudo chmod -R 777 ../../tmp | ||
33 | +sudo chmod -R 777 ../../vendor | ||
34 | +sudo chmod -R 777 ../../webroot |
src/Controller/AppController.php
@@ -31,6 +31,7 @@ use PhpParser\Node\Expr\Include_; | @@ -31,6 +31,7 @@ use PhpParser\Node\Expr\Include_; | ||
31 | */ | 31 | */ |
32 | class AppController extends Controller | 32 | class AppController extends Controller |
33 | { | 33 | { |
34 | + public $confLabinvent; | ||
34 | 35 | ||
35 | /** | 36 | /** |
36 | * Initialization hook method. | 37 | * Initialization hook method. |
@@ -58,6 +59,7 @@ class AppController extends Controller | @@ -58,6 +59,7 @@ class AppController extends Controller | ||
58 | 'action' => 'home', | 59 | 'action' => 'home', |
59 | ] | 60 | ] |
60 | ]); | 61 | ]); |
62 | + $this->confLabinvent = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | ||
61 | } | 63 | } |
62 | 64 | ||
63 | 65 | ||
@@ -70,7 +72,7 @@ class AppController extends Controller | @@ -70,7 +72,7 @@ class AppController extends Controller | ||
70 | */ | 72 | */ |
71 | public function isAuthorized($user) | 73 | public function isAuthorized($user) |
72 | { | 74 | { |
73 | - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | 75 | + $configuration = $this->confLabinvent; |
74 | $role = TableRegistry::get('Users')->find()->where(['username' => $user[$configuration->authentificationType_ldap][0]])->first()['role']; | 76 | $role = TableRegistry::get('Users')->find()->where(['username' => $user[$configuration->authentificationType_ldap][0]])->first()['role']; |
75 | 77 | ||
76 | $action = $this->request->params['action']; | 78 | $action = $this->request->params['action']; |
@@ -201,194 +203,194 @@ class AppController extends Controller | @@ -201,194 +203,194 @@ class AppController extends Controller | ||
201 | * @param string $message | 203 | * @param string $message |
202 | * @param string[] $to | 204 | * @param string[] $to |
203 | */ | 205 | */ |
204 | - public function sendEmailTo($subject, $message, $to = null) { | 206 | +// public function sendEmailTo($subject, $message, $to = null) { |
205 | 207 | ||
206 | - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | 208 | +// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); |
207 | 209 | ||
208 | - if ($to != null && !$configuration->test) { | 210 | +// if ($to != null && !$configuration->test) { |
209 | 211 | ||
210 | - for($i = 0; $i < sizeof($to); $i++) { | 212 | +// for($i = 0; $i < sizeof($to); $i++) { |
211 | 213 | ||
212 | 214 | ||
213 | - if (filter_var($to[$i], FILTER_VALIDATE_EMAIL)) { | ||
214 | - $email = new Email(); | 215 | +// if (filter_var($to[$i], FILTER_VALIDATE_EMAIL)) { |
216 | +// $email = new Email(); | ||
215 | 217 | ||
216 | - $etiquetteFrom = explode("@", $configuration->sender_mail); | 218 | +// $etiquetteFrom = explode("@", $configuration->sender_mail); |
217 | 219 | ||
218 | - if($configuration->envoi_mail_management_dev) { | ||
219 | - $email->transport('dev') | ||
220 | - ->from([$configuration->sender_mail => $etiquetteFrom[0]]) | ||
221 | - ->to($to[$i]) | ||
222 | - ->subject("[LabInvent] ".$subject) | ||
223 | - ->send($message); | ||
224 | - } else { | ||
225 | - $email->transport('default') | ||
226 | - ->from([$configuration->sender_mail => $etiquetteFrom[0]]) | ||
227 | - ->to($to[$i]) | ||
228 | - ->subject("[LabInvent] ".$subject) | ||
229 | - ->send($message); | ||
230 | - } | ||
231 | - } | 220 | +// if($configuration->envoi_mail_management_dev) { |
221 | +// $email->transport('dev') | ||
222 | +// ->from([$configuration->sender_mail => $etiquetteFrom[0]]) | ||
223 | +// ->to($to[$i]) | ||
224 | +// ->subject("[LabInvent] ".$subject) | ||
225 | +// ->send($message); | ||
226 | +// } else { | ||
227 | +// $email->transport('default') | ||
228 | +// ->from([$configuration->sender_mail => $etiquetteFrom[0]]) | ||
229 | +// ->to($to[$i]) | ||
230 | +// ->subject("[LabInvent] ".$subject) | ||
231 | +// ->send($message); | ||
232 | +// } | ||
233 | +// } | ||
232 | 234 | ||
233 | - } | ||
234 | - } | 235 | +// } |
236 | +// } | ||
235 | 237 | ||
236 | - } | 238 | +// } |
237 | 239 | ||
238 | - /** | ||
239 | - * Envoi d'un email à la gestion (et aux devs) pour prévenir qu'un matériel a été créé ou modifié | ||
240 | - * (cf howto dans http://book.cakephp.org/2.0/fr/core-utility-libraries/email.html) | ||
241 | - * @param string $subject | ||
242 | - * @param string $message | ||
243 | - */ | ||
244 | - public function sendEmailToManagementWith($subject, $message) { | 240 | +// /** |
241 | +// * Envoi d'un email à la gestion (et aux devs) pour prévenir qu'un matériel a été créé ou modifié | ||
242 | +// * (cf howto dans http://book.cakephp.org/2.0/fr/core-utility-libraries/email.html) | ||
243 | +// * @param string $subject | ||
244 | +// * @param string $message | ||
245 | +// */ | ||
246 | +// public function sendEmailToManagementWith($subject, $message) { | ||
245 | 247 | ||
246 | - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | 248 | +// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); |
247 | 249 | ||
248 | - for($i = 1; $i < 11; $i++) { | ||
249 | - $t = 'emailGuest'.$i; | ||
250 | - $to = $configuration->$t; | 250 | +// for($i = 1; $i < 11; $i++) { |
251 | +// $t = 'emailGuest'.$i; | ||
252 | +// $to = $configuration->$t; | ||
251 | 253 | ||
252 | - if ($to != null && !$configuration->test) { | ||
253 | - if (filter_var($to, FILTER_VALIDATE_EMAIL)) { | ||
254 | - $email = new Email(); | 254 | +// if ($to != null && !$configuration->test) { |
255 | +// if (filter_var($to, FILTER_VALIDATE_EMAIL)) { | ||
256 | +// $email = new Email(); | ||
255 | 257 | ||
256 | - $etiquetteFrom = explode("@", $configuration->sender_mail); | 258 | +// $etiquetteFrom = explode("@", $configuration->sender_mail); |
257 | 259 | ||
258 | - if($configuration->envoi_mail_management_dev) { | ||
259 | - $email->transport('dev') | ||
260 | - ->from([$configuration->sender_mail => $etiquetteFrom[0]]) | ||
261 | - ->to($to) | ||
262 | - ->subject("[LabInvent] ".$subject) | ||
263 | - ->send($message); | ||
264 | - } else { | ||
265 | - $email->transport('default') | ||
266 | - ->from([$configuration->sender_mail => $etiquetteFrom[0]]) | ||
267 | - ->to($to) | ||
268 | - ->subject("[LabInvent] ".$subject) | ||
269 | - ->send($message); | ||
270 | - } | ||
271 | - } | 260 | +// if($configuration->envoi_mail_management_dev) { |
261 | +// $email->transport('dev') | ||
262 | +// ->from([$configuration->sender_mail => $etiquetteFrom[0]]) | ||
263 | +// ->to($to) | ||
264 | +// ->subject("[LabInvent] ".$subject) | ||
265 | +// ->send($message); | ||
266 | +// } else { | ||
267 | +// $email->transport('default') | ||
268 | +// ->from([$configuration->sender_mail => $etiquetteFrom[0]]) | ||
269 | +// ->to($to) | ||
270 | +// ->subject("[LabInvent] ".$subject) | ||
271 | +// ->send($message); | ||
272 | +// } | ||
273 | +// } | ||
272 | 274 | ||
273 | - } | ||
274 | - } | 275 | +// } |
276 | +// } | ||
275 | 277 | ||
276 | - } | 278 | +// } |
277 | 279 | ||
278 | - public function sendEmailToManagement($idObj = null) { | 280 | +// public function sendEmailToManagement($idObj = null) { |
279 | 281 | ||
280 | - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | 282 | +// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); |
281 | 283 | ||
282 | - $userAuth = $this->LdapAuth->user($configuration->authentificationType_ldap)[0]; | ||
283 | - $controller = substr($this->request->params['controller'], 0, -1); // materiel | ||
284 | - $action = $this->request->params['action']; // add or edit or delete or ... | ||
285 | - $userName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0]; | ||
286 | - $userEmail = $this->LdapAuth->user('mail')[0]; | ||
287 | - $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role']; | ||
288 | - if($role == null) $role = 'Utilisateur'; | 284 | +// $userAuth = $this->LdapAuth->user($configuration->authentificationType_ldap)[0]; |
285 | +// $controller = substr($this->request->params['controller'], 0, -1); // materiel | ||
286 | +// $action = $this->request->params['action']; // add or edit or delete or ... | ||
287 | +// $userName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0]; | ||
288 | +// $userEmail = $this->LdapAuth->user('mail')[0]; | ||
289 | +// $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role']; | ||
290 | +// if($role == null) $role = 'Utilisateur'; | ||
289 | 291 | ||
290 | - $modelName = $this->modelClass; // 'Materiels' | ||
291 | - $id = $idObj; | 292 | +// $modelName = $this->modelClass; // 'Materiels' |
293 | +// $id = $idObj; | ||
292 | 294 | ||
293 | - switch ($action) { | ||
294 | - case 'add': | ||
295 | - $actionFrench = ['Création d\'un ', 'été créé']; | ||
296 | - break; | ||
297 | - case 'edit': | ||
298 | - $actionFrench = ['Modification d\'un ', 'été modifié']; | ||
299 | - break; | ||
300 | - case 'delete': | ||
301 | - $actionFrench = ['Suppression d\'un ', 'été supprimé']; | ||
302 | - break; | ||
303 | - case 'statusValidated': | ||
304 | - $actionFrench = ['Validation d\'un ', 'été validé']; | ||
305 | - break; | ||
306 | - case 'statusToBeArchived': | ||
307 | - $actionFrench = ['Demande Archivage d\'un ', 'été demandé pour archivage']; | ||
308 | - break; | ||
309 | - case 'statusArchived': | ||
310 | - $actionFrench = ['Archivage d\'un ', 'été archivé']; | ||
311 | - break; | ||
312 | - case 'setLabelIsPlaced': | ||
313 | - $actionFrench = ['Etiquette posé sur un ', 'reçu une étiquette']; | ||
314 | - break; | ||
315 | - default: | ||
316 | - $actionFrench = [$action.' d\'un ', 'été '.$action]; | ||
317 | - break; | ||
318 | - } | ||
319 | - $doneBy = $userName." (".$userEmail.", login=".$userAuth.", profil=".$role.")."; | 295 | +// switch ($action) { |
296 | +// case 'add': | ||
297 | +// $actionFrench = ['Création d\'un ', 'été créé']; | ||
298 | +// break; | ||
299 | +// case 'edit': | ||
300 | +// $actionFrench = ['Modification d\'un ', 'été modifié']; | ||
301 | +// break; | ||
302 | +// case 'delete': | ||
303 | +// $actionFrench = ['Suppression d\'un ', 'été supprimé']; | ||
304 | +// break; | ||
305 | +// case 'statusValidated': | ||
306 | +// $actionFrench = ['Validation d\'un ', 'été validé']; | ||
307 | +// break; | ||
308 | +// case 'statusToBeArchived': | ||
309 | +// $actionFrench = ['Demande Archivage d\'un ', 'été demandé pour archivage']; | ||
310 | +// break; | ||
311 | +// case 'statusArchived': | ||
312 | +// $actionFrench = ['Archivage d\'un ', 'été archivé']; | ||
313 | +// break; | ||
314 | +// case 'setLabelIsPlaced': | ||
315 | +// $actionFrench = ['Etiquette posé sur un ', 'reçu une étiquette']; | ||
316 | +// break; | ||
317 | +// default: | ||
318 | +// $actionFrench = [$action.' d\'un ', 'été '.$action]; | ||
319 | +// break; | ||
320 | +// } | ||
321 | +// $doneBy = $userName." (".$userEmail.", login=".$userAuth.", profil=".$role.")."; | ||
320 | 322 | ||
321 | - $subject = $actionFrench[0].$controller; | 323 | +// $subject = $actionFrench[0].$controller; |
322 | 324 | ||
323 | - if($id != null) { | ||
324 | - $entityName = TableRegistry::get($modelName)->find('all')->where(['id =' => $id])->first(); | 325 | +// if($id != null) { |
326 | +// $entityName = TableRegistry::get($modelName)->find('all')->where(['id =' => $id])->first(); | ||
325 | 327 | ||
326 | - if($modelName == 'Materiels') { | ||
327 | - $entityName = $entityName['designation']; | ||
328 | - } | ||
329 | - else if ($modelName == 'Suivis' || $modelName == 'Emprunts') { | ||
330 | - $entityName = $entityName['id']; | ||
331 | - } | ||
332 | - else { | ||
333 | - $entityName = $entityName['nom']; | ||
334 | - } | ||
335 | - } | ||
336 | - else { | ||
337 | - $entityName = NULL; | ||
338 | - } | 328 | +// if($modelName == 'Materiels') { |
329 | +// $entityName = $entityName['designation']; | ||
330 | +// } | ||
331 | +// else if ($modelName == 'Suivis' || $modelName == 'Emprunts') { | ||
332 | +// $entityName = $entityName['id']; | ||
333 | +// } | ||
334 | +// else { | ||
335 | +// $entityName = $entityName['nom']; | ||
336 | +// } | ||
337 | +// } | ||
338 | +// else { | ||
339 | +// $entityName = NULL; | ||
340 | +// } | ||
339 | 341 | ||
340 | - $message = $this->getArticle().$controller." ".$entityName." (id=".$id.") a ".$actionFrench[1]." par ".$doneBy; | 342 | +// $message = $this->getArticle().$controller." ".$entityName." (id=".$id.") a ".$actionFrench[1]." par ".$doneBy; |
341 | 343 | ||
342 | - $this->sendEmailToManagementWith($subject, $message); | 344 | +// $this->sendEmailToManagementWith($subject, $message); |
343 | 345 | ||
344 | - } | 346 | +// } |
345 | 347 | ||
346 | - /** | ||
347 | - * Envoi d'un email au propriétaire pour prévenir qu'un matériel a été créé | ||
348 | - * @param string $subject | ||
349 | - * @param string $message | ||
350 | - */ | ||
351 | - public function sendEmailToCreate($idObj = null) { | 348 | +// /** |
349 | +// * Envoi d'un email au propriétaire pour prévenir qu'un matériel a été créé | ||
350 | +// * @param string $subject | ||
351 | +// * @param string $message | ||
352 | +// */ | ||
353 | +// public function sendEmailToCreate($idObj = null) { | ||
352 | 354 | ||
353 | - $id = $idObj; | 355 | +// $id = $idObj; |
354 | 356 | ||
355 | - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | ||
356 | - $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $id])->first(); | 357 | +// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); |
358 | +// $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $id])->first(); | ||
357 | 359 | ||
358 | - $createurName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0]; | ||
359 | - $createurEmail = $this->LdapAuth->user('mail')[0]; | ||
360 | - $toEmail = $materiel->email_responsable; | 360 | +// $createurName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0]; |
361 | +// $createurEmail = $this->LdapAuth->user('mail')[0]; | ||
362 | +// $toEmail = $materiel->email_responsable; | ||
361 | 363 | ||
362 | - $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role']; | ||
363 | - if($role == null) $role = 'Utilisateur'; | 364 | +// $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role']; |
365 | +// if($role == null) $role = 'Utilisateur'; | ||
364 | 366 | ||
365 | - $subject = 'Ajout d\'un matériel'; | ||
366 | - $message = $createurName.' (email = '.$createurEmail.', role = '.$role.') a ajouté le matériel "'.$materiel->designation.'" ('.$materiel->numero_laboratoire.') et vous a nommé propriétaire de ce matériel.'; | 367 | +// $subject = 'Ajout d\'un matériel'; |
368 | +// $message = $createurName.' (email = '.$createurEmail.', role = '.$role.') a ajouté le matériel "'.$materiel->designation.'" ('.$materiel->numero_laboratoire.') et vous a nommé propriétaire de ce matériel.'; | ||
367 | 369 | ||
368 | - if ($toEmail != null && !$configuration->test) { | ||
369 | - if (filter_var($toEmail, FILTER_VALIDATE_EMAIL)) { | ||
370 | - $email = new Email(); | 370 | +// if ($toEmail != null && !$configuration->test) { |
371 | +// if (filter_var($toEmail, FILTER_VALIDATE_EMAIL)) { | ||
372 | +// $email = new Email(); | ||
371 | 373 | ||
372 | - $etiquetteFrom = explode("@", $configuration->sender_mail); | 374 | +// $etiquetteFrom = explode("@", $configuration->sender_mail); |
373 | 375 | ||
374 | - if($configuration->envoi_mail_management_dev) { | ||
375 | - $email->transport('dev') | ||
376 | - ->from([$configuration->sender_mail => $etiquetteFrom[0]]) | ||
377 | - ->to($toEmail) | ||
378 | - ->subject("[LabInvent] ".$subject) | ||
379 | - ->send($message); | ||
380 | - } else { | ||
381 | - $email->transport('default') | ||
382 | - ->from([$configuration->sender_mail => $etiquetteFrom[0]]) | ||
383 | - ->to($toEmail) | ||
384 | - ->subject("[LabInvent] ".$subject) | ||
385 | - ->send($message); | ||
386 | - } | ||
387 | - } | 376 | +// if($configuration->envoi_mail_management_dev) { |
377 | +// $email->transport('dev') | ||
378 | +// ->from([$configuration->sender_mail => $etiquetteFrom[0]]) | ||
379 | +// ->to($toEmail) | ||
380 | +// ->subject("[LabInvent] ".$subject) | ||
381 | +// ->send($message); | ||
382 | +// } else { | ||
383 | +// $email->transport('default') | ||
384 | +// ->from([$configuration->sender_mail => $etiquetteFrom[0]]) | ||
385 | +// ->to($toEmail) | ||
386 | +// ->subject("[LabInvent] ".$subject) | ||
387 | +// ->send($message); | ||
388 | +// } | ||
389 | +// } | ||
388 | 390 | ||
389 | - } | 391 | +// } |
390 | 392 | ||
391 | - } | 393 | +// } |
392 | 394 | ||
393 | 395 | ||
394 | static function isLabinventDebugMode() { | 396 | static function isLabinventDebugMode() { |
@@ -405,129 +407,161 @@ class AppController extends Controller | @@ -405,129 +407,161 @@ class AppController extends Controller | ||
405 | // Les fonctions suivantes sont en cours de developpement | 407 | // Les fonctions suivantes sont en cours de developpement |
406 | /** | 408 | /** |
407 | * Envoi un mail avec un sujet, contenant un message à destination d'une liste de mails, selon l'action effectuée. | 409 | * Envoi un mail avec un sujet, contenant un message à destination d'une liste de mails, selon l'action effectuée. |
408 | - * @param idObj -> ID du matériel concerné | ||
409 | - * @param nomObj -> A utiliser uniquement dans le cadre d'un supression de matériel | 410 | + * |
411 | + * @param $idObj : ID du matériel concerné | ||
412 | + * @param $nomObj : A utiliser uniquement dans le cadre d'une supression de matériel, et mettre idObj à null | ||
413 | + * @param $mailOwner : Idem | ||
414 | + * @param $groupesMetier : Idem | ||
415 | + * @param $groupesThematique : Idem | ||
410 | */ | 416 | */ |
411 | -// public function sendEmail($idObj = null, $nomObj = null) { | ||
412 | -// /* | ||
413 | -// * $_SESSION['Auth']['User'] pour retrouver TOUTES les infos de la session courante (tout est du string) : | ||
414 | -// * nom[sn] | ||
415 | -// * prennom[givenname] | ||
416 | -// * mail[mail] | ||
417 | -// * login[xxx] | ||
418 | -// * mdp[userpassword] | ||
419 | -// */ | 417 | + public function sendEmail($idObj, $nomObj = null, $mailOwner = null, $groupesMetier = null, $groupesThematique = null) { |
418 | + /* | ||
419 | + * $_SESSION['Auth']['User'] pour retrouver TOUTES les infos de la session courante (tout est du string) : | ||
420 | + * nom['sn'][0] | ||
421 | + * prenom['givenname'][0] | ||
422 | + * mail['mail'][0] | ||
423 | + * login['xxx'][0] /!\ Ce champ est suceptible de changer de nom, dans les tests ce champ est ['cn'][0] | ||
424 | + * mdp['userpassword'][0] | ||
425 | + */ | ||
426 | + | ||
427 | + $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | ||
428 | + $action = $this->request->params['action']; // add or edit or delete or ... | ||
420 | 429 | ||
421 | -// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | ||
422 | -// $action = $this->request->params['action']; // add or edit or delete or ... | 430 | + if(!$configuration->envoi_mail) return null; |
423 | 431 | ||
424 | -// if($idObj != null || $nomObj != null) { | 432 | + // On détermine le message et le sujet du mail en fonction de l'action effectuee |
433 | + if($idObj != null || $nomObj != null) { | ||
425 | 434 | ||
426 | -// if($idObj != null) $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $idObj])->first(); | ||
427 | - | ||
428 | -// Switch ($action) { | ||
429 | -// case 'add': | ||
430 | -// $subject = "Ajout d'un matériel"; | ||
431 | -// $actionneur = $materiel->nom_createur; | ||
432 | -// $nom_materiel = $materiel->designation; | ||
433 | -// $msg = "$actionneur a ajouté le matériel $nom_materiel"; | ||
434 | -// break; | ||
435 | -// case 'edit': | ||
436 | -// $subject = "Modification d'un matériel"; | ||
437 | -// $actionneur= $materiel->nom_modificateur; | ||
438 | -// $nom_materiel = $materiel->designation; | ||
439 | -// $msg = "$actionneur a modifié le matériel $nom_materiel"; | ||
440 | -// break; | ||
441 | -// case 'delete': | ||
442 | -// $subject = "Suppression d'un matériel"; | ||
443 | -// $actionneur= $_SESSION['Auth']['User']['givenname'].' '.$_SESSION['Auth']['User']['sn']; | ||
444 | -// $nom_materiel = $nomObj; | ||
445 | -// $msg = "$actionneur a supprimé le matériel $nom_materiel"; | ||
446 | -// break; | ||
447 | -// case 'statusValidated': | ||
448 | -// $subject = "Validation d'un matériel"; | ||
449 | -// $actionneur= $_SESSION['Auth']['User']['givenname'].' '.$_SESSION['Auth']['User']['sn']; | ||
450 | -// $nom_materiel = $materiel->designation; | ||
451 | -// $msg = "$actionneur a validé le matériel $nom_materiel"; | ||
452 | -// break; | ||
453 | -// case 'statusToBeArchived': | ||
454 | -// $subject = "Demande d'archivage d'un matériel"; | ||
455 | -// $actionneur= $_SESSION['Auth']['User']['givenname'].' '.$_SESSION['Auth']['User']['sn']; | ||
456 | -// $nom_materiel = $materiel->designation; | ||
457 | -// $msg = "$actionneur a demandé l'archivage du matériel $nom_materiel"; | ||
458 | -// break; | ||
459 | -// case 'statusArchived': | ||
460 | -// $subject = "Archivage d'un matériel"; | ||
461 | -// $actionneur= $_SESSION['Auth']['User']['givenname'].' '.$_SESSION['Auth']['User']['sn']; | ||
462 | -// $nom_materiel = $materiel->designation; | ||
463 | -// $msg = "$actionneur a archivé le matériel $nom_materiel"; | ||
464 | -// break; | ||
465 | -// case 'setLabelIsPlaced': | ||
466 | -// $subject = "Etiquette posée sur un matériel"; | ||
467 | -// $msg = "Etiquette posée sur le matériel $nom_materiel"; | ||
468 | -// break; | ||
469 | -// default: | ||
470 | -// $subject = "Action \"$action\" sur un matériel"; | ||
471 | -// $actionneur= $_SESSION['Auth']['User']['givenname'].' '.$_SESSION['Auth']['User']['sn']; | ||
472 | -// $nom_materiel = $materiel->designation; | ||
473 | -// $msg = "$actionneur a effectué l'action \"$action\" sur le matériel $nom_materiel"; | ||
474 | -// break; | ||
475 | -// } | 435 | + if($idObj != null) $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $idObj])->first(); |
436 | + $actionneur= $_SESSION['Auth']['User']['givenname'][0].' '.$_SESSION['Auth']['User']['sn'][0]; | ||
437 | + Switch ($action) { | ||
438 | + case 'add': | ||
439 | + $subject = "Ajout d'un matériel"; | ||
440 | + $actionneur = $materiel->nom_createur; | ||
441 | + $nom_materiel = $materiel->designation; | ||
442 | + $msg = "$actionneur a ajouté le matériel $nom_materiel"; | ||
443 | + break; | ||
444 | + case 'edit': | ||
445 | + $subject = "Modification d'un matériel"; | ||
446 | + $actionneur= $materiel->nom_modificateur; | ||
447 | + $nom_materiel = $materiel->designation; | ||
448 | + $msg = "$actionneur a modifié le matériel $nom_materiel"; | ||
449 | + break; | ||
450 | + case 'delete': | ||
451 | + $subject = "Suppression d'un matériel"; | ||
452 | + $nom_materiel = $nomObj; | ||
453 | + $msg = "$actionneur a supprimé le matériel $nom_materiel"; | ||
454 | + break; | ||
455 | + case 'statusValidated': | ||
456 | + $subject = "Validation d'un matériel"; | ||
457 | + $nom_materiel = $materiel->designation; | ||
458 | + $msg = "$actionneur a validé le matériel $nom_materiel"; | ||
459 | + break; | ||
460 | + case 'statusToBeArchived': | ||
461 | + $subject = "Demande d'archivage d'un matériel"; | ||
462 | + $nom_materiel = $materiel->designation; | ||
463 | + $msg = "$actionneur a demandé l'archivage du matériel $nom_materiel"; | ||
464 | + break; | ||
465 | + case 'statusArchived': | ||
466 | + $subject = "Archivage d'un matériel"; | ||
467 | + $nom_materiel = $materiel->designation; | ||
468 | + $msg = "$actionneur a archivé le matériel $nom_materiel"; | ||
469 | + break; | ||
470 | + case 'setLabelIsPlaced': | ||
471 | + $subject = "Etiquette posée sur un matériel"; | ||
472 | + $nom_materiel = $materiel->designation; | ||
473 | + $msg = "Etiquette posée sur le matériel $nom_materiel"; | ||
474 | + break; | ||
475 | + default: | ||
476 | + $subject = "Action \"$action\" sur un matériel"; | ||
477 | + $nom_materiel = $materiel->designation; | ||
478 | + $msg = "$actionneur a effectué l'action \"$action\" sur le matériel $nom_materiel"; | ||
479 | + break; | ||
480 | + } | ||
481 | + | ||
482 | + // Et maintenant on construit la liste de mails ... | ||
483 | + $mailList = array(); | ||
484 | + | ||
485 | + //mail owner | ||
486 | + if($idObj != null) $mailList[0] = $materiel->email_responsable; | ||
487 | + else $mailList[0] = $mailOwner; | ||
476 | 488 | ||
477 | -// $mailList = array(); | 489 | + //mail resp |
490 | + $mailsRespMetier = null; | ||
491 | + $mailsRespMetier = null; | ||
478 | 492 | ||
479 | -// //Envoi mail responsable | ||
480 | -// $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $materiel->groupes_metier_id])->orWhere(['role =' => 'Responsable', 'groupe_thematique_id =' => $materiel->groupes_thematique_id])->toArray(); | ||
481 | -// for($i = 0; $i < sizeof($mailsResp); $i++) { | ||
482 | -// $mailList[$i] = $mailsResp[$i]['email']; | ||
483 | -// } | 493 | + if ($idObj != null){ |
494 | + if ($materiel->groupes_metier_id != null && $materiel->groupes_metier_id != 1) $mailsRespMetier = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $materiel->groupes_metier_id])->toArray(); | ||
495 | + if ($materiel->groupes_thematique_id != null && $materiel->groupes_thematique_id != 1) $mailRespThematique = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupe_thematique_id =' => $materiel->groupes_thematique_id])->toArray(); | ||
496 | + } else { | ||
497 | + if ($groupesMetier != null) $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $groupesMetier])->toArray(); | ||
498 | + if ($groupesThematique != null) $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupe_thematique_id =' => $groupesThematique])->toArray(); | ||
499 | + } | ||
500 | + // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe | ||
501 | + | ||
502 | + if ($mailsRespMetier != null && $mailsRespMetier != null) { | ||
503 | + $mailResp = array_unique(array_merge($mailsRespMetier, $mailRespThematique)); | ||
504 | + for($i = 0; $i < sizeof($mailsResp); $i++) { | ||
505 | + $mailList[sizeof($mailList)]= $mailsResp[$i]['email']; | ||
506 | + } | ||
507 | + } | ||
484 | 508 | ||
485 | -// //Envoi mail administratif | ||
486 | -// $mailsAdmin = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration'])->toArray(); | ||
487 | -// $size = sizeof($mailList); | ||
488 | -// $sizeMax = sizeof($mailList) + sizeof($mailsAdmin); | ||
489 | -// $taille = "$size | $sizeMax"; | ||
490 | -// for($i = $size; $i < $sizeMax; $i++) { | ||
491 | -// $mailList[$i] = $mailsAdmin[$i]['email']; | ||
492 | -// } | 509 | + //mail admin de reference (ici appele gestionnaire) |
510 | + if ($action != 'statusValidated' && $action != 'statusArchived') { | ||
511 | + $mailsAdmin = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration'])->toArray(); | ||
512 | + for($i = 0; $i < sizeof($mailsAdmin); $i++) { | ||
513 | + $mailList[sizeof($mailList)]= $mailsAdmin[$i]['email']; | ||
514 | + } | ||
515 | + } | ||
493 | 516 | ||
494 | -// // envoi de mail aux adresses spécifiés dans la config | ||
495 | -// for($i = 0; $i < 11; $i++) { | ||
496 | -// $mailList[$i + sizeof($mailList) + sizeof($mailsAdmin)] = 'emailGuest'.$i; | ||
497 | -// } | ||
498 | - | ||
499 | -// $j = 0; | ||
500 | -// foreach($mailList as $mail) { | ||
501 | -// $j += 1; | ||
502 | -// $this->sendEmailTo($subject, $msg, $mail, $configuration); | ||
503 | -// } | ||
504 | -// } | ||
505 | -// } | 517 | + //de mail aux adresses specifiees dans la config |
518 | + for($i = 0; $i < 11; $i++) { | ||
519 | + if ($configuration['emailGuest'.$i]) $mailList[sizeof($mailList)] = $configuration['emailGuest'.$i]; | ||
520 | + // Le if vérifie que la ligne soit pas null | ||
521 | + } | ||
522 | + | ||
523 | + //On dedoublonne la liste des mails, c'pas tres cool de se faire spam 2-3 fois pour la meme action sur le meme materiel, non mais ! | ||
524 | + $List = array_unique($mailList); | ||
525 | + | ||
526 | + // ... Pour envoyer les mails aux personnes concernees | ||
527 | + foreach($List as $mail) { | ||
528 | + //On envoi des mails à toute la liste, sauf pour "l'acteur", il sait ce qu'il a fait, pas besion de le spam non plus hein | ||
529 | + if ($mail != $_SESSION['Auth']['User']['mail'][0]) { | ||
530 | + $role = TableRegistry::get('Users')->find()->select('role')->where(['email =' => $mail])->first()['role']; | ||
531 | + if ($role) $role = 'en tant que '.$role; | ||
532 | + else $role = 'car vous avez demandé à le recevoir. Pour faire retirer votre mail de la liste, veuillez contacter un SuperAdmin'; | ||
533 | + $message =$msg."\n\n".'Vous recevez ce message '.$role; | ||
534 | + $this->sendEmailTo("$subject", $message, $mail, $configuration); | ||
535 | + } | ||
536 | + } | ||
537 | + } | ||
538 | + return $List; | ||
539 | + } | ||
506 | 540 | ||
507 | -// private function sendEmailTo($subject, $msg, $mail, $config) { | 541 | + // Fonction d'envoi de mails |
542 | + private function sendEmailTo($subject, $msg, $mail, $config) { | ||
508 | 543 | ||
509 | -// if ($mail != null && !$config->test) { | ||
510 | -// if (filter_var($mail, FILTER_VALIDATE_EMAIL)) { | ||
511 | -// $email = new Email(); | 544 | + if ($mail != null && !$config->test) { |
545 | + if (filter_var($mail, FILTER_VALIDATE_EMAIL)) { | ||
546 | + $email = new Email(); | ||
512 | 547 | ||
513 | -// $etiquetteFrom = explode("@", $config->sender_mail); | 548 | + $etiquetteFrom = explode("@", $config->sender_mail); |
514 | 549 | ||
515 | -// if($config->envoi_mail_management_dev) { // <-- Si la case est cochée | 550 | +// if($config->envoi_mail) { // <-- Si la case "Envoi des mails de management en local " est cochée |
516 | // $email->transport('dev') | 551 | // $email->transport('dev') |
517 | // ->from([$config->sender_mail => $etiquetteFrom[0]]) | 552 | // ->from([$config->sender_mail => $etiquetteFrom[0]]) |
518 | // ->to($mail) | 553 | // ->to($mail) |
519 | // ->subject("[LabInvent] ".$subject) | 554 | // ->subject("[LabInvent] ".$subject) |
520 | // ->send($msg); | 555 | // ->send($msg); |
521 | // } else { // <-- Si la case n'est pas cochée | 556 | // } else { // <-- Si la case n'est pas cochée |
522 | -// $email->transport('default') | ||
523 | -// ->from([$config->sender_mail => $etiquetteFrom[0]]) | ||
524 | -// ->to($mail) | ||
525 | -// ->subject("[LabInvent] ".$subject) | ||
526 | -// ->send($msg); | 557 | + $email->transport('default') |
558 | + ->from([$config->sender_mail => $etiquetteFrom[0]]) | ||
559 | + ->to($mail) | ||
560 | + ->subject("[LabInvent] ".$subject) | ||
561 | + ->send($msg); | ||
527 | // } | 562 | // } |
528 | -// } | 563 | + } |
529 | 564 | ||
530 | -// } | ||
531 | -// } | ||
532 | - | ||
533 | -} | 565 | + } |
566 | + } | ||
567 | +} | ||
534 | \ No newline at end of file | 568 | \ No newline at end of file |
src/Controller/ConfigurationsController.php
@@ -3,6 +3,7 @@ namespace App\Controller; | @@ -3,6 +3,7 @@ namespace App\Controller; | ||
3 | 3 | ||
4 | use App\Controller\AppController; | 4 | use App\Controller\AppController; |
5 | use Cake\ORM\TableRegistry; | 5 | use Cake\ORM\TableRegistry; |
6 | +use Migrations\Table; | ||
6 | 7 | ||
7 | /** | 8 | /** |
8 | * Configurations Controller | 9 | * Configurations Controller |
@@ -79,14 +80,15 @@ class ConfigurationsController extends AppController | @@ -79,14 +80,15 @@ class ConfigurationsController extends AppController | ||
79 | if ($this->request->is(['patch', 'post', 'put'])) { | 80 | if ($this->request->is(['patch', 'post', 'put'])) { |
80 | $configurationObj = $this->Configurations->patchEntity($configurationObj, $this->request->data); | 81 | $configurationObj = $this->Configurations->patchEntity($configurationObj, $this->request->data); |
81 | if ($this->Configurations->save($configurationObj)) { | 82 | if ($this->Configurations->save($configurationObj)) { |
82 | - $this->Flash->success(__('La configuration a bien été sauvegardé.')); | 83 | + $this->Flash->success(__('La configuration a bien été sauvegardée.')); |
84 | + $this->confLabinvent = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | ||
83 | if($configurationObj->get('mode_install')) { | 85 | if($configurationObj->get('mode_install')) { |
84 | return $this->redirect(['controller' => 'pages', 'action' => 'home']); | 86 | return $this->redirect(['controller' => 'pages', 'action' => 'home']); |
85 | } else { | 87 | } else { |
86 | return $this->redirect(['action' => 'view', $id]); | 88 | return $this->redirect(['action' => 'view', $id]); |
87 | } | 89 | } |
88 | } else { | 90 | } else { |
89 | - $this->Flash->error(__('La configuration n\'a pas pu être sauvegardé.')); | 91 | + $this->Flash->error(__('La configuration n\'a pas pu être sauvegardée.')); |
90 | } | 92 | } |
91 | } | 93 | } |
92 | 94 |
src/Controller/MaterielsController.php
@@ -171,7 +171,7 @@ class MaterielsController extends AppController | @@ -171,7 +171,7 @@ class MaterielsController extends AppController | ||
171 | * @return \Cake\Network\Response|null | 171 | * @return \Cake\Network\Response|null |
172 | */ | 172 | */ |
173 | public function index() | 173 | public function index() |
174 | - { | 174 | + { |
175 | // Remplacement de $this->passedArgs[0] (deprecated) | 175 | // Remplacement de $this->passedArgs[0] (deprecated) |
176 | // Par $this->request->params['pass'][0] | 176 | // Par $this->request->params['pass'][0] |
177 | $condition = ''; | 177 | $condition = ''; |
@@ -278,51 +278,51 @@ class MaterielsController extends AppController | @@ -278,51 +278,51 @@ class MaterielsController extends AppController | ||
278 | * | 278 | * |
279 | * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. | 279 | * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. |
280 | */ | 280 | */ |
281 | - public function add() { | ||
282 | - | 281 | + public function add() { |
282 | + | ||
283 | $materiel = $this->Materiels->newEntity(); | 283 | $materiel = $this->Materiels->newEntity(); |
284 | if ($this->request->is('post')) { | 284 | if ($this->request->is('post')) { |
285 | $materiel = $this->Materiels->patchEntity($materiel, $this->request->data); | 285 | $materiel = $this->Materiels->patchEntity($materiel, $this->request->data); |
286 | if ($this->Materiels->save($materiel)) { | 286 | if ($this->Materiels->save($materiel)) { |
287 | $this->Flash->success(__('Le matériel a bien été ajouté.')); | 287 | $this->Flash->success(__('Le matériel a bien été ajouté.')); |
288 | 288 | ||
289 | - $this->sendEmailToManagement($materiel->id); | 289 | +// $this->sendEmailToManagement($materiel->id); |
290 | 290 | ||
291 | - if($materiel->nom_createur != $materiel->nom_responsable) { | ||
292 | - $this->sendEmailToCreate($materiel->id); | ||
293 | - } | 291 | +// if($materiel->nom_createur != $materiel->nom_responsable) { |
292 | +// $this->sendEmailToCreate($materiel->id); | ||
293 | +// } | ||
294 | 294 | ||
295 | - $message = $materiel->get('nom_createur').' à ajouté le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.')'; | ||
296 | - $subject = 'Ajout de matériel'; | ||
297 | - $listMails = []; | 295 | +// $message = $materiel->get('nom_createur').' à ajouté le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.')'; |
296 | +// $subject = 'Ajout de matériel'; | ||
297 | +// $listMails = []; | ||
298 | 298 | ||
299 | - //Envoi mail responsable | ||
300 | - $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $materiel->get('groupes_metier_id')])->orWhere(['role =' => 'Responsable', 'groupe_thematique_id =' => $materiel->get('groupes_thematique_id')])->toArray(); | ||
301 | - $mails = []; | ||
302 | - for($i = 0; $i < sizeof($mailsResp); $i++) { | ||
303 | - $mails[$i] = $mailsResp[$i]['email']; | ||
304 | - } | ||
305 | - $this->sendEmailTo('Ajout d\'un matériel', $message, $mails); | 299 | +// //Envoi mail responsable |
300 | +// $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $materiel->get('groupes_metier_id')])->orWhere(['role =' => 'Responsable', 'groupe_thematique_id =' => $materiel->get('groupes_thematique_id')])->toArray(); | ||
301 | +// $mails = []; | ||
302 | +// for($i = 0; $i < sizeof($mailsResp); $i++) { | ||
303 | +// $mails[$i] = $mailsResp[$i]['email']; | ||
304 | +// } | ||
305 | +// $this->sendEmailTo('Ajout d\'un matériel', $message, $mails); | ||
306 | 306 | ||
307 | - //Envoi mail administratif | ||
308 | - //$mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->orWhere(['role =' => 'Administration'])->toArray(); | ||
309 | - $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->toArray(); | ||
310 | - $mails = []; | ||
311 | - for($i = 0; $i < sizeof($mailsResp); $i++) { | ||
312 | - $mails[$i] = $mailsResp[$i]['email']; | ||
313 | - } | 307 | +// //Envoi mail administratif |
308 | +// //$mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->orWhere(['role =' => 'Administration'])->toArray(); | ||
309 | +// $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->toArray(); | ||
310 | +// $mails = []; | ||
311 | +// for($i = 0; $i < sizeof($mailsResp); $i++) { | ||
312 | +// $mails[$i] = $mailsResp[$i]['email']; | ||
313 | +// } | ||
314 | 314 | ||
315 | 315 | ||
316 | - // Rajout condition d'envoi de mail ou pas | ||
317 | - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | 316 | +// // Rajout condition d'envoi de mail ou pas |
317 | +// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); | ||
318 | 318 | ||
319 | - if(!$configuration['envoi_mail_management_dev']){ // Si false, on envoie les mails, sinon on les envoie pas | ||
320 | - $this->sendEmailTo('Ajout d\'un matériel', $message, $mails); | ||
321 | - } | ||
322 | - | ||
323 | -// $this->sendEmail($materiel->id); | 319 | +// if(!$configuration['envoi_mail_management_dev']){ // Si false, on envoie les mails, sinon on les envoie pas |
320 | +// $this->sendEmailTo('Ajout d\'un matériel', $message, $mails); | ||
321 | +// } | ||
322 | + | ||
323 | + $this->sendEmail($materiel->id); | ||
324 | 324 | ||
325 | - return $this->redirect(['action' => 'view', $materiel->id]); | 325 | +// return $this->redirect(['action' => 'view', $materiel->id]); |
326 | } else { | 326 | } else { |
327 | $this->Flash->error(__('Le matériel n\'a pas pu être ajouté.')); | 327 | $this->Flash->error(__('Le matériel n\'a pas pu être ajouté.')); |
328 | } | 328 | } |
@@ -344,6 +344,7 @@ class MaterielsController extends AppController | @@ -344,6 +344,7 @@ class MaterielsController extends AppController | ||
344 | $utilisateurs[$users[$i]] = $users[$i]; | 344 | $utilisateurs[$users[$i]] = $users[$i]; |
345 | } | 345 | } |
346 | 346 | ||
347 | + // Ne pas commenter la ligne suivante, on en a besoin dans add.cpt | ||
347 | $mail_responsable = TableRegistry::get('Users')->find()->select('email')->where(['username =' => $this->LdapAuth->user($this->request->session()->read('authType'))[0]])->first()['email']; | 348 | $mail_responsable = TableRegistry::get('Users')->find()->select('email')->where(['username =' => $this->LdapAuth->user($this->request->session()->read('authType'))[0]])->first()['email']; |
348 | 349 | ||
349 | if(isset($this->request->params['pass'][0])) { | 350 | if(isset($this->request->params['pass'][0])) { |
@@ -372,11 +373,12 @@ class MaterielsController extends AppController | @@ -372,11 +373,12 @@ class MaterielsController extends AppController | ||
372 | $materiel = $this->Materiels->patchEntity($materiel, $this->request->data); | 373 | $materiel = $this->Materiels->patchEntity($materiel, $this->request->data); |
373 | if ($this->Materiels->save($materiel)) { | 374 | if ($this->Materiels->save($materiel)) { |
374 | $this->Flash->success(__('Le matériel a bien été édité.')); | 375 | $this->Flash->success(__('Le matériel a bien été édité.')); |
375 | - $this->sendEmailToManagement($id); | ||
376 | - if($materiel->nom_modificateur != $materiel->nom_responsable) { | ||
377 | - $message = $materiel->get('nom_modificateur').' a édité le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.')'; | ||
378 | - $this->sendEmailTo('Modification d\'un matériel', $message, [$materiel->get('email_responsable')]); | ||
379 | - } | 376 | +// $this->sendEmailToManagement($id); |
377 | +// if($materiel->nom_modificateur != $materiel->nom_responsable) { | ||
378 | +// $message = $materiel->get('nom_modificateur').' a édité le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.')'; | ||
379 | +// $this->sendEmailTo('Modification d\'un matériel', $message, [$materiel->get('email_responsable')]); | ||
380 | +// } | ||
381 | + $this->sendEmail($id); | ||
380 | return $this->redirect(['action' => 'view', $id]); | 382 | return $this->redirect(['action' => 'view', $id]); |
381 | } else { | 383 | } else { |
382 | $this->Flash->error(__('Le matériel n\'a pas pu être édité.')); | 384 | $this->Flash->error(__('Le matériel n\'a pas pu être édité.')); |
@@ -491,9 +493,16 @@ class MaterielsController extends AppController | @@ -491,9 +493,16 @@ class MaterielsController extends AppController | ||
491 | { | 493 | { |
492 | //$this->request->allowMethod(['post', 'delete']); | 494 | //$this->request->allowMethod(['post', 'delete']); |
493 | $materiel = $this->Materiels->get($id); | 495 | $materiel = $this->Materiels->get($id); |
496 | + // On récupère les infos dont on a besoin pour l'envoi de mails AVANT la supression, on s'appelle pas Chuck Norris | ||
497 | + $nom = $materiel->designation; | ||
498 | + $grpMetier = $materiel->groupes_metier_id; | ||
499 | + $mailOwner = $materiel->email_responsable; | ||
500 | + $grpThematique = $materiel->groupes_thematique_id; | ||
501 | + | ||
494 | if ($this->Materiels->delete($materiel)) { | 502 | if ($this->Materiels->delete($materiel)) { |
495 | $this->Flash->success(__('Le matériel a bien été supprimé.')); | 503 | $this->Flash->success(__('Le matériel a bien été supprimé.')); |
496 | - $this->sendEmailToManagement($id); | 504 | +// $this->sendEmailToManagement($id); |
505 | + $this->sendEmail(null, $nom, $mailOwner, $grpMetier, $grpThematique); | ||
497 | } else { | 506 | } else { |
498 | $this->Flash->error(__('Le matériel n\'a pas pu être supprimé.')); | 507 | $this->Flash->error(__('Le matériel n\'a pas pu être supprimé.')); |
499 | } | 508 | } |
@@ -521,13 +530,18 @@ class MaterielsController extends AppController | @@ -521,13 +530,18 @@ class MaterielsController extends AppController | ||
521 | $this->Flash->error('Pour valider un matériel, les champs suivants ne doivent pas être vide : Nom propriétaire, Fournisseur, Numéro de commande, Organisme, prix et date de reception'); | 530 | $this->Flash->error('Pour valider un matériel, les champs suivants ne doivent pas être vide : Nom propriétaire, Fournisseur, Numéro de commande, Organisme, prix et date de reception'); |
522 | return $this->redirect(['action' => 'edit', $id]); | 531 | return $this->redirect(['action' => 'edit', $id]); |
523 | } | 532 | } |
524 | - $message = 'Le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.') a été validé.'; | ||
525 | - $this->sendEmailTo('Validation d\'un matériel', $message, [$materiel->get('email_responsable')]); | 533 | + $role_session = TableRegistry::get('Users')->find()->select('id')->where(['email' => $_SESSION['Auth']['User']['mail'][0], 'role' => 'Administration'])->first(); |
534 | + if ($role_session) { | ||
535 | + $nom_gest = $_SESSION['Auth']['User']['givenname'][0].' '.$_SESSION['Auth']['User']['sn'][0]; | ||
536 | + $materiel->set('nom_gestionnaire', $nom_gest ); | ||
537 | + } | ||
538 | +// $message = 'Le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.') a été validé.'; | ||
539 | +// $this->sendEmailTo('Validation d\'un matériel', $message, [$materiel->get('email_responsable')]); | ||
526 | } | 540 | } |
527 | 541 | ||
528 | if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) { | 542 | if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) { |
529 | $this->Flash->success(__($message)); | 543 | $this->Flash->success(__($message)); |
530 | - $this->sendEmailToManagement($id); | 544 | +// $this->sendEmailToManagement($id); |
531 | } | 545 | } |
532 | else { | 546 | else { |
533 | $this->Flash->error(__('Le statut n\'a pas pu être édité.')); | 547 | $this->Flash->error(__('Le statut n\'a pas pu être édité.')); |
@@ -545,6 +559,7 @@ class MaterielsController extends AppController | @@ -545,6 +559,7 @@ class MaterielsController extends AppController | ||
545 | */ | 559 | */ |
546 | public function statusValidated($id = null, $from = 'index') { | 560 | public function statusValidated($id = null, $from = 'index') { |
547 | $this->statusSetTo('VALIDATED', 'Le matériel a bien été validé', $id, $from); | 561 | $this->statusSetTo('VALIDATED', 'Le matériel a bien été validé', $id, $from); |
562 | + $this->sendEmail($id); | ||
548 | } | 563 | } |
549 | 564 | ||
550 | /** | 565 | /** |
@@ -555,6 +570,7 @@ class MaterielsController extends AppController | @@ -555,6 +570,7 @@ class MaterielsController extends AppController | ||
555 | */ | 570 | */ |
556 | public function statusToBeArchived($id = null, $from = 'index') { | 571 | public function statusToBeArchived($id = null, $from = 'index') { |
557 | $this->statusSetTo('TOBEARCHIVED', 'La sortie d\'inventaire a bien été demandée', $id, $from); | 572 | $this->statusSetTo('TOBEARCHIVED', 'La sortie d\'inventaire a bien été demandée', $id, $from); |
573 | + $this->sendEmail($id); | ||
558 | } | 574 | } |
559 | 575 | ||
560 | /** | 576 | /** |
@@ -565,6 +581,7 @@ class MaterielsController extends AppController | @@ -565,6 +581,7 @@ class MaterielsController extends AppController | ||
565 | */ | 581 | */ |
566 | public function statusArchived($id = null, $from = 'index') { | 582 | public function statusArchived($id = null, $from = 'index') { |
567 | $this->statusSetTo('ARCHIVED', 'Le matériel a bien été sorti de l\'inventaire', $id, $from); | 583 | $this->statusSetTo('ARCHIVED', 'Le matériel a bien été sorti de l\'inventaire', $id, $from); |
584 | + $this->sendEmail($id); | ||
568 | } | 585 | } |
569 | 586 | ||
570 | /** | 587 | /** |
@@ -1042,14 +1059,15 @@ class MaterielsController extends AppController | @@ -1042,14 +1059,15 @@ class MaterielsController extends AppController | ||
1042 | $materiel = $this->Materiels->get($id)->set('etiquette', $printed); | 1059 | $materiel = $this->Materiels->get($id)->set('etiquette', $printed); |
1043 | 1060 | ||
1044 | if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) { | 1061 | if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) { |
1045 | - $this->Flash->success(__('L\'étiquette a bien été éditer.')); | 1062 | + $this->Flash->success(__('L\'étiquette a bien été éditée.')); |
1046 | // Envoi email seulement si etiquette posée | 1063 | // Envoi email seulement si etiquette posée |
1047 | if ($printed) { | 1064 | if ($printed) { |
1048 | // $this->sendEmailToManagement($id); | 1065 | // $this->sendEmailToManagement($id); |
1066 | + $this->sendEmail($id); | ||
1049 | } | 1067 | } |
1050 | } | 1068 | } |
1051 | else { | 1069 | else { |
1052 | - $this->Flash->error(__('L\'étiquette n\'a pas pu être édité.')); | 1070 | + $this->Flash->error(__('L\'étiquette n\'a pas pu être éditée.')); |
1053 | } | 1071 | } |
1054 | 1072 | ||
1055 | return $this->redirect($this->referer()); | 1073 | return $this->redirect($this->referer()); |
src/Template/Configurations/edit.ctp
@@ -52,7 +52,7 @@ | @@ -52,7 +52,7 @@ | ||
52 | echo '<span style="text-decoration: underline;">Emails</span>'; | 52 | echo '<span style="text-decoration: underline;">Emails</span>'; |
53 | echo '</h3>'; | 53 | echo '</h3>'; |
54 | echo '<div id="emprunts" style="margin-bottom: 20px;">'; | 54 | echo '<div id="emprunts" style="margin-bottom: 20px;">'; |
55 | - echo $this->Form->input('envoi_mail_management_dev', ['label' => 'Ne pas envoyer les mails de management']); | 55 | + echo $this->Form->input('envoi_mail', ['label' => 'Activer l\'envoi des mails']); |
56 | echo $this->Form->input('sender_mail', ['label' => 'Attribut "sender" (mail)']); | 56 | echo $this->Form->input('sender_mail', ['label' => 'Attribut "sender" (mail)']); |
57 | echo $this->Form->input('emailGuest1', ['label' => 'Mail guest 1']); | 57 | echo $this->Form->input('emailGuest1', ['label' => 'Mail guest 1']); |
58 | echo $this->Form->input('emailGuest2', ['label' => 'Mail guest 2']); | 58 | echo $this->Form->input('emailGuest2', ['label' => 'Mail guest 2']); |
src/Template/Configurations/view.ctp
@@ -32,7 +32,7 @@ | @@ -32,7 +32,7 @@ | ||
32 | }else { | 32 | }else { |
33 | $ldap="Non"; | 33 | $ldap="Non"; |
34 | } | 34 | } |
35 | - if(h($configurationObj->envoi_mail_management_dev) == 1) { | 35 | + if(h($configurationObj->envoi_mail) == 0) { |
36 | $local="Non"; | 36 | $local="Non"; |
37 | }else { | 37 | }else { |
38 | $local="Oui"; | 38 | $local="Oui"; |
@@ -102,7 +102,7 @@ | @@ -102,7 +102,7 @@ | ||
102 | echo '<div id="emprunts" style="margin-bottom: 20px;">'; | 102 | echo '<div id="emprunts" style="margin-bottom: 20px;">'; |
103 | echo '<table>'; | 103 | echo '<table>'; |
104 | echo '<tr><th style="width: 250px;"></th><th></th></tr>'; | 104 | echo '<tr><th style="width: 250px;"></th><th></th></tr>'; |
105 | - $displayElement(__('Envoi des mails de management en local'), $local); | 105 | + $displayElement(__('Activer l\'envoi des mails'), $local); |
106 | $displayElement(__('Attribut "sender" (mail)'), h($configurationObj->sender_mail)); | 106 | $displayElement(__('Attribut "sender" (mail)'), h($configurationObj->sender_mail)); |
107 | $displayElement(__('Mail guest 1'), h($configurationObj->emailGuest1)); | 107 | $displayElement(__('Mail guest 1'), h($configurationObj->emailGuest1)); |
108 | $displayElement(__('Mail guest 2'), h($configurationObj->emailGuest2)); | 108 | $displayElement(__('Mail guest 2'), h($configurationObj->emailGuest2)); |
src/Template/Layout/default.ctp
@@ -33,6 +33,9 @@ $cakeDescription = 'Labinvent 2'; | @@ -33,6 +33,9 @@ $cakeDescription = 'Labinvent 2'; | ||
33 | <?= $this->fetch('meta')?> | 33 | <?= $this->fetch('meta')?> |
34 | <?= $this->fetch('css')?> | 34 | <?= $this->fetch('css')?> |
35 | <?= $this->fetch('script')?> | 35 | <?= $this->fetch('script')?> |
36 | + <style> | ||
37 | + #footer a, #footer p, #footer font { font-size: x-small; } | ||
38 | + </style> | ||
36 | </head> | 39 | </head> |
37 | <body> | 40 | <body> |
38 | 41 | ||
@@ -95,6 +98,8 @@ $cakeDescription = 'Labinvent 2'; | @@ -95,6 +98,8 @@ $cakeDescription = 'Labinvent 2'; | ||
95 | <td id="version"> | 98 | <td id="version"> |
96 | <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) --> | 99 | <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) --> |
97 | <font color="black">VERSION 2.6.2 (12/05/2017)</font> | 100 | <font color="black">VERSION 2.6.2 (12/05/2017)</font> |
101 | + <br/> | ||
102 | + <font color="black"><a href="<?php echo $this->request->webroot ?>webroot/doc/userguide/labinvent2_userguide.pdf" onclick="window.open(this.href); return false;">Documentation utilisateurs</a> | <a href="https://projects.irap.omp.eu/projects/inventirap/wiki/Installation" onclick="window.open(this.href); return false;">Wiki installation</a></font> | ||
98 | </td> | 103 | </td> |
99 | </tr> | 104 | </tr> |
100 | </table> | 105 | </table> |
src/Template/Materiels/add.ctp
@@ -137,11 +137,14 @@ else { | @@ -137,11 +137,14 @@ else { | ||
137 | 137 | ||
138 | // Modif BD : | 138 | // Modif BD : |
139 | // ALTER TABLE `materiels` ADD `nom_gestionnaire` VARCHAR( 45 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL AFTER `email_responsable` ; | 139 | // ALTER TABLE `materiels` ADD `nom_gestionnaire` VARCHAR( 45 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL AFTER `email_responsable` ; |
140 | + // Condition pour vérifier que se soit un admin qui est connecté : (!is_null($res)) ? | ||
141 | + $res = TableRegistry::get('Users')->find()->where(['username' => $username, 'role' => 'Administration'])->first(); | ||
142 | + $administrateurs = TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom'])->where(['role =' => 'Administration'])->toArray(); | ||
140 | echo $this->Form->input('nom_gestionnaire', [ | 143 | echo $this->Form->input('nom_gestionnaire', [ |
141 | - 'label' => 'Nom du gestionnaire de référence du matériel', | ||
142 | - 'empty' => 'Choisir un utilisateur', | ||
143 | - 'default' => $username, | ||
144 | - 'options' => TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom'])->where(['role =' => 'Administration']) | 144 | + 'label' => 'Nom du gestionnaire de référence du matériel', |
145 | + 'empty' => 'Choisir un gestionnaire', | ||
146 | + 'default' => $_SESSION['Auth']['User']['sn'][0], | ||
147 | + 'options' => $administrateurs | ||
145 | ]); | 148 | ]); |
146 | 149 | ||
147 | echo $this->Form->input('fournisseur', ['label' => 'Fournisseur', 'default' => $Fournisseur]); | 150 | echo $this->Form->input('fournisseur', ['label' => 'Fournisseur', 'default' => $Fournisseur]); |
@@ -214,7 +217,7 @@ $(document).ready(function () { | @@ -214,7 +217,7 @@ $(document).ready(function () { | ||
214 | updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getAll", "Choisir une catégorie"); | 217 | updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getAll", "Choisir une catégorie"); |
215 | else | 218 | else |
216 | updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getBySurCategorie", "Choisir une catégorie"); | 219 | updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getBySurCategorie", "Choisir une catégorie"); |
217 | - emptySelectOptions("#sous-categorie-id","Choisir une sous-catégorie"); | 220 | + emptySelectOptions("#sous-categorie-id","Choisir une sous-catégorie"); |
218 | return false; | 221 | return false; |
219 | }); | 222 | }); |
220 | }); | 223 | }); |
src/Template/Materiels/edit.ctp
@@ -226,18 +226,15 @@ if ($IS_VALIDATED) | @@ -226,18 +226,15 @@ if ($IS_VALIDATED) | ||
226 | 'readonly' => true, | 226 | 'readonly' => true, |
227 | 'default' => $mail_responsable | 227 | 'default' => $mail_responsable |
228 | ]); | 228 | ]); |
229 | - | 229 | + |
230 | $res = TableRegistry::get('Users')->find()->where(['username' => $username, 'role' => 'Administration'])->first(); | 230 | $res = TableRegistry::get('Users')->find()->where(['username' => $username, 'role' => 'Administration'])->first(); |
231 | - $administrateurs = TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom'])->where(['role =' => 'Administration']); | ||
232 | - // Condition pour vérifier que se soit un admin qui est connecté : (!is_null($res)) ? | ||
233 | - echo $this->Form->input('nom_gestionnaire', [ | ||
234 | - 'label' => 'Nom du gestionnaire de référence du matériel', | ||
235 | - 'disabled' => $isReadonlyField('nom_responsable', $myReadonlyFields), | ||
236 | - 'empty' => 'Choisir un gestionnaire', | 231 | + $administrateurs = TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom'])->where(['role =' => 'Administration'])->toArray(); |
232 | + echo $this->Form->input('nom_gestionnaire', [ | ||
233 | + 'label' => 'Nom du gestionnaire de référence du matériel', | ||
234 | + 'empty' => 'Choisir un gestionnaire', | ||
235 | + 'default' => $_SESSION['Auth']['User']['sn'][0], | ||
237 | 'options' => $administrateurs | 236 | 'options' => $administrateurs |
238 | ]); | 237 | ]); |
239 | - | ||
240 | - | ||
241 | 238 | ||
242 | echo $this->Form->input('fournisseur', [ | 239 | echo $this->Form->input('fournisseur', [ |
243 | 'label' => 'Fournisseur', | 240 | 'label' => 'Fournisseur', |
@@ -324,7 +321,14 @@ if ($IS_VALIDATED) | @@ -324,7 +321,14 @@ if ($IS_VALIDATED) | ||
324 | ?> | 321 | ?> |
325 | 322 | ||
326 | <script type="text/javascript"> | 323 | <script type="text/javascript"> |
327 | - | 324 | + |
325 | +// Mettre un gestionnaire par défaut si c'est un admin qui modifie la fiche. Sinon l'utilisateur aura a le rentrer à la mano | ||
326 | +$(document).ready(function () { | ||
327 | + if ( <?php echo (!is_null($res)) ? true : false ?>) $("#nom-gestionnaire").val("<?php echo $_SESSION['Auth']['User']['sn'][0]?>"); | ||
328 | + // Oui, c'est un bâtard entre du JavaScript et du PHP ... Mais au moins ca fonctionne en une seule ligne ! | ||
329 | +}); | ||
330 | + | ||
331 | + | ||
328 | /** | 332 | /** |
329 | * Event DOMAINE change | 333 | * Event DOMAINE change |
330 | * | 334 | * |
src/Template/Materiels/index.ctp
1 | <?php | 1 | <?php |
2 | use Cake\I18n\Time; | 2 | use Cake\I18n\Time; |
3 | use Cake\I18n\Date; | 3 | use Cake\I18n\Date; |
4 | +use Cake\ORM\TableRegistry; | ||
4 | ?> | 5 | ?> |
5 | 6 | ||
6 | 7 | ||
@@ -82,9 +83,9 @@ if (isset ( $STATUS )) { | @@ -82,9 +83,9 @@ if (isset ( $STATUS )) { | ||
82 | 83 | ||
83 | // Rajouté par Thibault Ajas, 20/04/2017 | 84 | // Rajouté par Thibault Ajas, 20/04/2017 |
84 | echo $this->Form->create(); | 85 | echo $this->Form->create(); |
85 | - echo $this->Form->input('Afficher', [ | ||
86 | - 'options' => ['20'=> 20, '30'=>30, '50'=>50, '100'=>100, '150'=>150, '200'=>200], | ||
87 | - 'onChange' => "changeNbrMateriels(document.getElementById('afficher').options[selectedIndex].value)" | 86 | + echo $this->Form->input('aff_par_defaut', [ |
87 | + 'label' => 'Afficher', | ||
88 | + 'options' => ['20'=> 20, '30'=>30, '50'=>50, '100'=>100, '150'=>150, '200'=>200], | ||
88 | ]); | 89 | ]); |
89 | $this->Form->end(); | 90 | $this->Form->end(); |
90 | // Fin ajout | 91 | // Fin ajout |
@@ -183,7 +184,7 @@ if (isset ( $STATUS )) { | @@ -183,7 +184,7 @@ if (isset ( $STATUS )) { | ||
183 | echo $this->Html->link('<i class="icon-ok-sign"></i>', | 184 | echo $this->Html->link('<i class="icon-ok-sign"></i>', |
184 | ['action' => 'statusValidated', $materiel->id], | 185 | ['action' => 'statusValidated', $materiel->id], |
185 | ['title' => 'Valider', 'style' => 'margin: 0 2px', 'escape' => false, | 186 | ['title' => 'Valider', 'style' => 'margin: 0 2px', 'escape' => false, |
186 | - 'confirm' => 'Êtes-vous sur de vouloir validé '.$materiel->designation.' ?']); | 187 | + 'confirm' => 'Êtes-vous sur de vouloir valider '.$materiel->designation.' ?']); |
187 | } | 188 | } |
188 | else if (h($materiel->status) == 'VALIDATED') { | 189 | else if (h($materiel->status) == 'VALIDATED') { |
189 | echo $this->Html->link('<i class="icon-inbox"></i>', | 190 | echo $this->Html->link('<i class="icon-inbox"></i>', |
@@ -323,67 +324,74 @@ if (isset ( $STATUS )) { | @@ -323,67 +324,74 @@ if (isset ( $STATUS )) { | ||
323 | 324 | ||
324 | 325 | ||
325 | <script type="text/javascript"> | 326 | <script type="text/javascript"> |
326 | -function changeNbrMateriels(nbr) { | ||
327 | - var urlDeBase = window.location.href.split("?"); | ||
328 | - var urlDecoupee = window.location.search.split("&"), i, j; // On sépare la chaine des paramètres en fonction du & | ||
329 | - var urlDecoupeeBis = new Array(); | ||
330 | - var param = 0; | ||
331 | - var bool = false; | ||
332 | - | ||
333 | - for(i=0; i<urlDecoupee.length; ++i) { | ||
334 | - urlDecoupeeBis[i] = urlDecoupee[i].split("="); // On sépare les parametres de leurs valeurs | ||
335 | - for(j=0; j<urlDecoupeeBis[i].length; ++j){ | ||
336 | - if(urlDecoupeeBis[i][0] == "aff" || urlDecoupeeBis[i][0] == "?aff") { | ||
337 | - bool = true; | ||
338 | - param = i; // Si le parametre "aff" est trouvé, on le récupère | ||
339 | - break; | 327 | + |
328 | +// Pour changer l'url lorsque le nombre d'éléments souhaités est modifié | ||
329 | +$(document).ready(function () { | ||
330 | + $("#aff-par-defaut").bind("change", function (event) { | ||
331 | + var nbr=$("#aff-par-defaut :selected").val(); | ||
332 | + var urlDeBase = window.location.href.split("?"); | ||
333 | + var urlDecoupee = window.location.search.split("&"), i, j; // On sépare la chaine des paramètres en fonction du & | ||
334 | + var urlDecoupeeBis = new Array(); | ||
335 | + var param = 0; | ||
336 | + var bool = false; | ||
337 | + | ||
338 | + for(i=0; i<urlDecoupee.length; ++i) { | ||
339 | + urlDecoupeeBis[i] = urlDecoupee[i].split("="); // On sépare les parametres de leurs valeurs | ||
340 | + for(j=0; j<urlDecoupeeBis[i].length; ++j){ | ||
341 | + if(urlDecoupeeBis[i][0] == "aff" || urlDecoupeeBis[i][0] == "?aff") { | ||
342 | + bool = true; | ||
343 | + param = i; // Si le parametre "aff" est trouvé, on le récupère | ||
344 | + break; | ||
345 | + } | ||
340 | } | 346 | } |
341 | } | 347 | } |
342 | - } | ||
343 | - | ||
344 | - if(bool) { // Si le parametre recherche a ete trouve, ... | ||
345 | - urlDecoupeeBis[param][1] = nbr; //urlDecoupeeBis[i][0] c'est le nom du parametre, et urlDecoupeeBis[i][1] c'est la vaeur associée | ||
346 | - var url = ""; | ||
347 | - for(i=0; i<urlDecoupee.length; ++i) { //... on reconstruit une url propre ... | ||
348 | - if(/^\?[a-zA-A0-9]*/.test(urlDecoupeeBis[0][0])) { | ||
349 | - if(i!=0) url += "&"; | ||
350 | - // Sauf pour le 1er parametre, qui lui commence par un "?" | ||
351 | - } else url += "&"; | ||
352 | - url += urlDecoupeeBis[i][0]+"="+urlDecoupeeBis[i][1]; | ||
353 | - // On reforme les parametres "&nom=valeur" en les concatenant | ||
354 | - } | ||
355 | - window.location.href = urlDeBase[0]+url; // ... et on fait la redirection | ||
356 | - } else if(urlDecoupee[0]=="") window.location.href = window.location.href + '?aff=' + nbr; // Sinon on joute juste le parametre en fin d'url | ||
357 | - else window.location.href = window.location.href + '&aff=' + nbr; | 348 | + |
349 | + if(bool) { // Si le parametre recherche a ete trouve, ... | ||
350 | + urlDecoupeeBis[param][1] = nbr; //urlDecoupeeBis[i][0] c'est le nom du parametre, et urlDecoupeeBis[i][1] c'est la valeur associée | ||
351 | + var url = ""; | ||
352 | + for(i=0; i<urlDecoupee.length; ++i) { //... on reconstruit une url propre ... | ||
353 | + if(/^\?[a-zA-A0-9]*/.test(urlDecoupeeBis[0][0])) { | ||
354 | + if(i!=0) url += "&"; | ||
355 | + // Sauf pour le 1er parametre, qui lui commence par un "?" | ||
356 | + } else url += "&"; | ||
357 | + url += urlDecoupeeBis[i][0]+"="+urlDecoupeeBis[i][1]; | ||
358 | + // On reforme les parametres "&nom=valeur" en les concatenant | ||
359 | + } | ||
360 | + window.location.href = urlDeBase[0]+url; // ... et on fait la redirection | ||
361 | + } else if(urlDecoupee[0]=="") window.location.href = window.location.href + '?aff=' + nbr; // Sinon on joute juste le parametre en fin d'url | ||
362 | + else window.location.href = window.location.href + '&aff=' + nbr; | ||
358 | 363 | ||
359 | -} | 364 | + }); |
365 | +}); | ||
360 | 366 | ||
361 | -function demarrage(){ | 367 | +// Pour lire l'url et actualiser l'option sélectionnée |
368 | +$(document).ready(function () { | ||
362 | var affichage = parseInt($_GET('aff')); | 369 | var affichage = parseInt($_GET('aff')); |
363 | switch(affichage) { | 370 | switch(affichage) { |
364 | case 20 : | 371 | case 20 : |
365 | - document.getElementById('afficher').selectedIndex = 0; | 372 | + document.getElementById('aff-par-defaut').selectedIndex = 0; |
366 | break; | 373 | break; |
367 | case 30 : | 374 | case 30 : |
368 | - document.getElementById('afficher').selectedIndex = 1; | 375 | + document.getElementById('aff-par-defaut').selectedIndex = 1; |
369 | break; | 376 | break; |
370 | case 50 : | 377 | case 50 : |
371 | - document.getElementById('afficher').selectedIndex = 2; | 378 | + document.getElementById('aff-par-defaut').selectedIndex = 2; |
372 | break; | 379 | break; |
373 | case 100 : | 380 | case 100 : |
374 | - document.getElementById('afficher').selectedIndex = 3; | 381 | + document.getElementById('aff-par-defaut').selectedIndex = 3; |
375 | break; | 382 | break; |
376 | case 150 : | 383 | case 150 : |
377 | - document.getElementById('afficher').selectedIndex = 4; | 384 | + document.getElementById('aff-par-defaut').selectedIndex = 4; |
378 | break; | 385 | break; |
379 | case 200 : | 386 | case 200 : |
380 | - document.getElementById('afficher').selectedIndex = 5; | 387 | + document.getElementById('aff-par-defaut').selectedIndex = 5; |
381 | break; | 388 | break; |
382 | - default : | ||
383 | - document.getElementById('afficher').selectedIndex = 0; | 389 | + default : // Par défaut, lorsque le parametre "aff" n'existe pas, au premier affichage |
390 | + $("#aff-par-defaut").val(<?php echo $configuration->aff_par_defaut ?>); | ||
391 | + // On récupère la valeur dans la BD directement, mais en PHP, faut pas déconner | ||
384 | break; | 392 | break; |
385 | } | 393 | } |
386 | -} | 394 | +}); |
387 | 395 | ||
388 | // La fonction suivante permet de recuperer les parametres d’une URL | 396 | // La fonction suivante permet de recuperer les parametres d’une URL |
389 | function $_GET(param) { | 397 | function $_GET(param) { |
@@ -394,14 +402,12 @@ function $_GET(param) { | @@ -394,14 +402,12 @@ function $_GET(param) { | ||
394 | vars[key] = value !== undefined ? value : ''; | 402 | vars[key] = value !== undefined ? value : ''; |
395 | } | 403 | } |
396 | ); | 404 | ); |
397 | - | 405 | + |
398 | if ( param ) { | 406 | if ( param ) { |
399 | return vars[param] ? vars[param] : null; | 407 | return vars[param] ? vars[param] : null; |
400 | } | 408 | } |
401 | return vars; | 409 | return vars; |
402 | } | 410 | } |
403 | 411 | ||
404 | -window.onload = demarrage(); | ||
405 | - | ||
406 | </script> | 412 | </script> |
407 | 413 | ||
408 | \ No newline at end of file | 414 | \ No newline at end of file |
src/Template/Pages/acls.ctp
@@ -140,7 +140,7 @@ | @@ -140,7 +140,7 @@ | ||
140 | <p class="P46">ACL (Access Control List)</p> | 140 | <p class="P46">ACL (Access Control List)</p> |
141 | <p class="P11">(Etienne Pallier – 24/<span class="T22">06</span>/201<span class="T23">6</span>)</p> | 141 | <p class="P11">(Etienne Pallier – 24/<span class="T22">06</span>/201<span class="T23">6</span>)</p> |
142 | <p class="P1"> </p> | 142 | <p class="P1"> </p> |
143 | - <p class="P1"> </p> | 143 | + <p class="P4">Cette page n'est plus à jour, se référer à <a href="https://docs.google.com/document/d/1-OhEeoi96j6ueUl5NQCQ9ZsTfbJTFw3ZVaWU2iYly_o/edit" onclick="window.open(this.href); return false;">ce document</a> </p> |
144 | <p class="P1"> </p> | 144 | <p class="P1"> </p> |
145 | <p class="P1">I – Cycle de vie du statut du matériel</p> | 145 | <p class="P1">I – Cycle de vie du statut du matériel</p> |
146 | <p class="P1"> </p> | 146 | <p class="P1"> </p> |
src/Template/Pages/home_app.ctp
@@ -12,7 +12,7 @@ | @@ -12,7 +12,7 @@ | ||
12 | 12 | ||
13 | echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">'; | 13 | echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">'; |
14 | echo '<tr><th></th></tr>'; | 14 | echo '<tr><th></th></tr>'; |
15 | - echo '<tr><td> '.$this->Html->link('Voir mes matériels', [ | 15 | + echo '<tr><td> '.$this->Html->link('Voir les matériels à mon nom', [ |
16 | 'controller' => 'materiels', 'action' => 'index', 'MY' => $username]).' </td></tr>'; | 16 | 'controller' => 'materiels', 'action' => 'index', 'MY' => $username]).' </td></tr>'; |
17 | echo '</table>'; | 17 | echo '</table>'; |
18 | 18 | ||
@@ -20,9 +20,9 @@ | @@ -20,9 +20,9 @@ | ||
20 | if (in_array($role, ['Administration', 'Administration Plus'])) { | 20 | if (in_array($role, ['Administration', 'Administration Plus'])) { |
21 | echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">'; | 21 | echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">'; |
22 | echo '<tr><th></th></tr>'; | 22 | echo '<tr><th></th></tr>'; |
23 | - echo '<tr><td> '.$this->Html->link('Voir les matériels à valider', [ | 23 | + echo '<tr><td> '.$this->Html->link('Voir les matériels à valider dont je suis gestionnaire', [ |
24 | 'controller' => 'materiels', 'action' => 'index', 'CREATED']).' </td></tr>'; | 24 | 'controller' => 'materiels', 'action' => 'index', 'CREATED']).' </td></tr>'; |
25 | - echo '<tr><td> '.$this->Html->link('Voir les matériels à sortir de l\'inventaire', [ | 25 | + echo '<tr><td> '.$this->Html->link('Voir les matériels à sortir de l\'inventaire dont je suis gestionnaire', [ |
26 | 'controller' => 'materiels', 'action' => 'index', 'TOBEARCHIVED']).' </td></tr>'; | 26 | 'controller' => 'materiels', 'action' => 'index', 'TOBEARCHIVED']).' </td></tr>'; |
27 | echo '</table>'; | 27 | echo '</table>'; |
28 | } | 28 | } |
@@ -33,7 +33,7 @@ | @@ -33,7 +33,7 @@ | ||
33 | echo '<tr><th></th></tr>'; | 33 | echo '<tr><th></th></tr>'; |
34 | echo '<tr><td> '.$this->Html->link('Voir les matériels dont je suis responsable', [ | 34 | echo '<tr><td> '.$this->Html->link('Voir les matériels dont je suis responsable', [ |
35 | 'controller' => 'materiels', 'action' => 'index', 'GM' => $userConnected->groupes_metier_id, 'GT' => $userConnected->groupe_thematique_id]).' </td></tr>'; | 35 | 'controller' => 'materiels', 'action' => 'index', 'GM' => $userConnected->groupes_metier_id, 'GT' => $userConnected->groupe_thematique_id]).' </td></tr>'; |
36 | - echo '<tr><td> '.$this->Html->link('Voir les matériels à valider dont je suis responsable', [ | 36 | + echo '<tr><td> '.$this->Html->link('Voir les matériels à valider dont je suis responsable', [ |
37 | 'controller' => 'materiels', 'action' => 'index', 'GMV' => $userConnected->groupes_metier_id, 'GTV' => $userConnected->groupe_thematique_id]).' </td></tr>'; | 37 | 'controller' => 'materiels', 'action' => 'index', 'GMV' => $userConnected->groupes_metier_id, 'GTV' => $userConnected->groupe_thematique_id]).' </td></tr>'; |
38 | echo '<tr><td> '.$this->Html->link('Voir les suivis des materiels dont je suis responsable', [ | 38 | echo '<tr><td> '.$this->Html->link('Voir les suivis des materiels dont je suis responsable', [ |
39 | 'controller' => 'suivis', 'action' => 'index', 'GM' => $userConnected->groupes_metier_id, 'GT' => $userConnected->groupe_thematique_id]).' </td></tr>'; | 39 | 'controller' => 'suivis', 'action' => 'index', 'GM' => $userConnected->groupes_metier_id, 'GT' => $userConnected->groupe_thematique_id]).' </td></tr>'; |