X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/75d6b56072df60dc6463ee025a4003b4c3418c5a..refs/pull/3918/head:/app/Http/Controllers/BookController.php diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index cc2f6f534..9d8db27e9 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -6,16 +6,17 @@ use BookStack\Actions\ActivityQueries; use BookStack\Actions\ActivityType; use BookStack\Actions\View; use BookStack\Entities\Models\Bookshelf; +use BookStack\Entities\Models\Page; 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; use BookStack\Exceptions\NotFoundException; use BookStack\Facades\Activity; use BookStack\References\ReferenceFetcher; +use BookStack\Util\SimpleListOptions; use Illuminate\Http\Request; use Illuminate\Validation\ValidationException; use Throwable; @@ -36,13 +37,16 @@ class BookController extends Controller /** * Display a listing of the book. */ - public function index() + public function index(Request $request) { $view = setting()->getForCurrentUser('books_view_type'); - $sort = setting()->getForCurrentUser('books_sort', 'name'); - $order = setting()->getForCurrentUser('books_sort_order', 'asc'); + $listOptions = SimpleListOptions::fromRequest($request, 'books')->withSortOptions([ + 'name' => trans('common.sort_name'), + 'created_at' => trans('common.sort_created_at'), + 'updated_at' => trans('common.sort_updated_at'), + ]); - $books = $this->bookRepo->getAllPaginated(18, $sort, $order); + $books = $this->bookRepo->getAllPaginated(18, $listOptions->getSort(), $listOptions->getOrder()); $recents = $this->isSignedIn() ? $this->bookRepo->getRecentlyViewed(4) : false; $popular = $this->bookRepo->getPopular(4); $new = $this->bookRepo->getRecentlyCreated(4); @@ -57,8 +61,7 @@ class BookController extends Controller 'popular' => $popular, 'new' => $new, 'view' => $view, - 'sort' => $sort, - 'order' => $order, + 'listOptions' => $listOptions, ]); } @@ -77,8 +80,14 @@ class BookController extends Controller $this->setPageTitle(trans('entities.books_create')); + $templates = Page::visible() + ->where('template', '=', true) + ->orderBy('name', 'asc') + ->get(); + return view('books.create', [ 'bookshelf' => $bookshelf, + 'templates' => $templates, ]); } @@ -96,6 +105,7 @@ class BookController extends Controller 'description' => ['string', 'max:1000'], 'image' => array_merge(['nullable'], $this->getImageValidationRules()), 'tags' => ['array'], + 'default_template' => ['nullable', 'exists:pages,id'], ]); $bookshelf = null; @@ -149,7 +159,12 @@ class BookController extends Controller $this->checkOwnablePermission('book-update', $book); $this->setPageTitle(trans('entities.books_edit_named', ['bookName' => $book->getShortName()])); - return view('books.edit', ['book' => $book, 'current' => $book]); + $templates = Page::visible() + ->where('template', '=', true) + ->orderBy('name', 'asc') + ->get(); + + return view('books.edit', ['book' => $book, 'current' => $book, 'templates' => $templates]); } /** @@ -169,6 +184,7 @@ class BookController extends Controller 'description' => ['string', 'max:1000'], 'image' => array_merge(['nullable'], $this->getImageValidationRules()), 'tags' => ['array'], + 'default_template' => ['nullable', 'exists:pages,id'], ]); if ($request->has('image_reset')) { @@ -209,36 +225,6 @@ class BookController extends Controller return redirect('/books'); } - /** - * Show the permissions view. - */ - public function showPermissions(string $bookSlug) - { - $book = $this->bookRepo->getBySlug($bookSlug); - $this->checkOwnablePermission('restrictions-manage', $book); - - return view('books.permissions', [ - 'book' => $book, - ]); - } - - /** - * Set the restrictions for this book. - * - * @throws Throwable - */ - public function permissions(Request $request, PermissionsUpdater $permissionsUpdater, string $bookSlug) - { - $book = $this->bookRepo->getBySlug($bookSlug); - $this->checkOwnablePermission('restrictions-manage', $book); - - $permissionsUpdater->updateFromPermissionsForm($book, $request); - - $this->showSuccessNotification(trans('entities.books_permissions_updated')); - - return redirect($book->getUrl()); - } - /** * Show the view to copy a book. *