From b78379f268a096909f1120ec63f65e456be802ac Mon Sep 17 00:00:00 2001
From: NH Gooi
Date: Sun, 8 Feb 2026 20:43:55 +0100
Subject: [PATCH] Liveblog - start work
---
app/Http/Controllers/HomeController.php | 17 +-
app/Http/Controllers/NewsController.php | 86 +++--
app/Models/NewsItem.php | 2 +-
resources/views/blog.blade.php | 72 ++--
resources/views/home.blade.php | 368 ++++++++++----------
resources/views/partial/blogitems.blade.php | 182 +++++-----
routes/web.php | 1 +
7 files changed, 375 insertions(+), 353 deletions(-)
diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php
index c0f8cf98..a8f0fdbc 100755
--- a/app/Http/Controllers/HomeController.php
+++ b/app/Http/Controllers/HomeController.php
@@ -9,22 +9,25 @@ class HomeController extends Controller
{
public function show(Request $request)
{
- $page = (int)$request->get('pagina', 1);
- $apiResult = $this->API('nieuws/overzicht?pagina=' . (int)max(1, $page) . '&aantal=10');
+ $page = (int) $request->get('pagina', 1);
+ $apiResult = $this->API('nieuws/overzicht?pagina=' . (int) max(1, $page) . '&aantal=10');
$news = [];
foreach ($apiResult->news as $newsItem) {
$news[] = new \Model\NewsItem($newsItem);
- }
+ }
+
+ $apiResult = $this->API('nieuws/liveblogs');
+ $liveblogs = $apiResult->liveblogs;
$populair = [];
- $apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5');
+ $apiResult = $this->API('nieuws/populair?pagina=' . (int) max(1, $page) . '&aantal=5');
foreach ($apiResult->news as $newsItem) {
$populair[] = new \Model\NewsItem($newsItem);
}
- $apiResult = $this->API('podcast/overzicht?aantal=15');
- $index = array_rand($apiResult->podcasts);
+ $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']);
+ return view('home', ['populair' => $populair, 'podcast' => $podcast, 'title' => 'Home', 'news' => $news, 'liveblogs' => $liveblogs, 'searchURL' => 'nieuws/zoeken']);
}
}
diff --git a/app/Http/Controllers/NewsController.php b/app/Http/Controllers/NewsController.php
index 362993cc..5b0f900f 100755
--- a/app/Http/Controllers/NewsController.php
+++ b/app/Http/Controllers/NewsController.php
@@ -18,7 +18,7 @@ class NewsController extends Controller
{
parent::registerView($request, 'nieuws', $id);
$preview = "";
- if(request()->get('preview', null) != null) {
+ if (request()->get('preview', null) != null) {
$preview = "?preview=" . request()->get('preview');
}
$apiResult = $this->API('nieuws/bericht/' . $id . $preview);
@@ -26,21 +26,22 @@ class NewsController extends Controller
switch ($apiResult->version) {
case 1:
- if (!$newsItem->content) return redirect('//nhnieuws.nl/gooi');
+ if (!$newsItem->content)
+ return redirect('//nhnieuws.nl/gooi');
- case 2:
- if(isset($apiResult->source->article)) {
- $source = $apiResult->source->article;
- $newsItem->published = self::TimestampToDateTime($source->created);
- $newsItem->edited = self::TimestampToDateTime($source->updated);
- $newsItem->author = $source->author;
- $newsItem->images = null; // Images will be embedded
- $newsItem->video = null; // Videos will be embedded
- $newsItem->content = $source->blocks;
- } elseif(isset($apiResult->source->blocks)) {
- $newsItem->content = $apiResult->source->blocks;
- }
- return view('newsitem', array_merge($this->getSidebareData(), ['type' => $apiResult->type, 'news' => $newsItem, 'metadata' => $newsItem->metadata, 'searchURL' => 'nieuws/zoeken']));
+ case 2:
+ if (isset($apiResult->source->article)) {
+ $source = $apiResult->source->article;
+ $newsItem->published = self::TimestampToDateTime($source->created);
+ $newsItem->edited = self::TimestampToDateTime($source->updated);
+ $newsItem->author = $source->author;
+ $newsItem->images = null; // Images will be embedded
+ $newsItem->video = null; // Videos will be embedded
+ $newsItem->content = $source->blocks;
+ } elseif (isset($apiResult->source->blocks)) {
+ $newsItem->content = $apiResult->source->blocks;
+ }
+ return view('newsitem', array_merge($this->getSidebareData(), ['type' => $apiResult->type, 'news' => $newsItem, 'metadata' => $newsItem->metadata, 'searchURL' => 'nieuws/zoeken']));
}
}
@@ -51,9 +52,9 @@ class NewsController extends Controller
public function more(Request $request)
{
- $page = (int)$request->get('pagina', 1);
+ $page = (int) $request->get('pagina', 1);
$id = $request->get('id', '');
- $apiResult = $this->API('nieuws/overzicht?pagina=' . (int)max(1, $page) . '&aantal=5');
+ $apiResult = $this->API('nieuws/overzicht?pagina=' . (int) max(1, $page) . '&aantal=5');
$news = [];
foreach ($apiResult->news as $newsItem) {
$news[] = new \Model\NewsItem($newsItem);
@@ -64,10 +65,10 @@ class NewsController extends Controller
public function populair(Request $request)
{
- $page = (int)$request->get('pagina', 1);
+ $page = (int) $request->get('pagina', 1);
$id = $request->get('id', '');
$populair = [];
- $apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5');
+ $apiResult = $this->API('nieuws/populair?pagina=' . (int) max(1, $page) . '&aantal=5');
foreach ($apiResult->news as $_newsItem) {
$populair[] = new \Model\NewsItem($_newsItem);
}
@@ -109,30 +110,19 @@ class NewsController extends Controller
return abort(404);
}
- public function blog(Request $request, $id)
+ public function liveblog(Request $request, $id)
{
parent::registerView($request, 'blog', $id);
- $page = (int)$request->get('pagina', 1);
- $hasNext = true;
- while ($page > 0) {
- $apiResult = $this->API('blog/overzicht/' . (int)$id . '?pagina=' . (int)max(1, $page));
-
- $blog = new \Model\Blog($apiResult->blog);
- $items = [];
- foreach ($apiResult->items as $blogItem) {
- $items[] = new \Model\NewsItem($blogItem);
- }
-
- if (count($items) || ($page == 1)) {
- return view('blog', ['blog' => $blog, 'pagina' => $page, 'items' => $items, 'hasNext' => $hasNext && count($items) == 15]);
- }
-
- $hasNext = false;
- --$page;
+ $blog = $this->API('nieuws/liveblog/' . (int) $id);
+ foreach( $blog->artikelen as &$item ) {
+ $item = new \Model\NewsItem( $item );
+ }
+ if (count($blog->artikelen)) {
+ return view('blog', ['blog' => $blog]);
}
- return abort(404);
+ return abort();
}
private function listNews(Request $request, $url, $title = null, $id = 'items', $total = null)
@@ -140,11 +130,11 @@ class NewsController extends Controller
if ($request->ajax()) {
$total = 5;
}
- $page = (int)$request->get('pagina', 1);
+ $page = (int) $request->get('pagina', 1);
if ($url == 'overzicht' && $request->get('dateStart', null) && $request->get('dateEnd', null)) {
$url = 'datum/' . $request->get('dateStart', null) . '/' . $request->get('dateEnd', null);
}
- $apiResult = $this->API('nieuws/' . $url . '?pagina=' . (int)max(1, $page) . ($total ? '&aantal=' . $total : ''));
+ $apiResult = $this->API('nieuws/' . $url . '?pagina=' . (int) max(1, $page) . ($total ? '&aantal=' . $total : ''));
$news = [];
foreach ($apiResult->news ?? [] as $newsItem) {
$news[] = new \Model\NewsItem($newsItem);
@@ -154,8 +144,10 @@ class NewsController extends Controller
if ($title == null) {
$total = 5;
}
- $apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1,
- $page) . ($total ? '&aantal=' . $total : ''));
+ $apiResult = $this->API('nieuws/populair?pagina=' . (int) max(
+ 1,
+ $page
+ ) . ($total ? '&aantal=' . $total : ''));
foreach ($apiResult->news as $newsItem) {
$populair[] = new \Model\NewsItem($newsItem);
}
@@ -192,15 +184,15 @@ class NewsController extends Controller
public function regionieuws()
{
- $data = $this->API('nieuws/regionieuws.json');
+ $data = $this->API('nieuws/regionieuws.json');
return view('listen', [
'source' => $this->API_URL . 'nieuws/regionieuws.mp3',
'title' => 'Regionieuws',
'content' => 'het laatste nieuws uit de regio',
'isStream' => false,
- 'canDownload' => true,
- 'lengte' => $data->length * 0.25,
- 'waveform' => $data
- ]);
+ 'canDownload' => true,
+ 'lengte' => $data->length * 0.25,
+ 'waveform' => $data
+ ]);
}
}
diff --git a/app/Models/NewsItem.php b/app/Models/NewsItem.php
index da3aba41..710794a6 100755
--- a/app/Models/NewsItem.php
+++ b/app/Models/NewsItem.php
@@ -24,7 +24,7 @@ class NewsItem extends Model {
public $podcast;
public $images;
public $video;
-
+ public $type;
public $url;
public $metadata;
diff --git a/resources/views/blog.blade.php b/resources/views/blog.blade.php
index c4dae9da..323748f8 100755
--- a/resources/views/blog.blade.php
+++ b/resources/views/blog.blade.php
@@ -1,52 +1,58 @@
@extends('layouts/sidebar')
-@section('title')
- @if($blog->title) {{$blog->title}} | Live blog @endif
+@section('title')
+@if($blog->titel) {{$blog->titel}} | Live blog @endif
@endsection
-@section('controls')
-
- Verversen (nieuwste)
+@section('page_class')news_post post_container @endsection
+
+
+{{-- @section('controls')
+
+ Verversen (nieuwste)
@if($pagina > 1)
- Terug (nieuwer)
+ Terug (nieuwer)
@else
- Terug (nieuwere berichten)
+ Terug (nieuwere
+ berichten)
@endif
@if($hasNext)
- Verder (ouder)
+ Verder (ouder)
@else
- Verder (ouder)
+ Verder (ouder)
@endif
-
-@endsection
+
+@endsection --}}
@section('content')
-
- {!!$blog->description!!}
-
- @if($blog->is_active)
-
- Nu live!
-
- @else
-
- Archief
-
- @endif
-
-
+
+ @if($blog->is_actief)
+
+ Nu live!
+
+ @else
+
+ Archief
+
+ @endif
+
+
- @yield('controls')
+{{-- @yield('controls') --}}
-
- @include('partial/blogitems', ['items' => $items])
-
+
+ @include('partial/blogitems', ['items' => $blog->artikelen])
+
- @yield('controls')
- (Pagina {{$pagina}})
-
-@endsection
+{{-- @yield('controls')
+(Pagina {{$pagina}})
--}}
+@endsection
\ No newline at end of file
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
index e3be4c8e..88a268d8 100755
--- a/resources/views/home.blade.php
+++ b/resources/views/home.blade.php
@@ -1,40 +1,51 @@
@extends('layouts.master')
@section('title')
- Home
+Home
@endsection
@section('content')
-
-
- {{-- Desktop --}}
-
-
-
- @if($item = current($news))
-
-
- @if($item->video)
-
- @elseif($item->images && count($item->images) > 1)
-
- @endif
-
-
-
-
- @foreach($item->tags as $tag)
-
- {{$tag->titel}}
-
- @endforeach
-
-
-
+ {{-- Liveblogs --}}
+ @if(count($liveblogs))
+
+ @endif
+
+
+ {{-- Desktop --}}
+
+
+
+ @if($item = current($news))
+
+
+ @if($item->video)
+
+ @elseif($item->images && count($item->images) > 1)
+
+ @endif
+
+
+
+
+ @foreach($item->tags as $tag)
+
+ {{$tag->titel}}
+
+ @endforeach
+
+
+ published) . ' om ' . $item->published->format('H:i');
if ($item->edited && ($item->edited->format('d m H i') != $item->published->format('d m H i'))) {
$time .= ' | bijgewerkt: '
@@ -42,77 +53,74 @@
. ' ' . $item->edited->format('H:i') . ' uur';
}
?>
-
- {{$time}}
-
-
-
- @endif
- @if($item = next($news))
-
-
- @if($item->video)
-
- @elseif($item->images && count($item->images) > 1)
-
- @endif
-
-
-
-
- @foreach($item->tags as $tag)
-
- {{$tag->titel}}
-
- @endforeach
-
-
- published) . ' om ' . $item->published->format('H:i');
- if ($item->edited && ($item->edited->format('d m H i') != $item->published->format('d m H i'))) {
- $time .= ' | bijgewerkt: '
- . ($item->edited->format('d m') != $item->published->format('d m') ? strtolower(Formatter::relativeDate($item->edited)) : '')
- . ' ' . $item->edited->format('H:i') . ' uur';
- }
- ?>
-
- {{$time}}
-
-
-
- @endif
+
+ {{$time}}
+
+
-
+
+
- {{-- body --}}
-
-
- @if(!isset($disableBanners) || !$disableBanners)
-
-
-
+{{-- body --}}
+
+
+ @if(!isset($disableBanners) || !$disableBanners)
+
+
+
+
+ @endif
+
+
+
+
+
+ @include('partial/newslist_small', ['id' => 'items-more-news', 'news' => array_slice($news, 5,
+ 5)])
- @endif
-
-
-
-
-
- @include('partial/newslist_small', ['id' => 'items-more-news', 'news' => array_slice($news, 5, 5)])
-
-
+
-
-
-
- @include('partial/newslist_small', ['id' => 'items-most-read', 'news' => $populair])
-
-
-
-
-
+
+
+
+ @include('partial/newslist_small', ['id' => 'items-most-read', 'news' => $populair])
+
+
+
- @if ($podcast)
- url; ?>
-
-
-@endsection
-
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/partial/blogitems.blade.php b/resources/views/partial/blogitems.blade.php
index 75f066ee..1d882a1c 100755
--- a/resources/views/partial/blogitems.blade.php
+++ b/resources/views/partial/blogitems.blade.php
@@ -1,89 +1,101 @@
-@foreach($items as $item)
-
-
-
-
-
- {{Formatter::relativeDate($item->published)}} om {{$item->published->format("H:i")}}
- @if($item->edited && ($item->edited->format("d m H i") != $item->published->format("d m H i")))
- | bijgewerkt :
- @if($item->edited->format("d m") != $item->published->format("d m"))
- {{strtolower(Formatter::relativeDate($item->edited))}}
- @endif
- om {{$item->edited->format("H:i")}} uur
- @endif
-
- @if($item->author)
- {{$item->author}}
+@foreach($items as $news)
+
+
{{ $news->title }}
+
+
+
+ {{Formatter::relativeDate($news->published)}} om {{$news->published->format('H:i')}}
+ @if($news->edited && ($news->edited->format('d m H i') != $news->published->format('d m H i')))
+ | bijgewerkt:
+ @if($news->edited->format('d m') != $news->published->format('d m'))
+ {{strtolower(Formatter::relativeDate($news->edited))}}
@endif
-
-
-
-
-
- @if($item->images)
- @if(count($item->images) == 1)
- @if(!$item->images[0]->title) @php($item->images[0]->title = $item->title) @endif
-
-
-
-
-
- {{$item->images[0]->title}}
- @if(isset($item->images[0]->author))
- {{$item->images[0]->author}}
- @endif
-
-
- @else
-
- @endif
- @endif
-
-
{{$item->title}}
-
- @if(is_array($item->content))
- @include("partial/nh_story", ["content" => $item->content]);
- @else
-
- @endif
-
- @if($item->video)
- @include('widgets/mediaplayer')
- @php(createVideoElement($item->video))
- @endif
-
- @if($item->source && $item->source->show)
-
-
Bron: {{$item->source->title}}
-
- @endif
-
-
- @if($item->podcast)
- @include("widgets/mediaplayer")
-
-
-
- podcast->url . "?auth=" . $item->podcast->auth )}}" type="audio/mpeg" />
-
-
-
+ om {{$news->edited->format('H:i')}} uur
+ @endif
+
+ @if($news->author)
+
{{$news->author}}
@endif
+
+
+
+
+
+ @if($news->images)
+ @if(count($news->images) == 1)
+
+
+
+
+
+ {{$news->images[0]->title}}
+ @if(isset($news->images[0]->author))
+ {{$news->images[0]->author}}
+ @endif
+
+
+ @else
+
+
+ @foreach($news->images as $image)
+
+
+
+ @endforeach
+
+
+
+
+ @foreach($news->images as $image)
+
+
+
+
+
+
+
+ @endforeach
+
+ @endif
+ @endif
+
+ {{-- @if($news->type == "nhnieuws") --}}
+ {{-- @include('partial/nh_story', ['content' => $news->content]) --}}
+ {{-- @elseif($news->type == "artikel") --}}
+ {{-- @include('partial/block_story', ['content' => $news->content]) --}}
+ {{-- @else --}}
+
+ {{-- @endif --}}
+
+ @if($news->podcast)
+ @include('widgets/podcastplayer', ['podcast' => $news->podcast])
+ @endif
+
+ @if($news->source && $news->source->show)
+
+
Bron: {{$news->source->title}}
+
+ @endif
+
+ {{--
+ @include('widgets/share')
+ --}}
+
+ {{--
--}}
+
-
-@endforeach
+
+@endforeach
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index 5ba501c4..ac0088a9 100755
--- a/routes/web.php
+++ b/routes/web.php
@@ -27,6 +27,7 @@ Route::get('/nieuws/zoeken', function(Illuminate\Http\Request $request) {
}
return redirect('/nieuws');
});
+Route::get('/nieuws/liveblog/{id}/{title}', 'NewsController@liveblog')->where(['id' => '\d+'])->name('nieuws.liveblog');
Route::get('/blog/{id}/{title}', 'NewsController@blog')->where(['id' => '\d+'])->name('blog');
Route::get('/blog', 'NewsController@activeblog');