Compare commits
38 Commits
fix-layout
...
feature/ap
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9698f9b103 | ||
|
|
8d1e79f1b7 | ||
|
|
7f07a28b98 | ||
|
|
cff9948dda | ||
|
|
059b1ed47a | ||
|
|
0699269fb2 | ||
|
|
a3e8b05008 | ||
|
|
389e5c6523 | ||
| ba06608ee0 | |||
| 8da0481296 | |||
| 885ce2b2cc | |||
|
|
6d91e1d3ca | ||
|
|
5ebf7f20be | ||
|
|
cc1eba5959 | ||
|
|
3b55a1cf42 | ||
|
|
f4444d44e3 | ||
|
|
35713d2974 | ||
|
|
6044a670d7 | ||
|
|
173d9dcaf6 | ||
|
|
a7d1347319 | ||
|
|
92769463cd | ||
|
|
47eb0952d4 | ||
|
|
e7bae27951 | ||
|
|
50d6a97fce | ||
|
|
9d96efc022 | ||
|
|
539dd88d42 | ||
|
|
d9c933b79a | ||
|
|
84355b1121 | ||
|
|
e551e55158 | ||
|
|
2799b1843f | ||
|
|
52f38b4c00 | ||
|
|
e2f114a7a8 | ||
|
|
cc58f5931c | ||
|
|
23d88ac143 | ||
|
|
56adc60788 | ||
|
|
2db970e8c6 | ||
|
|
80256669b1 | ||
|
|
738107515c |
@@ -6,12 +6,6 @@ use \Illuminate\Http\Request;
|
|||||||
|
|
||||||
class CalendarController extends Controller
|
class CalendarController extends Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function show(Request $request, $id)
|
public function show(Request $request, $id)
|
||||||
{
|
{
|
||||||
parent::registerView($request, 'agenda', $id);
|
parent::registerView($request, 'agenda', $id);
|
||||||
@@ -25,7 +19,7 @@ class CalendarController extends Controller
|
|||||||
{
|
{
|
||||||
$apiResult = $this->API('agenda/overzicht');
|
$apiResult = $this->API('agenda/overzicht');
|
||||||
$calendar = [];
|
$calendar = [];
|
||||||
foreach($apiResult as $calendarItem)
|
foreach($apiResult->events as $calendarItem)
|
||||||
{
|
{
|
||||||
$calendar[] = new \Model\CalendarEvent($calendarItem);
|
$calendar[] = new \Model\CalendarEvent($calendarItem);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,14 +22,14 @@ class Controller extends BaseController
|
|||||||
$data = json_decode(Storage::disk('local')->get($file));
|
$data = json_decode(Storage::disk('local')->get($file));
|
||||||
foreach ($path as $subobject) {
|
foreach ($path as $subobject) {
|
||||||
$data = $data->$subobject;
|
$data = $data->$subobject;
|
||||||
}
|
}
|
||||||
$items = [];
|
$items = [];
|
||||||
foreach ($data as $item_data) {
|
foreach ($data as $item_data) {
|
||||||
$items[] = new $class($item_data);
|
$items[] = new $class($item_data);
|
||||||
if ($maxItems && count($items) == $maxItems) {
|
if ($maxItems && count($items) == $maxItems) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $items;
|
return $items;
|
||||||
}
|
}
|
||||||
@@ -39,27 +39,20 @@ class Controller extends BaseController
|
|||||||
View::share('apiUrl', $this->API_URL = env('API_URL', 'http://api.6fm.nl/'));
|
View::share('apiUrl', $this->API_URL = env('API_URL', 'http://api.6fm.nl/'));
|
||||||
View::share('imgBase', env('IMAGE_BASE_URL', '/'));
|
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::share('onAir', file_get_contents(url('onair')));
|
||||||
View::composer('widgets.laatstenieuws', function ($view) {
|
View::composer('widgets.laatstenieuws', function ($view) {
|
||||||
$view->with('data', $this->getDataFromFileAndConvert('laatste_nieuws.json', ['news'], '\Model\NewsItem'));
|
$view->with('data', $this->getDataFromFileAndConvert('laatste_nieuws.json', ['news'], '\Model\NewsItem'));
|
||||||
});
|
});
|
||||||
View::composer('widgets.populairnieuws', function ($view) {
|
View::composer('widgets.populairnieuws', function ($view) {
|
||||||
$view->with('data', $this->getDataFromFileAndConvert('populair_nieuws.json', [], '\Model\NewsItem'));
|
$view->with('data', $this->getDataFromFileAndConvert('populair_nieuws.json', ['news'], '\Model\NewsItem'));
|
||||||
});
|
});
|
||||||
View::composer('widgets.nustraks', function ($view) {
|
View::composer('widgets.nustraks', function ($view) {
|
||||||
$data = json_decode(Storage::disk('local')->get('nu_straks.json'))->schedule;
|
$data = json_decode(Storage::disk('local')->get('nu_straks.json'))->schedule;
|
||||||
$programs = [];
|
$programs = [];
|
||||||
foreach ($data as $item_data) {
|
foreach ($data as $item_data) {
|
||||||
$programs[] = $program = new \Model\Program($item_data->program);
|
$programs[] = $program = new \Model\Program($item_data->program);
|
||||||
$program->start = new \DateTimeImmutable($item_data->start->date,
|
$program->start = self::JsonToDateTime($item_data->start);
|
||||||
new \DateTimeZone($item_data->start->timezone));
|
$program->end = self::JsonToDateTime($item_data->end);
|
||||||
$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
|
// Need a bit of slack here, otherwise the current program may show up
|
||||||
@@ -68,10 +61,8 @@ class Controller extends BaseController
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
foreach (array_reverse($data) as $item_data) {
|
foreach (array_reverse($data) as $item_data) {
|
||||||
$recent = $program = new \Model\Program($item_data->program);
|
$recent = $program = new \Model\Program($item_data->program);
|
||||||
$recent->start = new \DateTimeImmutable($item_data->start->date,
|
$recent->start = self::JsonToDateTime($item_data->start);
|
||||||
new \DateTimeZone($item_data->start->timezone));
|
$recent->end = self::JsonToDateTime($item_data->end);
|
||||||
$recent->end = new \DateTimeImmutable($item_data->end->date,
|
|
||||||
new \DateTimeZone($item_data->end->timezone));
|
|
||||||
if (($recent->end < $now) && (!$recent->nonstop) && (!$recent->rerun)) {
|
if (($recent->end < $now) && (!$recent->nonstop) && (!$recent->rerun)) {
|
||||||
$view->with('recent', $recent);
|
$view->with('recent', $recent);
|
||||||
break;
|
break;
|
||||||
@@ -92,7 +83,7 @@ class Controller extends BaseController
|
|||||||
});
|
});
|
||||||
View::composer('widgets.menu', function ($view) {
|
View::composer('widgets.menu', function ($view) {
|
||||||
$view->with('news', $this->getDataFromFileAndConvert('laatste_nieuws.json', ['news'], '\Model\NewsItem'))
|
$view->with('news', $this->getDataFromFileAndConvert('laatste_nieuws.json', ['news'], '\Model\NewsItem'))
|
||||||
->with('popular', $this->getDataFromFileAndConvert('populair_nieuws.json', [], '\Model\NewsItem', 3))
|
->with('popular', $this->getDataFromFileAndConvert('populair_nieuws.json', ['news'], '\Model\NewsItem', 3))
|
||||||
->with('podcasts',
|
->with('podcasts',
|
||||||
$this->getDataFromFileAndConvert('laatste_podcasts.json', ['podcasts'], '\Model\Podcast'));
|
$this->getDataFromFileAndConvert('laatste_podcasts.json', ['podcasts'], '\Model\Podcast'));
|
||||||
});
|
});
|
||||||
@@ -118,16 +109,16 @@ class Controller extends BaseController
|
|||||||
|
|
||||||
protected function API($url)
|
protected function API($url)
|
||||||
{
|
{
|
||||||
// if (strpos($url, 'nieuws/overzicht') !== false) {
|
|
||||||
// return json_decode(file_get_contents(__DIR__ . '/../../../storage/app/laatste_nieuws.json'));
|
|
||||||
// }
|
|
||||||
// return [];
|
|
||||||
|
|
||||||
$arrContextOptions = [
|
$arrContextOptions = [
|
||||||
'ssl' => [
|
'ssl' => [
|
||||||
"verify_peer" => false,
|
"verify_peer" => false,
|
||||||
"verify_peer_name" => 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)));
|
return json_decode(file_get_contents($this->API_URL . $url, false, stream_context_create($arrContextOptions)));
|
||||||
@@ -148,7 +139,7 @@ class Controller extends BaseController
|
|||||||
|
|
||||||
protected static function JsonToDateTime($obj)
|
protected static function JsonToDateTime($obj)
|
||||||
{
|
{
|
||||||
return new \DateTime($obj->date, new \DateTimeZone($obj->timezone));
|
return is_object($obj) ? new \DateTime($obj->date, new \DateTimeZone($obj->timezone)) : \Carbon\Carbon::parse($obj)->setTimezone(date_default_timezone_get());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __call($method, $arguments)
|
public function __call($method, $arguments)
|
||||||
@@ -166,8 +157,8 @@ class Controller extends BaseController
|
|||||||
public function getSidebareData()
|
public function getSidebareData()
|
||||||
{
|
{
|
||||||
$populair = [];
|
$populair = [];
|
||||||
$apiResult = $this->API('nieuws/populair?aantal=5');
|
$apiResult = $this->API('nieuws/populair?aantal=5');
|
||||||
foreach ($apiResult as $_newsItem) {
|
foreach ($apiResult->news as $_newsItem) {
|
||||||
$populair[] = new \Model\NewsItem($_newsItem);
|
$populair[] = new \Model\NewsItem($_newsItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,21 +14,17 @@ class HomeController extends Controller
|
|||||||
$news = [];
|
$news = [];
|
||||||
foreach ($apiResult->news as $newsItem) {
|
foreach ($apiResult->news as $newsItem) {
|
||||||
$news[] = new \Model\NewsItem($newsItem);
|
$news[] = new \Model\NewsItem($newsItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
$populair = [];
|
$populair = [];
|
||||||
$apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5');
|
$apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5');
|
||||||
foreach ($apiResult as $newsItem) {
|
foreach ($apiResult->news as $newsItem) {
|
||||||
$populair[] = new \Model\NewsItem($newsItem);
|
$populair[] = new \Model\NewsItem($newsItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
$podcasts = [];
|
$apiResult = $this->API('podcast/overzicht?aantal=15');
|
||||||
$apiResult = $this->API('podcast/overzicht?aantal=3');
|
$index = array_rand($apiResult->podcasts);
|
||||||
$podcast = new \Model\Podcast($apiResult->podcasts[0]);
|
$podcast = new \Model\Podcast($apiResult->podcasts[$index]);
|
||||||
foreach ($apiResult->podcasts as $_podcast) {
|
return view('home', ['populair' => $populair, 'podcast' => $podcast, 'title' => 'Home', 'news' => $news, 'searchURL' => 'nieuws/zoeken']);
|
||||||
$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)
|
private function listJobs(Request $request, $url, $title = null)
|
||||||
{
|
{
|
||||||
$page = (int)$request->get('pagina', 1);
|
$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 = [];
|
$jobs = [];
|
||||||
foreach($apiResult->jobs as $jobsItem)
|
#foreach($apiResult->jobs as $jobsItem)
|
||||||
{
|
#{
|
||||||
$jobs[] = new \Model\JobOpening($jobsItem);
|
# $jobs[] = new \Model\JobOpening($jobsItem);
|
||||||
}
|
#}
|
||||||
|
|
||||||
return view('jobslist', array_merge($this->getSidebareData(), ['title' => $title, 'jobs' => $jobs]));
|
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']);
|
//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;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
$source = $apiResult->source;
|
$source = $apiResult->source->article;
|
||||||
$newsItem->published = self::TimestampToDateTime($source->created);
|
$newsItem->published = self::TimestampToDateTime($source->created);
|
||||||
$newsItem->edited = self::TimestampToDateTime($source->updated);
|
$newsItem->edited = self::TimestampToDateTime($source->updated);
|
||||||
$newsItem->author = $source->author;
|
$newsItem->author = $source->author;
|
||||||
@@ -65,21 +65,26 @@ class NewsController extends Controller
|
|||||||
$id = $request->get('id', '');
|
$id = $request->get('id', '');
|
||||||
$populair = [];
|
$populair = [];
|
||||||
$apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5');
|
$apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1, $page) . '&aantal=5');
|
||||||
foreach ($apiResult as $_newsItem) {
|
foreach ($apiResult->news as $_newsItem) {
|
||||||
$populair[] = new \Model\NewsItem($_newsItem);
|
$populair[] = new \Model\NewsItem($_newsItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
return view('partial/newslist_small', ['id' => $id, 'news' => $populair]);
|
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)
|
public function regionlist(Request $request, $region)
|
||||||
{
|
{
|
||||||
return $this->listNews($request, 'regio/' . $region, ucfirst($region));
|
return $this->listNews($request, 'tag/' . $region, ucfirst($region));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function themelist(Request $request, $theme)
|
public function themelist(Request $request, $theme)
|
||||||
{
|
{
|
||||||
return $this->listNews($request, 'thema/' . $theme, ucfirst($theme));
|
return $this->listNews($request, 'tag/' . $theme, ucfirst($theme));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function search(Request $request, $query)
|
public function search(Request $request, $query)
|
||||||
@@ -145,7 +150,7 @@ class NewsController extends Controller
|
|||||||
}
|
}
|
||||||
$apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1,
|
$apiResult = $this->API('nieuws/populair?pagina=' . (int)max(1,
|
||||||
$page) . ($total ? '&aantal=' . $total : ''));
|
$page) . ($total ? '&aantal=' . $total : ''));
|
||||||
foreach ($apiResult as $newsItem) {
|
foreach ($apiResult->news as $newsItem) {
|
||||||
$populair[] = new \Model\NewsItem($newsItem);
|
$populair[] = new \Model\NewsItem($newsItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,7 +177,7 @@ class NewsController extends Controller
|
|||||||
{
|
{
|
||||||
$apiResult = $this->API('nieuws/populair');
|
$apiResult = $this->API('nieuws/populair');
|
||||||
$news = [];
|
$news = [];
|
||||||
foreach ($apiResult as $newsItem) {
|
foreach ($apiResult->news as $newsItem) {
|
||||||
$news[] = new \Model\NewsItem($newsItem);
|
$news[] = new \Model\NewsItem($newsItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,14 +29,23 @@ class PodcastController extends Controller
|
|||||||
$podcasts[] = new \Model\Podcast($podcast);
|
$podcasts[] = new \Model\Podcast($podcast);
|
||||||
}
|
}
|
||||||
|
|
||||||
return view($request->ajax() ? 'partial.podcastitems' : 'podcastseries', array_merge($viewData, ['podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken']));
|
return view($request->ajax() ? 'partial.podcastitems' : 'podcastseries', array_merge($viewData, ['podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken', 'isPodcast' => true]));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function podcast(Request $request, $id)
|
public function podcast(Request $request, $id)
|
||||||
{
|
{
|
||||||
parent::registerView($request, 'podcast', $id);
|
parent::registerView($request, 'podcast', $id);
|
||||||
$apiResult = $this->API('podcast/details/' . (int)$id);
|
$apiResult = $this->API('podcast/details/' . (int)$id);
|
||||||
$podcast = new \Model\Podcast($apiResult);
|
$podcast = new \Model\Podcast($apiResult);
|
||||||
return view('podcastitem', ['podcast' => $podcast, 'metadata' => $podcast->metadata]);
|
$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]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class RadioController extends Controller
|
|||||||
public function podcast(Request $request, $id, $title = '')
|
public function podcast(Request $request, $id, $title = '')
|
||||||
{
|
{
|
||||||
if($this->checkAPI('podcast/details/' . (int)$id) != "200"){
|
if($this->checkAPI('podcast/details/' . (int)$id) != "200"){
|
||||||
return view('podcastitem', array_merge($this->getSidebareData(), ['title' => $title, 'podcast' => null, 'metadata' => null, 'related' => [], 'searchURL' => 'gemist/zoeken']));
|
return view('podcastitem', array_merge($this->getSidebareData(), ['title' => $title, 'podcast' => null, 'metadata' => null, 'related' => [], 'searchURL' => 'gemist/zoeken', 'isPodcast' => false]));
|
||||||
}
|
}
|
||||||
|
|
||||||
parent::registerView($request, 'podcast', $id);
|
parent::registerView($request, 'podcast', $id);
|
||||||
@@ -71,7 +71,7 @@ class RadioController extends Controller
|
|||||||
$podcasts[] = new \Model\Podcast($_podcast);
|
$podcasts[] = new \Model\Podcast($_podcast);
|
||||||
}
|
}
|
||||||
|
|
||||||
return view($request->ajax() ? 'partial/podcastitems' : 'podcastitem', ['title' => $title, 'podcast' => $podcast, 'metadata' => $podcast->metadata, 'podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken']);
|
return view($request->ajax() ? 'partial/podcastitems' : 'podcastitem', ['title' => $title, 'podcast' => $podcast, 'metadata' => $podcast->metadata, 'podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken', 'isPodcast' => false]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function podcasts(Request $request, $programma = null)
|
public function podcasts(Request $request, $programma = null)
|
||||||
@@ -107,7 +107,7 @@ class RadioController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return view($request->ajax() ? 'partial/programitems' : 'programlist', ['programs' => array_reverse($programs)]);
|
return view($request->ajax() ? 'partial/programitems' : 'programlist', ['programs' => array_reverse($programs), 'isPodcast' => false]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getPodcastList(Request $request, $action, $viewData = [])
|
private function getPodcastList(Request $request, $action, $viewData = [])
|
||||||
@@ -120,7 +120,7 @@ class RadioController extends Controller
|
|||||||
$podcasts[] = new \Model\Podcast($podcast);
|
$podcasts[] = new \Model\Podcast($podcast);
|
||||||
}
|
}
|
||||||
|
|
||||||
return view($request->ajax() ? 'partial/podcastitems' : 'podcastlist', array_merge($viewData, ['id' => 'items-podcasts', 'podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken']));
|
return view($request->ajax() ? 'partial/podcastitems' : 'podcastlist', array_merge($viewData, ['id' => 'items-podcasts', 'podcasts' => $podcasts, 'searchURL' => 'gemist/zoeken', 'isPodcast' => false]));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,17 @@ class StreamController extends Controller
|
|||||||
return view('watch', ['title' => 'Kijk NH Gooi Tv Studio', 'stream' => 'https://studiocam.nhgooi.nl/studiocam/live/index.m3u8']);
|
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)
|
public function podcast(Request $request, $id)
|
||||||
{
|
{
|
||||||
$apiResult = $this->API('podcast/details/' . (int)$id);
|
$apiResult = $this->API('podcast/details/' . (int)$id);
|
||||||
@@ -39,11 +50,11 @@ class StreamController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
return view('listen', [
|
return view('listen', [
|
||||||
'source' => $this->API_URL . 'podcast/download' . $apiResult->url . '?auth=' . $podcast->auth,
|
'source' => $this->API_URL . 'podcast/stream/' . $apiResult->url,
|
||||||
'title' => $podcast->title,
|
'title' => $podcast->title,
|
||||||
'content' => $podcast->title,
|
'content' => $podcast->title,
|
||||||
'isStream' => false,
|
'isStream' => false,
|
||||||
'canDownload' => true ]);
|
'canDownload' => $this->API_URL . 'podcast/download/' . $apiResult->url ]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function program(Request $request, $year, $month, $day, $hour, $duration, $offset = 0) {
|
public function program(Request $request, $year, $month, $day, $hour, $duration, $offset = 0) {
|
||||||
@@ -58,7 +69,7 @@ class StreamController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
return view('listen', [
|
return view('listen', [
|
||||||
'source' => $this->API_URL . 'programma/download/' . $current->format('Y/m/d/H') . '/1',
|
'source' => $this->API_URL . 'programma/stream/' . $current->format('Y/m/d/H'),
|
||||||
'tabs' => $hours,
|
'tabs' => $hours,
|
||||||
'title' => 'Uitzending terugluisteren',
|
'title' => 'Uitzending terugluisteren',
|
||||||
'content' => 'de uitzending van ' . $current->format('d-m-Y, H') . ':00 uur',
|
'content' => 'de uitzending van ' . $current->format('d-m-Y, H') . ':00 uur',
|
||||||
@@ -77,10 +88,10 @@ class StreamController extends Controller
|
|||||||
|
|
||||||
public function kerkdienst(Request $request) {
|
public function kerkdienst(Request $request) {
|
||||||
return view('listen', [
|
return view('listen', [
|
||||||
'source' => $this->API_URL . 'kerkdienst/download',
|
'source' => $this->API_URL . 'kerkdienst/stream',
|
||||||
'title' => 'Kerkdienst gemist',
|
'title' => 'Kerkdienst gemist',
|
||||||
'content' => 'de kerkdienst van afgelopen zondag',
|
'content' => 'de kerkdienst van afgelopen zondag',
|
||||||
'isStream' => false,
|
'isStream' => false,
|
||||||
'canDownload' => true ]);
|
'canDownload' => $this->API_URL . 'kerkdienst/download' ]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
23
app/Models/Blog.php
Normal file
23
app/Models/Blog.php
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?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);
|
||||||
|
}
|
||||||
|
}
|
||||||
67
app/Models/CalendarEvent.php
Normal file
67
app/Models/CalendarEvent.php
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
<?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>';
|
||||||
|
}
|
||||||
|
}
|
||||||
61
app/Models/JobOpening.php
Normal file
61
app/Models/JobOpening.php
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<?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>';
|
||||||
|
}
|
||||||
|
}
|
||||||
26
app/Models/Kerkdienst.php
Normal file
26
app/Models/Kerkdienst.php
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?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);
|
||||||
|
}
|
||||||
|
}
|
||||||
35
app/Models/MetaData.php
Normal file
35
app/Models/MetaData.php
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?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";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
64
app/Models/Model.php
Normal file
64
app/Models/Model.php
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
<?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), '-');
|
||||||
|
}
|
||||||
|
}
|
||||||
20
app/Models/NewsImage.php
Normal file
20
app/Models/NewsImage.php
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
118
app/Models/NewsItem.php
Normal file
118
app/Models/NewsItem.php
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
<?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>';
|
||||||
|
}
|
||||||
|
}
|
||||||
25
app/Models/NewsSource.php
Normal file
25
app/Models/NewsSource.php
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?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;
|
||||||
|
}
|
||||||
|
}
|
||||||
94
app/Models/Podcast.php
Normal file
94
app/Models/Podcast.php
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
<?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>';
|
||||||
|
}
|
||||||
|
}
|
||||||
55
app/Models/Program.php
Normal file
55
app/Models/Program.php
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<?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);
|
||||||
|
}
|
||||||
|
}
|
||||||
10
app/Models/ProgramHost.php
Normal file
10
app/Models/ProgramHost.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Model;
|
||||||
|
|
||||||
|
class ProgramHost extends Model {
|
||||||
|
public $id;
|
||||||
|
public $name;
|
||||||
|
public $email;
|
||||||
|
}
|
||||||
|
|
||||||
47
app/Models/Track.php
Normal file
47
app/Models/Track.php
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
<?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\\Factories\\": "database/factories/",
|
||||||
"Database\\Seeders\\": "database/seeders/",
|
"Database\\Seeders\\": "database/seeders/",
|
||||||
"Helpers\\": "app/Helpers",
|
"Helpers\\": "app/Helpers",
|
||||||
"Model\\": "/srv/api/common/classes"
|
"Model\\": "app/Models"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload-dev": {
|
"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;
|
padding: 3px 9px 3px 6px;
|
||||||
margin: 8px auto;
|
margin: 8px auto;
|
||||||
}
|
}
|
||||||
.top_menu_container ul.right_menu li:last-child, .menu_mobile_container ul.right_menu li:last-child {
|
.top_menu_container ul.right_menu li.search, .menu_mobile_container ul.right_menu li.search {
|
||||||
border: none;
|
border: none;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
}
|
}
|
||||||
@@ -725,6 +725,8 @@ div.pp_default .pp_close:hover {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
gap: 3px;
|
||||||
}
|
}
|
||||||
.blog_grid .post .slider_content_box .post_details .category a {
|
.blog_grid .post .slider_content_box .post_details .category a {
|
||||||
padding: 6px 11px 7px;
|
padding: 6px 11px 7px;
|
||||||
@@ -1229,7 +1231,8 @@ div.pp_default .pp_close:hover {
|
|||||||
.post_container .post_body h3 {
|
.post_container .post_body h3 {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
}
|
}
|
||||||
.post_container .post_body .sentence {
|
.post_container .post_body .sentence,
|
||||||
|
.box.featured .sentence {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
line-height: 1.3;
|
line-height: 1.3;
|
||||||
@@ -1238,7 +1241,8 @@ div.pp_default .pp_close:hover {
|
|||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.post_container .post_body .sentence span {
|
.post_container .post_body .sentence span,
|
||||||
|
.box.featured .sentence span {
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
}
|
}
|
||||||
.post_container .post_body blockquote {
|
.post_container .post_body blockquote {
|
||||||
@@ -1316,8 +1320,10 @@ div.pp_default .pp_close:hover {
|
|||||||
float: left;
|
float: left;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
.post_tags li a {
|
.post_tags li a,
|
||||||
|
#schedule .onair {
|
||||||
display: block;
|
display: block;
|
||||||
|
width: 4rem;
|
||||||
padding: 6px 15px 7px;
|
padding: 6px 15px 7px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
background-image: linear-gradient(to left, #0d1ca3, #45aaf8);
|
background-image: linear-gradient(to left, #0d1ca3, #45aaf8);
|
||||||
@@ -1333,6 +1339,16 @@ div.pp_default .pp_close:hover {
|
|||||||
#schedule a {
|
#schedule a {
|
||||||
text-decoration: none;
|
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 {
|
#schedule .program-title {
|
||||||
font-family: Montserrat, serif;
|
font-family: Montserrat, serif;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@@ -1647,4 +1663,10 @@ a, a:hover, a:active {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.podcast-player .content {
|
||||||
|
border: solid 1px #333;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 0.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
/*# sourceMappingURL=style.css.map */
|
/*# 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: 944 B After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 1.1 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
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<ul class="bread_crumb">
|
<ul class="bread_crumb">
|
||||||
<li><a title="Home" href="/">Home</a></li>
|
<li><a title="Home" href="/">Home</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="Regio-agenda" href="{{route('agenda')}}">Regio-agenda</a></li>
|
<li><a title="Streekagenda" href="{{route('agenda')}}">Streekagenda</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>Details</li>
|
<li>Details</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
<div class="post single small_image">
|
<div class="post single small_image">
|
||||||
<ul class="post_details clearfix">
|
<ul class="post_details clearfix">
|
||||||
@if($event->region)
|
@if($event->region)
|
||||||
<li class="detail category"><i class="fa-solid fa-location-dot"></i> Regio <a title="{{$event->region}}">{{$event->region}}</a></li>
|
<li class="detail category"><i class="fa-solid fa-location-dot"></i> <a title="{{$event->region}}">{{$event->region}}</a></li>
|
||||||
@endif
|
@endif
|
||||||
<li class="detail date">
|
<li class="detail date">
|
||||||
<i class="fa-regular fa-clock"></i>
|
<i class="fa-regular fa-clock"></i>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
<div class="announcement">
|
<div class="announcement">
|
||||||
<div>
|
<div>
|
||||||
<audio controls>
|
<audio controls>
|
||||||
<source src="{{ $url = url( $apiUrl . 'podcast/download/' . $event->podcast->url . "?auth=" . $event->podcast->auth )}}" type="audio/mpeg" />
|
<source src="{{ $url = url( $apiUrl . 'podcast/stream/' . $event->podcast->url . "?auth=" . $event->podcast->auth )}}" type="audio/mpeg" />
|
||||||
</audio>
|
</audio>
|
||||||
</div>
|
</div>
|
||||||
<ul class="post_details clearfix">
|
<ul class="post_details clearfix">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
@extends('layouts/sidebar')
|
@extends('layouts/sidebar')
|
||||||
|
|
||||||
@section('title')
|
@section('title')
|
||||||
Regioagenda
|
Streekagenda
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('page_class')
|
@section('page_class')
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
@if(!count($events))
|
@if(!count($events))
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="page_body margin_bottom">
|
<div class="page_body margin_bottom">
|
||||||
<p>Er zijn geen items in de regioagenda. Iets te melden? Mail het naar {{Html::mailto("info@nhgooi.nl")}}
|
<p>Er zijn geen items in de streekagenda. Iets te melden? Mail het naar {{Html::mailto("info@nhgooi.nl")}}
|
||||||
.</p>
|
.</p>
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
@@ -37,40 +37,9 @@
|
|||||||
@section('content')
|
@section('content')
|
||||||
@parent
|
@parent
|
||||||
<div data-tabs class="page_body">
|
<div data-tabs class="page_body">
|
||||||
<div class="tabs">
|
<div style="padding: 0" class="tab_content active" id="agenda">
|
||||||
<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)
|
@php($count = 0)
|
||||||
@foreach($events as $event)
|
@foreach($events as $event)
|
||||||
@if($event->starts >= $tab['start'] && $event->ends <= $tab['end'])
|
|
||||||
@php($count++)
|
@php($count++)
|
||||||
<?php $url = route('agenda.details', ['id' => $event->id, 'title' => $event->title]); ?>
|
<?php $url = route('agenda.details', ['id' => $event->id, 'title' => $event->title]); ?>
|
||||||
<div class="box featured">
|
<div class="box featured">
|
||||||
@@ -83,8 +52,10 @@
|
|||||||
<div class="col-12 col-md-6">
|
<div class="col-12 col-md-6">
|
||||||
<h2 class="post_title"><a href="{{$url}}" title="{{$event->title}}">{!!$event->title!!}</a></h2>
|
<h2 class="post_title"><a href="{{$url}}" title="{{$event->title}}">{!!$event->title!!}</a></h2>
|
||||||
<div class="sub_title" style="flex-wrap: wrap">
|
<div class="sub_title" style="flex-wrap: wrap">
|
||||||
<ul class="post_tags" style="width: 100%; margin: 0 0 8px 0;height: 25px;">
|
<ul class="post_tags" style="width: 100%; margin: 0 0 8px 0;height: 25px;">
|
||||||
<li><a style="padding: 3px 8px 3px" title="{{$event->region}}">{{$event->region}}</a></li>
|
@foreach($event->tags as $tag)
|
||||||
|
<li><a style="padding: 3px 8px 3px" title="{{$tag->title}}">{{$tag->title}}</a></li>
|
||||||
|
@endforeach
|
||||||
</ul>
|
</ul>
|
||||||
<span class="post_date" style="line-height: 1.17; height: 14px;" title="{{Formatter::relativeDate($event->starts, 'W d m y?')}}">
|
<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?')}}
|
<i class="fa-regular fa-clock"></i> {{Formatter::relativeDate($event->starts, 'W d m y?')}}
|
||||||
@@ -99,14 +70,12 @@
|
|||||||
<a class="btn fit_content" href="{{$url}}">Lees verder</a>
|
<a class="btn fit_content" href="{{$url}}">Lees verder</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
@endforeach
|
|
||||||
@if($count == 0)
|
@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>
|
<p>Er zijn geen items gevonden. Iets te melden? Mail het naar <a href="mailto:info@nhgooi.nl">info@nhgooi.nl</a>.</p>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
@endif
|
@endif
|
||||||
|
|||||||
@@ -18,7 +18,18 @@
|
|||||||
|
|
||||||
<div class="page_body">
|
<div class="page_body">
|
||||||
<div class="row ">
|
<div class="row ">
|
||||||
<div class="col-12 col-md">
|
<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>
|
<h3>Contactinformatie</h3>
|
||||||
|
|
||||||
<p>Neem contact op met NH Gooi, de streekomroep voor Gooi & Vechtstreek.</p>
|
<p>Neem contact op met NH Gooi, de streekomroep voor Gooi & Vechtstreek.</p>
|
||||||
|
|||||||
@@ -24,13 +24,13 @@
|
|||||||
</a>
|
</a>
|
||||||
<div class="slider_content_box">
|
<div class="slider_content_box">
|
||||||
<ul class="post_details simple">
|
<ul class="post_details simple">
|
||||||
@if($item->region)
|
@foreach($item->tags as $tag)
|
||||||
<li class="category">
|
<li class="category">
|
||||||
<a title="Regio: {{$item->region->title}}"
|
<a title="{{$tag->titel}}"
|
||||||
href="{{route('nieuws.regio', ['region' => $item->region->slug])}}"
|
href="{{route('nieuws.tag', ['tag' => $tag->slug])}}"
|
||||||
class="over_image">{{$item->region->title}}</a>
|
class="over_image">{{$tag->titel}}</a>
|
||||||
</li>
|
</li>
|
||||||
@endif
|
@endforeach
|
||||||
</ul>
|
</ul>
|
||||||
<h2><a href="{{url($item->url)}}"
|
<h2><a href="{{url($item->url)}}"
|
||||||
title="{{$item->title}}">{!!$item->title!!}</a></h2>
|
title="{{$item->title}}">{!!$item->title!!}</a></h2>
|
||||||
@@ -61,13 +61,13 @@
|
|||||||
</a>
|
</a>
|
||||||
<div class="slider_content_box">
|
<div class="slider_content_box">
|
||||||
<ul class="post_details simple">
|
<ul class="post_details simple">
|
||||||
@if($item->region)
|
@foreach($item->tags as $tag)
|
||||||
<li class="category">
|
<li class="category">
|
||||||
<a title="Regio: {{$item->region->title}}"
|
<a title="{{$tag->titel}}"
|
||||||
href="{{route('nieuws.regio', ['region' => $item->region->slug])}}"
|
href="{{route('nieuws.tag', ['tag' => $tag->slug])}}"
|
||||||
class="over_image">{{$item->region->title}}</a>
|
class="over_image">{{$tag->titel}}</a>
|
||||||
</li>
|
</li>
|
||||||
@endif
|
@endforeach
|
||||||
</ul>
|
</ul>
|
||||||
<h2><a href="{{url($item->url)}}"
|
<h2><a href="{{url($item->url)}}"
|
||||||
title="{{$item->title}}">{!!$item->title!!}</a></h2>
|
title="{{$item->title}}">{!!$item->title!!}</a></h2>
|
||||||
@@ -102,13 +102,13 @@
|
|||||||
</a>
|
</a>
|
||||||
<div class="slider_content_box">
|
<div class="slider_content_box">
|
||||||
<ul class="post_details simple">
|
<ul class="post_details simple">
|
||||||
@if($item->region)
|
@foreach($item->tags as $tag)
|
||||||
<li class="category">
|
<li class="category">
|
||||||
<a title="Regio: {{$item->region->title}}"
|
<a title="{{$tag->titel}}"
|
||||||
href="{{route('nieuws.regio', ['region' => $item->region->slug])}}"
|
href="{{route('nieuws.tag', ['tag' => $tag->slug])}}"
|
||||||
class="over_image">{{$item->region->title}}</a>
|
class="over_image">{{$tag->titel}}</a>
|
||||||
</li>
|
</li>
|
||||||
@endif
|
@endforeach
|
||||||
</ul>
|
</ul>
|
||||||
<h5 class="post_title"><a href="{{url($item->url)}}"
|
<h5 class="post_title"><a href="{{url($item->url)}}"
|
||||||
title="{{$item->title}}">{!!$item->title!!}</a></h5>
|
title="{{$item->title}}">{!!$item->title!!}</a></h5>
|
||||||
@@ -170,12 +170,28 @@
|
|||||||
|
|
||||||
@if ($podcast)
|
@if ($podcast)
|
||||||
<?php $url = route('gemist.fragment') . $podcast->url; ?>
|
<?php $url = route('gemist.fragment') . $podcast->url; ?>
|
||||||
<h4 class="box_header"><span>Uitgelicht</span></h4>
|
<h4 class="box_header"><span>Uitgelicht fragment</span></h4>
|
||||||
<div class="box featured">
|
<div class="box featured">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 col-md-6">
|
<div class="col-12 col-md-6">
|
||||||
<a href="{{$url}}" title="{{$podcast->title}}">
|
<a href="{{$url}}" title="{{$podcast->title}}">
|
||||||
<img src="{{$podcast->image && $podcast->image->url ? $imgBase . $podcast->image->url : '/images/noimage.png'}}"/>
|
<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>
|
||||||
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-md-6">
|
<div class="col-12 col-md-6">
|
||||||
|
|||||||
@@ -12,15 +12,15 @@
|
|||||||
</ul>
|
</ul>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('page_class')
|
|
||||||
news_post post_container breadcrumb_no_border
|
|
||||||
@endsection
|
|
||||||
@section('page_container_class')
|
@section('page_container_class')
|
||||||
grey_background
|
grey_background
|
||||||
@endsection
|
@endsection
|
||||||
@section('site_container_class')
|
@section('site_container_class')
|
||||||
grey_background
|
grey_background
|
||||||
@endsection
|
@endsection
|
||||||
|
@section('container_class')
|
||||||
|
news_post post_container
|
||||||
|
@endsection
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
@parent
|
@parent
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<audio controls>
|
<audio controls>
|
||||||
<source src="{{ url( $apiUrl . 'kerkdienst/download' ) }}" type="audio/mpeg" />
|
<source src="{{ url( $apiUrl . 'kerkdienst/stream' ) }}" type="audio/mpeg" />
|
||||||
</audio>
|
</audio>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -10,10 +10,22 @@
|
|||||||
<!--style-->
|
<!--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: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 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/prettyPhoto.css">
|
||||||
<link rel="stylesheet" type="text/css" href="/css/bootstrap-grid.min.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" 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.min.css?<?= filemtime("../public/css/style.min.css"); ?>" />
|
<link rel="stylesheet" type="text/css" href="/css/style.css?<?= filemtime("../public/css/style.css"); ?>" />
|
||||||
<meta property="fb:app_id" content="133349980094758" />
|
<meta property="fb:app_id" content="133349980094758" />
|
||||||
<meta property="og:site_name" content="NH Gooi" />
|
<meta property="og:site_name" content="NH Gooi" />
|
||||||
<?php if(isset($metadata)) {
|
<?php if(isset($metadata)) {
|
||||||
@@ -25,9 +37,11 @@
|
|||||||
} ?>
|
} ?>
|
||||||
@stack('styles')
|
@stack('styles')
|
||||||
<link rel="shortcut icon" href="/favicon.ico">
|
<link rel="shortcut icon" href="/favicon.ico">
|
||||||
|
{{--
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
<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="32x32" href="/favicon-32x32.png">
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||||
|
--}}
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
<link rel="manifest" href="/site.webmanifest">
|
||||||
<!--rss-->
|
<!--rss-->
|
||||||
<link rel="alternate" type="application/rss+xml" title="Abonneren op NH Gooi Nieuws" href="{{env('API_URL')}}rss/nieuws" />
|
<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>
|
<a href="https://wa.me/31888505651" target="_blank">Tip <i class="fa-solid fa-circle-plus"></i></a>
|
||||||
</li>
|
</li>
|
||||||
@if(isset($searchURL))
|
@if(isset($searchURL))
|
||||||
<li>
|
<li class="search">
|
||||||
<form class="search_form" action="{{url($searchURL)}}">
|
<form class="search_form" action="{{url($searchURL)}}">
|
||||||
<input type="text" name="query" placeholder="Zoeken..."
|
<input type="text" name="query" placeholder="Zoeken..."
|
||||||
value="{{isset($query) ? $query : null}}" class="search_input">
|
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>
|
<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>
|
||||||
<li>
|
<li>
|
||||||
<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>
|
<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>
|
||||||
</li>
|
</li>
|
||||||
<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>
|
<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>
|
</li>
|
||||||
@if(isset($searchURL))
|
@if(isset($searchURL))
|
||||||
<li>
|
<li class="search">
|
||||||
<form class="search_form" action="{{url($searchURL)}}">
|
<form class="search_form" action="{{url($searchURL)}}">
|
||||||
<input type="text" name="query" placeholder="Zoeken..."
|
<input type="text" name="query" placeholder="Zoeken..."
|
||||||
value="{{isset($query) ? $query : null}}" class="search_input">
|
value="{{isset($query) ? $query : null}}" class="search_input">
|
||||||
@@ -93,13 +93,6 @@
|
|||||||
|
|
||||||
<div class="page @yield('page_container_class')">
|
<div class="page @yield('page_container_class')">
|
||||||
<a name="top"></a>
|
<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')
|
@yield('page')
|
||||||
</div><!--/.page-->
|
</div><!--/.page-->
|
||||||
|
|
||||||
@@ -109,18 +102,19 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 col-md-3">
|
<div class="col-12 col-md-3">
|
||||||
<h4 class="box_header"><span>NH Gooi</span></h4>
|
<h4 class="box_header"><span>NH Gooi</span></h4>
|
||||||
<p class="about">
|
<p class="about">
|
||||||
NH Gooi is de streekomroep voor Gooi & Vechtstreek. Wij bieden een gevarieerd programma op
|
NH Gooi is de streekomroep voor Gooi & Vechtstreek. Wij brengen nieuws en achtergronden
|
||||||
radio, podcasts, tv en online met muziek, achtergronden en actueel regionieuws.
|
op onze website, radio en televisie. Daarnaast brengen we boeiende en belangrijke podcasts
|
||||||
|
en een gevariëerd programma-aanbod op al onze media-kanalen.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-md-3">
|
<div class="col-12 col-md-3">
|
||||||
<h4 class="box_header"><span style="height: 30px;display: block;width: 0;"></span></h4>
|
<h4 class="box_header"><span style="height: 30px;display: block;width: 0;"></span></h4>
|
||||||
<p class="about">
|
<p class="about">
|
||||||
Altijd op de hoogte blijven van nieuws en achtergronden uit de regio? <a href="{{url('app')}}">Download onze app</a>.
|
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>.
|
||||||
</p>
|
</p>
|
||||||
<p class="about">
|
<p class="about">
|
||||||
<a href="{{url('frequenties')}}">Klik hier</a> waar je ons kunt zien en horen.
|
<span class="fa fa-list"></span> <a href="{{url('frequenties')}}">Bekijk hier</a> waar je ons kunt zien en horen.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-md-3">
|
<div class="col-12 col-md-3">
|
||||||
@@ -172,10 +166,26 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="background_overlay"></div>
|
<div class="background_overlay"></div>
|
||||||
<!--js-->
|
<!--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-3.7.1.min.js"></script>
|
||||||
<script type="text/javascript" src="/js/jquery.prettyPhoto.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/jquery.carouFredSel-6.2.1.min.js"></script>
|
||||||
<script type="text/javascript" src="/js/functions.min.js"></script>
|
<script type="text/javascript" src="/js/functions.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(window).resize(function () {
|
$(window).resize(function () {
|
||||||
// Fix sticky for mobile menu indicator
|
// Fix sticky for mobile menu indicator
|
||||||
|
|||||||
@@ -42,8 +42,8 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@if(!$isStream && $canDownload)
|
@if(!$isStream && $canDownload !== false)
|
||||||
<a href="{{$source}}" class="action_button">
|
<a href="{{$canDownload}}" class="action_button">
|
||||||
<span class="fa fa-download"></span><span>Download .mp3-bestand</span>
|
<span class="fa fa-download"></span><span>Download .mp3-bestand</span>
|
||||||
</a>
|
</a>
|
||||||
@endif
|
@endif
|
||||||
@@ -52,7 +52,6 @@
|
|||||||
<span class="fa fa-music"></span><span>Schakel naar live-uitzending</span>
|
<span class="fa fa-music"></span><span>Schakel naar live-uitzending</span>
|
||||||
</a>
|
</a>
|
||||||
@endif
|
@endif
|
||||||
</p>
|
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
<div class="podcast_items">
|
<div class="podcast_items">
|
||||||
<h4 class="box_header small"><span>Fragment gemist</span></h4>
|
<h4 class="box_header small"><span>Fragment gemist</span></h4>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
@include('partial/podcastitems', ['showTime' => false, 'showImage' => false, 'podcasts' => $podcasts])
|
@include('partial/podcastitems', ['showTime' => false, 'showImage' => false, 'podcasts' => $podcasts, 'isPodcast' => false])
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -11,16 +11,18 @@
|
|||||||
<li><a title="Home" href="/">Home</a></li>
|
<li><a title="Home" href="/">Home</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="Nieuws" href="{{route('nieuws')}}">Nieuws</a></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><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>
|
<li>{!!$news->title!!}</li>
|
||||||
</ul>
|
</ul>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('tags')
|
@section('tags')
|
||||||
<ul class="post_tags">
|
<ul class="post_tags">
|
||||||
<li><a href="{{route('nieuws.regio', $news->region->slug)}}" title="{{$news->region->title}}">{{$news->region->title}}</a></li>
|
@foreach($news->tags as $tag)
|
||||||
|
<li><a href="{{route('nieuws.tag', $tag->slug)}}" title="{{$tag->titel}}">{{$tag->titel}}</a></li>
|
||||||
|
@endforeach
|
||||||
</ul>
|
</ul>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@@ -28,12 +30,6 @@
|
|||||||
|
|
||||||
<div class="post_body">
|
<div class="post_body">
|
||||||
<ul class="post_details clearfix">
|
<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">
|
<li class="detail date">
|
||||||
<i class="fa-regular fa-clock"></i>
|
<i class="fa-regular fa-clock"></i>
|
||||||
{{Formatter::relativeDate($news->published)}} om {{$news->published->format('H:i')}}
|
{{Formatter::relativeDate($news->published)}} om {{$news->published->format('H:i')}}
|
||||||
@@ -51,30 +47,6 @@
|
|||||||
</ul>
|
</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="post_content clearfix">
|
||||||
<div class="content_box">
|
<div class="content_box">
|
||||||
@if($news->images)
|
@if($news->images)
|
||||||
@@ -123,6 +95,10 @@
|
|||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
@if($news->podcast)
|
||||||
|
@include('widgets/podcastplayer', ['podcast' => $news->podcast])
|
||||||
|
@endif
|
||||||
|
|
||||||
@if($news->source && $news->source->show)
|
@if($news->source && $news->source->show)
|
||||||
<div class="post-source">
|
<div class="post-source">
|
||||||
<p>Bron: {{$news->source->title}}</p>
|
<p>Bron: {{$news->source->title}}</p>
|
||||||
@@ -133,26 +109,6 @@
|
|||||||
@include('widgets/share')
|
@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="share_buttons row">
|
||||||
<div class="col-12 col-md-auto">
|
<div class="col-12 col-md-auto">
|
||||||
<a data-share="native" href="javascript:void(0)" class="btn">
|
<a data-share="native" href="javascript:void(0)" class="btn">
|
||||||
|
|||||||
@@ -51,16 +51,11 @@
|
|||||||
title="{{strip_tags($item->title)}}">{!!$item->title!!}</a>
|
title="{{strip_tags($item->title)}}">{!!$item->title!!}</a>
|
||||||
</h2>
|
</h2>
|
||||||
<ul class="post_details clearfix">
|
<ul class="post_details clearfix">
|
||||||
@if($item->region)
|
@foreach($item->tags as $tag)
|
||||||
<li class="detail category"><i class="fa-solid fa-location-dot"></i> Regio <a
|
<li class="detail category"><i class="fa-solid fa-location-dot"></i> <a
|
||||||
href="{{route('nieuws.regio', $item->region->slug)}}"
|
href="{{route('nieuws.tag', $tag->slug)}}"
|
||||||
title="{{$item->region->title}}">{{$item->region->title}}</a></li>
|
title="{{$tag->titel}}">{{$tag->titel}}</a></li>
|
||||||
@endif
|
@endforeach
|
||||||
@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))
|
@if($item->edited && ($item->edited != $item->published))
|
||||||
<li class="date edited">
|
<li class="date edited">
|
||||||
<i class="fa-regular fa-clock"></i>
|
<i class="fa-regular fa-clock"></i>
|
||||||
|
|||||||
@@ -78,7 +78,7 @@
|
|||||||
<div class="announcement">
|
<div class="announcement">
|
||||||
<div>
|
<div>
|
||||||
<audio controls>
|
<audio controls>
|
||||||
<source src="{{ $url = url( $apiUrl . "podcast/download" . $item->podcast->url . "?auth=" . $item->podcast->auth )}}" type="audio/mpeg" />
|
<source src="{{ $url = url( $apiUrl . "podcast/stream" . $item->podcast->url . "?auth=" . $item->podcast->auth )}}" type="audio/mpeg" />
|
||||||
</audio>
|
</audio>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,48 +1,51 @@
|
|||||||
@foreach($content as $block)
|
@foreach($content as $block)
|
||||||
@if($block->type == "headerRichA")
|
@if($block->type == "headerRichA")
|
||||||
@php($block->image->url = isset($block->image->crops)
|
@php($block->image->url = isset($block->image->crops)
|
||||||
? $block->image->crops->{'16:9'}->{'1600'}
|
? $block->image->crops->{'16:9'}->{'1600'}
|
||||||
: $block->image->crop)
|
: $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"
|
||||||
<img src="{{$block->image->url}}" alt="{{$block->image->title}}">
|
title="{{$block->image->title}}">
|
||||||
</a>
|
<img src="{{$block->image->url}}" alt="{{$block->image->title}}">
|
||||||
<div class="sentence margin_top_10">
|
</a>
|
||||||
<span class="text">{{$block->image->title}}</span>
|
<div class="sentence margin_top_10">
|
||||||
@if($block->image->author)
|
<span class="text">{{$block->image->title}}</span>
|
||||||
<span class="author">{{$block->image->author}}</span>
|
@if($block->image->author)
|
||||||
@endif
|
<span class="author">{{$block->image->author}}</span>
|
||||||
</div>
|
@endif
|
||||||
@elseif($block->type == "text")
|
</div>
|
||||||
<div class="text">{!!$block->text!!}</div>
|
@elseif($block->type == "text")
|
||||||
@elseif($block->type == "intro")
|
<div class="text">{!!$block->text!!}</div>
|
||||||
<h3 class="excerpt">{!!strip_tags($block->text)!!}</h3>
|
@elseif($block->type == "intro")
|
||||||
@elseif($block->type == "info")
|
<h3 class="excerpt">{!!strip_tags($block->text)!!}</h3>
|
||||||
@if(strpos($block->text, "Meer nieuws uit 't Gooi?") === false)
|
@elseif($block->type == "info")
|
||||||
<div class="info" style="background-color: {{$block->color}};">{!!($block->text)!!}</div>
|
@if(strpos($block->text, "Meer nieuws uit 't Gooi?") === false)
|
||||||
@endif
|
<div class="info" style="background-color: {{$block->color}};">{!!($block->text)!!}</div>
|
||||||
@elseif($block->type == "quote")
|
@endif
|
||||||
<blockquote>
|
@elseif($block->type == "quote")
|
||||||
{!!$block->text!!}
|
<blockquote>
|
||||||
<div class="author">{{$block->name}}</div>
|
{!!$block->text!!}
|
||||||
</blockquote>
|
<div class="author">{{$block->name}}</div>
|
||||||
@elseif($block->type == "image")
|
</blockquote>
|
||||||
<?php
|
@elseif($block->type == "image")
|
||||||
|
<?php
|
||||||
if(isset($block->image->imageWide))
|
if(isset($block->image->imageWide))
|
||||||
$image = $block->image->imageWide;
|
$image = $block->image->imageWide;
|
||||||
else if(isset($block->image->crop))
|
else if(isset($block->image->crop))
|
||||||
$image = $block->image->crop;
|
$image = $block->image->crop;
|
||||||
else if(isset($block->image->crops) && isset($block->image->crops->{'16:9'}))
|
else if(isset($block->image->crops) && isset($block->image->crops->{'16:9'}))
|
||||||
foreach($block->image->crops->{'16:9'} as $image) break;
|
foreach($block->image->crops->{'16:9'} as $image) break;
|
||||||
else if(isset($block->image->imageHigh))
|
else if(isset($block->image->imageHigh))
|
||||||
$image = $block->image->imageHigh;
|
$image = $block->image->imageHigh;
|
||||||
else $image = null;
|
else $image = null;
|
||||||
?>
|
?>
|
||||||
@if($image)
|
@if($image)
|
||||||
<a class="post_image page_margin_top prettyPhoto" rel="prettyPhoto" href="{{$image}}" title="{{$block->image->title}} © {{$block->image->author}}">
|
<a class="post_image page_margin_top prettyPhoto" rel="prettyPhoto" href="{{$image}}"
|
||||||
<img src="{{$image}}" class="attachment-small-slider-thumb size-small-slider-thumb wp-post-image" alt="{{$block->image->title}}" title="" style="display: block;">
|
title="{{$block->image->title}} © {{$block->image->author}}">
|
||||||
</a>
|
<img src="{{$image}}" class="attachment-small-slider-thumb size-small-slider-thumb wp-post-image"
|
||||||
<div class="sentence">
|
alt="{{$block->image->title}}" title="" style="display: block;">
|
||||||
<?php
|
</a>
|
||||||
|
<div class="sentence">
|
||||||
|
<?php
|
||||||
$sentence = [];
|
$sentence = [];
|
||||||
if (isset($block->image->caption) && $block->image->caption) {
|
if (isset($block->image->caption) && $block->image->caption) {
|
||||||
$sentence[] = '<span class="text">' . $block->image->caption . '</span>';
|
$sentence[] = '<span class="text">' . $block->image->caption . '</span>';
|
||||||
@@ -54,52 +57,88 @@
|
|||||||
}
|
}
|
||||||
$sentence = join('<span class="separator">|</span>', $sentence);
|
$sentence = join('<span class="separator">|</span>', $sentence);
|
||||||
?>
|
?>
|
||||||
{!!$sentence!!}
|
{!!$sentence!!}
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
@elseif($block->type == "video" || $block->type == "headerVideo")
|
@elseif($block->type == "video" || $block->type == "headerVideo")
|
||||||
@include('widgets/mediaplayer')
|
@include('widgets/mediaplayer')
|
||||||
<?php
|
<?php
|
||||||
$attr = '';
|
$attr = '';
|
||||||
if (isset($block->video->images[0]->imageMedia) && $block->video->images[0]->imageMedia) {
|
if (isset($block->video->images[0]->imageMedia) && $block->video->images[0]->imageMedia) {
|
||||||
$attr = ' poster="' . $block->video->images[0]->imageMedia . '"';
|
$attr = ' poster="' . $block->video->images[0]->imageMedia . '"';
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<video controls{!!$attr!!}>
|
<video controls{!!$attr!!}>
|
||||||
@foreach($block->video->streams as $stream)
|
@foreach($block->video->streams as $stream)
|
||||||
<source src="{!!$stream->stream_url!!}" type="application/x-mpegurl" />
|
<source src="{!!$stream->stream_url!!}" type="application/x-mpegurl" />
|
||||||
@endforeach
|
@endforeach
|
||||||
</video>
|
</video>
|
||||||
<div class="sentence">
|
<div class="sentence">
|
||||||
<span class="author">{{$block->video->author}}</span>
|
<span class="author">{{$block->video->author}}</span>
|
||||||
</div>
|
</div>
|
||||||
@elseif($block->type == "carousel")
|
@elseif($block->type == "carousel")
|
||||||
<div class="horizontal_carousel_container gallery">
|
<div class="horizontal_carousel_container gallery">
|
||||||
<ul class="horizontal_carousel visible-5 autoplay-1 scroll-1 navigation-1 easing-easeInOutQuint duration-750">
|
<ul class="horizontal_carousel visible-5 autoplay-1 scroll-1 navigation-1 easing-easeInOutQuint duration-750">
|
||||||
@foreach($block->items as $image)
|
@foreach($block->items as $image)
|
||||||
<?php
|
<?php
|
||||||
if(isset($image->image->imageWide))
|
if(isset($image->image->imageWide))
|
||||||
$img = $image->image->imageWide;
|
$img = $image->image->imageWide;
|
||||||
else if(isset($block->image->crop))
|
else if(isset($block->image->crop))
|
||||||
$image = $block->image->crop;
|
$image = $block->image->crop;
|
||||||
else if(isset($image->image->crops) && isset($image->image->crops->{'16:9'}))
|
else if(isset($image->image->crops) && isset($image->image->crops->{'16:9'}))
|
||||||
foreach($image->image->crops->{'16:9'} as $img) break;
|
foreach($image->image->crops->{'16:9'} as $img) break;
|
||||||
else if(isset($image->image->imageHigh))
|
else if(isset($image->image->imageHigh))
|
||||||
$img = $image->image->imageHigh;
|
$img = $image->image->imageHigh;
|
||||||
else $img = null;
|
else $img = null;
|
||||||
?>
|
?>
|
||||||
@if($img)
|
@if($img)
|
||||||
<li>
|
<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]"
|
||||||
<img src="{{$img}}" alt="{{$image->image->title}}" title="{{$image->image->title}}">
|
title="{{$image->image->title}} © {{$image->image->author}}">
|
||||||
</a>
|
<img src="{{$img}}" alt="{{$image->image->title}}" title="{{$image->image->title}}">
|
||||||
</li>
|
</a>
|
||||||
|
</li>
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@elseif($block->type == "oembed")
|
@elseif($block->type == "oembed")
|
||||||
<div class="oembed" data-url="{{$block->url}}">{!!$block->html!!}</div>
|
<div class="oembed" data-url="{{$block->url}}">{!!$block->html!!}</div>
|
||||||
@endif
|
@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>
|
||||||
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<div>
|
<div>
|
||||||
@foreach($podcasts as $podcast)
|
@foreach($podcasts as $podcast)
|
||||||
<?php
|
<?php
|
||||||
$url = route('gemist.fragment') . $podcast->url;
|
$url = ($isPodcast ? '/podcast/aflevering' : '/gemist/fragment') . $podcast->url;
|
||||||
$popoutUrl = route('luister.podcast') . $podcast->url . '?auth=' . $podcast->auth;
|
$popoutUrl = route('luister.podcast') . $podcast->url . '?auth=' . $podcast->auth;
|
||||||
?>
|
?>
|
||||||
<div class="box full-width featured">
|
<div class="box full-width featured">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -15,16 +15,16 @@
|
|||||||
<h2 class="post_title"><a href="{{$url}}" title="{{$podcast->title}}">{!!$podcast->titleWithoutProgram()!!}</a></h2>
|
<h2 class="post_title"><a href="{{$url}}" title="{{$podcast->title}}">{!!$podcast->titleWithoutProgram()!!}</a></h2>
|
||||||
<div class="sub_title">
|
<div class="sub_title">
|
||||||
@if ($podcast->program)
|
@if ($podcast->program)
|
||||||
<a class="program_name" href="{{ route('programma') . $podcast->program->url }}"
|
<a class="program_name" href="/{{ ($isPodcast ? 'podcast' : 'programma') . $podcast->program->url }}"
|
||||||
title="{{$podcast->program->name}}">{{$podcast->program->name}}</a>
|
title="{{$podcast->program->name}}">{{$podcast->program->name}}</a>
|
||||||
@endif
|
@endif
|
||||||
<span class="post_date" title="{{Formatter::relativeDate($podcast->created)}}">
|
<span class="post_date" title="{{Formatter::relativeDate($podcast->created)}}">
|
||||||
<i class="fa-regular fa-clock"></i> {{Formatter::relativeDate($podcast->created)}}
|
<i class="fa-regular fa-clock"></i> {{Formatter::relativeDate($podcast->created)}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<p class="clipText clipText-7" title="{{strip_tags($podcast->content)}}">
|
<div class="clipText clipText-7" title="{{strip_tags($podcast->content)}}">
|
||||||
{!!$podcast->content!!}
|
{!!$podcast->content!!}
|
||||||
</p>
|
</div>
|
||||||
<a class="action_button btn player" href="{{$popoutUrl}}">
|
<a class="action_button btn player" href="{{$popoutUrl}}">
|
||||||
<span class="fa fa-external-link-alt"></span>
|
<span class="fa fa-external-link-alt"></span>
|
||||||
<span>Luister in nieuw venster</span>
|
<span>Luister in nieuw venster</span>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ $actionButton = array_merge([
|
|||||||
?>
|
?>
|
||||||
<ul id="{{$id ?? ''}}" class="{{$ul['class']}}">
|
<ul id="{{$id ?? ''}}" class="{{$ul['class']}}">
|
||||||
@foreach($podcasts as $podcast)
|
@foreach($podcasts as $podcast)
|
||||||
<?php $url = route('gemist.fragment') . $podcast->url; ?>
|
<?php $url = ($isPodcast ? '/podcast/aflevering' : '/gemist/fragment') . $podcast->url; ?>
|
||||||
<li style="{{$li['style']}}" class="post {{$li['class']}}">
|
<li style="{{$li['style']}}" class="post {{$li['class']}}">
|
||||||
<div style="{{$content['style']}}" class="post_content {{$content['class']}}">
|
<div style="{{$content['style']}}" class="post_content {{$content['class']}}">
|
||||||
<h2 class="post_title">
|
<h2 class="post_title">
|
||||||
@@ -43,9 +43,9 @@ $actionButton = array_merge([
|
|||||||
</a>
|
</a>
|
||||||
@endif
|
@endif
|
||||||
@if($body['show'])
|
@if($body['show'])
|
||||||
<p class="post_body {{$body['class']}}">
|
<div class="post_body {{$body['class']}}">
|
||||||
{!!$podcast->content!!}
|
{!!$podcast->content!!}
|
||||||
</p>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
@if(isset($showAction) && $showAction)
|
@if(isset($showAction) && $showAction)
|
||||||
<div class="action_button {{$actionButton['class']}}">
|
<div class="action_button {{$actionButton['class']}}">
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
<a class="box full-width full-height" href="{{route('programma') . $item['program']->url}}"
|
<a class="box full-width full-height" href="{{route('programma') . $item['program']->url}}"
|
||||||
title="{{$item['program']->name . ($item['program']->tagline ? "\n" . $item['program']->tagline : "")}}">
|
title="{{$item['program']->name . ($item['program']->tagline ? "\n" . $item['program']->tagline : "")}}">
|
||||||
<img src="{{$item['program']->image ?? 'images/noimage.png'}}">
|
<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">
|
<div class="program-title">
|
||||||
@if($isCurrent)
|
|
||||||
<div class="current-marker"><span>On air</span></div>
|
|
||||||
@endif
|
|
||||||
{{$item['program']->name}}
|
{{$item['program']->name}}
|
||||||
</div>
|
</div>
|
||||||
<div class="program-times"><i class="fa-regular fa-clock"></i>
|
<div class="program-times"><i class="fa-regular fa-clock"></i>
|
||||||
@@ -26,5 +26,5 @@
|
|||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
|||||||
@@ -3,11 +3,13 @@
|
|||||||
@include('widgets/mediaplayer')
|
@include('widgets/mediaplayer')
|
||||||
|
|
||||||
@section('title')
|
@section('title')
|
||||||
@if ($podcast)
|
@if($podcast)
|
||||||
Fragment gemist
|
{{ $podcast->title }}
|
||||||
@else
|
@elseif($isPodcast)
|
||||||
Fragment {{$title}} niet gevonden
|
NH Gooi Podcast
|
||||||
@endif
|
@else
|
||||||
|
Fragment gemist
|
||||||
|
@endif
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('page_class')
|
@section('page_class')
|
||||||
@@ -18,14 +20,18 @@
|
|||||||
<ul class="bread_crumb">
|
<ul class="bread_crumb">
|
||||||
<li><a title="Home" href="/">Home</a></li>
|
<li><a title="Home" href="/">Home</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="Fragment gemist" href="{{route('gemist')}}">Fragment gemist</a></li>
|
@if($isPodcast)
|
||||||
|
<li>NH Gooi podcast</li>
|
||||||
|
@else
|
||||||
|
<li><a title="Home" href="/gemist/fragment">Fragment gemist</a></li>
|
||||||
|
@endif
|
||||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
||||||
@if($podcast && $podcast->program)
|
@if($podcast && $podcast->program)
|
||||||
<li><a title="{{$podcast->program->name}}"
|
<li><a title="{{$podcast->program->name}}"
|
||||||
href="{{route('gemist.programma') . $podcast->program->url}}">{{$podcast->program->name}}</a></li>
|
href="{{route('gemist.programma') . $podcast->program->url}}">{{$podcast->program->name}}</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>
|
||||||
@endif
|
@endif
|
||||||
<li>Fragment</li>
|
<li>{{ $podcast->title }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@@ -84,6 +90,7 @@
|
|||||||
@if ($podcast)
|
@if ($podcast)
|
||||||
<?php
|
<?php
|
||||||
$audioUrl = url($apiUrl . 'podcast/download' . $podcast->url . "?auth=" . $podcast->auth);
|
$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;
|
$popoutUrl = route('luister.podcast') . $podcast->url . '?auth=' . $podcast->auth;
|
||||||
?>
|
?>
|
||||||
|
|
||||||
@@ -91,7 +98,6 @@
|
|||||||
<div class="row news_post">
|
<div class="row news_post">
|
||||||
<div class="col-12 col-md content_container">
|
<div class="col-12 col-md content_container">
|
||||||
<div class="box full-width post single small_image md_margin_top">
|
<div class="box full-width post single small_image md_margin_top">
|
||||||
<h1 class="page_title">{{$podcast->title}}</h1>
|
|
||||||
<div class="post_body">
|
<div class="post_body">
|
||||||
<ul class="post_details clearfix">
|
<ul class="post_details clearfix">
|
||||||
<li class="detail date">
|
<li class="detail date">
|
||||||
@@ -100,14 +106,14 @@
|
|||||||
</li>
|
</li>
|
||||||
@if($podcast->program)
|
@if($podcast->program)
|
||||||
<li class="detail author">
|
<li class="detail author">
|
||||||
<a href="{{ route('programma') . $podcast->program->url }}">{{ $podcast->program->name }}</a>
|
<a href="/{{ ($isPodcast ? 'podcast' : 'programma') . $podcast->program->url }}">{{ $podcast->program->name }}</a>
|
||||||
</li>
|
</li>
|
||||||
@endif
|
@endif
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="announcement">
|
<div class="announcement">
|
||||||
<audio controls>
|
<audio controls>
|
||||||
<source src="{{$audioUrl}}" type="audio/mpeg"/>
|
<source src="{{$streamUrl}}" type="audio/mpeg"/>
|
||||||
</audio>
|
</audio>
|
||||||
<div class="clearfix">
|
<div class="clearfix">
|
||||||
<a class="action_button btn" href="{{$audioUrl}}" title="Download dit fragment als MP3">
|
<a class="action_button btn" href="{{$audioUrl}}" title="Download dit fragment als MP3">
|
||||||
@@ -150,15 +156,15 @@
|
|||||||
<div data-tabs>
|
<div data-tabs>
|
||||||
<div class="tabs">
|
<div class="tabs">
|
||||||
<h4 data-tab-content-id="tab_more_fragmenten"
|
<h4 data-tab-content-id="tab_more_fragmenten"
|
||||||
class="box_header small flex-grow-1 active"><span>Meer fragmenten</span>
|
class="box_header small flex-grow-1 active"><span>Meer {{$isPodcast ? 'afleveringen' : 'fragmenten'}}</span>
|
||||||
</h4>
|
</h4>
|
||||||
</div>
|
</div>
|
||||||
<div id="tab_more_fragmenten" class="box tab_content podcast_items active">
|
<div id="tab_more_fragmenten" class="box tab_content podcast_items active">
|
||||||
@include('partial/podcastitems', ['id' => 'items-podcasts', 'showTime' => false, 'showImage' => false, 'podcasts' => $podcasts])
|
@include('partial/podcastitems', ['id' => 'items-podcasts', 'showTime' => false, 'showImage' => false, 'podcasts' => $podcasts, 'isPodcast' => $isPodcast])
|
||||||
<a class="btn auto_width" id="meer-nieuws-more-podcast" href="#"
|
<a class="btn auto_width" id="meer-nieuws-more-podcast" href="#"
|
||||||
data-loadmorenews='{"container":["#items-podcasts"]}'>
|
data-loadmorenews='{"container":["#items-podcasts"]}'>
|
||||||
<span class="fas fa-spinner fa-spin" id="loading"></span>
|
<span class="fas fa-spinner fa-spin" id="loading"></span>
|
||||||
Meer fragmenten
|
Meer {{$isPodcast ? 'afleveringen' : 'fragmenten'}}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -79,7 +79,8 @@
|
|||||||
'class' => 'd-flex flex-column justify-content-end flex-grow-1'
|
'class' => 'd-flex flex-column justify-content-end flex-grow-1'
|
||||||
],
|
],
|
||||||
'showAction' => true,
|
'showAction' => true,
|
||||||
'podcasts' => array_slice($podcasts, 0, 8)])
|
'podcasts' => array_slice($podcasts, 0, 8),
|
||||||
|
'isPodcast' => $isPodcast])
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@else
|
@else
|
||||||
@@ -98,7 +99,7 @@
|
|||||||
</h4>
|
</h4>
|
||||||
</div>
|
</div>
|
||||||
<div id="tab_more_fragmenten" class="box tab_content podcast_items active">
|
<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)])
|
@include('partial/podcastitems', ['id' => 'items-podcasts', 'showTime' => false, 'showImage' => false, 'podcasts' => array_slice($podcasts, 8), 'isPodcast' => $isPodcast])
|
||||||
<a class="btn auto_width" id="meer-nieuws-more-podcast" href="#"
|
<a class="btn auto_width" id="meer-nieuws-more-podcast" href="#"
|
||||||
data-loadmorenews='{"container":["#items-podcasts"]}'>
|
data-loadmorenews='{"container":["#items-podcasts"]}'>
|
||||||
<span class="fas fa-spinner fa-spin" id="loading"></span>
|
<span class="fas fa-spinner fa-spin" id="loading"></span>
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
@extends('layouts/full')
|
@extends('layouts/full')
|
||||||
|
|
||||||
@section('title')
|
@section('title')
|
||||||
Fragment gemist
|
@if(isset($program))
|
||||||
|
{{ $program->name }}
|
||||||
|
@else
|
||||||
|
NH Gooi Podcast
|
||||||
|
@endif
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('page_class')
|
@section('page_class')
|
||||||
@@ -12,14 +16,12 @@
|
|||||||
<ul class="bread_crumb ">
|
<ul class="bread_crumb ">
|
||||||
<li><a title="Home" href="/">Home</a></li>
|
<li><a title="Home" href="/">Home</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="Fragment gemist" href="{{route('gemist')}}">Fragment gemist</a></li>
|
<li>NH Gooi podcast</li>
|
||||||
<li class="separator"><i class="fa-solid fa-chevron-right"></i></li>
|
|
||||||
@if(isset($program))
|
@if(isset($program))
|
||||||
<li><a title="{{$program->name}}"
|
|
||||||
href="{{route('gemist.programma') . $program->url}}">{{$program->name}}</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="{{$program->name}}"
|
||||||
|
href="/podcast{{$program->url}}">{{$program->name}}</a></li>
|
||||||
@endif
|
@endif
|
||||||
<li>Fragmenten</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@@ -28,8 +30,7 @@
|
|||||||
<div class="row news_post">
|
<div class="row news_post">
|
||||||
<div class="col-12 col-md content_container md_padding_top_80">
|
<div class="col-12 col-md content_container md_padding_top_80">
|
||||||
@if(isset($program))
|
@if(isset($program))
|
||||||
<div class="box full-width post single">
|
<div class="no-box full-width post single">
|
||||||
<h1 class="page_title">{{$program->name}}</h1>
|
|
||||||
<div class="post_body">
|
<div class="post_body">
|
||||||
<div class="content_box clearfix section_margin_top">
|
<div class="content_box clearfix section_margin_top">
|
||||||
<div class="post_content page_margin_top_section ">
|
<div class="post_content page_margin_top_section ">
|
||||||
@@ -43,12 +44,12 @@
|
|||||||
|
|
||||||
<div class="page_layout clearfix">
|
<div class="page_layout clearfix">
|
||||||
<div class="grid" id="items">
|
<div class="grid" id="items">
|
||||||
@include('partial/podcastdirectitems', ['podcasts' => array_slice($podcasts, 0, 2)])
|
@include('partial/podcastdirectitems', ['podcasts' => array_slice($podcasts, 0, 2), 'isPodcast' => $isPodcast])
|
||||||
</div><!--/.row-->
|
</div><!--/.row-->
|
||||||
</div>
|
</div>
|
||||||
@else
|
@else
|
||||||
<div class="box full-width">
|
<div class="box full-width">
|
||||||
<p class="page_body">Er zijn geen fragmenten beschikbaar.</p>
|
<p class="page_body">Er zijn geen items beschikbaar.</p>
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
@@ -62,7 +63,7 @@
|
|||||||
</h4>
|
</h4>
|
||||||
</div>
|
</div>
|
||||||
<div id="tab_more_fragmenten" class="box tab_content podcast_items active">
|
<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)])
|
@include('partial/podcastitems', ['id' => 'items-podcasts', 'showTime' => false, 'showImage' => false, 'podcasts' => array_slice($podcasts, 2), 'isPodcast' => $isPodcast])
|
||||||
<a class="btn auto_width" id="meer-nieuws-more-podcast" href="#"
|
<a class="btn auto_width" id="meer-nieuws-more-podcast" href="#"
|
||||||
data-loadmorenews='{"container":["#items-podcasts"]}'>
|
data-loadmorenews='{"container":["#items-podcasts"]}'>
|
||||||
<span class="fas fa-spinner fa-spin" id="loading"></span>
|
<span class="fas fa-spinner fa-spin" id="loading"></span>
|
||||||
|
|||||||
@@ -129,7 +129,7 @@
|
|||||||
<div id="host" class="box">
|
<div id="host" class="box">
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
@foreach($hosts as $host)
|
@foreach($hosts as $host)
|
||||||
<li><i class="fa-solid fa-user-tie"></i> {{ Html::mailto($host->email . '@nhgooi.nl', $host->name, ['class' => 'action_button']) }}</li>
|
<li><i class="fa-solid fa-user-tie"></i> {{ $host->name }}</li>
|
||||||
@endforeach
|
@endforeach
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<h2>Contact met de redactie</h2>
|
<h2>Contact met de redactie</h2>
|
||||||
<p>Heb jij een tip voor onze streekredactie? Bel of app de tiplijn:
|
<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="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 lang op de Gooise Brink,
|
<a href="mailto:info@nhgooi.nl">mail</a> of kom langs op de Gooise Brink,
|
||||||
Kerkstraat 63/27 in Hilversum</p>
|
Kerkstraat 63/27 in Hilversum</p>
|
||||||
<a class="read_more" href="{{url('contact')}}">Lees meer <i class="fa-solid fa-angle-right"></i></a>
|
<a class="read_more" href="{{url('contact')}}">Contactinformatie <i class="fa-solid fa-angle-right"></i></a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -119,13 +119,9 @@ function buildMenu($menu, $ismobile)
|
|||||||
<nav class="d-none d-md-flex">
|
<nav class="d-none d-md-flex">
|
||||||
<div></div>
|
<div></div>
|
||||||
<ul class="menu d-none d-lg-block">
|
<ul class="menu d-none d-lg-block">
|
||||||
<li class="{{isActive('/', false) ? "selected" : ""}}">
|
<li class="{{isActive('/', false) || isActive('/nieuws', false) ? "selected" : ""}}">
|
||||||
<a href="/" title="Home">Home</a>
|
<a href="/" title="Nieuws">Nieuws</a>
|
||||||
</li>
|
</li>
|
||||||
<?php /*@php($newsUrl = '/nieuws')
|
|
||||||
<li class="{{isActive($newsUrl, false) ? "selected" : ""}}">
|
|
||||||
<a href="{{$newsUrl}}" title="Nieuws">Nieuws</a>
|
|
||||||
</li>*/ ?>
|
|
||||||
{!! buildMenu($menu, false) !!}
|
{!! buildMenu($menu, false) !!}
|
||||||
<li></li>
|
<li></li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -142,12 +138,8 @@ function buildMenu($menu, $ismobile)
|
|||||||
<a href="javascript:void(0)"><i class="fa-solid fa-xmark"></i></a>
|
<a href="javascript:void(0)"><i class="fa-solid fa-xmark"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="{{isActive('/', false) ? "selected" : ""}}">
|
<li class="{{isActive('/', false) || isActive('/nieuws', false) ? "selected" : ""}}">
|
||||||
<a href="/" title="Home">Home</a>
|
<a href="/" title="Nieuws">Nieuws</a>
|
||||||
</li>
|
|
||||||
@php($newsUrl = '/nieuws')
|
|
||||||
<li class="{{isActive($newsUrl, false) ? "selected" : ""}}">
|
|
||||||
<a href="{{$newsUrl}}" title="Nieuws">Nieuws</a>
|
|
||||||
</li>
|
</li>
|
||||||
{!! buildMenu($menu, true) !!}
|
{!! buildMenu($menu, true) !!}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -33,9 +33,11 @@
|
|||||||
$(document).on('onAirUpdated', function (evt, data) {
|
$(document).on('onAirUpdated', function (evt, data) {
|
||||||
var title = data.current ? data.current.title : '';
|
var title = data.current ? data.current.title : '';
|
||||||
var artist = data.current ? data.current.artist : '';
|
var artist = data.current ? data.current.artist : '';
|
||||||
if (data.inProgram) {
|
if (!data.current) {
|
||||||
title = data.program.name;
|
// title = data.program.name;
|
||||||
artist = data.program.tagline;
|
// artist = data.program.tagline;
|
||||||
|
$nowPlaying.container.slideUp();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
$nowPlaying.title.text(title).attr('title', title);
|
$nowPlaying.title.text(title).attr('title', title);
|
||||||
$nowPlaying.artist.text(artist).attr('title', artist);
|
$nowPlaying.artist.text(artist).attr('title', artist);
|
||||||
|
|||||||
56
resources/views/widgets/podcastplayer.blade.php
Normal file
56
resources/views/widgets/podcastplayer.blade.php
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<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,6 +17,7 @@ Route::get('/nieuws', 'NewsController@overview')->name('nieuws');
|
|||||||
Route::get('/nieuws/more', 'NewsController@more')->name('nieuws.more');
|
Route::get('/nieuws/more', 'NewsController@more')->name('nieuws.more');
|
||||||
Route::get('/nieuws/populair', 'NewsController@populair')->name('nieuws.populair');
|
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/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/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/{id}/{title}', 'NewsController@show')->where(['id' => '\d+'])->name('nieuws.detail');
|
||||||
Route::get('/nieuws/zoeken/{query}', 'NewsController@search')->name('nieuws.zoeken');
|
Route::get('/nieuws/zoeken/{query}', 'NewsController@search')->name('nieuws.zoeken');
|
||||||
@@ -52,6 +53,7 @@ Route::get('/luister/fragment')->name('luister.podcast');
|
|||||||
Route::get('/luister/programma/{year}/{month}/{day}/{hour}/{duration}/{offset?}', 'StreamController@program')
|
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?']);
|
->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/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', 'RadioController@podcasts')->name('gemist');
|
||||||
Route::get('/gemist/zoeken/{query}', 'RadioController@searchpodcast')->name('gemist.zoeken');
|
Route::get('/gemist/zoeken/{query}', 'RadioController@searchpodcast')->name('gemist.zoeken');
|
||||||
@@ -67,10 +69,10 @@ Route::get('/gemist/fragment/{id}/{title}', 'RadioController@podcast')->where(['
|
|||||||
Route::get('/gemist/programma', 'RadioController@terugluisteren')->name('gemist.programma');
|
Route::get('/gemist/programma', 'RadioController@terugluisteren')->name('gemist.programma');
|
||||||
Route::get('/gemist/programma/{programma}/{title}', 'RadioController@podcasts')->where(['programma' => '\d+']);
|
Route::get('/gemist/programma/{programma}/{title}', 'RadioController@podcasts')->where(['programma' => '\d+']);
|
||||||
|
|
||||||
Route::get('/podcast/{programma}/{title}', 'PodcastController@podcasts')->where(['programma' => '\d+']);
|
Route::get('/podcast/{programma}/{title}', 'PodcastController@podcasts')->where(['programma' => '\d+'])->name('podcast.overzicht');
|
||||||
Route::get('/podcast/fragment/{id}/{title}', 'RadioController@podcast')->where(['id' => '\d+', 'title' => '.*']);
|
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/aflevering/{id}/{title}', 'PodcastController@podcast')->where(['id' => '\d+']);
|
||||||
Route::get('/podcast/zoeken/{query}', 'RadioController@searchpodcast')->name('gemist.zoeken');
|
Route::get('/podcast/zoeken/{query}', 'RadioController@searchpodcast')->name('podcast.zoeken');
|
||||||
Route::get('/podcast/zoeken', function(Illuminate\Http\Request $request) {
|
Route::get('/podcast/zoeken', function(Illuminate\Http\Request $request) {
|
||||||
if($query = $request->get('query', null)) {
|
if($query = $request->get('query', null)) {
|
||||||
return redirect('/podcast/zoeken/' . urlencode($query));
|
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\\Undefined' => $vendorDir . '/mockery/mockery/library/Mockery/Undefined.php',
|
||||||
'Mockery\\VerificationDirector' => $vendorDir . '/mockery/mockery/library/Mockery/VerificationDirector.php',
|
'Mockery\\VerificationDirector' => $vendorDir . '/mockery/mockery/library/Mockery/VerificationDirector.php',
|
||||||
'Mockery\\VerificationExpectation' => $vendorDir . '/mockery/mockery/library/Mockery/VerificationExpectation.php',
|
'Mockery\\VerificationExpectation' => $vendorDir . '/mockery/mockery/library/Mockery/VerificationExpectation.php',
|
||||||
'Model\\Blog' => '/srv/api/common/classes/Blog.php',
|
'Model\\Blog' => $baseDir . '/app/Models/Blog.php',
|
||||||
'Model\\CalendarEvent' => '/srv/api/common/classes/CalendarEvent.php',
|
'Model\\CalendarEvent' => $baseDir . '/app/Models/CalendarEvent.php',
|
||||||
'Model\\JobOpening' => '/srv/api/common/classes/JobOpening.php',
|
'Model\\JobOpening' => $baseDir . '/app/Models/JobOpening.php',
|
||||||
'Model\\Kerkdienst' => '/srv/api/common/classes/Kerkdienst.php',
|
'Model\\Kerkdienst' => $baseDir . '/app/Models/Kerkdienst.php',
|
||||||
'Model\\MetaData' => '/srv/api/common/classes/MetaData.php',
|
'Model\\MetaData' => $baseDir . '/app/Models/MetaData.php',
|
||||||
'Model\\Model' => '/srv/api/common/classes/Model.php',
|
'Model\\Model' => $baseDir . '/app/Models/Model.php',
|
||||||
'Model\\NewsImage' => '/srv/api/common/classes/NewsImage.php',
|
'Model\\NewsImage' => $baseDir . '/app/Models/NewsImage.php',
|
||||||
'Model\\NewsItem' => '/srv/api/common/classes/NewsItem.php',
|
'Model\\NewsItem' => $baseDir . '/app/Models/NewsItem.php',
|
||||||
'Model\\NewsSource' => '/srv/api/common/classes/NewsSource.php',
|
'Model\\NewsSource' => $baseDir . '/app/Models/NewsSource.php',
|
||||||
'Model\\Podcast' => '/srv/api/common/classes/Podcast.php',
|
'Model\\Podcast' => $baseDir . '/app/Models/Podcast.php',
|
||||||
'Model\\Program' => '/srv/api/common/classes/Program.php',
|
'Model\\Program' => $baseDir . '/app/Models/Program.php',
|
||||||
'Model\\ProgramHost' => '/srv/api/common/classes/ProgramHost.php',
|
'Model\\ProgramHost' => $baseDir . '/app/Models/ProgramHost.php',
|
||||||
'Model\\Track' => '/srv/api/common/classes/Track.php',
|
'Model\\Track' => $baseDir . '/app/Models/Track.php',
|
||||||
'Monolog\\Attribute\\AsMonologProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php',
|
'Monolog\\Attribute\\AsMonologProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php',
|
||||||
'Monolog\\DateTimeImmutable' => $vendorDir . '/monolog/monolog/src/Monolog/DateTimeImmutable.php',
|
'Monolog\\DateTimeImmutable' => $vendorDir . '/monolog/monolog/src/Monolog/DateTimeImmutable.php',
|
||||||
'Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.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'),
|
'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'),
|
||||||
'NunoMaduro\\Collision\\' => array($vendorDir . '/nunomaduro/collision/src'),
|
'NunoMaduro\\Collision\\' => array($vendorDir . '/nunomaduro/collision/src'),
|
||||||
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
|
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
|
||||||
'Model\\' => array('/srv/api/common/classes'),
|
'Model\\' => array($baseDir . '/app/Models'),
|
||||||
'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'),
|
'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'),
|
||||||
'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'),
|
'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'),
|
||||||
'League\\Config\\' => array($vendorDir . '/league/config/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\\' =>
|
'Model\\' =>
|
||||||
array (
|
array (
|
||||||
0 => '/srv/api/common/classes',
|
0 => __DIR__ . '/../..' . '/app/Models',
|
||||||
),
|
),
|
||||||
'League\\MimeTypeDetection\\' =>
|
'League\\MimeTypeDetection\\' =>
|
||||||
array (
|
array (
|
||||||
@@ -3169,19 +3169,19 @@ class ComposerStaticInit5216a35d72a5119d2f4646cd700f802d
|
|||||||
'Mockery\\Undefined' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Undefined.php',
|
'Mockery\\Undefined' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Undefined.php',
|
||||||
'Mockery\\VerificationDirector' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/VerificationDirector.php',
|
'Mockery\\VerificationDirector' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/VerificationDirector.php',
|
||||||
'Mockery\\VerificationExpectation' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/VerificationExpectation.php',
|
'Mockery\\VerificationExpectation' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/VerificationExpectation.php',
|
||||||
'Model\\Blog' => '/srv/api/common/classes/Blog.php',
|
'Model\\Blog' => __DIR__ . '/../..' . '/app/Models/Blog.php',
|
||||||
'Model\\CalendarEvent' => '/srv/api/common/classes/CalendarEvent.php',
|
'Model\\CalendarEvent' => __DIR__ . '/../..' . '/app/Models/CalendarEvent.php',
|
||||||
'Model\\JobOpening' => '/srv/api/common/classes/JobOpening.php',
|
'Model\\JobOpening' => __DIR__ . '/../..' . '/app/Models/JobOpening.php',
|
||||||
'Model\\Kerkdienst' => '/srv/api/common/classes/Kerkdienst.php',
|
'Model\\Kerkdienst' => __DIR__ . '/../..' . '/app/Models/Kerkdienst.php',
|
||||||
'Model\\MetaData' => '/srv/api/common/classes/MetaData.php',
|
'Model\\MetaData' => __DIR__ . '/../..' . '/app/Models/MetaData.php',
|
||||||
'Model\\Model' => '/srv/api/common/classes/Model.php',
|
'Model\\Model' => __DIR__ . '/../..' . '/app/Models/Model.php',
|
||||||
'Model\\NewsImage' => '/srv/api/common/classes/NewsImage.php',
|
'Model\\NewsImage' => __DIR__ . '/../..' . '/app/Models/NewsImage.php',
|
||||||
'Model\\NewsItem' => '/srv/api/common/classes/NewsItem.php',
|
'Model\\NewsItem' => __DIR__ . '/../..' . '/app/Models/NewsItem.php',
|
||||||
'Model\\NewsSource' => '/srv/api/common/classes/NewsSource.php',
|
'Model\\NewsSource' => __DIR__ . '/../..' . '/app/Models/NewsSource.php',
|
||||||
'Model\\Podcast' => '/srv/api/common/classes/Podcast.php',
|
'Model\\Podcast' => __DIR__ . '/../..' . '/app/Models/Podcast.php',
|
||||||
'Model\\Program' => '/srv/api/common/classes/Program.php',
|
'Model\\Program' => __DIR__ . '/../..' . '/app/Models/Program.php',
|
||||||
'Model\\ProgramHost' => '/srv/api/common/classes/ProgramHost.php',
|
'Model\\ProgramHost' => __DIR__ . '/../..' . '/app/Models/ProgramHost.php',
|
||||||
'Model\\Track' => '/srv/api/common/classes/Track.php',
|
'Model\\Track' => __DIR__ . '/../..' . '/app/Models/Track.php',
|
||||||
'Monolog\\Attribute\\AsMonologProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php',
|
'Monolog\\Attribute\\AsMonologProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php',
|
||||||
'Monolog\\DateTimeImmutable' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/DateTimeImmutable.php',
|
'Monolog\\DateTimeImmutable' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/DateTimeImmutable.php',
|
||||||
'Monolog\\ErrorHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/ErrorHandler.php',
|
'Monolog\\ErrorHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/ErrorHandler.php',
|
||||||
|
|||||||
Reference in New Issue
Block a user