From 8ec157e6bd6813618fc17c352915ba358ff2ebd1 Mon Sep 17 00:00:00 2001 From: Olivier Legat Date: Thu, 3 Jun 2021 17:06:18 +0200 Subject: [PATCH] =?UTF-8?q?ticket=2090=20envoi=20de=20la=20fiche=20vers=20?= =?UTF-8?q?Arcadia=20apr=C3=A8s=20upload=20de=20nouveau=20visuel=20Gestion?= =?UTF-8?q?=20de=20retour=20en=20erreur=20avant=20la=20liaison=20avec=20Ar?= =?UTF-8?q?cadia=20Check=20des=20dimensions=20et=20du=20type=20avant=20lia?= =?UTF-8?q?ison=20vers=20Arcadia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/MediaController.php | 46 ++++++++++++ .../media-editor/EditComponents.vue | 70 +++++++++++++++++++ .../media-editor/tabs/EditComponent.vue | 16 ++++- 3 files changed, 129 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/MediaController.php b/app/Http/Controllers/MediaController.php index 1712e15..c4265f4 100644 --- a/app/Http/Controllers/MediaController.php +++ b/app/Http/Controllers/MediaController.php @@ -902,6 +902,8 @@ class MediaController extends Controller $n->taille = $this->formatBytes($this->get_file_size($destinationPath . $filename)); $im = new \imagick($destinationPath . $filename); + //pour dev sous windows (pour cause de bug sur imagick avec les chemins relatifs) + //$im = new \imagick(realpath($destinationPath.$filename)); $resolutions = $im->getImageResolution(); $n->resolution = round($resolutions['x'] * 2.54, 2); $imageprops = $im->getImageGeometry(); @@ -976,11 +978,55 @@ class MediaController extends Controller return json_encode($response); } + /** + * Vérification des clés pour liaison arcadia avant création, mise à jour + * + */ public function checkRefKey(Request $request) { Auth::user()->authorizeRoles([config('roles.const.ADMIN')]); $media_id = $request->input('media_id'); $media = Media::find($media_id); + //il faut check les dimensions de l'image + //pour les cas sujet, type vue, type media qui nous interesse + $code_sujet = $media->sujet_id; + $type_vue = $media->typevue_id; + $type_media = $media->typemedia_id; + $extension = $media->extension; + $largeur = $media->largeur; + $hauteur = $media->hauteur; + + //si on est sur un sujet arcadia (donc pas le sujet Groupe) + if ($media->sujet->sujet_arcadia) { + //le check est requis + $doCheck = true; + //cas d'exclusion BAT + if ($type_vue == 19) { + $doCheck = false; + } + if ($type_media == 6) { + $doCheck = false; + } + } + if ($doCheck) { + if ($extension == 'png') { + if ($largeur == 1800) { + if ($hauteur == 1800) { + //ok + } else { + //fail hauteur + return json_encode(array('status' => false, 'error' => "Les dimensions requises sont 1800px par 1800px, veuillez charger un autre média")); + } + } else { + //fail largeur + return json_encode(array('status' => false, 'error' => "Les dimensions requises sont 1800px par 1800px, veuillez charger un autre média")); + } + } else { + //fail type de fichier + return json_encode(array('status' => false, 'error' => "Le type de fichier doit être PNG, veuillez charger un autre média")); + } + } + if ($media) { $refs = ArcadiaLink::getRefKey($media); if (count($refs) > 0){ diff --git a/resources/js/components/media-manager/media-editor/EditComponents.vue b/resources/js/components/media-manager/media-editor/EditComponents.vue index e23ce2e..af5582e 100644 --- a/resources/js/components/media-manager/media-editor/EditComponents.vue +++ b/resources/js/components/media-manager/media-editor/EditComponents.vue @@ -158,11 +158,81 @@ type: 'updateMedia', media: JSON.parse(message) }); + //on vient d'upload un fichier. + // Si c'est lié a Arcadia on check les clés refs + if (this.storeMedia.arcadia_id !== null) { + //le media n'est pas lock car on a pu upload mais on vérifie quand meme + if (this.storeMedia.isLocked === 0) { + this.CheckRefKey(this.SaveMedia); + } + } this.$loading.hide(); }, uploadFileComplete() { alert("Media uploadé !"); }, + CheckRefKey(callback) { + axios.post('/ajax/check-ref-key', { + media_id: this.storeMedia.id + }).then(response => { + if (response.data === false) { + $.fancybox.close(); + $.fancyMessage({ + title: "Erreur", + message: "Vous devez avoir au minimum 1 clé de référentiel.", + type: "error" + }); + } else { + //update de la fiche vers arcadia + if(response.data.status===false) { + $.fancyMessage({ + title: "Erreur", + message: response.data.error, + type: "error" + }); + } else { + callback(); + } + } + }).catch(function (error) { + console.log(error); + $.fancybox.close(); + $.fancyMessage({ + title: "Erreur", + message: "Erreur lors de l'opération, merci d'actualiser la page.", + type: "error" + }); + }); + }, + SaveMedia() { + axios.post('/ajax/save-media', { + media: this.storeMedia + }).then(response => { + this.$loading.hide(); + if (response.data.status === true) { + this.$store.commit({ + type: 'updateMedia', + media: response.data.datas + }); + $.fancyMessage({ + title: "Sauvegarde d'un média", + message: "Les données ont bien été enregistrées", + type: "info" + }); + } else { + $.fancyMessage({title: "Sauvegarde d'un média", message: response.data.error, type: "error"}); + } + }).catch(function (error) { + this.$loading.hide(); + $.fancybox.close(); + $.fancyMessage({ + title: "Sauvegarde d'un média", + message: "Erreur lors de l'opération, merci d'actualiser la page.", + type: "error" + }); + console.log(error); + }); + }, } } diff --git a/resources/js/components/media-manager/media-editor/tabs/EditComponent.vue b/resources/js/components/media-manager/media-editor/tabs/EditComponent.vue index 7b5416f..17fb4e5 100644 --- a/resources/js/components/media-manager/media-editor/tabs/EditComponent.vue +++ b/resources/js/components/media-manager/media-editor/tabs/EditComponent.vue @@ -293,12 +293,22 @@ type: "error" }); } else { - let result = confirm("Êtes-vous sur de vouloir lancer le traitement ?"); - if (result !== true){ + if(response.data.status===false) { this.$loading.hide(); + $.fancyMessage({ + title: "Erreur", + message: response.data.error, + type: "error" + }); return false; + } else { + let result = confirm("Êtes-vous sur de vouloir lancer le traitement ?"); + if (result !== true){ + this.$loading.hide(); + return false; + } + callback(); } - callback(); } }).catch(function (error) { console.log(error);