X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/3ed1ffdbeb043431788c87f761cabda52fd379db..refs/pull/4002/head:/app/Http/Controllers/BookController.php diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index c5b6d0bf6..14c3af1cc 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -10,41 +10,47 @@ 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; class BookController extends Controller { - protected $bookRepo; - protected $entityContextManager; + protected BookRepo $bookRepo; + protected ShelfContext $shelfContext; + protected ReferenceFetcher $referenceFetcher; - public function __construct(ShelfContext $entityContextManager, BookRepo $bookRepo) + public function __construct(ShelfContext $entityContextManager, BookRepo $bookRepo, ReferenceFetcher $referenceFetcher) { $this->bookRepo = $bookRepo; - $this->entityContextManager = $entityContextManager; + $this->shelfContext = $entityContextManager; + $this->referenceFetcher = $referenceFetcher; } /** * 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); - $this->entityContextManager->clearShelfContext(); + $this->shelfContext->clearShelfContext(); $this->setPageTitle(trans('entities.books')); @@ -54,8 +60,7 @@ class BookController extends Controller 'popular' => $popular, 'new' => $new, 'view' => $view, - 'sort' => $sort, - 'order' => $order, + 'listOptions' => $listOptions, ]); } @@ -122,7 +127,7 @@ class BookController extends Controller View::incrementFor($book); if ($request->has('shelf')) { - $this->entityContextManager->setShelfContext(intval($request->get('shelf'))); + $this->shelfContext->setShelfContext(intval($request->get('shelf'))); } $this->setPageTitle($book->getShortName()); @@ -133,6 +138,7 @@ class BookController extends Controller 'bookChildren' => $bookChildren, 'bookParentShelves' => $bookParentShelves, 'activity' => $activities->entityActivity($book, 20, 1), + 'referenceCount' => $this->referenceFetcher->getPageReferenceCountToEntity($book), ]); } @@ -143,7 +149,7 @@ class BookController extends Controller { $book = $this->bookRepo->getBySlug($slug); $this->checkOwnablePermission('book-update', $book); - $this->setPageTitle(trans('entities.books_edit_named', ['bookName'=>$book->getShortName()])); + $this->setPageTitle(trans('entities.books_edit_named', ['bookName' => $book->getShortName()])); return view('books.edit', ['book' => $book, 'current' => $book]); } @@ -205,36 +211,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. *