Commit 82721df27026b83a65c624882c23aaaa3fe31ab7

Authored by Thibaud Ajas
1 parent 5197dc96

Modif des mails gardés en commentaires, pour l'instant ça fonctionne. La page /p…

…ages/acls respecte désormais la charte graphique du site. L'ajout d'un gestionnaire de référence à l'ajout d'un matériel est désormais obligatoire.
src/Controller/AppController.php
... ... @@ -19,6 +19,7 @@ use Cake\Event\Event;
19 19 use Cake\ORM\TableRegistry;
20 20 use Cake\Mailer\Email;
21 21 use Cake\Core\Configure;
  22 +use PhpParser\Node\Expr\Include_;
22 23  
23 24 /**
24 25 * Application Controller
... ... @@ -200,39 +201,39 @@ class AppController extends Controller
200 201 * @param string $message
201 202 * @param string[] $to
202 203 */
203   -// public function sendEmailTo($subject, $message, $to = null) {
  204 + public function sendEmailTo($subject, $message, $to = null) {
204 205  
205   -// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  206 + $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
206 207  
207   -// if ($to != null && !$configuration->test) {
  208 + if ($to != null && !$configuration->test) {
208 209  
209   -// for($i = 0; $i < sizeof($to); $i++) {
  210 + for($i = 0; $i < sizeof($to); $i++) {
210 211  
211 212  
212   -// if (filter_var($to[$i], FILTER_VALIDATE_EMAIL)) {
213   -// $email = new Email();
  213 + if (filter_var($to[$i], FILTER_VALIDATE_EMAIL)) {
  214 + $email = new Email();
214 215  
215   -// $etiquetteFrom = explode("@", $configuration->sender_mail);
  216 + $etiquetteFrom = explode("@", $configuration->sender_mail);
216 217  
217   -// if($configuration->envoi_mail_management_dev) {
218   -// $email->transport('dev')
219   -// ->from([$configuration->sender_mail => $etiquetteFrom[0]])
220   -// ->to($to[$i])
221   -// ->subject("[LabInvent] ".$subject)
222   -// ->send($message);
223   -// } else {
224   -// $email->transport('default')
225   -// ->from([$configuration->sender_mail => $etiquetteFrom[0]])
226   -// ->to($to[$i])
227   -// ->subject("[LabInvent] ".$subject)
228   -// ->send($message);
229   -// }
230   -// }
  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 + }
231 232  
232   -// }
233   -// }
  233 + }
  234 + }
234 235  
235   -// }
  236 + }
236 237  
237 238 /**
238 239 * Envoi d'un email à la gestion (et aux devs) pour prévenir qu'un matériel a été créé ou modifié
... ... @@ -240,154 +241,154 @@ class AppController extends Controller
240 241 * @param string $subject
241 242 * @param string $message
242 243 */
243   -// public function sendEmailToManagementWith($subject, $message) {
  244 + public function sendEmailToManagementWith($subject, $message) {
244 245  
245   -// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  246 + $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
246 247  
247   -// for($i = 1; $i < 11; $i++) {
248   -// $t = 'emailGuest'.$i;
249   -// $to = $configuration->$t;
  248 + for($i = 1; $i < 11; $i++) {
  249 + $t = 'emailGuest'.$i;
  250 + $to = $configuration->$t;
250 251  
251   -// if ($to != null && !$configuration->test) {
252   -// if (filter_var($to, FILTER_VALIDATE_EMAIL)) {
253   -// $email = new Email();
  252 + if ($to != null && !$configuration->test) {
  253 + if (filter_var($to, FILTER_VALIDATE_EMAIL)) {
  254 + $email = new Email();
254 255  
255   -// $etiquetteFrom = explode("@", $configuration->sender_mail);
  256 + $etiquetteFrom = explode("@", $configuration->sender_mail);
256 257  
257   -// if($configuration->envoi_mail_management_dev) {
258   -// $email->transport('dev')
259   -// ->from([$configuration->sender_mail => $etiquetteFrom[0]])
260   -// ->to($to)
261   -// ->subject("[LabInvent] ".$subject)
262   -// ->send($message);
263   -// } else {
264   -// $email->transport('default')
265   -// ->from([$configuration->sender_mail => $etiquetteFrom[0]])
266   -// ->to($to)
267   -// ->subject("[LabInvent] ".$subject)
268   -// ->send($message);
269   -// }
270   -// }
  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 + }
271 272  
272   -// }
273   -// }
  273 + }
  274 + }
274 275  
275   -// }
  276 + }
276 277  
277   -// public function sendEmailToManagement($idObj = null) {
  278 + public function sendEmailToManagement($idObj = null) {
278 279  
279   -// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  280 + $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
280 281  
281   -// $userAuth = $this->LdapAuth->user($configuration->authentificationType_ldap)[0];
282   -// $controller = substr($this->request->params['controller'], 0, -1); // materiel
283   -// $action = $this->request->params['action']; // add or edit or delete or ...
284   -// $userName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0];
285   -// $userEmail = $this->LdapAuth->user('mail')[0];
286   -// $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role'];
287   -// if($role == null) $role = 'Utilisateur';
  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';
288 289  
289   -// $modelName = $this->modelClass; // 'Materiels'
290   -// $id = $idObj;
  290 + $modelName = $this->modelClass; // 'Materiels'
  291 + $id = $idObj;
291 292  
292   -// switch ($action) {
293   -// case 'add':
294   -// $actionFrench = ['Création d\'un ', 'été créé'];
295   -// break;
296   -// case 'edit':
297   -// $actionFrench = ['Modification d\'un ', 'été modifié'];
298   -// break;
299   -// case 'delete':
300   -// $actionFrench = ['Suppression d\'un ', 'été supprimé'];
301   -// break;
302   -// case 'statusValidated':
303   -// $actionFrench = ['Validation d\'un ', 'été validé'];
304   -// break;
305   -// case 'statusToBeArchived':
306   -// $actionFrench = ['Demande Archivage d\'un ', 'été demandé pour archivage'];
307   -// break;
308   -// case 'statusArchived':
309   -// $actionFrench = ['Archivage d\'un ', 'été archivé'];
310   -// break;
311   -// case 'setLabelIsPlaced':
312   -// $actionFrench = ['Etiquette posé sur un ', 'reçu une étiquette'];
313   -// break;
314   -// default:
315   -// $actionFrench = [$action.' d\'un ', 'été '.$action];
316   -// break;
317   -// }
318   -// $doneBy = $userName." (".$userEmail.", login=".$userAuth.", profil=".$role.").";
  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.").";
319 320  
320   -// $subject = $actionFrench[0].$controller;
  321 + $subject = $actionFrench[0].$controller;
321 322  
322   -// if($id != null) {
323   -// $entityName = TableRegistry::get($modelName)->find('all')->where(['id =' => $id])->first();
  323 + if($id != null) {
  324 + $entityName = TableRegistry::get($modelName)->find('all')->where(['id =' => $id])->first();
324 325  
325   -// if($modelName == 'Materiels') {
326   -// $entityName = $entityName['designation'];
327   -// }
328   -// else if ($modelName == 'Suivis' || $modelName == 'Emprunts') {
329   -// $entityName = $entityName['id'];
330   -// }
331   -// else {
332   -// $entityName = $entityName['nom'];
333   -// }
334   -// }
335   -// else {
336   -// $entityName = NULL;
337   -// }
  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 + }
338 339  
339   -// $message = $this->getArticle().$controller." ".$entityName." (id=".$id.") a ".$actionFrench[1]." par ".$doneBy;
  340 + $message = $this->getArticle().$controller." ".$entityName." (id=".$id.") a ".$actionFrench[1]." par ".$doneBy;
340 341  
341   -// $this->sendEmailToManagementWith($subject, $message);
  342 + $this->sendEmailToManagementWith($subject, $message);
342 343  
343   -// }
  344 + }
344 345  
345 346 /**
346 347 * Envoi d'un email au propriétaire pour prévenir qu'un matériel a été créé
347 348 * @param string $subject
348 349 * @param string $message
349 350 */
350   -// public function sendEmailToCreate($idObj = null) {
  351 + public function sendEmailToCreate($idObj = null) {
351 352  
352   -// $id = $idObj;
  353 + $id = $idObj;
353 354  
354   -// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
355   -// $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $id])->first();
  355 + $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  356 + $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $id])->first();
356 357  
357   -// $createurName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0];
358   -// $createurEmail = $this->LdapAuth->user('mail')[0];
359   -// $toEmail = $materiel->email_responsable;
  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 361  
361   -// $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role'];
362   -// if($role == null) $role = 'Utilisateur';
  362 + $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role'];
  363 + if($role == null) $role = 'Utilisateur';
363 364  
364   -// $subject = 'Ajout d\'un matériel';
365   -// $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.';
  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.';
366 367  
367   -// if ($toEmail != null && !$configuration->test) {
368   -// if (filter_var($toEmail, FILTER_VALIDATE_EMAIL)) {
369   -// $email = new Email();
  368 + if ($toEmail != null && !$configuration->test) {
  369 + if (filter_var($toEmail, FILTER_VALIDATE_EMAIL)) {
  370 + $email = new Email();
370 371  
371   -// $etiquetteFrom = explode("@", $configuration->sender_mail);
  372 + $etiquetteFrom = explode("@", $configuration->sender_mail);
372 373  
373   -// if($configuration->envoi_mail_management_dev) {
374   -// $email->transport('dev')
375   -// ->from([$configuration->sender_mail => $etiquetteFrom[0]])
376   -// ->to($toEmail)
377   -// ->subject("[LabInvent] ".$subject)
378   -// ->send($message);
379   -// } else {
380   -// $email->transport('default')
381   -// ->from([$configuration->sender_mail => $etiquetteFrom[0]])
382   -// ->to($toEmail)
383   -// ->subject("[LabInvent] ".$subject)
384   -// ->send($message);
385   -// }
386   -// }
  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 + }
387 388  
388   -// }
  389 + }
389 390  
390   -// }
  391 + }
391 392  
392 393  
393 394 static function isLabinventDebugMode() {
... ... @@ -401,159 +402,132 @@ class AppController extends Controller
401 402 }
402 403 }
403 404  
  405 + // Les fonctions suivantes sont en cours de developpement
404 406 /**
405   - * Envoie un mail avec un sujet, contenant un message à destination d'une liste de mails, selon l'action effectuée.
406   - * @param string $subject -> Sujet du mail
407   - * @param string $msg -> Message à envoyer
408   - * @param array $listMails -> Liste des mails des destinataires
409   - * @param id $idObj -> ID du matériel créé, modifié, supprimé ...
  407 + * 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 410 */
411   - public function sendEmail($subject, $msg, $listMails, $idObj = null) {
412   -
413   - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
414   -
415   - //if(!$configuration['envoi_mail_management_dev']) {
416   - foreach($listMails as $mail){
417   - $mailInTable = TableRegistry::get('Users')->find()->select('email')->where(['email =' => $mail])->first();
418   - if ($mailInTable!= null) { // Tous les utilisateurs privilégiés, si le mode LDAP est activé, sinon tout le monde
419   - $roleInTable = TableRegistry::get('Users')->find()->select('role')->where(['email =' => $mail])->first();
420   - Switch ($roleInTable){
421   - case 'Super Administrateur':
422   - $this->sendEmailToSuperAdmin($subject, $msg, $mail, $idObj, $configuration);
423   - break;
424   - case 'Administration Plus':
425   - // Role useless, mais il existe dans BD ...
426   - break;
427   - case 'Administration':
428   - $this->sendEmailToManagement($subject, $msg, $mail, $idObj, $configuration);
429   - break;
430   - case 'Responsable':
431   - $this->sendEmailToResponsable($subject, $msg, $mail, $idObj, $configuration);
432   - break;
433   - case 'Utilisateur':
434   - $this->sendEmailToUser($subject, $msg, $mail, $idObj, $configuration);
435   - break;
436   - default :
437   - break;
438   - }
439   - } else { // Si on utilise le LDAP, les seuls utilisateurs qui ne sont pas dans la BD du site sont les utilisateurs normaux
440   - $this->sendEmailToUser($subject, $msg, $mail, $idObj, $configuration); // <--
441   - }
442   - }
443   - //}
  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 +// */
444 420  
445   - }
446   -
447   - private function sendEmailToResponsable($subject, $msg, $mail, $idObj = null, $config) {
448   -
449   - // Rajouter la vérif sur la colone adéquate de la bd
  421 +// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  422 +// $action = $this->request->params['action']; // add or edit or delete or ...
450 423  
451   - if ($mail != null && !$config->test && false) { // flase à remplacer
452   - if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
453   - $email = new Email();
454   -
455   - $etiquetteFrom = explode("@", $config->sender_mail);
456   -
457   - if($config->envoi_mail_management_dev) { // <-- Si la case est cochée
458   - $email->transport('dev')
459   - ->from([$config->sender_mail => $etiquetteFrom[0]])
460   - ->to($mail)
461   - ->subject("[LabInvent] ".$subject)
462   - ->send($msg);
463   - } else { // <-- Si la case n'est pas cochée
464   - $email->transport('default')
465   - ->from([$config->sender_mail => $etiquetteFrom[0]])
466   - ->to($mail)
467   - ->subject("[LabInvent] ".$subject)
468   - ->send($msg);
469   - }
470   - }
  424 +// if($idObj != null || $nomObj != null) {
471 425  
472   - }
473   - }
474   -
475   - private function sendEmailToUser($subject, $msg, $mail, $idObj = null, $config) {
476   -
477   - // Rajouter la vérif sur la colone adéquate de la bd
478   - var_dump($mail);
479   - if ($mail != null && !$config->test && true) { // flase à remplacer
480   - if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
481   - $email = new Email();
482   -
483   - $etiquetteFrom = explode("@", $config->sender_mail);
484   -
485   - if($config->envoi_mail_management_dev) {
486   - $email->transport('dev')
487   - ->from([$config->sender_mail => $etiquetteFrom[0]])
488   - ->to($mail)
489   - ->subject("[LabInvent] ".$subject)
490   - ->send($msg);
491   - } else {
492   - $email->transport('default')
493   - ->from([$config->sender_mail => $etiquetteFrom[0]])
494   - ->to($mail)
495   - ->subject("[LabInvent] ".$subject)
496   - ->send($msg);
497   - }
498   - }
  426 +// if($idObj != null) $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $idObj])->first();
499 427  
500   - }
501   - }
502   -
503   - private function sendEmailToSuperAdmin($subject, $msg, $mail, $idObj = null, $config) {
504   -
505   - // Rajouter la vérif sur la colone adéquate de la bd
506   -
507   - if ($mail != null && !$config->test && false) { // flase à remplacer
508   - if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
509   - $email = new Email();
510   -
511   - $etiquetteFrom = explode("@", $config->sender_mail);
512   -
513   - if($config->envoi_mail_management_dev) {
514   - $email->transport('dev')
515   - ->from([$config->sender_mail => $etiquetteFrom[0]])
516   - ->to($mail)
517   - ->subject("[LabInvent] ".$subject)
518   - ->send($msg);
519   - } else {
520   - $email->transport('default')
521   - ->from([$config->sender_mail => $etiquetteFrom[0]])
522   - ->to($mail)
523   - ->subject("[LabInvent] ".$subject)
524   - ->send($msg);
525   - }
526   - }
527   -
528   - }
529   - }
  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 +// }
  476 +
  477 +// $mailList = array();
  478 +
  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 +// }
  484 +
  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 +// }
  493 +
  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 +// }
