X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/d676e1e824e0377cfcb1736dd1ff622e383d8d02..663f81a2b1eba75883fbab6577a386351b86f623:/app/Http/Controllers/BookController.php diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index b9dd0e799..937f7d28f 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -9,6 +9,7 @@ use BookStack\Entities\Models\Bookshelf; use BookStack\Entities\Repos\BookRepo; use BookStack\Entities\Tools\BookContents; use BookStack\Entities\Tools\Cloner; +use BookStack\Entities\Tools\HierarchyTransformer; use BookStack\Entities\Tools\PermissionsUpdater; use BookStack\Entities\Tools\ShelfContext; use BookStack\Exceptions\ImageUploadException; @@ -166,7 +167,7 @@ class BookController extends Controller if ($request->has('image_reset')) { $validated['image'] = null; - } else if (is_null($validated['image'])) { + } else if (array_key_exists('image', $validated) && is_null($validated['image'])) { unset($validated['image']); } @@ -266,4 +267,20 @@ class BookController extends Controller return redirect($bookCopy->getUrl()); } + + /** + * Convert the chapter to a book. + */ + public function convertToShelf(HierarchyTransformer $transformer, string $bookSlug) + { + $book = $this->bookRepo->getBySlug($bookSlug); + $this->checkOwnablePermission('book-update', $book); + $this->checkOwnablePermission('book-delete', $book); + $this->checkPermission('bookshelf-create-all'); + $this->checkPermission('book-create-all'); + + $shelf = $transformer->transformBookToShelf($book); + + return redirect($shelf->getUrl()); + } }