FEATURE: add base support for displaying multiple pages on one-page template

This commit is contained in:
Michal Kváček
2016-09-24 01:53:43 +02:00
parent 7cd084e621
commit b15bbae037
13 changed files with 181 additions and 31 deletions
@@ -2,9 +2,12 @@
namespace Templates\Base\OnePage\Handlers;
use App\Handlers\Contracts\TemplateHandler;
use App\Helpers\PageRenderer;
use App\Helpers\Settings;
use App\Models\Content;
use App\Models\Module;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
abstract class OnePage implements TemplateHandler
{
@@ -23,6 +26,50 @@ abstract class OnePage implements TemplateHandler
*/
public static function registerAdminMenu(User $user)
{
$menu = \Menu::instance('mainMenu');
$menu->route('template.setHomepage', trans('template::admin/mainMenu.setHomepage'), [], 1, ['icon' => 'fa fa-fw fa-home']);
}
/**
* Prepare Content object to be rendered using Blade template
*
* @param Content $content
*/
public static function beforeRender(Content & $content)
{
if ($content->is_homepage) {
$pageIds = (array)json_decode(Settings::get(self::HOMEPAGE_PAGES_SETTINGS_KEY, '[]'));
if (empty($pageIds)) {
return [];
}
// get all available pages
$pages = Content::whereIn('id', $pageIds);
if (Auth::user()) {
$pages = $pages->where('status', '!=', Content::STATUS_DRAFT);
} else {
$pages = $pages->where('status', Content::STATUS_PUBLIC);
}
$pages = $pages->get();
// create real content from pages
$pagesRaw = $pagesInTemplates = [];
foreach ($pages as $page) {
$pagesRaw[$page->url] = $page;
$pagesInTemplates[$page->url] = PageRenderer::render($page)
->render();
}
// dd($pagesRaw);
// return pages into template
return ['pagesHtml' => $pagesInTemplates, 'pagesRaw' => $pagesRaw];
}
return [];
}
/**