Commit 5b54a286a622d8eb0048b1db2ccc949ea2b73efb

Authored by mimelhaine
1 parent bde633ca

Version master petites modifs directes

(corrections pb malik avec Etienne)
src/Controller/AppController.php
@@ -814,10 +814,10 @@ class AppController extends Controller @@ -814,10 +814,10 @@ class AppController extends Controller
814 $subject = "Ajout d'un matériel"; 814 $subject = "Ajout d'un matériel";
815 $msg = "$acteur a ajouté le matériel \"$nom_materiel\""; 815 $msg = "$acteur a ajouté le matériel \"$nom_materiel\"";
816 break; 816 break;
817 - case 'edit':  
818 - $subject = "Modification d'un matériel";  
819 - $msg = "$acteur a modifié le matériel \"$nom_materiel\"";  
820 - break; 817 + // case 'edit':
  818 + //$subject = "Modification d'un matériel";
  819 + //$msg = "$acteur a modifié le matériel \"$nom_materiel\"";
  820 + // break;
821 case 'delete': 821 case 'delete':
822 $subject = "Suppression d'un matériel"; 822 $subject = "Suppression d'un matériel";
823 $msg = "$acteur a supprimé le matériel \"$nom_materiel\""; 823 $msg = "$acteur a supprimé le matériel \"$nom_materiel\"";
@@ -831,14 +831,14 @@ class AppController extends Controller @@ -831,14 +831,14 @@ class AppController extends Controller
831 if ($materiel->description != "") 831 if ($materiel->description != "")
832 $msgMore .= "\n\nDescription :\n" . $materiel->description; 832 $msgMore .= "\n\nDescription :\n" . $materiel->description;
833 break; 833 break;
834 - case 'statusCreated':  
835 - $subject = "Dé-validation d'un matériel";  
836 - $msg = "$acteur a dé-validé le matériel \"$nom_materiel\"";  
837 - break;  
838 - case 'statusValidated':  
839 - $subject = "Validation d'un matériel";  
840 - $msg = "$acteur a validé le matériel \"$nom_materiel\"";  
841 - break; 834 + //case 'statusCreated':
  835 + //$subject = "Dé-validation d'un matériel";
  836 + //$msg = "$acteur a dé-validé le matériel \"$nom_materiel\"";
  837 + // break;
  838 + //case 'statusValidated':
  839 + //$subject = "Validation d'un matériel";
  840 + //$msg = "$acteur a validé le matériel \"$nom_materiel\"";
  841 + // break;
842 case 'statusToBeArchived': 842 case 'statusToBeArchived':
843 $subject = "Demande d'archivage d'un matériel"; 843 $subject = "Demande d'archivage d'un matériel";
844 $msg = "$acteur a demandé l'archivage du matériel \"$nom_materiel\""; 844 $msg = "$acteur a demandé l'archivage du matériel \"$nom_materiel\"";
@@ -1006,4 +1006,359 @@ class AppController extends Controller @@ -1006,4 +1006,359 @@ class AppController extends Controller
1006 } 1006 }
1007 } 1007 }
1008 } 1008 }
1009 -}  
1010 \ No newline at end of file 1009 \ No newline at end of file
  1010 +
  1011 + // Fonction d'envoi de mails avec photo jointe
  1012 + private function sendEmailImgTo($subject, $msg, $mail, $config, $nomImg)
  1013 + {
  1014 + if ($mail != null && ! $config->test) {
  1015 + if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
  1016 + $email = new Email();
  1017 + $etiquetteFrom = explode("@", $config->sender_mail);
  1018 + $email->attachments(["/var/www/html/labinvent/webroot/img/photos/$nomImg"]);
  1019 + $email->transport('default')
  1020 + ->from([
  1021 + $config->sender_mail => $etiquetteFrom[0]
  1022 + ])
  1023 + ->to($mail)
  1024 + ->subject("[LabInvent] " . $subject)
  1025 + ->send($msg);
  1026 + }
  1027 + }
  1028 + }
  1029 +
  1030 + // Fonction d'envoi de mails avec pièce jointe
  1031 + private function sendEmailPJTo($subject, $msg, $mail, $config, $nomDoc)
  1032 + {
  1033 + if ($mail != null && !$config->test) {
  1034 + if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
  1035 + $email = new Email();
  1036 + $etiquetteFrom = explode("@", $config->sender_mail);
  1037 + $email->attachments(["/var/www/html/labinvent/webroot/files/$nomDoc"]);
  1038 + $email->transport('default')
  1039 + ->from([
  1040 + $config->sender_mail => $etiquetteFrom[0]
  1041 + ])
  1042 + ->to($mail)
  1043 + ->subject("[LabInvent] " . $subject)
  1044 + ->send($msg);
  1045 + }
  1046 + }
  1047 + }
  1048 +
  1049 + /**Version noob
  1050 + * Envoi un mail avec un sujet, contenant un message à destination d'un email, selon l'action effectuée.
  1051 + *
  1052 + * @param $entity :
  1053 + * L'entité concernée (principalement un Matériel, mais ça peut aussi etre un Document)
  1054 + * @param $subject :
  1055 + * Sujet du message à envoyer. Si $subject n'est pas renseigné, un sujet par défaut sera généré.
  1056 + * @param $msg :
  1057 + * Message à envoyer. Si $msg n'est pas renseigné, un message par défaut sera généré.
  1058 + */
  1059 + public function sendmail($entity, $mode, $subject = null, $msg = null)
  1060 + {
  1061 +
  1062 +
  1063 + /*
  1064 + * $_SESSION['Auth']['User'] pour retrouver TOUTES les infos de la session courante (tout est du string) :
  1065 + * nom $_SESSION['Auth']['User']['sn'][0]
  1066 + * prenom $_SESSION['Auth']['User']['givenname'][0]
  1067 + * mail $_SESSION['Auth']['User']['mail'][0]
  1068 + * login $_SESSION['Auth']['User']['xxx'][0] /!\ Ce champ est suceptible de changer de nom, dans les tests ce champ est ['cn'][0]
  1069 + * mdp $_SESSION['Auth']['User']['userpassword'][0]
  1070 + */
  1071 + $configuration = $this->confLabinvent;
  1072 + $action = $this->request->getAttribute('params')['action']; // add or edit or delete or ...
  1073 +
  1074 + // Si les deux cases "Activer l'envoi des mails.." sont décochées, on se fatigue pas à exécuter la fonction
  1075 + if (! $configuration->envoi_mail && ! $configuration->envoi_mail_guests)
  1076 + return null;
  1077 +
  1078 + $mailList = array();
  1079 +
  1080 + // On détermine le message et le sujet du mail en fonction de l'action effectuee
  1081 + // on bloque l'envoi de mail à l'edition et à la validation pour eviter trop d'envoi de mail
  1082 + // le temps que soit trouvé une autre solution
  1083 + $acteur = $_SESSION['Auth']['User']['givenname'][0] . ' ' . $_SESSION['Auth']['User']['sn'][0];
  1084 + // if ($entity != null) {
  1085 + if ($entity instanceof Materiel) {
  1086 + $materiel = $entity;
  1087 + $nom_materiel = $materiel->designation;
  1088 + if ($subject == null && $msg == null) {
  1089 + $msgMore = '';
  1090 + Switch ($action) {
  1091 + case 'add':
  1092 + $subject = "Ajout d'un matériel";
  1093 + $msg = "$acteur a ajouté le matériel \"$nom_materiel\"";
  1094 + break;
  1095 + case 'edit':
  1096 + $subject = "Modification d'un matériel";
  1097 + $msg = "$acteur a modifié le matériel \"$nom_materiel\"";
  1098 + break;
  1099 + case 'delete':
  1100 + $subject = "Suppression d'un matériel";
  1101 + $msg = "$acteur a supprimé le matériel \"$nom_materiel\"";
  1102 + // @todo: mettre le nom des domaine, categ, et sous-categ, et non pas l'id
  1103 + if ($materiel->sur_categorie_id != "")
  1104 + $msgMore .= "\n\nDomaine : " . $materiel->sur_categorie_id;
  1105 + if ($materiel->categorie_id != "")
  1106 + $msgMore .= "\n\nCatégorie : " . $materiel->categorie_id;
  1107 + if ($materiel->sous_categorie_id != "")
  1108 + $msgMore .= "\n\nSous-catégorie : " . $materiel->sous_categorie_id;
  1109 + if ($materiel->description != "")
  1110 + $msgMore .= "\n\nDescription :\n" . $materiel->description;
  1111 + break;
  1112 + case 'statusCreated':
  1113 + $subject = "Dé-validation d'un matériel";
  1114 + $msg = "$acteur a dé-validé le matériel \"$nom_materiel\"";
  1115 + break;
  1116 + case 'statusValidated':
  1117 + $subject = "Validation d'un matériel";
  1118 + $msg = "$acteur a validé le matériel \"$nom_materiel\"";
  1119 + break;
  1120 + case 'statusToBeArchived':
  1121 + $subject = "Demande d'archivage d'un matériel";
  1122 + $msg = "$acteur a demandé l'archivage du matériel \"$nom_materiel\"";
  1123 + break;
  1124 + case 'statusArchived':
  1125 + $subject = "Archivage d'un matériel";
  1126 + $msg = "$acteur a archivé le matériel \"$nom_materiel\"";
  1127 + break;
  1128 + case 'setLabelIsPlaced':
  1129 + $subject = "Etiquette posée sur un matériel";
  1130 + $msg = "Etiquette posée sur le matériel \"$nom_materiel\"";
  1131 + break;
  1132 + case 'printLabelRuban':
  1133 + $subject = "Etiquette imprimée";
  1134 + $msg = "L'étiquette concerant votre matériel \"$nom_materiel\" a été imprimée";
  1135 + $mailList[0] = $materiel->email_responsable;
  1136 + default:
  1137 + $subject = "Action \"$action\" sur un matériel";
  1138 + $msg = "$acteur a effectué l'action \"$action\" sur le matériel \"$nom_materiel\"";
  1139 + break;
  1140 + } // end switch
  1141 + // (EP) Ajout de l'ID du materiel !!!
  1142 + $msg .= " (id=" . $materiel->id . ").";
  1143 + // Only for "delete" action (for the moment...)
  1144 + if ($msgMore)
  1145 + $msg .= $msgMore;
  1146 + // $msg .= "\n\n";
  1147 + } // subject is null
  1148 +
  1149 + // Et maintenant on construit la liste de mails...
  1150 + // Si l'envoi général est activé (et que l'action ne correspond pas à 'printLabelRuban'):
  1151 + if ($configuration->envoi_mail && $action != 'printLabelRuban') {
  1152 +
  1153 + // owner's mail (utilisateur du matériel)
  1154 + $mailList[0] = $materiel->email_responsable;
  1155 +
  1156 + // resp's mail
  1157 + $mailsRespMetier = null;
  1158 + $mailRespThematique = null;
  1159 +
  1160 + if ($materiel->groupes_metier_id != null && $materiel->groupes_metier_id != 1) {
  1161 + // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe
  1162 + $mailsRespMetier = TableRegistry::get('Users')->find()
  1163 + ->select('email')
  1164 + ->where([
  1165 + 'role =' => 'Responsable',
  1166 + 'groupes_metier_id =' => $materiel->groupes_metier_id
  1167 + ])
  1168 + ->toArray();
  1169 + $mailRespThematique = TableRegistry::get('Users')->find()
  1170 + ->select('email')
  1171 + ->where([
  1172 + 'role =' => 'Responsable',
  1173 + 'groupe_thematique_id =' => $materiel->groupes_thematique_id
  1174 + ])
  1175 + ->toArray();
  1176 + }
  1177 +
  1178 + if ($mailsRespMetier != null || $mailRespThematique != null) {
  1179 + $mailsResp = array_unique(array_merge($mailsRespMetier, $mailRespThematique));
  1180 + for ($i = 0; $i < sizeof($mailsResp); $i ++) {
  1181 + $mailList[] = $mailsResp[$i]['email'];
  1182 + // $mailList[sizeof($mailList)] = $mailsResp[$i]['email'];
  1183 + }
  1184 + }
  1185 +
  1186 +
  1187 +
  1188 + }
  1189 + }// Materiel
  1190 +
  1191 + // @todo: ajouter quelques infos dans ces cas :
  1192 + else if ($entity instanceof Document) {
  1193 + $doc = $entity;
  1194 + $nom_doc = $doc->nom;
  1195 + $id_doc = $doc->id;
  1196 + $type_doc = $doc->type_doc;
  1197 + $id_mat = $doc->materiel_id;
  1198 + $id_suiv = $doc->suivi_id;
  1199 + if ($subject == null && $msg == null) {
  1200 + $msgMore = '';
  1201 + Switch ($action) {
  1202 + case 'add':
  1203 + $subject = "Ajout d'un document";
  1204 + $msg = "$acteur a ajouté le document \"$nom_doc\" au format \"$type_doc\"";
  1205 + break;
  1206 + //ajoutons un contenu de message plus clair pour l'envoi de document
  1207 + case'mailDevis':
  1208 + $subject = "$acteur a partagé un document avec vous";
  1209 + $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\" .";
  1210 + $msg .="\n\n Le document est en pièce jointe.";
  1211 + break;
  1212 + //L'edition
  1213 + //comme il n'étais pas actuellement activé, on le laisse en commentaire
  1214 + //case 'edit':
  1215 + //$subject = "Modification d'un document";
  1216 + //$msg = "$acteur a modifié le matériel \"$nom_doc\"";
  1217 + //break;
  1218 + //La suppression
  1219 + //comme il n'étais pas actuellement activé, on le laisse en commentaire
  1220 + //case 'delete':
  1221 + //$subject = "Suppression d'un document";
  1222 + //$msg = "$acteur a supprimé le document\"$nom_doc\"";
  1223 + //break;
  1224 + default:
  1225 + $subject = "Action \"$action\" sur un matériel";
  1226 + $msg = "$acteur a effectué l'action \"$action\" sur le document \"$nom_doc\" au format \"$type_doc\"";
  1227 + break;
  1228 + } // end switch
  1229 + // (EP) Ajout de l'ID du document, et de l'id du materiel associé !!!
  1230 +
  1231 + //On change le contenu en fonction de si le document a été lié à un matériel, ou a un suivi
  1232 + // & nom du fichier à envoyer si nécessaire
  1233 +
  1234 + if (!($id_mat == Null)) {
  1235 + $msg .= "\n\n (id doc=".$doc->id.", Materiel associé d'id=\"$id_mat\")";
  1236 + $nomFic =$id_mat."_".$nom_doc."_".$id_doc.".".$type_doc;
  1237 + } else {
  1238 + $msg .= "\n\n (id doc=".$doc->id.", Materiel associé d'id=\"$id_suiv\")";
  1239 + $nomFic =$id_suiv."_".$nom_doc."_".$id_doc.".".$type_doc;
  1240 + }
  1241 + }
  1242 + // Et maintenant on construit la liste de mails...
  1243 + // Si l'envoi général est activé (et que l'action ne correspond pas à 'printLabelRuban'):
  1244 + if ($configuration->envoi_mail && $action != 'printLabelRuban') {
  1245 + // owner's mail (utilisateur du matériel associé )
  1246 + //$mailList[0] = $entity->materiel->email_responsable;
  1247 + $mailList[0] = 'malikimelhaine@gmail.com';
  1248 +
  1249 + // resp's mail
  1250 + $mailsRespMetier = null;
  1251 + $mailRespThematique = null;
  1252 + /*
  1253 + if ( $entity->materiel->groupes_metier_id != null && $entity->materiel->groupes_metier_id != 1) {
  1254 + // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe
  1255 + $mailsRespMetier = TableRegistry::get('Users')->find()
  1256 + ->select('email')
  1257 + ->where([
  1258 + 'role =' => 'Responsable',
  1259 + 'groupes_metier_id =' => $mat->groupes_metier_id
  1260 + ])
  1261 + ->toArray();
  1262 + $mailRespThematique = TableRegistry::get('Users')->find()
  1263 + ->select('email')
  1264 + ->where([
  1265 + 'role =' => 'Responsable',
  1266 + 'groupe_thematique_id =' => $mat->groupes_thematique_id
  1267 + ])
  1268 + ->toArray();
  1269 + }
  1270 +
  1271 + //if ($mailsRespMetier != null || $mailRespThematique != null) {
  1272 + //$mailsResp = array_unique(array_merge($mailsRespMetier, $mailRespThematique));
  1273 + //for ($i = 0; $i < sizeof($mailsResp); $i ++) {
  1274 + //$mailList[] = $mailsResp[$i]['email'];
  1275 + // $mailList[sizeof($mailList)] = $mailsResp[$i]['email'];
  1276 + //}
  1277 + //}*/
  1278 + }
  1279 + } else if ($entity instanceof Suivi) {
  1280 + ;
  1281 + } else if ($entity instanceof Emprunt) {
  1282 + ;
  1283 + }
  1284 + /*
  1285 + * @todo:
  1286 + * else if ($entity instanceof Configuration) {
  1287 + * ;
  1288 + * }
  1289 + * ... etc ... (il faut qu'on soit plus précis)
  1290 + */
  1291 + $mailList[0] = 'malikimelhaine@gmail.com';
  1292 + // Si l'envoi à la liste spécifiée est activé (et que l'action ne correspond pas à 'printLabelRuban'):
  1293 + $specificUsers = [];
  1294 + if ($configuration->envoi_mail_guests && $action != 'printLabelRuban') {
  1295 + // mail aux adresses specifiees dans la config
  1296 + for ($i = 0; $i < 11; $i ++) {
  1297 + $specificUser = $configuration['emailGuest' . $i];
  1298 + if ($specificUser)
  1299 + $specificUsers[] = $specificUser;
  1300 + // $mailList[sizeof($mailList)] = $configuration['emailGuest' . $i];
  1301 + $mailList[] = $specificUser;
  1302 + // Le if vérifie que la ligne soit pas null
  1303 + }
  1304 + }
  1305 +
  1306 + // 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 !
  1307 + $mailList = array_unique($mailList);
  1308 +
  1309 + // ... Pour envoyer les mails aux personnes concernees
  1310 + foreach ($mailList as $mail) {
  1311 + // 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
  1312 + //if ($mail == $_SESSION['Auth']['User']['mail'][0])
  1313 + //continue;
  1314 + $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
  1315 + // Génération du message "Vous recevez ce message en tant que $role"
  1316 + // 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. [...]"
  1317 + //if ($specificUsers)
  1318 + $role = 'car vous etes dans la liste spécifique des emails de LabInvent. Pour faire retirer votre mail de cette liste, veuillez contacter un SuperAdmin. + ';
  1319 + //else {
  1320 + $role = $role. TableRegistry::get('Users')->find()
  1321 + ->select('role')
  1322 + ->where([
  1323 + 'email =' => $mail
  1324 + ])
  1325 + ->first()['role'].' + ';
  1326 + // Default role is Utilisateur (for people in LDAP but without priviledge, not in the users table)
  1327 + // if (is_null($role))
  1328 + $role =$role .'en tant que ' .'Utilisateur';
  1329 + // $role = $role;
  1330 + //}
  1331 + if ($entity != null && ! in_array($action, [
  1332 + 'delete',
  1333 + 'statusValidated',
  1334 + 'statusCreated'
  1335 + ])) {
  1336 + $message .= "\n\nVeuillez vérifier et compléter si besoin la fiche correspondante.";
  1337 + $message .= "\n\nVous recevez ce message " . $role;
  1338 + //en fonction du mode à l'appel, on utilise un envoi de mail différent
  1339 +
  1340 +
  1341 + switch($mode) {
  1342 + //si le mode 1 est sélectionné c'est un envoi de mail avec ajout d'une photo
  1343 + //explique le document qui a été ajouté, et le met en pièce jointe
  1344 + case 1 :
  1345 + $this->sendEmailImgTo("$subject", $message, $mail, $configuration,$nomFic);
  1346 + break;
  1347 + //si le mode 2 est sélectionné c'est un envoi de mail avec ajout d'un document
  1348 + //à personnaliser
  1349 + case 2 :
  1350 + $this->sendEmailPJTo("$subject", $message, $mail, $configuration,$nomFic);
  1351 + break;
  1352 + //si le mode defaut est sélectionné c'est un simple envoi de mail
  1353 + //récapitule une action (mieux pour les add...)
  1354 + default :
  1355 + $this->sendEmailTo("$subject", $message, $mail, $configuration);
  1356 + break;
  1357 + }
  1358 +
  1359 + }
  1360 + }
  1361 + return $mailList;
  1362 + }
  1363 +}
  1364 +
  1365 +
