From 17b864ae06d454e728d359d6e50240115bed8d04 Mon Sep 17 00:00:00 2001 From: nikhil trivedi Date: Fri, 12 Jul 2024 16:55:41 -0500 Subject: [PATCH] Add listing page for digital publications [PUB-205] --- .../DigitalPublicationsController.php | 13 ++++++++- frontend/scss/pages/_p-issue-show.scss | 6 ++-- .../site/digitalPublicationDetail.blade.php | 29 +++++++++++++++++-- routes/web.php | 2 +- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/DigitalPublicationsController.php b/app/Http/Controllers/DigitalPublicationsController.php index c6109fd2f8..f7a8eb55cc 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/frontend/scss/pages/_p-issue-show.scss b/frontend/scss/pages/_p-issue-show.scss index 88da24dbaa..c1bd14bca7 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/site/digitalPublicationDetail.blade.php b/resources/views/site/digitalPublicationDetail.blade.php index 52cd71a4c6..cdd36794ab 100644 --- a/resources/views/site/digitalPublicationDetail.blade.php +++ b/resources/views/site/digitalPublicationDetail.blade.php @@ -45,18 +45,18 @@ @component('components.molecules._m-title-bar', [ 'variation' => 'm-title-bar--compact m-title-bar--light', ]) - @slot('links', $topLevelArticle->children->count() > 0 ? ([['label' => 'Browse all '. $topLevelArticle->children->count(). ' '. $topLevelArticle->title, 'href' => route('collection.publications.digital-publications.showListing', ['id' => $item->id, 'slug' => $item->getSlug()]) . '#' . Str::kebab($topLevelArticle->title)]]) : '') + @slot('links', $topLevelArticle->children->count() > 0 && !$showAll ? ([['label' => 'Browse all '. $topLevelArticle->children->count(). ' '. $topLevelArticle->title, 'href' => route('collection.publications.digital-publications.showListing', ['id' => $item->id, 'slug' => $item->getSlug()]) . '#' . Str::kebab($topLevelArticle->title)]]) : '') {!! $topLevelArticle->title !!} @endcomponent @component('components.organisms._o-grid-listing') - @slot('variation', 'o-grid-listing--single-row o-grid-listing--scroll@xsmall o-grid-listing--scroll@small o-grid-listing--scroll@medium o-grid-listing--gridlines-cols') + @slot('variation', 'o-grid-listing--gridlines-cols o-grid-listing--gridlines-rows') @slot('cols_medium','3') @slot('cols_large','4') @slot('cols_xlarge','4') @foreach ($topLevelArticle->children as $article) - @if ($loop->iteration <= 3) + @if ($loop->iteration <= 3 || $showAll == true) @component('components.molecules._m-listing----article') @slot('imgVariation','') @slot('item', $article) @@ -75,6 +75,29 @@ )), )) @endcomponent + + + {{-- @component('components.molecules._m-listing----grid-item') + @slot('url', route('collection.publications.digital-publications-articles.show', ['pubId' => $item->id, 'pubSlug' => $item->getSlug(), 'id' => $article->id, 'slug' => $article->getSlug()])) + @slot('image', $article->imageAsArray('image', 'desktop')) + @slot('label', 'hello fix me') + @slot('labelPosition', 'description') + @slot('title', $article->title) + @slot('tag', 'tag tag tag') + @slot('description', $article->grouping_description ?? $article->list_description) + @slot('imageSettings', array( + 'fit' => 'crop', + 'ratio' => '16:9', + 'srcset' => array(200,400,600), + 'sizes' => ImageHelpers::aic_imageSizes(array( + 'xsmall' => '216px', + 'small' => '216px', + 'medium' => '18', + 'large' => '13', + 'xlarge' => '13', + )), + )) + @endcomponent --}} @endif @endforeach @endcomponent diff --git a/routes/web.php b/routes/web.php index 377adce2d7..927a96ab4f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -83,7 +83,7 @@ // Collection Publications Digital Publications Route::get('/digital-publications', [DigitalPublicationsController::class, 'index'])->name('collection.publications.digital-publications'); Route::get('/digital-publications/{id}/{slug?}', [DigitalPublicationsController::class, 'show'])->name('collection.publications.digital-publications.show'); -Route::get('/digital-publications/{id}/{slug?}/content', [DigitalPublicationsController::class, 'show'])->name('collection.publications.digital-publications.showListing'); +Route::get('/digital-publications/{id}/{slug?}/content', [DigitalPublicationsController::class, 'showListing'])->name('collection.publications.digital-publications.showListing'); Route::get('/digital-publications/{pubId}/{pubSlug}/{id}/{slug?}', [DigitalPublicationArticleController::class, 'show'])->name('collection.publications.digital-publications-articles.show'); // Collection Research