From 63eb54f609a4dd3b7be7f6a4b31fa4e065a04e57 Mon Sep 17 00:00:00 2001 From: Mischa Spelt Date: Wed, 18 Aug 2021 22:53:10 +0200 Subject: [PATCH] Podcastpagina --- app/Http/Controllers/PodcastController.php | 42 ++++++++++ .../partial/podcastdirectitems.blade.php | 32 ++++++++ resources/views/podcastseries.blade.php | 81 +++++++++++++++++++ resources/views/widgets/menu.blade.php | 2 +- routes/web.php | 10 +++ 5 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/PodcastController.php create mode 100644 resources/views/partial/podcastdirectitems.blade.php create mode 100644 resources/views/podcastseries.blade.php diff --git a/app/Http/Controllers/PodcastController.php b/app/Http/Controllers/PodcastController.php new file mode 100644 index 00000000..50ecd49e --- /dev/null +++ b/app/Http/Controllers/PodcastController.php @@ -0,0 +1,42 @@ + 0) { + $action = 'programma/' . (int)$programma; + $viewData['program'] = new \Model\Program($this->API('programma/details/' . (int)$programma)); + } + + return $this->getPodcastList($request, $action, $viewData); + } + + private function getPodcastList(Request $request, $action, $viewData = []) + { + $page = (int)$request->get('pagina', 1); + $apiResult = $this->API('podcast/' . $action . '?pagina=' . (int)max(1, $page) . '&aantal=100'); + $podcasts = []; + foreach($apiResult->podcasts as $podcast) + { + $podcasts[] = new \Model\Podcast($podcast); + } + + return view($request->ajax() ? 'partial.podcastitems' : 'podcastseries', array_merge($viewData, ['podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken'])); + } + + public function podcast(Request $request, $id) + { + parent::registerView($request, 'podcast', $id); + $apiResult = $this->API('podcast/details/' . (int)$id); + $podcast = new \Model\Podcast($apiResult); + return view('podcastitem', ['podcast' => $podcast, 'metadata' => $podcast->metadata]); + } +} diff --git a/resources/views/partial/podcastdirectitems.blade.php b/resources/views/partial/podcastdirectitems.blade.php new file mode 100644 index 00000000..d0ed0da8 --- /dev/null +++ b/resources/views/partial/podcastdirectitems.blade.php @@ -0,0 +1,32 @@ + diff --git a/resources/views/podcastseries.blade.php b/resources/views/podcastseries.blade.php new file mode 100644 index 00000000..065eb8ef --- /dev/null +++ b/resources/views/podcastseries.blade.php @@ -0,0 +1,81 @@ +@extends('layouts/sidebar') + +@section('title') + Fragment gemist +@endsection + +@section('content') + @parent + + @if(isset($program)) +

{{$program->name}}

+

+ {!! $program->description !!} +

+ @endif + + @if($podcasts) + +
+
+ @include('partial.podcastdirectitems', ['podcasts' => $podcasts]) +
+
+ + + + @push('scripts') + + @endpush + @else + +

Er zijn geen fragmenten beschikbaar.

+ + @endif + +@endsection + +@push('styles') + +@endpush diff --git a/resources/views/widgets/menu.blade.php b/resources/views/widgets/menu.blade.php index 6c21f71e..bb446a4f 100644 --- a/resources/views/widgets/menu.blade.php +++ b/resources/views/widgets/menu.blade.php @@ -14,7 +14,7 @@ // "24 uur Scherp de Zeis (4 december)" => "/programma/1030/scherp-zeis", // "Vroeger of Later Luisterlijst (21 december)" => "/vol-luisterlijst"), "Podcast" => array( - "Duurzaam Gooi" => "/gemist/programma/1076/podcast-duurzaam-gooi"), + "Duurzaam Gooi" => "/podcast/1076/podcast-duurzaam-gooi"), "Regioagenda" => "/agenda", "Over ons" => array( "" => "/contact", diff --git a/routes/web.php b/routes/web.php index c359b3bd..65cde744 100644 --- a/routes/web.php +++ b/routes/web.php @@ -60,6 +60,16 @@ Route::get('/gemist/fragment/{id}/{title}', 'RadioController@podcast')->where([' Route::get('/gemist/programma', 'RadioController@terugluisteren')->name('gemist.programma'); Route::get('/gemist/programma/{programma}/{title}', 'RadioController@podcasts')->where(['programma' => '\d+']); +Route::get('/podcast/{programma}/{title}', 'PodcastController@podcasts')->where(['programma' => '\d+']); +Route::get('/podcast/aflevering/{id}/{title}', 'PodcastController@podcast')->where(['id' => '\d+']); +Route::get('/podcast/zoeken/{query}', 'RadioController@searchpodcast')->name('gemist.zoeken'); +Route::get('/podcast/zoeken', function(Illuminate\Http\Request $request) { + if($query = $request->get('query', null)) { + return redirect('/podcast/zoeken/' . urlencode($query)); + } + return redirect('/podcast'); +}); + Route::get('/kijk/live', 'StreamController@livetv')->name('kijk.live'); Route::get('/kijk/studio', 'StreamController@studio')->name('kijk.studio');