1011 \ No newline at end of file 1366 \ No newline at end of file
src/Controller/DocumentsController.php
@@ -36,7 +36,8 @@ class DocumentsController extends AppController @@ -36,7 +36,8 @@ class DocumentsController extends AppController
36 if (in_array($action, [ 36 if (in_array($action, [
37 // 'view', 37 // 'view',
38 // 'add', 38 // 'add',
39 - 'ficheMateriel' 39 + 'ficheMateriel',
  40 + 'mailDevis'
40 ])) 41 ]))
41 return true; 42 return true;
42 43
@@ -634,4 +635,53 @@ class DocumentsController extends AppController @@ -634,4 +635,53 @@ class DocumentsController extends AppController
634 $this->set(compact('suivi', 'unite', 'fiche', 'symbole', 'mesures')); 635 $this->set(compact('suivi', 'unite', 'fiche', 'symbole', 'mesures'));
635 $this->set('fpdf', new FPDF('P', 'mm', 'A4')); 636 $this->set('fpdf', new FPDF('P', 'mm', 'A4'));
636 } 637 }
  638 +
  639 +
  640 + /*
  641 + * Envoi de mail - cette fonction sera appelée si l'on clique sur le bouton envelloppe d'un document sur la page vue d'un matériel
  642 + * Met en place l'envoi de mail
  643 + */
  644 + public function mailDevis($id)
  645 + {
  646 +
  647 + $document = $this->Documents->get($id);
  648 +
  649 + if ($this->request->is([
  650 + 'patch',
  651 + 'post',
  652 + 'put',
  653 + 'mailDevis'
  654 + ])) {
  655 + $document = $this->Documents->patchEntity($document, $this->request->data);
  656 + }
  657 + //Si le document existe, on vérifie si c'est une photo ou autre chose
  658 + if(!empty($document)){
  659 + //Si c'est une photo on l'envoi avec le mode d'envoi de mail adapté,..
  660 + //pareil pour les autres docs
  661 + if($document->photo){
  662 + $this->sendmail($document,1);
  663 + $this->Flash->success(__('Le mail avec la photo en pièce jointe a bien été envoyé.'));
  664 +
  665 + } else {
  666 + $this->sendmail($document,2);
  667 + $this->Flash->success(__('Le mail avec le document a bien été envoyé.'));
  668 + }
  669 + } else {
  670 + $this->Flash->error(__('Le mail n\'a pas pu être envoyé.'));
  671 + }
  672 + //puis on retourne sur la page vue du matériel si on étais sur matériel, sinon sur la page de suivi
  673 + if(!empty($document->materiel_id)) {
  674 + return $this->redirect([
  675 + 'controller' => 'materiels',
  676 + 'action' => 'view',
  677 + $document->materiel_id
  678 + ]);
  679 + } else {
  680 + return $this->redirect([
  681 + 'controller' => 'suivis',
  682 + 'action' => 'view',
  683 + $document->suivi_id
  684 + ]);
  685 + }
  686 + }
637 } 687 }
src/Controller/FournisseursController.php
@@ -39,12 +39,16 @@ class FournisseursController extends AppController @@ -39,12 +39,16 @@ class FournisseursController extends AppController
39 39
40 /* 40 /*
41 * // Administration + peut ajouter, supprimer ou modifier 41 * // Administration + peut ajouter, supprimer ou modifier
42 - * if( in_array($action,['add','delete','edit'])) {  
43 - * if ($this->USER_IS_ADMIN_AT_LEAST()) return true;  
44 - * return false; 42 + * if( in_array($action,['add'])) {
  43 + * return true;
45 * } 44 * }
46 */ 45 */
47 - 46 + //Tout le monde y a accés en ajout
  47 + if( in_array($action,['add'])) {
  48 + return true;
  49 + }
  50 +
  51 +
48 // Administration peut ajouter, supprimer ou modifier un fournisseur 52 // Administration peut ajouter, supprimer ou modifier un fournisseur
49 // if($role == 'Administration' && in_array($action,['add','delete','edit'])) return true; 53 // if($role == 'Administration' && in_array($action,['add','delete','edit'])) return true;
50 54
@@ -105,8 +109,7 @@ class FournisseursController extends AppController @@ -105,8 +109,7 @@ class FournisseursController extends AppController
105 if ($this->Fournisseurs->save($fournisseur)) { 109 if ($this->Fournisseurs->save($fournisseur)) {
106 $this->Flash->success(__('Le fournisseur a bien été ajouté.')); 110 $this->Flash->success(__('Le fournisseur a bien été ajouté.'));
107 return $this->redirect([ 111 return $this->redirect([
108 - 'action' => 'view',  
109 - $fournisseur->id 112 + 'action' => 'index'
110 ]); 113 ]);
111 } else { 114 } else {
112 $this->Flash->error(__('Le fournisseur n\'a pas pu être ajouté.')); 115 $this->Flash->error(__('Le fournisseur n\'a pas pu être ajouté.'));
src/Controller/MaterielsController.php
@@ -271,8 +271,8 @@ class MaterielsController extends AppController @@ -271,8 +271,8 @@ class MaterielsController extends AppController
271 break; 271 break;
272 case 'Responsable': 272 case 'Responsable':
273 // return ($this->isRespGroup($id, $user[$configuration->authentificationType_ldap][0])); 273 // return ($this->isRespGroup($id, $user[$configuration->authentificationType_ldap][0]));
274 - return ($this->isRespGroup($id, $userCname));  
275 - break; 274 + //return ($this->isRespGroup($id, $userCname));
  275 + return ($this->isRespGroup($id, $userCname) || $this->isOwnedBy($id, $user['sn'][0] . ' ' . $user['givenname'][0]));
276 // All other roles : Admin and more 276 // All other roles : Admin and more
277 default: 277 default:
278 return true; 278 return true;
@@ -286,7 +286,6 @@ class MaterielsController extends AppController @@ -286,7 +286,6 @@ class MaterielsController extends AppController
286 286
287 // DELETE 287 // DELETE
288 case 'delete': 288 case 'delete':
289 - // /$id = (int) $this->request->getAttribute('params')['pass'][0];  
290 289
291 /* 290 /*
292 * (EP) ACL: 291 * (EP) ACL:
@@ -866,7 +865,9 @@ class MaterielsController extends AppController @@ -866,7 +865,9 @@ class MaterielsController extends AppController
866 } 865 }
867 if ($this->Materiels->save($materiel)) { 866 if ($this->Materiels->save($materiel)) {
868 $this->Flash->success(__('Le matériel a bien été édité.')); 867 $this->Flash->success(__('Le matériel a bien été édité.'));
869 - $this->sendEmail($materiel); 868 + //En attendant un remaniement complet de la fonction
  869 + //1 = img, doc = 2, mail normal = tout autre argument
  870 + //$this->sendmail($materiel,5);
870 return $this->redirect([ 871 return $this->redirect([
871 'action' => 'view', 872 'action' => 'view',
872 $id 873 $id
@@ -1232,8 +1233,13 @@ class MaterielsController extends AppController @@ -1232,8 +1233,13 @@ class MaterielsController extends AppController
1232 $materiel->gestionnaire_id = $gestionnaireID; 1233 $materiel->gestionnaire_id = $gestionnaireID;
1233 // TODO: SAVE !!! 1234 // TODO: SAVE !!!
1234 } 1235 }
1235 - $this->sendEmail($materiel);  
1236 - } 1236 + //$this->sendEmail($materiel);
  1237 + //évite le double envoi car il y a un envoi de mail a la fonction add et à l'état created
  1238 + //évite les envois succcessifs si qqn fait une erreur sur la fiche, valide la fiche, et dévalide pour remodifier
  1239 + if ($newStatus == 'ARCHIVED' || $newStatus == 'TOBEARCHIVED') {
  1240 + $this->sendEmail($materiel);
  1241 + }
  1242 + }
1237 1243
1238 if (! $onlyOneMateriel) 1244 if (! $onlyOneMateriel)
1239 return $success; 1245 return $success;
@@ -1630,29 +1636,108 @@ class MaterielsController extends AppController @@ -1630,29 +1636,108 @@ class MaterielsController extends AppController
1630 if ($this->request->getData('s_fournisseur_id') !== null && $this->request->getData('s_fournisseur_id') != '') 1636 if ($this->request->getData('s_fournisseur_id') !== null && $this->request->getData('s_fournisseur_id') != '')
1631 $fournisseur['Materiels.fournisseur_id ='] = $this->request->getData('s_fournisseur'); 1637 $fournisseur['Materiels.fournisseur_id ='] = $this->request->getData('s_fournisseur');
1632 1638
1633 - $specificFieldsConditions = [  
1634 - 'Materiels.designation LIKE' => '%' . $this->request->getData('s_designation') . '%',  
1635 - 'Materiels.numero_laboratoire LIKE' => '%' . $this->request->getData('s_numero_laboratoire') . '%',  
1636 - $this->getConditionForField('numero_commande'),  
1637 - $date_acquisition,  
1638 - $periode_acquisitionRequest,  
1639 - $this->getConditionForFieldNumber('prix_ht'),  
1640 - $montantRequest,  
1641 - $this->getConditionForFieldNumber('sur_categorie_id'),  
1642 - $this->getConditionForFieldNumber('categorie_id'),  
1643 - $this->getConditionForFieldNumber('sous_categorie_id'),  
1644 - $this->getConditionForField('nom_responsable'),  
1645 - $this->getConditionForField('numero_inventaire_organisme'),  
1646 - $this->getConditionForField('numero_inventaire_old'),  
1647 - $this->getConditionForFieldNumber('groupes_metier_id'),  
1648 - $this->getConditionForFieldNumber('groupes_thematique_id'),  
1649 - $salle,  
1650 - $fournisseur,  
1651 - $this->getConditionForFieldNumber('organisme_id'),  
1652 - $matostypeRequest,  
1653 - $this->getConditionForFieldNumber('organisme_id'),  
1654 - $matostypeRequest  
1655 - ]; 1639 + $designation = [];
  1640 + $designation = explode (" ", $this->request->getData('s_designation'));
  1641 + if (count($designation) == 1 ) {
  1642 + $specificFieldsConditions = [
  1643 + 'Materiels.designation LIKE' => '%' . $designation[0] . '%',
  1644 + 'Materiels.numero_laboratoire LIKE' => '%' . $this->request->getData('s_numero_laboratoire') . '%',
  1645 + $this->getConditionForField('numero_commande'),
  1646 + $date_acquisition,
  1647 + $periode_acquisitionRequest,
  1648 + $this->getConditionForFieldNumber('prix_ht'),
  1649 + $montantRequest,
  1650 + $this->getConditionForFieldNumber('sur_categorie_id'),
  1651 + $this->getConditionForFieldNumber('categorie_id'),
  1652 + $this->getConditionForFieldNumber('sous_categorie_id'),
  1653 + $this->getConditionForField('nom_responsable'),
  1654 + $this->getConditionForField('numero_inventaire_organisme'),
  1655 + $this->getConditionForField('numero_inventaire_old'),
  1656 + $this->getConditionForFieldNumber('groupes_metier_id'),
  1657 + $this->getConditionForFieldNumber('groupes_thematique_id'),
  1658 + $salle,
  1659 + $fournisseur,
  1660 + $this->getConditionForFieldNumber('organisme_id'),
  1661 + $matostypeRequest,
  1662 + $this->getConditionForFieldNumber('organisme_id'),
  1663 + $matostypeRequest
  1664 + ];
  1665 + }else if(count($designation) == 2 ) {
  1666 + $specificFieldsConditions = [
  1667 + 'Materiels.designation LIKE' => '%' . $designation[0]. '%',
  1668 + 'Materiels.designation LIKE' => '%' . $designation[1]. '%',
  1669 + 'Materiels.numero_laboratoire LIKE' => '%' . $this->request->getData('s_numero_laboratoire') . '%',
  1670 + $this->getConditionForField('numero_commande'),
  1671 + $date_acquisition,
  1672 + $periode_acquisitionRequest,
  1673 + $this->getConditionForFieldNumber('prix_ht'),
  1674 + $montantRequest,
  1675 + $this->getConditionForFieldNumber('sur_categorie_id'),
  1676 + $this->getConditionForFieldNumber('categorie_id'),
  1677 + $this->getConditionForFieldNumber('sous_categorie_id'),
  1678 + $this->getConditionForField('nom_responsable'),
  1679 + $this->getConditionForField('numero_inventaire_organisme'),
  1680 + $this->getConditionForField('numero_inventaire_old'),
  1681 + $this->getConditionForFieldNumber('groupes_metier_id'),
  1682 + $this->getConditionForFieldNumber('groupes_thematique_id'),
  1683 + $salle,
  1684 + $fournisseur,
  1685 + $this->getConditionForFieldNumber('organisme_id'),
  1686 + $matostypeRequest,
  1687 + $this->getConditionForFieldNumber('organisme_id'),
  1688 + $matostypeRequest
  1689 + ];
  1690 + }else if(count($designation) == 3 ) {
  1691 + $specificFieldsConditions = [
  1692 + 'Materiels.designation LIKE' => '%' . $designation[0] . '%',
  1693 + 'Materiels.designation LIKE' => '%' . $designation[1] . '%',
  1694 + 'Materiels.designation LIKE' => '%' . $designation[2] . '%',
  1695 + 'Materiels.numero_laboratoire LIKE' => '%' . $this->request->getData('s_numero_laboratoire') . '%',
  1696 + $this->getConditionForField('numero_commande'),
  1697 + $date_acquisition,
  1698 + $periode_acquisitionRequest,
  1699 + $this->getConditionForFieldNumber('prix_ht'),
  1700 + $montantRequest,
  1701 + $this->getConditionForFieldNumber('sur_categorie_id'),
  1702 + $this->getConditionForFieldNumber('categorie_id'),
  1703 + $this->getConditionForFieldNumber('sous_categorie_id'),
  1704 + $this->getConditionForField('nom_responsable'),
  1705 + $this->getConditionForField('numero_inventaire_organisme'),
  1706 + $this->getConditionForField('numero_inventaire_old'),
  1707 + $this->getConditionForFieldNumber('groupes_metier_id'),
  1708 + $this->getConditionForFieldNumber('groupes_thematique_id'),
  1709 + $salle,
  1710 + $fournisseur,
  1711 + $this->getConditionForFieldNumber('organisme_id'),
  1712 + $matostypeRequest,
  1713 + $this->getConditionForFieldNumber('organisme_id'),
  1714 + $matostypeRequest
  1715 + ];
  1716 + }else {
  1717 + $specificFieldsConditions = [
  1718 + 'Materiels.designation LIKE' => '%' . $this->request->getData('s_designation'). '%',
  1719 + 'Materiels.numero_laboratoire LIKE' => '%' . $this->request->getData('s_numero_laboratoire') . '%',
  1720 + $this->getConditionForField('numero_commande'),
  1721 + $date_acquisition,
  1722 + $periode_acquisitionRequest,
  1723 + $this->getConditionForFieldNumber('prix_ht'),
  1724 + $montantRequest,
  1725 + $this->getConditionForFieldNumber('sur_categorie_id'),
  1726 + $this->getConditionForFieldNumber('categorie_id'),
  1727 + $this->getConditionForFieldNumber('sous_categorie_id'),
  1728 + $this->getConditionForField('nom_responsable'),
  1729 + $this->getConditionForField('numero_inventaire_organisme'),
  1730 + $this->getConditionForField('numero_inventaire_old'),
  1731 + $this->getConditionForFieldNumber('groupes_metier_id'),
  1732 + $this->getConditionForFieldNumber('groupes_thematique_id'),
  1733 + $salle,
  1734 + $fournisseur,
  1735 + $this->getConditionForFieldNumber('organisme_id'),
  1736 + $matostypeRequest,
  1737 + $this->getConditionForFieldNumber('organisme_id'),
  1738 + $matostypeRequest
  1739 + ];
  1740 + }
1656 1741
1657 if ($this->request->getData('s_status') != '') 1742 if ($this->request->getData('s_status') != '')
1658 array_push($specificFieldsConditions, [ 1743 array_push($specificFieldsConditions, [
@@ -1684,6 +1769,7 @@ class MaterielsController extends AppController @@ -1684,6 +1769,7 @@ class MaterielsController extends AppController
1684 ])->limit(1000); 1769 ])->limit(1000);
1685 1770
1686 $this->paginate = [ 1771 $this->paginate = [
  1772 + 'maxLimit' => 1000,
1687 'limit' => 1000 1773 'limit' => 1000
1688 ]; 1774 ];
1689 $_results = $this->paginate($lastResults); 1775 $_results = $this->paginate($lastResults);
@@ -1693,17 +1779,17 @@ class MaterielsController extends AppController @@ -1693,17 +1779,17 @@ class MaterielsController extends AppController
1693 $this->request->session()->write("result", $lastResults->toArray()); 1779 $this->request->session()->write("result", $lastResults->toArray());
1694 } // end if() 1780 } // end if()
1695 else if ($resultTri !== null && strstr($this->request->here(), 'sort') != false && strstr($this->request->here(), 'direction') != false) { 1781 else if ($resultTri !== null && strstr($this->request->here(), 'sort') != false && strstr($this->request->here(), 'direction') != false) {
1696 - $foundMateriel = []; 1782 + $findedMateriel = [];
1697 1783
1698 foreach ($resultTri as $r) { 1784 foreach ($resultTri as $r) {
1699 - array_push($foundMateriel, $r->id); 1785 + array_push($findedMateriel, $r->id);
1700 } 1786 }
1701 $res = $this->Materiels->find('all', [ 1787 $res = $this->Materiels->find('all', [
1702 'limit' => 1000 1788 'limit' => 1000
1703 ]); 1789 ]);
1704 - for ($i = 0; $i < sizeof($foundMateriel); $i ++) { 1790 + for ($i = 0; $i < sizeof($findedMateriel); $i ++) {
1705 $res->orWhere([ 1791 $res->orWhere([
1706 - 'id =' => $foundMateriel[$i] 1792 + 'id =' => $findedMateriel[$i]
1707 ]); 1793 ]);
1708 } 1794 }
1709 1795
@@ -2164,11 +2250,7 @@ class MaterielsController extends AppController @@ -2164,11 +2250,7 @@ class MaterielsController extends AppController
2164 $organisme = $materiel->organisme ? $materiel->organisme->nom : ''; 2250 $organisme = $materiel->organisme ? $materiel->organisme->nom : '';
2165 2251
2166 $numeroInventaireOrganisme = $materiel->numero_inventaire_organisme; 2252 $numeroInventaireOrganisme = $materiel->numero_inventaire_organisme;
2167 - // does not work in all cases :  
2168 - //$dateAcquisition = substr(str_replace('/','-',$materiel->date_acquisition), 0,-4) . substr($materiel->date_acquisition,-2);  
2169 - //$dateAcquisition = $materiel->date_acquisition->__toString(); // '20/10/2017'  
2170 - //$dateAcquisition = $materiel->date_acquisition->i18nFormat('dd-MM-yy'); // // '20-10-17'  
2171 - $dateAcquisition = $materiel->date_acquisition->i18nFormat('dd-MM-yyyy'); // // '20-10-2017' 2253 + $dateAcquisition = substr(str_replace('/','-',$materiel->date_acquisition), 0,-4) . substr($materiel->date_acquisition,-2);
2172 2254
2173 $filename = 'inventirap_label.label'; 2255 $filename = 'inventirap_label.label';
2174 $file = fopen('php://output', 'w'); 2256 $file = fopen('php://output', 'w');
@@ -2269,22 +2351,15 @@ class MaterielsController extends AppController @@ -2269,22 +2351,15 @@ class MaterielsController extends AppController
2269 <UseFullFontHeight>True</UseFullFontHeight> 2351 <UseFullFontHeight>True</UseFullFontHeight>
2270 <Verticalized>False</Verticalized> 2352 <Verticalized>False</Verticalized>
2271 <StyledText> 2353 <StyledText>
2272 - <Element>'.  
2273 - //.'<String>' . trim("$numeroLab / " . "$organisme") . "\n" . "$dateAcquisition " . trim($numeroInventaireOrganisme ? '/ ' . "$numeroInventaireOrganisme" : '') .  
2274 - //'<String>' . trim("$numeroLab / " . "$dateAcquisition") . "\n" . "$organisme " . trim($numeroInventaireOrganisme ? '/ ' . "$numeroInventaireOrganisme" : '') .  
2275 - /*  
2276 - IRAP-2014-0048 / CNRS  
2277 - 01-01-2018  
2278 - */  
2279 - '<String>' .  
2280 - trim("$numeroLab / $organisme")."\n".  
2281 - trim("$dateAcquisition"). trim($numeroInventaireOrganisme ? ' / '."$numeroInventaireOrganisme" : '').  
2282 - '</String>'.  
2283 - '<Attributes>  
2284 - <Font Family="Arial" Size="24" Bold="True" Italic="False" Underline="False" Strikeout="False"/>  
2285 - <ForeColor Alpha="255" Red="0" Green="0" Blue="0"/>  
2286 - </Attributes>  
2287 - </Element> 2354 + <Element>'.
  2355 + //.'<String>' . trim("$numeroLab / " . "$organisme") . "\n" . "$dateAcquisition " . trim($numeroInventaireOrganisme ? '/ ' . "$numeroInventaireOrganisme" : '') .
  2356 + '<String>' . trim("$numeroLab / " . "$dateAcquisition") . "\n" . "$organisme " . trim($numeroInventaireOrganisme ? '/ ' . "$numeroInventaireOrganisme" : '') .
  2357 + '</String>
  2358 + <Attributes>
  2359 + <Font Family="Arial" Size="24" Bold="True" Italic="False" Underline="False" Strikeout="False"/>
  2360 + <ForeColor Alpha="255" Red="0" Green="0" Blue="0"/>
  2361 + </Attributes>
  2362 + </Element>
2288 </StyledText> 2363 </StyledText>
2289 </TextObject> 2364 </TextObject>
2290 <ObjectMargin Left="200" Right="200" Top="0" Bottom="0"/> 2365 <ObjectMargin Left="200" Right="200" Top="0" Bottom="0"/>
src/Controller/SuivisController.php
@@ -410,13 +410,16 @@ class SuivisController extends AppController @@ -410,13 +410,16 @@ class SuivisController extends AppController
410 'delete' 410 'delete'
411 ]); 411 ]);
412 $suivi = $this->Suivis->get($id); 412 $suivi = $this->Suivis->get($id);
  413 + $id=$suivi->materiel_id;
