Commit 5b54a286a622d8eb0048b1db2ccc949ea2b73efb
1 parent
bde633ca
Exists in
master
and in
3 other branches
Version master petites modifs directes
(corrections pb malik avec Etienne)
Showing
31 changed files
with
1343 additions
and
332 deletions
Show diff stats
src/Controller/AppController.php
... | ... | @@ -814,10 +814,10 @@ class AppController extends Controller |
814 | 814 | $subject = "Ajout d'un matériel"; |
815 | 815 | $msg = "$acteur a ajouté le matériel \"$nom_materiel\""; |
816 | 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 | 821 | case 'delete': |
822 | 822 | $subject = "Suppression d'un matériel"; |
823 | 823 | $msg = "$acteur a supprimé le matériel \"$nom_materiel\""; |
... | ... | @@ -831,14 +831,14 @@ class AppController extends Controller |
831 | 831 | if ($materiel->description != "") |
832 | 832 | $msgMore .= "\n\nDescription :\n" . $materiel->description; |
833 | 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 | 842 | case 'statusToBeArchived': |
843 | 843 | $subject = "Demande d'archivage d'un matériel"; |
844 | 844 | $msg = "$acteur a demandé l'archivage du matériel \"$nom_materiel\""; |
... | ... | @@ -1006,4 +1006,359 @@ class AppController extends Controller |
1006 | 1006 | } |
1007 | 1007 | } |
1008 | 1008 | } |
1009 | -} | |
1010 | 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 | 1366 | \ No newline at end of file | ... | ... |
src/Controller/DocumentsController.php
... | ... | @@ -36,7 +36,8 @@ class DocumentsController extends AppController |
36 | 36 | if (in_array($action, [ |
37 | 37 | // 'view', |
38 | 38 | // 'add', |
39 | - 'ficheMateriel' | |
39 | + 'ficheMateriel', | |
40 | + 'mailDevis' | |
40 | 41 | ])) |
41 | 42 | return true; |
42 | 43 | |
... | ... | @@ -634,4 +635,53 @@ class DocumentsController extends AppController |
634 | 635 | $this->set(compact('suivi', 'unite', 'fiche', 'symbole', 'mesures')); |
635 | 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 | 39 | |
40 | 40 | /* |
41 | 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 | 52 | // Administration peut ajouter, supprimer ou modifier un fournisseur |
49 | 53 | // if($role == 'Administration' && in_array($action,['add','delete','edit'])) return true; |
50 | 54 | |
... | ... | @@ -105,8 +109,7 @@ class FournisseursController extends AppController |
105 | 109 | if ($this->Fournisseurs->save($fournisseur)) { |
106 | 110 | $this->Flash->success(__('Le fournisseur a bien été ajouté.')); |
107 | 111 | return $this->redirect([ |
108 | - 'action' => 'view', | |
109 | - $fournisseur->id | |
112 | + 'action' => 'index' | |
110 | 113 | ]); |
111 | 114 | } else { |
112 | 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 | 271 | break; |
272 | 272 | case 'Responsable': |
273 | 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 | 276 | // All other roles : Admin and more |
277 | 277 | default: |
278 | 278 | return true; |
... | ... | @@ -286,7 +286,6 @@ class MaterielsController extends AppController |
286 | 286 | |
287 | 287 | // DELETE |
288 | 288 | case 'delete': |
289 | - // /$id = (int) $this->request->getAttribute('params')['pass'][0]; | |
290 | 289 | |
291 | 290 | /* |
292 | 291 | * (EP) ACL: |
... | ... | @@ -866,7 +865,9 @@ class MaterielsController extends AppController |
866 | 865 | } |
867 | 866 | if ($this->Materiels->save($materiel)) { |
868 | 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 | 871 | return $this->redirect([ |
871 | 872 | 'action' => 'view', |
872 | 873 | $id |
... | ... | @@ -1232,8 +1233,13 @@ class MaterielsController extends AppController |
1232 | 1233 | $materiel->gestionnaire_id = $gestionnaireID; |
1233 | 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 | 1244 | if (! $onlyOneMateriel) |
1239 | 1245 | return $success; |
... | ... | @@ -1630,29 +1636,108 @@ class MaterielsController extends AppController |
1630 | 1636 | if ($this->request->getData('s_fournisseur_id') !== null && $this->request->getData('s_fournisseur_id') != '') |
1631 | 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 | 1742 | if ($this->request->getData('s_status') != '') |
1658 | 1743 | array_push($specificFieldsConditions, [ |
... | ... | @@ -1684,6 +1769,7 @@ class MaterielsController extends AppController |
1684 | 1769 | ])->limit(1000); |
1685 | 1770 | |
1686 | 1771 | $this->paginate = [ |
1772 | + 'maxLimit' => 1000, | |
1687 | 1773 | 'limit' => 1000 |
1688 | 1774 | ]; |
1689 | 1775 | $_results = $this->paginate($lastResults); |
... | ... | @@ -1693,17 +1779,17 @@ class MaterielsController extends AppController |
1693 | 1779 | $this->request->session()->write("result", $lastResults->toArray()); |
1694 | 1780 | } // end if() |
1695 | 1781 | else if ($resultTri !== null && strstr($this->request->here(), 'sort') != false && strstr($this->request->here(), 'direction') != false) { |
1696 | - $foundMateriel = []; | |
1782 | + $findedMateriel = []; | |
1697 | 1783 | |
1698 | 1784 | foreach ($resultTri as $r) { |
1699 | - array_push($foundMateriel, $r->id); | |
1785 | + array_push($findedMateriel, $r->id); | |
1700 | 1786 | } |
1701 | 1787 | $res = $this->Materiels->find('all', [ |
1702 | 1788 | 'limit' => 1000 |
1703 | 1789 | ]); |
1704 | - for ($i = 0; $i < sizeof($foundMateriel); $i ++) { | |
1790 | + for ($i = 0; $i < sizeof($findedMateriel); $i ++) { | |
1705 | 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 | 2250 | $organisme = $materiel->organisme ? $materiel->organisme->nom : ''; |
2165 | 2251 | |
2166 | 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 | 2255 | $filename = 'inventirap_label.label'; |
2174 | 2256 | $file = fopen('php://output', 'w'); |
... | ... | @@ -2269,22 +2351,15 @@ class MaterielsController extends AppController |
2269 | 2351 | <UseFullFontHeight>True</UseFullFontHeight> |
2270 | 2352 | <Verticalized>False</Verticalized> |
2271 | 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 | 2363 | </StyledText> |
2289 | 2364 | </TextObject> |
2290 | 2365 | <ObjectMargin Left="200" Right="200" Top="0" Bottom="0"/> | ... | ... |
src/Controller/SuivisController.php
... | ... | @@ -410,13 +410,16 @@ class SuivisController extends AppController |
410 | 410 | 'delete' |
411 | 411 | ]); |
412 | 412 | $suivi = $this->Suivis->get($id); |
413 | + $id=$suivi->materiel_id; | |
413 | 414 | if ($this->Suivis->delete($suivi)) { |
414 | 415 | $this->Flash->success(__('Le suivi a bien été supprimé.')); |
415 | 416 | } else { |
416 | 417 | $this->Flash->error(__('Le suivi n\'a pas pu être supprimé.')); |
417 | 418 | } |
418 | 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 | 71 | |
72 | 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 | 79 | return $validator; |
75 | 80 | } |
76 | 81 | |
... | ... | @@ -189,10 +194,18 @@ class DocumentsTable extends AppTable |
189 | 194 | $file = $entity->get('chemin_file'); |
190 | 195 | if (! empty($file['tmp_name'])) { |
191 | 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 | 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 | 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 | 215 | */ |
203 | 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 | 227 | unlink('img' . DS . 'photos' . DS . $nomFichier); |
208 | 228 | } else { |
209 | 229 | unlink('files' . DS . $nomFichier); | ... | ... |
src/Model/Table/MaterielsTable.php
... | ... | @@ -88,9 +88,7 @@ class MaterielsTable extends AppTable |
88 | 88 | 'foreignKey' => 'gestionnaire_id' |
89 | 89 | ]); |
90 | 90 | } |
91 | - | |
92 | - | |
93 | - | |
91 | + | |
94 | 92 | /** |
95 | 93 | * Default validation rules. |
96 | 94 | * |
... | ... | @@ -101,53 +99,13 @@ class MaterielsTable extends AppTable |
101 | 99 | public function validationDefault(Validator $validator) |
102 | 100 | { |
103 | 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 | 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 | 109 | $validator->integer('id')->allowEmpty('id', 'create'); |
152 | 110 | $validator->notEmpty('designation', 'Ce champ doit être rempli')->add('designation', 'valid', [ |
153 | 111 | 'rule' => 'check_string', |
... | ... | @@ -178,37 +136,17 @@ class MaterielsTable extends AppTable |
178 | 136 | ]) |
179 | 137 | ->first(); |
180 | 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 | 140 | 'rule' => $dateValide, |
201 | 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 | 145 | 'rule' => $dateValide, |
208 | 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 | 150 | $validator->allowEmpty('fournisseur')->add('fournisseur', 'valid', [ |
213 | 151 | 'rule' => 'check_string', |
214 | 152 | 'message' => 'Ce champ contient des caractères interdits', |
... | ... | @@ -298,10 +236,9 @@ class MaterielsTable extends AppTable |
298 | 236 | $configuration = TableRegistry::get('Configurations')->find() |
299 | 237 | ->where([ |
300 | 238 | 'id =' => 1 |
301 | - ])->first(); | |
302 | - | |
239 | + ]) | |
240 | + ->first(); | |
303 | 241 | $checkAtLeastOneChecked = function ($entity) { |
304 | - //debug($entity); exit; | |
305 | 242 | return ($entity->materiel_administratif || $entity->materiel_technique); |
306 | 243 | }; |
307 | 244 | // return if price >= $configuration->prix_inventaire_administratif € then must be checked as "administratif" |
... | ... | @@ -328,14 +265,6 @@ class MaterielsTable extends AppTable |
328 | 265 | return ($entity->prix_ht !== null); |
329 | 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 | 268 | $rules->add($checkAtLeastOneChecked, [ |
340 | 269 | 'errorField' => 'materiel_administratif', |
341 | 270 | 'message' => 'Le matériel est obligatoirement inventoriable ou technique.' |
... | ... | @@ -352,12 +281,6 @@ class MaterielsTable extends AppTable |
352 | 281 | 'errorField' => 'prix_ht', |
353 | 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 | 284 | $rules->add($rules->isUnique([ |
362 | 285 | 'numero_laboratoire' |
363 | 286 | ])); |
... | ... | @@ -447,9 +370,6 @@ class MaterielsTable extends AppTable |
447 | 370 | if (empty($entity->get('date_reception'))) { |
448 | 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 | 373 | return true; |
454 | 374 | } |
455 | 375 | } | ... | ... |
src/Template/Documents/edit.ctp
... | ... | @@ -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 | 30 | if (isset($photo)) { |
30 | 31 | echo $this->Form->hidden('type_document_id', [ | ... | ... |
src/Template/Documents/index.ctp
... | ... | @@ -43,7 +43,7 @@ foreach ($documents as $document) : |
43 | 43 | ?> |
44 | 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 | 47 | </td> |
48 | 48 | |
49 | 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 | <?php if(isset($username) && $username != " "): ?> |
7 | 7 | |
8 | 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 | 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 | 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 | 57 | if ($bol == true) { |
54 | 58 | $t = strtolower($singularHumanName); |
55 | 59 | ... | ... |
src/Template/Element/menu_view.ctp
... | ... | @@ -347,23 +347,55 @@ if ($singularHumanName == 'Matériel') { |
347 | 347 | } |
348 | 348 | |
349 | 349 | if ($isAuthorized == true) { |
350 | + $determinant = ''; | |
350 | 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 | 353 | $action = ' Supprimer cette'; |
353 | - elseif (strstr($t, 'utilisateur') || strstr($t, 'emprunt')) | |
354 | + $determinant = 'cette'; | |
355 | + } elseif (strstr($t, 'utilisateur') || strstr($t, 'emprunt')) { | |
354 | 356 | $action = ' Supprimer cet'; |
355 | - else | |
357 | + $determinant = 'cet'; | |
358 | + } else { | |
356 | 359 | $action = ' Supprimer ce'; |
360 | + $determinant = 'ce'; | |
361 | + } | |
357 | 362 | |
358 | 363 | echo $this->Form->postLink('<i class="icon-trash"></i>' . $action . ' ' . $t, [ |
359 | 364 | 'action' => 'delete', |
360 | 365 | $lien |
361 | 366 | ], [ |
362 | 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 | 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 | 401 | </ul> |
370 | 402 | \ No newline at end of file | ... | ... |
src/Template/Emprunts/index.ctp
... | ... | @@ -24,7 +24,7 @@ |
24 | 24 | <td class="actions" style="padding: 6px 0; text-align: left;"> |
25 | 25 | <?php if(($role == 'Utilisateur' && in_array($username, [$emprunt->nom_createur, $emprunt->nom_emprunteur])) || (in_array($role, ['Responsable', 'Administration', 'Administration Plus', 'Super Administrateur']))) { ?> |
26 | 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 | 28 | <?php } ?> |
29 | 29 | </td> |
30 | 30 | ... | ... |
src/Template/Fournisseurs/index.ctp
... | ... | @@ -24,7 +24,7 @@ foreach ($fournisseurs as $fournisseur) : |
24 | 24 | <?php } ?> |
25 | 25 | |
26 | 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 | 28 | <?php } ?> |
29 | 29 | </td> |
30 | 30 | ... | ... |
... | ... | @@ -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> | ... | ... |
... | ... | @@ -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> | ... | ... |
... | ... | @@ -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 | 50 | \ No newline at end of file | ... | ... |
... | ... | @@ -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 = 'Labinvent 2'; |
119 | 119 | </i></td> |
120 | 120 | <td id="version"> |
121 | 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 | 123 | color="black"><a |
124 | 124 | href="<?php |
125 | 125 | ... | ... |
src/Template/Materiels/add.ctp
... | ... | @@ -226,11 +226,12 @@ if (isset($cpMateriel)) { |
226 | 226 | 'default' => $_SESSION['Auth']['User']['sn'][0], |
227 | 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 | 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 | 236 | echo $this->Form->input('organisme_id', [ |
236 | 237 | 'options' => $organismes, | ... | ... |
src/Template/Materiels/edit.ctp
... | ... | @@ -6,6 +6,12 @@ $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER = $USER_IS_UTILISATEUR && in_array($us |
6 | 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 | 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 | 17 | $administrationData = array( |
... | ... | @@ -28,8 +34,7 @@ if ($IS_VALIDATED) |
28 | 34 | 'date_reception', |
29 | 35 | 'organisme_id', |
30 | 36 | 'prix_ht', |
31 | - 'gestionnaire_id', | |
32 | - 'nom_responsable' | |
37 | + 'gestionnaire_id' | |
33 | 38 | ), $administrationData); |
34 | 39 | else if ($IS_ARCHIVED_OR_TOBE) { |
35 | 40 | $myReadonlyFields = array( |
... | ... | @@ -47,6 +52,7 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
47 | 52 | ), $myReadonlyFields); |
48 | 53 | ?> |
49 | 54 | |
55 | + | |
50 | 56 | <div class="materiels form"> |
51 | 57 | <?=$this->Form->create($materiel)?> |
52 | 58 | <fieldset> |
... | ... | @@ -56,22 +62,24 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
56 | 62 | </h2> |
57 | 63 | |
58 | 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 | 68 | if ($USER_IS_SUPERADMIN) { |
61 | 69 | echo $this->Html->link('Aller au formulaire d\'édition avancée', [ |
62 | 70 | 'action' => 'administrer', |
63 | 71 | $materiel->id |
64 | 72 | ]); |
65 | 73 | echo '<br><br>'; |
66 | - } | |
74 | + }*/ | |
67 | 75 | ?> |
68 | 76 | |
69 | 77 | <div id="boutons" class="actions" |
70 | 78 | style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;"> |
71 | 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 | 84 | <?php |
77 | 85 | echo $this->Form->input('designation', [ |
... | ... | @@ -183,7 +191,6 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
183 | 191 | echo $this->Form->input('date_acquisition', [ |
184 | 192 | 'type' => 'text', |
185 | 193 | 'label' => 'Date de la commande', |
186 | - 'dateFormat' => 'dd-MM-yyyy', | |
187 | 194 | 'class' => 'datepicker', |
188 | 195 | 'placeholder' => 'Cliquez pour sélectionner une date', |
189 | 196 | 'disabled' => $isReadonlyField('date_acquisition', $myReadonlyFields) |
... | ... | @@ -191,7 +198,6 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
191 | 198 | echo $this->Form->input('date_reception', [ |
192 | 199 | 'type' => 'text', |
193 | 200 | 'label' => 'Date de réception', |
194 | - 'dateFormat' => 'dd-MM-yyyy', | |
195 | 201 | 'class' => 'datepicker', |
196 | 202 | 'placeholder' => 'A éditer lors de la réception uniquement.', |
197 | 203 | 'disabled' => $isReadonlyField('date_reception', $myReadonlyFields), |
... | ... | @@ -261,10 +267,8 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
261 | 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 | 271 | 'label' => 'Nom de l\'utilisateur', |
267 | - 'disabled' => $isReadonlyField('nom_responsable', $myReadonlyFields), | |
268 | 272 | 'empty' => 'Choisir un utilisateur', |
269 | 273 | 'default' => $username, |
270 | 274 | 'options' => $utilisateurs |
... | ... | @@ -330,8 +334,7 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
330 | 334 | * ])) { |
331 | 335 | */ |
332 | 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 | 338 | 'label' => 'Editer la partie administrative', |
336 | 339 | 'onchange' => 'changeAdminEdit();', |
337 | 340 | 'default' => false |
... | ... | @@ -348,6 +351,11 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
348 | 351 | 'label' => 'Code comptable', |
349 | 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 | 359 | echo $this->Form->input('numero_inventaire_organisme', [ |
352 | 360 | 'label' => 'N° inventaire organisme', |
353 | 361 | 'disabled' => true |
... | ... | @@ -358,9 +366,41 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
358 | 366 | ]); |
359 | 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 | 405 | </fieldset> |
366 | 406 | <?=$this->Form->submit(__('Enregistrer'))?> |
... | ... | @@ -458,5 +498,71 @@ $(document).ready(function () { |
458 | 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 | 568 | </script> | ... | ... |
src/Template/Materiels/index.ctp
... | ... | @@ -195,8 +195,10 @@ if (in_array($materiel->status, [ |
195 | 195 | 'Administration', |
196 | 196 | 'Administration Plus', |
197 | 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 | 202 | <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $materiel->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?> |
201 | 203 | <?php } endif; ?> |
202 | 204 | |
... | ... | @@ -255,7 +257,7 @@ if (in_array($materiel->status, [ |
255 | 257 | 'title' => 'Supprimer', |
256 | 258 | 'style' => 'margin: 0 2px', |
257 | 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 && in_array($us |
72 | 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 | 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 && ((isset($priviledg |
103 | 108 | */ |
104 | 109 | |
105 | 110 | // if (h($materiel->status) == 'ARCHIVED') echo '<i class="icon-inbox"></i> '; |
106 | - | |
107 | 111 | if ($IS_ARCHIVED) |
108 | 112 | echo '<i class="icon-inbox"></i> '; |
109 | 113 | $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
... | ... | @@ -123,12 +127,29 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
123 | 127 | |
124 | 128 | <div id="materiel_images" style="text-align: center;"> |
125 | 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 | 153 | // Url transformed in QrCode |
133 | 154 | $this->request->session()->write("qrUrl", $this->request->env('SERVER_NAME') . $this->request->env('REQUEST_URI')); |
134 | 155 | $this->requestAction('/QrCodes/creer/'); |
... | ... | @@ -151,8 +172,7 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
151 | 172 | // CREATED or VALIDATED |
152 | 173 | // if ( in_array($materiel->status, ['CREATED','VALIDATED']) ) { |
153 | 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 | 176 | //in_array($role, ['Administration','Administration Plus','Super Administrateur']) |
157 | 177 | || |
158 | 178 | ( |
... | ... | @@ -229,7 +249,7 @@ $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; |
229 | 249 | } |
230 | 250 | |
231 | 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 | 254 | * if ( |
235 | 255 | * in_array($role, ['Administration','Administration Plus','Super Administrateur']) |
... | ... | @@ -517,8 +537,11 @@ else if (h($materiel->materiel_administratif) == 1) |
517 | 537 | else if (h($materiel->materiel_technique) == 1) |
518 | 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 | 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 | 545 | $displayElement(__('Materiel inventorié'), $type); |
523 | 546 | $displayElement(__('Organisme'), $materiel->has('organisme') ? h($materiel->organisme->nom) : ''); |
524 | 547 | $displayElement(__('Domaine'), $materiel->has('sur_category') ? h($materiel->sur_category->nom) : ''); |
... | ... | @@ -618,15 +641,15 @@ if ($USER_IS_ADMIN_OR_MORE) { |
618 | 641 | <th><?=__('N°')?></th> |
619 | 642 | <th><?=__('Type d\'intervention')?></th> |
620 | 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 | 646 | <th><?=__('Statut')?></th> |
624 | 647 | </tr> |
625 | 648 | <?php foreach ($materiel->suivis as $suivis) :?> |
626 | 649 | <tr> |
627 | 650 | <td class="actions" style="padding: 6px 0; text-align: left;"> |
628 | 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 | 654 | * if ( |
632 | 655 | * in_array($role, ['Administration','Administration Plus','Super Administrateur']) |
... | ... | @@ -676,19 +699,18 @@ if ($USER_IS_ADMIN_OR_MORE) { |
676 | 699 | <td><?=$this->Html->link('Suivi ' . $suivis->id, ['controller' => 'suivis','action' => 'view',$suivis->id])?></td> |
677 | 700 | <td><?=$typeSuivis->find()->where(['id =' => h($suivis->type_suivi_id)])->first()['nom'];?></td> |
678 | 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 | 710 | <td><?=h($suivis->statut)?></td> |
690 | 711 | </tr> |
691 | 712 | <?php endforeach;?> |
713 | + | |
692 | 714 | </table> |
693 | 715 | <?php |
694 | 716 | } else { |
... | ... | @@ -733,7 +755,7 @@ foreach ($materiel->emprunts as $emprunt) : |
733 | 755 | <tr> |
734 | 756 | <td class="actions" style="padding: 6px 0; text-align: left;"> |
735 | 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 | 760 | * if ( |
739 | 761 | * in_array($role, ['Administration','Administration Plus','Super Administrateur']) |
... | ... | @@ -827,19 +849,19 @@ foreach ($materiel->emprunts as $emprunt) : |
827 | 849 | <td class="actions" style="padding: 6px 0; text-align: left;"> |
828 | 850 | <?php |
829 | 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 | 853 | 'title' => 'Télécharger', |
832 | 854 | 'style' => 'margin:0', |
833 | 855 | 'escape' => false |
834 | 856 | ]); |
835 | 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 | 859 | 'title' => 'Télécharger', |
838 | 860 | 'style' => 'margin:0', |
839 | 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 | 866 | * if ( |
845 | 867 | * in_array($role, ['Administration','Administration Plus','Super Administrateur']) |
... | ... | @@ -884,6 +906,16 @@ foreach ($materiel->emprunts as $emprunt) : |
884 | 906 | 'style' => 'margin:0', |
885 | 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 | 921 | </td> | ... | ... |
src/Template/Pages/tools_menu_sm.ctp
... | ... | @@ -14,19 +14,26 @@ echo $this->Html->link('Voir les liste des Catégories', [ |
14 | 14 | ]); |
15 | 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 | 38 | echo '<tr><td>'; |
32 | 39 | echo $this->Html->link('Liste des types de suivis', [ |
... | ... | @@ -35,31 +42,37 @@ echo $this->Html->link('Liste des types de suivis', [ |
35 | 42 | ]); |
36 | 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 | 77 | echo '<tr><td>'; |
65 | 78 | echo $this->Html->link('Liste des types de documents', [ |
... | ... | @@ -68,12 +81,23 @@ echo $this->Html->link('Liste des types de documents', [ |
68 | 81 | ]); |
69 | 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 | 102 | echo '<tr><td>'; |
79 | 103 | echo $this->Html->link('Liste des fournisseurs', [ |
... | ... | @@ -82,12 +106,7 @@ echo $this->Html->link('Liste des fournisseurs', [ |
82 | 106 | ]); |
83 | 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 | 112 | </table> | ... | ... |
src/Template/Suivis/add.ctp
... | ... | @@ -28,12 +28,32 @@ |
28 | 28 | echo $this->Form->input('type_suivi_id', [ |
29 | 29 | 'label' => 'Type d\'intervention', |
30 | 30 | 'options' => $typeSuivis, |
31 | - 'default' => 3 | |
31 | + 'default' => 3, | |
32 | + 'empty' => "Choisir le type de suivi" | |
32 | 33 | ]); |
33 | 34 | |
34 | 35 | echo '<div id="frequence" style="display:none">'; |
35 | 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 | 57 | echo $this->Form->input('organisme', [ |
38 | 58 | 'label' => 'Prestataire' |
39 | 59 | ]); |
... | ... | @@ -111,15 +131,22 @@ echo $this->element('menu_form', [ |
111 | 131 | document.getElementById('typedemesure').innerHTML = ""; |
112 | 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 | 136 | document.getElementById('frequence').innerHTML = ""; |
116 | 137 | $("#frequence").hide(); |
138 | + $("#dates").show(); | |
139 | + | |
117 | 140 | } else { |
141 | + $("#dates").hide(); | |
118 | 142 | $("#frequence").show(); |
119 | 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 | 151 | * Event calcul date prochain controle |
125 | 152 | */ | ... | ... |
src/Template/Suivis/edit.ctp
... | ... | @@ -22,33 +22,58 @@ |
22 | 22 | 'options' => $typeSuivis, |
23 | 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 | 77 | echo $this->Form->input('statut', [ |
53 | 78 | 'options' => [ |
54 | 79 | 'En cours' => 'En cours', |
... | ... | @@ -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 | 235 | * Event calcul date prochain controle |
192 | 236 | */ | ... | ... |
src/Template/Suivis/index.ctp
... | ... | @@ -9,8 +9,8 @@ |
9 | 9 | <th><?= $this->Paginator->sort('materiel_id', 'Matériel') ?></th> |
10 | 10 | <th><?= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th> |
11 | 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 | 14 | <th><?= $this->Paginator->sort('type_suivi_id', "Type d'intervention") ?></th> |
15 | 15 | <th><?= $this->Paginator->sort('statut', "Statut") ?></th> |
16 | 16 | |
... | ... | @@ -24,29 +24,32 @@ |
24 | 24 | |
25 | 25 | if (($role == 'Utilisateur' && in_array($username, [ |
26 | 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 | 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 | 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 | 38 | <?php } ?> |
36 | 39 | </td> |
37 | 40 | <td class="smallText"><?php echo $this->Html->link('Suivi '.$this->Number->format($suivi->id), ['action' => 'view', $suivi->id])?></td> |
38 | 41 | <td class="smallText"><?= $suivi->has('materiel') ? $this->Html->link($suivi->materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $suivi->materiel->id]) : '' ?></td> |
39 | 42 | <td class="smallText"><?= $suivi->has('materiel') ? h($suivi->materiel->numero_laboratoire) : '' ?></td> |
40 | 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 | 54 | <td class="smallText"><?= $suivi->has('type_suivi') ? h($suivi->type_suivi->nom) : '' ?></td> |
52 | 55 | <td class="smallText"><?= h($suivi->statut) ?></td> | ... | ... |
src/Template/Suivis/view.ctp
... | ... | @@ -10,7 +10,9 @@ |
10 | 10 | <?php |
11 | 11 | if (($role == 'Utilisateur' && in_array($username, [ |
12 | 12 | $suivi->nom_createur |
13 | - ])) || (in_array($role, [ | |
13 | + ])) || ($role == 'Responsable' && in_array($username, [ | |
14 | + $suivi->nom_createur])) | |
15 | + || (in_array($role, [ | |
14 | 16 | 'Administration', |
15 | 17 | 'Administration Plus', |
16 | 18 | 'Super Administrateur' |
... | ... | @@ -64,12 +66,19 @@ |
64 | 66 | ]) : ''); |
65 | 67 | $displayElement(__('Numéro interne (labo)'), $suivi->has('materiel') ? h($suivi->materiel->numero_laboratoire) : ''); |
66 | 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 | 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 | 83 | $displayElement(__($configuration->nom_groupe_thematique), $suivi->has('groupes_thematique') ? $this->Html->link($suivi->groupes_thematique->nom, [ |
75 | 84 | 'controller' => 'GroupesThematiques', |
... | ... | @@ -151,18 +160,21 @@ if ($suivi->type_suivi->nom == "Vérification métrologique") { |
151 | 160 | <?php foreach ($suivi->documents as $documents): ?> |
152 | 161 | <tr> |
153 | 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 | 164 | <?php |
156 | 165 | if (($role == 'Utilisateur' && in_array($username, [ |
157 | 166 | $suivi->nom_createur |
158 | - ])) || (in_array($role, [ | |
167 | + ])) || ($role == 'Responsable' && in_array($username, [ | |
168 | + $suivi->nom_createur])) | |
169 | + || (in_array($role, [ | |
159 | 170 | 'Administration', |
160 | 171 | 'Administration Plus', |
161 | 172 | 'Super Administrateur' |
162 | 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 | 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 | 178 | </td> |
167 | 179 | <?php } ?> |
168 | 180 | <td><?= $i ?></td> | ... | ... |
src/Template/Users/add.ctp
src/Template/Users/index.ctp
... | ... | @@ -19,7 +19,7 @@ |
19 | 19 | <td class="actions" style="padding: 6px 0; text-align: left;"> |
20 | 20 | <?php if($role == 'Super Administrateur') { ?> |
21 | 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 | 23 | <?php } ?> |
24 | 24 | </td> |
25 | 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 | 17 | <td class="actions" style="padding: 6px 0; text-align: left;"> |
18 | 18 | <?php if($role == 'Super Administrateur') { ?> |
19 | 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 | 21 | <?php } ?> |
22 | 22 | </td> |
23 | 23 | <td class="smallText"><?= $user->has('sur_categorie_id') ? h($user->sur_category->nom) : '' ?></td> | ... | ... |