1
0

Added a rennderer specific to the feed

This commit is contained in:
Richard Dern 2024-05-09 01:12:02 +02:00
parent 3b02c21e4c
commit fff970dca3
3 changed files with 58 additions and 36 deletions

View File

@ -8,6 +8,7 @@
class BundleRendererServiceProvider extends ServiceProvider class BundleRendererServiceProvider extends ServiceProvider
{ {
protected array $bundleRenderers = [ protected array $bundleRenderers = [
\App\Services\BundleRenderers\Renderers\FeedRenderer::class,
\App\Services\BundleRenderers\Renderers\DossiersListRenderer::class, \App\Services\BundleRenderers\Renderers\DossiersListRenderer::class,
\App\Services\BundleRenderers\Renderers\DossierRenderer::class, \App\Services\BundleRenderers\Renderers\DossierRenderer::class,
\App\Services\BundleRenderers\Renderers\DateBasedListRenderer::class, \App\Services\BundleRenderers\Renderers\DateBasedListRenderer::class,

View File

@ -0,0 +1,57 @@
<?php
namespace App\Services\BundleRenderers\Renderers;
use App\Classes\Bundle;
class FeedRenderer extends BaseRenderer
{
/**
* Renders a complete HTML view of the bundle
*/
public function render()
{
$output = $this->renderFeed();
$baseRender['/index.xml'] = [
'output' => $output,
'validation' => null,
];
dd($baseRender['/index.xml']['validation']);
$baseRender += parent::render();
return $baseRender;
}
/**
* Return a boolean value indicating if this creator in particular can
* create bundles for specified section
*/
public static function handles(Bundle $bundle): bool
{
return $bundle->getPath() === '/';
}
private function renderFeed()
{
$bundles = $this->getSubBundles();
$lastBundles = array_map(
function ($item) {
$bundle = new Bundle($item, $this->bundle->getDisk());
$bundle->load();
return $bundle;
},
array_slice($bundles, 0, 10)
);
$lastBundle = collect($lastBundles)->first();
return (string) view('feed', [
'bundles' => $lastBundles,
'lastBuildDate' => now()->toRssString(),
]);
}
}

View File

@ -3,24 +3,9 @@
namespace App\Services\BundleRenderers\Renderers; namespace App\Services\BundleRenderers\Renderers;
use App\Classes\Bundle; use App\Classes\Bundle;
use Carbon\Carbon;
class ListRenderer extends BaseRenderer class ListRenderer extends BaseRenderer
{ {
/**
* Renders a complete HTML view of the bundle
*/
public function render()
{
$baseRender = parent::render();
if ($this->bundle->getPath() === '/') {
$baseRender['/index.xml'] = $this->renderFeed();
}
return $baseRender;
}
/** /**
* Return a boolean value indicating if this creator in particular can * Return a boolean value indicating if this creator in particular can
* create bundles for specified section * create bundles for specified section
@ -31,25 +16,4 @@ public static function handles(Bundle $bundle): bool
// can handle the path // can handle the path
return false; return false;
} }
private function renderFeed()
{
$bundles = $this->getSubBundles();
$lastBundles = array_map(
function ($item) {
$bundle = new Bundle($item, $this->bundle->getDisk());
$bundle->load();
return $bundle;
},
array_slice($bundles, 0, 10)
);
$lastBundle = collect($lastBundles)->first();
return (string) view('feed', [
'bundles' => $lastBundles,
'lastBuildDate' => Carbon::parse($lastBundle->metadata()->get('date')),
]);
}
} }