413 if ($this->Suivis->delete($suivi)) { 414 if ($this->Suivis->delete($suivi)) {
414 $this->Flash->success(__('Le suivi a bien été supprimé.')); 415 $this->Flash->success(__('Le suivi a bien été supprimé.'));
415 } else { 416 } else {
416 $this->Flash->error(__('Le suivi n\'a pas pu être supprimé.')); 417 $this->Flash->error(__('Le suivi n\'a pas pu être supprimé.'));
417 } 418 }
418 return $this->redirect([ 419 return $this->redirect([
419 - 'action' => 'index' 420 + 'controller' => 'materiels',
  421 + 'action' => 'view',
  422 + $id
420 ]); 423 ]);
421 } 424 }
422 425
src/Model/Table/DocumentsTable.php
@@ -71,6 +71,11 @@ class DocumentsTable extends AppTable @@ -71,6 +71,11 @@ class DocumentsTable extends AppTable
71 71
72 $validator->allowEmpty('suivi_id'); 72 $validator->allowEmpty('suivi_id');
73 73
  74 + $validator->add('nom', 'alphaNumeric', [
  75 + 'rule' => 'alphaNumeric',
  76 + 'message' => __('Le nom du document ne doit contenir que des chiffres et des lettres.'),
  77 + ]);
  78 +
74 return $validator; 79 return $validator;
75 } 80 }
76 81
@@ -189,10 +194,18 @@ class DocumentsTable extends AppTable @@ -189,10 +194,18 @@ class DocumentsTable extends AppTable
189 $file = $entity->get('chemin_file'); 194 $file = $entity->get('chemin_file');
190 if (! empty($file['tmp_name'])) { 195 if (! empty($file['tmp_name'])) {
191 $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); 196 $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
  197 + //nouvelle norme pour les noms de documents uploadés
  198 + //
  199 + if(!$entity->get('materiel_id')== Null ) {
  200 + $id=$entity->get('materiel_id');
  201 + } else {
  202 + $id=$entity->get('suivi_id');
  203 + }
  204 + $nom=$id."_".$entity->get('nom')."_".$entity->get('id'). '.' . $extension;
192 if ($entity->get('photo')) { 205 if ($entity->get('photo')) {
193 - move_uploaded_file($file['tmp_name'], 'img' . DS . 'photos' . DS . $entity->get('id') . '.' . $extension); 206 + move_uploaded_file($file['tmp_name'], 'img' . DS . 'photos' . DS . $nom );
194 } else { 207 } else {
195 - move_uploaded_file($file['tmp_name'], 'files' . DS . $entity->get('id') . '.' . $extension); 208 + move_uploaded_file($file['tmp_name'], 'files' . DS . $nom );
196 } 209 }
197 } 210 }
198 } 211 }
@@ -202,8 +215,15 @@ class DocumentsTable extends AppTable @@ -202,8 +215,15 @@ class DocumentsTable extends AppTable
202 */ 215 */
203 public function afterDelete($event, $entity, $options) 216 public function afterDelete($event, $entity, $options)
204 { 217 {
205 - $nomFichier = $entity->get('id') . '.' . $entity->get('type_doc');  
206 - if ($entity->get('photo')) { 218 + //nouvelle norme pour les noms de documents uploadés
  219 + //
  220 + if(!$entity->get('materiel_id')== Null ) {
  221 + $id=$entity->get('materiel_id');
  222 + } else {
  223 + $id=$entity->get('suivi_id');
  224 + }
  225 + $nomFichier=$id."_".$entity->get('nom')."_".$entity->get('id').'.' . $entity->get('type_doc');
  226 + if ($entity->get('photo')) {
207 unlink('img' . DS . 'photos' . DS . $nomFichier); 227 unlink('img' . DS . 'photos' . DS . $nomFichier);
208 } else { 228 } else {
209 unlink('files' . DS . $nomFichier); 229 unlink('files' . DS . $nomFichier);
src/Model/Table/MaterielsTable.php
@@ -88,9 +88,7 @@ class MaterielsTable extends AppTable @@ -88,9 +88,7 @@ class MaterielsTable extends AppTable
88 'foreignKey' => 'gestionnaire_id' 88 'foreignKey' => 'gestionnaire_id'
89 ]); 89 ]);
90 } 90 }
91 -  
92 -  
93 - 91 +
94 /** 92 /**
95 * Default validation rules. 93 * Default validation rules.
96 * 94 *
@@ -101,53 +99,13 @@ class MaterielsTable extends AppTable @@ -101,53 +99,13 @@ class MaterielsTable extends AppTable
101 public function validationDefault(Validator $validator) 99 public function validationDefault(Validator $validator)
102 { 100 {
103 $dateValide = function ($entity) { 101 $dateValide = function ($entity) {
104 - // $entity format is like '02/01/2018' except for IRAP server which gives back '02/01/18' !!!  
105 - //debug($entity);  
106 -  
107 - // (1) La date saisie doit contenir 2 tirets (dd-mm-yy) :  
108 - $components1 = explode('-', $entity);  
109 - $components2 = explode('/', $entity);  
110 - if ( count($components1)!=3 && count($components2)!=3 ) return false;  
111 - $entity = str_replace('/', '-', $entity);  
112 - $components = explode('-', $entity);  
113 - //debug($components);  
114 - if ( count($components)!=3 ) return false;  
115 - // (2) La date saisie doit etre JJ-MM-AA ou JJ-MM-AAAA :  
116 - /*  
117 - debug(strlen($components[0]));  
118 - debug(strlen($components[1]));  
119 - debug(strlen($components[2]));  
120 - */  
121 - list($day,$month,$year) = explode('-', $entity);  
122 - // day  
123 - if (strlen($day) != 2) return false;  
124 - // month  
125 - if (strlen($month) != 2) return false;  
126 - // year  
127 - if (strlen($year) != 2 && strlen($year) != 4) return false;  
128 - //if (strlen($components[2]) != 4) return false;  
129 - // (2) L'année ne doit pas être 1970 (c'est un bug)  
130 - //?? TODO:  
131 - // (3) La date saisie ne doit pas être dans le futur (elle doit etre < ou = today) :  
132 $time = Time::now(); // On récupère la date et l'heure actuelles 102 $time = Time::now(); // On récupère la date et l'heure actuelles
133 - $today = (new date("$time->year-$time->month-$time->day"))->format('Ymd'); // On extrait la date on la formate en un format comparable de type 20171231  
134 - // So we have to use US format !!!  
135 - try {  
136 - //$timeEntity = new Time($entity);  
137 - $dateEntity = Time::parseDate($entity, 'dd-MM-yy');  
138 - // put in US format to be comparable to $today  
139 - //$timeEntity->i18nFormat('yyyyMMdd')  
140 -  
141 - } catch (Exception $e) {  
142 - return false;  
143 - }  
144 - $dateEntity = (new date("$dateEntity->year-$dateEntity->month-$dateEntity->day"))->format('Ymd');  
145 - //exit;  
146 - //return ($today >= $dateEntity);  
147 - return ($dateEntity <= $today); 103 + $today = (new date("$time->year-$time->month-$time->day"))->format('Ymd'); // On extrait la date on la formatte en un format comparable de type 20171231
  104 + $timeEntity = new time($entity);
  105 + $dateEntity = (new date("$timeEntity->year-$timeEntity->month-$timeEntity->day"))->format('Ymd');
  106 + return ($today >= $dateEntity);
