3 namespace BookStack\Http\Controllers;
5 use BookStack\Entities\Models\Book;
6 use BookStack\Entities\Models\Bookshelf;
7 use BookStack\Entities\Models\Chapter;
8 use BookStack\Entities\Models\Page;
9 use BookStack\References\ReferenceFetcher;
11 class ReferenceController extends Controller
13 protected ReferenceFetcher $referenceFetcher;
15 public function __construct(ReferenceFetcher $referenceFetcher)
17 $this->referenceFetcher = $referenceFetcher;
21 * Display the references to a given page.
23 public function page(string $bookSlug, string $pageSlug)
25 /** @var Page $page */
26 $page = Page::visible()->whereSlugs($bookSlug, $pageSlug)->firstOrFail();
27 $references = $this->referenceFetcher->getPageReferencesToEntity($page);
29 return view('pages.references', [
31 'references' => $references,
36 * Display the references to a given chapter.
38 public function chapter(string $bookSlug, string $chapterSlug)
40 /** @var Chapter $chapter */
41 $chapter = Chapter::visible()->whereSlugs($bookSlug, $chapterSlug)->firstOrFail();
42 $references = $this->referenceFetcher->getPageReferencesToEntity($chapter);
44 return view('chapters.references', [
45 'chapter' => $chapter,
46 'references' => $references,
51 * Display the references to a given book.
53 public function book(string $slug)
55 $book = Book::visible()->where('slug', '=', $slug)->firstOrFail();
56 $references = $this->referenceFetcher->getPageReferencesToEntity($book);
58 return view('books.references', [
60 'references' => $references,
65 * Display the references to a given shelf.
67 public function shelf(string $slug)
69 $shelf = Bookshelf::visible()->where('slug', '=', $slug)->firstOrFail();
70 $references = $this->referenceFetcher->getPageReferencesToEntity($shelf);
72 return view('shelves.references', [
74 'references' => $references,