Commit ee1665e91b17be1d5f6c91118e15349190cbb38e
1 parent
0d4cdf36
Exists in
master
and in
1 other branch
Amélioration et nombreux bugfixes de la gestion des docs attachés (2)
Showing
9 changed files
with
896 additions
and
668 deletions
Show diff stats
README.md
... | ... | @@ -53,13 +53,10 @@ Logiciel testé et validé sur les configurations suivantes : |
53 | 53 | |
54 | 54 | VERSION ACTUELLE |
55 | 55 | |
56 | -Date: 16/03/2020 | |
57 | -Version: 3.7.9.5 | |
56 | +Date: 20/03/2020 | |
57 | +Version: 3.7.9.6 | |
58 | 58 | Author: EP |
59 | -Commentaire: Premiers bugfixes du nouveau site responsive (5) | |
60 | - - Nombreux bugfixes de la gestion des documents attachés (presque fini) | |
61 | - - superadmin ressemble de plus en plus au profil "admin" (avec un peu plus de droits) | |
62 | - - Forcer DebugKit (en mode debug) dans config/bootstrap.php : Configure::write('DebugKit.forceEnable', true); | |
59 | +Commentaire: Amélioration et nombreux bugfixes de la gestion des docs attachés (2) | |
63 | 60 | |
64 | 61 | IMPORTANT : |
65 | 62 | - Pour connaitre la version actuelle, taper "./VERSION" |
... | ... | @@ -94,6 +91,12 @@ La liste ci-dessous n'est plus à jour, elle est désormais en ligne ici : https |
94 | 91 | |
95 | 92 | ----------------------------------------------------------------------------------------------------------- |
96 | 93 | |
94 | +16/03/2020 Version 3.7.9.5 (EP) | |
95 | + Premiers bugfixes du nouveau site responsive (5) | |
96 | + - Nombreux bugfixes de la gestion des documents attachés (presque fini) | |
97 | + - superadmin ressemble de plus en plus au profil "admin" (avec un peu plus de droits) | |
98 | + - Forcer DebugKit (en mode debug) dans config/bootstrap.php : Configure::write('DebugKit.forceEnable', true); | |
99 | + | |
97 | 100 | 13/03/2020 Version 3.7.9.4 (EP) |
98 | 101 | Premiers bugfixes du nouveau site responsive (4) |
99 | 102 | - Fournisseur peut etre créé, modif, suppr par simple Utilisateur (improved) | ... | ... |
src/Controller/AppController.php
... | ... | @@ -1285,25 +1285,34 @@ class AppController extends Controller |
1285 | 1285 | // MI Fonction d'envoi de mails avec pièce jointe |
1286 | 1286 | private function sendEmailPJTo($subject, $msg, $mail, $config, $nomDoc) |
1287 | 1287 | { |
1288 | - if ($mail != null && ! $config->test) { | |
1288 | + if ($mail!=null && !$config->test) { | |
1289 | 1289 | if (filter_var($mail, FILTER_VALIDATE_EMAIL)) { |
1290 | - $email = new Email(); | |
1290 | + $email = new Email(); | |
1291 | 1291 | $etiquetteFrom = explode("@", $config->sender_mail); |
1292 | - | |
1293 | 1292 | // (EP) Je vais tuer le stagiaire qui a fait ça : |
1294 | 1293 | //$email->attachments(["/var/www/html/labinvent/webroot/files/$nomDoc"]); |
1295 | 1294 | // Il fallait plutot faire ça : |
1296 | 1295 | $wwwroot_dir = new \Cake\Filesystem\Folder(WWW_ROOT); |
1297 | - $absFileName = $wwwroot_dir->pwd() . DS . 'files' . DS . $nomDoc; | |
1296 | + //$absFileName = $wwwroot_dir->pwd() . DS . 'files' . DS . $nomDoc; | |
1297 | + $extension = explode(".", $nomDoc)[1]; | |
1298 | + // Photo ou doc ? | |
1299 | + $path_to_doc = in_array($extension, ['png','jpg','jpeg']) ? 'img'.DS.'photos' : 'files'; | |
1300 | + $absFileName = $wwwroot_dir->pwd().$path_to_doc.DS.$nomDoc; | |
1298 | 1301 | $email->attachments([$absFileName]); |
1299 | - | |
1302 | + /* | |
1303 | + debug($mail); | |
1304 | + debug($etiquetteFrom); | |
1305 | + debug($absFileName); | |
1306 | + debug($email); | |
1307 | + exit; | |
1308 | + */ | |
1300 | 1309 | $email->transport('default') |
1301 | - ->from([ | |
1302 | - $config->sender_mail => $etiquetteFrom[0] | |
1303 | - ]) | |
1304 | - ->to($mail) | |
1305 | - ->subject("[LabInvent] " . $subject) | |
1306 | - ->send($msg); | |
1310 | + ->from([ | |
1311 | + $config->sender_mail => $etiquetteFrom[0] | |
1312 | + ]) | |
1313 | + ->to($mail) | |
1314 | + ->subject("[LabInvent] " . $subject) | |
1315 | + ->send($msg); | |
1307 | 1316 | } |
1308 | 1317 | } |
1309 | 1318 | } |
... | ... | @@ -1338,308 +1347,320 @@ class AppController extends Controller |
1338 | 1347 | $action = $this->request->getAttribute('params')['action']; // add or edit or delete or ... |
1339 | 1348 | |
1340 | 1349 | // Si les deux cases "Activer l'envoi des mails.." sont décochées, on se fatigue pas à exécuter la fonction |
1341 | - if (! $configuration->envoi_mail && ! $configuration->envoi_mail_guests) | |
1342 | - return null; | |
1343 | - | |
1344 | - $mailList = []; | |
1345 | - | |
1346 | - // On détermine le message et le sujet du mail en fonction de l'action effectuee | |
1347 | - // on bloque l'envoi de mail à l'edition et à la validation pour eviter trop d'envoi de mail | |
1348 | - // le temps que soit trouvé une autre solution | |
1349 | - $acteur = $_SESSION['Auth']['User']['givenname'][0] . ' ' . $_SESSION['Auth']['User']['sn'][0]; | |
1350 | - // if ($entity != null) { | |
1351 | - if ($entity instanceof Materiel) { | |
1352 | - $materiel = $entity; | |
1353 | - $nom_materiel = $materiel->designation; | |
1354 | - if ($subject == null && $msg == null) { | |
1355 | - $msgMore = ''; | |
1356 | - Switch ($action) { | |
1357 | - case 'add': | |
1358 | - $subject = "Ajout d'un matériel"; | |
1359 | - $msg = "$acteur a ajouté le matériel \"$nom_materiel\""; | |
1360 | - break; | |
1361 | - case 'edit': | |
1362 | - $subject = "Modification d'un matériel"; | |
1363 | - $msg = "$acteur a modifié le matériel \"$nom_materiel\""; | |
1364 | - break; | |
1365 | - case 'delete': | |
1366 | - $subject = "Suppression d'un matériel"; | |
1367 | - $msg = "$acteur a supprimé le matériel \"$nom_materiel\""; | |
1368 | - // @todo: mettre le nom des domaine, categ, et sous-categ, et non pas l'id | |
1369 | - if ($materiel->sur_categorie_id != "") | |
1370 | - $msgMore .= "\n\nDomaine : " . $materiel->sur_categorie_id; | |
1371 | - if ($materiel->categorie_id != "") | |
1372 | - $msgMore .= "\n\nCatégorie : " . $materiel->categorie_id; | |
1373 | - if ($materiel->sous_categorie_id != "") | |
1374 | - $msgMore .= "\n\nSous-catégorie : " . $materiel->sous_categorie_id; | |
1375 | - if ($materiel->description != "") | |
1376 | - $msgMore .= "\n\nDescription :\n" . $materiel->description; | |
1377 | - break; | |
1378 | - case 'statusCreated': | |
1379 | - $subject = "Dé-validation d'un matériel"; | |
1380 | - $msg = "$acteur a dé-validé le matériel \"$nom_materiel\""; | |
1381 | - break; | |
1382 | - case 'statusValidated': | |
1383 | - $subject = "Validation d'un matériel"; | |
1384 | - $msg = "$acteur a validé le matériel \"$nom_materiel\""; | |
1385 | - break; | |
1386 | - case 'statusToBeArchived': | |
1387 | - $subject = "Demande d'archivage d'un matériel"; | |
1388 | - $msg = "$acteur a demandé l'archivage du matériel \"$nom_materiel\""; | |
1389 | - break; | |
1390 | - case 'statusArchived': | |
1391 | - $subject = "Archivage d'un matériel"; | |
1392 | - $msg = "$acteur a archivé le matériel \"$nom_materiel\""; | |
1393 | - break; | |
1394 | - case 'setLabelIsPlaced': | |
1395 | - $subject = "Etiquette posée sur un matériel"; | |
1396 | - $msg = "Etiquette posée sur le matériel \"$nom_materiel\""; | |
1397 | - break; | |
1398 | - case 'printLabelRuban': | |
1399 | - $subject = "Etiquette imprimée"; | |
1400 | - $msg = "L'étiquette concerant votre matériel \"$nom_materiel\" a été imprimée"; | |
1401 | - $mailList[0] = $materiel->email_responsable; | |
1402 | - default: | |
1403 | - $subject = "Action \"$action\" sur un matériel"; | |
1404 | - $msg = "$acteur a effectué l'action \"$action\" sur le matériel \"$nom_materiel\""; | |
1405 | - break; | |
1406 | - } // end switch | |
1407 | - // (EP) Ajout de l'ID du materiel !!! | |
1408 | - $msg .= " (id=" . $materiel->id . ")."; | |
1409 | - // Only for "delete" action (for the moment...) | |
1410 | - if ($msgMore) | |
1411 | - $msg .= $msgMore; | |
1412 | - // $msg .= "\n\n"; | |
1413 | - } // subject is null | |
1414 | - | |
1415 | - // Et maintenant on construit la liste de mails... | |
1416 | - // Si l'envoi général est activé (et que l'action ne correspond pas à 'printLabelRuban'): | |
1417 | - if ($configuration->envoi_mail && $action != 'printLabelRuban') { | |
1418 | - | |
1419 | - // owner's mail (utilisateur du matériel) | |
1420 | - $mailList[0] = $materiel->email_responsable; | |
1421 | - | |
1422 | - // resp's mail | |
1423 | - $mailsRespMetier = []; | |
1424 | - $mailRespThematique = []; | |
1425 | - | |
1426 | - //TODO: changer ça car c'est pas forcément id=1 | |
1427 | - if ($materiel->groupes_metier_id != null && $materiel->groupes_metier_id != 1) { | |
1428 | - // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe | |
1429 | - $mailsRespMetier = TableRegistry::getTableLocator()->get('Users')->find() | |
1430 | - ->select('email') | |
1431 | - ->where([ | |
1432 | - 'role =' => 'Responsable', | |
1433 | - 'groupes_metier_id =' => $materiel->groupes_metier_id | |
1434 | - ]) | |
1435 | - ->toArray(); | |
1436 | - } | |
1437 | - | |
1438 | - //TODO: changer ça car c'est pas forcément id=1 | |
1439 | - if ($materiel->groupes_thematique_id != null && $materiel->groupes_thematique_id != 1) { | |
1440 | - // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe | |
1441 | - $mailRespThematique = TableRegistry::getTableLocator()->get('Users')->find() | |
1442 | - ->select('email') | |
1443 | - ->where([ | |
1444 | - 'role =' => 'Responsable', | |
1445 | - 'groupe_thematique_id =' => $materiel->groupes_thematique_id | |
1446 | - ]) | |
1447 | - ->toArray(); | |
1448 | - } | |
1449 | - | |
1450 | - if ($mailsRespMetier != [] || $mailRespThematique != []) { | |
1451 | - $mailsResp = array_unique(array_merge($mailsRespMetier, $mailRespThematique)); | |
1452 | - /* | |
1453 | - for ($i = 0; $i < sizeof($mailsResp); $i ++) { | |
1454 | - $mailList[] = $mailsResp[$i]['email']; | |
1455 | - // $mailList[sizeof($mailList)] = $mailsResp[$i]['email']; | |
1456 | - } | |
1457 | - */ | |
1458 | - foreach ($mailsResp as $mailResp) $mailList[] = $mailResp['email']; | |
1459 | - $mailList = array_unique($mailList); | |
1460 | - } | |
1461 | - //debug($mailList);exit(); | |
1462 | - | |
1463 | - // mail admin de reference (ici appele gestionnaire) -> Partie administration | |
1464 | - // Cela a été mis en commentaire car de toute façon l'utilisateur va voir un administratif pour faire valider sa fiche, | |
1465 | - // Pas la peine de spam l'administration de mails non plus hein ! | |
1466 | - | |
1467 | - /* | |
1468 | - * if ($action != 'statusValidated' && $action != 'statusArchived') { | |
1469 | - * $mailsAdmin = TableRegistry::getTableLocator()->get('Users')->find()->select('email') | |
1470 | - * ->where(['role =' => 'Administration']) | |
1471 | - * ->toArray(); | |
1472 | - * for ($i = 0; $i < sizeof($mailsAdmin); $i ++) { | |
1473 | - * $mailList[sizeof($mailList)] = $mailsAdmin[$i]['email']; | |
1474 | - * } | |
1475 | - * } | |
1476 | - */ | |
1477 | - } | |
1478 | - } // Materiel | |
1479 | - | |
1480 | - // @todo: ajouter quelques infos dans ces cas : | |
1481 | - else if ($entity instanceof Document) { | |
1482 | - //debug("doc"); exit; | |
1483 | - $doc = $entity; | |
1484 | - $nom_doc = $doc->nom; | |
1485 | - $id_doc = $doc->id; | |
1486 | - $type_doc = $doc->type_doc; | |
1487 | - $id_mat = $doc->materiel_id; | |
1488 | - $id_suiv = $doc->suivi_id; | |
1489 | - if ($subject == null && $msg == null) { | |
1490 | - $msgMore = ''; | |
1491 | - Switch ($action) { | |
1492 | - case 'add': | |
1493 | - $subject = "Ajout d'un document"; | |
1494 | - $msg = "$acteur a ajouté le document \"$nom_doc\" au format \"$type_doc\""; | |
1495 | - break; | |
1496 | - //ajoutons un contenu de message plus clair pour l'envoi de document | |
1497 | - case'mailDevis': | |
1498 | - $subject = "$acteur a partagé un document avec vous"; | |
1499 | - $msg = "$acteur après avoir ajouté le document \"$nom_doc\", a voulu le partager avec vous, c'est un document ayant le format \"$type_doc\" ."; | |
1500 | - $msg .="\n\n Le document est en pièce jointe."; | |
1501 | - break; | |
1502 | - //L'edition | |
1503 | - //comme il n'étais pas actuellement activé, on le laisse en commentaire | |
1504 | - //case 'edit': | |
1505 | - //$subject = "Modification d'un document"; | |
1506 | - //$msg = "$acteur a modifié le matériel \"$nom_doc\""; | |
1507 | - //break; | |
1508 | - //La suppression | |
1509 | - //comme il n'étais pas actuellement activé, on le laisse en commentaire | |
1510 | - //case 'delete': | |
1511 | - //$subject = "Suppression d'un document"; | |
1512 | - //$msg = "$acteur a supprimé le document\"$nom_doc\""; | |
1513 | - //break; | |
1514 | - default: | |
1515 | - $subject = "Action \"$action\" sur un matériel"; | |
1516 | - $msg = "$acteur a effectué l'action \"$action\" sur le document \"$nom_doc\" au format \"$type_doc\""; | |
1517 | - break; | |
1518 | - } // end switch | |
1519 | - // (EP) Ajout de l'ID du document, et de l'id du materiel associé !!! | |
1520 | - //On change le contenu en fonction de si le document a été lié à un matériel, ou a un suivi | |
1521 | - if (!$id_mat == Null) { | |
1522 | - $msg .= "\n\n (id doc=".$doc->id.", Materiel associé d'id=\"$id_mat\")"; | |
1523 | - $nomFic =$id_mat."_".$nom_doc."_".$id_doc.".".$type_doc; | |
1524 | - } else { | |
1525 | - $msg .= "\n\n (id doc=".$doc->id.", Materiel associé d'id=\"$id_suiv\")"; | |
1526 | - $nomFic =$id_suiv."_".$nom_doc."_".$id_doc.".".$type_doc; | |
1527 | - } | |
1528 | - } | |
1529 | - // Et maintenant on construit la liste de mails... | |
1530 | - // Si l'envoi général est activé (et que l'action ne correspond pas à 'printLabelRuban'): | |
1531 | - if ($configuration->envoi_mail && $action != 'printLabelRuban') { | |
1532 | - | |
1533 | - // (EP) Recup du materiel associé | |
1534 | - $materiel = TableRegistry::getTableLocator()->get('Materiels')->find() | |
1535 | - ->where([ | |
1536 | - 'id =' => $doc->materiel_id | |
1537 | - ])->first(); | |
1538 | - | |
1539 | - //debug("envoi"); | |
1540 | - //debug("matos = ".$materiel); | |
1541 | - //exit; | |
1542 | - | |
1543 | - // owner's mail (utilisateur du matériel associé ) | |
1544 | - //$mailList[0] = $entity->materiel->email_responsable; | |
1545 | - | |
1546 | - // (MI) - gestionaire ratachée au matériel | |
1547 | - //$mailList[1]= TableRegistry::getTableLocator()->get('Users')->find() | |
1548 | - $mailList[]= TableRegistry::getTableLocator()->get('Users')->find() | |
1549 | - ->select('email') | |
1550 | - ->where([ | |
1551 | - 'role =' => 'Administration', | |
1552 | - 'id =' => $materiel->gestionnaire_id | |
1553 | - ]); | |
1554 | - | |
1555 | - } | |
1556 | - | |
1557 | - | |
1558 | - } else if ($entity instanceof Suivi) { | |
1559 | - ; | |
1560 | - } else if ($entity instanceof Emprunt) { | |
1561 | - ; | |
1562 | - } | |
1563 | - /* | |
1564 | - * @todo: | |
1565 | - * else if ($entity instanceof Configuration) { | |
1566 | - * ; | |
1567 | - * } | |
1568 | - * ... etc ... (il faut qu'on soit plus précis) | |
1569 | - */ | |
1570 | - // Si l'envoi à la liste spécifiée est activé (et que l'action ne correspond pas à 'printLabelRuban'): | |
1571 | - $specificUsers = []; | |
1572 | - if ($configuration->envoi_mail_guests && $action != 'printLabelRuban') { | |
1573 | - // mail aux adresses specifiees dans la config | |
1574 | - for ($i = 0; $i < 11; $i ++) { | |
1575 | - $specificUser = $configuration['emailGuest' . $i]; | |
1576 | - if ($specificUser) | |
1577 | - $specificUsers[] = $specificUser; | |
1578 | - // $mailList[sizeof($mailList)] = $configuration['emailGuest' . $i]; | |
1579 | - $mailList[] = $specificUser; | |
1580 | - // Le if vérifie que la ligne soit pas null | |
1581 | - } | |
1582 | - } | |
1583 | - | |
1584 | - // On dedoublonne la liste des mails, c'pas tres cool de se faire spam 2-3 fois pour la meme action sur le meme materiel, non mais ! | |
1585 | - $mailList = array_unique($mailList); | |
1586 | - | |
1587 | - // ... Pour envoyer les mails aux personnes concernees | |
1588 | - foreach ($mailList as $mail) { | |
1589 | - // On envoi des mails à toute la liste, sauf pour "l'acteur", il sait ce qu'il a fait, pas besoin de le spam non plus hein | |
1590 | - //if ($mail == $_SESSION['Auth']['User']['mail'][0]) | |
1591 | - //continue; | |
1592 | - $message = $msg; // Sisi, cette variable $message est utile, m'enfin vous pouvez toujours essayer de la supprimer ..... Et pensez à regarder le contenu de vos mails !!! Sinon ca fait une tumeur | |
1593 | - // Génération du message "Vous recevez ce message en tant que $role" | |
1594 | - // Si $role inexistant (lorsque c'est un mail de la liste entrée en configuration), le message est plutot "Vous recevez ce message car vous avez demandé à le recevoir. [...]" | |
1595 | - //if ($specificUsers) | |
1596 | - $role = "car vous etes dans la liste spécifique des emails de LabInvent. \n\nPour faire retirer votre mail de cette liste, veuillez contacter un super-administrateur."; | |
1597 | - /* (EP 13/319) : à quoi sert toute cette suite du texte du mail ??? | |
1598 | - * Ca sent le bon vieux copier-coller sans réfléchir... | |
1599 | - //else { | |
1600 | - //$role = $role. TableRegistry::get('Users')->find() | |
1601 | - $role = $role. TableRegistry::getTableLocator()->get('Users')->find() | |
1602 | - ->select('role') | |
1603 | - ->where([ | |
1604 | - 'email =' => $mail | |
1605 | - ]) | |
1606 | - ->first()['role'].' + '; | |
1607 | - // Default role is Utilisateur (for people in LDAP but without priviledge, not in the users table) | |
1608 | - // if (is_null($role)) | |
1609 | - $role =$role .'en tant que ' .'Utilisateur'; | |
1610 | - //} | |
1611 | - */ | |
1612 | - if ($entity != null && ! in_array($action, [ | |
1613 | - 'delete', | |
1614 | - 'statusValidated', | |
1615 | - 'statusCreated' | |
1616 | - ])) { | |
1617 | - $message .= "\n\nVeuillez vérifier et compléter si besoin la fiche correspondante."; | |
1618 | - $message .= "\n\nVous recevez ce message " . $role; | |
1619 | - //en fonction du mode à l'appel, on utilise un envoi de mail différent | |
1620 | - | |
1621 | - | |
1622 | - switch($mode) { | |
1623 | - //si le mode 1 est sélectionné c'est un envoi de mail avec ajout d'une photo | |
1624 | - //explique le document qui a été ajouté, et le met en pièce jointe | |
1625 | - case 1 : | |
1626 | - $this->sendEmailImgTo("$subject", $message, $mail, $configuration, $nomFic); | |
1627 | - break; | |
1628 | - //si le mode 2 est sélectionné c'est un envoi de mail avec ajout d'un document | |
1629 | - //à personnaliser | |
1630 | - case 2 : | |
1631 | - $this->sendEmailPJTo("$subject", $message, $mail, $configuration, $nomFic); | |
1632 | - break; | |
1633 | - //si le mode defaut est sélectionné c'est un simple envoi de mail | |
1634 | - //récapitule une action (mieux pour les add...) | |
1635 | - default : | |
1636 | - $this->sendEmailTo("$subject", $message, $mail, $configuration); | |
1637 | - break; | |
1638 | - } | |
1639 | - | |
1640 | - } | |
1641 | - } | |
1642 | - return $mailList; | |
1643 | -} | |
1644 | -} | |
1350 | + if (!$configuration->envoi_mail && !$configuration->envoi_mail_guests) return null; | |
1351 | + | |
1352 | + $mailList = []; | |
1353 | + // On détermine le message et le sujet du mail en fonction de l'action effectuee | |
1354 | + // on bloque l'envoi de mail à l'edition et à la validation pour eviter trop d'envoi de mail | |
1355 | + // le temps que soit trouvé une autre solution | |
1356 | + $acteur = $_SESSION['Auth']['User']['givenname'][0] . ' ' . $_SESSION['Auth']['User']['sn'][0]; | |
1357 | + | |
1358 | + /* | |
1359 | + * - mail pour un MATERIEL | |
1360 | + */ | |
1361 | + | |
1362 | + // if ($entity != null) { | |
1363 | + if ($entity instanceof Materiel) { | |
1364 | + $materiel = $entity; | |
1365 | + $nom_materiel = $materiel->designation; | |
1366 | + if ($subject == null && $msg == null) { | |
1367 | + $msgMore = ''; | |
1368 | + Switch ($action) { | |
1369 | + case 'add': | |
1370 | + $subject = "Ajout d'un matériel"; | |
1371 | + $msg = "$acteur a ajouté le matériel \"$nom_materiel\""; | |
1372 | + break; | |
1373 | + case 'edit': | |
1374 | + $subject = "Modification d'un matériel"; | |
1375 | + $msg = "$acteur a modifié le matériel \"$nom_materiel\""; | |
1376 | + break; | |
1377 | + case 'delete': | |
1378 | + $subject = "Suppression d'un matériel"; | |
1379 | + $msg = "$acteur a supprimé le matériel \"$nom_materiel\""; | |
1380 | + // @todo: mettre le nom des domaine, categ, et sous-categ, et non pas l'id | |
1381 | + if ($materiel->sur_categorie_id != "") | |
1382 | + $msgMore .= "\n\nDomaine : " . $materiel->sur_categorie_id; | |
1383 | + if ($materiel->categorie_id != "") | |
1384 | + $msgMore .= "\n\nCatégorie : " . $materiel->categorie_id; | |
1385 | + if ($materiel->sous_categorie_id != "") | |
1386 | + $msgMore .= "\n\nSous-catégorie : " . $materiel->sous_categorie_id; | |
1387 | + if ($materiel->description != "") | |
1388 | + $msgMore .= "\n\nDescription :\n" . $materiel->description; | |
1389 | + break; | |
1390 | + case 'statusCreated': | |
1391 | + $subject = "Dé-validation d'un matériel"; | |
1392 | + $msg = "$acteur a dé-validé le matériel \"$nom_materiel\""; | |
1393 | + break; | |
1394 | + case 'statusValidated': | |
1395 | + $subject = "Validation d'un matériel"; | |
1396 | + $msg = "$acteur a validé le matériel \"$nom_materiel\""; | |
1397 | + break; | |
1398 | + case 'statusToBeArchived': | |
1399 | + $subject = "Demande d'archivage d'un matériel"; | |
1400 | + $msg = "$acteur a demandé l'archivage du matériel \"$nom_materiel\""; | |
1401 | + break; | |
1402 | + case 'statusArchived': | |
1403 | + $subject = "Archivage d'un matériel"; | |
1404 | + $msg = "$acteur a archivé le matériel \"$nom_materiel\""; | |
1405 | + break; | |
1406 | + case 'setLabelIsPlaced': | |
1407 | + $subject = "Etiquette posée sur un matériel"; | |
1408 | + $msg = "Etiquette posée sur le matériel \"$nom_materiel\""; | |
1409 | + break; | |
1410 | + case 'printLabelRuban': | |
1411 | + $subject = "Etiquette imprimée"; | |
1412 | + $msg = "L'étiquette concerant votre matériel \"$nom_materiel\" a été imprimée"; | |
1413 | + $mailList[0] = $materiel->email_responsable; | |
1414 | + default: | |
1415 | + $subject = "Action \"$action\" sur un matériel"; | |
1416 | + $msg = "$acteur a effectué l'action \"$action\" sur le matériel \"$nom_materiel\""; | |
1417 | + break; | |
1418 | + } // end switch | |
1419 | + // (EP) Ajout de l'ID du materiel !!! | |
1420 | + $msg .= " (id=" . $materiel->id . ")."; | |
1421 | + // Only for "delete" action (for the moment...) | |
1422 | + if ($msgMore) | |
1423 | + $msg .= $msgMore; | |
1424 | + // $msg .= "\n\n"; | |
1425 | + } // subject is null | |
1426 | + | |
1427 | + // Et maintenant on construit la liste de mails... | |
1428 | + // Si l'envoi général est activé (et que l'action ne correspond pas à 'printLabelRuban'): | |
1429 | + if ($configuration->envoi_mail && $action != 'printLabelRuban') { | |
1430 | + | |
1431 | + // owner's mail (utilisateur du matériel) | |
1432 | + $mailList[0] = $materiel->email_responsable; | |
1433 | + | |
1434 | + // resp's mail | |
1435 | + $mailsRespMetier = []; | |
1436 | + $mailRespThematique = []; | |
1437 | + | |
1438 | + //TODO: changer ça car c'est pas forcément id=1 | |
1439 | + if ($materiel->groupes_metier_id != null && $materiel->groupes_metier_id != 1) { | |
1440 | + // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe | |
1441 | + $mailsRespMetier = TableRegistry::getTableLocator()->get('Users')->find() | |
1442 | + ->select('email') | |
1443 | + ->where([ | |
1444 | + 'role =' => 'Responsable', | |
1445 | + 'groupes_metier_id =' => $materiel->groupes_metier_id | |
1446 | + ]) | |
1447 | + ->toArray(); | |
1448 | + } | |
1449 | + | |
1450 | + //TODO: changer ça car c'est pas forcément id=1 | |
1451 | + if ($materiel->groupes_thematique_id != null && $materiel->groupes_thematique_id != 1) { | |
1452 | + // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe | |
1453 | + $mailRespThematique = TableRegistry::getTableLocator()->get('Users')->find() | |
1454 | + ->select('email') | |
1455 | + ->where([ | |
1456 | + 'role =' => 'Responsable', | |
1457 | + 'groupe_thematique_id =' => $materiel->groupes_thematique_id | |
1458 | + ]) | |
1459 | + ->toArray(); | |
1460 | + } | |
1461 | + | |
1462 | + if ($mailsRespMetier != [] || $mailRespThematique != []) { | |
1463 | + $mailsResp = array_unique(array_merge($mailsRespMetier, $mailRespThematique)); | |
1464 | + /* | |
1465 | + for ($i = 0; $i < sizeof($mailsResp); $i ++) { | |
1466 | + $mailList[] = $mailsResp[$i]['email']; | |
1467 | + // $mailList[sizeof($mailList)] = $mailsResp[$i]['email']; | |
1468 | + } | |
1469 | + */ | |
1470 | + foreach ($mailsResp as $mailResp) $mailList[] = $mailResp['email']; | |
1471 | + $mailList = array_unique($mailList); | |
1472 | + } | |
1473 | + //debug($mailList);exit(); | |
1474 | + | |
1475 | + // mail admin de reference (ici appele gestionnaire) -> Partie administration | |
1476 | + // Cela a été mis en commentaire car de toute façon l'utilisateur va voir un administratif pour faire valider sa fiche, | |
1477 | + // Pas la peine de spam l'administration de mails non plus hein ! | |
1478 | + | |
1479 | + /* | |
1480 | + * if ($action != 'statusValidated' && $action != 'statusArchived') { | |
1481 | + * $mailsAdmin = TableRegistry::getTableLocator()->get('Users')->find()->select('email') | |
1482 | + * ->where(['role =' => 'Administration']) | |
1483 | + * ->toArray(); | |
1484 | + * for ($i = 0; $i < sizeof($mailsAdmin); $i ++) { | |
1485 | + * $mailList[sizeof($mailList)] = $mailsAdmin[$i]['email']; | |
1486 | + * } | |
1487 | + * } | |
1488 | + */ | |
1489 | + } | |
1490 | + } // Materiel | |
1491 | + | |
1492 | + | |
1493 | + /* | |
1494 | + * - mail pour un DOCUMENT LIÉ | |
1495 | + */ | |
1496 | + | |
1497 | + // @todo: ajouter quelques infos dans ces cas : | |
1498 | + else if ($entity instanceof Document) { | |
1499 | + | |
1500 | + //debug("doc"); exit; | |
1501 | + $doc = $entity; | |
1502 | + $nom_doc = $doc->nom; | |
1503 | + $id_doc = $doc->id; | |
1504 | + $type_doc = $doc->type_doc; | |
1505 | + $id_mat = $doc->materiel_id; | |
1506 | + $id_suiv = $doc->suivi_id; | |
1507 | + if ($subject == null && $msg == null) { | |
1508 | + $msgMore = ''; | |
1509 | + Switch ($action) { | |
1510 | + case 'add': | |
1511 | + $subject = "Ajout d'un document"; | |
1512 | + $msg = "$acteur a ajouté le document \"$nom_doc\" au format \"$type_doc\""; | |
1513 | + break; | |
1514 | + //ajoutons un contenu de message plus clair pour l'envoi de document | |
1515 | + case 'mailDevis': | |
1516 | + $subject = "$acteur a partagé un document avec vous"; | |
1517 | + $msg = "$acteur après avoir ajouté le document \"$nom_doc\", a voulu le partager avec vous, c'est un document ayant le format \"$type_doc\" ."; | |
1518 | + $msg .="\n\n Le document est en pièce jointe."; | |
1519 | + break; | |
1520 | + //L'edition | |
1521 | + //comme il n'étais pas actuellement activé, on le laisse en commentaire | |
1522 | + //case 'edit': | |
1523 | + //$subject = "Modification d'un document"; | |
1524 | + //$msg = "$acteur a modifié le matériel \"$nom_doc\""; | |
1525 | + //break; | |
1526 | + //La suppression | |
1527 | + //comme il n'étais pas actuellement activé, on le laisse en commentaire | |
1528 | + //case 'delete': | |
1529 | + //$subject = "Suppression d'un document"; | |
1530 | + //$msg = "$acteur a supprimé le document\"$nom_doc\""; | |
1531 | + //break; | |
1532 | + default: | |
1533 | + $subject = "Action \"$action\" sur un matériel"; | |
1534 | + $msg = "$acteur a effectué l'action \"$action\" sur le document \"$nom_doc\" au format \"$type_doc\""; | |
1535 | + break; | |
1536 | + } // end switch | |
1537 | + // (EP) Ajout de l'ID du document, et de l'id du materiel associé !!! | |
1538 | + //On change le contenu en fonction de si le document a été lié à un matériel, ou a un suivi | |
1539 | + if (!$id_mat == Null) { | |
1540 | + $msg .= "\n\n (id doc=".$doc->id.", Materiel associé d'id=\"$id_mat\")"; | |
1541 | + $nomFic =$id_mat."_".$nom_doc."_".$id_doc.".".$type_doc; | |
1542 | + } else { | |
1543 | + $msg .= "\n\n (id doc=".$doc->id.", Materiel associé d'id=\"$id_suiv\")"; | |
1544 | + $nomFic =$id_suiv."_".$nom_doc."_".$id_doc.".".$type_doc; | |
1545 | + } | |
1546 | + } | |
1547 | + | |
1548 | + // Si le doc est lié à un matos, on ajoute le mail du gestionnaire du matos | |
1549 | + // (ssi l'envoi général est activé et que l'action ne correspond pas à 'printLabelRuban') | |
1550 | + if ( !$id_mat == Null && $configuration->envoi_mail && $action!='printLabelRuban' ) { | |
1551 | + // (EP) Recup du materiel associé | |
1552 | + /* | |
1553 | + $materiel = TableRegistry::getTableLocator()->get('Materiels')->find() | |
1554 | + ->where([ | |
1555 | + 'id =' => $doc->materiel_id | |
1556 | + ])->first(); | |
1557 | + */ | |
1558 | + $materiel = TableRegistry::getTableLocator()->get('Materiels')->get($doc->materiel_id); | |
1559 | + //debug("envoi"); | |
1560 | + //debug("matos = ".$materiel); | |
1561 | + //exit; | |
1562 | + // owner's mail (utilisateur du matériel associé ) | |
1563 | + //$mailList[0] = $entity->materiel->email_responsable; | |
1564 | + // (MI) - gestionaire ratachée au matériel | |
1565 | + //$mailList[1]= TableRegistry::getTableLocator()->get('Users')->find() | |
1566 | + $mailList[]= TableRegistry::getTableLocator()->get('Users')->find() | |
1567 | + ->select('email') | |
1568 | + ->where([ | |
1569 | + 'role =' => 'Administration', | |
1570 | + 'id =' => $materiel->gestionnaire_id | |
1571 | + ]); | |
1572 | + } // if matos | |
1573 | + | |
1574 | + } // DOC lié | |
1575 | + | |
1576 | + else if ($entity instanceof Suivi) { | |
1577 | + ; | |
1578 | + } | |
1579 | + | |
1580 | + else if ($entity instanceof Emprunt) { | |
1581 | + ; | |
1582 | + } | |
1583 | + | |
1584 | + /* | |
1585 | + * @todo: | |
1586 | + * else if ($entity instanceof Configuration) { | |
1587 | + * ; | |
1588 | + * } | |
1589 | + * ... etc ... (il faut qu'on soit plus précis) | |
1590 | + */ | |
1591 | + | |
1592 | + // Et maintenant on construit la liste de mails... | |
1593 | + | |
1594 | + // Si l'envoi à la liste spécifiée est activé (et que l'action ne correspond pas à 'printLabelRuban'): | |
1595 | + $specificUsers = []; | |
1596 | + if ($configuration->envoi_mail_guests && $action != 'printLabelRuban') { | |
1597 | + // mail aux adresses specifiees dans la config | |
1598 | + for ($i = 0; $i < 11; $i ++) { | |
1599 | + $specificUser = $configuration['emailGuest' . $i]; | |
1600 | + if ($specificUser) | |
1601 | + $specificUsers[] = $specificUser; | |
1602 | + // $mailList[sizeof($mailList)] = $configuration['emailGuest' . $i]; | |
1603 | + $mailList[] = $specificUser; | |
1604 | + // Le if vérifie que la ligne soit pas null | |
1605 | + } | |
1606 | + } | |
1607 | + | |
1608 | + // On dedoublonne la liste des mails, c'pas tres cool de se faire spam 2-3 fois pour la meme action sur le meme materiel, non mais ! | |
1609 | + // Ca supprime aussi les lignes vides | |
1610 | + $mailList = array_unique($mailList); | |
1611 | + // ... Pour envoyer les mails aux personnes concernees | |
1612 | + foreach ($mailList as $mail) { | |
1613 | + // On envoi des mails à toute la liste, sauf pour "l'acteur", il sait ce qu'il a fait, pas besoin de le spam non plus hein | |
1614 | + //if ($mail == $_SESSION['Auth']['User']['mail'][0]) | |
1615 | + //continue; | |
1616 | + $message = $msg; // Sisi, cette variable $message est utile, m'enfin vous pouvez toujours essayer de la supprimer ..... Et pensez à regarder le contenu de vos mails !!! Sinon ca fait une tumeur | |
1617 | + // Génération du message "Vous recevez ce message en tant que $role" | |
1618 | + // Si $role inexistant (lorsque c'est un mail de la liste entrée en configuration), le message est plutot "Vous recevez ce message car vous avez demandé à le recevoir. [...]" | |
1619 | + //if ($specificUsers) | |
1620 | + $role = "car vous etes dans la liste spécifique des emails de LabInvent. \n\nPour faire retirer votre mail de cette liste, veuillez contacter un super-administrateur."; | |
1621 | + /* (EP 13/319) : à quoi sert toute cette suite du texte du mail ??? | |
1622 | + * Ca sent le bon vieux copier-coller sans réfléchir... | |
1623 | + //else { | |
1624 | + //$role = $role. TableRegistry::get('Users')->find() | |
1625 | + $role = $role. TableRegistry::getTableLocator()->get('Users')->find() | |
1626 | + ->select('role') | |
1627 | + ->where([ | |
1628 | + 'email =' => $mail | |
1629 | + ]) | |
1630 | + ->first()['role'].' + '; | |
1631 | + // Default role is Utilisateur (for people in LDAP but without priviledge, not in the users table) | |
1632 | + // if (is_null($role)) | |
1633 | + $role =$role .'en tant que ' .'Utilisateur'; | |
1634 | + //} | |
1635 | + */ | |
1636 | + if ($entity != null && !in_array($action, ['delete','statusValidated','statusCreated'])) { | |
1637 | + $message .= "\n\nVeuillez vérifier et compléter si besoin la fiche correspondante."; | |
1638 | + $message .= "\n\nVous recevez ce message " . $role; | |
1639 | + //en fonction du mode à l'appel, on utilise un envoi de mail différent | |
1640 | + switch($mode) { | |
1641 | + //si le mode 1 est sélectionné c'est un envoi de mail avec ajout d'une photo | |
1642 | + //explique le document qui a été ajouté, et le met en pièce jointe | |
1643 | + case 1 : | |
1644 | + $this->sendEmailImgTo("$subject", $message, $mail, $configuration, $nomFic); | |
1645 | + break; | |
1646 | + //si le mode 2 est sélectionné c'est un envoi de mail avec ajout d'un document | |
1647 | + //à personnaliser | |
1648 | + case 2 : | |
1649 | + $this->sendEmailPJTo("$subject", $message, $mail, $configuration, $nomFic); | |
1650 | + break; | |
1651 | + //si le mode defaut est sélectionné c'est un simple envoi de mail | |
1652 | + //récapitule une action (mieux pour les add...) | |
1653 | + default : | |
1654 | + $this->sendEmailTo("$subject", $message, $mail, $configuration); | |
1655 | + break; | |
1656 | + } // switch | |
1657 | + } | |
1658 | + } //foreach ($mailList as $mail) | |
1659 | + return $mailList; | |
1660 | + | |
1661 | + } // function sendmail | |
1662 | + | |
1663 | + | |
1664 | + | |
1665 | +} // class AppController | |
1645 | 1666 | ... | ... |
src/Controller/DocumentsController.php
... | ... | @@ -4,6 +4,7 @@ namespace App\Controller; |
4 | 4 | //use App\Controller\AppController; |
5 | 5 | use Cake\ORM\TableRegistry; |
6 | 6 | use FPDF; |
7 | +use Cake\ORM\Locator\TableLocator; | |
7 | 8 | //use TCPDF; |
8 | 9 | |
9 | 10 | |
... | ... | @@ -16,6 +17,15 @@ use FPDF; |
16 | 17 | class DocumentsController extends AppController |
17 | 18 | { |
18 | 19 | |
20 | + // Formats autorisés pour photo | |
21 | + var $photo_formats = ['png','jpg','jpeg']; | |
22 | + | |
23 | + // private pour qu'elle ne puisse pas être appelée via url comme une action | |
24 | + private function is_photo_type_from_extension($doc) { | |
25 | + return in_array($doc->type_doc, $this->photo_formats); | |
26 | + } | |
27 | + | |
28 | + | |
19 | 29 | /** |
20 | 30 | * Give authorization for documents |
21 | 31 | * |
... | ... | @@ -214,103 +224,193 @@ class DocumentsController extends AppController |
214 | 224 | ]); |
215 | 225 | } |
216 | 226 | |
227 | + | |
217 | 228 | /** |
218 | 229 | * Add method |
219 | 230 | * |
220 | 231 | * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. |
221 | 232 | */ |
222 | - public function add() | |
223 | - { | |
224 | - $document = $this->Documents->newEntity(); | |
233 | + //public function add() | |
234 | + public function add($valeurs = null, $erreurs = null) { | |
235 | + $this->add_or_edit(TRUE, null, $valeurs, $erreurs); | |
236 | + } | |
237 | + | |
238 | + /** | |
239 | + * EDit method | |
240 | + * | |
241 | + * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise. | |
242 | + */ | |
243 | + public function edit($id = null) { | |
244 | + $this->add_or_edit(FALSE, $id); | |
245 | + } | |
246 | + | |
247 | + /** | |
248 | + * Add or Edit method (do either add() or edit()) | |
249 | + * => Factorisation de add() et edit() | |
250 | + * (voir aussi https://book.cakephp.org/3.0/en/orm.html) | |
251 | + * | |
252 | + * @param $IS_ADD: True = add ; False = edit | |
253 | + * @return \Cake\Network\Response|void Redirects on successful add/edit, renders view otherwise. | |
254 | + */ | |
255 | + private function add_or_edit($IS_ADD, $id=null, $valeurs=null, $erreurs=null) { | |
225 | 256 | |
257 | + $this->myDebug("step 3: DocumentsController.add_or_edit()"); | |
258 | + | |
259 | + // add | |
260 | + | |
261 | + $document = $IS_ADD ? $this->Documents->newEntity() : $this->Documents->get($id, ['contain' => []]); | |
262 | + | |
226 | 263 | // POST (on vient de soumettre un nouveau doc) |
264 | + /* | |
265 | + // ADD | |
227 | 266 | if ($this->request->is('post')) { |
267 | + // EDIT | |
268 | + if ($this->request->is(['post','patch','put'])) { | |
269 | + */ | |
270 | + // (EP) Je suppose qu'on peut utiliser le meme test pour ADD ou EDIT | |
271 | + if ($this->request->is(['post','patch','put'])) { | |
272 | + | |
228 | 273 | $document = $this->Documents->patchEntity($document, $this->request->getData()); |
229 | 274 | |
230 | - $nomType = $this->Documents->TypeDocuments->find() | |
231 | - ->where([ | |
232 | - 'id =' => $document->type_document_id | |
233 | - ]) | |
234 | - ->first()['nom']; | |
235 | - | |
236 | - if (isset($this->request->getAttribute('params')['pass'][2]) && $this->request->getAttribute('params')['pass'][2] == 'photo') { | |
237 | - $document->set('photo', 1); | |
275 | + if ($IS_ADD) { | |
276 | + /* | |
277 | + $nomType = $this->Documents->TypeDocuments->find() | |
278 | + ->where([ | |
279 | + 'id =' => $document->type_document_id | |
280 | + ])->first()['nom']; | |
281 | + */ | |
282 | + $nomType = $this->Documents->TypeDocuments->get($document->type_document_id)['nom']; | |
283 | + if (isset($this->request->getAttribute('params')['pass'][2]) && $this->request->getAttribute('params')['pass'][2] == 'photo') | |
284 | + $document->set('photo', 1); | |
238 | 285 | } |
239 | 286 | |
240 | - if ($this->Documents->save($document)) { | |
241 | - $this->Flash->success(__('Le fichier a bien été ajouté.')); | |
287 | + // SAVE | |
288 | + $action = $IS_ADD ? 'ajouté' : 'modifié'; | |
289 | + // - NOT SAVED | |
290 | + if (! $this->Documents->save($document)) { | |
291 | + //$this->myDebug($document->getErrors()); | |
292 | + //debug($document->getErrors()); | |
293 | + //debug($document); | |
294 | + $this->Flash->error(__("Le fichier n'a pas pu être $action")); | |
295 | + } | |
296 | + // - SAVED ok | |
297 | + else { | |
298 | + $this->Flash->success(__("Le fichier a bien été $action")); | |
299 | + //$id = $document->materiel_id; | |
300 | + $parent_id = $document->materiel_id; | |
242 | 301 | |
243 | - $id = $document->materiel_id; | |
244 | - if (! empty($id)) { | |
245 | - $materielTable = TableRegistry::get('Materiels'); | |
246 | - $materiel = $materielTable->get($id); | |
302 | + if (!empty($parent_id)) { | |
303 | + $doc_type = 'matériel'; | |
304 | + //$parent_name = $parent->designation." (id = $parent->id)"; | |
305 | + $parent_controller = 'materiels'; | |
247 | 306 | } |
248 | - | |
249 | - if (isset($this->request->getAttribute('params')['pass'][2]) && $this->request->getAttribute('params')['pass'][2] == 'photo') { | |
250 | - | |
251 | - $photoIdOld = $materiel->get('photo_id'); | |
252 | - if ($photoIdOld !== null) { | |
253 | - $docOld = TableRegistry::get('Documents')->get($photoIdOld); | |
254 | - $this->Documents->delete($docOld); | |
255 | - } | |
256 | - | |
257 | - $materiel->set('photo_id', $document->id); | |
258 | - $materielTable->save($materiel); | |
307 | + else { | |
308 | + $parent_id = $document->suivi_id; | |
309 | + $doc_type = 'suivi'; | |
310 | + //$parent_name = 'Suivi#'.$document->suivi_id; | |
311 | + $parent_controller = 'suivis'; | |
259 | 312 | } |
260 | 313 | |
261 | - $userName = $this->LdapAuth->user('sn')[0] . ' ' . $this->LdapAuth->user('givenname')[0]; | |
262 | - $userEmail = $this->LdapAuth->user('mail')[0]; | |
263 | - | |
264 | ||
265 | - $id = $document->materiel_id; | |
266 | - if (empty($id)) { | |
267 | - // Ajout de doc au suivi | |
268 | - $id = $document->suivi_id; | |
269 | - // $this->sendEmailToManagementWith('[LabInvent] Ajout d\'un document', $userName.' (email = '.$userEmail.') a ajouté un document de type "'.$nomType.'" au suivi "Suivi '.$document->suivi_id.'".'); | |
270 | - $this->sendEmail($document, '[LabInvent] Ajout d\'un document', $userName . ' a ajouté un document de type "' . $nomType . '" au suivi "Suivi ' . $document->suivi_id . '".'); | |
271 | - return $this->redirect([ | |
272 | - 'controller' => 'suivis', | |
273 | - 'action' => 'view', | |
274 | - $id | |
275 | - ]); | |
276 | - } else { | |
277 | - // Ajout de doc au matériel | |
278 | - // $this->sendEmailToManagementWith('[LabInvent] Ajout d\'un document', $userName.' (email = '.$userEmail.') a ajouté un document de type "'.$nomType.'" au matériel "'.$materiel->designation.'" (id = '.$materiel->id.').'); | |
279 | - $this->sendEmail($document, '[LabInvent] Ajout d\'un document', $userName . ' a ajouté un document de type "' . $nomType . '" au matériel "' . $materiel->designation . '" (id = ' . $materiel->id . ').'); | |
280 | - return $this->redirect([ | |
281 | - 'controller' => 'materiels', | |
282 | - 'action' => 'view', | |
283 | - $id | |
284 | - ]); | |
285 | - } | |
286 | - } else { | |
287 | - //$this->myDebug($document->getErrors()); | |
288 | - debug($document->getErrors()); | |
289 | - debug($document); | |
290 | - $this->Flash->error(__('Le fichier n\'a pas pu être ajouté.')); | |
291 | - } | |
314 | + if ($IS_ADD) { | |
315 | + /* | |
316 | + // materiel | |
317 | + if (! empty($parent_id)) { | |
318 | + //$materielTable = TableRegistry::get('Materiels'); | |
319 | + $materielTable = TableRegistry::getTableLocator()->get('Materiels'); | |
320 | + //$materiel = $materielTable->get($id); | |
321 | + $parent = $materielTable->get($parent_id); | |
322 | + } | |
323 | + */ | |
324 | + $parentTable = TableRegistry::getTableLocator()->get($parent_controller); | |
325 | + $parent = $parentTable->get($parent_id); | |
326 | + // (EP 20200320) Ca n'est plus utilisé, mais je garde au cas où | |
327 | + // S'il y avait déjà une photo UNIQUE (mais ça n'est plus le cas puisqu'on associe N photos) liée au parent (materiel ou suivi) | |
328 | + // on la remplace par cette nouvelle photo | |
329 | + if (isset($this->request->getAttribute('params')['pass'][2]) && $this->request->getAttribute('params')['pass'][2] == 'photo') { | |
330 | + //$photoIdOld = $materiel->get('photo_id'); | |
331 | + $photoIdOld = $parent->get('photo_id'); | |
332 | + if ($photoIdOld !== null) { | |
333 | + $docOld = TableRegistry::get('Documents')->get($photoIdOld); | |
334 | + $this->Documents->delete($docOld); | |
335 | + } | |
336 | + //$materiel->set('photo_id', $document->id); | |
337 | + //$materielTable->save($materiel); | |
338 | + $parent->set('photo_id', $document->id); | |
339 | + $parentTable->save($parent); | |
340 | + } | |
341 | + $userName = $this->LdapAuth->user('sn')[0] . ' ' . $this->LdapAuth->user('givenname')[0]; | |
342 | + $userEmail = $this->LdapAuth->user('mail')[0]; | |
343 | + | |
344 | + // send EMAIL et redirige vers vue détaillée | |
345 | + /* | |
346 | + //$id = $document->materiel_id; | |
347 | + if (!empty($parent_id)) { | |
348 | + $doc_type = 'matériel'; | |
349 | + $parent_name = $parent->designation." (id = $parent->id)"; | |
350 | + //$parent_controller = 'materiels'; | |
351 | + } | |
352 | + else { | |
353 | + $parent_id = $document->suivi_id; | |
354 | + $doc_type = 'suivi'; | |
355 | + $parent_name = 'Suivi#'.$document->suivi_id; | |
356 | + //$parent_controller = 'suivis'; | |
357 | + } | |
358 | + */ | |
359 | + $parent_name = $parent_controller=='materiels' ? | |
360 | + $parent->designation." (id = $parent->id)" | |
361 | + : | |
362 | + 'Suivi#'.$document->suivi_id; | |
363 | + $this->sendEmail($document, "[LabInvent] Ajout d'un document : $userName a ajouté un document de type '$nomType' au $doc_type $parent_name"); | |
364 | + } // ADD | |
365 | + //$parent_controller = empty($parent_id) ? 'suivis' : 'materiels'; | |
366 | + return $this->redirect([ | |
367 | + 'controller' => $parent_controller, | |
368 | + 'action' => 'view', | |
369 | + $parent_id | |
370 | + ]); | |
371 | + } // SAVED ok | |
372 | + | |
292 | 373 | } // fin du traitement POST |
293 | 374 | |
294 | - if (isset($this->request->getAttribute('params')['pass'][1]) && $this->request->getAttribute('params')['pass'][1] == 'mat') { | |
295 | - $materiel = $this->Documents->Materiels->find('list', [ | |
296 | - 'keyField' => 'id', | |
297 | - 'valueField' => 'numero_laboratoire' | |
298 | - ])->where([ | |
299 | - 'id =' => $this->request->getAttribute('params')['pass'][0] | |
300 | - ]); | |
301 | - $this->set('materiel', $materiel); | |
302 | - } else { | |
303 | - $suivi = $this->Documents->Suivis->find('list', [ | |
304 | - 'keyField' => 'id', | |
305 | - 'valueField' => 'id' | |
306 | - ])->where([ | |
307 | - 'id =' => $this->request->getAttribute('params')['pass'][0] | |
308 | - ]); | |
309 | - $this->set('suivi', $suivi); | |
375 | + // Traitement juste avant d'afficher la vue ADD ou EDIT | |
376 | + // On crée les variables nécessaires à la vue et on les lui passe | |
377 | + // ADD | |
378 | + if ($IS_ADD) { | |
379 | + $PARENT_IS_MATOS = (isset($this->request->getAttribute('params')['pass'][1]) && $this->request->getAttribute('params')['pass'][1] == 'mat'); | |
380 | + $parent_id = $this->request->getAttribute('params')['pass'][0]; | |
310 | 381 | } |
382 | + // EDIT | |
383 | + else { | |
384 | + $PARENT_IS_MATOS = ! empty($document->materiel_id); | |
385 | + $parent_id = $PARENT_IS_MATOS ? $document->materiel_id : $document->suivi_id; | |
386 | + } | |
387 | + | |
388 | + //$parent_controller = $PARENT_IS_MATOS ? 'Materiels' : 'Suivis'; | |
389 | + $parent_controller = $PARENT_IS_MATOS ? 'materiels' : 'suivis'; | |
390 | + $parent = $this->Documents->$parent_controller->get($parent_id); | |
391 | + | |
392 | + // Set some variables for the view | |
393 | + $this->set(compact('parent')); | |
394 | + $doc_type = $PARENT_IS_MATOS ? 'matériel' : 'suivi'; | |
395 | + $this->set(compact('doc_type')); | |
396 | + $this->set(compact('parent_controller')); | |
397 | + $parent_name = $PARENT_IS_MATOS ? $parent->designation." (id = $parent->id)" : 'Suivi#'.$document->suivi_id; | |
398 | + $this->set(compact('parent_name')); | |
399 | + | |
400 | + $IS_PHOTO = $IS_ADD ? | |
401 | + (isset($this->request->getAttribute('params')['pass'][2]) && $this->request->getAttribute('params')['pass'][2] == 'photo') | |
402 | + : | |
403 | + $document->photo; | |
404 | + | |
405 | + if ($IS_PHOTO) $this->set('photo', 1); | |
406 | + $typesD = $this->Documents->TypeDocuments->find('list', [ | |
407 | + 'keyField' => 'id', | |
408 | + 'valueField' => 'nom', | |
409 | + 'order' => 'TypeDocuments.nom' | |
410 | + ]); | |
311 | 411 | |
312 | - if (isset($this->request->getAttribute('params')['pass'][2]) && $this->request->getAttribute('params')['pass'][2] == 'photo') { | |
313 | - $this->set('photo', 1); | |
412 | + // ADD only | |
413 | + if ($IS_ADD && $IS_PHOTO) { | |
314 | 414 | $typesD = $this->Documents->TypeDocuments->find('list', [ |
315 | 415 | 'keyField' => 'id', |
316 | 416 | 'valueField' => 'nom' |
... | ... | @@ -320,102 +420,20 @@ class DocumentsController extends AppController |
320 | 420 | $idType = $this->Documents->TypeDocuments->find() |
321 | 421 | ->where([ |
322 | 422 | 'nom =' => 'Photo' |
323 | - ]) | |
324 | - ->first()['id']; | |
423 | + ])->first()['id']; | |
325 | 424 | $this->set('idType', $idType); |
326 | - } else { | |
327 | - $typesD = $this->Documents->TypeDocuments->find('list', [ | |
328 | - 'keyField' => 'id', | |
329 | - 'valueField' => 'nom', | |
330 | - 'order' => 'TypeDocuments.nom' | |
331 | - ]); | |
332 | - } | |
333 | - | |
334 | - $this->set(compact('document', 'typesD')); | |
335 | - $this->set('_serialize', [ | |
336 | - 'document' | |
337 | - ]); | |
338 | - } | |
339 | - | |
340 | - /** | |
341 | - * EDit method | |
342 | - * | |
343 | - * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise. | |
344 | - */ | |
345 | - public function edit($id = null) | |
346 | - { | |
347 | - $document = $this->Documents->get($id, [ | |
348 | - 'contain' => [] | |
349 | - ]); | |
350 | - | |
351 | - if ($this->request->is([ | |
352 | - 'patch', | |
353 | - 'post', | |
354 | - 'put' | |
355 | - ])) { | |
356 | - $document = $this->Documents->patchEntity($document, $this->request->getData()); | |
357 | - | |
358 | - if ($this->Documents->save($document)) { | |
359 | - $this->Flash->success(__('Le fichier a bien été edité.')); | |
360 | - | |
361 | - $id = $document->materiel_id; | |
362 | - if (empty($id)) { | |
363 | - $id = $document->suivi_id; | |
364 | - return $this->redirect([ | |
365 | - 'controller' => 'suivis', | |
366 | - 'action' => 'view', | |
367 | - $id | |
368 | - ]); | |
369 | - } else | |
370 | - return $this->redirect([ | |
371 | - 'controller' => 'materiels', | |
372 | - 'action' => 'view', | |
373 | - $id | |
374 | - ]); | |
375 | - } else | |
376 | - $this->Flash->error(__('Le fichier n\'a pas pu être edité.')); | |
377 | - } | |
378 | - | |
379 | - $id = $document->materiel_id; | |
380 | - if (empty($id)) { | |
381 | - $id = $document->suivi_id; | |
382 | - $suivi = $this->Documents->Suivis->find('list', [ | |
383 | - 'keyField' => 'id', | |
384 | - 'valueField' => 'id' | |
385 | - ])->where([ | |
386 | - 'id =' => $id | |
387 | - ]); | |
388 | - $this->set('suivi', $suivi); | |
389 | - } else { | |
390 | - /* | |
391 | - $materiel = $this->Documents->Materiels->find('list', [ | |
392 | - 'keyField' => 'id', | |
393 | - //'valueField' => 'numero_laboratoire' | |
394 | - 'valueField' => 'designation' | |
395 | - ])->where([ | |
396 | - 'id =' => $id | |
397 | - ]); | |
398 | - */ | |
399 | - $materiel = $this->Documents->Materiels->get($id); | |
400 | - $this->set('materiel', $materiel); | |
401 | - } | |
402 | - | |
403 | - if ($document->photo) $this->set('photo', 1); | |
404 | - | |
405 | - $typesD = $this->Documents->TypeDocuments->find('list', [ | |
406 | - 'keyField' => 'id', | |
407 | - 'valueField' => 'nom', | |
408 | - 'order' => 'TypeDocuments.nom' | |
409 | - ]); | |
425 | + } // ADD | |
410 | 426 | |
411 | 427 | $this->set(compact('document', 'typesD')); |
412 | - /* Inutile | |
428 | + /* inutile | |
413 | 429 | $this->set('_serialize', [ |
414 | 430 | 'document' |
415 | 431 | ]); |
416 | 432 | */ |
417 | - } | |
433 | + | |
434 | + } // add_or_edit() | |
418 | 435 | |
436 | + | |
419 | 437 | /** |
420 | 438 | * Delete method |
421 | 439 | * |
... | ... | @@ -734,9 +752,35 @@ class DocumentsController extends AppController |
734 | 752 | */ |
735 | 753 | public function mailDevis($id) |
736 | 754 | { |
737 | - | |
738 | 755 | $document = $this->Documents->get($id); |
739 | - | |
756 | + /* | |
757 | + debug($document); | |
758 | + exit; | |
759 | + Exemple de résultat : | |
760 | + object(App\Model\Entity\Document) { | |
761 | + 'id' => (int) 63, | |
762 | + 'type_doc' => 'pdf', | |
763 | + 'materiel_id' => (int) 12007, | |
764 | + 'suivi_id' => null, | |
765 | + 'type_document_id' => (int) 12, | |
766 | + 'description' => 'df', | |
767 | + 'nom' => 'flkqjsd', | |
768 | + 'photo' => false, | |
769 | + '[new]' => false, | |
770 | + '[accessible]' => [ | |
771 | + '*' => true, | |
772 | + 'id' => false | |
773 | + ], | |
774 | + '[dirty]' => [], | |
775 | + '[original]' => [], | |
776 | + '[virtual]' => [], | |
777 | + '[hasErrors]' => false, | |
778 | + '[errors]' => [], | |
779 | + '[invalid]' => [], | |
780 | + '[repository]' => 'Documents' | |
781 | + | |
782 | + } | |
783 | + */ | |
740 | 784 | if ($this->request->is([ |
741 | 785 | 'patch', |
742 | 786 | 'post', | ... | ... |
src/Controller/MaterielsController.php
... | ... | @@ -951,7 +951,7 @@ class MaterielsController extends AppController |
951 | 951 | * @param $IS_ADD: True = add ; False = edit |
952 | 952 | * @return \Cake\Network\Response|void Redirects on successful add/edit, renders view otherwise. |
953 | 953 | */ |
954 | - public function add_or_edit($is_add, $id=null, $valeurs=null, $erreurs=null) | |
954 | + private function add_or_edit($is_add, $id=null, $valeurs=null, $erreurs=null) | |
955 | 955 | { |
956 | 956 | $this->myDebug("step 3: MaterielsController.add_or_edit()"); |
957 | 957 | |
... | ... | @@ -1012,6 +1012,7 @@ class MaterielsController extends AppController |
1012 | 1012 | */ |
1013 | 1013 | if ( |
1014 | 1014 | |
1015 | + /* | |
1015 | 1016 | // ADD |
1016 | 1017 | // Nouveau materiel saisi et posted |
1017 | 1018 | ($is_add && $this->request->is('post')) |
... | ... | @@ -1021,6 +1022,8 @@ class MaterielsController extends AppController |
1021 | 1022 | // EDIT |
1022 | 1023 | // materiel modifié et posted |
1023 | 1024 | ( (!$is_add) && $this->request->is(['patch','post','put']) ) |
1025 | + */ | |
1026 | + ( $this->request->is(['post','patch','put']) ) | |
1024 | 1027 | |
1025 | 1028 | ) { |
1026 | 1029 | |
... | ... | @@ -1385,7 +1388,9 @@ class MaterielsController extends AppController |
1385 | 1388 | * |
1386 | 1389 | * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. |
1387 | 1390 | */ |
1388 | - public function add($valeurs = null, $erreurs = null) { $this->add_or_edit(TRUE, null, $valeurs, $erreurs); } | |
1391 | + public function add($valeurs = null, $erreurs = null) { | |
1392 | + $this->add_or_edit(TRUE, null, $valeurs, $erreurs); | |
1393 | + } | |
1389 | 1394 | |
1390 | 1395 | |
1391 | 1396 | /** |
... | ... | @@ -1396,7 +1401,9 @@ class MaterielsController extends AppController |
1396 | 1401 | * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise. |
1397 | 1402 | * @throws \Cake\Network\Exception\NotFoundException When record not found. |
1398 | 1403 | */ |
1399 | - public function edit($id = null) { $this->add_or_edit(FALSE, $id); } | |
1404 | + public function edit($id = null) { | |
1405 | + $this->add_or_edit(FALSE, $id); | |
1406 | + } | |
1400 | 1407 | |
1401 | 1408 | /** |
1402 | 1409 | * Administrer method | ... | ... |
src/Model/Table/DocumentsTable.php
... | ... | @@ -15,6 +15,10 @@ use Cake\ORM\TableRegistry; |
15 | 15 | class DocumentsTable extends AppTable |
16 | 16 | { |
17 | 17 | |
18 | + // Formats autorisés pour photo | |
19 | + var $photo_formats = ['png','jpg','jpeg']; | |
20 | + | |
21 | + | |
18 | 22 | /** |
19 | 23 | * Initialize method |
20 | 24 | * |
... | ... | @@ -22,8 +26,7 @@ class DocumentsTable extends AppTable |
22 | 26 | * The configuration for the Table. |
23 | 27 | * @return void |
24 | 28 | */ |
25 | - public function initialize(array $config) | |
26 | - { | |
29 | + public function initialize(array $config) { | |
27 | 30 | parent::initialize($config); |
28 | 31 | |
29 | 32 | $this->setTable('documents'); |
... | ... | @@ -124,10 +127,12 @@ class DocumentsTable extends AppTable |
124 | 127 | if (! empty($entity->get('chemin_file')['tmp_name'])) { |
125 | 128 | if ($entity->get('photo') || $entity->get('type_document_id')==4) { |
126 | 129 | $extension = strtolower(pathinfo($entity->get('chemin_file')['name'], PATHINFO_EXTENSION)); |
127 | - return in_array($extension, ['png','jpg','jpeg']); | |
130 | + return in_array($extension, $this->photo_formats); | |
128 | 131 | } |
129 | 132 | return true; |
130 | 133 | } |
134 | + if ( $entity->get('edit') && $entity->get('type_document_id')==4 && !in_array($entity->get('type_doc'), $this->photo_formats)) | |
135 | + return false; | |
131 | 136 | return true; |
132 | 137 | }; |
133 | 138 | |
... | ... | @@ -139,7 +144,12 @@ class DocumentsTable extends AppTable |
139 | 144 | |
140 | 145 | // Attention, c'est la DERNIERE règle ajoutée qui est testée en premier !!! (c'est une pile) |
141 | 146 | |
142 | - // REGLE 3 - Si photo, format ok | |
147 | + // REGLE 3 - Si photo, format doit être ok | |
148 | + $rules->add($checkPhotoFormat, [ | |
149 | + //'errorField' => 'chemin_file', | |
150 | + 'errorField' => 'type_document_id', | |
151 | + 'message' => 'La photo doit etre au format png, jpg (ou jpeg)' | |
152 | + ]); | |
143 | 153 | $rules->add($checkPhotoFormat, [ |
144 | 154 | 'errorField' => 'chemin_file', |
145 | 155 | 'message' => 'La photo doit etre au format png, jpg (ou jpeg)' |
... | ... | @@ -184,21 +194,71 @@ class DocumentsTable extends AppTable |
184 | 194 | * CakePHP Model Functions |
185 | 195 | */ |
186 | 196 | /* AVANT la sauvegarde: |
187 | - * renseigner le champ "type_doc" avec l'extension, | |
188 | - * et mettre le type à photo si N/A alors que c'est une photo | |
197 | + * - renseigner le champ "type_doc" avec l'extension, | |
198 | + * - mettre le type à photo si N/A alors que c'est une photo | |
189 | 199 | */ |
190 | 200 | public function beforeSave($event, $entity, $options) |
191 | 201 | { |
192 | - $file = $entity->get('chemin_file'); | |
193 | - if (! empty($file['tmp_name'])) { | |
194 | - $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); | |
202 | + $fileinfos = $entity->get('chemin_file'); | |
203 | + /* | |
204 | + debug($fileinfos); | |
205 | + Exemple de résultat : | |
206 | + [ | |
207 | + 'tmp_name' => '/private/var/tmp/phpD0Wky7', | |
208 | + 'error' => (int) 0, | |
209 | + 'name' => 'admission.pdf', | |
210 | + 'type' => 'application/pdf', | |
211 | + 'size' => (int) 18735 | |
212 | + ] | |
213 | + */ | |
214 | + if (! empty($fileinfos['tmp_name'])) { | |
215 | + $extension = strtolower(pathinfo($fileinfos['name'], PATHINFO_EXTENSION)); | |
195 | 216 | $entity->set('type_doc', $extension); |
196 | 217 | } |
197 | 218 | else { |
198 | 219 | $extension = $entity->get('type_doc'); |
199 | 220 | } |
221 | + /* | |
222 | + debug($entity); | |
223 | + Exemple de résultat: | |
224 | + object(App\Model\Entity\Document) { | |
225 | + 'materiel_id' => (int) 12007, // ou suivi_id | |
226 | + 'nom' => 'zeoriazpe', | |
227 | + 'type_document_id' => (int) 1, | |
228 | + 'description' => '', | |
229 | + 'photo' => false, | |
230 | + 'chemin_file' => [ | |
231 | + 'tmp_name' => '/private/var/tmp/php9jc50F', | |
232 | + 'error' => (int) 0, | |
233 | + 'name' => 'admission.pdf', | |
234 | + 'type' => 'application/pdf', | |
235 | + 'size' => (int) 18735 | |
236 | + ], | |
237 | + 'type_doc' => 'pdf', | |
238 | + '[new]' => true, | |
239 | + '[accessible]' => [ | |
240 | + '*' => true, | |
241 | + 'id' => false | |
242 | + ], | |
243 | + '[dirty]' => [ | |
244 | + 'materiel_id' => true, | |
245 | + 'nom' => true, | |
246 | + 'type_document_id' => true, | |
247 | + 'description' => true, | |
248 | + 'photo' => true, | |
249 | + 'chemin_file' => true, | |
250 | + 'type_doc' => true | |
251 | + ], | |
252 | + '[original]' => [], | |
253 | + '[virtual]' => [], | |
254 | + '[hasErrors]' => false, | |
255 | + '[errors]' => [], | |
256 | + '[invalid]' => [], | |
257 | + '[repository]' => 'Documents' | |
258 | + } | |
259 | + */ | |
200 | 260 | // Si photo, set type_document_id = photo |
201 | - if ( in_array($extension, ['png','jpg','jpeg']) ) { | |
261 | + if ( in_array($extension, $this->photo_formats) ) { | |
202 | 262 | if ( $entity->get('type_document_id')==1 ) |
203 | 263 | $entity->set('type_document_id', 4); |
204 | 264 | } |
... | ... | @@ -208,7 +268,12 @@ class DocumentsTable extends AppTable |
208 | 268 | /** |
209 | 269 | * CakePHP Model Functions |
210 | 270 | */ |
211 | - // APRES la sauvegarde: renommer le fichier attaché selon norme id(du matériel ou suivi associé)_NomDoc_id(Doc).extension | |
271 | + /* APRES la sauvegarde: | |
272 | + * - renommer le fichier attaché selon norme : id(du matériel ou suivi associé)_NomDoc_id(Doc).extension | |
273 | + * - l'enregistrer au bon endroit : | |
274 | + * - si type photo => img/photos/ | |
275 | + * - sinon (doc pdf ou autre) => files/ | |
276 | + */ | |
212 | 277 | public function afterSave($event, $entity, $options) |
213 | 278 | { |
214 | 279 | $file = $entity->get('chemin_file'); |
... | ... | @@ -225,10 +290,13 @@ class DocumentsTable extends AppTable |
225 | 290 | */ |
226 | 291 | $id = ( $entity->get('materiel_id') !== Null ) ? $entity->get('materiel_id') : $entity->get('suivi_id'); |
227 | 292 | $nom = $id."_".$entity->get('nom')."_".$entity->get('id'). '.' . $extension; |
228 | - if ($entity->get('photo')) { | |
293 | + //if ($entity->get('photo')) { | |
294 | + if ( in_array($entity->get('type_doc'), $this->photo_formats) ) { | |
295 | + // Photos dans img/photos/ | |
229 | 296 | move_uploaded_file($file['tmp_name'], 'img' . DS . 'photos' . DS . $nom ); |
230 | 297 | } else { |
231 | - move_uploaded_file($file['tmp_name'], 'files' . DS . $nom ); | |
298 | + // Docs dans files/ | |
299 | + move_uploaded_file($file['tmp_name'], 'files' . DS . $nom ); | |
232 | 300 | } |
233 | 301 | } |
234 | 302 | } |
... | ... | @@ -250,7 +318,8 @@ class DocumentsTable extends AppTable |
250 | 318 | */ |
251 | 319 | $id = ( $entity->get('materiel_id') !== Null ) ? $entity->get('materiel_id') : $entity->get('suivi_id'); |
252 | 320 | $nomFichier = $id."_".$entity->get('nom')."_".$entity->get('id').'.' . $entity->get('type_doc'); |
253 | - if ($entity->get('photo')) { | |
321 | + //if ($entity->get('photo')) { | |
322 | + if ( in_array($entity->get('type_doc'), $this->photo_formats) ) { | |
254 | 323 | unlink('img' . DS . 'photos' . DS . $nomFichier); |
255 | 324 | } else { |
256 | 325 | unlink('files' . DS . $nomFichier); | ... | ... |
src/Template/Documents/add.ctp
1 | 1 | <?php |
2 | 2 | // Variables passées à cette vue par le controleur |
3 | +// - $document vide | |
3 | 4 | $document = $document; |
5 | +// - Liste des types de doc | |
4 | 6 | $typesD = $typesD; |
7 | +$configuration = $configuration; | |
8 | +$parent = $parent; | |
9 | +$doc_type = $doc_type; | |
10 | +$parent_controller = $parent_controller; | |
11 | +$parent_name = $parent_name; | |
12 | + | |
5 | 13 | // optionnel |
6 | -if (isset($photo)) $photo = $photo; | |
7 | -if (isset($materiel)) $materiel = $materiel; | |
8 | -if (isset($suivi)) $suivi = $suivi; | |
14 | +$doc = 'un document'; | |
15 | +if (isset($photo)) { | |
16 | + $photo = $photo; | |
17 | + $doc = 'une photo'; | |
18 | + $idType = $idType; | |
19 | +} | |
20 | +/* | |
21 | +if (isset($materiel)) { | |
22 | + $materiel = $materiel; | |
23 | + $doc_type = 'matériel'; | |
24 | + $parent = $materiel; | |
25 | + $parent_controller = 'Materiels'; | |
26 | +} | |
27 | +if (isset($suivi)) { | |
28 | + $suivi = $suivi; | |
29 | + $doc_type = 'suivi'; | |
30 | + $parent = $suivi; | |
31 | + $parent_controller = 'Suivis'; | |
32 | +} | |
33 | +*/ | |
34 | +//$parent_id = $this->request->getAttribute('params')['pass'][0]; | |
9 | 35 | |
10 | -$parent_id = $this->request->getAttribute('params')['pass'][0]; | |
36 | +/* | |
37 | +debug($materiel); | |
38 | +debug($parent_id); | |
39 | +debug($document); | |
40 | +debug($typesD); | |
41 | +*/ | |
11 | 42 | ?> |
12 | 43 | |
13 | 44 | <div class="documents form"> |
14 | - <?= $this->Form->create($document, ['type' => 'file']) ?> | |
45 | + | |
46 | + <?php | |
47 | + | |
48 | + // Titre | |
49 | + echo "<h2><i class='icon-plus'></i> Lier $doc</h2>"; | |
50 | + | |
51 | + // Ce doc est rattaché à ... | |
52 | + //$link = isset($materiel) ? $materiel->designation : 'Suivi '.$suivi->id; | |
53 | + $displayElement(__("Ce document est lié au $doc_type"), $this->Html->link($parent_name, [ | |
54 | + 'controller' => $parent_controller, | |
55 | + 'action' => 'view', | |
56 | + $parent->id | |
57 | + ])); | |
58 | + | |
59 | + echo $this->Form->create($document, ['type' => 'file']); | |
60 | + ?> | |
61 | + | |
15 | 62 | <fieldset> |
16 | - <?php | |
17 | - if (isset($photo)) { | |
18 | - echo '<h2><i class="icon-plus"></i> Lier une photo</h2>'; | |
19 | - } else { | |
20 | - echo '<h2><i class="icon-plus"></i> Lier un document</h2>'; | |
21 | - } | |
22 | - if (isset($materiel)) { | |
23 | - echo $this->Form->control('materiel_id', [ | |
24 | - 'label' => 'N° materiel labo', | |
25 | - 'options' => $materiel, | |
63 | + | |
64 | + <?php | |
65 | + | |
66 | + // - N° materiel (ou suivi) | |
67 | + /* | |
68 | + $control_name = 'materiel_id'; | |
69 | + $label = 'N° materiel labo'; | |
70 | + if (isset($suivi)) { | |
71 | + $control_name = 'suivi_id'; | |
72 | + $label = 'N° suivi'; | |
73 | + } | |
74 | + echo $this->Form->control($control_name, [ | |
75 | + 'label' => $label, | |
76 | + 'options' => $parent, | |
26 | 77 | 'default' => $parent_id, |
27 | 78 | 'readonly' => true |
28 | 79 | ]); |
29 | - } else if (isset($suivi)) { | |
30 | - echo $this->Form->control('suivi_id', [ | |
31 | - 'label' => 'N° suivi', | |
32 | - 'options' => $suivi, | |
33 | - 'default' => $parent_id, | |
34 | - 'readonly' => true | |
80 | + */ | |
81 | + //$control_name = isset($materiel) ? 'materiel_id' : 'suivi_id'; | |
82 | + $control_name = $parent_controller=='materiels' ? 'materiel_id' : 'suivi_id'; | |
83 | + //$label = 'N° materiel labo'; | |
84 | + echo $this->Form->hidden($control_name, [ | |
85 | + //'default' => $parent_id, | |
86 | + 'default' => $parent->id, | |
35 | 87 | ]); |
36 | - } | |
37 | - | |
38 | - echo $this->Form->control('nom'); | |
39 | - | |
40 | - if (isset($photo)) { | |
41 | - echo $this->Form->hidden('type_document_id', [ | |
88 | + | |
89 | + // - Nom | |
90 | + echo $this->Form->control('nom'); | |
91 | + | |
92 | + // - Type (hidden si photo) | |
93 | + echo "<i>(Si vous choisissez le type 'Photo', ce document sera affiché en tête de la fiche du $doc_type associé)</i>"; | |
94 | + $f = 'control'; | |
95 | + $default = 1; | |
96 | + if (isset($photo)) { | |
97 | + $f = 'hidden'; | |
98 | + $default = $idType; | |
99 | + } | |
100 | + echo $this->Form->$f('type_document_id', [ | |
42 | 101 | 'label' => 'Type', |
43 | 102 | 'options' => $typesD, |
44 | - 'default' => $idType | |
103 | + 'default' => $default | |
45 | 104 | ]); |
46 | - } else { | |
47 | - echo $this->Form->control('type_document_id', [ | |
48 | - 'label' => 'Type', | |
49 | - 'options' => $typesD, | |
50 | - 'default' => 1 | |
105 | + | |
106 | + // - Description | |
107 | + echo $this->Form->control('description'); | |
108 | + | |
109 | + // - File upload | |
110 | + echo $this->Form->control('chemin_file', [ | |
111 | + 'label' => 'Fichier (' . substr($configuration->taille_max_doc / (1024 * 1024), 0, 4) . ' Mo max)', | |
112 | + 'type' => 'file' | |
51 | 113 | ]); |
52 | - } | |
53 | - | |
54 | - echo $this->Form->control('description'); | |
55 | - echo $this->Form->control('chemin_file', [ | |
56 | - 'label' => 'Fichier (' . substr($configuration->taille_max_doc / (1024 * 1024), 0, 4) . ' Mo max)', | |
57 | - 'type' => 'file' | |
58 | - ]); | |
59 | - | |
60 | - if (isset($photo)) { | |
114 | + | |
115 | + // - photo (hidden) | |
61 | 116 | echo $this->Form->hidden('photo', [ |
62 | - 'default' => 1 | |
117 | + 'default' => isset($photo) ? 1 : 0 | |
63 | 118 | ]); |
64 | - } else { | |
65 | - echo $this->Form->hidden('photo', [ | |
66 | - 'default' => 0 | |
67 | - ]); | |
68 | - } | |
69 | - | |
70 | - ?> | |
119 | + | |
120 | + ?> | |
121 | + | |
71 | 122 | </fieldset> |
72 | 123 | |
73 | 124 | <!-- BOUTONS submit & cancel --> |
74 | 125 | <!-- <= $this->Form->submit(__('Valider')) ?> --> |
75 | 126 | <?php $echoSubmitButtons($this, |
76 | 127 | 'view', |
77 | - $parent_id, | |
78 | - isset($materiel) ? 'Materiels' : 'Suivis' | |
128 | + //$parent_id, | |
129 | + $parent->id, | |
130 | + $parent_controller | |
79 | 131 | ); |
80 | 132 | |
81 | 133 | echo $this->Form->end(); | ... | ... |
src/Template/Documents/edit.ctp
1 | 1 | <?php |
2 | 2 | // Variables passées à cette vue par le controleur |
3 | 3 | $document = $document; |
4 | +// - Liste des types de doc | |
4 | 5 | $typesD = $typesD; |
5 | -// optionnel | |
6 | -if (isset($photo)) $photo = $photo; | |
7 | -if (isset($materiel)) $materiel = $materiel; | |
8 | -if (isset($suivi)) $suivi = $suivi; | |
6 | +$configuration = $configuration; | |
7 | +$parent = $parent; | |
8 | +$doc_type = $doc_type; | |
9 | +$parent_controller = $parent_controller; | |
10 | +$parent_name = $parent_name; | |
11 | + | |
12 | +// Optionnel | |
13 | +$doc = 'un document'; | |
14 | +if (isset($photo)) { | |
15 | + $photo = $photo; | |
16 | + $doc = 'une photo'; | |
17 | +} | |
18 | +/* | |
19 | +if (isset($materiel)) { | |
20 | + $materiel = $materiel; | |
21 | + $doc_type = 'matériel'; | |
22 | + $parent = $materiel; | |
23 | + $parent_controller = 'Materiels'; | |
24 | + $parent_name = $parent->designation; | |
25 | +} | |
26 | +if (isset($suivi)) { | |
27 | + $suivi = $suivi; | |
28 | + $doc_type = 'suivi'; | |
29 | + $parent = $suivi; | |
30 | + $parent_controller = 'Suivis'; | |
31 | + $parent_name = 'Suivi#'.$parent->id; | |
32 | +} | |
33 | +*/ | |
34 | + | |
35 | +// Nouvelles variables | |
36 | +//$parent_id = $parent->id; | |
37 | + | |
9 | 38 | ?> |
10 | 39 | |
11 | 40 | <div class="documents form"> |
... | ... | @@ -13,30 +42,17 @@ if (isset($suivi)) $suivi = $suivi; |
13 | 42 | <?php |
14 | 43 | |
15 | 44 | // Titre |
16 | - if (isset($photo)) { | |
17 | - echo '<h2><i class="icon-plus"></i> Editer une photo</h2>'; | |
18 | - } else { | |
19 | - echo '<h2><i class="icon-plus"></i> Editer un document</h2>'; | |
20 | - } | |
45 | + echo "<h2><i class='icon-plus'></i> Editer $doc</h2>"; | |
21 | 46 | |
22 | 47 | //$materiel = $materiel->toArray(); |
23 | 48 | //debug($materiel); |
24 | - | |
25 | - if (isset($materiel)) { | |
26 | - $displayElement(__('Ce document est rattaché au materiel'), $this->Html->link($materiel->designation, [ | |
27 | - 'controller' => 'Materiels', | |
28 | - 'action' => 'view', | |
29 | - $materiel->id | |
30 | - ])); | |
31 | - } else if (isset($suivi)) { | |
32 | - $displayElement(__('Suivi'), $this->Html->link('Suivi ' . $suivi->id, [ | |
33 | - 'controller' => 'Suivis', | |
34 | - 'action' => 'view', | |
35 | - $suivi->id | |
36 | - ])); | |
37 | - } | |
38 | - | |
39 | 49 | |
50 | + $displayElement(__("Ce document est lié au $doc_type"), $this->Html->link($parent_name, [ | |
51 | + 'controller' => $parent_controller, | |
52 | + 'action' => 'view', | |
53 | + $parent->id | |
54 | + ])); | |
55 | + | |
40 | 56 | echo $this->Form->create($document, ['type' => 'file']); |
41 | 57 | ?> |
42 | 58 | |
... | ... | @@ -69,21 +85,18 @@ if (isset($suivi)) $suivi = $suivi; |
69 | 85 | */ |
70 | 86 | |
71 | 87 | // - Nom |
72 | - //On met le nom du doc en read only vu qu'il apparait dans le nom du fichier sur le serveur | |
73 | - //et une opération pour remodifier ces fichiers peut être complexe | |
88 | + // (Malik) On met le nom du doc en read only vu qu'il apparait dans le nom du fichier sur le serveur | |
89 | + // et une opération pour remodifier ces fichiers peut être complexe | |
74 | 90 | echo $this->Form->control('nom', ['readonly' => true]); |
75 | 91 | |
76 | 92 | // - Type (hidden si photo) |
77 | - if (isset($photo)) | |
78 | - echo $this->Form->hidden('type_document_id', [ | |
79 | - 'label' => 'Type', | |
80 | - 'options' => $typesD | |
81 | - ]); | |
82 | - else | |
83 | - echo $this->Form->control('type_document_id', [ | |
84 | - 'label' => 'Type', | |
85 | - 'options' => $typesD | |
86 | - ]); | |
93 | + echo "<i>(Si vous choisissez le type 'Photo', ce document sera affiché en tête de la fiche du $doc_type associé)</i>"; | |
94 | + //$f = isset($photo) ? 'hidden' : 'control'; | |
95 | + $f = 'control'; | |
96 | + echo $this->Form->$f('type_document_id', [ | |
97 | + 'label' => 'Type', | |
98 | + 'options' => $typesD | |
99 | + ]); | |
87 | 100 | |
88 | 101 | // - Description |
89 | 102 | echo $this->Form->control('description'); |
... | ... | @@ -100,15 +113,9 @@ if (isset($suivi)) $suivi = $suivi; |
100 | 113 | ]); |
101 | 114 | |
102 | 115 | // - photo = 0 ou 1 (hidden) |
103 | - if (isset($photo)) { | |
104 | - echo $this->Form->hidden('photo', [ | |
105 | - 'default' => 1 | |
106 | - ]); | |
107 | - } else { | |
108 | - echo $this->Form->hidden('photo', [ | |
109 | - 'default' => 0 | |
110 | - ]); | |
111 | - } | |
116 | + echo $this->Form->hidden('photo', [ | |
117 | + 'default' => isset($photo) ? 1 : 0 | |
118 | + ]); | |
112 | 119 | |
113 | 120 | ?> |
114 | 121 | </fieldset> |
... | ... | @@ -117,8 +124,9 @@ if (isset($suivi)) $suivi = $suivi; |
117 | 124 | <!-- <= $this->Form->submit(__('Valider')) ?> --> |
118 | 125 | <?php $echoSubmitButtons($this, |
119 | 126 | 'view', |
120 | - isset($materiel) ? $materiel->id : $suivi->id, | |
121 | - isset($materiel) ? 'Materiels' : 'Suivis' | |
127 | + //$parent_id, | |
128 | + $parent->id, | |
129 | + $parent_controller | |
122 | 130 | ); |
123 | 131 | |
124 | 132 | echo $this->Form->end(); | ... | ... |
src/Template/Documents/view.ctp
1 | 1 | <?php |
2 | 2 | // Variables passées à cette vue par le controleur |
3 | -$document = $document; | |
3 | +$document = $document; | |
4 | + | |
5 | +// Nouvelles variables définies pour cette vue | |
6 | +$photo_formats = ['png','jpg','jpeg']; | |
4 | 7 | ?> |
5 | 8 | |
6 | 9 | <div class="documents view"> |
7 | 10 | |
8 | 11 | <h2>Détail document</h2> |
9 | - | |
12 | + | |
13 | + <!-- Boutons Edit & Delete --> | |
10 | 14 | <?=$this->element('buttons_edit_del', ['id' => $document->id]);?> |
11 | 15 | |
12 | 16 | <?php // Affichage photo |
13 | 17 | $doc_name = $document->materiel_id .'_' . $document->nom.'_'. $document->id . '.' . $document->type_doc; |
18 | + // Seulement les photos : | |
14 | 19 | //$is_doc_photo = $document->type_document->nom == 'Photo'; |
15 | - $is_doc_photo = in_array($document->type_doc, ['png','jpg','jpeg']); | |
20 | + // Toute image : | |
21 | + $is_doc_photo = in_array($document->type_doc, $photo_formats); | |
16 | 22 | //echo $is_doc_photo; |
17 | 23 | //debug($document); |
18 | - if ($document->photo || $is_doc_photo) { | |
19 | - $style = 'max-width: 300px; text-align: center;'; | |
20 | - echo '<div style="text-align: center;">'; | |
24 | + //if ($document->photo || $is_doc_photo) { | |
25 | + if ($is_doc_photo) { | |
26 | + //$style = 'max-width: 300px; text-align: center;'; | |
27 | + $style = 'max-width: 300px;'; | |
28 | + //echo '<div style="text-align: center;">'; | |
29 | + echo '<div>'; | |
21 | 30 | //echo $this->Html->link('files/' . $doc_name, [ |
22 | 31 | //echo $this->Html->image('photos/' . $doc_name, [ |
23 | 32 | //echo '<strong>Fichier</strong><a href="' . $this->request->webroot . 'files/' . $doc_name . '">Photo</a>'; |
24 | - if ($document->photo) | |
25 | - echo $this->Html->image('photos/' . $doc_name, [ | |
33 | + //if ($document->photo) | |
34 | + echo $this->Html->image('photos/' . $doc_name, [ | |
26 | 35 | //echo $this->Html->image('photos/' . $document->id . '.' . $document->type_doc, [ |
27 | 36 | 'alt' => 'Photo', |
28 | 37 | 'style' => $style |
29 | 38 | ]); |
30 | 39 | // $is_doc_photo |
31 | 40 | //else echo '<img src="'.$this->request->webroot . 'files/' . $doc_name.'" alt="Photo" style="'.$style.'"/>'; |
32 | - else echo "<img src='{$this->request->webroot}files/$doc_name' alt='Image' style='$style'/>"; | |
41 | + //else echo "<img src='{$this->request->webroot}files/$doc_name' alt='Image' style='$style'/>"; | |
33 | 42 | echo '</div>'; |
34 | 43 | } |
35 | 44 | ?> |
... | ... | @@ -42,49 +51,57 @@ $document = $document; |
42 | 51 | |
43 | 52 | <?php |
44 | 53 | |
45 | - // - Lien vers le materiel (ou le suivi) | |
46 | - if (isset($materiel)) { | |
47 | - $displayElement(__('Materiel'), $this->Html->link($materiel->designation, [ | |
48 | - 'controller' => 'Materiels', | |
49 | - 'action' => 'view', | |
50 | - $materiel->id | |
51 | - ])); | |
52 | - } else if (isset($suivi)) { | |
53 | - $displayElement(__('Suivi'), $this->Html->link('Suivi ' . $suivi->id, [ | |
54 | - 'controller' => 'Suivis', | |
55 | - 'action' => 'view', | |
56 | - $suivi->id | |
57 | - ])); | |
58 | - } | |
59 | - | |
60 | - // - Nom du doc | |
61 | - $displayElement(__('Nom'), h($document->nom)); | |
62 | - | |
63 | - // - Type | |
64 | - $displayElement(__('Type'), $document->has('type_document') ? h($document->type_document->nom) : ''); | |
65 | - | |
66 | - if ($document->photo) { | |
67 | - $p = 'Oui'; | |
68 | - } else { | |
69 | - $p = 'Non'; | |
70 | - } | |
71 | - $displayElement(__('Miniature'), $p); | |
72 | - | |
73 | - echo '<tr><td><strong>' . __('Description') . ' </strong></td><td>' . nl2br($document->description) . '</td></tr>'; | |
74 | - | |
75 | - $displayElement(__('Extension fichier'), h($document->type_doc)); | |
76 | - | |
77 | - //$doc_name = $document->materiel_id .'_' . $document->nom.'_'. $document->id . '.' . $document->type_doc; | |
78 | - if ($document->photo) { | |
79 | - //echo '<tr><td><strong>Fichier</strong></td><td><a href="' . $this->request->webroot . 'webroot/img/photos/' . $document->id . '.' . $document->type_doc . '">Télécharger fichier</a></td></tr>'; | |
80 | - echo '<tr><td><strong>Fichier</strong></td><td><a href="' . $this->request->webroot . 'img/photos/' . $doc_name . '">Voir photo</a></td></tr>'; | |
81 | - } else { | |
82 | - echo '<tr><td><strong>Fichier</strong></td><td><a href="' . $this->request->webroot . 'files/' . $doc_name . '">Télécharger fichier</a></td></tr>'; | |
83 | - } | |
84 | - | |
85 | - ?> | |
54 | + // - Matériel : lien vers le materiel (ou le suivi) | |
55 | + if (isset($materiel)) { | |
56 | + $displayElement(__('Materiel'), $this->Html->link($materiel->designation, [ | |
57 | + 'controller' => 'Materiels', | |
58 | + 'action' => 'view', | |
59 | + $materiel->id | |
60 | + ])); | |
61 | + } else if (isset($suivi)) { | |
62 | + $displayElement(__('Suivi'), $this->Html->link('Suivi ' . $suivi->id, [ | |
63 | + 'controller' => 'Suivis', | |
64 | + 'action' => 'view', | |
65 | + $suivi->id | |
66 | + ])); | |
67 | + } | |
68 | + | |
69 | + // - Nom du doc | |
70 | + $displayElement(__('Nom'), h($document->nom)); | |
71 | + | |
72 | + // - Type | |
73 | + $displayElement(__('Type'), $document->has('type_document') ? h($document->type_document->nom) : ''); | |
74 | + | |
75 | + /* | |
76 | + // - Miniature | |
77 | + if ($document->photo) { | |
78 | + $p = 'Oui'; | |
79 | + } else { | |
80 | + $p = 'Non'; | |
81 | + } | |
82 | + $displayElement(__('Miniature'), $p); | |
83 | + */ | |
84 | + | |
85 | + // - Description | |
86 | + echo '<tr><td><strong>' . __('Description') . ' </strong></td><td>' . nl2br($document->description) . '</td></tr>'; | |
87 | + | |
88 | + // - Extension fichier | |
89 | + $displayElement(__('Extension fichier'), h($document->type_doc)); | |
90 | + | |
91 | + // - Lien téléchargement | |
92 | + //$doc_name = $document->materiel_id .'_' . $document->nom.'_'. $document->id . '.' . $document->type_doc; | |
93 | + //if ($document->photo) { | |
94 | + if ($is_doc_photo) { | |
95 | + //echo '<tr><td><strong>Fichier</strong></td><td><a href="' . $this->request->webroot . 'webroot/img/photos/' . $document->id . '.' . $document->type_doc . '">Télécharger fichier</a></td></tr>'; | |
96 | + echo '<tr><td><strong>Fichier</strong></td><td><a href="' . $this->request->webroot . 'img/photos/' . $doc_name . '">Voir photo</a></td></tr>'; | |
97 | + } else { | |
98 | + echo '<tr><td><strong>Fichier</strong></td><td><a href="' . $this->request->webroot . 'files/' . $doc_name . '">Télécharger fichier</a></td></tr>'; | |
99 | + } | |
100 | + | |
101 | + ?> | |
86 | 102 | |
87 | 103 | </table> |
104 | + | |
88 | 105 | </div> |
89 | 106 | |
90 | 107 | <!-- | ... | ... |
src/Template/Materiels/view.ctp
... | ... | @@ -62,7 +62,8 @@ $displayElement = $displayElement; |
62 | 62 | $dateProchainControleVerif = $dateProchainControleVerif; |
63 | 63 | $echoActionButton = $echoActionButton; |
64 | 64 | |
65 | - | |
65 | +// Documents attachés photo | |
66 | +$photo_formats = ['png','jpg','jpeg']; | |
66 | 67 | |
67 | 68 | /* (EP) moved to controller |
68 | 69 | function $echoActionButton($html, $icon_class, $title, $action, $id, $tip='', $controller='materiels', $mat=NULL, $photo=NULL) { |
... | ... | @@ -234,13 +235,14 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN |
234 | 235 | */ |
235 | 236 | foreach ($materiel->documents as $document) { |
236 | 237 | //debug($document); |
237 | - // TODO: | |
238 | + // Toute image : | |
239 | + //$is_doc_photo = in_array($document->type_doc, ['png','jpg','jpeg']); | |
240 | + // Seulement les photos : | |
241 | + $is_doc_photo = $document->type_document_id == 4; | |
238 | 242 | //$is_doc_photo = $document->type_document->nom == 'Photo'; |
239 | - //$is_doc_photo = $document->type_document_id == 4; | |
240 | - $is_doc_photo = in_array($document->type_doc, ['png','jpg','jpeg']); | |
241 | 243 | // et si le document est la photo liée, on l'affiche, pour cela |
242 | 244 | //if($document->photo) { |
243 | - if ($document->photo || $is_doc_photo) { | |
245 | + if ($document->photo || $is_doc_photo) { | |
244 | 246 | //on récupère le doc |
245 | 247 | $photo = $document; |
246 | 248 | //on reconstitue le nom a partir des paramètres (idmat_nom_id.extension) |
... | ... | @@ -250,16 +252,18 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN |
250 | 252 | $style = 'max-width:300px; vertical-align: top;'; |
251 | 253 | //Et si la photo n'est pas vide on l'affiche |
252 | 254 | //if(!empty($photo)) { |
253 | - if ($document->photo) { | |
254 | - $img = $this->Html->image('photos/'.$nomPhoto, [ | |
255 | - //si il y a une erreur sur le nom affiche le texte alternatif | |
256 | - 'alt' => 'Photo du matériel', | |
257 | - 'style' => $style | |
258 | - ]); | |
259 | - } | |
255 | + //if ($document->photo) { | |
256 | + $img = $this->Html->image('photos/'.$nomPhoto, [ | |
257 | + //si il y a une erreur sur le nom affiche le texte alternatif | |
258 | + 'alt' => 'Photo du matériel', | |
259 | + 'style' => $style | |
260 | + ]); | |
261 | + //} | |
262 | + /* | |
260 | 263 | // $is_doc_photo |
261 | 264 | else |
262 | 265 | $img = "<img src='{$this->request->webroot}files/$nomPhoto' alt='Image' style='$style'/>"; |
266 | + */ | |
263 | 267 | echo $img; |
264 | 268 | //echo $this->Html->link($img, ['controller'=>'documents', 'action'=>'view', $document->id]); |
265 | 269 | //echo '<br>'; |
... | ... | @@ -798,7 +802,9 @@ $bStyle = 'margin:0'; |
798 | 802 | <?php |
799 | 803 | |
800 | 804 | // 1 - icone Télécharger |
801 | - if ($document->photo) { | |
805 | + //if ($document->photo) { | |
806 | + // - photo from img/photos/ | |
807 | + if (in_array($document->type_doc, $photo_formats)) { | |
802 | 808 | // TODO: $echoActionButton() |
803 | 809 | //echo $this->Html->link(__('<i class="icon-download-alt"></i>'), '/webroot/img/photos/' . $document->materiel_id .'_' . $document->nom.'_'. $document->id . '.' . $document->type_doc, [ |
804 | 810 | echo $this->Html->link(__('<i class="icon-download-alt"></i>'), '/img/photos/' . $document->materiel_id .'_' . $document->nom.'_'. $document->id . '.' . $document->type_doc, [ |
... | ... | @@ -806,6 +812,7 @@ $bStyle = 'margin:0'; |
806 | 812 | 'style' => 'margin:0', |
807 | 813 | 'escape' => false |
808 | 814 | ]); |
815 | + // - autre doc (pdf...) from files/ | |
809 | 816 | } else { |
810 | 817 | //echo $this->Html->link(__('<i class="icon-download-alt"></i>'), '/webroot/files/' . $document->materiel_id .'_' . $document->nom.'_'. $document->id . '.' . $document->type_doc, [ |
811 | 818 | echo $this->Html->link(__('<i class="icon-download-alt"></i>'), '/files/' . $document->materiel_id .'_' . $document->nom.'_'. $document->id . '.' . $document->type_doc, [ |
... | ... | @@ -870,7 +877,7 @@ $bStyle = 'margin:0'; |
870 | 877 | <!-- Miniature --> |
871 | 878 | <?php |
872 | 879 | //$is_doc_photo = $document->type_document_id==4; |
873 | - $is_doc_photo = in_array($document->type_doc, ['png','jpg','jpeg']); | |
880 | + $is_doc_photo = in_array($document->type_doc, $photo_formats); | |
874 | 881 | ?> |
875 | 882 | <td><?=($document->photo || $is_doc_photo) ? 'Oui' : ''?></td> |
876 | 883 | ... | ... |