148 }; 107 };
149 108
150 -  
151 $validator->integer('id')->allowEmpty('id', 'create'); 109 $validator->integer('id')->allowEmpty('id', 'create');
152 $validator->notEmpty('designation', 'Ce champ doit être rempli')->add('designation', 'valid', [ 110 $validator->notEmpty('designation', 'Ce champ doit être rempli')->add('designation', 'valid', [
153 'rule' => 'check_string', 111 'rule' => 'check_string',
@@ -178,37 +136,17 @@ class MaterielsTable extends AppTable @@ -178,37 +136,17 @@ class MaterielsTable extends AppTable
178 ]) 136 ])
179 ->first(); 137 ->first();
180 if ($configuration->date_commande_facultative) { 138 if ($configuration->date_commande_facultative) {
181 - $validator  
182 - ->allowEmpty('date_acquisition')  
183 - ->add('date_acquisition', 'custom', [  
184 - 'rule' => $dateValide,  
185 - 'message' => 'La date n\'est pas valide'  
186 - ]  
187 - );  
188 - } else {  
189 - $validator  
190 - ->notEmpty('date_acquisition', 'Ce champ doit être rempli')  
191 - ->add('date_acquisition', 'custom', [  
192 - 'rule' => $dateValide,  
193 - 'message' => 'La date n\'est pas valide'  
194 - ]  
195 - );  
196 - }  
197 - $validator  
198 - ->allowEmpty('date_reception')  
199 - ->add('date_reception', 'custom', [ 139 + $validator->allowEmpty('date_acquisition')->add('date_acquisition', 'custom', [
200 'rule' => $dateValide, 140 'rule' => $dateValide,
201 'message' => 'La date n\'est pas valide' 141 'message' => 'La date n\'est pas valide'
202 ]); 142 ]);
203 - /*  
204 - $validator  
205 - ->allowEmpty('date_fin_garantie')  
206 - ->add('date_fin_garantie', 'custom', [ 143 + } else {
  144 + $validator->notEmpty('date_acquisition', 'Ce champ doit être rempli')->add('date_acquisition', 'custom', [
207 'rule' => $dateValide, 145 'rule' => $dateValide,
208 'message' => 'La date n\'est pas valide' 146 'message' => 'La date n\'est pas valide'
209 ]); 147 ]);
210 - */  
211 - // Attention, configuration désactivée, cela ne génère pas ne num de labo, voir dans config/edit.ctp 148 + }
  149 + // Attention, configuration désactivée, cela ne génère pas ne num de labo, voir dans config/edit.ctp
212 $validator->allowEmpty('fournisseur')->add('fournisseur', 'valid', [ 150 $validator->allowEmpty('fournisseur')->add('fournisseur', 'valid', [
213 'rule' => 'check_string', 151 'rule' => 'check_string',
214 'message' => 'Ce champ contient des caractères interdits', 152 'message' => 'Ce champ contient des caractères interdits',
@@ -298,10 +236,9 @@ class MaterielsTable extends AppTable @@ -298,10 +236,9 @@ class MaterielsTable extends AppTable
298 $configuration = TableRegistry::get('Configurations')->find() 236 $configuration = TableRegistry::get('Configurations')->find()
299 ->where([ 237 ->where([
300 'id =' => 1 238 'id =' => 1
301 - ])->first();  
302 - 239 + ])
  240 + ->first();
303 $checkAtLeastOneChecked = function ($entity) { 241 $checkAtLeastOneChecked = function ($entity) {
304 - //debug($entity); exit;  
305 return ($entity->materiel_administratif || $entity->materiel_technique); 242 return ($entity->materiel_administratif || $entity->materiel_technique);
306 }; 243 };
307 // return if price >= $configuration->prix_inventaire_administratif € then must be checked as "administratif" 244 // return if price >= $configuration->prix_inventaire_administratif € then must be checked as "administratif"
@@ -328,14 +265,6 @@ class MaterielsTable extends AppTable @@ -328,14 +265,6 @@ class MaterielsTable extends AppTable
328 return ($entity->prix_ht !== null); 265 return ($entity->prix_ht !== null);
329 return true; 266 return true;
330 }; 267 };
331 -  
332 - $check_date_reception_superieure_a_date_acquisition = function ($entity) {  
333 - if ($entity->date_acquisition && $entity->date_reception)  
334 - return ($entity->date_reception >= $entity->date_acquisition);  
335 - return true;  
336 - };  
337 -  
338 -  
339 $rules->add($checkAtLeastOneChecked, [ 268 $rules->add($checkAtLeastOneChecked, [
340 'errorField' => 'materiel_administratif', 269 'errorField' => 'materiel_administratif',
341 'message' => 'Le matériel est obligatoirement inventoriable ou technique.' 270 'message' => 'Le matériel est obligatoirement inventoriable ou technique.'
@@ -352,12 +281,6 @@ class MaterielsTable extends AppTable @@ -352,12 +281,6 @@ class MaterielsTable extends AppTable
352 'errorField' => 'prix_ht', 281 'errorField' => 'prix_ht',
353 'message' => 'Le matériel ne peut pas être inventoriable et ne pas avoir de prix' 282 'message' => 'Le matériel ne peut pas être inventoriable et ne pas avoir de prix'
354 ]); 283 ]);
355 - $rules->add($check_date_reception_superieure_a_date_acquisition, [  
356 - 'errorField' => 'date_reception',  
357 - 'message' => "La date de réception doit être ultérieure à la date d'acquisiiton"  
358 - ]);  
359 -  
360 -  
361 $rules->add($rules->isUnique([ 284 $rules->add($rules->isUnique([
362 'numero_laboratoire' 285 'numero_laboratoire'
363 ])); 286 ]));
@@ -447,9 +370,6 @@ class MaterielsTable extends AppTable @@ -447,9 +370,6 @@ class MaterielsTable extends AppTable
447 if (empty($entity->get('date_reception'))) { 370 if (empty($entity->get('date_reception'))) {
448 $entity->set('date_reception', null); 371 $entity->set('date_reception', null);
449 } 372 }
450 - if (empty($entity->get('date_fin_garantie'))) {  
451 - $entity->set('date_fin_garantie', null);  
452 - }  
453 return true; 373 return true;
454 } 374 }
455 } 375 }
src/Template/Documents/edit.ctp
@@ -24,7 +24,8 @@ @@ -24,7 +24,8 @@
24 ]); 24 ]);
25 } 25 }
26 26
27 - echo $this->Form->input('nom'); 27 + //On met le nom du doc en read only vu qu'il apparait dans le nom du fichier sur le serveur
  28 + echo $this->Form->input('nom', ['readonly' => true]);
28 29
29 if (isset($photo)) { 30 if (isset($photo)) {
30 echo $this->Form->hidden('type_document_id', [ 31 echo $this->Form->hidden('type_document_id', [
src/Template/Documents/index.ctp
@@ -43,7 +43,7 @@ foreach ($documents as $document) : @@ -43,7 +43,7 @@ foreach ($documents as $document) :
43 ?> 43 ?>
44 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $document->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false]) ?> 44 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $document->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false]) ?>
45 45
46 - <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $document->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $document->id)]) ?> 46 + <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $document->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer {0} ?', $document->nom)]) ?>
47 </td> 47 </td>
48 48
49 <td class="smallText"><?= $this->Html->link($document->nom, ['action' => 'view', $document->id]) ?></td> 49 <td class="smallText"><?= $this->Html->link($document->nom, ['action' => 'view', $document->id]) ?></td>
src/Template/Element/menu.ctp
@@ -6,6 +6,8 @@ @@ -6,6 +6,8 @@
6 <?php if(isset($username) && $username != " "): ?> 6 <?php if(isset($username) && $username != " "): ?>
7 7
8 <li><?=$this->Html->link('<i class="icon-plus"></i> Nouveau matériel', ['controller' => 'Materiels','action' => 'add'], ['escape' => false]);?></li> 8 <li><?=$this->Html->link('<i class="icon-plus"></i> Nouveau matériel', ['controller' => 'Materiels','action' => 'add'], ['escape' => false]);?></li>
  9 +
  10 + <li><?=$this->Html->link('<i class="icon-briefcase"></i> Mes matériels', ['controller' => 'Materiels', 'action' => 'index', 'MY' => $username ], ['escape' => false]);?></li>
9 11
10 <li><?=$this->Html->link(__('<i class="icon-search"></i> Rechercher un matériel'), ['controller' => 'materiels','action' => 'find'], ['escape' => false]);?></li> 12 <li><?=$this->Html->link(__('<i class="icon-search"></i> Rechercher un matériel'), ['controller' => 'materiels','action' => 'find'], ['escape' => false]);?></li>
11 13
src/Template/Element/menu_index.ctp
@@ -50,6 +50,10 @@ if (in_array($singularHumanName, [ @@ -50,6 +50,10 @@ if (in_array($singularHumanName, [
50 $bol = true; 50 $bol = true;
51 } 51 }
52 52
  53 +//Pour l'ajout de fournisseurs par tous les profils il faut que le bouton d'ajout apparaisse
  54 +if(in_array($singularHumanName, ['Fournisseur']))
  55 + $bol = true;
  56 +
53 if ($bol == true) { 57 if ($bol == true) {
54 $t = strtolower($singularHumanName); 58 $t = strtolower($singularHumanName);
55 59
src/Template/Element/menu_view.ctp
@@ -347,23 +347,55 @@ if ($singularHumanName == &#39;Matériel&#39;) { @@ -347,23 +347,55 @@ if ($singularHumanName == &#39;Matériel&#39;) {
347 } 347 }
348 348
349 if ($isAuthorized == true) { 349 if ($isAuthorized == true) {
  350 + $determinant = '';
350 $action = ''; 351 $action = '';
351 - if (strstr($t, 'catégorie') || strstr($t, 'unité') || strstr($t, 'formule')) 352 + if (strstr($t, 'catégorie') || strstr($t, 'unité') || strstr($t, 'formule')) {
352 $action = ' Supprimer cette'; 353 $action = ' Supprimer cette';
353 - elseif (strstr($t, 'utilisateur') || strstr($t, 'emprunt')) 354 + $determinant = 'cette';
  355 + } elseif (strstr($t, 'utilisateur') || strstr($t, 'emprunt')) {
354 $action = ' Supprimer cet'; 356 $action = ' Supprimer cet';
355 - else 357 + $determinant = 'cet';
  358 + } else {
356 $action = ' Supprimer ce'; 359 $action = ' Supprimer ce';
  360 + $determinant = 'ce';
  361 + }
357 362
358 echo $this->Form->postLink('<i class="icon-trash"></i>' . $action . ' ' . $t, [ 363 echo $this->Form->postLink('<i class="icon-trash"></i>' . $action . ' ' . $t, [
359 'action' => 'delete', 364 'action' => 'delete',
360 $lien 365 $lien
361 ], [ 366 ], [
362 'escape' => false, 367 'escape' => false,
363 - 'confirm' => __('Êtes-vous sur de vouloir supprimer ' . $lien . ' ?') 368 + 'confirm' => __('Êtes-vous sur de vouloir supprimer '.$determinant.' '. $t . ' ?')
364 ]); 369 ]);
365 } 370 }
366 371
  372 +
  373 +
  374 +
  375 +
  376 +
367 ?> 377 ?>
368 </li> 378 </li>
  379 +
  380 + <li>
  381 +
  382 + <?php
  383 + //Add action dans le cas des utilisateurs, et pour le superadmin
  384 + //cela évite de devoir quitter la page pour repartir à la liste des utilisateurs pour faire un ajout
  385 +
  386 +
  387 + if ($role == 'Super Administrateur' && strstr($t, 'utilisateur')) {
  388 + $action = ' Ajouter un';
  389 + echo $this->Form->postLink('<i class="icon-trash"></i>' . $action . ' ' . $t, [
  390 + 'action' => 'add',
  391 + $lien
  392 + ], [
  393 + 'escape' => false,
  394 + 'confirm' => __('Êtes-vous sur de vouloir quitter la page pour ajouter un utilisateur ?')
  395 + ]);
  396 + }
  397 +
  398 +
  399 + ?>
  400 + </li>
369 </ul> 401 </ul>
370 \ No newline at end of file 402 \ No newline at end of file
src/Template/Emprunts/index.ctp
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
24 <td class="actions" style="padding: 6px 0; text-align: left;"> 24 <td class="actions" style="padding: 6px 0; text-align: left;">
25 <?php if(($role == 'Utilisateur' && in_array($username, [$emprunt->nom_createur, $emprunt->nom_emprunteur])) || (in_array($role, ['Responsable', 'Administration', 'Administration Plus', 'Super Administrateur']))) { ?> 25 <?php if(($role == 'Utilisateur' && in_array($username, [$emprunt->nom_createur, $emprunt->nom_emprunteur])) || (in_array($role, ['Responsable', 'Administration', 'Administration Plus', 'Super Administrateur']))) { ?>
26 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $emprunt->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> 26 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $emprunt->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?>
27 - <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $emprunt->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $emprunt->id)]) ?> 27 + <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $emprunt->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer cet emprunt ?')]) ?>
28 <?php } ?> 28 <?php } ?>
29 </td> 29 </td>
30 30
src/Template/Fournisseurs/index.ctp
@@ -24,7 +24,7 @@ foreach ($fournisseurs as $fournisseur) : @@ -24,7 +24,7 @@ foreach ($fournisseurs as $fournisseur) :
24 <?php } ?> 24 <?php } ?>
25 25
26 <?php if (in_array($role, ['Administration','Super Administrateur'])) { ?> 26 <?php if (in_array($role, ['Administration','Super Administrateur'])) { ?>
27 - <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $fournisseur->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $fournisseur->id)]) ?> 27 + <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $fournisseur->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer {0} ?', $fournisseur->nom)]) ?>
28 <?php } ?> 28 <?php } ?>
29 </td> 29 </td>
30 30
src/Template/Layout/Formules/add.ctp 0 → 100755
@@ -0,0 +1,96 @@ @@ -0,0 +1,96 @@
  1 +
  2 +<div class="formules form">
  3 + <?= $this->Form->create($formule) ?>
  4 + <fieldset>
  5 + <h2>
  6 + <i class="icon-plus"></i> Ajouter une formule
  7 + </h2>
  8 +
  9 +
  10 + <?php
  11 +echo $this->Form->input('nommesure', [
  12 + 'label' => 'Nom mesure',
  13 + 'required' => 'required'
  14 +]);
  15 +
  16 +echo $this->Form->input('symbole', [
  17 + 'label' => 'Symbole'
  18 +]);
  19 +
  20 +echo $this->Form->input('unite', [
  21 + 'label' => 'Unité',
  22 + 'required' => 'required'
  23 +]);
  24 +
  25 +echo $this->Form->input('nbVariable', [
  26 + 'label' => 'Nombre de variable(5 max.)',
  27 + 'default' => 1,
  28 + 'empty' => 1,
  29 + 'required' => 'required'
  30 +]);
  31 +?>
  32 + <div id="variable" style="display: none" required></div>
  33 + <div id="derive" style="display: none" required></div>
  34 +
  35 + </fieldset>
  36 + <?= $this->Form->submit(__('Valider')) ?>
  37 + <?= $this->Form->end() ?>
  38 +</div>
  39 +
  40 +<div class="actions">
  41 + <?php
  42 +echo $this->element('menu');
  43 +echo $this->element('menu_form', [
  44 + 'pluralHumanName' => 'Formules'
  45 +]);
  46 +?>
  47 +</div>
  48 +
  49 +<script type="text/javascript">
  50 +
  51 +
  52 +
  53 +$(document).ready(function () {
  54 + variable();
  55 + $("#nbvariable").bind("focusout", function (event) {
  56 + variable();
  57 + });
  58 + });
  59 +
  60 +function sin(i){
  61 + document.getElementById("derive"+i).value +="sin";
  62 + document.getElementById("derive"+i).focus();
  63 + }
  64 +
  65 +function cos(i){
  66 + document.getElementById("derive"+i).value +="cos";
  67 + document.getElementById("derive"+i).focus();
  68 + }
  69 +
  70 +function variable(){
  71 + var nbVariable = $("#nbvariable").val();
  72 +
  73 + if(nbVariable >=1 && nbVariable<=5){
  74 + $("#variable").show();
  75 + $("#derive").show();
  76 + document.getElementById("derive").innerHTML="";
  77 + document.getElementById("variable").innerHTML ="<table><tr><td> Variables </td><td>Symbole grandeur physique</td><td>Symbole unite mesure</td><td>nom Grandeur physique</td><td>Domaine de definition</td></tr></table>";
  78 + for(var i=1;i<=nbVariable;i++){
  79 + document.getElementById("variable").innerHTML +="<table><tr><td>X"+i+"</td><td><input type=\"control\" name=\"variables["+i+"][symbolegrandeurphysique]\" required></td><td><input type=\"control\" name=\"variables["+i+"][symboleunitemesure]\" required></td><td><input type=\"control\" name=\"variables["+i+"][nomgrandeurphysique]\" required></td><td><input type=\"control\" name=\"variables["+i+"][domainedef]\" placeholder=\"ex:[X;X[\" required></td></tr></table>";
  80 + document.getElementById("derive").innerHTML += "<div class=\"button\"><input id=\"sin"+i+"\" onclick=\"sin("+i+")\" type=\"button\" value=\"sin\" style=\"width: 100px;\"><input id=\"cos"+i+"\" onclick=\"cos("+i+")\" type=\"button\" value=\"cos\" style=\"width: 100px;\"></div>";
  81 + document.getElementById("derive").innerHTML += "<div class=\"input text required\"><label>Ecrire la dérivé partielle de F par rapport a la variable X"+i+"</label><input id=\"derive"+i+"\" type=\"control\" name=\"variables["+i+"][derivepartielle]\" required></div>";
  82 + }
  83 + i++;
  84 + document.getElementById("derive").innerHTML += "<div class=\"button\"><input id=\"sin"+i+"\" onclick=\"sin("+i+")\" type=\"button\" value=\"sin\" style=\"width: 100px;\"><input id=\"cos"+i+"\" onclick=\"cos("+i+")\" type=\"button\" value=\"cos\" style=\"width: 100px;\"></div>";
  85 + document.getElementById("derive").innerHTML += "<div class=\"input text required\"><label>Formule</label><input type=\"text\" name=\"formule\" id=\"derive"+i+"\" required></div>";
  86 + }else{
  87 + alert("erreur");
  88 +
  89 +
  90 + }
  91 +
  92 + }
  93 +
  94 +
  95 +
  96 +</script>