530 506  
531   - private function sendEmailToManagement($subject, $msg, $mail, $idObj = null, $config) {
532   -
533   - // Rajouter la vérif sur la colone adéquate de la bd
534   -
535   - if ($mail != null && !$config->test && false) { // flase à remplacer
536   - if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
537   - $email = new Email();
  507 +// private function sendEmailTo($subject, $msg, $mail, $config) {
  508 +
  509 +// if ($mail != null && !$config->test) {
  510 +// if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
  511 +// $email = new Email();
538 512  
539   - $etiquetteFrom = explode("@", $config->sender_mail);
  513 +// $etiquetteFrom = explode("@", $config->sender_mail);
540 514  
541   - if($config->envoi_mail_management_dev) {
542   - $email->transport('dev')
543   - ->from([$config->sender_mail => $etiquetteFrom[0]])
544   - ->to($mail)
545   - ->subject("[LabInvent] ".$subject)
546   - ->send($msg);
547   - } else {
548   - $email->transport('default')
549   - ->from([$config->sender_mail => $etiquetteFrom[0]])
550   - ->to($mail)
551   - ->subject("[LabInvent] ".$subject)
552   - ->send($msg);
553   - }
554   - }
  515 +// if($config->envoi_mail_management_dev) { // <-- Si la case est cochée
  516 +// $email->transport('dev')
  517 +// ->from([$config->sender_mail => $etiquetteFrom[0]])
  518 +// ->to($mail)
  519 +// ->subject("[LabInvent] ".$subject)
  520 +// ->send($msg);
  521 +// } 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);
  527 +// }
  528 +// }
555 529  
556   - }
557   - }
  530 +// }
  531 +// }
558 532  
559 533 }
... ...
src/Controller/MaterielsController.php
... ... @@ -277,49 +277,49 @@ class MaterielsController extends AppController
277 277 *
278 278 * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise.
279 279 */
280   - public function add()
281   - {
  280 + public function add() {
  281 +
282 282 $materiel = $this->Materiels->newEntity();
283 283 if ($this->request->is('post')) {
284 284 $materiel = $this->Materiels->patchEntity($materiel, $this->request->data);
285 285 if ($this->Materiels->save($materiel)) {
286 286 $this->Flash->success(__('Le matériel a bien été ajouté.'));
287 287  
288   -// $this->sendEmailToManagement($materiel->id);
  288 + $this->sendEmailToManagement($materiel->id);
289 289  
290   -// if($materiel->nom_createur != $materiel->nom_responsable) {
291   -// $this->sendEmailToCreate($materiel->id);
292   -// }
  290 + if($materiel->nom_createur != $materiel->nom_responsable) {
  291 + $this->sendEmailToCreate($materiel->id);
  292 + }
293 293  
294   - $msg = $materiel->get('nom_createur').' à ajouté le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.')';
  294 + $message = $materiel->get('nom_createur').' à ajouté le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.')';
295 295 $subject = 'Ajout de matériel';
296 296 $listMails = [];
297 297  
298   -// //Envoi mail responsable
299   -// $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();
300   -// $mails = [];
301   -// for($i = 0; $i < sizeof($mailsResp); $i++) {
302   -// $mails[$i] = $mailsResp[$i]['email'];
303   -// }
304   -// $this->sendEmailTo('Ajout d\'un matériel', $message, $mails);
  298 + //Envoi mail responsable
  299 + $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();
  300 + $mails = [];
  301 + for($i = 0; $i < sizeof($mailsResp); $i++) {
  302 + $mails[$i] = $mailsResp[$i]['email'];
  303 + }
  304 + $this->sendEmailTo('Ajout d\'un matériel', $message, $mails);
305 305  
306   -// //Envoi mail administratif
307   -// //$mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->orWhere(['role =' => 'Administration'])->toArray();
308   -// $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->toArray();
309   -// $mails = [];
310   -// for($i = 0; $i < sizeof($mailsResp); $i++) {
311   -// $mails[$i] = $mailsResp[$i]['email'];
312   -// }
  306 + //Envoi mail administratif
  307 + //$mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->orWhere(['role =' => 'Administration'])->toArray();
  308 + $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->toArray();
  309 + $mails = [];
  310 + for($i = 0; $i < sizeof($mailsResp); $i++) {
  311 + $mails[$i] = $mailsResp[$i]['email'];
  312 + }
313 313  
314 314  
315   -// // Rajout condition d'envoi de mail ou pas
316   -// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  315 + // Rajout condition d'envoi de mail ou pas
  316 + $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
317 317  
318   -// if(!$configuration['envoi_mail_management_dev']){ // Si false, on envoie les mails, sinon on les envoie pas
319   -// $this->sendEmailTo('Ajout d\'un matériel', $message, $mails);
320   -// }
  318 + if(!$configuration['envoi_mail_management_dev']){ // Si false, on envoie les mails, sinon on les envoie pas
  319 + $this->sendEmailTo('Ajout d\'un matériel', $message, $mails);
  320 + }
321 321  
322   - $this->sendEmail($subject, $msg, $listMails);
  322 +// $this->sendEmail($materiel->id);
323 323  
324 324 return $this->redirect(['action' => 'view', $materiel->id]);
325 325 } else {
... ... @@ -371,11 +371,11 @@ class MaterielsController extends AppController
371 371 $materiel = $this->Materiels->patchEntity($materiel, $this->request->data);
372 372 if ($this->Materiels->save($materiel)) {
373 373 $this->Flash->success(__('Le matériel a bien été édité.'));
374   -// $this->sendEmailToManagement($id);
375   -// if($materiel->nom_modificateur != $materiel->nom_responsable) {
376   -// $message = $materiel->get('nom_modificateur').' a édité le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.')';
377   -// $this->sendEmailTo('Modification d\'un matériel', $message, [$materiel->get('email_responsable')]);
378   -// }
  374 + $this->sendEmailToManagement($id);
  375 + if($materiel->nom_modificateur != $materiel->nom_responsable) {
  376 + $message = $materiel->get('nom_modificateur').' a édité le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.')';
  377 + $this->sendEmailTo('Modification d\'un matériel', $message, [$materiel->get('email_responsable')]);
  378 + }
379 379 return $this->redirect(['action' => 'view', $id]);
380 380 } else {
381 381 $this->Flash->error(__('Le matériel n\'a pas pu être édité.'));
... ... @@ -492,7 +492,7 @@ class MaterielsController extends AppController
492 492 $materiel = $this->Materiels->get($id);
493 493 if ($this->Materiels->delete($materiel)) {
494 494 $this->Flash->success(__('Le matériel a bien été supprimé.'));
495   -// $this->sendEmailToManagement($id);
  495 + $this->sendEmailToManagement($id);
496 496 } else {
497 497 $this->Flash->error(__('Le matériel n\'a pas pu être supprimé.'));
498 498 }
... ... @@ -520,13 +520,13 @@ class MaterielsController extends AppController
520 520 $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');
521 521 return $this->redirect(['action' => 'edit', $id]);
522 522 }
523   -// $message = 'Le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.') a été validé.';
524   -// $this->sendEmailTo('Validation d\'un matériel', $message, [$materiel->get('email_responsable')]);
  523 + $message = 'Le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.') a été validé.';
  524 + $this->sendEmailTo('Validation d\'un matériel', $message, [$materiel->get('email_responsable')]);
