diff --git a/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/1805970853_capture-decran-2020-05-30-a-09.18.04.png b/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/1805970853_capture-decran-2020-05-30-a-09.18.04.png new file mode 100644 index 0000000..20e66db Binary files /dev/null and b/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/1805970853_capture-decran-2020-05-30-a-09.18.04.png differ diff --git a/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/black-1984277_1280.jpg.txt b/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/1805970853_capture-decran-2020-05-30-a-09.18.04.png.txt similarity index 64% rename from public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/black-1984277_1280.jpg.txt rename to public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/1805970853_capture-decran-2020-05-30-a-09.18.04.png.txt index e64f94f..a1c72ae 100644 --- a/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/black-1984277_1280.jpg.txt +++ b/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/1805970853_capture-decran-2020-05-30-a-09.18.04.png.txt @@ -6,11 +6,11 @@ Tags: ---- -Sort: 7 +Date: 2024-10-15 01:10 ---- -Uuid: PbMGJPIjFYxbbyhq +Uuid: cKGbZhC6pCTXislx ---- diff --git a/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/black-1984277_1280.jpg b/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/black-1984277_1280.jpg deleted file mode 100644 index 8cb0aa6..0000000 Binary files a/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/black-1984277_1280.jpg and /dev/null differ diff --git a/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/client-brief.txt b/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/client-brief.txt index 83df18e..1bbb620 100644 --- a/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/client-brief.txt +++ b/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/client-brief.txt @@ -14,10 +14,7 @@ Description: ---- -Clientbriefimages: - -- file://PbMGJPIjFYxbbyhq -- file://STF67mX6eGsLsOGh +Clientbriefimages: - file://cKGbZhC6pCTXislx ---- diff --git a/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/perfume-144546_1280.jpg b/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/perfume-144546_1280.jpg deleted file mode 100644 index ba16ec9..0000000 Binary files a/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/perfume-144546_1280.jpg and /dev/null differ diff --git a/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/perfume-144546_1280.jpg.txt b/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/perfume-144546_1280.jpg.txt deleted file mode 100644 index bce4489..0000000 --- a/public/content/projects/1_miss-dior-blooming-bouquet/1_client-brief/perfume-144546_1280.jpg.txt +++ /dev/null @@ -1,17 +0,0 @@ -Description: test 2 - ----- - -Tags: - ----- - -Sort: 8 - ----- - -Uuid: STF67mX6eGsLsOGh - ----- - -Template: image \ No newline at end of file diff --git a/public/site/config/routes/upload-images.php b/public/site/config/routes/upload-images.php index 4506d39..d0bda08 100644 --- a/public/site/config/routes/upload-images.php +++ b/public/site/config/routes/upload-images.php @@ -58,63 +58,72 @@ return [ } // Upload new images - // if ($uploads = $files->get('images')) { - // $existingFiles = $page->files(); - // $existingFileMap = []; - // foreach ($existingFiles as $file) { - // $pos = strpos($file->filename(), '_'); - // $originalSafename = substr($file->filename(), $pos + 1); - // $existingFileMap[$originalSafename . '|' . $file->mime() . '|' . $file->size()] = $file->uuid(); - // } + if ($uploads = $files->get('images')) { + $imagesMeta = $data['imagesMeta']; + $existingFiles = $page->files(); + $existingFileMap = []; + foreach ($existingFiles as $file) { + $pos = strpos($file->filename(), '_'); + $originalSafename = substr($file->filename(), $pos + 1); + $existingFileMap[$originalSafename . '|' . $file->mime() . '|' . $file->size()] = $file->uuid(); + } - // foreach ($uploads as $upload) { - // // check for duplicate - // $files = page('storage')->files(); - // $duplicates = $files->filter(function ($file) use ($upload) { - // // get original safename without prefix - // $pos = strpos($file->filename(), '_'); - // $originalSafename = substr($file->filename(), $pos + 1); + foreach ($uploads as $index => $upload) { + $description = $imagesMeta[$index]['description'] ?? null; + $tags = json_decode($imagesMeta[$index]['tags'], true) ?? []; + + // check for duplicate + $files = $page->files(); + $duplicates = $files->filter(function ($file) use ($upload) { + // get original safename without prefix + $pos = strpos($file->filename(), '_'); + $originalSafename = substr($file->filename(), $pos + 1); - // return $originalSafename === F::safeName($upload['name']) && - // $file->mime() === $upload['type'] && - // $file->size() === $upload['size']; - // }); + return $originalSafename === F::safeName($upload['name']) && + $file->mime() === $upload['type'] && + $file->size() === $upload['size']; + }); - // if ($duplicates->count() > 0) { - // $correspondingFile = $duplicates->first(); - // $newFile = $correspondingFile->update([ - // 'description' => $upload['description'], - // 'tags' => $upload['tags'] - // ]); - // $allFiles[] = $newFile->uuid(); - // $success[$newFile->name()] = 'Successfully updated.'; - // continue; - // } else { - // try { - // $name = crc32($upload['name'].microtime()). '_' . $upload['name']; - // $newFile = $page->createFile([ - // 'source' => $upload['name'], - // 'filename' => $name, - // 'template' => 'image', - // 'content' => [ - // 'date' => date('Y-m-d h:m'), - // 'description' => $upload['description'], - // 'tags' => $upload['tags'], - // ] - // ]); - // $allFiles[] = $newFile->uuid(); - // $success[$newFile->name()] = 'Successfully added.'; - // } catch (Exception $e) { - // $alerts[$upload['name']] = $e->getMessage(); - // } - // } - // } - // } + if ($duplicates->count() > 0) { + $existingFile = $duplicates->first(); + $newFile = $existingFile->update([ + 'description' => $description, + 'tags' => $tags + ]); + + $allFiles = array_filter($allFiles, function ($uuid) use ($existingFile) { + return $uuid != $existingFile->uuid(); + }); + + $allFiles[] = $newFile->uuid(); + $success[$newFile->name()] = 'Successfully updated.'; + continue; + } else { + try { + + $name = crc32($upload['name'].microtime()). '_' . $upload['name']; + $newFile = $page->createFile([ + 'source' => $upload['tmp_name'], + 'filename' => $name, + 'template' => 'image', + 'content' => [ + 'date' => date('Y-m-d h:m'), + 'description' => $description, + 'tags' => $tags, + ] + ]); + $allFiles[] = $newFile->uuid(); + $success[$newFile->name()] = 'Successfully added.'; + } catch (Throwable $th) { + $alerts[$upload['name']] = $th->getMessage() . ' line ' . $th->getLine(); + } + } + } + } + // Empty page update needed to updates its files data + $newPage = $page->update([]); if (!empty($allFiles)) { - // Empty page update needed to updates its files data - $newPage = $page->update([]); - $newPage = $page->update([ 'clientBriefImages' => $allFiles ]); @@ -122,15 +131,15 @@ return [ $images = []; - // foreach ($newPage->clientBriefImages()->toFiles() as $image) { - // $images[] = [ - // 'url' => $image->url(), - // 'uuid' => (string) $image->uuid(), - // 'tags' => $image->tags()->split(), - // 'name' => $image->filename(), - // 'description' => $image->description()->value(), - // ]; - // } + foreach ($newPage->clientBriefImages()->toFiles() as $image) { + $images[] = [ + 'url' => $image->url(), + 'uuid' => (string) $image->uuid(), + 'tags' => $image->tags()->split(), + 'name' => $image->filename(), + 'description' => $image->description()->value(), + ]; + } return compact('images', 'alerts', 'success'); } ]; diff --git a/src/components/project/client-brief/add-images-modal/ImagesEditPanel.vue b/src/components/project/client-brief/add-images-modal/ImagesEditPanel.vue index bf31164..cf8ebe9 100644 --- a/src/components/project/client-brief/add-images-modal/ImagesEditPanel.vue +++ b/src/components/project/client-brief/add-images-modal/ImagesEditPanel.vue @@ -169,12 +169,21 @@ const images = computed(() => { function addImagesToBrief() { const formData = new FormData(); - const blobPromises = images.value.map((item) => { + const blobPromises = images.value.map((item, index) => { + console.log(item); if (item.url.startsWith("blob:")) { return fetch(item.url) .then((response) => response.blob()) .then((blob) => { - formData.append("images[]", blob, JSON.stringify(item)); + formData.append("images[]", blob, item.name); + formData.append( + `imagesMeta[${index}][description]`, + item.description + ); + formData.append( + `imagesMeta[${index}][tags]`, + JSON.stringify(item.tags) + ); }); } else { formData.append("imageUris[]", JSON.stringify(item));