src/Template/Layout/Formules/edit.ctp 0 → 100755
@@ -0,0 +1,83 @@ @@ -0,0 +1,83 @@
  1 +
  2 +<div class="formules form">
  3 + <?= $this->Form->create($formule) ?>
  4 + <fieldset>
  5 + <h2>
  6 + <i class="icon-plus"></i> Ajouter une formule
  7 + </h2>
  8 +
  9 +
  10 + <?php
  11 +echo $this->Form->input('nommesure', [
  12 + 'label' => 'Nom mesure',
  13 + 'required' => 'required'
  14 +]);
  15 +
  16 +echo $this->Form->input('symbole', [
  17 + 'label' => 'Symbole'
  18 +]);
  19 +
  20 +echo $this->Form->input('unite', [
  21 + 'label' => 'Unité',
  22 + 'required' => 'required'
  23 +]);
  24 +
  25 +echo $this->Form->input('nbVariable', [
  26 + 'label' => 'Nombre de variable(5 max.)',
  27 + 'default' => 1,
  28 + 'empty' => 1,
  29 + 'required' => 'required'
  30 +]);
  31 +?>
  32 + <div id="variable" style="display: none" required></div>
  33 + <div id="derive" style="display: none" required></div>
  34 +
  35 + </fieldset>
  36 + <?= $this->Form->submit(__('Valider')) ?>
  37 + <?= $this->Form->end() ?>
  38 +</div>
  39 +
  40 +<div class="actions">
  41 + <?php
  42 +echo $this->element('menu');
  43 +echo $this->element('menu_form', [
  44 + 'pluralHumanName' => 'Formules'
  45 +]);
  46 +?>
  47 +</div>
  48 +
  49 +<script type="text/javascript">
  50 +
  51 +
  52 +
  53 +$(document).ready(function () {
  54 + variable();
  55 + $("#nbvariable").bind("focusout", function (event) {
  56 + variable();
  57 + });
  58 + });
  59 +
  60 +function variable(){
  61 + var nbVariable = $("#nbvariable").val();
  62 +
  63 + if(nbVariable >=1 && nbVariable<=5){
  64 + $("#variable").show();
  65 + $("#derive").show();
  66 + document.getElementById("derive").innerHTML="";
  67 + document.getElementById("variable").innerHTML ="<table><tr><td> Variables </td><td>Symbole grandeur physique</td><td>Symbole unite mesure</td><td>nom Grandeur physique</td><td>Domaine de definition</td></tr></table>";
  68 + for(var i=1;i<=nbVariable;i++){
  69 + document.getElementById("variable").innerHTML +="<table><tr><td><label>X"+i+"</label></td><td><input type=\"control\" name=\"variables["+i+"][symbolegrandeurphysique]\" required></td><td><input type=\"control\" name=\"variables["+i+"][symboleunitemesure]\" required></td><td><input type=\"control\" name=\"variables["+i+"][nomgrandeurphysique]\" required></td><td><input type=\"control\" name=\"variables["+i+"][domainedef]\" placeholder=\"ex:[X;X[\" required></td></tr></table>";
  70 + document.getElementById("derive").innerHTML += "<div class=\"input text required\"><label>Ecrire la dérivé partielle de F par rapport a la variable X"+i+"</label><input type=\"control\" name=\"variables["+i+"][derivepartielle]\" required></div>";
  71 + }
  72 + document.getElementById("derive").innerHTML += "<div class=\"input text required\"><label>Formule</label><input type=\"text\" name=\"formule\" id=\"formule\" required></div>";
  73 + }else{
  74 + alert("erreur");
  75 +
  76 +
  77 + }
  78 +
  79 + }
  80 +
  81 +
  82 +
  83 +</script>
src/Template/Layout/Formules/index.ctp 0 → 100755
@@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
  1 +
  2 +<div class="formules index">
  3 +<?php echo '<h2><i class="icon-list"></i> Liste des formules ('.$nbFormules.')</h2>'; ?>
  4 + <table cellpadding="0" cellspacing="0">
  5 + <thead>
  6 + <tr>
  7 + <th class="actions"><?= __('') ?></th>
  8 + <th><?= $this->Paginator->sort('id', 'N°') ?></th>
  9 + <th><?= $this->Paginator->sort('nommesure', 'Nom mesure') ?></th>
  10 + <th><?= $this->Paginator->sort('symbole', 'Symbole') ?></th>
  11 + <th><?= $this->Paginator->sort('nbVariable', 'Nombre de variable') ?></th>
  12 + <th><?= $this->Paginator->sort('formule', 'Formule') ?></th>
  13 +
  14 +
  15 + </tr>
  16 + </thead>
  17 + <tbody>
  18 + <?php foreach ($formules as $formule): ?>
  19 + <tr>
  20 + <td class="actions" style="padding: 6px 0; text-align: left;">
  21 + <?php if($role == 'Responsable' || $role == 'Super Administrateur') { ?>
  22 + <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $formule->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $formule->id)]) ?>
  23 + <?php } ?>
  24 + </td>
  25 + <td class="smallText"><?php echo $this->Html->link('Formule '.$this->Number->format($formule->id), ['action' => 'view', $formule->id])?></td>
  26 + <td class="smallText"><?= h($formule->nommesure) ?></td>
  27 + <td class="smallText"><?= h($formule->symbole) ?></td>
  28 + <td class="smallText"><?= h($formule->nbVariable) ?></td>
  29 + <td class="smallText"><?= h($formule->formule) ?></td>
  30 +
  31 +
  32 + </tr>
  33 + <?php endforeach; ?>
  34 + </tbody>
  35 + </table>
  36 +
  37 + <?php echo $this->element('pagination'); ?>
  38 +
  39 +</div>
  40 +
  41 +<div class="actions">
  42 + <?php echo $this->element('menu') ?>
  43 + <?php
  44 +
  45 +echo $this->element('menu_index', [
  46 + 'pluralHumanName' => 'Formules',
  47 + 'singularHumanName' => 'Formule'
  48 +])?>
  49 + </div>
0 \ No newline at end of file 50 \ No newline at end of file
src/Template/Layout/Formules/view.ctp 0 → 100755
@@ -0,0 +1,71 @@ @@ -0,0 +1,71 @@
  1 +
  2 +<div class="formules view">
  3 + <h2>Détail formule</h2>
  4 + <table style="margin-bottom: 30px;">
  5 +
  6 +
  7 + <tr>
  8 + <th style="width: 250px;"></th>
  9 + <th></th>
  10 + </tr>
  11 + <?php
  12 + $displayElement(__('Id'), h($formule->id));
  13 + $displayElement(__('Nom mesure'), $formule->has('nommesure') ? h($formule->nommesure) : '');
  14 + $displayElement(__('Symbole'), h($formule->symbole));
  15 + $displayElement(__('Unite'), h($formule->unite));
  16 + $displayElement(__('Nombre variable'), h($formule->nbVariable));
  17 + $displayElement(__('Formule'), h($formule->formule));
  18 + ?>
  19 +
  20 + </table>
  21 +
  22 + <h3 id="t_variables" style="cursor: pointer;">
  23 + <i class="icon-chevron-down" style="font-size: 14px;" id="i_variables"></i>
  24 + <span style="text-decoration: underline;">Variable(s) lié(s) à la formule (<?= count($formule->variables) ?>)</span>
  25 + </h3>
  26 + <div id="fichiers" style="margin-bottom: 20px;">
  27 +
  28 + <?php if (!empty($formule->variables)) { ?>
  29 + <table>
  30 + <tr>
  31 + <th><?= __('N°') ?></th>
  32 + <th><?= __('Symbole grandeur physique') ?></th>
  33 + <th><?= __('Symbole unite mesure') ?></th>
  34 + <th><?= __('Nom grandeur physique') ?></th>
  35 + <th><?= __('Domaine definition') ?></th>
  36 + <th><?= __('Derivé partielle') ?></th>
  37 + </tr>
  38 + <?php $i=1; ?>
  39 +
  40 + <?php
  41 +
  42 +foreach ($formule->variables as $variable) :
  43 +
  44 + ?>
  45 + <tr>
  46 + <td><?= $i ?></td>
  47 + <td><?= $variable->symbolegrandeurphysique ?></td>
  48 + <td><?= $variable->symboleunitemesure ?></td>
  49 + <td><?= $variable->nomgrandeurphysique ?></td>
  50 + <td><?= $variable->domainedef ?></td>
  51 + <td><?= $variable->derivepartielle ?></td>
  52 + <?php $i++; ?>
  53 + </tr>
  54 + <?php endforeach; ?>
  55 + </table>
  56 + <?php }else { echo 'Aucune variable pour ce matériel.'; } ?>
  57 + </div>
  58 +
  59 +
  60 +</div>
  61 +
  62 +<div class="actions">
  63 + <?php echo $this->element('menu') ?>
  64 + <?php
  65 +
  66 +echo $this->element('menu_view', [
  67 + 'pluralHumanName' => 'Formules',
  68 + 'singularHumanName' => 'Formule',
  69 + 'lien' => $formule->id
  70 +])?>
  71 + </div>
src/Template/Layout/default.ctp
@@ -119,7 +119,7 @@ $cakeDescription = &#39;Labinvent 2&#39;; @@ -119,7 +119,7 @@ $cakeDescription = &#39;Labinvent 2&#39;;
119 </i></td> 119 </i></td>
120 <td id="version"> 120 <td id="version">
121 <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) --> 121 <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) -->
122 - <font color="black">VERSION 2.8.1.0 (02/02/2018)</font> <br /> <font 122 + <font color="black">VERSION 2.8.0.7 (23/01/2018)</font> <br /> <font
123 color="black"><a 123 color="black"><a
124 href="<?php 124 href="<?php
125 125
src/Template/Materiels/add.ctp
@@ -226,11 +226,12 @@ if (isset($cpMateriel)) { @@ -226,11 +226,12 @@ if (isset($cpMateriel)) {
226 'default' => $_SESSION['Auth']['User']['sn'][0], 226 'default' => $_SESSION['Auth']['User']['sn'][0],
227 'options' => $administrateurs 227 'options' => $administrateurs
228 ]); 228 ]);
229 - echo $this->Form->input('fournisseur', [ 229 + //nouveau champ de saisie de Fournisseur, il ne se saisissait pas à l'ajout
  230 + echo $this->Form->input('fournisseur_id', [
230 'label' => 'Fournisseur', 231 'label' => 'Fournisseur',
231 - 'default' => $Fournisseur,  
232 - 'option' => $fournisseurs,  
233 - 'empty' => 'N/A' 232 + 'options' => $fournisseurs,
  233 + 'style' => 'width: 380px',
  234 + 'empty' => 'Choisir un fournisseur'
234 ]); 235 ]);
235 echo $this->Form->input('organisme_id', [ 236 echo $this->Form->input('organisme_id', [
236 'options' => $organismes, 237 'options' => $organismes,
src/Template/Materiels/edit.ctp
@@ -6,6 +6,12 @@ $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER = $USER_IS_UTILISATEUR &amp;&amp; in_array($us @@ -6,6 +6,12 @@ $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER = $USER_IS_UTILISATEUR &amp;&amp; in_array($us
6 $materiel->nom_responsable 6 $materiel->nom_responsable
7 ]); 7 ]);
8 8
  9 +$USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER = $USER_IS_RESPONSABLE && in_array($username, [
  10 + $materiel->nom_createur,
  11 + $materiel->nom_responsable
  12 +]);
  13 +
  14 +
9 $USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE && ((isset($priviledgedUser->groupes_metier_id) && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)); 15 $USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE && ((isset($priviledgedUser->groupes_metier_id) && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id));
10 16
11 $administrationData = array( 17 $administrationData = array(
@@ -28,8 +34,7 @@ if ($IS_VALIDATED) @@ -28,8 +34,7 @@ if ($IS_VALIDATED)
28 'date_reception', 34 'date_reception',
29 'organisme_id', 35 'organisme_id',
30 'prix_ht', 36 'prix_ht',
31 - 'gestionnaire_id',  
32 - 'nom_responsable' 37 + 'gestionnaire_id'
33 ), $administrationData); 38 ), $administrationData);
34 else if ($IS_ARCHIVED_OR_TOBE) { 39 else if ($IS_ARCHIVED_OR_TOBE) {
35 $myReadonlyFields = array( 40 $myReadonlyFields = array(
@@ -47,6 +52,7 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie) @@ -47,6 +52,7 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie)
47 ), $myReadonlyFields); 52 ), $myReadonlyFields);
48 ?> 53 ?>
49 54
  55 +
50 <div class="materiels form"> 56 <div class="materiels form">
51 <?=$this->Form->create($materiel)?> 57 <?=$this->Form->create($materiel)?>
52 <fieldset> 58 <fieldset>
@@ -56,22 +62,24 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie) @@ -56,22 +62,24 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie)
56 </h2> 62 </h2>
57 63
58 <?php 64 <?php
59 - // if ($role == 'Super Administrateur') { 65 +
  66 + // Après armonisation de edit et administrer plus besoin de lien vers la page*
  67 + /*
60 if ($USER_IS_SUPERADMIN) { 68 if ($USER_IS_SUPERADMIN) {
61 echo $this->Html->link('Aller au formulaire d\'édition avancée', [ 69 echo $this->Html->link('Aller au formulaire d\'édition avancée', [
62 'action' => 'administrer', 70 'action' => 'administrer',
63 $materiel->id 71 $materiel->id
64 ]); 72 ]);
65 echo '<br><br>'; 73 echo '<br><br>';
66 - } 74 + }*/
67 ?> 75 ?>
68 76
69 <div id="boutons" class="actions" 77 <div id="boutons" class="actions"
70 style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;"> 78 style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;">
71 <?=$this->Form->submit(__('Enregistrer'))?> 79 <?=$this->Form->submit(__('Enregistrer'))?>
72 80
73 - <?=$this->Html->link(__('<i class="icon-minus-sign"></i> Annuler'), ['action' => 'index'], ['escape' => false,'onclick' => 'return true;','style' => 'margin-right: 10px'])?>  
74 - </div> 81 + <?=$this->Html->link(__('<i class="icon-minus-sign"></i> Annuler'), ['action' => 'view', $materiel->id], ['escape' => false,'onclick' => 'return true;','style' => 'margin-right: 10px'])?>
  82 + </div>