525 525 }
526 526  
527 527 if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) {
528 528 $this->Flash->success(__($message));
529   -// $this->sendEmailToManagement($id);
  529 + $this->sendEmailToManagement($id);
530 530 }
531 531 else {
532 532 $this->Flash->error(__('Le statut n\'a pas pu être édité.'));
... ... @@ -1016,7 +1016,7 @@ class MaterielsController extends AppController
1016 1016 fclose($csv_file);
1017 1017  
1018 1018 exit();
1019   - //Sans le exit() ca ne fonctionne pas pour de petite liste, et dans tous les cas une ligne en javascript est écris si il n'y a pas exit()
  1019 + //Sans le exit() ça ne fonctionne pas pour des petites listes, et dans tout les cas une ligne en javascript est écrite si il n'y a pas exit()
1020 1020  
1021 1021 //La redirection suivante fonctionne parfaitement, mais inutile à cause du exit()
1022 1022 /*
... ...
src/Model/Table/MaterielsTable.php
... ... @@ -194,6 +194,8 @@ class MaterielsTable extends AppTable
194 194  
195 195 $validator
196 196 ->notEmpty('site_id', 'Ce champ doit être rempli');
  197 +// ->allowEmpty('site_id');
  198 +// A passer en non commenté pour lorsque le matos est validé
197 199  
198 200 $validator
199 201 ->allowEmpty('lieu_detail')
... ... @@ -206,6 +208,9 @@ class MaterielsTable extends AppTable
206 208 $validator
207 209 ->allowEmpty('email_responsable')
208 210 ->email('email_responsable');
  211 +
  212 + $validator
  213 + ->notEmpty('nom_gestionnaire', 'Ce champ doit être rempli');
209 214  
210 215 $validator
211 216 ->allowEmpty('nom_createur');
... ...
src/Template/Materiels/add.ctp
1 1 <?php
  2 +use Cake\ORM\TableRegistry;
  3 +
2 4 if(isset($cpMateriel)) {
3 5 $Designation = $cpMateriel->designation;
4 6 $Sur_categ_id = $cpMateriel->sur_categorie_id;
... ... @@ -132,6 +134,21 @@ else {
132 134 'readonly' => true,
133 135 'default' => $mail_responsable
134 136 ]);
  137 +
  138 + // ==========================Zone de travail==============================
  139 +
  140 + // Modif BD :
  141 + // ALTER TABLE `materiels` ADD `nom_gestionnaire` VARCHAR( 45 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL AFTER `email_responsable` ;
  142 +
  143 + echo $this->Form->input('nom_gestionnaire', [
  144 + 'label' => 'Nom du gestionnaire de référence du matériel',
  145 + 'empty' => 'Choisir un utilisateur',
  146 + 'default' => $username,
  147 + 'options' => TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom'])->where(['role =' => 'Administration'])
  148 + ]);
  149 +
  150 + // =======================================================================
  151 +
135 152 echo $this->Form->input('fournisseur', ['label' => 'Fournisseur', 'default' => $Fournisseur]);
136 153 echo $this->Form->input('organisme_id', ['options' => $organismes, 'style' => 'width: 380px', 'empty' => 'Choisir un organisme', 'default' => $Organisme_id]);
137 154 echo $this->Form->input('prix_ht', ['label' => 'Prix HT (€)', 'default' => $Prix_ht]);
... ...
src/Template/Materiels/edit.ctp
1 1 <?php
2 2  
3 3  
  4 +use Cake\ORM\TableRegistry;
  5 +
4 6 $administrationData = array (
5 7 'eotp',
6 8 'numero_commande',
... ... @@ -224,7 +226,18 @@ if ($IS_VALIDATED)
224 226 'readonly' => true,
225 227 'default' => $mail_responsable
226 228 ]);
227   -
  229 +
  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',
  237 + 'options' => $administrateurs
  238 + ]);
  239 +
  240 +
228 241  
229 242 echo $this->Form->input('fournisseur', [
230 243 'label' => 'Fournisseur',
... ... @@ -405,6 +418,5 @@ $(document).ready(function () {
405 418 }
406 419 });
407 420 });
408   -
409 421  
410 422 </script>
... ...
src/Template/Materiels/view.ctp
... ... @@ -374,6 +374,7 @@ if (h ( $materiel-&gt;status ) == &#39;ARCHIVED&#39;)
374 374 $displayElement ( __ ( 'Détail lieu de stockage' ), h ( $materiel->lieu_detail ) );
375 375  
376 376 $displayElement ( __ ( 'Nom du propriétaire' ), $this->Html->link ( h ( $materiel->nom_responsable ), 'mailto:' . h ( $materiel->email_responsable ) ) );
  377 + $displayElement ( __ ( 'Nom du gestionnaire de référence' ), h ( $materiel->nom_gestionnaire ) );
377 378 $displayElement ( __ ( 'N. interne (labo)' ), h ( $materiel->numero_laboratoire ) );
378 379  
379 380 if ($role == 'Super Administrateur') {
... ...
src/Template/Pages/acls.ctp
1   -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><!--This file was converted to xhtml by LibreOffice - see http://cgit.freedesktop.org/libreoffice/core/tree/filter/source/xslt for the code.--><head profile="http://dublincore.org/documents/dcmi-terms/"><meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/><title xml:lang="en-US">- no title specified</title><meta name="DCTERMS.title" content="" xml:lang="en-US"/><meta name="DCTERMS.language" content="en-US" scheme="DCTERMS.RFC4646"/><meta name="DCTERMS.source" content="http://xml.openoffice.org/odf2xhtml"/><meta name="DCTERMS.creator" content="Etienne Pallier"/><meta name="DCTERMS.issued" content="2014-01-21T19:49:00" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.modified" content="2016-06-24T15:39:15.489669761" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.provenance" content="" xml:lang="en-US"/><meta name="DCTERMS.subject" content="," xml:lang="en-US"/><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" hreflang="en"/><link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" hreflang="en"/><link rel="schema.DCTYPE" href="http://purl.org/dc/dcmitype/" hreflang="en"/><link rel="schema.DCAM" href="http://purl.org/dc/dcam/" hreflang="en"/><style type="text/css">
2   - @page { }
3   - table { border-collapse:collapse; border-spacing:0; empty-cells:show }
4   - td, th { vertical-align:top; font-size:12pt;}
5   - h1, h2, h3, h4, h5, h6 { clear:both }
6   - ol, ul { margin:0; padding:0;}
7   - li { list-style: none; margin:0; padding:0;}
8   - <!-- "li span.odfLiEnd" - IE 7 issue-->
9   - li span. { clear: both; line-height:0; width:0; height:0; margin:0; padding:0; }
10   - span.footnodeNumber { padding-right:1em; }
11   - span.annotation_style_by_filter { font-size:95%; font-family:Arial; background-color:#fff000; margin:0; border:0; padding:0; }
12   - * { margin:0;}
13   - .P1 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; font-weight:bold; }
14   - .P10 { font-size:10pt; font-family:Times New Roman; writing-mode:lr-tb; font-style:italic; font-weight:bold; }
15   - .P11 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-style:italic; }
16   - .P12 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
17   - .P13 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
18   - .P14 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; margin-left:1.251cm; margin-right:0cm; text-indent:0cm; }
19   - .P15 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; margin-left:1.251cm; margin-right:0cm; text-indent:0cm; }
20   - .P16 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; margin-left:1.251cm; margin-right:0cm; text-indent:0cm; }
21   - .P17 { font-size:12pt; font-family:Times; writing-mode:lr-tb; margin-left:1.251cm; margin-right:0cm; text-indent:0cm; }
22   - .P18 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; margin-left:1.251cm; margin-right:0cm; text-indent:0cm; }
23   - .P19 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; font-weight:bold; }
24   - .P2 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; font-weight:bold; }
25   - .P22 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
26   - .P23 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
27   - .P25 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
28   - .P26 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
29   - .P28 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-style:italic; font-weight:bold; }
30   - .P29 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-style:italic; font-weight:bold; }
31   - .P3 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; font-weight:bold; }
32   - .P30 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-style:italic; font-weight:bold; }
33   - .P31 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; font-style:italic; font-weight:bold; }
34   - .P33 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-style:italic; }
35   - .P34 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; font-style:italic; }
36   - .P35 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
37   - .P36 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
38   - .P37 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
39   - .P38 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
40   - .P39 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
41   - .P4 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
42   - .P40 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
43   - .P41 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-style:italic; font-weight:bold; }
44   - .P42 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
45   - .P43 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:normal; }
46   - .P44 { font-size:11pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
47   - .P45 { font-size:11pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:normal; }
48   - .P46 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
49   - .P47 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
50   - .P48 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; font-weight:bold; }
51   - .P49 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
52   - .P5 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
53   - .P51 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
54   - .P52 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
55   - .P53 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
56   - .P54 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
57   - .P55 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
58   - .P56 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
59   - .P57 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
60   - .P58 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
61   - .P59 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
62   - .P6 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
63   - .P62 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
64   - .P68 { font-size:11pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
65   - .P7 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; font-weight:bold; }
66   - .P8 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; }
67   - .P9 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; }
68   - .Standard { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
69   - .Table_20_Contents { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
70   - .Tableau2 { width:27.25cm; float:none; writing-mode:lr-tb; }
71   - .Tableau2_A1 { background-color:#cccccc; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
72   - .Tableau2_A2 { background-color:#dddddd; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
73   - .Tableau2_C12 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
74   - .Tableau2_C13 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
75   - .Tableau2_C5 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
76   - .Tableau2_D12 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
77   - .Tableau2_D13 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
78   - .Tableau2_D4 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
79   - .Tableau2_D9 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
80   - .Tableau2_E10 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
81   - .Tableau2_E11 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
82   - .Tableau2_E12 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
83   - .Tableau2_E13 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
84   - .Tableau2_E4 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
85   - .Tableau2_E7 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
86   - .Tableau2_F12 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
87   - .Tableau2_F13 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
88   - .Tableau2_F3 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
89   - .Tableau2_F8 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
90   - .Tableau2_G1 { background-color:#cccccc; padding:0.097cm; border-width:thin; border-style:solid; border-color:#000000; }
91   - .Tableau2_G12 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
92   - .Tableau2_G13 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
93   - .Tableau2_A { width:3.893cm; }
94   - .Tableau2_G { width:3.893cm; }
95   - .T1 { font-style:italic; font-weight:bold; }
96   - .T13 { font-size:9pt; font-style:italic; }
97   - .T14 { font-size:9pt; font-style:italic; font-weight:bold; }
98   - .T15 { font-size:9pt; font-weight:bold; }
99   - .T16 { font-size:9pt; }
100   - .T17 { font-size:9pt; }
101   - .T18 { font-size:9pt; }
102   - .T25 { font-weight:normal; }
103   - .T4 { font-weight:bold; }
104   - .T5 { font-weight:bold; }
105   - .T6 { font-weight:bold; }
106   - .T7 { font-weight:bold; }
107   - .WW8Num1z0 { font-family:Symbol; }
108   - .WW8Num2z0 { font-family:Symbol; }
109   - .WW8Num3z0 { font-family:Symbol; }
110   - .WW8Num4z0 { font-family:Symbol; }
111   - .WW8Num5z0 { font-family:Symbol; }
112   - .WW8Num6z0 { font-family:Symbol; font-size:12pt; }
113   - .WW8Num7z0 { font-family:Symbol; }
114   - .WW8Num8z0 { font-family:Symbol; font-size:9pt; font-weight:normal; }
115   - <!-- ODF styles with no properties representable as CSS -->
116   - .Tableau2.13 .T10 .T11 .T12 .T19 .T2 .T20 .T21 .T22 .T23 .T24 .T3 .T8 .T9 .WW8Num8z1 .WW8Num8z2 .WW8Num8z3 .WW8Num8z4 .WW8Num8z5 .WW8Num8z6 .WW8Num8z7 .WW8Num8z8 .WW8Num9z0 .WW8Num9z1 .WW8Num9z2 .WW8Num9z3 .WW8Num9z4 .WW8Num9z5 .WW8Num9z6 .WW8Num9z7 .WW8Num9z8 { }
117   - </style></head><body dir="ltr" style="max-width:29.7cm;margin-top:1cm; margin-bottom:1cm; margin-left:1cm; margin-right:1.45cm; writing-mode:lr-tb; "><p class="P46">ACL (Access Control List)</p><p class="P11">(Etienne Pallier – 24/<span class="T22">06</span>/201<span class="T23">6</span>)</p><p class="P1"> </p><p class="P1"> </p><p class="P1"> </p><p class="P1">I – Cycle de vie du statut du matériel</p><p class="P1"> </p><p class="Standard"><span class="T5">Créer</span><span class="T2"> un matériel ==</span><span class="T9">&gt; passe alors en statut </span><span class="T7">CREATED ==&gt; </span><span class="T1">peut alors être éventuellement supprimé (mais ne pourra plus être supprimé ensuite)</span></p><p class="Standard"><span class="T7">Valider</span><span class="T9"> un matériel CREATED ==&gt; passe alors en statut </span><span class="T7">VALIDATED </span><span class="T9">(</span><span class="T11">resp et </span><span class="T9">admin only)</span></p><p class="P4"><span class="T7">Demander l'Archivage</span><span class="T9"> d'un materiel VALIDATED ==&gt; passe alors en statut </span><span class="T7">TOBEARCHIVED</span><span class="T9"> (resp et admin only)</span></p><p class="P4"><span class="T7">Sortir</span><span class="T9"> de l'inventaire (Valider une demande d'archivage d'un matériel TOBEARCHIVED) ==&gt; statut </span><span class="T7">ARCHIVED</span><span class="T9"> (admin only)</span></p><p class="P4"><span class="T7">Désarchiver</span><span class="T9"> un matériel ==&gt; repasse de TOBEARCHIVED ou ARCHIVED à </span><span class="T7">VALIDATED</span><span class="T9"> (admin only) </span></p><p class="P4"> </p><p class="P5">En résumé : </p><p class="P4"> </p><p class="P3">CREATED ==&gt;  VALIDATED ==&gt;  TOBEARCHIVED ==&gt;  ARCHIVED</p><p class="P2"><span class="T12">     </span><span class="T8">I                        /\                        I                                I</span></p><p class="P2"><span class="T12">    </span><span class="T8">V                                    I ------------------------        I ---------------------------------        I (adminplus only)</span></p><p class="P3">DELETED</p><p class="P2"> </p><p class="P2"> </p><p class="P2"> </p><p class="P1">II - Droits des utilisateurs selon leur profil</p><p class="P1"> </p><p class="P1">A – Globalement (principes généraux)</p><p class="P1"> </p><p class="P6">Un utilisateur non logué ne doit RIEN pouvoir faire. Seulement se loguer, c'est tout. Il n'a accès qu'à la page d'accueil (de login).</p><p class="P6">Une fois logué, un utilisateur a des droits différents selon son profil, globalement :</p><p class="P14"><span class="T2">- un </span><span class="T5">USER</span><span class="T2"> ne peut que créer un matériel, un suivi, ou un emprunt, consulter, et modifier (uniquement ce qu'il a créé lui-même)</span></p><p class="P18"><span class="T2">- un </span><span class="T5">RESPONSABLE</span><span class="T2"> a tous les droits sauf accès à certains champs et certaines vues réservées à l'administration (ADMIN). Il ne peut pas non plus archiver un matériel, mais seulement demander l'archivage (comme un USER)(uniquement ce </span><span class="T3">lié à son groupe métier ou thématiques</span><span class="T2">)</span></p><p class="P14"><span class="T2">- un </span><span class="T5">ADMIN</span><span class="T2">(istratif) a tous les droits (y-compris champs réservés à l'administration)</span></p><p class="P14"><span class="T2">- un </span><span class="T5">ADMINPLUS</span><span class="T2"> (administratif Plus) a tous les droits de ADMIN et en plus il peut modifier un matériel quelque soit son statut (y-compris TOBEARCHIVED et ARCHIVED), notamment il peut modifier le statut du matériel (pour le rétrograder)</span></p><p class="P14"><span class="T2">- un </span><span class="T5">SUPERADMIN</span><span class="T2"> a tous les droits : ceux d'ADMINPLUS et certains droits supplémentaires pour lui permettre des corrections d'erreur et la configuration de l'application (notamment l'administration des utilisateurs...)</span></p><p class="P15"> </p><p class="Standard"><span class="T2">Concernant les informations internes permettant de savoir </span><span class="T5">qui a fait quoi</span><span class="T2"> (mises en place en février 2014), elles ne sont bien sûr pas modifiables puisque gérées automatiquement par le système, mais sont visibles par tous excepté le profil USER.</span></p><p class="P1"/><p class="P7">B - sur la table MATERIEL</p><table border="0" cellspacing="0" cellpadding="0" class="Tableau2"><colgroup><col width="170"/><col width="170"/><col width="170"/><col width="170"/><col width="170"/><col width="170"/><col width="170"/></colgroup><tr><td style="text-align:left;width:3.893cm; " class="Tableau2_A1"><p class="Table_20_Contents"> </p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_A1"><p class="P41">ALL (TOUS)</p><p class="P43">(droits par defaut)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_A1"><p class="P40"><span class="T5">U</span><span class="T6">tilisateur </span><span class="T5"> </span><span class="T2">(quelconque)</span></p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_A1"><p class="P42">Responsable</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_A1"><p class="P42">Administration</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_A1"><p class="P42">Administration Plus</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_G1"><p class="P42">Super-Administrateur</p></td></tr><tr><td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Read (un seul ou une liste)</p><p class="P45">(view ou index)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P25">Y</p><p class="Table_20_Contents"><span class="T14">champs caches:</span><span class="T13"> donnees admin</span></p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P36">idem ALL</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P36">idem ALL</p></td><td rowspan="3" style="text-align:left;width:3.893cm; " class="Tableau2_E4"><p class="P23"><span class="T16">(idem Responsable </span><span class="T15">+  donnees admin</span><span class="T16">)</span></p><p class="P37"> </p><p class="P23"><span class="T13">En mode edit (update), si VALIDATED, on ajoute aux donnees </span><span class="T14">readonly</span><span class="T13"> les </span><span class="T14">donnees admin</span></p></td><td rowspan="2" style="text-align:left;width:3.893cm; " class="Tableau2_F3"><p class="P37">idem Admin</p></td><td rowspan="11" style="text-align:left;width:3.893cm; " class="Tableau2_G12"><p class="P37">idem Adminplus</p></td></tr><tr><td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Create (1)</p><p class="P45">(add)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">Y</p><p class="P39"><span class="T14">champs caches</span><span class="T13">:</span></p><p class="P34">donnees admin + statut + etiquette </p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P36">Idem ALL</p><p class="P39"><span class="T14">champs readonly </span><span class="T13">:</span></p><p class="P34">nom_responsable</p></td><td rowspan="2" style="text-align:left;width:3.893cm; " class="Tableau2_D4"><p class="P36">idem ALL</p><p class="P36">(+ etiquette)</p></td></tr><tr><td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Update (1)</p><p class="P45">(edit)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">Y</p><p class="P33">ssi</p><p class="P39"><span class="T15">CREATED</span><span class="T16"> (tous les champs) </span></p><p class="P39"><span class="T13">ou </span><span class="T14">VALIDATED</span><span class="T13"> (quelques champs visibles sont </span><span class="T14">readonly</span><span class="T13">) (1)</span></p><p class="P34"> </p><p class="P39"><span class="T14">champs caches</span><span class="T13">:</span></p><p class="P34">donnees admin + statut + etiquette</p></td><td rowspan="2" style="text-align:left;width:3.893cm; " class="Tableau2_C5"><p class="P36">idem ALL</p><p class="P22"><span class="T16">ssi </span><span class="T15">createur</span></p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P37">idem Admin</p><p class="P23"><span class="T16">(</span><span class="T15">tous les statuts</span><span class="T16">)</span></p><p class="P23"><span class="T16">(+ champ </span><span class="T15">statut</span><span class="T16">)</span></p><p class="P23"> </p><p class="P23"><span class="T16">TOBEARCHIVED ou ARCHIVED: </span><span class="T15">seulement le statut</span></p></td></tr><tr><td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Delete</p><p class="P45">(delete)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">Y</p><p class="P29">ssi CREATED</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P37">idem ALL</p></td><td rowspan="3" style="text-align:left;width:3.893cm; " class="Tableau2_E7"><p class="P37">idem Responsable</p></td><td rowspan="4" style="text-align:left;width:3.893cm; " class="Tableau2_F8"><p class="P37">idem Admin</p></td></tr><tr><td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Valider</p><p class="P45">(statusValidated)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P25">N</p><p class="P28">(resp+)</p></td><td rowspan="7" style="text-align:left;width:3.893cm; " class="Tableau2_C12"><p class="P36">idem ALL</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P37">Y</p><p class="P30">ssi</p><p class="P30">CREATED</p><p class="P37"> </p></td></tr><tr><td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Demander archivage</p><p class="P45">(statusToBeArchived)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P25">N</p><p class="P28">(resp+)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P37">Y</p><p class="P30">ssi</p><p class="P30">VALIDATED</p></td></tr><tr><td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Sortir de l'inventaire</p><p class="P45"><span class="T12"> </span>(statusArchived)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">N</p><p class="P29">(admin+)</p></td><td rowspan="2" style="text-align:left;width:3.893cm; " class="Tableau2_D9"><p class="P37">idem ALL</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P35">Y</p><p class="P28">ssi</p><p class="P28">TOBEARCHIVED</p></td></tr><tr><td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Desarchiver (2)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">N</p><p class="P29">(adminplus+)</p></td><td rowspan="2" style="text-align:left;width:3.893cm; " class="Tableau2_E10"><p class="P37">idem Responsable</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P37">Y</p><p class="P30">ssi</p><p class="P30">ARCHIVED ou</p><p class="P30">TOBEARCHIVED</p></td></tr><tr><td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Exporter</p><p class="P45">(csv)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">N</p><p class="P29">(resp+)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P37">Y</p></td><td rowspan="3" style="text-align:left;width:3.893cm; " class="Tableau2_F12"><p class="P37">idem Admin</p></td></tr><tr><td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Montee de statut group<span class="T24">é</span>e</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">N</p><p class="P29">(admin+)</p></td><td rowspan="2" style="text-align:left;width:3.893cm; " class="Tableau2_D12"><p class="P37">idem ALL</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P38">Y</p></td></tr><tr><td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Edition (4)</p><p class="P44">DOCUMENTS</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E12"><p class="P26">N</p><p class="P29">(admin+)</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E12"><p class="P37">Y</p><p class="P31">- admission : ssi VALIDATED</p><p class="P31">- sortie : ssi TOBEARCHIVED ou ARCHIVED</p></td></tr><tr class="Tableau213"><td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P68">Fiche Matériel </p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E13"><p class="P62">Y <span class="T25">(sans partie admin)</span></p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_C13"><p class="P49">Y <span class="T25">(sans partie admin)</span></p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_D13"><p class="P49">Y <span class="T25">(sans partie admin)</span></p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_E13"><p class="P62">Y</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_F13"><p class="P49">Y</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_G13"><p class="P49">Y <span class="T25">(sans partie admin)</span></p></td></tr></table><p class="P7"> </p><p class="P7"> </p><p class="P6"> </p><p class="P10">Par défaut, le superadmin a TOUS les droits</p><p class="P10"> </p><p class="Standard"><span class="T15">Conventions d'écriture </span><span class="T16">: </span></p><p class="P14"><span class="T16">- r</span><span class="T15">esp+</span><span class="T16"> = possible pour un </span><span class="T15">Responsable et plus </span><span class="T16">(responsable, admin, adminplus, et superadmin)</span></p><p class="P14"><span class="T16">- </span><span class="T15">admin+</span><span class="T16"> = possible pour un </span><span class="T15">Admin</span><span class="T16"> </span><span class="T15">et plus </span><span class="T16">(admin, adminplus, et superadmin)</span></p><p class="P16">- ...</p><p class="P16"> </p><p class="Standard"><span class="T15">Notes </span><span class="T16">:</span></p><p class="P9"> </p><ol><li><p class="P47" style="margin-left:0cm;"><span class="WW8Num8z0" style="display:block;float:left;min-width:0,635cm;">(1)</span><span class="T15">Droits en modification (edit) </span><span class="T16">:</span><span class="odfLiEnd"></span> </p></li></ol><p class="P16">- Un simple « user » ne doit pas pouvoir modifier le responsable, ni le statut, ni l'étiquette, ni les données admin d'un matériel (en mode Création comme Modification)</p><p class="P16">- Un  «responsable » ne doit pas pouvoir modifier le statut, ni les données admin d'un matériel (en mode Création comme Modification)</p><p class="P16">- Les données admin ne sont accessibles qu'aux profils admin+</p><p class="P14"><span class="T16">- Le champ "</span><span class="T15">status</span><span class="T16">" n'est modifiable que par les profils adminplus+</span></p><p class="P14"><span class="T16">- Tout le monde peut modifier un matériel </span><span class="T15">VALIDATED </span><span class="T16">(</span><span class="T15">user </span><span class="T16">ne peut modifier que </span><span class="T15">ses</span><span class="T16"> matériels, </span><span class="T17">resp ne peut modifier que les matériels de son groupe thématique ou métier</span><span class="T16">),</span></p><p class="P14"><span class="T16">MAIS PAS</span><span class="T15"> certains champs</span><span class="T16"> qui sont </span><span class="T15">readonly</span><span class="T16"> (</span><span class="T18">sur_categorie_id', 'categorie_id', 'materiel_administratif', 'materiel_technique', 'date_acquisition', 'nom_responsable', 'fournisseur', 'organisme', 'prix_ht')</span></p><p class="P14"><span class="T16">Les seuls champs qu'on peut éditer sont donc : (</span><span class="T18">designation, sous_categorie, materiel_administratif, materiel_technique, description, etiquette, lieu_stockage, lieu_detail, numero_serie, groupes_thematique, groupes_metier),</span><span class="T16"><br/>- Seuls les profils </span><span class="T15">adminplus+</span><span class="T16"> peuvent modifier un matériel </span><span class="T15">TOBEARCHIVED, ou ARCHIVED </span><span class="T16">mais </span><span class="T15">UNIQUEMENT le champ "status" </span><span class="T16">(pour pouvoir rétrograder à CREATED ou VALIDATED)</span></p><p class="P14"><span class="T16">- Le seul moyen de modifier COMPLÈTEMENT un matériel VALIDATED, TOBEARCHIVED, ou ARCHIVED, <br/>c'est de </span><span class="T15">changer son statut</span><span class="T16">, en le rétrogradant à CREATED (seuls les profils adminplus+ peuvent le faire)</span></p><p class="P16"> </p><ol><li><p class="P47" style="margin-left:0cm;"><span class="WW8Num8z0" style="display:block;float:left;min-width:0,635cm;">(2)</span><span class="T15">Désarchiver </span><span class="T16">: consiste à rétrograder un matériel ARCHIVED ou TOBEARCHIVED dans le statut VALIDATED ou CREATED (adminplus+ only) ; utile en cas d'erreur</span><span class="odfLiEnd"></span> </p></li></ol><p class="P8"> </p><ol><li><p class="P47" style="margin-left:0cm;"><span class="WW8Num8z0" style="display:block;float:left;min-width:0,635cm;">(3)</span><span class="T15">Montée de statut groupée : </span><span class="T16">seul ADMIN peut (exporter tout ou partie de la liste des matériels, et) </span><span class="T15">augmenter (+1) le statut d'un groupe de matériels</span><span class="T16">, depuis la vue « index » (vue spéciale pour ADMIN, avec des cases à cocher et boutons pour exporter ou faire évoluer le statut)</span><span class="odfLiEnd"></span> </p></li></ol><p class="P8"> </p><ol><li><p class="P48" style="margin-left:0cm;"><span class="WW8Num8z0" style="display:block;float:left;min-width:0,635cm;">(4)</span>Edition des documents :<span class="odfLiEnd"/> </p></li></ol><p class="P16">Admission : quand on "VALIDE" un matériel "CREATED", le statut passe en VALIDATED et le document d'admission est automatiquement édité</p><p class="P16">Sortie : quand on "ARCHIVE" un document "TOBEARCHIVED", le statut passe en ARCHIVED et le document de sortie est automatiquement édité</p><p class="P16">De plus :</p><p class="P16">- Bouton "Doc admission" affiché à partir du statut "VALIDATED"</p><p class="P16">- Bouton "Doc Sortie" affiché à partir du statut TOBEARCHIVED (et donc aussi pour ARCHIVED)</p><p class="P16">Enfin, Le doc de sortie doit être couplée avec la liste des matériels a archiver (TOBEARCHIVED) quand il y a une demande de sortie.</p><p class="P16"> </p><p class="P17"> </p><p class="P1">C - sur les différentes VUES liées au matériel</p><p class="Standard"> </p><p class="P6"><span class="T4">Page accueil </span>:</p><p class="P6"><span> Administration <span class="T20">&amp; Administration Plus </span>voit un menu avec 2 options :</span></p><ul><li><ul><li><ul><li><p class="P51" style="margin-left:0cm;"><span class="WW8Num2z0" style="display:block;float:left;min-width:0,635cm;">.</span>« Voir les matériels à valider »<span class="odfLiEnd"/> </p></li><li><p class="P52" style="margin-left:0cm;"><span class="WW8Num2z0" style="display:block;float:left;min-width:0,635cm;">.</span>« Voir les matériels à sortir de l'inventaire »<span class="odfLiEnd"/> </p></li></ul></li></ul><p class="P52" style="margin-left:0cm;"><span class="WW8Num2z0" style="display:block;float:left;min-width:0cm"><!-- --></span><span class="T21">Responsable </span>voit un menu avec <span class="T21">3</span> options :<span class="odfLiEnd"/> </p><ul><li><ul><li><p class="P52" style="margin-left:0cm;"><span class="WW8Num2z0" style="display:block;float:left;min-width:0,635cm;">.</span>« Voir les matériels <span class="T21">de mon groupe métier</span> »<span class="odfLiEnd"/> </p></li><li><p class="P52" style="margin-left:0cm;"><span class="WW8Num2z0" style="display:block;float:left;min-width:0,635cm;">.</span>« Voir les matériels <span class="T21">de mon groupe métier à valider</span> »<span class="odfLiEnd"/> </p></li><li><p class="P52" style="margin-left:0cm;"><span class="WW8Num2z0" style="display:block;float:left;min-width:0,635cm;">.</span>« <span class="T21">Voir les suivis des matériels donc je suis responsable »</span><span class="odfLiEnd"/> </p></li></ul></li></ul></li></ul><p class="P1">Page Outils :</p><p class="P6">User n'a pas accès à cette page</p><p class="P6">Les autres ont quelques options</p><p class="P6">superadmin a ces options en plus :</p><ul><li><p class="P53" style="margin-left:0cm;"><span class="WW8Num4z0" style="display:block;float:left;min-width:0,635cm;">.</span>Configuration générale de l'application<span class="odfLiEnd"></span> </p></li><li><p class="P53" style="margin-left:0cm;"><span class="WW8Num4z0" style="display:block;float:left;min-width:0,635cm;">.</span>Gérer les utilisateurs <span class="T20">privilégiés</span><span class="odfLiEnd"/> </p></li><li><p class="P53" style="margin-left:0cm;"><span class="WW8Num4z0" style="display:block;float:left;min-width:0,635cm;">.</span>Passer en mode debug<span class="odfLiEnd"/> </p></li><li><p class="P54" style="margin-left:0cm;"><span class="WW8Num4z0" style="display:block;float:left;min-width:0,635cm;">.</span>Passer en mode install<span class="odfLiEnd"/> </p></li></ul><p class="P6"> </p><p class="Standard"><span class="T5">Vue materiel/index (liste) </span><span class="T2">: limiter aux </span><span class="T5">matériels actifs</span><span class="T2"> (non archivés)</span></p><ul><li><ul><li><p class="P55" style="margin-left:0cm;"><span class="WW8Num1z0" style="display:block;float:left;min-width:0,635cm;">.</span>Admin<span class="T20">+ </span>voit des boutons pour filtrer par « tous », « à valider », « validés », « à sortir », « archivés »<span class="odfLiEnd"/> </p></li></ul></li></ul><p class="P6"> </p><p class="Standard"><span class="T5">Vue materiel/find </span><span class="T2">: limiter aux </span><span class="T5">matériels actifs</span><span class="T2"> (non archivés)</span></p><p class="P6"><span> Seul le<span class="T20">s</span> profil<span class="T20">s</span> Admin<span class="T20">+ </span>voit TOUS les matériels (y-compris archivés)</span></p><p class="P6"> </p><p class="P6"><span class="T4">Vue materiel/view </span>:</p><p class="P6"><span> boutons « Imprimer Etiquettes » : <span class="T20">resp+</span></span></p><p class="P6"> </p><p class="P6"><span class="T4">Vue materiel/edit </span>:</p><ul><li><p class="P56" style="margin-left:0cm;"><span class="WW8Num5z0" style="display:block;float:left;min-width:0,635cm;">.</span>Etiquette O/N (admin<span class="T20">+)</span><span class="odfLiEnd"/> </p></li><li><p class="P56" style="margin-left:0cm;"><span class="WW8Num5z0" style="display:block;float:left;min-width:0,635cm;">.</span>Statut (<span class="T20">superadmin+)</span><span class="odfLiEnd"/> </p></li><li><p class="P56" style="margin-left:0cm;"><span class="WW8Num5z0" style="display:block;float:left;min-width:0,635cm;">.</span>Informations administratives (admin<span class="T20">+)</span><span class="odfLiEnd"/> </p></li></ul><p class="P6"> </p><p class="P6"> </p><p class="P1"> </p><p class="P19">D - sur un SUIVI et un EMPRUNT</p><p class="P1"> </p><ul><li><p class="P57" style="margin-left:0cm;"><span class="WW8Num3z0" style="display:block;float:left;min-width:0,635cm;">.</span>Dans tous les cas, on ne doit pas pouvoir emprunter ou suivre un materiel non validé (CREATED)<span class="odfLiEnd"/> </p></li><li><p class="P57" style="margin-left:0cm;"><span class="WW8Num3z0" style="display:block;float:left;min-width:0,635cm;">.</span>User a les droits C, R, U (si créateur), D (si créateur)<span class="odfLiEnd"/> </p></li><li><p class="P57" style="margin-left:0cm;"><span class="WW8Num3z0" style="display:block;float:left;min-width:0,635cm;">.</span>Resp+ a les droits C, R, U, D<span class="odfLiEnd"/> </p></li></ul><p class="P4"><span class="T9">Un USER peut modifier/supprimer un emprunt dont il est soit le créateur soit l'emprunteur</span><span class="T19">.</span></p><p class="P12">Un USER qui créé un emprunt ne doit pas pouvoir changer le nom de l'emprunteur (par défaut, c'est lui). Ainsi, il pourra modifier/supprimer cette fiche au besoin plus tard. Par défaut donc, pour un user, emprunt.emprunteur=creator, materiel.responsable=creator</p><p class="P13">Tout le monde peut rechercher un suivi,</p><p class="P5"> </p><p class="P5"> </p><p class="P3">E - sur les UTILISATEURS</p><p class="P4"><span class="T9">Par défaut, superadmin a tous les droits, et les autres profils n'ont que le droit de lecture (</span><span class="T7">view </span><span class="T9">et </span><span class="T7">index</span><span class="T9">)</span></p><p class="P5"> </p><p class="P5"> </p><p class="P3">F - sur tous les autres objets métiers</p><p class="P5">Voici la liste des autres objets métiers :</p><ul><li><p class="P58" style="margin-left:0cm;"><span class="WW8Num7z0" style="display:block;float:left;min-width:0,635cm;">.</span>Catégories (et domaines et sous-catégories)<span class="odfLiEnd"/> </p></li></ul><ul><li><p class="P59" style="margin-left:0cm;"><span class="WW8Num6z0" style="display:block;float:left;min-width:0,635cm;">.</span>Groupes thématiques<span class="odfLiEnd"/> </p></li><li><p class="P59" style="margin-left:0cm;"><span class="WW8Num6z0" style="display:block;float:left;min-width:0,635cm;">.</span>Groupes métiers<span class="odfLiEnd"/> </p></li></ul><p class="P4"><span class="T9">Par défaut, pour tous ces objets, superadmin a tous les droits, admin</span><span class="T10">plus</span><span class="T9"> a tous les droits sauf « delete », et les autres profils n'ont que le droit de lecture (</span><span class="T7">view </span><span class="T9">et </span><span class="T7">index</span><span class="T9">)</span></p>
118   -
119   - <div class="actions">
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
  2 +<html xmlns="http://www.w3.org/1999/xhtml"> <!--This file was converted to xhtml by LibreOffice - see http://cgit.freedesktop.org/libreoffice/core/tree/filter/source/xslt for the code.-->
  3 + <head profile="http://dublincore.org/documents/dcmi-terms/">
  4 + <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
  5 + <title xml:lang="en-US">- no title specified</title>
  6 + <meta name="DCTERMS.title" content="" xml:lang="en-US"/>
  7 + <meta name="DCTERMS.language" content="en-US" scheme="DCTERMS.RFC4646"/>
  8 + <meta name="DCTERMS.source" content="http://xml.openoffice.org/odf2xhtml"/>
  9 + <meta name="DCTERMS.creator" content="Etienne Pallier"/>
  10 + <meta name="DCTERMS.issued" content="2014-01-21T19:49:00" scheme="DCTERMS.W3CDTF"/>
  11 + <meta name="DCTERMS.modified" content="2016-06-24T15:39:15.489669761" scheme="DCTERMS.W3CDTF"/>
  12 + <meta name="DCTERMS.provenance" content="" xml:lang="en-US"/>
  13 + <meta name="DCTERMS.subject" content="," xml:lang="en-US"/>
  14 + <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" hreflang="en"/>
  15 + <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" hreflang="en"/>
  16 + <link rel="schema.DCTYPE" href="http://purl.org/dc/dcmitype/" hreflang="en"/>
  17 + <link rel="schema.DCAM" href="http://purl.org/dc/dcam/" hreflang="en"/>
  18 + <style type="text/css">
  19 + @page { }
  20 + table { border-collapse:collapse; border-spacing:0; empty-cells:show }
  21 + td, th { vertical-align:top; font-size:12pt;}
  22 + h1, h2, h3, h4, h5, h6 { clear:both }
  23 + ol, ul { margin:0; padding:0;}
  24 + li { list-style: none; margin:0; padding:0;}
  25 + <!-- "li span.odfLiEnd" - IE 7 issue -->
  26 + li span. { clear: both; line-height:0; width:0; height:0; margin:0; padding:0; }
  27 + span.footnodeNumber { padding-right:1em; }
  28 + span.annotation_style_by_filter { font-size:95%; font-family:Arial; background-color:#fff000; margin:0; border:0; padding:0; }
  29 + * { margin:0;}
  30 + .P1 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; font-weight:bold; }
  31 + .P10 { font-size:10pt; font-family:Times New Roman; writing-mode:lr-tb; font-style:italic; font-weight:bold; }
  32 + .P11 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-style:italic; }
  33 + .P12 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  34 + .P13 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  35 + .P14 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; margin-left:1.251cm; margin-right:0cm; text-indent:0cm; }
  36 + .P15 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; margin-left:1.251cm; margin-right:0cm; text-indent:0cm; }
  37 + .P16 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; margin-left:1.251cm; margin-right:0cm; text-indent:0cm; }
  38 + .P17 { font-size:12pt; font-family:Times; writing-mode:lr-tb; margin-left:1.251cm; margin-right:0cm; text-indent:0cm; }
  39 + .P18 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; margin-left:1.251cm; margin-right:0cm; text-indent:0cm; }
  40 + .P19 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; font-weight:bold; }
  41 + .P2 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; font-weight:bold; }
  42 + .P22 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
  43 + .P23 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
  44 + .P25 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
  45 + .P26 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
  46 + .P28 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-style:italic; font-weight:bold; }
  47 + .P29 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-style:italic; font-weight:bold; }
  48 + .P3 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; font-weight:bold; }
  49 + .P30 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-style:italic; font-weight:bold; }
  50 + .P31 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; font-style:italic; font-weight:bold; }
  51 + .P33 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-style:italic; }
  52 + .P34 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; font-style:italic; }
  53 + .P35 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
  54 + .P36 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
  55 + .P37 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
  56 + .P38 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
  57 + .P39 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  58 + .P4 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  59 + .P40 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; }
  60 + .P41 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-style:italic; font-weight:bold; }
  61 + .P42 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
  62 + .P43 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:normal; }
  63 + .P44 { font-size:11pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
  64 + .P45 { font-size:11pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:normal; }
  65 + .P46 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
  66 + .P47 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  67 + .P48 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; font-weight:bold; }
  68 + .P49 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
  69 + .P5 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  70 + .P51 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  71 + .P52 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  72 + .P53 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  73 + .P54 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  74 + .P55 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  75 + .P56 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  76 + .P57 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  77 + .P58 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  78 + .P59 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  79 + .P6 { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  80 + .P62 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
  81 + .P68 { font-size:11pt; font-family:Times New Roman; writing-mode:lr-tb; text-align:center ! important; font-weight:bold; }
  82 + .P7 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; font-weight:bold; }
  83 + .P8 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; }
  84 + .P9 { font-size:9pt; font-family:Times New Roman; writing-mode:lr-tb; }
  85 + .Standard { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  86 + .Table_20_Contents { font-size:12pt; font-family:Times New Roman; writing-mode:lr-tb; }
  87 + .Tableau2 { width:27.25cm; float:none; writing-mode:lr-tb; }
  88 + .Tableau2_A1 { background-color:#cccccc; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  89 + .Tableau2_A2 { background-color:#dddddd; padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  90 + .Tableau2_C12 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  91 + .Tableau2_C13 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  92 + .Tableau2_C5 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  93 + .Tableau2_D12 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  94 + .Tableau2_D13 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  95 + .Tableau2_D4 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  96 + .Tableau2_D9 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  97 + .Tableau2_E10 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  98 + .Tableau2_E11 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  99 + .Tableau2_E12 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  100 + .Tableau2_E13 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  101 + .Tableau2_E4 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  102 + .Tableau2_E7 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  103 + .Tableau2_F12 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  104 + .Tableau2_F13 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  105 + .Tableau2_F3 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  106 + .Tableau2_F8 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  107 + .Tableau2_G1 { background-color:#cccccc; padding:0.097cm; border-width:thin; border-style:solid; border-color:#000000; }
  108 + .Tableau2_G12 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  109 + .Tableau2_G13 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
  110 + .Tableau2_A { width:3.893cm; }
  111 + .Tableau2_G { width:3.893cm; }
  112 + .T1 { font-style:italic; font-weight:bold; }
  113 + .T13 { font-size:9pt; font-style:italic; }
  114 + .T14 { font-size:9pt; font-style:italic; font-weight:bold; }
  115 + .T15 { font-size:9pt; font-weight:bold; }
  116 + .T16 { font-size:9pt; }
  117 + .T17 { font-size:9pt; }
  118 + .T18 { font-size:9pt; }
  119 + .T25 { font-weight:normal; }
  120 + .T4 { font-weight:bold; }
  121 + .T5 { font-weight:bold; }
  122 + .T6 { font-weight:bold; }
  123 + .T7 { font-weight:bold; }
  124 + .WW8Num1z0 { font-family:Symbol; }
  125 + .WW8Num2z0 { font-family:Symbol; }
  126 + .WW8Num3z0 { font-family:Symbol; }
  127 + .WW8Num4z0 { font-family:Symbol; }
  128 + .WW8Num5z0 { font-family:Symbol; }
  129 + .WW8Num6z0 { font-family:Symbol; font-size:12pt; }
  130 + .WW8Num7z0 { font-family:Symbol; }
  131 + .WW8Num8z0 { font-family:Symbol; font-size:9pt; font-weight:normal; }
  132 + <!-- ODF styles with no properties representable as CSS -->
  133 + .Tableau2.13 .T10 .T11 .T12 .T19 .T2 .T20 .T21 .T22 .T23 .T24 .T3 .T8 .T9 .WW8Num8z1 .WW8Num8z2 .WW8Num8z3 .WW8Num8z4 .WW8Num8z5 .WW8Num8z6 .WW8Num8z7 .WW8Num8z8 .WW8Num9z0 .WW8Num9z1 .WW8Num9z2 .WW8Num9z3 .WW8Num9z4 .WW8Num9z5 .WW8Num9z6 .WW8Num9z7 .WW8Num9z8 { }
  134 + </style>
  135 + </head>
  136 + <body dir="ltr">
  137 + <!-- style="max-width:29.7cm;margin-top:1cm; margin-bottom:1cm; margin-left:1cm; margin-right:1.45cm; writing-mode:lr-tb; " -->
  138 + <!-- Cette propiété fait TOTALEMENT bugguer le design du site -->
  139 + <div class="index">
  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>
  142 + <p class="P1"> </p>
  143 + <p class="P1"> </p>
  144 + <p class="P1"> </p>
  145 + <p class="P1">I – Cycle de vie du statut du matériel</p>
  146 + <p class="P1"> </p>
  147 + <p class="Standard"><span class="T5">Créer</span><span class="T2"> un matériel ==</span><span class="T9">&gt; passe alors en statut </span><span class="T7">CREATED ==&gt; </span><span class="T1">peut alors être éventuellement supprimé (mais ne pourra plus être supprimé ensuite)</span></p><p class="Standard"><span class="T7">Valider</span><span class="T9"> un matériel CREATED ==&gt; passe alors en statut </span><span class="T7">VALIDATED </span><span class="T9">(</span><span class="T11">resp et </span><span class="T9">admin only)</span></p>
  148 + <p class="P4"><span class="T7">Demander l'Archivage</span><span class="T9"> d'un materiel VALIDATED ==&gt; passe alors en statut </span><span class="T7">TOBEARCHIVED</span><span class="T9"> (resp et admin only)</span></p>
  149 + <p class="P4"><span class="T7">Sortir</span><span class="T9"> de l'inventaire (Valider une demande d'archivage d'un matériel TOBEARCHIVED) ==&gt; statut </span><span class="T7">ARCHIVED</span><span class="T9"> (admin only)</span></p>
  150 + <p class="P4"><span class="T7">Désarchiver</span><span class="T9"> un matériel ==&gt; repasse de TOBEARCHIVED ou ARCHIVED à </span><span class="T7">VALIDATED</span><span class="T9"> (admin only) </span></p>
  151 + <p class="P4"> </p>
  152 + <p class="P5">En résumé : </p>
  153 + <p class="P4"> </p>
  154 + <p class="P3">CREATED ==&gt;  VALIDATED ==&gt;  TOBEARCHIVED ==&gt;  ARCHIVED</p>
  155 + <p class="P2"><span class="T12">     </span><span class="T8">I                        /\                        I                                I</span></p>
  156 + <p class="P2"><span class="T12">    </span><span class="T8">V                                    I ------------------------        I ---------------------------------        I (adminplus only)</span></p>
  157 + <p class="P3">DELETED</p>
  158 + <p class="P2"> </p>
  159 + <p class="P2"> </p>
  160 + <p class="P2"> </p>
  161 + <p class="P1">II - Droits des utilisateurs selon leur profil</p>
  162 + <p class="P1"> </p>
  163 + <p class="P1">A – Globalement (principes généraux)</p>
  164 +
  165 + <p class="P1"> </p>
  166 + <p class="P6">Un utilisateur non logué ne doit RIEN pouvoir faire. Seulement se loguer, c'est tout. Il n'a accès qu'à la page d'accueil (de login).</p>
  167 + <p class="P6">Une fois logué, un utilisateur a des droits différents selon son profil, globalement :</p>
  168 + <p class="P14"><span class="T2">- un </span><span class="T5">USER</span><span class="T2"> ne peut que créer un matériel, un suivi, ou un emprunt, consulter, et modifier (uniquement ce qu'il a créé lui-même)</span></p>
  169 + <p class="P18"><span class="T2">- un </span><span class="T5">RESPONSABLE</span><span class="T2"> a tous les droits sauf accès à certains champs et certaines vues réservées à l'administration (ADMIN). Il ne peut pas non plus archiver un matériel, mais seulement demander l'archivage (comme un USER)(uniquement ce </span><span class="T3">lié à son groupe métier ou thématiques</span><span class="T2">)</span></p>
  170 + <p class="P14"><span class="T2">- un </span><span class="T5">ADMIN</span><span class="T2">(istratif) a tous les droits (y-compris champs réservés à l'administration)</span></p>
  171 + <p class="P14"><span class="T2">- un </span><span class="T5">ADMINPLUS</span><span class="T2"> (administratif Plus) a tous les droits de ADMIN et en plus il peut modifier un matériel quelque soit son statut (y-compris TOBEARCHIVED et ARCHIVED), notamment il peut modifier le statut du matériel (pour le rétrograder)</span></p>
  172 + <p class="P14"><span class="T2">- un </span><span class="T5">SUPERADMIN</span><span class="T2"> a tous les droits : ceux d'ADMINPLUS et certains droits supplémentaires pour lui permettre des corrections d'erreur et la configuration de l'application (notamment l'administration des utilisateurs...)</span></p>
  173 + <p class="P15"> </p>
  174 + <p class="Standard"><span class="T2">Concernant les informations internes permettant de savoir </span><span class="T5">qui a fait quoi</span><span class="T2"> (mises en place en février 2014), elles ne sont bien sûr pas modifiables puisque gérées automatiquement par le système, mais sont visibles par tous excepté le profil USER.</span></p>
  175 + <p class="P1"> </p>
  176 + <p class="P7">B - sur la table MATERIEL</p>
  177 + <table border="0" cellspacing="0" cellpadding="0" class="Tableau2"><colgroup><col width="170"/><col width="170"/><col width="170"/><col width="170"/><col width="170"/><col width="170"/><col width="170"/></colgroup>
  178 + <tr>
  179 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A1"><p class="Table_20_Contents"> </p></td>
  180 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A1"><p class="P41">ALL (TOUS)</p><p class="P43">(droits par defaut)</p></td>
  181 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A1"><p class="P40"><span class="T5">U</span><span class="T6">tilisateur </span><span class="T5"> </span><span class="T2">(quelconque)</span></p></td>
  182 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A1"><p class="P42">Responsable</p></td>
  183 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A1"><p class="P42">Administration</p></td>
  184 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A1"><p class="P42">Administration Plus</p></td>
  185 + <td style="text-align:left;width:3.893cm; " class="Tableau2_G1"><p class="P42">Super-Administrateur</p></td>
  186 + </tr>
  187 + <tr>
  188 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Read (un seul ou une liste)</p><p class="P45">(view ou index)</p></td>
  189 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P25">Y</p><p class="Table_20_Contents"><span class="T14">champs caches:</span><span class="T13"> donnees admin</span></p></td>
  190 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P36">idem ALL</p></td>
  191 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P36">idem ALL</p></td>
  192 + <td rowspan="3" style="text-align:left;width:3.893cm; " class="Tableau2_E4"><p class="P23"><span class="T16">(idem Responsable </span><span class="T15">+  donnees admin</span><span class="T16">)</span></p><p class="P37"> </p><p class="P23"><span class="T13">En mode edit (update), si VALIDATED, on ajoute aux donnees </span><span class="T14">readonly</span><span class="T13"> les </span><span class="T14">donnees admin</span></p></td>
  193 + <td rowspan="2" style="text-align:left;width:3.893cm; " class="Tableau2_F3"><p class="P37">idem Admin</p></td>
  194 + <td rowspan="11" style="text-align:left;width:3.893cm; " class="Tableau2_G12"><p class="P37">idem Adminplus</p></td>
  195 + </tr>
  196 + <tr>
  197 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Create (1)</p><p class="P45">(add)</p></td>
  198 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">Y</p><p class="P39"><span class="T14">champs caches</span><span class="T13">:</span></p><p class="P34">donnees admin + statut + etiquette </p></td>
  199 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P36">Idem ALL</p><p class="P39"><span class="T14">champs readonly </span><span class="T13">:</span></p><p class="P34">nom_responsable</p></td>
  200 + <td rowspan="2" style="text-align:left;width:3.893cm; " class="Tableau2_D4"><p class="P36">idem ALL</p><p class="P36">(+ etiquette)</p></td>
  201 + </tr>
  202 + <tr>
  203 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Update (1)</p><p class="P45">(edit)</p></td>
  204 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">Y</p><p class="P33">ssi</p><p class="P39"><span class="T15">CREATED</span><span class="T16"> (tous les champs) </span></p><p class="P39"><span class="T13">ou </span><span class="T14">VALIDATED</span><span class="T13"> (quelques champs visibles sont </span><span class="T14">readonly</span><span class="T13">) (1)</span></p><p class="P34"> </p><p class="P39"><span class="T14">champs caches</span><span class="T13">:</span></p><p class="P34">donnees admin + statut + etiquette</p></td>
  205 + <td rowspan="2" style="text-align:left;width:3.893cm; " class="Tableau2_C5"><p class="P36">idem ALL</p><p class="P22"><span class="T16">ssi </span><span class="T15">createur</span></p></td>
  206 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P37">idem Admin</p><p class="P23"><span class="T16">(</span><span class="T15">tous les statuts</span><span class="T16">)</span></p><p class="P23"><span class="T16">(+ champ </span><span class="T15">statut</span><span class="T16">)</span></p><p class="P23"> </p><p class="P23"><span class="T16">TOBEARCHIVED ou ARCHIVED: </span><span class="T15">seulement le statut</span></p></td>
  207 + </tr>
  208 + <tr>
  209 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Delete</p><p class="P45">(delete)</p></td>
  210 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">Y</p><p class="P29">ssi CREATED</p></td>
  211 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P37">idem ALL</p></td><td rowspan="3" style="text-align:left;width:3.893cm; " class="Tableau2_E7"><p class="P37">idem Responsable</p></td>
  212 + <td rowspan="4" style="text-align:left;width:3.893cm; " class="Tableau2_F8"><p class="P37">idem Admin</p></td>
  213 + </tr>
  214 + <tr>
  215 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Valider</p><p class="P45">(statusValidated)</p></td>
  216 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P25">N</p><p class="P28">(resp+)</p></td>
  217 + <td rowspan="7" style="text-align:left;width:3.893cm; " class="Tableau2_C12"><p class="P36">idem ALL</p></td>
  218 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P37">Y</p><p class="P30">ssi</p><p class="P30">CREATED</p><p class="P37"> </p></td>
  219 + </tr>
  220 + <tr>
  221 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Demander archivage</p><p class="P45">(statusToBeArchived)</p></td>
  222 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P25">N</p><p class="P28">(resp+)</p></td>
  223 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P37">Y</p><p class="P30">ssi</p><p class="P30">VALIDATED</p></td>
  224 + </tr>
  225 + <tr>
  226 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Sortir de l'inventaire</p><p class="P45"><span class="T12"> </span>(statusArchived)</p></td>
  227 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">N</p><p class="P29">(admin+)</p></td>
  228 + <td rowspan="2" style="text-align:left;width:3.893cm; " class="Tableau2_D9"><p class="P37">idem ALL</p></td>
  229 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P35">Y</p><p class="P28">ssi</p><p class="P28">TOBEARCHIVED</p></td>
  230 + </tr>
  231 + <tr>
  232 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Desarchiver (2)</p></td>
  233 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">N</p><p class="P29">(adminplus+)</p></td>
  234 + <td rowspan="2" style="text-align:left;width:3.893cm; " class="Tableau2_E10"><p class="P37">idem Responsable</p></td>
  235 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P37">Y</p><p class="P30">ssi</p><p class="P30">ARCHIVED ou</p><p class="P30">TOBEARCHIVED</p></td>
  236 + </tr>
  237 + <tr>
  238 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Exporter</p><p class="P45">(csv)</p></td>
  239 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">N</p><p class="P29">(resp+)</p></td>
  240 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P37">Y</p></td>
  241 + <td rowspan="3" style="text-align:left;width:3.893cm; " class="Tableau2_F12"><p class="P37">idem Admin</p></td>
  242 + </tr>
  243 + <tr>
  244 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Montee de statut group<span class="T24">é</span>e</p></td>
  245 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P26">N</p><p class="P29">(admin+)</p></td>
  246 + <td rowspan="2" style="text-align:left;width:3.893cm; " class="Tableau2_D12"><p class="P37">idem ALL</p></td>
  247 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E11"><p class="P38">Y</p></td>
  248 + </tr>
  249 + <tr>
  250 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P44">Edition (4)</p><p class="P44">DOCUMENTS</p></td>
  251 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E12"><p class="P26">N</p><p class="P29">(admin+)</p></td>
  252 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E12"><p class="P37">Y</p><p class="P31">- admission : ssi VALIDATED</p><p class="P31">- sortie : ssi TOBEARCHIVED ou ARCHIVED</p></td>
  253 + </tr>
  254 + <tr class="Tableau213">
  255 + <td style="text-align:left;width:3.893cm; " class="Tableau2_A2"><p class="P68">Fiche Matériel </p></td>
  256 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E13"><p class="P62">Y <span class="T25">(sans partie admin)</span></p></td>
  257 + <td style="text-align:left;width:3.893cm; " class="Tableau2_C13"><p class="P49">Y <span class="T25">(sans partie admin)</span></p></td>
  258 + <td style="text-align:left;width:3.893cm; " class="Tableau2_D13"><p class="P49">Y <span class="T25">(sans partie admin)</span></p></td>
  259 + <td style="text-align:left;width:3.893cm; " class="Tableau2_E13"><p class="P62">Y</p></td><td style="text-align:left;width:3.893cm; " class="Tableau2_F13"><p class="P49">Y</p></td>
  260 + <td style="text-align:left;width:3.893cm; " class="Tableau2_G13"><p class="P49">Y <span class="T25">(sans partie admin)</span></p></td>
  261 + </tr>
  262 + </table>
  263 + <p class="P7"> </p>
  264 + <p class="P7"> </p>
  265 + <p class="P6"> </p>
  266 + <p class="P10">Par défaut, le superadmin a TOUS les droits</p>
  267 + <p class="P10"> </p>
  268 + <p class="Standard"><span class="T15">Conventions d'écriture </span><span class="T16">: </span></p>
  269 + <p class="P14"><span class="T16">- r</span><span class="T15">esp+</span><span class="T16"> = possible pour un </span><span class="T15">Responsable et plus </span><span class="T16">(responsable, admin, adminplus, et superadmin)</span></p>
  270 + <p class="P14"><span class="T16">- </span><span class="T15">admin+</span><span class="T16"> = possible pour un </span><span class="T15">Admin</span><span class="T16"> </span><span class="T15">et plus </span><span class="T16">(admin, adminplus, et superadmin)</span></p>
  271 + <p class="P16">- ...</p><p class="P16"> </p><p class="Standard"><span class="T15">Notes </span><span class="T16">:</span></p>
  272 + <p class="P9"> </p>
  273 + <ol>
  274 + <li><p class="P47" style="margin-left:0cm;"><span class="WW8Num8z0" style="display:block;float:left;min-width:0,635cm;">(1)</span><span class="T15">Droits en modification (edit) </span><span class="T16">:</span><span class="odfLiEnd"></span> </p></li>
  275 + </ol>
  276 + <p class="P16">- Un simple « user » ne doit pas pouvoir modifier le responsable, ni le statut, ni l'étiquette, ni les données admin d'un matériel (en mode Création comme Modification)</p><p class="P16">- Un  «responsable » ne doit pas pouvoir modifier le statut, ni les données admin d'un matériel (en mode Création comme Modification)</p>
  277 + <p class="P16">- Les données admin ne sont accessibles qu'aux profils admin+</p>
  278 + <p class="P14"><span class="T16">- Le champ "</span><span class="T15">status</span><span class="T16">" n'est modifiable que par les profils adminplus+</span></p>
  279 + <p class="P14"><span class="T16">- Tout le monde peut modifier un matériel </span><span class="T15">VALIDATED </span><span class="T16">(</span><span class="T15">user </span><span class="T16">ne peut modifier que </span><span class="T15">ses</span><span class="T16"> matériels, </span><span class="T17">resp ne peut modifier que les matériels de son groupe thématique ou métier</span><span class="T16">),</span></p>
  280 + <p class="P14"><span class="T16">MAIS PAS</span><span class="T15"> certains champs</span><span class="T16"> qui sont </span><span class="T15">readonly</span><span class="T16"> (</span><span class="T18">sur_categorie_id', 'categorie_id', 'materiel_administratif', 'materiel_technique', 'date_acquisition', 'nom_responsable', 'fournisseur', 'organisme', 'prix_ht')</span></p>
  281 + <p class="P14"><span class="T16">Les seuls champs qu'on peut éditer sont donc : (</span><span class="T18">designation, sous_categorie, materiel_administratif, materiel_technique, description, etiquette, lieu_stockage, lieu_detail, numero_serie, groupes_thematique, groupes_metier),</span><span class="T16"><br/>- Seuls les profils </span><span class="T15">adminplus+</span><span class="T16"> peuvent modifier un matériel </span><span class="T15">TOBEARCHIVED, ou ARCHIVED </span><span class="T16">mais </span><span class="T15">UNIQUEMENT le champ "status" </span><span class="T16">(pour pouvoir rétrograder à CREATED ou VALIDATED)</span></p>
  282 + <p class="P14"><span class="T16">- Le seul moyen de modifier COMPLÈTEMENT un matériel VALIDATED, TOBEARCHIVED, ou ARCHIVED, <br/>c'est de </span><span class="T15">changer son statut</span><span class="T16">, en le rétrogradant à CREATED (seuls les profils adminplus+ peuvent le faire)</span></p><p class="P16"> </p>
  283 + <ol>
  284 + <li><p class="P47" style="margin-left:0cm;"><span class="WW8Num8z0" style="display:block;float:left;min-width:0,635cm;">(2)</span><span class="T15">Désarchiver </span><span class="T16">: consiste à rétrograder un matériel ARCHIVED ou TOBEARCHIVED dans le statut VALIDATED ou CREATED (adminplus+ only) ; utile en cas d'erreur</span><span class="odfLiEnd"></span> </p></li>
  285 + </ol>
  286 + <p class="P8"> </p>
  287 + <ol>
  288 + <li><p class="P47" style="margin-left:0cm;"><span class="WW8Num8z0" style="display:block;float:left;min-width:0,635cm;">(3)</span><span class="T15">Montée de statut groupée : </span><span class="T16">seul ADMIN peut (exporter tout ou partie de la liste des matériels, et) </span><span class="T15">augmenter (+1) le statut d'un groupe de matériels</span><span class="T16">, depuis la vue « index » (vue spéciale pour ADMIN, avec des cases à cocher et boutons pour exporter ou faire évoluer le statut)</span><span class="odfLiEnd"></span> </p></li>
  289 + </ol>
  290 + <p class="P8"> </p>
  291 + <ol>
  292 + <li><p class="P48" style="margin-left:0cm;"><span class="WW8Num8z0" style="display:block;float:left;min-width:0,635cm;">(4)</span>Edition des documents :<span class="odfLiEnd"></span> </p></li>
  293 + </ol>
  294 + <p class="P16">Admission : quand on "VALIDE" un matériel "CREATED", le statut passe en VALIDATED et le document d'admission est automatiquement édité</p>
  295 + <p class="P16">Sortie : quand on "ARCHIVE" un document "TOBEARCHIVED", le statut passe en ARCHIVED et le document de sortie est automatiquement édité</p>
  296 + <p class="P16">De plus :</p>
  297 + <p class="P16">- Bouton "Doc admission" affiché à partir du statut "VALIDATED"</p>
  298 + <p class="P16">- Bouton "Doc Sortie" affiché à partir du statut TOBEARCHIVED (et donc aussi pour ARCHIVED)</p>
  299 + <p class="P16">Enfin, Le doc de sortie doit être couplée avec la liste des matériels a archiver (TOBEARCHIVED) quand il y a une demande de sortie.</p>
  300 + <p class="P16"> </p>
  301 + <p class="P17"> </p>
  302 + <p class="P1">C - sur les différentes VUES liées au matériel</p>
  303 + <p class="Standard"> </p>
  304 + <p class="P6"><span class="T4">Page accueil </span>:</p>
  305 + <p class="P6"><span> Administration <span class="T20">&amp; Administration Plus </span>voit un menu avec 2 options :</span></p>
  306 + <ul>
  307 + <li>
  308 + <ul>
  309 + <li>
  310 + <ul>
  311 + <li><p class="P51" style="margin-left:0cm;"><span class="WW8Num2z0" style="display:block;float:left;min-width:0,635cm;">.</span>« Voir les matériels à valider »<span class="odfLiEnd"></span> </p></li>
  312 + <li><p class="P52" style="margin-left:0cm;"><span class="WW8Num2z0" style="display:block;float:left;min-width:0,635cm;">.</span>« Voir les matériels à sortir de l'inventaire »<span class="odfLiEnd"></span> </p></li>
  313 + </ul>
  314 + </li>
  315 + </ul>
  316 + <p class="P52" style="margin-left:0cm;"><span class="WW8Num2z0" style="display:block;float:left;min-width:0cm"><!-- --></span><span class="T21">Responsable </span>voit un menu avec <span class="T21">3</span> options :<span class="odfLiEnd"></span> </p>
  317 + <ul>
  318 + <li>
  319 + <ul>
  320 + <li><p class="P52" style="margin-left:0cm;"><span class="WW8Num2z0" style="display:block;float:left;min-width:0,635cm;">.</span>« Voir les matériels <span class="T21">de mon groupe métier</span> »<span class="odfLiEnd"></span> </p></li>
  321 + <li><p class="P52" style="margin-left:0cm;"><span class="WW8Num2z0" style="display:block;float:left;min-width:0,635cm;">.</span>« Voir les matériels <span class="T21">de mon groupe métier à valider</span> »<span class="odfLiEnd"></span> </p></li>
  322 + <li><p class="P52" style="margin-left:0cm;"><span class="WW8Num2z0" style="display:block;float:left;min-width:0,635cm;">.</span>« <span class="T21">Voir les suivis des matériels donc je suis responsable »</span><span class="odfLiEnd"></span> </p></li>
  323 + </ul>
  324 + </li>
  325 + </ul>
  326 + </li>
  327 + </ul>
  328 + <p class="P1">Page Outils :</p>
  329 + <p class="P6">User n'a pas accès à cette page</p>
  330 + <p class="P6">Les autres ont quelques options</p>
  331 + <p class="P6">superadmin a ces options en plus :</p>
  332 + <ul>
  333 + <li><p class="P53" style="margin-left:0cm;"><span class="WW8Num4z0" style="display:block;float:left;min-width:0,635cm;">.</span>Configuration générale de l'application<span class="odfLiEnd"></span> </p></li>
  334 + <li><p class="P53" style="margin-left:0cm;"><span class="WW8Num4z0" style="display:block;float:left;min-width:0,635cm;">.</span>Gérer les utilisateurs <span class="T20">privilégiés</span><span class="odfLiEnd"></span> </p></li>
  335 + <li><p class="P53" style="margin-left:0cm;"><span class="WW8Num4z0" style="display:block;float:left;min-width:0,635cm;">.</span>Passer en mode debug<span class="odfLiEnd"></span> </p></li>
  336 + <li><p class="P54" style="margin-left:0cm;"><span class="WW8Num4z0" style="display:block;float:left;min-width:0,635cm;">.</span>Passer en mode install<span class="odfLiEnd"></span> </p></li>
  337 + </ul>
  338 + <p class="P6"> </p>
  339 + <p class="Standard"><span class="T5">Vue materiel/index (liste) </span><span class="T2">: limiter aux </span><span class="T5">matériels actifs</span><span class="T2"> (non archivés)</span></p>
  340 + <ul>
  341 + <li>
  342 + <ul>
  343 + <li><p class="P55" style="margin-left:0cm;"><span class="WW8Num1z0" style="display:block;float:left;min-width:0,635cm;">.</span>Admin<span class="T20">+ </span>voit des boutons pour filtrer par « tous », « à valider », « validés », « à sortir », « archivés »<span class="odfLiEnd"></span> </p></li>
  344 + </ul>
  345 + </li>
  346 + </ul>
  347 + <p class="P6"> </p>
  348 + <p class="Standard"><span class="T5">Vue materiel/find </span><span class="T2">: limiter aux </span><span class="T5">matériels actifs</span><span class="T2"> (non archivés)</span></p>
  349 + <p class="P6"><span> Seul le<span class="T20">s</span> profil<span class="T20">s</span> Admin<span class="T20">+ </span>voit TOUS les matériels (y-compris archivés)</span></p><p class="P6"> </p>
  350 + <p class="P6"><span class="T4">Vue materiel/view </span>:</p>
  351 + <p class="P6"><span> boutons « Imprimer Etiquettes » : <span class="T20">resp+</span></span></p>
  352 + <p class="P6"> </p><p class="P6"><span class="T4">Vue materiel/edit </span>:</p>
  353 + <ul>
  354 + <li><p class="P56" style="margin-left:0cm;"><span class="WW8Num5z0" style="display:block;float:left;min-width:0,635cm;">.</span>Etiquette O/N (admin<span class="T20">+)</span><span class="odfLiEnd"></span> </p></li>
  355 + <li><p class="P56" style="margin-left:0cm;"><span class="WW8Num5z0" style="display:block;float:left;min-width:0,635cm;">.</span>Statut (<span class="T20">superadmin+)</span><span class="odfLiEnd"></span> </p></li>
  356 + <li><p class="P56" style="margin-left:0cm;"><span class="WW8Num5z0" style="display:block;float:left;min-width:0,635cm;">.</span>Informations administratives (admin<span class="T20">+)</span><span class="odfLiEnd"></span> </p></li>
  357 + </ul>
  358 + <p class="P6"> </p>
  359 + <p class="P6"> </p>
  360 + <p class="P1"> </p>
  361 + <p class="P19">D - sur un SUIVI et un EMPRUNT</p>
  362 + <p class="P1"> </p>
  363 + <ul>
  364 + <li><p class="P57" style="margin-left:0cm;"><span class="WW8Num3z0" style="display:block;float:left;min-width:0,635cm;">.</span>Dans tous les cas, on ne doit pas pouvoir emprunter ou suivre un materiel non validé (CREATED)<span class="odfLiEnd"></span> </p></li>
  365 + <li><p class="P57" style="margin-left:0cm;"><span class="WW8Num3z0" style="display:block;float:left;min-width:0,635cm;">.</span>User a les droits C, R, U (si créateur), D (si créateur)<span class="odfLiEnd"></span> </p></li>
  366 + <li><p class="P57" style="margin-left:0cm;"><span class="WW8Num3z0" style="display:block;float:left;min-width:0,635cm;">.</span>Resp+ a les droits C, R, U, D<span class="odfLiEnd"></span> </p></li>
  367 + </ul>
  368 + <p class="P4"><span class="T9">Un USER peut modifier/supprimer un emprunt dont il est soit le créateur soit l'emprunteur</span><span class="T19">.</span></p>
  369 + <p class="P12">Un USER qui créé un emprunt ne doit pas pouvoir changer le nom de l'emprunteur (par défaut, c'est lui). Ainsi, il pourra modifier/supprimer cette fiche au besoin plus tard. Par défaut donc, pour un user, emprunt.emprunteur=creator, materiel.responsable=creator</p>
  370 + <p class="P13">Tout le monde peut rechercher un suivi,</p>
  371 + <p class="P5"> </p>
  372 + <p class="P5"> </p>
  373 + <p class="P3">E - sur les UTILISATEURS</p>
  374 + <p class="P4"><span class="T9">Par défaut, superadmin a tous les droits, et les autres profils n'ont que le droit de lecture (</span><span class="T7">view </span><span class="T9">et </span><span class="T7">index</span><span class="T9">)</span></p>
  375 + <p class="P5"> </p>
  376 + <p class="P5"> </p>
  377 + <p class="P3">F - sur tous les autres objets métiers</p>
  378 + <p class="P5">Voici la liste des autres objets métiers :</p>
  379 + <ul>
  380 + <li><p class="P58" style="margin-left:0cm;"><span class="WW8Num7z0" style="display:block;float:left;min-width:0,635cm;">.</span>Catégories (et domaines et sous-catégories)<span class="odfLiEnd"></span> </p></li>
  381 + </ul>
  382 + <ul>
  383 + <li><p class="P59" style="margin-left:0cm;"><span class="WW8Num6z0" style="display:block;float:left;min-width:0,635cm;">.</span>Groupes thématiques<span class="odfLiEnd"></span> </p></li>
  384 + <li><p class="P59" style="margin-left:0cm;"><span class="WW8Num6z0" style="display:block;float:left;min-width:0,635cm;">.</span>Groupes métiers<span class="odfLiEnd"></span> </p></li>
  385 + </ul>
  386 + <p class="P4"><span class="T9">Par défaut, pour tous ces objets, superadmin a tous les droits, admin</span><span class="T10">plus</span><span class="T9"> a tous les droits sauf « delete », et les autres profils n'ont que le droit de lecture (</span><span class="T7">view </span><span class="T9">et </span><span class="T7">index</span><span class="T9">)</span></p>
  387 + </div>
  388 + <div class="actions">
120 389 <?php echo $this->element('menu') ?>
121 390 </div>
122   -
123 391 </body></html>
124 392 \ No newline at end of file
... ...
src/Template/Pages/home_app.ctp
... ... @@ -2,33 +2,30 @@
2 2 <div class="index">
3 3 <h2><i class="icon-home"></i> Accueil</h2>
4 4  
5   -<p>Bienvenue sur l'inventaire administratif et technique <?= $configuration->labPresent.' <b>'.$configuration->labName ?></b>.</p>
  5 + <p>Bienvenue sur l'inventaire administratif et technique <?= $configuration->labPresent.' <b>'.$configuration->labName ?></b>.</p>
6 6  
7 7 <?php
8   - //Utilisateur connecté
9   - echo '<p>Vous êtes connecté en tant que <b>' . $username . '</b> ';
10   - echo 'et avec le niveau d\'authentification <b>'.$role.'</b>.';
11   - echo '<p>';
12   -
13   - echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">';
14   - echo '<tr><th></th></tr>';
15   - echo '<tr><td> '.$this->Html->link('Voir mes matériels', [
16   - 'controller' => 'materiels', 'action' => 'index', 'MY' => $username]).' </td></tr>';
17   - echo '</table>';
18   -
19   - //Utilisateur admin/super admin
20   - if (in_array($role, ['Administration', 'Administration Plus'])) {
21   - echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">';
22   - echo '<tr><th></th></tr>';
23   - echo '<tr><td> '.$this->Html->link('Voir les matériels à valider', [
24   - 'controller' => 'materiels', 'action' => 'index', 'CREATED']).' </td></tr>';
25   - echo '<tr><td> '.$this->Html->link('Voir les matériels à sortir de l\'inventaire', [
26   - 'controller' => 'materiels', 'action' => 'index', 'TOBEARCHIVED']).' </td></tr>';
27   - echo '</table>';
28   - }
29   -
  8 + //Utilisateur connecté
  9 + echo '<p>Vous êtes connecté en tant que <b>' . $username . '</b> ';
  10 + echo 'et avec le niveau d\'authentification <b>'.$role.'</b>.';
  11 + echo '<p>';
30 12  
  13 + echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">';
  14 + echo '<tr><th></th></tr>';
  15 + echo '<tr><td> '.$this->Html->link('Voir mes matériels', [
  16 + 'controller' => 'materiels', 'action' => 'index', 'MY' => $username]).' </td></tr>';
  17 + echo '</table>';
31 18  
  19 + //Utilisateur admin/super admin
  20 + if (in_array($role, ['Administration', 'Administration Plus'])) {
  21 + echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">';
  22 + echo '<tr><th></th></tr>';
  23 + echo '<tr><td> '.$this->Html->link('Voir les matériels à valider', [
  24 + 'controller' => 'materiels', 'action' => 'index', 'CREATED']).' </td></tr>';
  25 + echo '<tr><td> '.$this->Html->link('Voir les matériels à sortir de l\'inventaire', [
  26 + 'controller' => 'materiels', 'action' => 'index', 'TOBEARCHIVED']).' </td></tr>';
  27 + echo '</table>';
  28 + }
32 29  
33 30 //Utilisateur responsable
34 31 if ($role == 'Responsable') {
... ...
src/Template/Pages/infos.ctp
1   -<div class="actions">
2   - <?php echo $this->element('menu') ?>
3   -</div>
4 1  
5 2 <div class="index">
6 3 <h2><i class="icon-wrench"></i> INFORMATIONS SYSTEME </h2>
7   - <?php
  4 + <?php
8 5 phpinfo();
9   - ?>
10   -
  6 + ?>
11 7 </div>
12 8  
  9 +<div class="actions">
  10 + <?php echo $this->element('menu') ?>
  11 +</div>
... ...
src/Template/Pages/printers.ctp
1 1 <div class="index">
2   - <h2><i class="icon-print"></i> ETIQUETEUSES INSTALLEES </h2>
  2 + <h2><i class="icon-print"></i> ETIQUETEUSE </h2>
3 3  
4   -<br/><br/>
5   -<h3>REFERENCE DE L'ETIQUETEUSE (TITREUSE)</h3>
6   -<hr/>
7   -
8   -<p>
9   -Nom : "Imprimante d'étiquettes - Dymo - LabelManager PnP - USB"
10   -</p>
11   -
12   -<p>
13   -Prix : environ 50 € HT
14   -</p>
15   -
16   -<p>
17   -Ruban à commander : "D1 en 12mm"
18   -</p>
19   -
20   -<p>
21   -<a href="http://www.lyreco.com/webshop/P01/product/viewWithMoreResults/000000000004976543;jsessionid=0000IXKAG_s_jKOqnKptDrmJM2P:170lneimo?lc=FRBE">Lien chez Lyreco (Réf : 4.976.543)</a>
22   -</p>
23   -
24   -<p>
25   -<a href="http://www.officedepot.fr/a/pb/Imprimante-d-etiquettes-Dymo-PnP/pr=&id=5375844/">Lien chez OfficeDepot (Réf : 5375844)</a>
26   -</p>
27   -
28   -<p>
29   -<a href="http://global.dymo.com/frFR/Products/LabelManager_PnP.html">Lien chez le constructeur DYMO (Réf : S0915350)</a>
30   -</p>
31   -
32   -<!-- http://book.cakephp.org/2.0/fr/core-libraries/helpers/html.html -->
33   -<?= $this->Html->image('etiqueteuse.jpg', ['alt' => 'Image de l\'etiqueteuse Dymo - LabelManager PnP - USB']) ?>
34   -
35   -<pre>
36   - Pas de logiciel ni de pilote à installer. Le logiciel intégré s’ouvre à l’écran, prêt à l’emploi.
37   - Garantie 2 ans.
38   - Fonctionne avec les rubans D1 6, 9 et 12 mm.
39   - Petite et compacte, elle trouve facilement sa place sur un bureau.
40   - Batterie lithium-ion fournie, rechargeable par USB - pas d’adaptateur secteur ni de piles.
41   - Personnalisez vos étiquettes avec les polices et graphiques de votre ordinateur.
42   - Connectez-là à votre PC ou Mac et imprimez instantanément et très facilement des étiquettes professionnelles !
43   - Connexion USB à votre PC ou Mac.
44   -</pre>
45   -
46   -<br/>
47   -
48   -<p>
49   -<a href="/doc/DYMO PnP fiche technique.pdf">Fiche technique</a>
50   -</p>
51   -
52   -<p>
53   -<a href="/doc/DYMO PnP Manuel.pdf">Manuel d'utilisation</a>
54   -</p>
55   -
56   -<br/><br/>
57   -<h3>LOGICIEL DLS (DYMO LABEL SOFTWARE) A INSTALLER</h3>
58   -<hr/>
59   -
60   -<br/>
61   -<p>
62   -<a href="http://global.dymo.com/frFR/HowTo/LabelManager_PnP.html">Page d'aide et de documentation</a>
63   -</p>
64   -
65   -<p>
66   -<a href="http://www.dymo.com/en-US/online-support/dymo-user-guides">Téléchargement logiciel</a>
67   -</p>
68   -
69   -<p>
70   -<a href="http://global.dymo.com/ieIE/Software/LabelWriter_400.html">Autre lien pour le téléchargement</a>
71   -</p>
72   -
73   -
74   -<br/><br/><br/><br/>
75   -<h3>ETIQUETEUSES INSTALLEES SUR LE LABORATOIRE</h3>
76   -<hr/>
77   -
78   -<?php
79   -//if ($localConfig['labName']=='IRAP')
80   -
81   -echo "
82   -
83   -<p>
84   -<br/>
85   -Dans l'idéal, il faudrait une étiqueteuse par gestionnaire financier :
86   -</p>
87   -
88   - <b>SUR LE SITE ROCHE :</b>
89   - <ul>
90   - <li>
91   - <b>Jean-Louis Lefort (site Roche 101)</b> ==> installée le 1/12/14 (pc8008, Windows 7 Pro 2009 SP1, version soft DLS 8.5.1)
92   - <br/>
93   - Aucun problème, installée sur lettre G: - laissé 1 ruban D1 12mm de 7m en plus du ruban installé (3m seulement)
94   - <br/>
95   - <i>
96   - Pour info, ancienne installation faite sur son pc XP (23/5/14) (version soft DLS 8.5.1)
97   - Problème : si le logiciel DLS (Dymo Label Soft) est déjà ouvert, ça provoque une erreur Windows. Il faut donc refermer le logiciel avant de demander l'impression d'un ruban
98   - (c'est peut-être dû à cette version 8.5.1, la dernière version sortie, car sur l'ancienne version, je ne crois pas qu'il y ait cette erreur sur XP)
99   - </i>
100   - </li>
101   -
102   - <li>
103   - <b>Dorine Roma (site Roche 102)</b> ==> installée le 1/12/14 (pc8006 Optiplex 7010, Windows 7 Pro 2009 SP1, version soft DLS 8.5.1)
104   - <br/>
105   - <i>
106   - Installée sur lettre G: - ruban installé = 3m seulement
107   - </i>
108   - </li>
109   -
110   - <li>
111   - <b>Carole Lecinana (site Roche 104)</b> ==> installée le 1/12/14 (pc8005 Optiplex 7010, Windows 7 Pro 2009 SP1, version soft DLS 8.5.1)
112   - <br/>
113   - <i>
114   - Installée sur lettre G: - ruban installé = 3m seulement
115   - </i>
116   - </li>
117   -
118   - <li>
119   - <b>Marjorie Cloup (site Roche 104)</b> ==> installée le 1/12/14 (pc8007 Optiplex 7010, Windows 7 Pro 2009 SP1, version soft DLS 8.5.1)
120   - <br/>
121   - <i>
122   - Installée sur lettre G: - ruban installé = 3m seulement
123   - </i>
124   - </li>
125   - </ul>
  4 + <br/><br/>
  5 + <h3>DOCUMENTATION ET INSTALLATION DE L'ETIQUETEUSE (TITREUSE)</h3>
  6 + <hr/>
126 7  
127 8 <br/>
128   - <b>SUR LE SITE BELIN :</b>
129   - <ul>
130   - <li>
131   - <b>Carole Gaiti (site Belin 61)</b> ==> installée le 24/6/14 (pc Win 7 - version soft DLS 8.5.1)
132   - </li>
133   -
134   - <li>
135   - Dolores Granat (site Belin 80bis) ==> A FAIRE
136   - </li>
137   -
138   - <li>
139   - Isabelle Moro (site Belin B064) ==> A FAIRE
140   - </li>
141   -
142   - <li>
143   - De plus, Etienne Pallier (site Roche 63, Mac OS 10.7) et Elodie Bourrec (site Belin 59, Win 7) sont tous les deux équipés d'une étiqueteuse
144   - </li>
145   -
146   - <li>
147   - Enfin, l'étiqueteuse (ancienne) de Gilbert Rouaix (site Roche 19, Win XP) semble compatible puisqu'on a réussi à imprimer des étiquettes dessus.
148   - </li>
149   -
150   - </ul>
151   -
152   -<p>
153   -<br/>
154   -Au total, ça fait donc 9.
155   -</p>
156   -";
157   -?>
158   -
  9 + <p><a href="https://projects.irap.omp.eu/projects/inventirap/wiki/Installation#H-Etiquettes-optionnel"> Lien vers le wiki</a></p>
159 10 </div>
160 11  
161   -
162   - <div class="actions">
163   - <?php echo $this->element('menu') ?>
164   - </div>
  12 +<div class="actions">
  13 + <?php echo $this->element('menu') ?>
  14 +</div>
165 15  
166 16 \ No newline at end of file
... ...
src/Template/Pages/tools.ctp
... ... @@ -35,7 +35,7 @@
35 35 echo '</td></tr>';
36 36  
37 37 echo '<tr><td>';
38   - echo $this->Html->link('Voir les étiqueteuses installées', ['controller'=>'pages', 'action'=>'printers']);
  38 + echo $this->Html->link('Etiqueteuse', ['controller'=>'pages', 'action'=>'printers']);
39 39 echo '</td></tr>';
40 40  
41 41 echo '<tr><td>';
... ...