X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/8c190324ac5f8debdb5ee643a38a36667d977bfd..refs/pull/2890/head:/app/Http/Controllers/Images/ImageController.php diff --git a/app/Http/Controllers/Images/ImageController.php b/app/Http/Controllers/Images/ImageController.php index 024003f87..4c9737887 100644 --- a/app/Http/Controllers/Images/ImageController.php +++ b/app/Http/Controllers/Images/ImageController.php @@ -1,13 +1,16 @@ -image = $image; $this->file = $file; $this->imageRepo = $imageRepo; - parent::__construct(); } /** * Provide an image file from storage. - * @param string $path - * @return mixed + * + * @throws NotFoundException */ public function showImage(string $path) { $path = storage_path('uploads/images/' . $path); if (!file_exists($path)) { - abort(404); + throw (new NotFoundException(trans('errors.image_not_found'))) + ->setSubtitle(trans('errors.image_not_found_subtitle')) + ->setDetails(trans('errors.image_not_found_details')); } return response()->file($path); } - /** - * Update image details - * @param integer $id - * @param Request $request - * @return \Illuminate\Http\JsonResponse + * Update image details. + * * @throws ImageUploadException - * @throws \Exception + * @throws ValidationException */ - public function update($id, Request $request) + public function update(Request $request, string $id) { $this->validate($request, [ - 'name' => 'required|min:2|string' + 'name' => 'required|min:2|string', ]); $image = $this->imageRepo->getById($id); @@ -64,42 +62,55 @@ class ImageController extends Controller $this->checkOwnablePermission('image-update', $image); $image = $this->imageRepo->updateImageDetails($image, $request->all()); - return response()->json($image); + + $this->imageRepo->loadThumbs($image); + + return view('components.image-manager-form', [ + 'image' => $image, + 'dependantPages' => null, + ]); } /** - * Show the usage of an image on pages. - * @param \BookStack\Entities\Repos\EntityRepo $entityRepo - * @param $id - * @return \Illuminate\Http\JsonResponse + * Get the form for editing the given image. + * + * @throws Exception */ - public function usage(EntityRepo $entityRepo, $id) + public function edit(Request $request, string $id) { $image = $this->imageRepo->getById($id); $this->checkImagePermission($image); - $pageSearch = $entityRepo->searchForImage($image->url); - return response()->json($pageSearch); + + if ($request->has('delete')) { + $dependantPages = $this->imageRepo->getPagesUsingImage($image); + } + + $this->imageRepo->loadThumbs($image); + + return view('components.image-manager-form', [ + 'image' => $image, + 'dependantPages' => $dependantPages ?? null, + ]); } /** - * Deletes an image and all thumbnail/image files - * @param int $id - * @return \Illuminate\Http\JsonResponse - * @throws \Exception + * Deletes an image and all thumbnail/image files. + * + * @throws Exception */ - public function destroy($id) + public function destroy(string $id) { $image = $this->imageRepo->getById($id); $this->checkOwnablePermission('image-delete', $image); $this->checkImagePermission($image); $this->imageRepo->destroyImage($image); - return response()->json(trans('components.images_deleted')); + + return response(''); } /** * Check related page permission and ensure type is drawio or gallery. - * @param Image $image */ protected function checkImagePermission(Image $image) {