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,6 +19,7 @@ use Cake\Event\Event;
19 use Cake\ORM\TableRegistry; 19 use Cake\ORM\TableRegistry;
20 use Cake\Mailer\Email; 20 use Cake\Mailer\Email;
21 use Cake\Core\Configure; 21 use Cake\Core\Configure;
  22 +use PhpParser\Node\Expr\Include_;
22 23
23 /** 24 /**
24 * Application Controller 25 * Application Controller
@@ -200,39 +201,39 @@ class AppController extends Controller @@ -200,39 +201,39 @@ class AppController extends Controller
200 * @param string $message 201 * @param string $message
201 * @param string[] $to 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 * Envoi d'un email à la gestion (et aux devs) pour prévenir qu'un matériel a été créé ou modifié 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,154 +241,154 @@ class AppController extends Controller
240 * @param string $subject 241 * @param string $subject
241 * @param string $message 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 * Envoi d'un email au propriétaire pour prévenir qu'un matériel a été créé 347 * Envoi d'un email au propriétaire pour prévenir qu'un matériel a été créé
347 * @param string $subject 348 * @param string $subject
348 * @param string $message 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 static function isLabinventDebugMode() { 394 static function isLabinventDebugMode() {
@@ -401,159 +402,132 @@ class AppController extends Controller @@ -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,49 +277,49 @@ class MaterielsController extends AppController
277 * 277 *
278 * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. 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 $materiel = $this->Materiels->newEntity(); 282 $materiel = $this->Materiels->newEntity();
283 if ($this->request->is('post')) { 283 if ($this->request->is('post')) {
284 $materiel = $this->Materiels->patchEntity($materiel, $this->request->data); 284 $materiel = $this->Materiels->patchEntity($materiel, $this->request->data);
285 if ($this->Materiels->save($materiel)) { 285 if ($this->Materiels->save($materiel)) {
286 $this->Flash->success(__('Le matériel a bien été ajouté.')); 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 $subject = 'Ajout de matériel'; 295 $subject = 'Ajout de matériel';
296 $listMails = []; 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 return $this->redirect(['action' => 'view', $materiel->id]); 324 return $this->redirect(['action' => 'view', $materiel->id]);
325 } else { 325 } else {
@@ -371,11 +371,11 @@ class MaterielsController extends AppController @@ -371,11 +371,11 @@ class MaterielsController extends AppController
371 $materiel = $this->Materiels->patchEntity($materiel, $this->request->data); 371 $materiel = $this->Materiels->patchEntity($materiel, $this->request->data);
372 if ($this->Materiels->save($materiel)) { 372 if ($this->Materiels->save($materiel)) {
373 $this->Flash->success(__('Le matériel a bien été édité.')); 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 return $this->redirect(['action' => 'view', $id]); 379 return $this->redirect(['action' => 'view', $id]);
380 } else { 380 } else {
381 $this->Flash->error(__('Le matériel n\'a pas pu être édité.')); 381 $this->Flash->error(__('Le matériel n\'a pas pu être édité.'));
@@ -492,7 +492,7 @@ class MaterielsController extends AppController @@ -492,7 +492,7 @@ class MaterielsController extends AppController
492 $materiel = $this->Materiels->get($id); 492 $materiel = $this->Materiels->get($id);
493 if ($this->Materiels->delete($materiel)) { 493 if ($this->Materiels->delete($materiel)) {
494 $this->Flash->success(__('Le matériel a bien été supprimé.')); 494 $this->Flash->success(__('Le matériel a bien été supprimé.'));
495 -// $this->sendEmailToManagement($id); 495 + $this->sendEmailToManagement($id);
496 } else { 496 } else {
497 $this->Flash->error(__('Le matériel n\'a pas pu être supprimé.')); 497 $this->Flash->error(__('Le matériel n\'a pas pu être supprimé.'));
498 } 498 }
@@ -520,13 +520,13 @@ class MaterielsController extends AppController @@ -520,13 +520,13 @@ class MaterielsController extends AppController
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'); 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 return $this->redirect(['action' => 'edit', $id]); 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 if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) { 527 if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) {
528 $this->Flash->success(__($message)); 528 $this->Flash->success(__($message));
529 -// $this->sendEmailToManagement($id); 529 + $this->sendEmailToManagement($id);
530 } 530 }
531 else { 531 else {
532 $this->Flash->error(__('Le statut n\'a pas pu être édité.')); 532 $this->Flash->error(__('Le statut n\'a pas pu être édité.'));
@@ -1016,7 +1016,7 @@ class MaterielsController extends AppController @@ -1016,7 +1016,7 @@ class MaterielsController extends AppController
1016 fclose($csv_file); 1016 fclose($csv_file);
1017 1017
1018 exit(); 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 //La redirection suivante fonctionne parfaitement, mais inutile à cause du exit() 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,6 +194,8 @@ class MaterielsTable extends AppTable
194 194
195 $validator 195 $validator
196 ->notEmpty('site_id', 'Ce champ doit être rempli'); 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 $validator 200 $validator
199 ->allowEmpty('lieu_detail') 201 ->allowEmpty('lieu_detail')
@@ -206,6 +208,9 @@ class MaterielsTable extends AppTable @@ -206,6 +208,9 @@ class MaterielsTable extends AppTable
206 $validator 208 $validator
207 ->allowEmpty('email_responsable') 209 ->allowEmpty('email_responsable')
208 ->email('email_responsable'); 210 ->email('email_responsable');
  211 +
  212 + $validator
  213 + ->notEmpty('nom_gestionnaire', 'Ce champ doit être rempli');
209 214
210 $validator 215 $validator
211 ->allowEmpty('nom_createur'); 216 ->allowEmpty('nom_createur');
src/Template/Materiels/add.ctp
1 <?php 1 <?php
  2 +use Cake\ORM\TableRegistry;
  3 +
2 if(isset($cpMateriel)) { 4 if(isset($cpMateriel)) {
3 $Designation = $cpMateriel->designation; 5 $Designation = $cpMateriel->designation;
4 $Sur_categ_id = $cpMateriel->sur_categorie_id; 6 $Sur_categ_id = $cpMateriel->sur_categorie_id;
@@ -132,6 +134,21 @@ else { @@ -132,6 +134,21 @@ else {
132 'readonly' => true, 134 'readonly' => true,
133 'default' => $mail_responsable 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 echo $this->Form->input('fournisseur', ['label' => 'Fournisseur', 'default' => $Fournisseur]); 152 echo $this->Form->input('fournisseur', ['label' => 'Fournisseur', 'default' => $Fournisseur]);
136 echo $this->Form->input('organisme_id', ['options' => $organismes, 'style' => 'width: 380px', 'empty' => 'Choisir un organisme', 'default' => $Organisme_id]); 153 echo $this->Form->input('organisme_id', ['options' => $organismes, 'style' => 'width: 380px', 'empty' => 'Choisir un organisme', 'default' => $Organisme_id]);
137 echo $this->Form->input('prix_ht', ['label' => 'Prix HT (€)', 'default' => $Prix_ht]); 154 echo $this->Form->input('prix_ht', ['label' => 'Prix HT (€)', 'default' => $Prix_ht]);
src/Template/Materiels/edit.ctp
1 <?php 1 <?php
2 2
3 3
  4 +use Cake\ORM\TableRegistry;
  5 +
4 $administrationData = array ( 6 $administrationData = array (
5 'eotp', 7 'eotp',
6 'numero_commande', 8 'numero_commande',
@@ -224,7 +226,18 @@ if ($IS_VALIDATED) @@ -224,7 +226,18 @@ if ($IS_VALIDATED)
224 'readonly' => true, 226 'readonly' => true,
225 'default' => $mail_responsable 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 echo $this->Form->input('fournisseur', [ 242 echo $this->Form->input('fournisseur', [
230 'label' => 'Fournisseur', 243 'label' => 'Fournisseur',
@@ -405,6 +418,5 @@ $(document).ready(function () { @@ -405,6 +418,5 @@ $(document).ready(function () {
405 } 418 }
406 }); 419 });
407 }); 420 });
408 -  
409 421
410 </script> 422 </script>
src/Template/Materiels/view.ctp
@@ -374,6 +374,7 @@ if (h ( $materiel-&gt;status ) == &#39;ARCHIVED&#39;) @@ -374,6 +374,7 @@ if (h ( $materiel-&gt;status ) == &#39;ARCHIVED&#39;)
374 $displayElement ( __ ( 'Détail lieu de stockage' ), h ( $materiel->lieu_detail ) ); 374 $displayElement ( __ ( 'Détail lieu de stockage' ), h ( $materiel->lieu_detail ) );
375 375
376 $displayElement ( __ ( 'Nom du propriétaire' ), $this->Html->link ( h ( $materiel->nom_responsable ), 'mailto:' . h ( $materiel->email_responsable ) ) ); 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 $displayElement ( __ ( 'N. interne (labo)' ), h ( $materiel->numero_laboratoire ) ); 378 $displayElement ( __ ( 'N. interne (labo)' ), h ( $materiel->numero_laboratoire ) );
378 379
379 if ($role == 'Super Administrateur') { 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 <?php echo $this->element('menu') ?> 389 <?php echo $this->element('menu') ?>
121 </div> 390 </div>
122 -  
123 </body></html> 391 </body></html>
124 \ No newline at end of file 392 \ No newline at end of file
src/Template/Pages/home_app.ctp
@@ -2,33 +2,30 @@ @@ -2,33 +2,30 @@
2 <div class="index"> 2 <div class="index">
3 <h2><i class="icon-home"></i> Accueil</h2> 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 <?php 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 //Utilisateur responsable 30 //Utilisateur responsable
34 if ($role == 'Responsable') { 31 if ($role == 'Responsable') {
src/Template/Pages/infos.ctp
1 -<div class="actions">  
2 - <?php echo $this->element('menu') ?>  
3 -</div>  
4 1
5 <div class="index"> 2 <div class="index">
6 <h2><i class="icon-wrench"></i> INFORMATIONS SYSTEME </h2> 3 <h2><i class="icon-wrench"></i> INFORMATIONS SYSTEME </h2>
7 - <?php 4 + <?php
8 phpinfo(); 5 phpinfo();
9 - ?>  
10 - 6 + ?>
11 </div> 7 </div>
12 8
  9 +<div class="actions">
  10 + <?php echo $this->element('menu') ?>
  11 +</div>
src/Template/Pages/printers.ctp
1 <div class="index"> 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 <br/> 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 </div> 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 \ No newline at end of file 16 \ No newline at end of file
src/Template/Pages/tools.ctp
@@ -35,7 +35,7 @@ @@ -35,7 +35,7 @@
35 echo '</td></tr>'; 35 echo '</td></tr>';
36 36
37 echo '<tr><td>'; 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 echo '</td></tr>'; 39 echo '</td></tr>';
40 40
41 echo '<tr><td>'; 41 echo '<tr><td>';