registerMenuItems('October.Cms', [ 'cms' => [ 'label' => 'cms::lang.cms.menu_label', 'icon' => 'icon-cms', 'url' => Backend::url('cms'), 'permissions' => ['cms.*'], 'order' => 10, 'sideMenu' => [ 'pages' => [ 'label' => 'cms::lang.page.menu_label', 'icon' => 'icon-cms-pages', 'url' => 'javascript:;', 'attributes' => ['data-menu-item'=>'pages'], 'permissions' => ['cms.manage_pages'] ], 'partials' => [ 'label' => 'cms::lang.partial.menu_label', 'icon' => 'icon-cms-partials', 'url' => 'javascript:;', 'attributes' => ['data-menu-item'=>'partials'], 'permissions' => ['cms.manage_partials'] ], 'layouts' => [ 'label' => 'cms::lang.layout.menu_label', 'icon' => 'icon-cms-layouts', 'url' => 'javascript:;', 'attributes' => ['data-menu-item'=>'layouts'], 'permissions' => ['cms.manage_layouts'] ], 'content' => [ 'label' => 'cms::lang.content.menu_label', 'icon' => 'icon-cms-content', 'url' => 'javascript:;', 'attributes' => ['data-menu-item'=>'content'], 'permissions' => ['cms.manage_content'] ], 'assets' => [ 'label' => 'cms::lang.asset.menu_label', 'icon' => 'icon-cms-assets', 'url' => 'javascript:;', 'attributes' => ['data-menu-item'=>'assets'], 'permissions' => ['cms.manage_assets'] ], 'components' => [ 'label' => 'cms::lang.component.menu_label', 'icon' => 'icon-cms-components', 'url' => 'javascript:;', 'attributes' => ['data-menu-item'=>'components'], 'permissions' => ['cms.manage_pages', 'cms:manage_layouts'] ] ] ] ]); }); /* * Register permissions */ BackendAuth::registerCallback(function ($manager) { $manager->registerPermissions('October.Cms', [ 'cms.manage_content' => ['label' => 'cms::lang.permissions.manage_content', 'tab' => 'Cms'], 'cms.manage_assets' => ['label' => 'cms::lang.permissions.manage_assets', 'tab' => 'Cms'], 'cms.manage_pages' => ['label' => 'cms::lang.permissions.manage_pages', 'tab' => 'Cms'], 'cms.manage_layouts' => ['label' => 'cms::lang.permissions.manage_layouts', 'tab' => 'Cms'], 'cms.manage_partials' => ['label' => 'cms::lang.permissions.manage_partials', 'tab' => 'Cms'], 'cms.manage_themes' => ['label' => 'cms::lang.permissions.manage_themes', 'tab' => 'Cms'] ]); }); /* * Register widgets */ WidgetManager::instance()->registerFormWidgets(function ($manager) { $manager->registerFormWidget('Cms\FormWidgets\Components'); }); /* * Register settings */ SettingsManager::instance()->registerCallback(function ($manager) { $manager->registerSettingItems('October.Cms', [ 'theme' => [ 'label' => 'cms::lang.theme.settings_menu', 'description' => 'cms::lang.theme.settings_menu_description', 'category' => SettingsManager::CATEGORY_CMS, 'icon' => 'icon-picture-o', 'url' => Backend::URL('cms/themes'), 'order' => 200 ] ]); }); /* * Register components */ ComponentManager::instance()->registerComponents(function ($manager) { $manager->registerComponent('Cms\Classes\ViewBag', 'viewBag'); }); } /** * Bootstrap the module events. * * @return void */ public function boot() { parent::boot('cms'); Event::listen('pages.menuitem.listTypes', function () { return [ 'cms-page' => 'CMS Page ' ]; }); Event::listen('pages.menuitem.getTypeInfo', function ($type) { if ($type == 'cms-page') { return CmsPage::getMenuTypeInfo($type); } }); Event::listen('pages.menuitem.resolveItem', function ($type, $item, $url, $theme) { if ($type == 'cms-page') { return CmsPage::resolveMenuItem($item, $url, $theme); } }); } }