Compare commits
3 Commits
feature/ap
...
fix-layout
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
732318d282 | ||
|
|
c76c1fa8f7 | ||
|
|
e406257121 |
@@ -6,6 +6,12 @@ use \Illuminate\Http\Request;
|
||||
|
||||
class CalendarController extends Controller
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function show(Request $request, $id)
|
||||
{
|
||||
parent::registerView($request, 'agenda', $id);
|
||||
@@ -19,7 +25,7 @@ class CalendarController extends Controller
|
||||
{
|
||||
$apiResult = $this->API('agenda/overzicht');
|
||||
$calendar = [];
|
||||
foreach($apiResult->events as $calendarItem)
|
||||
foreach($apiResult as $calendarItem)
|
||||
{
|
||||
$calendar[] = new \Model\CalendarEvent($calendarItem);
|
||||
}
|
||||
|
||||
@@ -39,20 +39,27 @@ class Controller extends BaseController
|
||||
View::share('apiUrl', $this->API_URL = env('API_URL', 'http://api.6fm.nl/'));
|
||||
View::share('imgBase', env('IMAGE_BASE_URL', '/'));
|
||||
|
||||
$blogs = $this->getDataFromFileAndConvert('blogs.json', [], '\Model\Blog', 1);
|
||||
$activeBlog = count($blogs) && $blogs[0]->is_active ? $blogs[0] : null;
|
||||
View::share('activeBlog', $activeBlog);
|
||||
|
||||
|
||||
//View::share('onAir', file_get_contents(url('onair')));
|
||||
View::composer('widgets.laatstenieuws', function ($view) {
|
||||
$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', ['news'], '\Model\NewsItem'));
|
||||
$view->with('data', $this->getDataFromFileAndConvert('populair_nieuws.json', [], '\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 = self::JsonToDateTime($item_data->start);
|
||||
$program->end = self::JsonToDateTime($item_data->end);
|
||||
$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));
|
||||
}
|
||||
|
||||
// Need a bit of slack here, otherwise the current program may show up
|
||||
@@ -61,8 +68,10 @@ class Controller extends BaseController
|
||||
$i = 0;
|
||||
foreach (array_reverse($data) as $item_data) {
|
||||
$recent = $program = new \Model\Program($item_data->program);
|
||||
$recent->start = self::JsonToDateTime($item_data->start);
|
||||
$recent->end = self::JsonToDateTime($item_data->end);
|
||||
$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));
|
||||
if (($recent->end < $now) && (!$recent->nonstop) && (!$recent->rerun)) {
|
||||
$view->with('recent', $recent);
|
||||
break;
|
||||
@@ -83,7 +92,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', ['news'], '\Model\NewsItem', 3))
|
||||
->with('popular', $this->getDataFromFileAndConvert('populair_nieuws.json', [], '\Model\NewsItem', 3))
|
||||
->with('podcasts',
|
||||
$this->getDataFromFileAndConvert('laatste_podcasts.json', ['podcasts'], '\Model\Podcast'));
|
||||
});
|
||||
@@ -109,16 +118,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)));
|
||||
@@ -139,7 +148,7 @@ class Controller extends BaseController
|
||||
|
||||
protected static function JsonToDateTime($obj)
|
||||
{
|
||||
return is_object($obj) ? new \DateTime($obj->date, new \DateTimeZone($obj->timezone)) : \Carbon\Carbon::parse($obj)->setTimezone(date_default_timezone_get());
|
||||
return new \DateTime($obj->date, new \DateTimeZone($obj->timezone));
|
||||
}
|
||||
|
||||
public function __call($method, $arguments)
|
||||
@@ -158,7 +167,7 @@ class Controller extends BaseController
|
||||
{
|
||||
$populair = [];
|
||||
$apiResult = $this->API('nieuws/populair?aantal=5');
|
||||
foreach ($apiResult->news as $_newsItem) {
|
||||
foreach ($apiResult as $_newsItem) {
|
||||
$populair[] = new \Model\NewsItem($_newsItem);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,13 +18,17 @@ class HomeController extends Controller
|
||||
|
||||
$populair = [];
|
||||
$apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5');
|
||||
foreach ($apiResult->news as $newsItem) {
|
||||
foreach ($apiResult as $newsItem) {
|
||||
$populair[] = new \Model\NewsItem($newsItem);
|
||||
}
|
||||
|
||||
$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']);
|
||||
$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']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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']);
|
||||
|
||||
@@ -27,7 +27,7 @@ class NewsController extends Controller
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$source = $apiResult->source->article;
|
||||
$source = $apiResult->source;
|
||||
$newsItem->published = self::TimestampToDateTime($source->created);
|
||||
$newsItem->edited = self::TimestampToDateTime($source->updated);
|
||||
$newsItem->author = $source->author;
|
||||
@@ -65,26 +65,21 @@ class NewsController extends Controller
|
||||
$id = $request->get('id', '');
|
||||
$populair = [];
|
||||
$apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5');
|
||||
foreach ($apiResult->news as $_newsItem) {
|
||||
foreach ($apiResult 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, 'tag/' . $region, ucfirst($region));
|
||||
return $this->listNews($request, 'regio/' . $region, ucfirst($region));
|
||||
}
|
||||
|
||||
public function themelist(Request $request, $theme)
|
||||
{
|
||||
return $this->listNews($request, 'tag/' . $theme, ucfirst($theme));
|
||||
return $this->listNews($request, 'thema/' . $theme, ucfirst($theme));
|
||||
}
|
||||
|
||||
public function search(Request $request, $query)
|
||||
@@ -150,7 +145,7 @@ class NewsController extends Controller
|
||||
}
|
||||
$apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1,
|
||||
$page) . ($total ? '&aantal=' . $total : ''));
|
||||
foreach ($apiResult->news as $newsItem) {
|
||||
foreach ($apiResult as $newsItem) {
|
||||
$populair[] = new \Model\NewsItem($newsItem);
|
||||
}
|
||||
|
||||
@@ -177,7 +172,7 @@ class NewsController extends Controller
|
||||
{
|
||||
$apiResult = $this->API('nieuws/populair');
|
||||
$news = [];
|
||||
foreach ($apiResult->news as $newsItem) {
|
||||
foreach ($apiResult as $newsItem) {
|
||||
$news[] = new \Model\NewsItem($newsItem);
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ class PodcastController extends Controller
|
||||
$podcasts[] = new \Model\Podcast($podcast);
|
||||
}
|
||||
|
||||
return view($request->ajax() ? 'partial.podcastitems' : 'podcastseries', array_merge($viewData, ['podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken', 'isPodcast' => true]));
|
||||
return view($request->ajax() ? 'partial.podcastitems' : 'podcastseries', array_merge($viewData, ['podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken']));
|
||||
}
|
||||
|
||||
public function podcast(Request $request, $id)
|
||||
@@ -37,15 +37,6 @@ class PodcastController extends Controller
|
||||
parent::registerView($request, 'podcast', $id);
|
||||
$apiResult = $this->API('podcast/details/' . (int)$id);
|
||||
$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]);
|
||||
return view('podcastitem', ['podcast' => $podcast, 'metadata' => $podcast->metadata]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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', 'isPodcast' => false]));
|
||||
return view('podcastitem', array_merge($this->getSidebareData(), ['title' => $title, 'podcast' => null, 'metadata' => null, 'related' => [], 'searchURL' => 'gemist/zoeken']));
|
||||
}
|
||||
|
||||
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', 'isPodcast' => false]);
|
||||
return view($request->ajax() ? 'partial/podcastitems' : 'podcastitem', ['title' => $title, 'podcast' => $podcast, 'metadata' => $podcast->metadata, 'podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken']);
|
||||
}
|
||||
|
||||
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), 'isPodcast' => false]);
|
||||
return view($request->ajax() ? 'partial/programitems' : 'programlist', ['programs' => array_reverse($programs)]);
|
||||
}
|
||||
|
||||
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', 'isPodcast' => false]));
|
||||
return view($request->ajax() ? 'partial/podcastitems' : 'podcastlist', array_merge($viewData, ['id' => 'items-podcasts', 'podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken']));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -30,17 +30,6 @@ 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);
|
||||
@@ -50,11 +39,11 @@ class StreamController extends Controller
|
||||
}
|
||||
|
||||
return view('listen', [
|
||||
'source' => $this->API_URL . 'podcast/stream/' . $apiResult->url,
|
||||
'source' => $this->API_URL . 'podcast/download' . $apiResult->url . '?auth=' . $podcast->auth,
|
||||
'title' => $podcast->title,
|
||||
'content' => $podcast->title,
|
||||
'isStream' => false,
|
||||
'canDownload' => $this->API_URL . 'podcast/download/' . $apiResult->url ]);
|
||||
'canDownload' => true ]);
|
||||
}
|
||||
|
||||
public function program(Request $request, $year, $month, $day, $hour, $duration, $offset = 0) {
|
||||
@@ -69,7 +58,7 @@ class StreamController extends Controller
|
||||
}
|
||||
|
||||
return view('listen', [
|
||||
'source' => $this->API_URL . 'programma/stream/' . $current->format('Y/m/d/H'),
|
||||
'source' => $this->API_URL . 'programma/download/' . $current->format('Y/m/d/H') . '/1',
|
||||
'tabs' => $hours,
|
||||
'title' => 'Uitzending terugluisteren',
|
||||
'content' => 'de uitzending van ' . $current->format('d-m-Y, H') . ':00 uur',
|
||||
@@ -88,10 +77,10 @@ class StreamController extends Controller
|
||||
|
||||
public function kerkdienst(Request $request) {
|
||||
return view('listen', [
|
||||
'source' => $this->API_URL . 'kerkdienst/stream',
|
||||
'source' => $this->API_URL . 'kerkdienst/download',
|
||||
'title' => 'Kerkdienst gemist',
|
||||
'content' => 'de kerkdienst van afgelopen zondag',
|
||||
'isStream' => false,
|
||||
'canDownload' => $this->API_URL . 'kerkdienst/download' ]);
|
||||
'canDownload' => true ]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Model;
|
||||
|
||||
class Blog extends Model {
|
||||
public $id;
|
||||
public $title;
|
||||
public $description;
|
||||
public $news_category;
|
||||
public $start_date;
|
||||
public $end_date;
|
||||
public $is_active;
|
||||
|
||||
public $url;
|
||||
|
||||
public function __construct($data, $images = null, $podcast = null) {
|
||||
parent::__construct($data);
|
||||
parent::ConvertToDateTime($this->start_date);
|
||||
parent::ConvertToDateTime($this->end_date);
|
||||
|
||||
$this->url = "/blog/{$this->id}/" . parent::url_slug($this->title);
|
||||
}
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Model;
|
||||
|
||||
class CalendarEvent extends Model {
|
||||
public $id;
|
||||
public $title;
|
||||
public $region;
|
||||
public $content;
|
||||
public $starts;
|
||||
public $ends;
|
||||
public $images;
|
||||
public $podcast;
|
||||
public $video;
|
||||
public $keywords;
|
||||
public $url;
|
||||
public $metadata;
|
||||
public $tags;
|
||||
|
||||
public function __construct($data, $images = null, $podcast = null) {
|
||||
parent::__construct($data);
|
||||
parent::ConvertToDateTime($this->starts);
|
||||
parent::ConvertToDateTime($this->ends);
|
||||
|
||||
$this->keywords = null;
|
||||
if(isset($data->keywords)) {
|
||||
if(is_array($data->keywords)) {
|
||||
$this->keywords = $data->keywords;
|
||||
} else if(trim($data->keywords)) {
|
||||
$this->keywords = explode(' ', $data->keywords);
|
||||
}
|
||||
}
|
||||
|
||||
if($podcast)
|
||||
{
|
||||
$this->podcast = new \Model\Podcast($podcast);
|
||||
} else if(isset($data->podcast) && $data->podcast) {
|
||||
$this->podcast = new \Model\Podcast($data->podcast);
|
||||
}
|
||||
|
||||
$images = ($images != null) ? $images
|
||||
: (isset($data->images) ? $data->images : null);
|
||||
if($images) {
|
||||
$this->images = [];
|
||||
foreach($images as $image) {
|
||||
$this->images[] = new NewsImage($image, '/img/news/');
|
||||
}
|
||||
}
|
||||
|
||||
$this->url = "/agenda/{$this->id}/" . parent::url_slug($this->title);
|
||||
$this->metadata = (new MetaData())
|
||||
->set('title', $this->title)
|
||||
->set('description', strip_tags($this->excerpt()))
|
||||
->set('image', isset($this->images) && count($this->images) ? $this->images[0]->url : null )
|
||||
->set('audio', isset($this->podcast) ? $this->podcast->url : null)
|
||||
;
|
||||
}
|
||||
|
||||
public function excerpt() {
|
||||
$hasImages = isset($this->images) && count($this->images) > 0;
|
||||
$maxLength = $hasImages ? 200 : 500;
|
||||
return '<p class="news-excerpt ' . ($hasImages ? 'short' : 'long') . '">' .
|
||||
substr($this->content, 0, $maxLength) .
|
||||
(strlen($this->content) > $maxLength ? '...' : '') .
|
||||
'</p>';
|
||||
}
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Model;
|
||||
|
||||
class JobOpening extends Model {
|
||||
public $id;
|
||||
public $title;
|
||||
public $content;
|
||||
public $starts;
|
||||
public $ends;
|
||||
public $images;
|
||||
public $url;
|
||||
|
||||
public function __construct($data, $images = null, $podcast = null) {
|
||||
parent::__construct($data);
|
||||
parent::ConvertToDateTime($this->starts);
|
||||
parent::ConvertToDateTime($this->ends);
|
||||
|
||||
$this->keywords = null;
|
||||
if(isset($data->keywords)) {
|
||||
if(is_array($data->keywords)) {
|
||||
$this->keywords = $data->keywords;
|
||||
} else if(trim($data->keywords)) {
|
||||
$this->keywords = explode(' ', $data->keywords);
|
||||
}
|
||||
}
|
||||
|
||||
if($podcast)
|
||||
{
|
||||
$this->podcast = new \Model\Podcast($podcast);
|
||||
} else if(isset($data->podcast) && $data->podcast) {
|
||||
$this->podcast = new \Model\Podcast($data->podcast);
|
||||
}
|
||||
|
||||
$images = ($images != null) ? $images
|
||||
: (isset($data->images) ? $data->images : null);
|
||||
if($images) {
|
||||
$this->images = [];
|
||||
foreach($images as $image) {
|
||||
$this->images[] = new NewsImage($image, '/img/news/');
|
||||
}
|
||||
}
|
||||
|
||||
$this->url = "/vacatures/{$this->id}/" . parent::url_slug($this->title);
|
||||
$this->metadata = (new MetaData())
|
||||
->set('title', $this->title)
|
||||
->set('description', strip_tags($this->excerpt()))
|
||||
->set('image', isset($this->images) && count($this->images) ? $this->images[0]->url : null )
|
||||
->set('audio', isset($this->podcast) ? $this->podcast->url : null)
|
||||
;
|
||||
}
|
||||
|
||||
public function excerpt() {
|
||||
$hasImages = count($this->images) > 0;
|
||||
$maxLength = $hasImages ? 200 : 500;
|
||||
return '<p class="news-excerpt ' . ($hasImages ? 'short' : 'long') . '">' .
|
||||
substr($this->content, 0, $maxLength) .
|
||||
(strlen($this->content) > $maxLength ? '...' : '') .
|
||||
'</p>';
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Model;
|
||||
|
||||
class KerkdienstInstance extends Model {
|
||||
public $name;
|
||||
public $start;
|
||||
|
||||
public function __construct($data) {
|
||||
parent::__construct($data);
|
||||
parent::ConvertToDateTime($this->start);
|
||||
}
|
||||
}
|
||||
|
||||
class Kerkdienst extends Model {
|
||||
public $isRunning;
|
||||
public $previous;
|
||||
public $next;
|
||||
|
||||
public function __construct($data) {
|
||||
// parent::__construct($data);
|
||||
$this->isRunning = $data->isRunning;
|
||||
$this->previous = new KerkdienstInstance($data->previous);
|
||||
$this->next = new KerkdienstInstance($data->next);
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
<?php
|
||||
namespace Model;
|
||||
|
||||
class MetaData {
|
||||
private $data = ['type' => 'article', 'locale' => 'nl-nl'];
|
||||
|
||||
public function set($prop, $val) {
|
||||
if($val) {
|
||||
$this->data[$prop] = $val;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function append($prop, $val) {
|
||||
if(array_key_exists($prop, $this->data)) {
|
||||
$this->data[$prop] .= $val;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function prepend($prop, $val) {
|
||||
if(array_key_exists($prop, $this->data)) {
|
||||
$this->data[$prop] = $val . $this->data[$prop];
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function metaTags() {
|
||||
foreach($this->data as $prop => $val) {
|
||||
if($val) {
|
||||
echo "<meta property=\"og:$prop\" content=\"" . htmlentities($val) . "\" />\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Model;
|
||||
|
||||
class Model {
|
||||
protected function ConvertToDateTime(&$field) {
|
||||
if($field) {
|
||||
// PHP7 JSON-encodes to {date: "", "timezone_type": ..., "timezone": "UTC" }
|
||||
// In that case $field will be an object
|
||||
if(is_object($field)) {
|
||||
$field = ($field->timezone)
|
||||
? new \DateTimeImmutable($field->date, new \DateTimeZone($field->timezone))
|
||||
: (new \DateTimeImmutable($field->date));
|
||||
} else {
|
||||
// If $field is not an object, assume it's a plain, valid, string
|
||||
$field = new \DateTime($field);
|
||||
}
|
||||
|
||||
if($field === false || $field->getTimestamp() <= 0) {
|
||||
// If field had data but is invalid DateTime or is 0000-00-00 00:00, set it to null.
|
||||
$field = null;
|
||||
} else {
|
||||
// If valid, return local timezone
|
||||
$field->setTimezone(new \DateTimeZone("Europe/Amsterdam"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function __construct($data) {
|
||||
$class = get_class($this);
|
||||
foreach($data as $key => $val) {
|
||||
if(property_exists($class, $key)) {
|
||||
$this->$key = is_string($val) ? stripslashes($val) : $val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function url_slug($text) {
|
||||
// Alles naar kleine letter
|
||||
$text = strtolower($text);
|
||||
|
||||
// Vervang accent-tekens door niet-geaccentueerde versies
|
||||
// $text = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $text);
|
||||
$search = explode(",","ç,æ,œ,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,e,i,ø,u");
|
||||
$replace = explode(",","c,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,e,i,o,u");
|
||||
$text = str_replace($search, $replace, $text);
|
||||
|
||||
// Verwijder alle woorden van 3 letters, behalve BEL (BEL-combinatie etc)
|
||||
if(strlen($text) > 3) {
|
||||
$text = preg_replace('/\b(?!bel|fm|nh)([a-z]{1,3})\b/u', '', $text);
|
||||
}
|
||||
|
||||
// Vervang alles dat niet een woord-karakter is (letter, cijfer), een streepje of spatie
|
||||
if(strlen($text) > 3) {
|
||||
$text = preg_replace('/[^\w_\-\s]/', '', $text);
|
||||
}
|
||||
|
||||
// Reeksen van één of meer spaties / streepjes vervangen door een enkel streepje
|
||||
$text = preg_replace('/[\-\s]+/', '-', $text);
|
||||
|
||||
// Verwijder alle witruimte / streepjes aan begin en eind
|
||||
return trim(strtolower($text), '-');
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Model;
|
||||
|
||||
class NewsImage extends Model {
|
||||
public $id;
|
||||
public $title;
|
||||
public $author;
|
||||
public $url;
|
||||
|
||||
public function __construct($data, $urlPrefix = '/') {
|
||||
parent::__construct($data);
|
||||
|
||||
// Deserialisatie van JSON heeft url in data,
|
||||
// lezen uit database heeft file en (als het goed is) urlPrefix
|
||||
if(isset($data->file)) {
|
||||
$this->url = $urlPrefix . $data->file;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,118 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Model;
|
||||
|
||||
require_once "NewsImage.php";
|
||||
require_once "NewsSource.php";
|
||||
require_once "MetaData.php";
|
||||
|
||||
class NewsItem extends Model {
|
||||
public $id;
|
||||
public $title;
|
||||
public $author;
|
||||
public $content;
|
||||
public $published;
|
||||
public $edited;
|
||||
public $keywords;
|
||||
|
||||
public $source;
|
||||
public $category;
|
||||
public $theme;
|
||||
public $region;
|
||||
public $tags;
|
||||
|
||||
public $podcast;
|
||||
public $images;
|
||||
public $video;
|
||||
|
||||
public $url;
|
||||
public $metadata;
|
||||
|
||||
public function __construct($data, $images = null, $podcast = null) {
|
||||
parent::__construct($data);
|
||||
parent::ConvertToDateTime($this->published);
|
||||
parent::ConvertToDateTime($this->edited);
|
||||
|
||||
if($this->edited && ($this->edited->getTimestamp() - $this->published->getTimestamp() < 1800 /* == 30 minutes */)) {
|
||||
// If last edit was within grace period, consider it unedited (note: currently RES always saves edited == published on creation)
|
||||
$this->edited = null;
|
||||
}
|
||||
|
||||
$this->source = null;
|
||||
if(isset($data->source))
|
||||
{
|
||||
if(is_object($data->source))
|
||||
{
|
||||
$this->source = new \Model\NewsSource($data->source->title, $data->source->url, $data->source->show);
|
||||
} else if($data->source) {
|
||||
$this->source = new \Model\NewsSource($data->source, $data->source_url, $data->showsource);
|
||||
}
|
||||
}
|
||||
|
||||
if($podcast) {
|
||||
$this->podcast = new \Model\Podcast($podcast);
|
||||
} else if(isset($data->podcast) && $data->podcast) {
|
||||
$this->podcast = new \Model\Podcast($data->podcast);
|
||||
}
|
||||
|
||||
$this->keywords = null;
|
||||
if(isset($data->keywords)) {
|
||||
if(is_array($data->keywords) || is_object($data->keywords)) {
|
||||
$this->keywords = $data->keywords;
|
||||
} else if(trim($data->keywords)) {
|
||||
$this->keywords = explode(' ', $data->keywords);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($data->region)) {
|
||||
if(is_object($data->region)) {
|
||||
$this->region = new \Model\NewsRegion($data->region->title, $data->region->slug);
|
||||
} else {
|
||||
$this->region = new \Model\NewsRegion($data->region, $data->region_slug);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($data->theme)) {
|
||||
if(is_object($data->theme)) {
|
||||
$this->theme = new \Model\NewsRegion($data->theme->title, $data->theme->slug);
|
||||
} else {
|
||||
$this->theme = new \Model\NewsRegion($data->theme, $data->theme_slug);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($data->tags)) {
|
||||
foreach($data->tags as $tag) {
|
||||
$this->theme = new \Model\NewsRegion($tag->titel, $tag->slug);
|
||||
}
|
||||
}
|
||||
|
||||
$images = ($images != null) ? $images
|
||||
: (isset($data->images) ? $data->images : null);
|
||||
if($images) {
|
||||
$this->images = [];
|
||||
foreach($images as $image) {
|
||||
$this->images[] = new NewsImage($image, '/img/news/');
|
||||
}
|
||||
}
|
||||
|
||||
$this->url = "/nieuws/{$this->id}/" . parent::url_slug($this->title);
|
||||
$this->metadata = (new MetaData())
|
||||
->set('title', $this->title)
|
||||
->set('description', strip_tags($this->excerpt()))
|
||||
->set('image', isset($this->images) && count($this->images) ? $this->images[0]->url : null )
|
||||
->set('video', isset($this->video) ? $this->video : null)
|
||||
->set('audio', isset($this->podcast) ? $this->podcast->url : null)
|
||||
->set('article:published_time', $this->published->format('r'))
|
||||
->set('article:modified_time', $this->edited ? $this->edited->format('r') : null)
|
||||
;
|
||||
}
|
||||
|
||||
public function excerpt() {
|
||||
$hasImages = isset($this->images) && count($this->images) > 0;
|
||||
$maxLength = $hasImages ? 200 : 500;
|
||||
return '<p class="news-excerpt ' . ($hasImages ? 'short' : 'long') . '">' .
|
||||
substr($this->content, 0, $maxLength) .
|
||||
(strlen($this->content) > $maxLength ? '...' : '') .
|
||||
'</p>';
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Model;
|
||||
|
||||
class NewsRegion {
|
||||
public $title;
|
||||
public $slug;
|
||||
|
||||
public function __construct($title, $slug = null) {
|
||||
$this->title = $title;
|
||||
$this->slug = $slug ? $slug : strtolower(str_replace(' ', '', $title));
|
||||
}
|
||||
}
|
||||
|
||||
class NewsSource {
|
||||
public $title;
|
||||
public $url;
|
||||
public $show;
|
||||
|
||||
public function __construct($title, $url, $show) {
|
||||
$this->title = $title;
|
||||
$this->url = $url;
|
||||
$this->show = $show;
|
||||
}
|
||||
}
|
||||
@@ -1,94 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Model;
|
||||
|
||||
require_once "NewsImage.php";
|
||||
|
||||
class Podcast extends Model {
|
||||
public $id;
|
||||
public $title;
|
||||
public $content;
|
||||
protected $soundfilename;
|
||||
public $created;
|
||||
public $program;
|
||||
public $url;
|
||||
public $auth;
|
||||
public $download;
|
||||
public $duration;
|
||||
public $image;
|
||||
public $metadata;
|
||||
public $waveform;
|
||||
private $key;
|
||||
|
||||
public function __construct($data) {
|
||||
parent::__construct($data);
|
||||
parent::ConvertToDateTime($this->created);
|
||||
|
||||
$this->url = '/' . $this->id . '/' . parent::url_slug($this->title) . '.mp3';
|
||||
if($this->soundfilename) {
|
||||
// Only generate when not constructing from a JSON object
|
||||
$this->key = sha1($this->id . ':' . date('Y-m-d') . ':' . $this->soundfilename);
|
||||
$this->auth = $this->key;
|
||||
}
|
||||
|
||||
if(isset($data->program)) {
|
||||
$this->program = null;
|
||||
if(is_object($data->program)) {
|
||||
$this->program = new \Model\Program($data->program);
|
||||
} elseif($data->program) {
|
||||
$this->program = new \Model\Program(['id' => $data->program, 'name' => $data->program_name, 'description' => $data->program_description]);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($data->imagefile)) {
|
||||
$imagedata = new \stdClass();
|
||||
$imagedata->id = $this->id;
|
||||
$imagedata->file = $data->imagefile;
|
||||
$imagedata->title = $data->imagecaption;
|
||||
$this->image = new NewsImage($imagedata, '/img/podcast/');
|
||||
}
|
||||
|
||||
if(isset($data->metadata, $data->metadata->waveform)){
|
||||
$this->waveform = $data->metadata->waveform;
|
||||
}
|
||||
|
||||
$this->metadata = (new MetaData())
|
||||
->set('title', $this->title)
|
||||
->set('description', strip_tags($this->excerpt()))
|
||||
->set('image', isset($this->image) ? $this->image->url : null )
|
||||
->set('audio', $this->url)
|
||||
;
|
||||
}
|
||||
|
||||
public function titleWithoutProgram() {
|
||||
if(!$this->program) { return $this->title; }
|
||||
return trim(str_replace($this->program->name, '', $this->title), "- \t\n\r\0\x0B");
|
||||
}
|
||||
|
||||
public function isValidAuth($key) {
|
||||
return ($key == $this->key);
|
||||
}
|
||||
|
||||
public function getSoundfile() {
|
||||
return '/var/audio/podcast/' . $this->soundfilename;
|
||||
}
|
||||
|
||||
public function formatDuration() {
|
||||
$seconds = $this->duration / 1000;
|
||||
$milliseconds = $this->duration % 1000;
|
||||
|
||||
$hours = ($seconds > 3600) ? floor($seconds / 3600) : 0;
|
||||
$seconds %= 3600;
|
||||
return str_pad($hours, 2, '0', STR_PAD_LEFT)
|
||||
. gmdate(':i:s', $seconds)
|
||||
;//. ($milliseconds ? ".$milliseconds" : '') ;
|
||||
}
|
||||
|
||||
public function excerpt() {
|
||||
$maxLength = 500;
|
||||
return '<p class="news-excerpt long">' .
|
||||
substr($this->content, 0, $maxLength) .
|
||||
(strlen($this->content) > $maxLength ? '...' : '') .
|
||||
'</p>';
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Model;
|
||||
|
||||
class Program extends Model {
|
||||
public $id;
|
||||
public $name;
|
||||
public $tagline;
|
||||
public $description;
|
||||
public $email;
|
||||
public $nonstop;
|
||||
public $rerun;
|
||||
public $priority;
|
||||
public $image;
|
||||
|
||||
public $hosts;
|
||||
public $recent;
|
||||
public $next;
|
||||
|
||||
public function __construct($data) {
|
||||
parent::__construct($data);
|
||||
|
||||
if(isset($data->suffix) && $data->suffix) {
|
||||
$this->name .= ' ' . $data->suffix;
|
||||
}
|
||||
|
||||
if($this->recent && $this->recent) {
|
||||
foreach($this->recent as &$recent) {
|
||||
parent::ConvertToDateTime($recent->starts);
|
||||
parent::ConvertToDateTime($recent->ends);
|
||||
}
|
||||
}
|
||||
if($this->next && $this->next) {
|
||||
foreach($this->next as &$next) {
|
||||
parent::ConvertToDateTime($next->starts);
|
||||
parent::ConvertToDateTime($next->ends);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($data->email) && ($mailComma = strpos($data->email, ',')) !== false) {
|
||||
$this->email = substr($data->email, 0, $mailComma);
|
||||
}
|
||||
|
||||
if(isset($data->state)) {
|
||||
$this->nonstop = $data->state == 0;
|
||||
$this->rerun = $data->state == 3;
|
||||
}
|
||||
|
||||
$this->url = "/{$this->id}/" . parent::url_slug($this->name);
|
||||
}
|
||||
|
||||
public function isSpecial() {
|
||||
return ($this->priority < 2);
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Model;
|
||||
|
||||
class ProgramHost extends Model {
|
||||
public $id;
|
||||
public $name;
|
||||
public $email;
|
||||
}
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Model;
|
||||
|
||||
class Track extends Model {
|
||||
public $start;
|
||||
public $itemCode;
|
||||
public $title;
|
||||
public $artist;
|
||||
public $duration;
|
||||
public $ends;
|
||||
public $isLayout;
|
||||
|
||||
public function __construct($data) {
|
||||
parent::__construct($data);
|
||||
parent::ConvertToDateTime($this->start);
|
||||
parent::ConvertToDateTime($this->ends);
|
||||
$isLayout = $this->isLayout();
|
||||
}
|
||||
|
||||
private static $IDENTS = ['UURSLUITER' => 'Nieuws', 'NIEUWSOPEN ' => 'Nieuws', 'ANWB' => 'Verkeersinformatie', 'REGIO' => 'Regionieuws', 'CB' => 'Reclame'];
|
||||
|
||||
public function isLayout() {
|
||||
foreach(self::$IDENTS as $ident => $display) {
|
||||
if(substr($this->itemCode, 0, strlen($ident)) == $ident || substr($this->title, 0, strlen($ident)) == $ident) {
|
||||
$this->title = $display;
|
||||
$this->artist = "";
|
||||
$this->itemCode = '_' . $this->itemCode;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(strlen($this->itemCode) > 0 && ($this->itemCode[0] == 'V')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function ends($ends = null) {
|
||||
$this->ends = $ends;
|
||||
}
|
||||
|
||||
public function secondsRemaining() {
|
||||
return ($this->ends) ? ($this->ends->getTimestamp() - time()) : -1;
|
||||
}
|
||||
}
|
||||
@@ -27,7 +27,7 @@
|
||||
"Database\\Factories\\": "database/factories/",
|
||||
"Database\\Seeders\\": "database/seeders/",
|
||||
"Helpers\\": "app/Helpers",
|
||||
"Model\\": "app/Models"
|
||||
"Model\\": "/srv/api/common/classes"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
|
||||
30
public/css/style.css
vendored
30
public/css/style.css
vendored
@@ -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.search, .menu_mobile_container ul.right_menu li.search {
|
||||
.top_menu_container ul.right_menu li:last-child, .menu_mobile_container ul.right_menu li:last-child {
|
||||
border: none;
|
||||
line-height: 1;
|
||||
}
|
||||
@@ -725,8 +725,6 @@ 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;
|
||||
@@ -1231,8 +1229,7 @@ div.pp_default .pp_close:hover {
|
||||
.post_container .post_body h3 {
|
||||
font-size: 15px;
|
||||
}
|
||||
.post_container .post_body .sentence,
|
||||
.box.featured .sentence {
|
||||
.post_container .post_body .sentence {
|
||||
font-size: 12px;
|
||||
font-style: italic;
|
||||
line-height: 1.3;
|
||||
@@ -1241,8 +1238,7 @@ div.pp_default .pp_close:hover {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
.post_container .post_body .sentence span,
|
||||
.box.featured .sentence span {
|
||||
.post_container .post_body .sentence span {
|
||||
padding: 0 5px;
|
||||
}
|
||||
.post_container .post_body blockquote {
|
||||
@@ -1320,10 +1316,8 @@ div.pp_default .pp_close:hover {
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.post_tags li a,
|
||||
#schedule .onair {
|
||||
.post_tags li a {
|
||||
display: block;
|
||||
width: 4rem;
|
||||
padding: 6px 15px 7px;
|
||||
border-radius: 3px;
|
||||
background-image: linear-gradient(to left, #0d1ca3, #45aaf8);
|
||||
@@ -1339,16 +1333,6 @@ div.pp_default .pp_close:hover {
|
||||
#schedule a {
|
||||
text-decoration: none;
|
||||
}
|
||||
@keyframes tilt-shaking {
|
||||
0% { transform: rotate(0deg); }
|
||||
25% { transform: rotate(5deg); }
|
||||
50% { transform: rotate(0deg); }
|
||||
75% { transform: rotate(-5deg); }
|
||||
100% { transform: rotate(0deg); }
|
||||
}
|
||||
.onair {
|
||||
animation: tilt-shaking 1s linear infinite;
|
||||
}
|
||||
#schedule .program-title {
|
||||
font-family: Montserrat, serif;
|
||||
font-size: 14px;
|
||||
@@ -1663,10 +1647,4 @@ a, a:hover, a:active {
|
||||
}
|
||||
}
|
||||
|
||||
.podcast-player .content {
|
||||
border: solid 1px #333;
|
||||
border-radius: 5px;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=style.css.map */
|
||||
|
||||
2
public/css/style.min.css
vendored
2
public/css/style.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 944 B |
BIN
public/favicon-32x32.png
Normal file
BIN
public/favicon-32x32.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 15 KiB |
2
public/js/functions.min.js
vendored
2
public/js/functions.min.js
vendored
File diff suppressed because one or more lines are too long
1
public/js/main.js
vendored
1
public/js/main.js
vendored
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<ul class="bread_crumb">
|
||||
<li><a title="Home" href="/">Home</a></li>
|
||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
<li><a title="Streekagenda" href="{{route('agenda')}}">Streekagenda</a></li>
|
||||
<li><a title="Regio-agenda" href="{{route('agenda')}}">Regio-agenda</a></li>
|
||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
<li>Details</li>
|
||||
</ul>
|
||||
@@ -24,7 +24,7 @@
|
||||
<div class="post single small_image">
|
||||
<ul class="post_details clearfix">
|
||||
@if($event->region)
|
||||
<li class="detail category"><i class="fa-solid fa-location-dot"></i> <a title="{{$event->region}}">{{$event->region}}</a></li>
|
||||
<li class="detail category"><i class="fa-solid fa-location-dot"></i> Regio <a title="{{$event->region}}">{{$event->region}}</a></li>
|
||||
@endif
|
||||
<li class="detail date">
|
||||
<i class="fa-regular fa-clock"></i>
|
||||
@@ -41,7 +41,7 @@
|
||||
<div class="announcement">
|
||||
<div>
|
||||
<audio controls>
|
||||
<source src="{{ $url = url( $apiUrl . 'podcast/stream/' . $event->podcast->url . "?auth=" . $event->podcast->auth )}}" type="audio/mpeg" />
|
||||
<source src="{{ $url = url( $apiUrl . 'podcast/download/' . $event->podcast->url . "?auth=" . $event->podcast->auth )}}" type="audio/mpeg" />
|
||||
</audio>
|
||||
</div>
|
||||
<ul class="post_details clearfix">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@extends('layouts/sidebar')
|
||||
|
||||
@section('title')
|
||||
Streekagenda
|
||||
Regioagenda
|
||||
@endsection
|
||||
|
||||
@section('page_class')
|
||||
@@ -28,7 +28,7 @@
|
||||
@if(!count($events))
|
||||
@section('content')
|
||||
<div class="page_body margin_bottom">
|
||||
<p>Er zijn geen items in de streekagenda. Iets te melden? Mail het naar {{Html::mailto("info@nhgooi.nl")}}
|
||||
<p>Er zijn geen items in de regioagenda. Iets te melden? Mail het naar {{Html::mailto("info@nhgooi.nl")}}
|
||||
.</p>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -37,9 +37,40 @@
|
||||
@section('content')
|
||||
@parent
|
||||
<div data-tabs class="page_body">
|
||||
<div style="padding: 0" class="tab_content active" id="agenda">
|
||||
<div class="tabs">
|
||||
<h4 data-tab-content-id="tab_previous" class="box_header small flex-grow-1"><span>Eerder</span></h4>
|
||||
<h4 data-tab-content-id="tab_current_week" class="box_header small flex-grow-1 active"><span>Komende week</span></h4>
|
||||
<h4 data-tab-content-id="tab_everything" class="box_header small flex-grow-1"><span>Toon alles</span></h4>
|
||||
<h4 data-tab-content-id="tab_next" class="box_header small"><span>Later</span></h4>
|
||||
</div>
|
||||
|
||||
@php($tabs = [
|
||||
[
|
||||
'id' => 'tab_previous',
|
||||
'start' => new DateTime('1-1-1990'),
|
||||
'end' => new DateTime('sunday previous week'),
|
||||
],
|
||||
[
|
||||
'id' => 'tab_current_week',
|
||||
'start' => new DateTime('monday this week'),
|
||||
'end' => new DateTime('sunday this week'),
|
||||
],
|
||||
[
|
||||
'id' => 'tab_everything',
|
||||
'start' => new DateTime('1-1-1990'),
|
||||
'end' => new DateTime('31-12-3000'),
|
||||
],
|
||||
[
|
||||
'id' => 'tab_next',
|
||||
'start' => new DateTime('monday next week'),
|
||||
'end' => new DateTime('31-12-3000'),
|
||||
]
|
||||
])
|
||||
@foreach($tabs as $tab)
|
||||
<div style="padding: 0" class="tab_content{{$tab['id'] == 'tab_current_week' ? ' active' : ''}}" id="{{$tab['id']}}">
|
||||
@php($count = 0)
|
||||
@foreach($events as $event)
|
||||
@if($event->starts >= $tab['start'] && $event->ends <= $tab['end'])
|
||||
@php($count++)
|
||||
<?php $url = route('agenda.details', ['id' => $event->id, 'title' => $event->title]); ?>
|
||||
<div class="box featured">
|
||||
@@ -53,9 +84,7 @@
|
||||
<h2 class="post_title"><a href="{{$url}}" title="{{$event->title}}">{!!$event->title!!}</a></h2>
|
||||
<div class="sub_title" style="flex-wrap: wrap">
|
||||
<ul class="post_tags" style="width: 100%; margin: 0 0 8px 0;height: 25px;">
|
||||
@foreach($event->tags as $tag)
|
||||
<li><a style="padding: 3px 8px 3px" title="{{$tag->title}}">{{$tag->title}}</a></li>
|
||||
@endforeach
|
||||
<li><a style="padding: 3px 8px 3px" title="{{$event->region}}">{{$event->region}}</a></li>
|
||||
</ul>
|
||||
<span class="post_date" style="line-height: 1.17; height: 14px;" title="{{Formatter::relativeDate($event->starts, 'W d m y?')}}">
|
||||
<i class="fa-regular fa-clock"></i> {{Formatter::relativeDate($event->starts, 'W d m y?')}}
|
||||
@@ -70,12 +99,14 @@
|
||||
<a class="btn fit_content" href="{{$url}}">Lees verder</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
@if($count == 0)
|
||||
<p>Er zijn geen items gevonden. Iets te melden? Mail het naar <a href="mailto:info@nhgooi.nl">info@nhgooi.nl</a>.</p>
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@endif
|
||||
|
||||
@@ -19,17 +19,6 @@
|
||||
<div class="page_body">
|
||||
<div class="row ">
|
||||
<div class="col-12 col-md">
|
||||
<p>NH Gooi is de publieke streekomroep van Gooi en Vechtstreek. We houden je 24 uur per dag
|
||||
op de hoogte van al het nieuws, betrouwbaar en snel. Dat doen we via een eigen nieuws-
|
||||
app, onze website en social media, maar ook op radio en televisie. Daarnaast brengen we
|
||||
een gevarieerd aanbod van podcasts, radio- en televisieprogramma's.</p>
|
||||
|
||||
<p>Ons team van journalisten en programmamakers bestaat uit betaalde krachten, vrijwilligers
|
||||
en stagiaires. We vinden het belangrijk mensen op te leiden en een goede plek te bieden
|
||||
voor talent.</p>
|
||||
|
||||
<p>De redactie van NH Gooi is journalistiek onafhankelijk en wordt geleid door de chef redactie.</p>
|
||||
|
||||
<h3>Contactinformatie</h3>
|
||||
|
||||
<p>Neem contact op met NH Gooi, de streekomroep voor Gooi & Vechtstreek.</p>
|
||||
|
||||
@@ -24,13 +24,13 @@
|
||||
</a>
|
||||
<div class="slider_content_box">
|
||||
<ul class="post_details simple">
|
||||
@foreach($item->tags as $tag)
|
||||
@if($item->region)
|
||||
<li class="category">
|
||||
<a title="{{$tag->titel}}"
|
||||
href="{{route('nieuws.tag', ['tag' => $tag->slug])}}"
|
||||
class="over_image">{{$tag->titel}}</a>
|
||||
<a title="Regio: {{$item->region->title}}"
|
||||
href="{{route('nieuws.regio', ['region' => $item->region->slug])}}"
|
||||
class="over_image">{{$item->region->title}}</a>
|
||||
</li>
|
||||
@endforeach
|
||||
@endif
|
||||
</ul>
|
||||
<h2><a href="{{url($item->url)}}"
|
||||
title="{{$item->title}}">{!!$item->title!!}</a></h2>
|
||||
@@ -61,13 +61,13 @@
|
||||
</a>
|
||||
<div class="slider_content_box">
|
||||
<ul class="post_details simple">
|
||||
@foreach($item->tags as $tag)
|
||||
@if($item->region)
|
||||
<li class="category">
|
||||
<a title="{{$tag->titel}}"
|
||||
href="{{route('nieuws.tag', ['tag' => $tag->slug])}}"
|
||||
class="over_image">{{$tag->titel}}</a>
|
||||
<a title="Regio: {{$item->region->title}}"
|
||||
href="{{route('nieuws.regio', ['region' => $item->region->slug])}}"
|
||||
class="over_image">{{$item->region->title}}</a>
|
||||
</li>
|
||||
@endforeach
|
||||
@endif
|
||||
</ul>
|
||||
<h2><a href="{{url($item->url)}}"
|
||||
title="{{$item->title}}">{!!$item->title!!}</a></h2>
|
||||
@@ -102,13 +102,13 @@
|
||||
</a>
|
||||
<div class="slider_content_box">
|
||||
<ul class="post_details simple">
|
||||
@foreach($item->tags as $tag)
|
||||
@if($item->region)
|
||||
<li class="category">
|
||||
<a title="{{$tag->titel}}"
|
||||
href="{{route('nieuws.tag', ['tag' => $tag->slug])}}"
|
||||
class="over_image">{{$tag->titel}}</a>
|
||||
<a title="Regio: {{$item->region->title}}"
|
||||
href="{{route('nieuws.regio', ['region' => $item->region->slug])}}"
|
||||
class="over_image">{{$item->region->title}}</a>
|
||||
</li>
|
||||
@endforeach
|
||||
@endif
|
||||
</ul>
|
||||
<h5 class="post_title"><a href="{{url($item->url)}}"
|
||||
title="{{$item->title}}">{!!$item->title!!}</a></h5>
|
||||
@@ -170,28 +170,12 @@
|
||||
|
||||
@if ($podcast)
|
||||
<?php $url = route('gemist.fragment') . $podcast->url; ?>
|
||||
<h4 class="box_header"><span>Uitgelicht fragment</span></h4>
|
||||
<h4 class="box_header"><span>Uitgelicht</span></h4>
|
||||
<div class="box featured">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6">
|
||||
<a href="{{$url}}" title="{{$podcast->title}}">
|
||||
<img src="{{($hasImage = $podcast->image && $podcast->image->url) ? $imgBase . $podcast->image->url : '/images/noimage.png'}}"/>
|
||||
<div class="sentence">
|
||||
<?php
|
||||
$sentence = [];
|
||||
if ($hasImage) {
|
||||
$sentence[] = '<span class="text">' . $podcast->image->title . '</span>';
|
||||
} elseif (isset($podcast->image->title) && $podcast->image->title) {
|
||||
$sentence[] = '<span class="text">' . $podcast->image->title . '</span>';
|
||||
}
|
||||
if (isset($podcast->image->author) && $podcast->image->author) {
|
||||
$sentence[] = '<span class="author">' . $podcast->image->author . '</span>';
|
||||
}
|
||||
$sentence = join('<span class="separator">|</span>', $sentence);
|
||||
?>
|
||||
{!!$sentence!!}
|
||||
</div>
|
||||
|
||||
<img src="{{$podcast->image && $podcast->image->url ? $imgBase . $podcast->image->url : '/images/noimage.png'}}"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
|
||||
@@ -12,15 +12,15 @@
|
||||
</ul>
|
||||
@endsection
|
||||
|
||||
@section('page_class')
|
||||
news_post post_container breadcrumb_no_border
|
||||
@endsection
|
||||
@section('page_container_class')
|
||||
grey_background
|
||||
@endsection
|
||||
@section('site_container_class')
|
||||
grey_background
|
||||
@endsection
|
||||
@section('container_class')
|
||||
news_post post_container
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</p>
|
||||
<p>
|
||||
<audio controls>
|
||||
<source src="{{ url( $apiUrl . 'kerkdienst/stream' ) }}" type="audio/mpeg" />
|
||||
<source src="{{ url( $apiUrl . 'kerkdienst/download' ) }}" type="audio/mpeg" />
|
||||
</audio>
|
||||
</p>
|
||||
<p>
|
||||
|
||||
@@ -10,22 +10,10 @@
|
||||
<!--style-->
|
||||
<link href='//fonts.googleapis.com/css?family=Roboto:300,400,700' rel='stylesheet' type='text/css'>
|
||||
<link href='//fonts.googleapis.com/css?family=Roboto+Condensed:300,400,700' rel='stylesheet' type='text/css'>
|
||||
{{--
|
||||
<link rel="stylesheet" type="text/css" href="/css/reset.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/superfish.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/jquery.qtip.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/style.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/menu_styles.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/animations.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/responsive.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/odometer-theme-default.css">
|
||||
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/nhgooi.css">
|
||||
--}}
|
||||
<link rel="stylesheet" type="text/css" href="/css/prettyPhoto.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/bootstrap-grid.min.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
<link rel="stylesheet" type="text/css" href="/css/style.css?<?= filemtime("../public/css/style.css"); ?>" />
|
||||
<link rel="stylesheet" type="text/css" href="/css/style.min.css?<?= filemtime("../public/css/style.min.css"); ?>" />
|
||||
<meta property="fb:app_id" content="133349980094758" />
|
||||
<meta property="og:site_name" content="NH Gooi" />
|
||||
<?php if(isset($metadata)) {
|
||||
@@ -37,11 +25,9 @@
|
||||
} ?>
|
||||
@stack('styles')
|
||||
<link rel="shortcut icon" href="/favicon.ico">
|
||||
{{--
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
--}}
|
||||
<link rel="manifest" href="/site.webmanifest">
|
||||
<!--rss-->
|
||||
<link rel="alternate" type="application/rss+xml" title="Abonneren op NH Gooi Nieuws" href="{{env('API_URL')}}rss/nieuws" />
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<a href="https://wa.me/31888505651" target="_blank">Tip <i class="fa-solid fa-circle-plus"></i></a>
|
||||
</li>
|
||||
@if(isset($searchURL))
|
||||
<li class="search">
|
||||
<li>
|
||||
<form class="search_form" action="{{url($searchURL)}}">
|
||||
<input type="text" name="query" placeholder="Zoeken..."
|
||||
value="{{isset($query) ? $query : null}}" class="search_input">
|
||||
@@ -67,13 +67,13 @@
|
||||
<a class="player with_svg_icon" href="{{url('luister/live')}}"><span>Luister live radio </span>{!!file_get_contents(__DIR__ . '/../../../public/images/icons/radio.svg')!!}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="with_svg_icon" href="{{url('kijk/live')}}"><span>Kijk live tv </span>{!!file_get_contents(__DIR__ . '/../../../public/images/icons/television-2.svg')!!}</a>
|
||||
<a class="with_svg_icon" href="{{url('kijk/studio')}}"><span>Kijk live tv </span>{!!file_get_contents(__DIR__ . '/../../../public/images/icons/television-2.svg')!!}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://wa.me/31888505651" style="{{!isset($searchURL) ? 'margin-top: 3px' : ''}}" target="_blank"><span>Tip de streekredactie </span><i style="margin-top: 2px" class="fa-solid fa-circle-plus"></i></a>
|
||||
</li>
|
||||
@if(isset($searchURL))
|
||||
<li class="search">
|
||||
<li>
|
||||
<form class="search_form" action="{{url($searchURL)}}">
|
||||
<input type="text" name="query" placeholder="Zoeken..."
|
||||
value="{{isset($query) ? $query : null}}" class="search_input">
|
||||
@@ -93,6 +93,13 @@
|
||||
|
||||
<div class="page @yield('page_container_class')">
|
||||
<a name="top"></a>
|
||||
@if($activeBlog != null)
|
||||
<p style="float: left; border: solid 1px #1f3977; border-radius: 10px; padding: 0 10px 0.4em 10px; margin: 10px 0 10px 0; width: 100%;">
|
||||
<b>Live-blog:</b> {{$activeBlog->title}}
|
||||
<a href="{{$activeBlog->url}}" class="action_button" style="float: none; margin-left: 1em;"><span
|
||||
class="fa fa-rss"></span><span>Volg het live-blog</span></a>
|
||||
</p>
|
||||
@endif
|
||||
@yield('page')
|
||||
</div><!--/.page-->
|
||||
|
||||
@@ -103,18 +110,17 @@
|
||||
<div class="col-12 col-md-3">
|
||||
<h4 class="box_header"><span>NH Gooi</span></h4>
|
||||
<p class="about">
|
||||
NH Gooi is de streekomroep voor Gooi & Vechtstreek. Wij brengen nieuws en achtergronden
|
||||
op onze website, radio en televisie. Daarnaast brengen we boeiende en belangrijke podcasts
|
||||
en een gevariëerd programma-aanbod op al onze media-kanalen.
|
||||
NH Gooi is de streekomroep voor Gooi & Vechtstreek. Wij bieden een gevarieerd programma op
|
||||
radio, podcasts, tv en online met muziek, achtergronden en actueel regionieuws.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<h4 class="box_header"><span style="height: 30px;display: block;width: 0;"></span></h4>
|
||||
<p class="about">
|
||||
Altijd op de hoogte blijven van nieuws en achtergronden uit de regio? <span class="fas fa-mobile"></span> <a href="{{url('app')}}">Download onze app</a>.
|
||||
Altijd op de hoogte blijven van nieuws en achtergronden uit de regio? <a href="{{url('app')}}">Download onze app</a>.
|
||||
</p>
|
||||
<p class="about">
|
||||
<span class="fa fa-list"></span> <a href="{{url('frequenties')}}">Bekijk hier</a> waar je ons kunt zien en horen.
|
||||
<a href="{{url('frequenties')}}">Klik hier</a> waar je ons kunt zien en horen.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
@@ -166,26 +172,10 @@
|
||||
</div>
|
||||
<div class="background_overlay"></div>
|
||||
<!--js-->
|
||||
<!--<script type="text/javascript" src="/js/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery-migrate-1.4.1.min.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.ba-bbq.min.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery-ui-1.11.1.custom.min.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.easing.1.3.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.carouFredSel-6.2.1-packed.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.touchSwipe.min.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.mousewheel.min.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.transit.min.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.sliderControl.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.timeago.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.hint.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.qtip.min.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.blockUI.js"></script>
|
||||
<script type="text/javascript" src="/js/odometer.min.js"></script>-->
|
||||
<script type="text/javascript" src="/js/main.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery-3.7.1.min.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.prettyPhoto.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.carouFredSel-6.2.1.min.js"></script>
|
||||
<script type="text/javascript" src="/js/functions.js"></script>
|
||||
<script type="text/javascript" src="/js/functions.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(window).resize(function () {
|
||||
// Fix sticky for mobile menu indicator
|
||||
|
||||
@@ -42,8 +42,8 @@
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@if(!$isStream && $canDownload !== false)
|
||||
<a href="{{$canDownload}}" class="action_button">
|
||||
@if(!$isStream && $canDownload)
|
||||
<a href="{{$source}}" class="action_button">
|
||||
<span class="fa fa-download"></span><span>Download .mp3-bestand</span>
|
||||
</a>
|
||||
@endif
|
||||
@@ -52,6 +52,7 @@
|
||||
<span class="fa fa-music"></span><span>Schakel naar live-uitzending</span>
|
||||
</a>
|
||||
@endif
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<div class="podcast_items">
|
||||
<h4 class="box_header small"><span>Fragment gemist</span></h4>
|
||||
<div class="box">
|
||||
@include('partial/podcastitems', ['showTime' => false, 'showImage' => false, 'podcasts' => $podcasts, 'isPodcast' => false])
|
||||
@include('partial/podcastitems', ['showTime' => false, 'showImage' => false, 'podcasts' => $podcasts])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -11,18 +11,16 @@
|
||||
<li><a title="Home" href="/">Home</a></li>
|
||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
<li><a title="Nieuws" href="{{route('nieuws')}}">Nieuws</a></li>
|
||||
{{-- <li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
<li><a title="{{$news->region->title}}" href="{{route('nieuws.regio', $news->region->slug)}}">{{$news->region->title}}</a></li>
|
||||
--}} <li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
<li>{!!$news->title!!}</li>
|
||||
</ul>
|
||||
@endsection
|
||||
|
||||
@section('tags')
|
||||
<ul class="post_tags">
|
||||
@foreach($news->tags as $tag)
|
||||
<li><a href="{{route('nieuws.tag', $tag->slug)}}" title="{{$tag->titel}}">{{$tag->titel}}</a></li>
|
||||
@endforeach
|
||||
<li><a href="{{route('nieuws.regio', $news->region->slug)}}" title="{{$news->region->title}}">{{$news->region->title}}</a></li>
|
||||
</ul>
|
||||
@endsection
|
||||
|
||||
@@ -30,6 +28,12 @@
|
||||
|
||||
<div class="post_body">
|
||||
<ul class="post_details clearfix">
|
||||
@if($news->region && $news->region->title != "Regio")
|
||||
<li class="detail category"><i class="fa-solid fa-location-dot"></i> Regio <a href="{{route('nieuws.regio', $news->region->slug)}}" title="{{$news->region->title}}">{{$news->region->title}}</a></li>
|
||||
@endif
|
||||
@if($news->theme && $news->theme->title != "Overig")
|
||||
<li class="detail category"><i class="fa-solid fa-tag fa-rotate-90"></i> Thema <a href="{{route('nieuws.thema', $news->theme->slug)}}" title="{{$news->theme->title}}">{{$news->theme->title}}</a></li>
|
||||
@endif
|
||||
<li class="detail date">
|
||||
<i class="fa-regular fa-clock"></i>
|
||||
{{Formatter::relativeDate($news->published)}} om {{$news->published->format('H:i')}}
|
||||
@@ -47,6 +51,30 @@
|
||||
</ul>
|
||||
|
||||
|
||||
@if($news->podcast)
|
||||
@include('widgets/mediaplayer')
|
||||
<div class="announcement">
|
||||
<div>
|
||||
<audio controls>
|
||||
<source src="{{ $url = url( $apiUrl . 'podcast/download' . $news->podcast->url . "?auth=" . $news->podcast->auth )}}" type="audio/mpeg" />
|
||||
</audio>
|
||||
</div>
|
||||
<ul class="post_details clearfix">
|
||||
<li class="detail date">
|
||||
<i class="fa-regular fa-clock"></i>
|
||||
{{ Formatter::relativeDate($news->podcast->created) }} uitgezonden
|
||||
@if($news->podcast->program) in <a href="{{ route('programma') . $news->podcast->program->url }}">{{ $news->podcast->program->name }}</a> @endif
|
||||
</li>
|
||||
<li class="detail category">
|
||||
<a href="{{ route('gemist.fragment') . $news->podcast->url }}">
|
||||
<span class="fa "></span>
|
||||
<span>Meer over dit fragment</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="post_content clearfix">
|
||||
<div class="content_box">
|
||||
@if($news->images)
|
||||
@@ -95,10 +123,6 @@
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if($news->podcast)
|
||||
@include('widgets/podcastplayer', ['podcast' => $news->podcast])
|
||||
@endif
|
||||
|
||||
@if($news->source && $news->source->show)
|
||||
<div class="post-source">
|
||||
<p>Bron: {{$news->source->title}}</p>
|
||||
@@ -109,6 +133,26 @@
|
||||
@include('widgets/share')
|
||||
--}}
|
||||
|
||||
{{--
|
||||
<ul class="taxonomies tags left clearfix">
|
||||
@if($news->keywords)
|
||||
@foreach($news->keywords as $keyword)
|
||||
<li>
|
||||
<a href="{{route('nieuws/onderwerp/' . $keyword)}}" title="Zoek meer nieuws met het onderwerp {{$keyword}}">{{$keyword}}</a>
|
||||
</li>
|
||||
@endforeach
|
||||
@endif
|
||||
</ul>
|
||||
--}}
|
||||
<ul class="post_tags clearfix">
|
||||
<li>Tags:</li>
|
||||
<li>
|
||||
<a href="{{route('nieuws.thema', $news->theme->slug)}}" title="Zoek meer nieuws met het thema {{$news->theme->title}}">{{$news->theme->title}}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{route('nieuws.regio', $news->region->slug)}}" title="Zoek meer nieuws uit de regio {{$news->region->title}}">{{$news->region->title}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="share_buttons row">
|
||||
<div class="col-12 col-md-auto">
|
||||
<a data-share="native" href="javascript:void(0)" class="btn">
|
||||
|
||||
@@ -51,11 +51,16 @@
|
||||
title="{{strip_tags($item->title)}}">{!!$item->title!!}</a>
|
||||
</h2>
|
||||
<ul class="post_details clearfix">
|
||||
@foreach($item->tags as $tag)
|
||||
<li class="detail category"><i class="fa-solid fa-location-dot"></i> <a
|
||||
href="{{route('nieuws.tag', $tag->slug)}}"
|
||||
title="{{$tag->titel}}">{{$tag->titel}}</a></li>
|
||||
@endforeach
|
||||
@if($item->region)
|
||||
<li class="detail category"><i class="fa-solid fa-location-dot"></i> Regio <a
|
||||
href="{{route('nieuws.regio', $item->region->slug)}}"
|
||||
title="{{$item->region->title}}">{{$item->region->title}}</a></li>
|
||||
@endif
|
||||
@if($item->theme)
|
||||
<li class="detail category"><i class="fa-solid fa-tag fa-rotate-90"></i> Thema
|
||||
<a href="{{route('nieuws.thema', $item->theme->slug)}}"
|
||||
title="{{$item->theme->title}}">{{$item->theme->title}}</a></li>
|
||||
@endif
|
||||
@if($item->edited && ($item->edited != $item->published))
|
||||
<li class="date edited">
|
||||
<i class="fa-regular fa-clock"></i>
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
<div class="announcement">
|
||||
<div>
|
||||
<audio controls>
|
||||
<source src="{{ $url = url( $apiUrl . "podcast/stream" . $item->podcast->url . "?auth=" . $item->podcast->auth )}}" type="audio/mpeg" />
|
||||
<source src="{{ $url = url( $apiUrl . "podcast/download" . $item->podcast->url . "?auth=" . $item->podcast->auth )}}" type="audio/mpeg" />
|
||||
</audio>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
@php($block->image->url = isset($block->image->crops)
|
||||
? $block->image->crops->{'16:9'}->{'1600'}
|
||||
: $block->image->crop)
|
||||
<a href="{{$block->image->url}}" class="post_image page_margin_top prettyPhoto" rel="prettyPhoto"
|
||||
title="{{$block->image->title}}">
|
||||
<a href="{{$block->image->url}}" class="post_image page_margin_top prettyPhoto" rel="prettyPhoto" title="{{$block->image->title}}">
|
||||
<img src="{{$block->image->url}}" alt="{{$block->image->title}}">
|
||||
</a>
|
||||
<div class="sentence margin_top_10">
|
||||
@@ -39,10 +38,8 @@
|
||||
else $image = null;
|
||||
?>
|
||||
@if($image)
|
||||
<a class="post_image page_margin_top prettyPhoto" rel="prettyPhoto" href="{{$image}}"
|
||||
title="{{$block->image->title}} © {{$block->image->author}}">
|
||||
<img src="{{$image}}" class="attachment-small-slider-thumb size-small-slider-thumb wp-post-image"
|
||||
alt="{{$block->image->title}}" title="" style="display: block;">
|
||||
<a class="post_image page_margin_top prettyPhoto" rel="prettyPhoto" href="{{$image}}" title="{{$block->image->title}} © {{$block->image->author}}">
|
||||
<img src="{{$image}}" class="attachment-small-slider-thumb size-small-slider-thumb wp-post-image" alt="{{$block->image->title}}" title="" style="display: block;">
|
||||
</a>
|
||||
<div class="sentence">
|
||||
<?php
|
||||
@@ -93,8 +90,7 @@
|
||||
?>
|
||||
@if($img)
|
||||
<li>
|
||||
<a href="{{$img}}" class="post_image prettyPhoto" rel="prettyPhoto[gallery]"
|
||||
title="{{$image->image->title}} © {{$image->image->author}}">
|
||||
<a href="{{$img}}" class="post_image prettyPhoto" rel="prettyPhoto[gallery]" title="{{$image->image->title}} © {{$image->image->author}}">
|
||||
<img src="{{$img}}" alt="{{$image->image->title}}" title="{{$image->image->title}}">
|
||||
</a>
|
||||
</li>
|
||||
@@ -103,42 +99,7 @@
|
||||
</ul>
|
||||
</div>
|
||||
@elseif($block->type == "oembed")
|
||||
<div class="oembed" data-url="{{$block->url}}">{!!$block->html!!}</div>
|
||||
@elseif($block->type == "podcast" && $block->id == $news->podcast?->id)
|
||||
@include('widgets/podcastplayer', ['podcast' => $news->podcast])
|
||||
<? $news->podcast = null; // Avoid adding the player again ?>
|
||||
@elseif($block->type == 'article' && count($block->articles) && $block->articles[0]->published)
|
||||
<div class="block">
|
||||
<h4 class="box_header"><span>{{ $block->title }}</span></h4>
|
||||
<div class="box full-width">
|
||||
<ul id="items-more-news" class="blog">
|
||||
@foreach($block->articles as $article)
|
||||
<? if(!isset($article->published)) continue;
|
||||
$article->published = new \DateTime($article->published); ?>
|
||||
<li class="post">
|
||||
<div class="row">
|
||||
@if($article->image)
|
||||
<div class="col-4">
|
||||
<a href="{{ route('nieuws.detail', ['id' => $article->id, 'title' => $article->slug]) }}"
|
||||
title="{{ $article->title }}">
|
||||
<img src="{{ $article->image }}" alt="{{ $article->image_title }}">
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
||||
<div class="col-8">
|
||||
<h2 class="post_title"><a class="clipText clipText-3"
|
||||
href="{{ route('nieuws.detail', ['id' => $article->id, 'title' => $article->slug]) }}"
|
||||
title="{!! $article->title !!}">{!! $article->title !!}</a></h2>
|
||||
<span class="post_date" title="Vandaag om 09:30">
|
||||
<i class="fa-regular fa-clock"></i>
|
||||
{{Formatter::relativeDate($article->published)}} om {{$article->published->format('H:i')}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oembed" data-url="{{$block->url}}">{!!$block->html!!}</div>
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<div>
|
||||
@foreach($podcasts as $podcast)
|
||||
<?php
|
||||
$url = ($isPodcast ? '/podcast/aflevering' : '/gemist/fragment') . $podcast->url;
|
||||
$url = route('gemist.fragment') . $podcast->url;
|
||||
$popoutUrl = route('luister.podcast') . $podcast->url . '?auth=' . $podcast->auth;
|
||||
?>
|
||||
<div class="box full-width featured">
|
||||
@@ -15,16 +15,16 @@
|
||||
<h2 class="post_title"><a href="{{$url}}" title="{{$podcast->title}}">{!!$podcast->titleWithoutProgram()!!}</a></h2>
|
||||
<div class="sub_title">
|
||||
@if ($podcast->program)
|
||||
<a class="program_name" href="/{{ ($isPodcast ? 'podcast' : 'programma') . $podcast->program->url }}"
|
||||
<a class="program_name" href="{{ route('programma') . $podcast->program->url }}"
|
||||
title="{{$podcast->program->name}}">{{$podcast->program->name}}</a>
|
||||
@endif
|
||||
<span class="post_date" title="{{Formatter::relativeDate($podcast->created)}}">
|
||||
<i class="fa-regular fa-clock"></i> {{Formatter::relativeDate($podcast->created)}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="clipText clipText-7" title="{{strip_tags($podcast->content)}}">
|
||||
<p class="clipText clipText-7" title="{{strip_tags($podcast->content)}}">
|
||||
{!!$podcast->content!!}
|
||||
</div>
|
||||
</p>
|
||||
<a class="action_button btn player" href="{{$popoutUrl}}">
|
||||
<span class="fa fa-external-link-alt"></span>
|
||||
<span>Luister in nieuw venster</span>
|
||||
|
||||
@@ -20,7 +20,7 @@ $actionButton = array_merge([
|
||||
?>
|
||||
<ul id="{{$id ?? ''}}" class="{{$ul['class']}}">
|
||||
@foreach($podcasts as $podcast)
|
||||
<?php $url = ($isPodcast ? '/podcast/aflevering' : '/gemist/fragment') . $podcast->url; ?>
|
||||
<?php $url = route('gemist.fragment') . $podcast->url; ?>
|
||||
<li style="{{$li['style']}}" class="post {{$li['class']}}">
|
||||
<div style="{{$content['style']}}" class="post_content {{$content['class']}}">
|
||||
<h2 class="post_title">
|
||||
@@ -43,9 +43,9 @@ $actionButton = array_merge([
|
||||
</a>
|
||||
@endif
|
||||
@if($body['show'])
|
||||
<div class="post_body {{$body['class']}}">
|
||||
<p class="post_body {{$body['class']}}">
|
||||
{!!$podcast->content!!}
|
||||
</div>
|
||||
</p>
|
||||
@endif
|
||||
@if(isset($showAction) && $showAction)
|
||||
<div class="action_button {{$actionButton['class']}}">
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
<a class="box full-width full-height" href="{{route('programma') . $item['program']->url}}"
|
||||
title="{{$item['program']->name . ($item['program']->tagline ? "\n" . $item['program']->tagline : "")}}">
|
||||
<img src="{{$item['program']->image ?? 'images/noimage.png'}}">
|
||||
@if($isCurrent)
|
||||
<div href="{{route('luister.live')}}" class="onair" title="Nu live!">Nu live!</div>
|
||||
@endif
|
||||
<div class="program-title">
|
||||
@if($isCurrent)
|
||||
<div class="current-marker"><span>On air</span></div>
|
||||
@endif
|
||||
{{$item['program']->name}}
|
||||
</div>
|
||||
<div class="program-times"><i class="fa-regular fa-clock"></i>
|
||||
@@ -26,5 +26,5 @@
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endforeach
|
||||
|
||||
|
||||
@@ -4,11 +4,9 @@
|
||||
|
||||
@section('title')
|
||||
@if ($podcast)
|
||||
{{ $podcast->title }}
|
||||
@elseif($isPodcast)
|
||||
NH Gooi Podcast
|
||||
@else
|
||||
Fragment gemist
|
||||
@else
|
||||
Fragment {{$title}} niet gevonden
|
||||
@endif
|
||||
@endsection
|
||||
|
||||
@@ -20,18 +18,14 @@
|
||||
<ul class="bread_crumb">
|
||||
<li><a title="Home" href="/">Home</a></li>
|
||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
@if($isPodcast)
|
||||
<li>NH Gooi podcast</li>
|
||||
@else
|
||||
<li><a title="Home" href="/gemist/fragment">Fragment gemist</a></li>
|
||||
@endif
|
||||
<li><a title="Fragment gemist" href="{{route('gemist')}}">Fragment gemist</a></li>
|
||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
@if($podcast && $podcast->program)
|
||||
<li><a title="{{$podcast->program->name}}"
|
||||
href="{{route('gemist.programma') . $podcast->program->url}}">{{$podcast->program->name}}</a></li>
|
||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
@endif
|
||||
<li>{{ $podcast->title }}</li>
|
||||
<li>Fragment</li>
|
||||
</ul>
|
||||
@endsection
|
||||
|
||||
@@ -90,7 +84,6 @@
|
||||
@if ($podcast)
|
||||
<?php
|
||||
$audioUrl = url($apiUrl . 'podcast/download' . $podcast->url . "?auth=" . $podcast->auth);
|
||||
$streamUrl = url($apiUrl . 'podcast/stream' . $podcast->url . "?auth=" . $podcast->auth);
|
||||
$popoutUrl = route('luister.podcast') . $podcast->url . '?auth=' . $podcast->auth;
|
||||
?>
|
||||
|
||||
@@ -98,6 +91,7 @@
|
||||
<div class="row news_post">
|
||||
<div class="col-12 col-md content_container">
|
||||
<div class="box full-width post single small_image md_margin_top">
|
||||
<h1 class="page_title">{{$podcast->title}}</h1>
|
||||
<div class="post_body">
|
||||
<ul class="post_details clearfix">
|
||||
<li class="detail date">
|
||||
@@ -106,14 +100,14 @@
|
||||
</li>
|
||||
@if($podcast->program)
|
||||
<li class="detail author">
|
||||
<a href="/{{ ($isPodcast ? 'podcast' : 'programma') . $podcast->program->url }}">{{ $podcast->program->name }}</a>
|
||||
<a href="{{ route('programma') . $podcast->program->url }}">{{ $podcast->program->name }}</a>
|
||||
</li>
|
||||
@endif
|
||||
</ul>
|
||||
|
||||
<div class="announcement">
|
||||
<audio controls>
|
||||
<source src="{{$streamUrl}}" type="audio/mpeg"/>
|
||||
<source src="{{$audioUrl}}" type="audio/mpeg"/>
|
||||
</audio>
|
||||
<div class="clearfix">
|
||||
<a class="action_button btn" href="{{$audioUrl}}" title="Download dit fragment als MP3">
|
||||
@@ -156,15 +150,15 @@
|
||||
<div data-tabs>
|
||||
<div class="tabs">
|
||||
<h4 data-tab-content-id="tab_more_fragmenten"
|
||||
class="box_header small flex-grow-1 active"><span>Meer {{$isPodcast ? 'afleveringen' : 'fragmenten'}}</span>
|
||||
class="box_header small flex-grow-1 active"><span>Meer fragmenten</span>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="tab_more_fragmenten" class="box tab_content podcast_items active">
|
||||
@include('partial/podcastitems', ['id' => 'items-podcasts', 'showTime' => false, 'showImage' => false, 'podcasts' => $podcasts, 'isPodcast' => $isPodcast])
|
||||
@include('partial/podcastitems', ['id' => 'items-podcasts', 'showTime' => false, 'showImage' => false, 'podcasts' => $podcasts])
|
||||
<a class="btn auto_width" id="meer-nieuws-more-podcast" href="#"
|
||||
data-loadmorenews='{"container":["#items-podcasts"]}'>
|
||||
<span class="fas fa-spinner fa-spin" id="loading"></span>
|
||||
Meer {{$isPodcast ? 'afleveringen' : 'fragmenten'}}
|
||||
Meer fragmenten
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -79,8 +79,7 @@
|
||||
'class' => 'd-flex flex-column justify-content-end flex-grow-1'
|
||||
],
|
||||
'showAction' => true,
|
||||
'podcasts' => array_slice($podcasts, 0, 8),
|
||||
'isPodcast' => $isPodcast])
|
||||
'podcasts' => array_slice($podcasts, 0, 8)])
|
||||
</div>
|
||||
|
||||
@else
|
||||
@@ -99,7 +98,7 @@
|
||||
</h4>
|
||||
</div>
|
||||
<div id="tab_more_fragmenten" class="box tab_content podcast_items active">
|
||||
@include('partial/podcastitems', ['id' => 'items-podcasts', 'showTime' => false, 'showImage' => false, 'podcasts' => array_slice($podcasts, 8), 'isPodcast' => $isPodcast])
|
||||
@include('partial/podcastitems', ['id' => 'items-podcasts', 'showTime' => false, 'showImage' => false, 'podcasts' => array_slice($podcasts, 8)])
|
||||
<a class="btn auto_width" id="meer-nieuws-more-podcast" href="#"
|
||||
data-loadmorenews='{"container":["#items-podcasts"]}'>
|
||||
<span class="fas fa-spinner fa-spin" id="loading"></span>
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
@extends('layouts/full')
|
||||
|
||||
@section('title')
|
||||
@if(isset($program))
|
||||
{{ $program->name }}
|
||||
@else
|
||||
NH Gooi Podcast
|
||||
@endif
|
||||
Fragment gemist
|
||||
@endsection
|
||||
|
||||
@section('page_class')
|
||||
@@ -16,12 +12,14 @@
|
||||
<ul class="bread_crumb ">
|
||||
<li><a title="Home" href="/">Home</a></li>
|
||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
<li>NH Gooi podcast</li>
|
||||
@if(isset($program))
|
||||
<li><a title="Fragment gemist" href="{{route('gemist')}}">Fragment gemist</a></li>
|
||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
@if(isset($program))
|
||||
<li><a title="{{$program->name}}"
|
||||
href="/podcast{{$program->url}}">{{$program->name}}</a></li>
|
||||
href="{{route('gemist.programma') . $program->url}}">{{$program->name}}</a></li>
|
||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||
@endif
|
||||
<li>Fragmenten</li>
|
||||
</ul>
|
||||
@endsection
|
||||
|
||||
@@ -30,7 +28,8 @@
|
||||
<div class="row news_post">
|
||||
<div class="col-12 col-md content_container md_padding_top_80">
|
||||
@if(isset($program))
|
||||
<div class="no-box full-width post single">
|
||||
<div class="box full-width post single">
|
||||
<h1 class="page_title">{{$program->name}}</h1>
|
||||
<div class="post_body">
|
||||
<div class="content_box clearfix section_margin_top">
|
||||
<div class="post_content page_margin_top_section ">
|
||||
@@ -44,12 +43,12 @@
|
||||
|
||||
<div class="page_layout clearfix">
|
||||
<div class="grid" id="items">
|
||||
@include('partial/podcastdirectitems', ['podcasts' => array_slice($podcasts, 0, 2), 'isPodcast' => $isPodcast])
|
||||
@include('partial/podcastdirectitems', ['podcasts' => array_slice($podcasts, 0, 2)])
|
||||
</div><!--/.row-->
|
||||
</div>
|
||||
@else
|
||||
<div class="box full-width">
|
||||
<p class="page_body">Er zijn geen items beschikbaar.</p>
|
||||
<p class="page_body">Er zijn geen fragmenten beschikbaar.</p>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@@ -63,7 +62,7 @@
|
||||
</h4>
|
||||
</div>
|
||||
<div id="tab_more_fragmenten" class="box tab_content podcast_items active">
|
||||
@include('partial/podcastitems', ['id' => 'items-podcasts', 'showTime' => false, 'showImage' => false, 'podcasts' => array_slice($podcasts, 2), 'isPodcast' => $isPodcast])
|
||||
@include('partial/podcastitems', ['id' => 'items-podcasts', 'showTime' => false, 'showImage' => false, 'podcasts' => array_slice($podcasts, 2)])
|
||||
<a class="btn auto_width" id="meer-nieuws-more-podcast" href="#"
|
||||
data-loadmorenews='{"container":["#items-podcasts"]}'>
|
||||
<span class="fas fa-spinner fa-spin" id="loading"></span>
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
<div id="host" class="box">
|
||||
<ul class="list">
|
||||
@foreach($hosts as $host)
|
||||
<li><i class="fa-solid fa-user-tie"></i> {{ $host->name }}</li>
|
||||
<li><i class="fa-solid fa-user-tie"></i> {{ Html::mailto($host->email . '@nhgooi.nl', $host->name, ['class' => 'action_button']) }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<h2>Contact met de redactie</h2>
|
||||
<p>Heb jij een tip voor onze streekredactie? Bel of app de tiplijn:
|
||||
<a href="tel:06 - 42 91 36 37" target="_blank">06 - 42 91 36 37</a>, stuur een
|
||||
<a href="mailto:info@nhgooi.nl">mail</a> of kom langs op de Gooise Brink,
|
||||
<a href="mailto:info@nhgooi.nl">mail</a> of kom lang op de Gooise Brink,
|
||||
Kerkstraat 63/27 in Hilversum</p>
|
||||
<a class="read_more" href="{{url('contact')}}">Contactinformatie <i class="fa-solid fa-angle-right"></i></a>
|
||||
<a class="read_more" href="{{url('contact')}}">Lees meer <i class="fa-solid fa-angle-right"></i></a>
|
||||
</div>
|
||||
|
||||
@@ -119,9 +119,13 @@ function buildMenu($menu, $ismobile)
|
||||
<nav class="d-none d-md-flex">
|
||||
<div></div>
|
||||
<ul class="menu d-none d-lg-block">
|
||||
<li class="{{isActive('/', false) || isActive('/nieuws', false) ? "selected" : ""}}">
|
||||
<a href="/" title="Nieuws">Nieuws</a>
|
||||
<li class="{{isActive('/', false) ? "selected" : ""}}">
|
||||
<a href="/" title="Home">Home</a>
|
||||
</li>
|
||||
<?php /*@php($newsUrl = '/nieuws')
|
||||
<li class="{{isActive($newsUrl, false) ? "selected" : ""}}">
|
||||
<a href="{{$newsUrl}}" title="Nieuws">Nieuws</a>
|
||||
</li>*/ ?>
|
||||
{!! buildMenu($menu, false) !!}
|
||||
<li></li>
|
||||
</ul>
|
||||
@@ -138,8 +142,12 @@ function buildMenu($menu, $ismobile)
|
||||
<a href="javascript:void(0)"><i class="fa-solid fa-xmark"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="{{isActive('/', false) || isActive('/nieuws', false) ? "selected" : ""}}">
|
||||
<a href="/" title="Nieuws">Nieuws</a>
|
||||
<li class="{{isActive('/', false) ? "selected" : ""}}">
|
||||
<a href="/" title="Home">Home</a>
|
||||
</li>
|
||||
@php($newsUrl = '/nieuws')
|
||||
<li class="{{isActive($newsUrl, false) ? "selected" : ""}}">
|
||||
<a href="{{$newsUrl}}" title="Nieuws">Nieuws</a>
|
||||
</li>
|
||||
{!! buildMenu($menu, true) !!}
|
||||
</ul>
|
||||
|
||||
@@ -33,11 +33,9 @@
|
||||
$(document).on('onAirUpdated', function (evt, data) {
|
||||
var title = data.current ? data.current.title : '';
|
||||
var artist = data.current ? data.current.artist : '';
|
||||
if (!data.current) {
|
||||
// title = data.program.name;
|
||||
// artist = data.program.tagline;
|
||||
$nowPlaying.container.slideUp();
|
||||
return;
|
||||
if (data.inProgram) {
|
||||
title = data.program.name;
|
||||
artist = data.program.tagline;
|
||||
}
|
||||
$nowPlaying.title.text(title).attr('title', title);
|
||||
$nowPlaying.artist.text(artist).attr('title', artist);
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
<div class="content pt-2">
|
||||
@if($podcast == null)
|
||||
<span>De podcast kan helaas (op dit moment) niet weergegeven worden.</span>
|
||||
@else
|
||||
@include('widgets/mediaplayer')
|
||||
|
||||
@if ($podcast)
|
||||
<?php
|
||||
$audioUrl = url($apiUrl . 'podcast/download' . $podcast->url . "?auth=" . $podcast->auth);
|
||||
$popoutUrl = route('luister.podcast') . $podcast->url . '?auth=' . $podcast->auth;
|
||||
?>
|
||||
<div class="announcement p-3">
|
||||
<h3 class="page_title">{{$podcast->title}}</h3>
|
||||
<div class="post_body">
|
||||
<ul class="post_details clearfix">
|
||||
<li class="detail date">
|
||||
<i class="fa-regular fa-clock"></i>
|
||||
{{ Formatter::relativeDate($podcast->created) }}
|
||||
</li>
|
||||
@if($podcast->program)
|
||||
<li class="detail author">
|
||||
<a href="{{ route('programma') . $podcast->program->url }}">{{ $podcast->program->name }}</a>
|
||||
</li>
|
||||
@endif
|
||||
</ul>
|
||||
|
||||
<audio controls>
|
||||
<source src="{{$audioUrl}}" type="audio/mpeg" />
|
||||
</audio>
|
||||
<div class="clearfix">
|
||||
<a class="action_button btn" href="{{$audioUrl}}" title="Download dit fragment als MP3">
|
||||
<span>Download fragment</span>
|
||||
</a>
|
||||
<a class="action_button btn player" href="{{$popoutUrl}}">
|
||||
<span>Luister in nieuw venster</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="row content_box clearfix mt-2">
|
||||
@if($podcast->image)
|
||||
<div class="col-3">
|
||||
<img src="{{$imgBase . $podcast->image->url}}" title="{{$podcast->image->title}}"
|
||||
style="display: block; width: 100%;" />
|
||||
<div class="sentence">
|
||||
<span class="text">{{$podcast->image->title}}</span>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="col excerpt">{!!$podcast->content!!}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
</div>
|
||||
@@ -17,7 +17,6 @@ Route::get('/nieuws', 'NewsController@overview')->name('nieuws');
|
||||
Route::get('/nieuws/more', 'NewsController@more')->name('nieuws.more');
|
||||
Route::get('/nieuws/populair', 'NewsController@populair')->name('nieuws.populair');
|
||||
Route::get('/nieuws/regio/{region}', 'NewsController@regionlist' )->where(['region' => '[a-z0-9]+'])->name('nieuws.regio');
|
||||
Route::get('/nieuws/tag/{tag}', 'NewsController@taglist' )->where(['tag' => '[a-z0-9-]+'])->name('nieuws.tag');
|
||||
Route::get('/nieuws/thema/{theme}', 'NewsController@themelist' )->where(['themelist' => '[a-z0-9]+'])->name('nieuws.thema');
|
||||
Route::get('/nieuws/{id}/{title}', 'NewsController@show')->where(['id' => '\d+'])->name('nieuws.detail');
|
||||
Route::get('/nieuws/zoeken/{query}', 'NewsController@search')->name('nieuws.zoeken');
|
||||
@@ -53,7 +52,6 @@ Route::get('/luister/fragment')->name('luister.podcast');
|
||||
Route::get('/luister/programma/{year}/{month}/{day}/{hour}/{duration}/{offset?}', 'StreamController@program')
|
||||
->where(['id' => '\d+', 'year' => '20\d\d', 'month' => '\d\d?', 'day' => '\d\d?', 'hour' => '\d\d?', 'duration' => '\d\d?', 'offset' => '\d\d?']);
|
||||
Route::get('/luister/programma')->name('luister.programma');
|
||||
Route::get('/luister/fragment/inline/{id}', 'StreamController@inline')->where(['id' => '\d+']);
|
||||
|
||||
Route::get('/gemist', 'RadioController@podcasts')->name('gemist');
|
||||
Route::get('/gemist/zoeken/{query}', 'RadioController@searchpodcast')->name('gemist.zoeken');
|
||||
@@ -69,10 +67,10 @@ 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+'])->name('podcast.overzicht');
|
||||
Route::get('/podcast/{programma}/{title}', 'PodcastController@podcasts')->where(['programma' => '\d+']);
|
||||
Route::get('/podcast/fragment/{id}/{title}', 'RadioController@podcast')->where(['id' => '\d+', 'title' => '.*']);
|
||||
Route::get('/podcast/aflevering/{id}/{title}', 'PodcastController@podcast')->where(['id' => '\d+']);
|
||||
Route::get('/podcast/zoeken/{query}', 'RadioController@searchpodcast')->name('podcast.zoeken');
|
||||
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));
|
||||
|
||||
26
vendor/composer/autoload_classmap.php
vendored
26
vendor/composer/autoload_classmap.php
vendored
@@ -2646,19 +2646,19 @@ return array(
|
||||
'Mockery\\Undefined' => $vendorDir . '/mockery/mockery/library/Mockery/Undefined.php',
|
||||
'Mockery\\VerificationDirector' => $vendorDir . '/mockery/mockery/library/Mockery/VerificationDirector.php',
|
||||
'Mockery\\VerificationExpectation' => $vendorDir . '/mockery/mockery/library/Mockery/VerificationExpectation.php',
|
||||
'Model\\Blog' => $baseDir . '/app/Models/Blog.php',
|
||||
'Model\\CalendarEvent' => $baseDir . '/app/Models/CalendarEvent.php',
|
||||
'Model\\JobOpening' => $baseDir . '/app/Models/JobOpening.php',
|
||||
'Model\\Kerkdienst' => $baseDir . '/app/Models/Kerkdienst.php',
|
||||
'Model\\MetaData' => $baseDir . '/app/Models/MetaData.php',
|
||||
'Model\\Model' => $baseDir . '/app/Models/Model.php',
|
||||
'Model\\NewsImage' => $baseDir . '/app/Models/NewsImage.php',
|
||||
'Model\\NewsItem' => $baseDir . '/app/Models/NewsItem.php',
|
||||
'Model\\NewsSource' => $baseDir . '/app/Models/NewsSource.php',
|
||||
'Model\\Podcast' => $baseDir . '/app/Models/Podcast.php',
|
||||
'Model\\Program' => $baseDir . '/app/Models/Program.php',
|
||||
'Model\\ProgramHost' => $baseDir . '/app/Models/ProgramHost.php',
|
||||
'Model\\Track' => $baseDir . '/app/Models/Track.php',
|
||||
'Model\\Blog' => '/srv/api/common/classes/Blog.php',
|
||||
'Model\\CalendarEvent' => '/srv/api/common/classes/CalendarEvent.php',
|
||||
'Model\\JobOpening' => '/srv/api/common/classes/JobOpening.php',
|
||||
'Model\\Kerkdienst' => '/srv/api/common/classes/Kerkdienst.php',
|
||||
'Model\\MetaData' => '/srv/api/common/classes/MetaData.php',
|
||||
'Model\\Model' => '/srv/api/common/classes/Model.php',
|
||||
'Model\\NewsImage' => '/srv/api/common/classes/NewsImage.php',
|
||||
'Model\\NewsItem' => '/srv/api/common/classes/NewsItem.php',
|
||||
'Model\\NewsSource' => '/srv/api/common/classes/NewsSource.php',
|
||||
'Model\\Podcast' => '/srv/api/common/classes/Podcast.php',
|
||||
'Model\\Program' => '/srv/api/common/classes/Program.php',
|
||||
'Model\\ProgramHost' => '/srv/api/common/classes/ProgramHost.php',
|
||||
'Model\\Track' => '/srv/api/common/classes/Track.php',
|
||||
'Monolog\\Attribute\\AsMonologProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php',
|
||||
'Monolog\\DateTimeImmutable' => $vendorDir . '/monolog/monolog/src/Monolog/DateTimeImmutable.php',
|
||||
'Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php',
|
||||
|
||||
2
vendor/composer/autoload_psr4.php
vendored
2
vendor/composer/autoload_psr4.php
vendored
@@ -56,7 +56,7 @@ return array(
|
||||
'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'),
|
||||
'NunoMaduro\\Collision\\' => array($vendorDir . '/nunomaduro/collision/src'),
|
||||
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
|
||||
'Model\\' => array($baseDir . '/app/Models'),
|
||||
'Model\\' => array('/srv/api/common/classes'),
|
||||
'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'),
|
||||
'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'),
|
||||
'League\\Config\\' => array($vendorDir . '/league/config/src'),
|
||||
|
||||
28
vendor/composer/autoload_static.php
vendored
28
vendor/composer/autoload_static.php
vendored
@@ -381,7 +381,7 @@ class ComposerStaticInit5216a35d72a5119d2f4646cd700f802d
|
||||
),
|
||||
'Model\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/../..' . '/app/Models',
|
||||
0 => '/srv/api/common/classes',
|
||||
),
|
||||
'League\\MimeTypeDetection\\' =>
|
||||
array (
|
||||
@@ -3169,19 +3169,19 @@ class ComposerStaticInit5216a35d72a5119d2f4646cd700f802d
|
||||
'Mockery\\Undefined' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Undefined.php',
|
||||
'Mockery\\VerificationDirector' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/VerificationDirector.php',
|
||||
'Mockery\\VerificationExpectation' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/VerificationExpectation.php',
|
||||
'Model\\Blog' => __DIR__ . '/../..' . '/app/Models/Blog.php',
|
||||
'Model\\CalendarEvent' => __DIR__ . '/../..' . '/app/Models/CalendarEvent.php',
|
||||
'Model\\JobOpening' => __DIR__ . '/../..' . '/app/Models/JobOpening.php',
|
||||
'Model\\Kerkdienst' => __DIR__ . '/../..' . '/app/Models/Kerkdienst.php',
|
||||
'Model\\MetaData' => __DIR__ . '/../..' . '/app/Models/MetaData.php',
|
||||
'Model\\Model' => __DIR__ . '/../..' . '/app/Models/Model.php',
|
||||
'Model\\NewsImage' => __DIR__ . '/../..' . '/app/Models/NewsImage.php',
|
||||
'Model\\NewsItem' => __DIR__ . '/../..' . '/app/Models/NewsItem.php',
|
||||
'Model\\NewsSource' => __DIR__ . '/../..' . '/app/Models/NewsSource.php',
|
||||
'Model\\Podcast' => __DIR__ . '/../..' . '/app/Models/Podcast.php',
|
||||
'Model\\Program' => __DIR__ . '/../..' . '/app/Models/Program.php',
|
||||
'Model\\ProgramHost' => __DIR__ . '/../..' . '/app/Models/ProgramHost.php',
|
||||
'Model\\Track' => __DIR__ . '/../..' . '/app/Models/Track.php',
|
||||
'Model\\Blog' => '/srv/api/common/classes/Blog.php',
|
||||
'Model\\CalendarEvent' => '/srv/api/common/classes/CalendarEvent.php',
|
||||
'Model\\JobOpening' => '/srv/api/common/classes/JobOpening.php',
|
||||
'Model\\Kerkdienst' => '/srv/api/common/classes/Kerkdienst.php',
|
||||
'Model\\MetaData' => '/srv/api/common/classes/MetaData.php',
|
||||
'Model\\Model' => '/srv/api/common/classes/Model.php',
|
||||
'Model\\NewsImage' => '/srv/api/common/classes/NewsImage.php',
|
||||
'Model\\NewsItem' => '/srv/api/common/classes/NewsItem.php',
|
||||
'Model\\NewsSource' => '/srv/api/common/classes/NewsSource.php',
|
||||
'Model\\Podcast' => '/srv/api/common/classes/Podcast.php',
|
||||
'Model\\Program' => '/srv/api/common/classes/Program.php',
|
||||
'Model\\ProgramHost' => '/srv/api/common/classes/ProgramHost.php',
|
||||
'Model\\Track' => '/srv/api/common/classes/Track.php',
|
||||
'Monolog\\Attribute\\AsMonologProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php',
|
||||
'Monolog\\DateTimeImmutable' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/DateTimeImmutable.php',
|
||||
'Monolog\\ErrorHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/ErrorHandler.php',
|
||||
|
||||
Reference in New Issue
Block a user