75 83
76 <?php 84 <?php
77 echo $this->Form->input('designation', [ 85 echo $this->Form->input('designation', [
@@ -183,7 +191,6 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie) @@ -183,7 +191,6 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie)
183 echo $this->Form->input('date_acquisition', [ 191 echo $this->Form->input('date_acquisition', [
184 'type' => 'text', 192 'type' => 'text',
185 'label' => 'Date de la commande', 193 'label' => 'Date de la commande',
186 - 'dateFormat' => 'dd-MM-yyyy',  
187 'class' => 'datepicker', 194 'class' => 'datepicker',
188 'placeholder' => 'Cliquez pour sélectionner une date', 195 'placeholder' => 'Cliquez pour sélectionner une date',
189 'disabled' => $isReadonlyField('date_acquisition', $myReadonlyFields) 196 'disabled' => $isReadonlyField('date_acquisition', $myReadonlyFields)
@@ -191,7 +198,6 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie) @@ -191,7 +198,6 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie)
191 echo $this->Form->input('date_reception', [ 198 echo $this->Form->input('date_reception', [
192 'type' => 'text', 199 'type' => 'text',
193 'label' => 'Date de réception', 200 'label' => 'Date de réception',
194 - 'dateFormat' => 'dd-MM-yyyy',  
195 'class' => 'datepicker', 201 'class' => 'datepicker',
196 'placeholder' => 'A éditer lors de la réception uniquement.', 202 'placeholder' => 'A éditer lors de la réception uniquement.',
197 'disabled' => $isReadonlyField('date_reception', $myReadonlyFields), 203 'disabled' => $isReadonlyField('date_reception', $myReadonlyFields),
@@ -261,10 +267,8 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie) @@ -261,10 +267,8 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie)
261 'default' => 1 267 'default' => 1
262 ]); 268 ]);
263 269
264 - $fieldType = $USER_IS_UTILISATEUR ? 'hidden' : 'input';  
265 - echo $this->Form->$fieldType('nom_responsable', [ 270 + echo $this->Form->input('nom_responsable', [
266 'label' => 'Nom de l\'utilisateur', 271 'label' => 'Nom de l\'utilisateur',
267 - 'disabled' => $isReadonlyField('nom_responsable', $myReadonlyFields),  
268 'empty' => 'Choisir un utilisateur', 272 'empty' => 'Choisir un utilisateur',
269 'default' => $username, 273 'default' => $username,
270 'options' => $utilisateurs 274 'options' => $utilisateurs
@@ -330,8 +334,7 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie) @@ -330,8 +334,7 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie)
330 * ])) { 334 * ])) {
331 */ 335 */
332 echo '<div style="border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; margin-bottom: 0; background: #EEE;"><span style="font-size: 9px; color: red;">Partie administrative</span>'; 336 echo '<div style="border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; margin-bottom: 0; background: #EEE;"><span style="font-size: 9px; color: red;">Partie administrative</span>';
333 - echo $this->Form->input('adminEdit', [  
334 - 'type' => 'checkbox', 337 + echo $this->Form->checkbox('adminEdit', [
335 'label' => 'Editer la partie administrative', 338 'label' => 'Editer la partie administrative',
336 'onchange' => 'changeAdminEdit();', 339 'onchange' => 'changeAdminEdit();',
337 'default' => false 340 'default' => false
@@ -348,6 +351,11 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie) @@ -348,6 +351,11 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie)
348 'label' => 'Code comptable', 351 'label' => 'Code comptable',
349 'disabled' => true 352 'disabled' => true
350 ]); 353 ]);
  354 + echo $this->Form->input('numero_laboratoire', [
  355 + 'label' => 'Numéro de laboratoire',
  356 + 'id' => 'num_labo',
  357 + 'disabled' => true
  358 + ]);
351 echo $this->Form->input('numero_inventaire_organisme', [ 359 echo $this->Form->input('numero_inventaire_organisme', [
352 'label' => 'N° inventaire organisme', 360 'label' => 'N° inventaire organisme',
353 'disabled' => true 361 'disabled' => true
@@ -358,9 +366,41 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie) @@ -358,9 +366,41 @@ if ($IS_VALIDATED &amp;&amp; $materiel-&gt;numero_serie)
358 ]); 366 ]);
359 echo '</div>'; 367 echo '</div>';
360 } 368 }
361 - echo $this->Form->hidden('nom_modificateur', [  
362 - 'value' => $username  
363 - ]); 369 + // if ($role == 'Super Administrateur') {
  370 +if ($USER_IS_SUPERADMIN) {
  371 + echo '<div style="border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; margin-bottom: 0; background: #EEE;"><span style="font-size: 9px; color: red;">Partie administrative avancée</span>';
  372 + /*echo $this->Form->checkbox('adminEditPlus', [
  373 + 'label' => 'Editer la partie administrative avancée',
  374 + 'onchange' => 'changeAdminPlus();',
  375 + 'default' => false
  376 + ]);*/
  377 +
  378 + echo $this->Form->input('nom_createur', [
  379 + 'label' => 'Nom du créateur',
  380 + 'disabled' => true,
  381 + 'options' => $utilisateurs
  382 + ]);
  383 +
  384 + echo $this->Form->input('created', [
  385 + 'label' => 'Date de création',
  386 + 'disabled' => true
  387 + ]);
  388 + echo $this->Form->input('nom_modificateur', [
  389 + 'label' => 'Nom du modificateur',
  390 + 'default' => $username,
  391 + 'disabled' => true
  392 + ]);
  393 + echo $this->Form->input('modified', [
  394 + 'label' => 'Date de modification',
  395 + 'disabled' => true
  396 + ]);
  397 + echo '</div>';
  398 + }
  399 +echo $this->Form->hidden('nom_modificateur', [
  400 + 'value' => $username
  401 +]);
  402 +
  403 +
364 ?> 404 ?>
365 </fieldset> 405 </fieldset>
366 <?=$this->Form->submit(__('Enregistrer'))?> 406 <?=$this->Form->submit(__('Enregistrer'))?>
@@ -458,5 +498,71 @@ $(document).ready(function () { @@ -458,5 +498,71 @@ $(document).ready(function () {
458 return false; 498 return false;
459 }); 499 });
460 }); 500 });
  501 +
  502 +/**
  503 + * Event Mail change
  504 + */
  505 + $(document).ready(function () {
  506 + $("#nom-responsable").bind("change", function (event) {
  507 + var url = document.URL;
  508 + var reg=new RegExp("(materiels).*$","g");
  509 + var emailUrl = url.replace(reg, "Users/getLdapEmail/");
  510 + $.ajax({
  511 + url: emailUrl + $("#nom-responsable").val()
  512 + }).done(function(data) {
  513 + $("#email-responsable").val(data)
  514 + });
  515 + });
  516 + });
  517 +
  518 +
  519 + /**
  520 + * Event calcul date fin de garantie
  521 + */
  522 + $(document).ready(function () {
  523 + $("#duree-garantie").bind("change", function (event) {
  524 + if($("#date-reception").val() != "" && $("#duree-garantie").val() != "") {
  525 + var url = document.URL;
  526 + var reg=new RegExp("(materiels).*$","g");
  527 + var dateUrl = url.replace(reg, "Materiels/getDateGarantie/");
  528 + $.ajax({
  529 + url: dateUrl + $("#date-reception").val() + "/" + $("#duree-garantie").val() + "/" + $("#unite-duree-garantie").val()
  530 + }).done(function(data) {
  531 + $("#date-fin-garantie").val(data)
  532 + });
  533 + }
  534 + });
  535 + $("#unite-duree-garantie").bind("change", function (event) {
  536 + if($("#date-reception").val() != "" && $("#duree-garantie").val() != "") {
  537 + var url = document.URL;
  538 + var reg=new RegExp("(materiels).*$","g");
  539 + var dateUrl = url.replace(reg, "Materiels/getDateGarantie/");
  540 + $.ajax({
  541 + url: dateUrl + $("#date-reception").val() + "/" + $("#duree-garantie").val() + "/" + $("#unite-duree-garantie").val()
  542 + }).done(function(data) {
  543 + $("#date-fin-garantie").val(data)
  544 + });
  545 + }
  546 + });
  547 +});
  548 +
  549 + function changeAdminEdit() {
  550 + if (document.getElementById('eotp').disabled) {
  551 + document.getElementById('eotp').disabled=false;
  552 + document.getElementById('numero-commande').disabled=false;
  553 + document.getElementById('code-comptable').disabled=false;
  554 + document.getElementById('numero-inventaire-organisme').disabled=false;
  555 + document.getElementById('numero-inventaire-old').disabled=false;
  556 + document.getElementById('num_labo').disabled=false;
  557 + }
  558 + else {
  559 + document.getElementById('eotp').disabled=true;
  560 + document.getElementById('numero-commande').disabled=true;
  561 + document.getElementById('code-comptable').disabled=true;
  562 + document.getElementById('numero-inventaire-organisme').disabled=true;
  563 + document.getElementById('numero-inventaire-old').disabled=true;
  564 + document.getElementById('num_labo').disabled=true;
  565 + }
  566 + }
461 567
462 </script> 568 </script>
src/Template/Materiels/index.ctp
@@ -195,8 +195,10 @@ if (in_array($materiel-&gt;status, [ @@ -195,8 +195,10 @@ if (in_array($materiel-&gt;status, [
195 'Administration', 195 'Administration',
196 'Administration Plus', 196 'Administration Plus',
197 'Super Administrateur' 197 'Super Administrateur'
198 - ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)))) {  
199 - ?> 198 + ])) || ($role == 'Responsable' && (in_array($username, [
  199 + $materiel ->nom_createur,
  200 + $materiel ->nom_responsable
  201 + ]))) ||($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)))) {?>
200 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $materiel->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> 202 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $materiel->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?>
201 <?php } endif; ?> 203 <?php } endif; ?>
202 204
@@ -255,7 +257,7 @@ if (in_array($materiel-&gt;status, [ @@ -255,7 +257,7 @@ if (in_array($materiel-&gt;status, [
255 'title' => 'Supprimer', 257 'title' => 'Supprimer',
256 'style' => 'margin: 0 2px', 258 'style' => 'margin: 0 2px',
257 'escape' => false, 259 'escape' => false,
258 - 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $materiel->designation) 260 + 'confirm' => __('Êtes-vous sur de vouloir supprimer {0} ?', $materiel->designation)
259 ]); 261 ]);
260 } 262 }
261 } 263 }
src/Template/Materiels/view.ctp
@@ -72,6 +72,11 @@ $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER = $USER_IS_UTILISATEUR &amp;&amp; in_array($us @@ -72,6 +72,11 @@ $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER = $USER_IS_UTILISATEUR &amp;&amp; in_array($us
72 $materiel->nom_responsable 72 $materiel->nom_responsable
73 ]); 73 ]);
74 74
  75 +$USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER = $USER_IS_RESPONSABLE && in_array($username, [
  76 + $materiel->nom_createur,
  77 + $materiel->nom_responsable
  78 +]);
  79 +
