diff --git a/app/Entities/Repos/EntityRepo.php b/app/Entities/Repos/EntityRepo.php new file mode 100644 index 000000000..e69de29bb diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index bddfe3f6d..2213dedba 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -114,6 +114,7 @@ class BookController extends Controller { $book = $this->bookRepo->getBySlug($slug); $bookChildren = (new BookContents($book))->getTree(true); + $bookParentShelves = $book->shelves()->visible(); Views::add($book); if ($request->has('shelf')) { @@ -125,6 +126,7 @@ class BookController extends Controller 'book' => $book, 'current' => $book, 'bookChildren' => $bookChildren, + 'bookParentShelves' => $bookParentShelves, 'activity' => Activity::entityActivity($book, 20, 1) ]); } diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php index 6bbc723b0..79e640378 100644 --- a/resources/lang/en/entities.php +++ b/resources/lang/en/entities.php @@ -135,6 +135,7 @@ return [ 'books_sort_chapters_last' => 'Chapters Last', 'books_sort_show_other' => 'Show Other Books', 'books_sort_save' => 'Save New Order', + 'book_parent_shelves_empty' => 'Shelves that this book is on will appear here.', // Chapters 'chapter' => 'Chapter', diff --git a/resources/views/books/show.blade.php b/resources/views/books/show.blade.php index cbafdb436..41581e123 100644 --- a/resources/views/books/show.blade.php +++ b/resources/views/books/show.blade.php @@ -57,9 +57,7 @@ @stop - @section('right') -
{{ trans('common.details') }}
-
{{ trans('common.actions') }}
@@ -125,6 +122,16 @@
+
+
{{ trans('entities.shelves_long') }}
+ + @if(count($bookParentShelves) > 0) + @include('partials.entity-list', ['entities' => $bookParentShelves, 'style' => 'compact']) + @else +
{{ trans('entities.book_parent_shelves_empty') }}
+ @endif +
+ @stop @section('left') diff --git a/tests/Entity/BookShelfTest.php b/tests/Entity/BookShelfTest.php index f3d29f60c..8f41e83ab 100644 --- a/tests/Entity/BookShelfTest.php +++ b/tests/Entity/BookShelfTest.php @@ -264,4 +264,32 @@ class BookShelfTest extends TestCase $pageVisit->assertElementNotContains('.breadcrumbs', $shelf->getShortName()); } + public function test_bookshelves_show_on_book() + { + // Create shelf + $shelfInfo = [ + 'name' => 'My test shelf' . Str::random(4), + 'description' => 'Test shelf description ' . Str::random(10) + ]; + + $this->asEditor()->post('/shelves', $shelfInfo); + $shelf = Bookshelf::where('name', '=', $shelfInfo['name'])->first(); + + // Create book and add to shelf + $this->asEditor()->post($shelf->getUrl('/create-book'), [ + 'name' => 'Test book name', + 'description' => 'Book in shelf description' + ]); + + $newBook = Book::query()->orderBy('id', 'desc')->first(); + + $resp = $this->asEditor()->get($newBook->getUrl()); + $resp->assertSee($shelfInfo['name']); + + // Remove shelf + $this->delete($shelf->getUrl()); + + $resp = $this->asEditor()->get($newBook->getUrl()); + $resp->assertDontSee($shelfInfo['name']); + } }