diff --git a/templates/Base/OnePage/Handlers/OnePage.php b/templates/Base/OnePage/Handlers/OnePage.php index db912392..1a0e1264 100644 --- a/templates/Base/OnePage/Handlers/OnePage.php +++ b/templates/Base/OnePage/Handlers/OnePage.php @@ -32,30 +32,42 @@ abstract class OnePage implements TemplateHandler $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() + { + $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); + } + + return $pages->get(); + } + /** * Prepare Content object to be rendered using Blade template * * @param Content $content + * + * @return array */ 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(); + $pages = self::getPagesOnHomepage(); // create real content from pages $pagesRaw = $pagesInTemplates = []; diff --git a/templates/Base/OnePage/Providers/OnePageTemplate.php b/templates/Base/OnePage/Providers/OnePageTemplate.php index 642466d1..6516fa52 100644 --- a/templates/Base/OnePage/Providers/OnePageTemplate.php +++ b/templates/Base/OnePage/Providers/OnePageTemplate.php @@ -2,6 +2,7 @@ namespace Templates\Base\OnePage\Providers; use Illuminate\Support\ServiceProvider; +use Templates\Base\OnePage\Widgets\OnePageMenu\OnePageMenu; class OnePageTemplate extends ServiceProvider { @@ -11,20 +12,46 @@ class OnePageTemplate extends ServiceProvider * @return void */ public function register() - { + { $this->registerTranslations(); } public function boot() { - // register translations - $this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'template'); - - // load views - $this->loadViewsFrom(array_merge(array_map(function ($path) { - return $path; - }, \Config::get('view.paths')), [__DIR__ . '/../Resources/views']), 'template'); + $this->registerViews(); + $this->registerWidgets(); // register event service provider for this template $this->app->register(EventProvider::class); } + + /** + * Register translations used in this base template + */ + private function registerTranslations() + { + // register translations + $this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'template'); + } + + /** + * Register views used in this template - both visitor's and admin's + */ + private function registerViews() + { + // load views + $this->loadViewsFrom(array_merge(array_map(function ($path) { + return $path; + }, \Config::get('view.paths')), [__DIR__ . '/../Resources/views']), 'template'); + } + + /** + * Register all widgets related to this template + */ + private function registerWidgets() + { + $registrator = $this->app->make('registerWidget'); + + // register all available widgets + $registrator->register(OnePageMenu::class); + } } \ No newline at end of file diff --git a/templates/Base/OnePage/Resources/lang/en/widget/menu.php b/templates/Base/OnePage/Resources/lang/en/widget/menu.php new file mode 100644 index 00000000..04a5c5c8 --- /dev/null +++ b/templates/Base/OnePage/Resources/lang/en/widget/menu.php @@ -0,0 +1,12 @@ + 'One page menu', + 'description' => 'Simple menu used for one page templates. This menu navigates using nachor links on page. Links are generated automatically using list of pages on homepage.', + 'new' => 'Create new menu', + 'form' => [ + 'name' => 'Menu name', + 'description' => 'Description', + 'containerClass' => 'HTML class for container element', + 'save' => 'Save', + ] +]; \ No newline at end of file diff --git a/templates/Base/OnePage/Resources/views/admin/widgets/onePageMenu/edit.blade.php b/templates/Base/OnePage/Resources/views/admin/widgets/onePageMenu/edit.blade.php new file mode 100644 index 00000000..e91e4a74 --- /dev/null +++ b/templates/Base/OnePage/Resources/views/admin/widgets/onePageMenu/edit.blade.php @@ -0,0 +1,15 @@ +@extends('admin.layoutWithNavigation') + +@section('pageHeading', @trans('widgets/htmlCode.edit', ['name' => $widget->name])) + +@section('content') +