diff --git a/public/site/config/config.php b/public/site/config/config.php index 37c5f58..291b3c9 100644 --- a/public/site/config/config.php +++ b/public/site/config/config.php @@ -21,6 +21,7 @@ return [ 'routes' => [ require(__DIR__ . '/routes/logout.php'), require(__DIR__ . '/routes/toggle-favorite.php'), + require(__DIR__ . '/routes/upload.php') ], 'hooks' => [ 'page.create:after' => require_once(__DIR__ . '/hooks/create-steps.php'), diff --git a/public/site/config/routes/upload.php b/public/site/config/routes/upload.php new file mode 100644 index 0000000..a589695 --- /dev/null +++ b/public/site/config/routes/upload.php @@ -0,0 +1,53 @@ + 'upload.json', + 'method' => 'POST', + 'action' => function () { + if ($uploads = kirby()->request()->files()) { + $pageUri = kirby()->request()->query()->get('pageUri'); + $page = page($pageUri); + + $alerts = []; + $success = ''; + foreach ($uploads->get('images') as $upload) { + // 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']; + }); + + if ($duplicates->count() > 0) { + $alerts[$upload['name']] = "The file already exists"; + continue; + } + + try { + $name = crc32($upload['name'].microtime()). '_' . $upload['name']; + $file = $page->createFile([ + 'source' => $upload['tmp_name'], + 'filename' => $name, + 'template' => 'default', + 'content' => [ + 'date' => date('Y-m-d h:m') + ] + ]); + $success = 'Your file upload was successful'; + } catch (Exception $e) { + $alerts[$upload['name']] = $e->getMessage(); + } + } + return compact('alerts', 'success'); + } + + return [ + 'error' => 'Aucun fichier reçu.', + ]; + } +]; diff --git a/src/components/project/ClientBrief/AddImages.vue b/src/components/project/ClientBrief/AddImages.vue index d08ddf9..c7ba531 100644 --- a/src/components/project/ClientBrief/AddImages.vue +++ b/src/components/project/ClientBrief/AddImages.vue @@ -37,24 +37,38 @@ -->