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