2022-08-19 20:14:43 +08:00
|
|
|
<?php
|
|
|
|
|
2023-05-18 00:56:55 +08:00
|
|
|
namespace BookStack\References;
|
2022-08-19 20:14:43 +08:00
|
|
|
|
2024-02-08 00:37:36 +08:00
|
|
|
use BookStack\Entities\Queries\EntityQueries;
|
2023-05-19 03:53:39 +08:00
|
|
|
use BookStack\Http\Controller;
|
2022-08-19 20:14:43 +08:00
|
|
|
|
|
|
|
class ReferenceController extends Controller
|
|
|
|
{
|
2023-12-19 00:23:40 +08:00
|
|
|
public function __construct(
|
2024-02-08 00:37:36 +08:00
|
|
|
protected ReferenceFetcher $referenceFetcher,
|
|
|
|
protected EntityQueries $queries,
|
2023-12-19 00:23:40 +08:00
|
|
|
) {
|
2022-08-19 20:14:43 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Display the references to a given page.
|
|
|
|
*/
|
|
|
|
public function page(string $bookSlug, string $pageSlug)
|
|
|
|
{
|
2024-02-08 00:37:36 +08:00
|
|
|
$page = $this->queries->pages->findVisibleBySlugsOrFail($bookSlug, $pageSlug);
|
2023-12-19 00:23:40 +08:00
|
|
|
$references = $this->referenceFetcher->getReferencesToEntity($page);
|
2022-08-19 20:14:43 +08:00
|
|
|
|
2022-08-20 05:40:44 +08:00
|
|
|
return view('pages.references', [
|
2022-08-30 00:46:41 +08:00
|
|
|
'page' => $page,
|
2022-08-20 05:40:44 +08:00
|
|
|
'references' => $references,
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Display the references to a given chapter.
|
|
|
|
*/
|
|
|
|
public function chapter(string $bookSlug, string $chapterSlug)
|
|
|
|
{
|
2024-02-08 00:37:36 +08:00
|
|
|
$chapter = $this->queries->chapters->findVisibleBySlugsOrFail($bookSlug, $chapterSlug);
|
2023-12-19 00:23:40 +08:00
|
|
|
$references = $this->referenceFetcher->getReferencesToEntity($chapter);
|
2022-08-20 05:40:44 +08:00
|
|
|
|
|
|
|
return view('chapters.references', [
|
2022-08-30 00:46:41 +08:00
|
|
|
'chapter' => $chapter,
|
2022-08-20 05:40:44 +08:00
|
|
|
'references' => $references,
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Display the references to a given book.
|
|
|
|
*/
|
|
|
|
public function book(string $slug)
|
|
|
|
{
|
2024-02-08 00:37:36 +08:00
|
|
|
$book = $this->queries->books->findVisibleBySlugOrFail($slug);
|
2023-12-19 00:23:40 +08:00
|
|
|
$references = $this->referenceFetcher->getReferencesToEntity($book);
|
2022-08-20 05:40:44 +08:00
|
|
|
|
|
|
|
return view('books.references', [
|
2022-08-30 00:46:41 +08:00
|
|
|
'book' => $book,
|
2022-08-20 05:40:44 +08:00
|
|
|
'references' => $references,
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Display the references to a given shelf.
|
|
|
|
*/
|
|
|
|
public function shelf(string $slug)
|
|
|
|
{
|
2024-02-08 00:37:36 +08:00
|
|
|
$shelf = $this->queries->shelves->findVisibleBySlugOrFail($slug);
|
2023-12-19 00:23:40 +08:00
|
|
|
$references = $this->referenceFetcher->getReferencesToEntity($shelf);
|
2022-08-20 05:40:44 +08:00
|
|
|
|
|
|
|
return view('shelves.references', [
|
2022-08-30 00:46:41 +08:00
|
|
|
'shelf' => $shelf,
|
2022-08-20 05:40:44 +08:00
|
|
|
'references' => $references,
|
|
|
|
]);
|
|
|
|
}
|
2022-08-19 20:14:43 +08:00
|
|
|
}
|