Added a rennderer specific to the feed
This commit is contained in:
parent
3b02c21e4c
commit
fff970dca3
|
@ -8,6 +8,7 @@
|
|||
class BundleRendererServiceProvider extends ServiceProvider
|
||||
{
|
||||
protected array $bundleRenderers = [
|
||||
\App\Services\BundleRenderers\Renderers\FeedRenderer::class,
|
||||
\App\Services\BundleRenderers\Renderers\DossiersListRenderer::class,
|
||||
\App\Services\BundleRenderers\Renderers\DossierRenderer::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;
|
||||
|
||||
use App\Classes\Bundle;
|
||||
use Carbon\Carbon;
|
||||
|
||||
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
|
||||
* create bundles for specified section
|
||||
|
@ -31,25 +16,4 @@ public static function handles(Bundle $bundle): bool
|
|||
// can handle the path
|
||||
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