75 $USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)); 80 $USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id));
76 81
77 ?> 82 ?>
@@ -103,7 +108,6 @@ $USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE &amp;&amp; ((isset($priviledg @@ -103,7 +108,6 @@ $USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE &amp;&amp; ((isset($priviledg
103 */ 108 */
104 109
105 // if (h($materiel->status) == 'ARCHIVED') echo '<i class="icon-inbox"></i> '; 110 // if (h($materiel->status) == 'ARCHIVED') echo '<i class="icon-inbox"></i> ';
106 -  
107 if ($IS_ARCHIVED) 111 if ($IS_ARCHIVED)
108 echo '<i class="icon-inbox"></i> '; 112 echo '<i class="icon-inbox"></i> ';
109 $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; 113 $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : '';
@@ -123,12 +127,29 @@ $panne = h($materiel-&gt;hors_service) ? &#39; (HORS SERVICE)&#39; : &#39;&#39;; @@ -123,12 +127,29 @@ $panne = h($materiel-&gt;hors_service) ? &#39; (HORS SERVICE)&#39; : &#39;&#39;;
123 127
124 <div id="materiel_images" style="text-align: center;"> 128 <div id="materiel_images" style="text-align: center;">
125 <?php 129 <?php
126 - if (isset($imgMateriel)) {  
127 - echo $this->Html->image('photos/' . $imgMateriel, [  
128 - 'alt' => 'Photo matériel',  
129 - 'style' => 'max-width: 300px; text-align: center;'  
130 - ]);  
131 - } 130 + //maintenant que les dénominations des fichiers dl on changé on a besoin des
  131 + //informations de la photo pour retrouver son nom et l'afficher, l'id ne suffit plus
  132 + //on parcourt donc les documents liés à ce matériel
  133 + foreach ($materiel->documents as $documents) :
  134 + //et si le document est la photo liée, on l'affiche, pour cela
  135 + if($documents->photo) {
  136 + //on récupère le doc
  137 + $photo = $documents;
  138 + //on reconstitue le nom a partir des paramètres (idmat_nom_id.extension)
  139 + $nomPhoto = $photo->materiel_id . "_" . $photo->nom . "_" . $photo->id . "." .$photo->type_doc;
  140 +
  141 + //Et si la photo n'est pas vide on l'affiche
  142 + if(!empty($photo)) {
  143 + echo $this->Html->image('photos/'.$nomPhoto, [
  144 + //si il y a une erreur sur le nom affiche le texte alternatif
  145 + 'alt' => 'Photo du matériel',
  146 + 'style' => 'max-width: 300px; text-align: center;'
  147 + ]);
  148 + }
  149 + }
  150 + endforeach ;
  151 +
  152 +
132 // Url transformed in QrCode 153 // Url transformed in QrCode
133 $this->request->session()->write("qrUrl", $this->request->env('SERVER_NAME') . $this->request->env('REQUEST_URI')); 154 $this->request->session()->write("qrUrl", $this->request->env('SERVER_NAME') . $this->request->env('REQUEST_URI'));
134 $this->requestAction('/QrCodes/creer/'); 155 $this->requestAction('/QrCodes/creer/');
@@ -151,8 +172,7 @@ $panne = h($materiel-&gt;hors_service) ? &#39; (HORS SERVICE)&#39; : &#39;&#39;; @@ -151,8 +172,7 @@ $panne = h($materiel-&gt;hors_service) ? &#39; (HORS SERVICE)&#39; : &#39;&#39;;
151 // CREATED or VALIDATED 172 // CREATED or VALIDATED
152 // if ( in_array($materiel->status, ['CREATED','VALIDATED']) ) { 173 // if ( in_array($materiel->status, ['CREATED','VALIDATED']) ) {
153 if ($IS_CREATED || $IS_VALIDATED) { 174 if ($IS_CREATED || $IS_VALIDATED) {
154 - if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP )  
155 - /* 175 + if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER)/*
156 //in_array($role, ['Administration','Administration Plus','Super Administrateur']) 176 //in_array($role, ['Administration','Administration Plus','Super Administrateur'])
157 || 177 ||
158 ( 178 (
@@ -229,7 +249,7 @@ $panne = h($materiel-&gt;hors_service) ? &#39; (HORS SERVICE)&#39; : &#39;&#39;; @@ -229,7 +249,7 @@ $panne = h($materiel-&gt;hors_service) ? &#39; (HORS SERVICE)&#39; : &#39;&#39;;
229 } 249 }
230 250
231 // BOUTON "Lier un Doc" 251 // BOUTON "Lier un Doc"
232 - if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP) { 252 + if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER) {
233 /* 253 /*
234 * if ( 254 * if (
235 * in_array($role, ['Administration','Administration Plus','Super Administrateur']) 255 * in_array($role, ['Administration','Administration Plus','Super Administrateur'])
@@ -517,8 +537,11 @@ else if (h($materiel-&gt;materiel_administratif) == 1) @@ -517,8 +537,11 @@ else if (h($materiel-&gt;materiel_administratif) == 1)
517 else if (h($materiel->materiel_technique) == 1) 537 else if (h($materiel->materiel_technique) == 1)
518 $type = 'Technique'; 538 $type = 'Technique';
519 539
520 -echo '<tr><td><strong>' . __('Description') . ' </strong></td><td>' . nl2br($materiel->description) . '</td></tr>'; 540 +//echo '<tr><td><strong>' . __('Description') . ' </strong></td><td>' . nl2br($materiel->description) . '</td></tr>';
521 // La variable-fonction $displayElement est définie dans le fichier src/Controller/AppController.php 541 // La variable-fonction $displayElement est définie dans le fichier src/Controller/AppController.php
  542 +//On va utiliser $displayElement pour l'affichage de tout les champs pour mettre une norme en place
  543 +$displayElement(__('Nom du materiel'),$materiel->designation);
  544 +$displayElement(__('Description'),$materiel->description);
522 $displayElement(__('Materiel inventorié'), $type); 545 $displayElement(__('Materiel inventorié'), $type);
523 $displayElement(__('Organisme'), $materiel->has('organisme') ? h($materiel->organisme->nom) : ''); 546 $displayElement(__('Organisme'), $materiel->has('organisme') ? h($materiel->organisme->nom) : '');
524 $displayElement(__('Domaine'), $materiel->has('sur_category') ? h($materiel->sur_category->nom) : ''); 547 $displayElement(__('Domaine'), $materiel->has('sur_category') ? h($materiel->sur_category->nom) : '');
@@ -618,15 +641,15 @@ if ($USER_IS_ADMIN_OR_MORE) { @@ -618,15 +641,15 @@ if ($USER_IS_ADMIN_OR_MORE) {
618 <th><?=__('N°')?></th> 641 <th><?=__('N°')?></th>
619 <th><?=__('Type d\'intervention')?></th> 642 <th><?=__('Type d\'intervention')?></th>
620 <th><?=__('Intitulé')?></th> 643 <th><?=__('Intitulé')?></th>
621 - <th><?=__('Etat metrologique')?></th>  
622 - <th><?=__('Date prochain contrôle')?></th> 644 + <th><?=__('Date debut / Frequence')?></th>
  645 + <th><?=__('Date fin / Repetition')?></th>
623 <th><?=__('Statut')?></th> 646 <th><?=__('Statut')?></th>
624 </tr> 647 </tr>
625 <?php foreach ($materiel->suivis as $suivis) :?> 648 <?php foreach ($materiel->suivis as $suivis) :?>
626 <tr> 649 <tr>
627 <td class="actions" style="padding: 6px 0; text-align: left;"> 650 <td class="actions" style="padding: 6px 0; text-align: left;">
628 <?php 651 <?php
629 - if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP) { 652 + if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER) {
630 /* 653 /*
631 * if ( 654 * if (
632 * in_array($role, ['Administration','Administration Plus','Super Administrateur']) 655 * in_array($role, ['Administration','Administration Plus','Super Administrateur'])
@@ -676,19 +699,18 @@ if ($USER_IS_ADMIN_OR_MORE) { @@ -676,19 +699,18 @@ if ($USER_IS_ADMIN_OR_MORE) {
676 <td><?=$this->Html->link('Suivi ' . $suivis->id, ['controller' => 'suivis','action' => 'view',$suivis->id])?></td> 699 <td><?=$this->Html->link('Suivi ' . $suivis->id, ['controller' => 'suivis','action' => 'view',$suivis->id])?></td>
677 <td><?=$typeSuivis->find()->where(['id =' => h($suivis->type_suivi_id)])->first()['nom'];?></td> 700 <td><?=$typeSuivis->find()->where(['id =' => h($suivis->type_suivi_id)])->first()['nom'];?></td>
678 <td><?=h($suivis->intitule)?></td> 701 <td><?=h($suivis->intitule)?></td>
679 - <td><?=h($suivis->conforme)?></td>  
680 -  
681 - <?php if ($dateProchainControleVerif($suivis->date_prochain_controle) < 0) : ?>  
682 - <td style="color: red"> <?=h($suivis->date_prochain_controle)?></td>  
683 - <?php elseif ($dateProchainControleVerif($suivis->date_prochain_controle) <= 15) : ?>  
684 - <td style="color: orange"><?=h($suivis->date_prochain_controle)?></td>  
685 - <?php else : ?>  
686 - <td style="color: green"><?=h($suivis->date_prochain_controle)?></td>  
687 - <?php endif ?>  
688 702
  703 + <?php if ($typeSuivis->find()->where(['id =' => h($suivis->type_suivi_id)])->first()['nom'] == "Panne" ) {?>
  704 + <td><?=h($suivis->date_controle)?></td>
  705 + <td><?=h($suivis->date_prochain_controle)?></td>
  706 + <?php } else { ?>
  707 + <td><?=h($suivis->frequence)?></td>
  708 + <td><?=h($suivis->type_frequence)?></td>
  709 + <?php } ?>
689 <td><?=h($suivis->statut)?></td> 710 <td><?=h($suivis->statut)?></td>
690 </tr> 711 </tr>
691 <?php endforeach;?> 712 <?php endforeach;?>
  713 +
692 </table> 714 </table>
693 <?php 715 <?php
694 } else { 716 } else {
@@ -733,7 +755,7 @@ foreach ($materiel-&gt;emprunts as $emprunt) : @@ -733,7 +755,7 @@ foreach ($materiel-&gt;emprunts as $emprunt) :
733 <tr> 755 <tr>
734 <td class="actions" style="padding: 6px 0; text-align: left;"> 756 <td class="actions" style="padding: 6px 0; text-align: left;">
735 <?php 757 <?php
736 - if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP) { 758 + if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER ) {
737 /* 759 /*
738 * if ( 760 * if (
739 * in_array($role, ['Administration','Administration Plus','Super Administrateur']) 761 * in_array($role, ['Administration','Administration Plus','Super Administrateur'])
@@ -827,19 +849,19 @@ foreach ($materiel-&gt;emprunts as $emprunt) : @@ -827,19 +849,19 @@ foreach ($materiel-&gt;emprunts as $emprunt) :
827 <td class="actions" style="padding: 6px 0; text-align: left;"> 849 <td class="actions" style="padding: 6px 0; text-align: left;">
828 <?php 850 <?php
829 if ($documents->photo) { 851 if ($documents->photo) {
830 - echo $this->Html->link(__('<i class="icon-download-alt"></i>'), '/webroot/img/photos/' . $documents->id . '.' . $documents->type_doc, [ 852 + echo $this->Html->link(__('<i class="icon-download-alt"></i>'), '/webroot/img/photos/' . $documents->materiel_id .'_' . $documents->nom.'_'. $documents->id . '.' . $documents->type_doc, [
831 'title' => 'Télécharger', 853 'title' => 'Télécharger',
832 'style' => 'margin:0', 854 'style' => 'margin:0',
833 'escape' => false 855 'escape' => false
834 ]); 856 ]);
835 } else { 857 } else {
836 - echo $this->Html->link(__('<i class="icon-download-alt"></i>'), '/webroot/files/' . $documents->id . '.' . $documents->type_doc, [ 858 + echo $this->Html->link(__('<i class="icon-download-alt"></i>'), '/webroot/files/' . $documents->materiel_id .'_' . $documents->nom.'_'. $documents->id . '.' . $documents->type_doc, [
837 'title' => 'Télécharger', 859 'title' => 'Télécharger',
838 'style' => 'margin:0', 860 'style' => 'margin:0',
839 'escape' => false 861 'escape' => false
840 ]); 862 ]);
841 } 863 }
842 - if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP) { 864 + if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER) {
843 /* 865 /*
844 * if ( 866 * if (
845 * in_array($role, ['Administration','Administration Plus','Super Administrateur']) 867 * in_array($role, ['Administration','Administration Plus','Super Administrateur'])
@@ -884,6 +906,16 @@ foreach ($materiel-&gt;emprunts as $emprunt) : @@ -884,6 +906,16 @@ foreach ($materiel-&gt;emprunts as $emprunt) :
884 'style' => 'margin:0', 906 'style' => 'margin:0',
885 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $documents->id) 907 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $documents->id)
886 ]); 908 ]);
  909 + //rajout d'un lien pour envoyer des mails avec les documents en pj
  910 + echo $this->Form->postLink(__('<i class="icon-envelope"></i>'), [
  911 + 'controller' => 'Documents',
  912 + 'action' => __('mailDevis' ,$documents->id),
  913 + $documents->id
  914 + ], [
  915 + 'escape' => false,
  916 + 'style' => 'margin:0',
  917 + 'confirm' => __(' Voulez vous envoyer le document par mail ? ')
  918 + ]);
887 } 919 }
888 ?> 920 ?>
889 </td> 921 </td>
src/Template/Pages/tools_menu_sm.ctp
@@ -14,19 +14,26 @@ echo $this-&gt;Html-&gt;link(&#39;Voir les liste des Catégories&#39;, [ @@ -14,19 +14,26 @@ echo $this-&gt;Html-&gt;link(&#39;Voir les liste des Catégories&#39;, [
14 ]); 14 ]);
15 echo '</td></tr>'; 15 echo '</td></tr>';
16 16
17 -echo '<tr><td>';  
18 -echo $this->Html->link('Liste des sites', [  
19 - 'controller' => 'sites',  
20 - 'sort' => 'nom'  
21 -]);  
22 -echo '</td></tr>'; 17 +//On restreint l'affichage sur les champs qu'un utilisateur n'a besoin de modifier
  18 +if (! $USER_IS_UTILISATEUR) {
  19 +
  20 + echo '<tr><td>';
  21 + echo $this->Html->link('Liste des sites', [
  22 + 'controller' => 'sites',
  23 + 'sort' => 'nom'
  24 + ]);
  25 + echo '</td></tr>';
  26 +
  27 + echo '<tr><td>';
  28 + echo $this->Html->link('Liste des organismes', [
  29 + 'controller' => 'organismes',
  30 + 'sort' => 'nom'
  31 + ]);
  32 + echo '</td></tr>';
  33 +}
  34 +
  35 +
23 36
24 -echo '<tr><td>';  
25 -echo $this->Html->link('Liste des organismes', [  
26 - 'controller' => 'organismes',  
27 - 'sort' => 'nom'  
28 -]);  
29 -echo '</td></tr>';  
30 37
31 echo '<tr><td>'; 38 echo '<tr><td>';
32 echo $this->Html->link('Liste des types de suivis', [ 39 echo $this->Html->link('Liste des types de suivis', [
@@ -35,31 +42,37 @@ echo $this-&gt;Html-&gt;link(&#39;Liste des types de suivis&#39;, [ @@ -35,31 +42,37 @@ echo $this-&gt;Html-&gt;link(&#39;Liste des types de suivis&#39;, [
35 ]); 42 ]);
36 echo '</td></tr>'; 43 echo '</td></tr>';
37 44
38 -$names = explode(" ", $configuration->nom_groupe_thematique);  
39 -if (isset($names[1])) {  
40 - $nom = $names[0] . 's ' . $names[1] . 's';  
41 -} else {  
42 - $nom = $names[0] . 's';  
43 -}  
44 -echo '<tr><td>';  
45 -echo $this->Html->link('Liste des ' . $nom, [  
46 - 'controller' => 'groupes_thematiques',  
47 - 'sort' => 'nom'  
48 -]);  
49 -echo '</td></tr>';  
50 45
51 -$names = explode(" ", $configuration->nom_groupe_metier);  
52 -if (isset($names[1])) {  
53 - $nom = $names[0] . 's ' . $names[1] . 's';  
54 -} else {  
55 - $nom = $names[0] . 's'; 46 +if (! $USER_IS_UTILISATEUR) {
  47 +
  48 +
  49 + $names = explode(" ", $configuration->nom_groupe_thematique);
  50 + if (isset($names[1])) {
  51 + $nom = $names[0] . 's ' . $names[1] . 's';
  52 + } else {
  53 + $nom = $names[0] . 's';
  54 + }
  55 + echo '<tr><td>';
  56 + echo $this->Html->link('Liste des ' . $nom, [
  57 + 'controller' => 'groupes_thematiques',
  58 + 'sort' => 'nom'
  59 + ]);
  60 + echo '</td></tr>';
  61 +
  62 + $names = explode(" ", $configuration->nom_groupe_metier);
  63 + if (isset($names[1])) {
  64 + $nom = $names[0] . 's ' . $names[1] . 's';
  65 + } else {
  66 + $nom = $names[0] . 's';
  67 + }
  68 + echo '<tr><td>';
  69 + echo $this->Html->link('Liste des ' . $nom, [
  70 + 'controller' => 'groupes_metiers',
  71 + 'sort' => 'nom'
  72 + ]);
  73 + echo '</td></tr>';
  74 +
56 } 75 }
57 -echo '<tr><td>';  
58 -echo $this->Html->link('Liste des ' . $nom, [  
59 - 'controller' => 'groupes_metiers',  
60 - 'sort' => 'nom'  
61 -]);  
62 -echo '</td></tr>';  
63 76
64 echo '<tr><td>'; 77 echo '<tr><td>';
65 echo $this->Html->link('Liste des types de documents', [ 78 echo $this->Html->link('Liste des types de documents', [
@@ -68,12 +81,23 @@ echo $this-&gt;Html-&gt;link(&#39;Liste des types de documents&#39;, [ @@ -68,12 +81,23 @@ echo $this-&gt;Html-&gt;link(&#39;Liste des types de documents&#39;, [
68 ]); 81 ]);
69 echo '</td></tr>'; 82 echo '</td></tr>';
70 83
71 -echo '<tr><td>';  
72 -echo $this->Html->link('Liste des unités', [  
73 - 'controller' => 'unites',  
74 - 'sort' => 'nom'  
75 -]);  
76 -echo '</td></tr>'; 84 +if (! $USER_IS_UTILISATEUR) {
  85 + echo '<tr><td>';
  86 + echo $this->Html->link('Liste des unités', [
  87 + 'controller' => 'unites',
  88 + 'sort' => 'nom'
  89 + ]);
  90 + echo '</td></tr>';
  91 +
  92 + echo '<tr><td>';
  93 + echo $this->Html->link('Liste des formules', [
  94 + 'controller' => 'formules',
  95 + 'sort' => 'nom'
  96 + ]);
  97 + echo '</td></tr>';
  98 +
  99 +}
  100 +
77 101
78 echo '<tr><td>'; 102 echo '<tr><td>';
79 echo $this->Html->link('Liste des fournisseurs', [ 103 echo $this->Html->link('Liste des fournisseurs', [
@@ -82,12 +106,7 @@ echo $this-&gt;Html-&gt;link(&#39;Liste des fournisseurs&#39;, [ @@ -82,12 +106,7 @@ echo $this-&gt;Html-&gt;link(&#39;Liste des fournisseurs&#39;, [
82 ]); 106 ]);
83 echo '</td></tr>'; 107 echo '</td></tr>';
84 108
85 -echo '<tr><td>';  
86 -echo $this->Html->link('Liste des formules', [  
87 - 'controller' => 'formules',  
88 - 'sort' => 'nom'  
89 -]);  
90 -echo '</td></tr>'; 109 +
91 110
92 ?> 111 ?>
93 </table> 112 </table>
src/Template/Suivis/add.ctp
@@ -28,12 +28,32 @@ @@ -28,12 +28,32 @@
28 echo $this->Form->input('type_suivi_id', [ 28 echo $this->Form->input('type_suivi_id', [
29 'label' => 'Type d\'intervention', 29 'label' => 'Type d\'intervention',
30 'options' => $typeSuivis, 30 'options' => $typeSuivis,
31 - 'default' => 3 31 + 'default' => 3,
  32 + 'empty' => "Choisir le type de suivi"
32 ]); 33 ]);
33 34
34 echo '<div id="frequence" style="display:none">'; 35 echo '<div id="frequence" style="display:none">';
35 echo '</div>'; 36 echo '</div>';
36 37
  38 + echo '<div id="dates" style="display:none">';
  39 + echo $this->Form->input('date_controle', [
  40 + 'type' => 'text',
  41 + 'id' => 'date_deb',
  42 + 'label' => 'Date de la prise en charge',
  43 + 'class' => 'datepicker',
  44 + 'placeholder' => 'Cliquez pour sélectionner une date'
  45 + ]);
  46 + echo $this->Form->input('date_prochain_controle', [
  47 + 'type' => 'text',
  48 + 'id' => 'date_fin',
  49 + 'label' => 'Date estimee de fin',
  50 + 'class' => 'datepicker',
  51 + 'placeholder' => 'Cliquez pour sélectionner une date'
  52 + ]);
  53 +
  54 +
  55 + echo '</div>';
  56 +
37 echo $this->Form->input('organisme', [ 57 echo $this->Form->input('organisme', [
38 'label' => 'Prestataire' 58 'label' => 'Prestataire'
39 ]); 59 ]);
@@ -111,15 +131,22 @@ echo $this-&gt;element(&#39;menu_form&#39;, [ @@ -111,15 +131,22 @@ echo $this-&gt;element(&#39;menu_form&#39;, [
111 document.getElementById('typedemesure').innerHTML = ""; 131 document.getElementById('typedemesure').innerHTML = "";
112 $('#listes').hide(); 132 $('#listes').hide();
113 } 133 }
114 - if( domaineId == "Réparation"){ 134 + //gère l'affichage dynamique après choix du type de suivi
  135 + if( domaineId == "Panne"){
115 document.getElementById('frequence').innerHTML = ""; 136 document.getElementById('frequence').innerHTML = "";
116 $("#frequence").hide(); 137 $("#frequence").hide();
  138 + $("#dates").show();
  139 +
117 } else { 140 } else {
  141 + $("#dates").hide();
118 $("#frequence").show(); 142 $("#frequence").show();
119 document.getElementById('frequence').innerHTML = "<div class=\"input text required\" ><table id=\"tableAlignementFrequence\" ><tbody><tr><td><div class=\"A\"><label for=\"SuiviFrequence\">Fréquence</label><input type=\"text\" name=\"frequence\" id=\"SuiviFrequence\" placeholder=\"\" required=\"required\" maxlength=\"11\"></div></td><td><div class=\"typeFrequence\" ><select name=\"type_frequence\" id=\"type-frequence\"><option value=\"/ Jours\">/ Jours</option><option value=\"/ Semaines\">/ Semaines</option><option value=\"/ Mois\" selected=\"selected\">/ Mois</option><option value=\"/ Ans\">/ Ans</option></select></div></td></tr></tbody></table></div>"; 143 document.getElementById('frequence').innerHTML = "<div class=\"input text required\" ><table id=\"tableAlignementFrequence\" ><tbody><tr><td><div class=\"A\"><label for=\"SuiviFrequence\">Fréquence</label><input type=\"text\" name=\"frequence\" id=\"SuiviFrequence\" placeholder=\"\" required=\"required\" maxlength=\"11\"></div></td><td><div class=\"typeFrequence\" ><select name=\"type_frequence\" id=\"type-frequence\"><option value=\"/ Jours\">/ Jours</option><option value=\"/ Semaines\">/ Semaines</option><option value=\"/ Mois\" selected=\"selected\">/ Mois</option><option value=\"/ Ans\">/ Ans</option></select></div></td></tr></tbody></table></div>";
120 } 144 }
121 }); 145 });
122 146
  147 +
  148 +
  149 +
123 /** 150 /**
124 * Event calcul date prochain controle 151 * Event calcul date prochain controle
125 */ 152 */
src/Template/Suivis/edit.ctp
@@ -22,33 +22,58 @@ @@ -22,33 +22,58 @@
22 'options' => $typeSuivis, 22 'options' => $typeSuivis,
23 'disabled' => TRUE 23 'disabled' => TRUE
24 ]); 24 ]);
25 - echo '<div id="frequence" style="display:none">';  
26 - echo '<table id="tableAlignementFrequence"><tr><td>';  
27 - echo $this->Form->input('frequence', [  
28 - 'type' => 'text',  
29 - 'id' => 'SuiviFrequence',  
30 - 'label' => 'Fréquence',  
31 - 'templates' => [  
32 - 'inputContainer' => '<div class="A">{{content}}</div>'  
33 - ],  
34 - 'placeholder' => ''  
35 - ]);  
36 - echo '</td><td>';  
37 - echo $this->Form->input('type_frequence', [  
38 - 'label' => false,  
39 - 'templates' => [  
40 - 'inputContainer' => '<div class="typeFrequence">{{content}}</div>'  
41 - ],  
42 - 'options' => [  
43 - '/ Jours' => '/ Jours',  
44 - '/ Semaines' => '/ Semaines',  
45 - '/ Mois' => '/ Mois',  
46 - '/ Ans' => '/ Ans'  
47 - ],  
48 - 'default' => '/ Mois'  
49 - ]);  
50 - echo '</td></tr></table>';  
51 - echo '</div>'; 25 +
  26 + //Affiche les bonnes informations en fonction du type de suivi
  27 + //Améliorable avec une requete pour fonctionner avec el nom de suivi et pas l'id
  28 + //Améliorable avec un switch
  29 +
  30 + if ($suivi->type_suivi_id == 2 ) {
  31 + echo $this->Form->input('date_controle', [
  32 + 'type' => 'text',
  33 + 'id' => 'date_deb',
  34 + 'label' => 'Date de la prise en charge',
  35 + 'class' => 'datepicker',
  36 + 'placeholder' => 'Cliquez pour sélectionner une date',
  37 + 'disabled' => true
  38 + ]);
  39 + echo $this->Form->input('date_prochain_controle', [
  40 + 'type' => 'text',
  41 + 'id' => 'date_fin',
  42 + 'label' => 'Date estimee de fin',
  43 + 'class' => 'datepicker',
  44 + 'placeholder' => 'Cliquez pour sélectionner une date'
  45 + ]);
  46 +
  47 + }else{
  48 + echo '<table id="tableAlignementFrequence"><tr><td>';
  49 + echo $this->Form->input('frequence', [
  50 + 'type' => 'text',
  51 + 'id' => 'SuiviFrequence',
  52 + 'label' => 'Fréquence',
  53 + 'disabled' => true,
  54 + 'templates' => [
  55 + 'inputContainer' => '<div class="A">{{content}}</div>'
  56 + ],
  57 + 'placeholder' => ''
  58 + ]);
  59 + echo '</td><td>';
  60 + echo $this->Form->input('type_frequence', [
  61 + 'label' => false,
  62 + 'disabled' => true,
  63 + 'templates' => [
  64 + 'inputContainer' => '<div class="typeFrequence">{{content}}</div>'
  65 + ],
  66 + 'options' => [
  67 + '/ Jours' => '/ Jours',
  68 + '/ Semaines' => '/ Semaines',
  69 + '/ Mois' => '/ Mois',
  70 + '/ Ans' => '/ Ans'
  71 + ],
  72 + 'default' => '/ Mois'
  73 + ]);
  74 + echo '</td></tr></table>';
  75 + }
  76 +
52 echo $this->Form->input('statut', [ 77 echo $this->Form->input('statut', [
53 'options' => [ 78 'options' => [
54 'En cours' => 'En cours', 79 'En cours' => 'En cours',
@@ -187,6 +212,25 @@ $(document).ready(function () { @@ -187,6 +212,25 @@ $(document).ready(function () {
187 }); 212 });
188 213
189 214
  215 +/*
  216 + * Vérification date début > date fin dans le cas d'une panne
  217 + */
  218 +
  219 +
  220 + $(document).ready(function () {
  221 +d1 = toDate($("#date_deb")[0].value); /* Date de la prise en charge de la panne */
  222 +d2 = toDate($("#date_fin")[0].value); /* Date estimee de fin de la panne */
  223 +
  224 +if($("#date_fin")[0].value != undefined){
  225 + if(d1 > d2) {
  226 + alert("Les dates ne correspondent pas, la date de début de prise en charge doit être antérieure à la date de fin.");
  227 + event.preventDefault();
  228 + }
  229 +}
  230 +
  231 + });
  232 +
  233 +
190 /** 234 /**
191 * Event calcul date prochain controle 235 * Event calcul date prochain controle
192 */ 236 */
src/Template/Suivis/index.ctp
@@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
9 <th><?= $this->Paginator->sort('materiel_id', 'Matériel') ?></th> 9 <th><?= $this->Paginator->sort('materiel_id', 'Matériel') ?></th>
10 <th><?= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th> 10 <th><?= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th>
11 <th><?= $this->Paginator->sort('intitule', "Intitulé") ?></th> 11 <th><?= $this->Paginator->sort('intitule', "Intitulé") ?></th>
12 - <th><?= $this->Paginator->sort('date_controle', 'Date intervention') ?></th>  
13 - <th><?= $this->Paginator->sort('date_prochain_controle', 'Date prochaine intervention') ?></th> 12 + <th><?= $this->Paginator->sort('date_controle', 'Date debut / Frequence') ?></th>
  13 + <th><?= $this->Paginator->sort('date_prochain_controle', 'Date fin / Repetition') ?></th>
14 <th><?= $this->Paginator->sort('type_suivi_id', "Type d'intervention") ?></th> 14 <th><?= $this->Paginator->sort('type_suivi_id', "Type d'intervention") ?></th>
15 <th><?= $this->Paginator->sort('statut', "Statut") ?></th> 15 <th><?= $this->Paginator->sort('statut', "Statut") ?></th>
16 16
@@ -24,29 +24,32 @@ @@ -24,29 +24,32 @@
24 24
25 if (($role == 'Utilisateur' && in_array($username, [ 25 if (($role == 'Utilisateur' && in_array($username, [
26 $suivi->nom_createur 26 $suivi->nom_createur
27 - ])) || (in_array($role, [  
28 - 'Administration',  
29 - 'Administration Plus',  
30 - 'Super Administrateur' 27 + ])) || ($role == 'Responsable' && in_array($username, [
  28 + $suivi->nom_createur
  29 + ]))
  30 + || (in_array($role, [
  31 + 'Administration',
  32 + 'Administration Plus',
  33 + 'Super Administrateur'
31 ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)))) { 34 ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)))) {
32 ?> 35 ?>
33 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $suivi->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> 36 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $suivi->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?>
34 - <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $suivi->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $suivi->id)]) ?> 37 + <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $suivi->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer ce suivi ?')]) ?>
35 <?php } ?> 38 <?php } ?>
36 </td> 39 </td>
37 <td class="smallText"><?php echo $this->Html->link('Suivi '.$this->Number->format($suivi->id), ['action' => 'view', $suivi->id])?></td> 40 <td class="smallText"><?php echo $this->Html->link('Suivi '.$this->Number->format($suivi->id), ['action' => 'view', $suivi->id])?></td>
38 <td class="smallText"><?= $suivi->has('materiel') ? $this->Html->link($suivi->materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $suivi->materiel->id]) : '' ?></td> 41 <td class="smallText"><?= $suivi->has('materiel') ? $this->Html->link($suivi->materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $suivi->materiel->id]) : '' ?></td>
39 <td class="smallText"><?= $suivi->has('materiel') ? h($suivi->materiel->numero_laboratoire) : '' ?></td> 42 <td class="smallText"><?= $suivi->has('materiel') ? h($suivi->materiel->numero_laboratoire) : '' ?></td>
40 <td class="smallText"><?= h($suivi->intitule) ?></td> 43 <td class="smallText"><?= h($suivi->intitule) ?></td>
41 - <td class="smallText"><?= h($suivi->date_controle) ?></td>  
42 -  
43 - <?php if ($dateProchainControleVerif($suivi->date_prochain_controle) < 0) : ?>  
44 - <td class="smallText" style="color: red"> <?=h($suivi->date_prochain_controle)?></td>  
45 - <?php elseif ($dateProchainControleVerif($suivi->date_prochain_controle) <= 15) : ?>  
46 - <td class="smallText" style="color: orange"><?=h($suivi->date_prochain_controle)?></td>  
47 - <?php else : ?>  
48 - <td class="smallText" style="color: green"><?=h($suivi->date_prochain_controle)?></td>  
49 - <?php endif ?> 44 +
  45 +
  46 + <?php if ($suivi->type_suivi_id == 2 ) {?>
  47 + <td><?=h($suivi->date_controle)?></td>
  48 + <td><?=h($suivi->date_prochain_controle)?></td>
  49 + <?php } else { ?>
  50 + <td><?=h($suivi->frequence)?></td>
  51 + <td><?=h($suivi->type_frequence)?></td>
  52 + <?php } ?>
50 53
51 <td class="smallText"><?= $suivi->has('type_suivi') ? h($suivi->type_suivi->nom) : '' ?></td> 54 <td class="smallText"><?= $suivi->has('type_suivi') ? h($suivi->type_suivi->nom) : '' ?></td>
52 <td class="smallText"><?= h($suivi->statut) ?></td> 55 <td class="smallText"><?= h($suivi->statut) ?></td>
src/Template/Suivis/view.ctp
@@ -10,7 +10,9 @@ @@ -10,7 +10,9 @@
10 <?php 10 <?php
11 if (($role == 'Utilisateur' && in_array($username, [ 11 if (($role == 'Utilisateur' && in_array($username, [
12 $suivi->nom_createur 12 $suivi->nom_createur
13 - ])) || (in_array($role, [ 13 + ])) || ($role == 'Responsable' && in_array($username, [
  14 + $suivi->nom_createur]))
  15 + || (in_array($role, [
14 'Administration', 16 'Administration',
15 'Administration Plus', 17 'Administration Plus',
16 'Super Administrateur' 18 'Super Administrateur'
@@ -64,12 +66,19 @@ @@ -64,12 +66,19 @@
64 ]) : ''); 66 ]) : '');
65 $displayElement(__('Numéro interne (labo)'), $suivi->has('materiel') ? h($suivi->materiel->numero_laboratoire) : ''); 67 $displayElement(__('Numéro interne (labo)'), $suivi->has('materiel') ? h($suivi->materiel->numero_laboratoire) : '');
66 $displayElement(__('Statut'), h($suivi->statut)); 68 $displayElement(__('Statut'), h($suivi->statut));
67 - $displayElement(__('Date Derniere Intervention'), h($suivi->date_controle));  
68 - $displayElement(__('Date Prochaine Intervention'), h($suivi->date_prochain_controle), $style); 69 + $displayElement(__('Prestataire'), h($suivi->organisme));
69 $displayElement(__('Type d\'intervention'), $suivi->has('type_suivi') ? h($suivi->type_suivi->nom) : ''); 70 $displayElement(__('Type d\'intervention'), $suivi->has('type_suivi') ? h($suivi->type_suivi->nom) : '');
70 71
71 - $displayElement(__('Prestataire'), h($suivi->organisme));  
72 - $displayElement(__('Fréquence'), h($suivi->frequence) . ' ' . h($suivi->type_frequence)); 72 + if ($suivi->type_suivi_id == "1") {
  73 + $displayElement(__('Date Derniere Intervention'), h($suivi->date_controle));
  74 + $displayElement(__('Date Prochaine Intervention'), h($suivi->date_prochain_controle), $style);
  75 + $displayElement(__('Fréquence'), h($suivi->frequence) . ' ' . h($suivi->type_frequence));
  76 +
  77 + }else {
  78 + $displayElement(__('Date Debut Prise en Charge'), h($suivi->date_controle));
  79 + $displayElement(__('Date Estimee de Fin de Panne'), h($suivi->date_prochain_controle), $style);
  80 + }
  81 +
73 82
74 $displayElement(__($configuration->nom_groupe_thematique), $suivi->has('groupes_thematique') ? $this->Html->link($suivi->groupes_thematique->nom, [ 83 $displayElement(__($configuration->nom_groupe_thematique), $suivi->has('groupes_thematique') ? $this->Html->link($suivi->groupes_thematique->nom, [
75 'controller' => 'GroupesThematiques', 84 'controller' => 'GroupesThematiques',
@@ -151,18 +160,21 @@ if ($suivi-&gt;type_suivi-&gt;nom == &quot;Vérification métrologique&quot;) { @@ -151,18 +160,21 @@ if ($suivi-&gt;type_suivi-&gt;nom == &quot;Vérification métrologique&quot;) {
151 <?php foreach ($suivi->documents as $documents): ?> 160 <?php foreach ($suivi->documents as $documents): ?>
152 <tr> 161 <tr>
153 <td class="actions" style="padding: 6px 0; text-align: left;"> 162 <td class="actions" style="padding: 6px 0; text-align: left;">
154 - <?= $this->Html->link(__('<i class="icon-download-alt"></i>'), '/webroot/files/'.$documents->id.'.'.$documents->type_doc, ['title' => 'Télécharger', 'style' => 'margin:0', 'escape' => false ]) ?> 163 + <?= $this->Html->link(__('<i class="icon-download-alt"></i>'),'/webroot/files/'.$documents->suivi_id.'_'.$documents->nom.'_'.$documents->id.'.'.$documents->type_doc, ['title' => 'Télécharger', 'style' => 'margin:0', 'escape' => false ]) ?>
155 <?php 164 <?php
156 if (($role == 'Utilisateur' && in_array($username, [ 165 if (($role == 'Utilisateur' && in_array($username, [
157 $suivi->nom_createur 166 $suivi->nom_createur
158 - ])) || (in_array($role, [ 167 + ])) || ($role == 'Responsable' && in_array($username, [
  168 + $suivi->nom_createur]))
  169 + || (in_array($role, [
159 'Administration', 170 'Administration',
160 'Administration Plus', 171 'Administration Plus',
161 'Super Administrateur' 172 'Super Administrateur'
162 ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)))) { 173 ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)))) {
163 ?> 174 ?>
164 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['controller' => 'Documents', 'action' => 'edit', $documents->id], ['escape' => false, 'style' => 'margin:0'])?> 175 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['controller' => 'Documents', 'action' => 'edit', $documents->id], ['escape' => false, 'style' => 'margin:0'])?>
165 - <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0', 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $documents->id)]) ?> 176 + <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['controller' => 'Documents', 'action' => 'delete', $documents->id], ['escape' => false, 'style' => 'margin:0', 'confirm' => __('Êtes-vous sur de vouloir supprimer le document nommé {0}?', $documents->nom)]) ?>
  177 + <?= $this->Form->postLink(__('<i class="icon-envelope"></i>'), ['controller' => 'Documents','action' => __('mailDevis' ,$documents->id),$documents->id], ['escape' => false,'style' => 'margin:0','confirm' => __(' Voulez vous envoyer le document par mail ? ')])?>
166 </td> 178 </td>
167 <?php } ?> 179 <?php } ?>
168 <td><?= $i ?></td> 180 <td><?= $i ?></td>
src/Template/Users/add.ctp
@@ -48,6 +48,7 @@ @@ -48,6 +48,7 @@
48 48
49 echo $this->Form->input('role', [ 49 echo $this->Form->input('role', [
50 'label' => 'Rôle', 50 'label' => 'Rôle',
  51 + 'empty' => 'N/A',
51 'options' => [ 52 'options' => [
52 'Super Administrateur' => 'Super Administrateur', 53 'Super Administrateur' => 'Super Administrateur',
53 'Administration Plus' => 'Administration Plus', 54 'Administration Plus' => 'Administration Plus',
src/Template/Users/index.ctp
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 <td class="actions" style="padding: 6px 0; text-align: left;"> 19 <td class="actions" style="padding: 6px 0; text-align: left;">
20 <?php if($role == 'Super Administrateur') { ?> 20 <?php if($role == 'Super Administrateur') { ?>
21 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $user->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> 21 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $user->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?>
22 - <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $user->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $user->id)]) ?> 22 + <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $user->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer l\'utilisateur {0} ?', $user->nom)]) ?>
23 <?php } ?> 23 <?php } ?>
24 </td> 24 </td>
25 <td class="smallText"><?= $this->Html->link($user->nom, ['action' => 'view', $user->id]) ?></td> 25 <td class="smallText"><?= $this->Html->link($user->nom, ['action' => 'view', $user->id]) ?></td>
src/Template/Users/index_recap.ctp
@@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
17 <td class="actions" style="padding: 6px 0; text-align: left;"> 17 <td class="actions" style="padding: 6px 0; text-align: left;">
18 <?php if($role == 'Super Administrateur') { ?> 18 <?php if($role == 'Super Administrateur') { ?>
19 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $user->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> 19 <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $user->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?>
20 - <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $user->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $user->id)]) ?> 20 + <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $user->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer l\'utilisateur {0} ?', $user->nom)]) ?>
21 <?php } ?> 21 <?php } ?>
22 </td> 22 </td>
23 <td class="smallText"><?= $user->has('sur_categorie_id') ? h($user->sur_category->nom) : '' ?></td> 23 <td class="smallText"><?= $user->has('sur_categorie_id') ? h($user->sur_category->nom) : '' ?></td>