diff --git a/app/Http/Controllers/DigitalPublicationsController.php b/app/Http/Controllers/DigitalPublicationsController.php index c6109fd2f..f7a8eb55c 100644 --- a/app/Http/Controllers/DigitalPublicationsController.php +++ b/app/Http/Controllers/DigitalPublicationsController.php @@ -37,6 +37,16 @@ public function index(Request $request) } public function show($id) + { + return $this->showDetail($id); + } + + public function showListing($id) + { + return $this->showDetail($id, true); + } + + private function showDetail($id, $showAll = false) { $item = $this->repository->published()->find((int) $id); @@ -48,7 +58,7 @@ public function show($id) abort(404); } - $canonicalPath = $item->present()->getCanonicalUrl(); + $canonicalPath = $item->present()->getCanonicalUrl() . ($showAll ? '/content' : ''); if ($canonicalRedirect = $this->getCanonicalRedirect($canonicalPath)) { return $canonicalRedirect; @@ -69,6 +79,7 @@ public function show($id) 'unstickyHeader' => true, 'canonicalUrl' => $canonicalPath, 'welcomeNote' => $this->repository->getWelcomeNote($item), + 'showAll' => $showAll, ]); } diff --git a/app/Presenters/Admin/DigitalPublicationArticlePresenter.php b/app/Presenters/Admin/DigitalPublicationArticlePresenter.php index b77991986..f80ddb8ce 100644 --- a/app/Presenters/Admin/DigitalPublicationArticlePresenter.php +++ b/app/Presenters/Admin/DigitalPublicationArticlePresenter.php @@ -2,6 +2,7 @@ namespace App\Presenters\Admin; +use Illuminate\Support\Str; use App\Presenters\BasePresenter; class DigitalPublicationArticlePresenter extends BasePresenter @@ -37,6 +38,25 @@ public function getArticleUrl($digitalPublication, $article = null) ]); } + public function getBrowseMoreLink($showAll = false) + { + if ($this->entity->children->count() > 0 && !$showAll) { + return [ + [ + 'label' => 'Browse all ' . $this->entity->children->count() . ' ' . $this->entity->title, + 'href' => route( + 'collection.publications.digital-publications.showListing', + [ + 'id' => $this->entity->digitalPublication->id, + 'slug' => $this->entity->digitalPublication->getSlug() + ] + ) . '#' . Str::kebab($this->entity->title) + ] + ]; + } + return ''; + } + public function references() { if (empty($this->entity->references)) { diff --git a/frontend/scss/pages/_p-issue-show.scss b/frontend/scss/pages/_p-issue-show.scss index 88da24dba..c1bd14bca 100644 --- a/frontend/scss/pages/_p-issue-show.scss +++ b/frontend/scss/pages/_p-issue-show.scss @@ -1,7 +1,8 @@ // This file contains styles for both journal issues and magazine issues .p-magazineissue-show, .p-magazineissue-latest, -.p-digitalpublications-show { +.p-digitalpublications-show, +.p-digitalpublications-showlisting { @extend %sticky-sidebar; .o-article__body { @@ -62,7 +63,8 @@ } } -.p-digitalpublications-show { +.p-digitalpublications-show, +.p-digitalpublications-showlisting { .o-article__body { margin-top: 40px; } diff --git a/resources/views/components/organisms/_o-table-of-contents.blade.php b/resources/views/components/organisms/_o-table-of-contents.blade.php index 25b959979..4f2763421 100644 --- a/resources/views/components/organisms/_o-table-of-contents.blade.php +++ b/resources/views/components/organisms/_o-table-of-contents.blade.php @@ -2,7 +2,7 @@ @foreach ($items as $item) @if (count($item->children) > 0)