X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/ddb7f33868ea499ab8f48a7062f145e8c0fbe02f..refs/pull/2791/head:/app/Http/Controllers/Images/ImageController.php diff --git a/app/Http/Controllers/Images/ImageController.php b/app/Http/Controllers/Images/ImageController.php index 9c67704dd..1eb8917b3 100644 --- a/app/Http/Controllers/Images/ImageController.php +++ b/app/Http/Controllers/Images/ImageController.php @@ -1,13 +1,14 @@ 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); @@ -47,13 +45,10 @@ class ImageController extends Controller /** * Update image details - * @param Request $request - * @param integer $id - * @return \Illuminate\Http\JsonResponse * @throws ImageUploadException - * @throws \Exception + * @throws ValidationException */ - public function update(Request $request, $id) + public function update(Request $request, string $id) { $this->validate($request, [ 'name' => 'required|min:2|string' @@ -64,47 +59,50 @@ 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. + * Get the form for editing the given image. + * @throws Exception */ - public function usage(int $id) + public function edit(Request $request, string $id) { $image = $this->imageRepo->getById($id); $this->checkImagePermission($image); - $pages = Page::visible()->where('html', 'like', '%' . $image->url . '%')->get(['id', 'name', 'slug', 'book_id']); - foreach ($pages as $page) { - $page->url = $page->getUrl(); - $page->html = ''; - $page->text = ''; + if ($request->has('delete')) { + $dependantPages = $this->imageRepo->getPagesUsingImage($image); } - $result = count($pages) > 0 ? $pages : false; - return response()->json($result); + $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 + * @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) {