From d6a3f5e1190658e3fab7f500075a016a6a65aabf Mon Sep 17 00:00:00 2001 From: Mischa Spelt Date: Fri, 24 Jan 2020 23:37:19 +0100 Subject: [PATCH] Sidebar widgets --- website/app/Console/Kernel.php | 23 +- website/app/Http/Controllers/Controller.php | 39 +- website/public/css/nhgooi.css | 8 +- .../resources/views/layouts/master.blade.php | 4 +- .../resources/views/layouts/sidebar.blade.php | 297 +-------------- website/resources/views/newslist.blade.php | 347 +++--------------- .../views/partial/radioscheduleweek.blade.php | 9 +- .../resources/views/radioschedule.blade.php | 12 + .../views/widgets/laatstenieuws.blade.php | 20 +- .../views/widgets/laatstepodcasts.blade.php | 21 ++ .../views/widgets/nustraks.blade.php | 43 +++ .../views/widgets/populairnieuws.blade.php | 24 ++ 12 files changed, 217 insertions(+), 630 deletions(-) create mode 100644 website/resources/views/widgets/laatstepodcasts.blade.php create mode 100644 website/resources/views/widgets/nustraks.blade.php create mode 100644 website/resources/views/widgets/populairnieuws.blade.php diff --git a/website/app/Console/Kernel.php b/website/app/Console/Kernel.php index 0ee5278d..29cc85fe 100644 --- a/website/app/Console/Kernel.php +++ b/website/app/Console/Kernel.php @@ -31,18 +31,19 @@ class Kernel extends ConsoleKernel // Update latest news (3 items) $schedule->call(function() { - $latest_news = json_decode(file_get_contents($this->API_URL . 'nieuws/overzicht?pagina=1&aantal=3')); - - $news = []; - foreach($latest_news->news as $item_data) - { - $news[] = new \Model\NewsItem($item_data); - } - - Storage::disk('local')->put('laatste_nieuws.json', json_encode($news)); + Storage::disk('local')->put('laatste_nieuws.json', file_get_contents($this->API_URL . 'nieuws/overzicht?pagina=1&aantal=3')); + Storage::disk('local')->put('populair_nieuws.json', file_get_contents($this->API_URL . 'nieuws/populair')); + })->everyMinute(); + + // Update now / later + $schedule->call(function() { + Storage::disk('local')->put('nu_straks.json', file_get_contents($this->API_URL . 'programma/schema/nustraks')); + })->everyMinute(); + + // Update latest podcasts (3 items) + $schedule->call(function() { + Storage::disk('local')->put('laatste_podcasts.json', file_get_contents($this->API_URL . 'podcast/overzicht?pagina=1&aantal=3')); })->everyMinute(); - // $schedule->command('inspire') - // ->hourly(); } /** diff --git a/website/app/Http/Controllers/Controller.php b/website/app/Http/Controllers/Controller.php index e607569d..efb4f6f8 100644 --- a/website/app/Http/Controllers/Controller.php +++ b/website/app/Http/Controllers/Controller.php @@ -8,6 +8,8 @@ use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Http\Request; use Illuminate\Support\Facades\Session; +use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Facades\View; class Controller extends BaseController { @@ -15,9 +17,44 @@ class Controller extends BaseController protected $API_URL; + private function getDataFromFileAndConvert($file, $path, $class) + { + $data = json_decode(Storage::disk('local')->get($file)); + foreach($path as $subobject) { $data = $data->$subobject; } + $items = []; + foreach($data as $item_data) + { + $items[] = new $class($item_data); + } + + return $items; + } + public function __construct() { - \Illuminate\Support\Facades\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::composer('widgets.laatstenieuws', function($view) { + $view->with('data', $this->getDataFromFileAndConvert('laatste_nieuws.json', ['news'], '\Model\NewsItem')); + }); + View::composer('widgets.populairnieuws', function($view) { + $view->with('data', $this->getDataFromFileAndConvert('populair_nieuws.json', [], '\Model\NewsItem')); + }); + View::composer('widgets.nustraks', function($view) { + $data = json_decode(Storage::disk('local')->get('nu_straks.json'))->schedule; + $programs = []; + foreach($data as $item_data) + { + $programs[] = $program = new \Model\Program($item_data->program); + $program->start = new \DateTimeImmutable($item_data->start->date, new \DateTimeZone($item_data->start->timezone)); + $program->end = new \DateTimeImmutable($item_data->end->date, new \DateTimeZone($item_data->end->timezone)); + } + + + $view->with('data', $programs); + }); + View::composer('widgets.laatstepodcasts', function($view) { + $view->with('data', $this->getDataFromFileAndConvert('laatste_podcasts.json', ['podcasts'], '\Model\Podcast')); + }); } protected function registerView(Request $request, $type, $id) diff --git a/website/public/css/nhgooi.css b/website/public/css/nhgooi.css index d5cbffb4..ae6782cc 100644 --- a/website/public/css/nhgooi.css +++ b/website/public/css/nhgooi.css @@ -135,6 +135,10 @@ button[disabled]:hover padding-top: 5px; } +.blog.small .post img { + width: 100px; +} + .post.single { width: 100%; } @@ -201,4 +205,6 @@ button[disabled]:hover background-color: #E4E4E4; } - +.text-muted { + color: #7C7C7C; +} diff --git a/website/resources/views/layouts/master.blade.php b/website/resources/views/layouts/master.blade.php index 9211bd2f..7f217899 100644 --- a/website/resources/views/layouts/master.blade.php +++ b/website/resources/views/layouts/master.blade.php @@ -249,7 +249,7 @@ --> - @include('widgets/laatstenieuws') + @include('widgets.laatstenieuws') @endpush diff --git a/website/resources/views/widgets/laatstenieuws.blade.php b/website/resources/views/widgets/laatstenieuws.blade.php index e472467d..5db651ec 100644 --- a/website/resources/views/widgets/laatstenieuws.blade.php +++ b/website/resources/views/widgets/laatstenieuws.blade.php @@ -1,18 +1,3 @@ -news; - -$news = []; -foreach($latest_news as $raw) -{ - $news[] = new \Model\NewsItem($raw); -} -Storage::disk('local')->put('laatste_nieuws.json', json_encode($news)); - */ - -$latest_news = json_decode(Storage::disk('local')->get('laatste_nieuws.json')); -?> -