3 namespace BookStack\References;
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\Entities\Queries\EntityQueries;
10 use BookStack\Http\Controller;
12 class ReferenceController extends Controller
14 public function __construct(
15 protected ReferenceFetcher $referenceFetcher,
16 protected EntityQueries $queries,
21 * Display the references to a given page.
23 public function page(string $bookSlug, string $pageSlug)
25 $page = $this->queries->pages->findVisibleBySlugsOrFail($bookSlug, $pageSlug);
26 $references = $this->referenceFetcher->getReferencesToEntity($page);
28 return view('pages.references', [
30 'references' => $references,
35 * Display the references to a given chapter.
37 public function chapter(string $bookSlug, string $chapterSlug)
39 $chapter = $this->queries->chapters->findVisibleBySlugsOrFail($bookSlug, $chapterSlug);
40 $references = $this->referenceFetcher->getReferencesToEntity($chapter);
42 return view('chapters.references', [
43 'chapter' => $chapter,
44 'references' => $references,
49 * Display the references to a given book.
51 public function book(string $slug)
53 $book = $this->queries->books->findVisibleBySlugOrFail($slug);
54 $references = $this->referenceFetcher->getReferencesToEntity($book);
56 return view('books.references', [
58 'references' => $references,
63 * Display the references to a given shelf.
65 public function shelf(string $slug)
67 $shelf = $this->queries->shelves->findVisibleBySlugOrFail($slug);
68 $references = $this->referenceFetcher->getReferencesToEntity($shelf);
70 return view('shelves.references', [
72 'references' => $references,