FIX: just a bugfix of few historical bugs

This commit is contained in:
Michal Kváček
2017-09-02 14:15:50 +02:00
parent e9671314a5
commit 7db8241a80
5 changed files with 105 additions and 85 deletions
+1 -82
View File
@@ -22,12 +22,7 @@ use Templates\Base\OnePage\Widgets\OnePageMenu\OnePageMenu;
abstract class OnePage implements TemplateHandler, InstallableModule
{
/**
* Name of settings key for list of pages used on homepage
*/
const HOMEPAGE_PAGES_SETTINGS_KEY = 'template.onepage.homepagePages';
protected static $homepagePagesInitialized = false;
protected static $homepagePages;
/**
* Register admin menu (or multiple ones)
@@ -40,83 +35,7 @@ abstract class OnePage implements TemplateHandler, InstallableModule
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']);
}
/**
* Getter for pages displayed on homepage
*
* @return array
*/
public static function getPagesOnHomepage()
{
if (!self::$homepagePagesInitialized) {
$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', '!=', IContent::STATUS_DRAFT);
} else {
$pages = $pages->where('status', IContent::STATUS_PUBLIC);
}
$homepagePages = $pages->get()
->getDictionary();
foreach ($pageIds as $pageId) {
if (!isset($homepagePages[$pageId])) {
continue;
}
self::$homepagePages[] = $homepagePages[$pageId];
}
self::$homepagePagesInitialized = true;
}
return self::$homepagePages;
}
/**
* Prepare Content object to be rendered using Blade template
*
* @param Content $content
*
* @return array
*/
public static function beforeRender(Content & $content)
{
if ($content->isHomepage) {
$pages = self::getPagesOnHomepage();
// create real content from pages
$pagesRaw = $pagesInTemplates = [];
foreach ($pages as $page) {
// save pages as models only
$pagesRaw[$page->url] = $page;
// save rendered pages
try {
$pagesInTemplates[$page->url] = PageRenderer::render($page)
->render();
} catch (\Exception $e) {
if (Auth::user()) {
$pagesInTemplates[$page->url] = view(Template::name('errors.cannotRender'), ['page' => $page])->render();
}
}
}
// return pages into template
return ['pagesHtml' => $pagesInTemplates, 'pagesRaw' => $pagesRaw];
}
return [];
$menu->route('template.setHomepage', trans('template::admin/mainMenu.setHomepage'), [], 1, ['icon' => 'fa fa-fw fa-home']);
}
/**