diff --git a/app/Http/Controllers/ImageController.php b/app/Http/Controllers/ImageController.php index a5e699b..ba67050 100644 --- a/app/Http/Controllers/ImageController.php +++ b/app/Http/Controllers/ImageController.php @@ -6,6 +6,8 @@ use App\Http\Resources\Image as ImageResource; use App\Models\Memo; use App\User; use Illuminate\Http\Request; +use Illuminate\Support\Facades\File; +use Illuminate\Support\Facades\Storage; use Intervention\Image\Facades\Image; class ImageController extends Controller @@ -26,6 +28,16 @@ class ImageController extends Controller public function memos(Memo $memo) { + + foreach ($memo->images as $image) { + $exist = File::exists(storage_path('app/public/'.$image->path)); + if($exist) { + File::delete(storage_path('app/public/'.$image->path)); + $memo->images()->where('id', $image->id)->delete(); + } + } + + \request()['thumbnail'] = true; $data = $this->storeImage(); $newImage = $memo->images()->create([ @@ -35,19 +47,35 @@ class ImageController extends Controller 'location' => $data['location'], ]); + // Thumbnail + $memo->images()->create([ + 'path' => "thumbnail/".$data['path'], + 'width' => round($data['width'] / 3, 0), + 'height' => round($data['height'] / 3, 0), + 'location' => $data['location']."-small", + ]); + return new ImageResource($newImage); } private function storeImage() { + $data = request()->validate([ 'image' => 'required', 'width' => 'required', 'height' => 'required', 'location' => 'required', + 'thumbnail' => '', ]); $data['path'] = $data['image']->store('images', 'public'); + if($data['thumbnail']) { + Image::make($data['image']) + ->fit(round($data['width'] / 3, 0), round($data['height'] / 3, 0)) + ->save(storage_path('app/public/thumbnail/images/'.$data['image']->hashName())); + } + Image::make($data['image']) ->fit($data['width'], $data['height']) ->save(storage_path('app/public/images/'.$data['image']->hashName())); diff --git a/app/Http/Resources/Memo.php b/app/Http/Resources/Memo.php index dcfc970..5fe0d29 100644 --- a/app/Http/Resources/Memo.php +++ b/app/Http/Resources/Memo.php @@ -27,6 +27,7 @@ class Memo extends JsonResource 'attributes' => [ 'posted_by' => new UserResource($this->user), 'cover_image' => new ImageResource($this->coverImage), + 'thumbnail_cover_image' => new ImageResource($this->thumbnailImage), ] //'tags' => TagResource::collection($this->tags), ], diff --git a/app/Models/Memo.php b/app/Models/Memo.php index 7255120..58df691 100644 --- a/app/Models/Memo.php +++ b/app/Models/Memo.php @@ -41,4 +41,14 @@ class Memo extends Model $userImage->path = 'images/default-cover.jpg'; }); } + + public function thumbnailImage(): MorphOne + { + return $this->morphOne(Image::class, 'imageable') + ->orderBy('id', 'desc') + ->where('location', 'cover-small') + ->withDefault(function ($userImage) { + $userImage->path = 'images/default-cover.jpg'; + }); + } } diff --git a/resources/js/views/Memo/MemoIndex.vue b/resources/js/views/Memo/MemoIndex.vue index d7fe3bb..ad99b7d 100755 --- a/resources/js/views/Memo/MemoIndex.vue +++ b/resources/js/views/Memo/MemoIndex.vue @@ -11,7 +11,7 @@
- +

{{ memo.data.name }}