Added a rennderer specific to the feed
This commit is contained in:
parent
3b02c21e4c
commit
fff970dca3
|
@ -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,
|
||||||
|
|
57
app/Services/BundleRenderers/Renderers/FeedRenderer.php
Normal file
57
app/Services/BundleRenderers/Renderers/FeedRenderer.php
Normal 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(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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')),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user