diff --git a/app/Http/Controllers/CalendarController.php b/app/Http/Controllers/CalendarController.php index 47749224..ffb32f65 100644 --- a/app/Http/Controllers/CalendarController.php +++ b/app/Http/Controllers/CalendarController.php @@ -6,56 +6,10 @@ use \Illuminate\Http\Request; class CalendarController extends Controller { - private $events = [ - 1 => [ - 'id' => 1, - 'title' => 'Seinconcert Hilversum', - 'region' => 'Hilversum', - 'content' => 'Vrijdag 19 april treedt het Barbican Quartet op in de serie Seinconcerten in Hilversum. Op het programma staan werken van Schubert, Ravel en Britten.', - 'starts' => '16-04-2024', - 'ends' => '19-04-2024', - 'url' => 'seinconcert-hilversum', - 'images' => [ - ['url' => '/img/news/rHjgm6CM0D.jpg'] - ] - ], - 2 => [ - 'id' => 2, - 'title' => 'Orgelconcert Blaricum', - 'region' => 'Blaricum', - 'content' => '

In april van dit jaar bestaat het Maarschalkerweerd orgel van de Vituskerk in Blaricum 150 jaar. Ter gelegenheid hiervan is er op zondag 21 april van 14.00 – 15.00 uur een orgelconcert in de Vituskerk. De vaste organisten van de Vituskerk, Bas Groenewoud en Herman van Dijk, zullen het orgel bespelen en er zal iets worden verteld over de geschiedenis van het orgel.

Het orgel is in 1874 gebouw door Michaël Maarschalkerweerd. Hij bouwde orgels die in de traditie van de neogotiek passen en zijn orgels zijn zeer geschikt voor het spelen van 19e-eeuwse romantische werken. Het orgel in het Amsterdamse concertgebouw is ook van zijn hand. In zijn bedrijf werkten rond 1900 ruim twintig mensen. Na Michaels dood in 1915 werd het bedrijf voortgezet door C.H. van Brussel, J.J. Elbertse en L. Collard, die tot dan toe meesterknechten geweest waren. Elbertse verliet de firma na twee jaar om zijn eigen orgelmakerij op te richten. De firma Elbertse uit Soest heeft jarenlang dit orgel in onderhoud gehad (de tweede én derde generatie trad toe).

In 2023 fuseerde het bedrijf met de firma Van Vulpen. Het orgel in de Vituskerk was oorspronkelijk gebouwd op de koorzolder maar tijdens de grondige verbouwing van de kerk in 2004 werd het orgel naar beneden gehaald zodat het in al zijn pracht te bewonderen is en ook nodig is om dienst te doen als ondersteuning van het koor. Afgelopen jaar is het orgel in de Vituskerk grondig gerenoveerd.

Het concert begint om 14:00 uur en de entree is vrij. Collecte na afloop.

', - 'starts' => '21-04-2024', - 'ends' => '21-04-2024', - 'url' => 'orgelconcert-blaricum', - 'images' => [ - ['url' => '/img/news/tgrOh0kbIS.jpg'] - ] - ], - ]; - - public function __construct() - { - parent::__construct(); - - $events = []; - foreach ($this->events as $index => $event) { - $object = new \stdClass(); - foreach ($event as $key => $value) { - $object->$key = $value; - } - $events[$index] = $object; - } - $this->events = $events; - } - public function show(Request $request, $id) { parent::registerView($request, 'agenda', $id); - if ($id > 3) { - $apiResult = $this->API('agenda/item/' . (int)$id); - } else { - $apiResult = $this->events[$id]; - } + $apiResult = $this->API('agenda/item/' . (int)$id); $calendarEvent = new \Model\CalendarEvent($apiResult); return view('calendarevent', array_merge($this->getSidebareData(), ['event' => $calendarEvent, 'metadata' => $calendarEvent->metadata])); @@ -64,11 +18,8 @@ class CalendarController extends Controller public function overview(Request $request) { $apiResult = $this->API('agenda/overzicht'); - if (!count($apiResult)) { - $apiResult = $this->events; - } $calendar = []; - foreach($apiResult as $calendarItem) + foreach($apiResult->events as $calendarItem) { $calendar[] = new \Model\CalendarEvent($calendarItem); } diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 58237b3c..398b135a 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -22,14 +22,14 @@ class Controller extends BaseController $data = json_decode(Storage::disk('local')->get($file)); foreach ($path as $subobject) { $data = $data->$subobject; - } + } $items = []; foreach ($data as $item_data) { $items[] = new $class($item_data); if ($maxItems && count($items) == $maxItems) { break; } - } + } return $items; } @@ -49,17 +49,15 @@ class Controller extends BaseController $view->with('data', $this->getDataFromFileAndConvert('laatste_nieuws.json', ['news'], '\Model\NewsItem')); }); View::composer('widgets.populairnieuws', function ($view) { - $view->with('data', $this->getDataFromFileAndConvert('populair_nieuws.json', [], '\Model\NewsItem')); + $view->with('data', $this->getDataFromFileAndConvert('populair_nieuws.json', ['news'], '\Model\NewsItem')); }); View::composer('widgets.nustraks', function ($view) { $data = json_decode(Storage::disk('local')->get('nu_straks.json'))->schedule; $programs = []; foreach ($data as $item_data) { $programs[] = $program = new \Model\Program($item_data->program); - $program->start = new \DateTimeImmutable($item_data->start->date, - new \DateTimeZone($item_data->start->timezone)); - $program->end = new \DateTimeImmutable($item_data->end->date, - new \DateTimeZone($item_data->end->timezone)); + $program->start = self::JsonToDateTime($item_data->start); + $program->end = self::JsonToDateTime($item_data->end); } // Need a bit of slack here, otherwise the current program may show up @@ -68,10 +66,8 @@ class Controller extends BaseController $i = 0; foreach (array_reverse($data) as $item_data) { $recent = $program = new \Model\Program($item_data->program); - $recent->start = new \DateTimeImmutable($item_data->start->date, - new \DateTimeZone($item_data->start->timezone)); - $recent->end = new \DateTimeImmutable($item_data->end->date, - new \DateTimeZone($item_data->end->timezone)); + $recent->start = self::JsonToDateTime($item_data->start); + $recent->end = self::JsonToDateTime($item_data->end); if (($recent->end < $now) && (!$recent->nonstop) && (!$recent->rerun)) { $view->with('recent', $recent); break; @@ -92,7 +88,7 @@ class Controller extends BaseController }); View::composer('widgets.menu', function ($view) { $view->with('news', $this->getDataFromFileAndConvert('laatste_nieuws.json', ['news'], '\Model\NewsItem')) - ->with('popular', $this->getDataFromFileAndConvert('populair_nieuws.json', [], '\Model\NewsItem', 3)) + ->with('popular', $this->getDataFromFileAndConvert('populair_nieuws.json', ['news'], '\Model\NewsItem', 3)) ->with('podcasts', $this->getDataFromFileAndConvert('laatste_podcasts.json', ['podcasts'], '\Model\Podcast')); }); @@ -118,16 +114,16 @@ class Controller extends BaseController protected function API($url) { -// if (strpos($url, 'nieuws/overzicht') !== false) { -// return json_decode(file_get_contents(__DIR__ . '/../../../storage/app/laatste_nieuws.json')); -// } -// return []; - $arrContextOptions = [ 'ssl' => [ "verify_peer" => false, "verify_peer_name" => false, - ], + ], + 'http' => [ + 'method' => 'GET', + 'header' => 'X-Api-Key: ' . sha1(request()->server('REMOTE_ADDR')) . "\r\n" + . 'X-User-Agent: ' . request()->server('HTTP_USER_AGENT') . "\r\n" + ] ]; return json_decode(file_get_contents($this->API_URL . $url, false, stream_context_create($arrContextOptions))); @@ -148,7 +144,7 @@ class Controller extends BaseController protected static function JsonToDateTime($obj) { - return new \DateTime($obj->date, new \DateTimeZone($obj->timezone)); + return is_object($obj) ? new \DateTime($obj->date, new \DateTimeZone($obj->timezone)) : \Carbon\Carbon::parse($obj)->setTimezone(date_default_timezone_get()); } public function __call($method, $arguments) @@ -166,8 +162,8 @@ class Controller extends BaseController public function getSidebareData() { $populair = []; - $apiResult = $this->API('nieuws/populair?aantal=5'); - foreach ($apiResult as $_newsItem) { + $apiResult = $this->API('nieuws/populair?aantal=5'); + foreach ($apiResult->news as $_newsItem) { $populair[] = new \Model\NewsItem($_newsItem); } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index e196ebe9..668adff1 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -18,17 +18,13 @@ class HomeController extends Controller $populair = []; $apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5'); - foreach ($apiResult as $newsItem) { + foreach ($apiResult->news as $newsItem) { $populair[] = new \Model\NewsItem($newsItem); } - $podcasts = []; - $apiResult = $this->API('podcast/overzicht?aantal=3'); - $podcast = new \Model\Podcast($apiResult->podcasts[0]); - foreach ($apiResult->podcasts as $_podcast) { - $podcasts[] = new \Model\Podcast($_podcast); - } - - return view('home', ['populair' => $populair, 'podcasts' => $podcasts, 'podcast' => $podcast, 'title' => 'Home', 'news' => $news, 'searchURL' => 'nieuws/zoeken']); + $apiResult = $this->API('podcast/overzicht?aantal=15'); + $index = array_rand($apiResult->podcasts); + $podcast = new \Model\Podcast($apiResult->podcasts[$index]); + return view('home', ['populair' => $populair, 'podcast' => $podcast, 'title' => 'Home', 'news' => $news, 'searchURL' => 'nieuws/zoeken']); } } diff --git a/app/Http/Controllers/JobsController.php b/app/Http/Controllers/JobsController.php index d2a8d2ba..3cb7206f 100644 --- a/app/Http/Controllers/JobsController.php +++ b/app/Http/Controllers/JobsController.php @@ -29,12 +29,12 @@ class JobsController extends Controller private function listJobs(Request $request, $url, $title = null) { $page = (int)$request->get('pagina', 1); - $apiResult = $this->API('vacatures/' . $url . '?pagina=' . (int)max(1, $page)); + #$apiResult = $this->API('vacatures/' . $url . '?pagina=' . (int)max(1, $page)); $jobs = []; - foreach($apiResult->jobs as $jobsItem) - { - $jobs[] = new \Model\JobOpening($jobsItem); - } + #foreach($apiResult->jobs as $jobsItem) + #{ + # $jobs[] = new \Model\JobOpening($jobsItem); + #} return view('jobslist', array_merge($this->getSidebareData(), ['title' => $title, 'jobs' => $jobs])); //return view($request->ajax() ? 'partial/jobslist_small' : ($title == null ? 'home' : 'jobslist'), ['title' => $title, 'jobs' => $jobs, 'searchURL' => 'vacatures/zoeken']); diff --git a/app/Http/Controllers/NewsController.php b/app/Http/Controllers/NewsController.php index f5678748..d58d5f87 100644 --- a/app/Http/Controllers/NewsController.php +++ b/app/Http/Controllers/NewsController.php @@ -27,7 +27,7 @@ class NewsController extends Controller break; case 2: - $source = $apiResult->source; + $source = $apiResult->source->article; $newsItem->published = self::TimestampToDateTime($source->created); $newsItem->edited = self::TimestampToDateTime($source->updated); $newsItem->author = $source->author; @@ -65,21 +65,26 @@ class NewsController extends Controller $id = $request->get('id', ''); $populair = []; $apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5'); - foreach ($apiResult as $_newsItem) { + foreach ($apiResult->news as $_newsItem) { $populair[] = new \Model\NewsItem($_newsItem); } return view('partial/newslist_small', ['id' => $id, 'news' => $populair]); } + public function taglist(Request $request, $tag) + { + return $this->listNews($request, 'tag/' . $tag, ucfirst($tag)); + } + public function regionlist(Request $request, $region) { - return $this->listNews($request, 'regio/' . $region, ucfirst($region)); + return $this->listNews($request, 'tag/' . $region, ucfirst($region)); } public function themelist(Request $request, $theme) { - return $this->listNews($request, 'thema/' . $theme, ucfirst($theme)); + return $this->listNews($request, 'tag/' . $theme, ucfirst($theme)); } public function search(Request $request, $query) @@ -145,7 +150,7 @@ class NewsController extends Controller } $apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . ($total ? '&aantal=' . $total : '')); - foreach ($apiResult as $newsItem) { + foreach ($apiResult->news as $newsItem) { $populair[] = new \Model\NewsItem($newsItem); } @@ -172,7 +177,7 @@ class NewsController extends Controller { $apiResult = $this->API('nieuws/populair'); $news = []; - foreach ($apiResult as $newsItem) { + foreach ($apiResult->news as $newsItem) { $news[] = new \Model\NewsItem($newsItem); } diff --git a/app/Http/Controllers/PodcastController.php b/app/Http/Controllers/PodcastController.php index e1c3da86..9b945911 100644 --- a/app/Http/Controllers/PodcastController.php +++ b/app/Http/Controllers/PodcastController.php @@ -29,14 +29,23 @@ class PodcastController extends Controller $podcasts[] = new \Model\Podcast($podcast); } - return view($request->ajax() ? 'partial.podcastitems' : 'podcastseries', array_merge($viewData, ['podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken'])); + return view($request->ajax() ? 'partial.podcastitems' : 'podcastseries', array_merge($viewData, ['podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken', 'isPodcast' => true])); } 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]); + $podcast = new \Model\Podcast($apiResult); + $podcasts = []; + if($podcast->program) { + $apiResult = $this->API('podcast/programma/' . (int)$podcast->program->id . '?pagina=1&aantal=5'); + $podcasts = []; + foreach($apiResult->podcasts as $p) + { + $podcasts[] = new \Model\Podcast($p); + } + } + return view('podcastitem', ['podcast' => $podcast, 'metadata' => $podcast->metadata, 'podcasts' => $podcasts, 'isPodcast' => true]); } } diff --git a/app/Http/Controllers/RadioController.php b/app/Http/Controllers/RadioController.php index 39c45c71..ba2087cf 100644 --- a/app/Http/Controllers/RadioController.php +++ b/app/Http/Controllers/RadioController.php @@ -56,7 +56,7 @@ class RadioController extends Controller public function podcast(Request $request, $id, $title = '') { if($this->checkAPI('podcast/details/' . (int)$id) != "200"){ - return view('podcastitem', array_merge($this->getSidebareData(), ['title' => $title, 'podcast' => null, 'metadata' => null, 'related' => [], 'searchURL' => 'gemist/zoeken'])); + return view('podcastitem', array_merge($this->getSidebareData(), ['title' => $title, 'podcast' => null, 'metadata' => null, 'related' => [], 'searchURL' => 'gemist/zoeken', 'isPodcast' => false])); } parent::registerView($request, 'podcast', $id); @@ -71,7 +71,7 @@ class RadioController extends Controller $podcasts[] = new \Model\Podcast($_podcast); } - return view($request->ajax() ? 'partial/podcastitems' : 'podcastitem', ['title' => $title, 'podcast' => $podcast, 'metadata' => $podcast->metadata, 'podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken']); + return view($request->ajax() ? 'partial/podcastitems' : 'podcastitem', ['title' => $title, 'podcast' => $podcast, 'metadata' => $podcast->metadata, 'podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken', 'isPodcast' => false]); } public function podcasts(Request $request, $programma = null) @@ -107,7 +107,7 @@ class RadioController extends Controller } } - return view($request->ajax() ? 'partial/programitems' : 'programlist', ['programs' => array_reverse($programs)]); + return view($request->ajax() ? 'partial/programitems' : 'programlist', ['programs' => array_reverse($programs), 'isPodcast' => false]); } private function getPodcastList(Request $request, $action, $viewData = []) @@ -120,7 +120,7 @@ class RadioController extends Controller $podcasts[] = new \Model\Podcast($podcast); } - return view($request->ajax() ? 'partial/podcastitems' : 'podcastlist', array_merge($viewData, ['id' => 'items-podcasts', 'podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken'])); + return view($request->ajax() ? 'partial/podcastitems' : 'podcastlist', array_merge($viewData, ['id' => 'items-podcasts', 'podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken', 'isPodcast' => false])); } } diff --git a/app/Http/Controllers/StreamController.php b/app/Http/Controllers/StreamController.php index 78362399..841cf341 100644 --- a/app/Http/Controllers/StreamController.php +++ b/app/Http/Controllers/StreamController.php @@ -30,6 +30,17 @@ class StreamController extends Controller return view('watch', ['title' => 'Kijk NH Gooi Tv Studio', 'stream' => 'https://studiocam.nhgooi.nl/studiocam/live/index.m3u8']); } + public function inline(Request $request, $id) + { + $apiResult = $this->API('podcast/details/' . (int)$id); + $podcast = new \Model\Podcast($apiResult); + if(sha1($id . ':' . date('Y-m-d')) != $request->get('auth')) { + // return view('widgets/podcastplayer', ['podcast' => null]); + } + + return view('widgets/podcastplayer', ['podcast' => $podcast]); + } + public function podcast(Request $request, $id) { $apiResult = $this->API('podcast/details/' . (int)$id); @@ -39,11 +50,11 @@ class StreamController extends Controller } return view('listen', [ - 'source' => $this->API_URL . 'podcast/download' . $apiResult->url . '?auth=' . $podcast->auth, + 'source' => $this->API_URL . 'podcast/stream/' . $apiResult->url, 'title' => $podcast->title, 'content' => $podcast->title, 'isStream' => false, - 'canDownload' => true ]); + 'canDownload' => $this->API_URL . 'podcast/download/' . $apiResult->url ]); } public function program(Request $request, $year, $month, $day, $hour, $duration, $offset = 0) { @@ -58,7 +69,7 @@ class StreamController extends Controller } return view('listen', [ - 'source' => $this->API_URL . 'programma/download/' . $current->format('Y/m/d/H') . '/1', + 'source' => $this->API_URL . 'programma/stream/' . $current->format('Y/m/d/H') . '/1', 'tabs' => $hours, 'title' => 'Uitzending terugluisteren', 'content' => 'de uitzending van ' . $current->format('d-m-Y, H') . ':00 uur', @@ -77,10 +88,10 @@ class StreamController extends Controller public function kerkdienst(Request $request) { return view('listen', [ - 'source' => $this->API_URL . 'kerkdienst/download', + 'source' => $this->API_URL . 'kerkdienst/stream', 'title' => 'Kerkdienst gemist', 'content' => 'de kerkdienst van afgelopen zondag', 'isStream' => false, - 'canDownload' => true ]); + 'canDownload' => $this->API_URL . 'kerkdienst/download' ]); } } diff --git a/public/css/style.css b/public/css/style.css index 334eac24..c4e245a6 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -319,7 +319,7 @@ div.pp_default .pp_close:hover { padding: 3px 9px 3px 6px; margin: 8px auto; } -.top_menu_container ul.right_menu li:last-child, .menu_mobile_container ul.right_menu li:last-child { +.top_menu_container ul.right_menu li.search, .menu_mobile_container ul.right_menu li.search { border: none; line-height: 1; } @@ -725,6 +725,8 @@ div.pp_default .pp_close:hover { margin: 0; padding: 0; list-style: none; + display: flex; + gap: 3px; } .blog_grid .post .slider_content_box .post_details .category a { padding: 6px 11px 7px; @@ -1229,7 +1231,8 @@ div.pp_default .pp_close:hover { .post_container .post_body h3 { font-size: 15px; } -.post_container .post_body .sentence { +.post_container .post_body .sentence, +.box.featured .sentence { font-size: 12px; font-style: italic; line-height: 1.3; @@ -1238,7 +1241,8 @@ div.pp_default .pp_close:hover { display: block; width: 100%; } -.post_container .post_body .sentence span { +.post_container .post_body .sentence span, +.box.featured .sentence span { padding: 0 5px; } .post_container .post_body blockquote { @@ -1647,4 +1651,10 @@ a, a:hover, a:active { } } +.podcast-player .content { + border: solid 1px #333; + border-radius: 5px; + padding: 0.4rem; +} + /*# sourceMappingURL=style.css.map */ diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png index 25e67152..2290f123 100644 Binary files a/public/favicon-16x16.png and b/public/favicon-16x16.png differ diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png deleted file mode 100644 index 820e7d6b..00000000 Binary files a/public/favicon-32x32.png and /dev/null differ diff --git a/public/favicon.ico b/public/favicon.ico index 87a918d7..2290f123 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/js/main.js b/public/js/main.js index 8b137891..e69de29b 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -1 +0,0 @@ - diff --git a/resources/views/calendarevent.blade.php b/resources/views/calendarevent.blade.php index 429a1f6a..9e7911f4 100644 --- a/resources/views/calendarevent.blade.php +++ b/resources/views/calendarevent.blade.php @@ -12,7 +12,7 @@ @@ -24,7 +24,7 @@