FIX: just a bugfix of few historical bugs
This commit is contained in:
@@ -22,12 +22,7 @@ use Templates\Base\OnePage\Widgets\OnePageMenu\OnePageMenu;
|
|||||||
|
|
||||||
abstract class OnePage implements TemplateHandler, InstallableModule
|
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';
|
const HOMEPAGE_PAGES_SETTINGS_KEY = 'template.onepage.homepagePages';
|
||||||
protected static $homepagePagesInitialized = false;
|
|
||||||
protected static $homepagePages;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register admin menu (or multiple ones)
|
* Register admin menu (or multiple ones)
|
||||||
@@ -40,83 +35,7 @@ abstract class OnePage implements TemplateHandler, InstallableModule
|
|||||||
public static function registerAdminMenu(User $user)
|
public static function registerAdminMenu(User $user)
|
||||||
{
|
{
|
||||||
$menu = \Menu::instance('mainMenu');
|
$menu = \Menu::instance('mainMenu');
|
||||||
// $menu->route('template.setHomepage', trans('template::admin/mainMenu.setHomepage'), [], 1, ['icon' => 'fa fa-fw fa-home']);
|
$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 [];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,96 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Templates\Base\OnePage\Pipeline\Display;
|
||||||
|
|
||||||
|
use App\CMS\Contracts\Content\DisplayPipeline\Process;
|
||||||
|
use App\CMS\Contracts\Repositories\Content as IContent;
|
||||||
|
use App\CMS\Helpers\PageRenderer;
|
||||||
|
use App\CMS\Helpers\Template;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\Content\Content;
|
||||||
|
use Templates\Base\OnePage\Handlers\OnePage;
|
||||||
|
|
||||||
|
class AttachPagesToHomepage implements Process
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Name of settings key for list of pages used on homepage
|
||||||
|
*/
|
||||||
|
protected static $homepagePagesInitialized = false;
|
||||||
|
protected static $homepagePages = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process and modify given page
|
||||||
|
*
|
||||||
|
* @param Content $content
|
||||||
|
*
|
||||||
|
* @return mixed|void
|
||||||
|
*/
|
||||||
|
function handle(Content & $content)
|
||||||
|
{
|
||||||
|
if (!$content->isHomepage) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$pages = $this->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] = Controller::getView($page->template, ['page' => $page])
|
||||||
|
->render();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
if (\Auth::user()) {
|
||||||
|
$pagesInTemplates[$page->url] = view(Template::name('errors.cannotRender'), [
|
||||||
|
'page' => $page,
|
||||||
|
'exception' => $e
|
||||||
|
])->render();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// set page contents
|
||||||
|
$content->pages = $pagesInTemplates;
|
||||||
|
$content->rawPages = $pagesRaw;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter for pages displayed on homepage
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getPagesOnHomepage()
|
||||||
|
{
|
||||||
|
$pageIds = (array)json_decode(setting(OnePage::HOMEPAGE_PAGES_SETTINGS_KEY, '[]'));
|
||||||
|
|
||||||
|
if (empty($pageIds)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
// get all available pages
|
||||||
|
$pages = Content::whereIn('id', $pageIds)
|
||||||
|
->with('subpages');
|
||||||
|
|
||||||
|
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];
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$homepagePages;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
namespace Templates\Base\OnePage\Providers;
|
namespace Templates\Base\OnePage\Providers;
|
||||||
|
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
use Templates\Base\OnePage\Pipeline\Display\AttachPagesToHomepage;
|
||||||
use Templates\Base\OnePage\Widgets\OnePageMenu\OnePageMenu;
|
use Templates\Base\OnePage\Widgets\OnePageMenu\OnePageMenu;
|
||||||
|
|
||||||
class OnePageTemplate extends ServiceProvider
|
class OnePageTemplate extends ServiceProvider
|
||||||
@@ -23,6 +24,9 @@ class OnePageTemplate extends ServiceProvider
|
|||||||
|
|
||||||
// register event service provider for this template
|
// register event service provider for this template
|
||||||
$this->app->register(EventProvider::class);
|
$this->app->register(EventProvider::class);
|
||||||
|
|
||||||
|
$registrator = $this->app->make('displayPipeline');
|
||||||
|
$registrator->add(AttachPagesToHomepage::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -52,6 +56,7 @@ class OnePageTemplate extends ServiceProvider
|
|||||||
{
|
{
|
||||||
$registrator = $this->app->make('registerWidget');
|
$registrator = $this->app->make('registerWidget');
|
||||||
|
|
||||||
|
|
||||||
// register all available widgets
|
// register all available widgets
|
||||||
$registrator->register(OnePageMenu::class);
|
$registrator->register(OnePageMenu::class);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ Improvement: http://www.html5rocks.com/en/tutorials/dnd/basics/
|
|||||||
'title' => $homepage->title.' <small>'.trans($homepage->module_name).'</small>',
|
'title' => $homepage->title.' <small>'.trans($homepage->module_name).'</small>',
|
||||||
'body' => '<p>'.str_limit(strip_tags($homepage->content), 200).'</p>',
|
'body' => '<p>'.str_limit(strip_tags($homepage->content), 200).'</p>',
|
||||||
'footerClass' => 'text-right',
|
'footerClass' => 'text-right',
|
||||||
'footer' => '<a href="'.route('content.edit', ['url' => $homepage->url]).'" class="btn btn-secondary btn-sm"><i class="fa fa-fw fa-pencil"></i></a>'
|
'footer' => '<a href="'.route('content.edit', ['page' => $homepage]).'" class="btn btn-secondary btn-sm"><i class="fa fa-fw fa-pencil"></i></a>'
|
||||||
])
|
])
|
||||||
@else
|
@else
|
||||||
<div class="alert alert-warning">@lang('template::admin/setHomepage.noHomepageSet')</div>
|
<div class="alert alert-warning">@lang('template::admin/setHomepage.noHomepageSet')</div>
|
||||||
@@ -38,7 +38,7 @@ Improvement: http://www.html5rocks.com/en/tutorials/dnd/basics/
|
|||||||
'body' => '<p>'.str_limit(strip_tags($allPages[$pageId]->content), 200).'</p>',
|
'body' => '<p>'.str_limit(strip_tags($allPages[$pageId]->content), 200).'</p>',
|
||||||
'footerClass' => 'text-right',
|
'footerClass' => 'text-right',
|
||||||
'footer' => '
|
'footer' => '
|
||||||
<a href="'.route('content.edit', ['url' => $allPages[$pageId]->url]).'" class="btn btn-secondary btn-sm"><i class="fa fa-fw fa-pencil"></i></a>
|
<a href="'.route('content.edit', ['page' => $allPages[$pageId]]).'" class="btn btn-secondary btn-sm"><i class="fa fa-fw fa-pencil"></i></a>
|
||||||
<a href="'.route('template.homepage.removePage', ['id' => $allPages[$pageId]->id]).'" class="btn btn-warning confirm btn-sm" data-message="'.trans('template::admin/setHomepage.reallyRemovePage').'"><i class="fa fa-fw fa-trash confirm"></i></a>
|
<a href="'.route('template.homepage.removePage', ['id' => $allPages[$pageId]->id]).'" class="btn btn-warning confirm btn-sm" data-message="'.trans('template::admin/setHomepage.reallyRemovePage').'"><i class="fa fa-fw fa-trash confirm"></i></a>
|
||||||
'
|
'
|
||||||
])
|
])
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
return [
|
return [
|
||||||
'providers' => [\Templates\Base\OnePage\Providers\OnePageTemplate::class],
|
'providers' => [\Templates\Base\OnePage\Providers\OnePageTemplate::class],
|
||||||
'files' => [__DIR__ . '/Http/routes.php'],
|
'files' => ['templates/Base/OnePage/Http/routes.php'],
|
||||||
'handler' => null,
|
'handler' => null,
|
||||||
'name' => null,
|
'name' => null,
|
||||||
'description' => null,
|
'description' => null,
|
||||||
|
|||||||
Reference in New Issue
Block a user