Complete overhaul of module service providers
This is to improve readability of these ever growing classes, also we can prune specific registrations based on the execution context for performance reasons.
This commit is contained in:
parent
366cdd55a8
commit
f334be5116
|
|
@ -22,9 +22,105 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
{
|
||||
parent::register('backend');
|
||||
|
||||
/*
|
||||
* Register widgets
|
||||
*/
|
||||
$this->registerMailer();
|
||||
$this->registerAssetBundles();
|
||||
|
||||
// Disabled for now
|
||||
// if (App::runningInBackend()) {
|
||||
$this->registerBackendNavigation();
|
||||
$this->registerBackendWidgets();
|
||||
$this->registerBackendPermissions();
|
||||
$this->registerBackendSettings();
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap the module events.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
parent::boot('backend');
|
||||
}
|
||||
|
||||
/**
|
||||
* Register mail templates
|
||||
*/
|
||||
protected function registerMailer()
|
||||
{
|
||||
MailTemplate::registerCallback(function ($template) {
|
||||
$template->registerMailTemplates([
|
||||
'backend::mail.invite' => 'Invitation for newly created administrators.',
|
||||
'backend::mail.restore' => 'Password reset instructions for backend-end administrators.',
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Register asset bundles
|
||||
*/
|
||||
protected function registerAssetBundles()
|
||||
{
|
||||
CombineAssets::registerCallback(function($combiner) {
|
||||
$combiner->registerBundle('~/modules/backend/assets/less/controls.less');
|
||||
$combiner->registerBundle('~/modules/backend/assets/less/october.less');
|
||||
$combiner->registerBundle('~/modules/backend/assets/js/october.js');
|
||||
$combiner->registerBundle('~/modules/backend/assets/js/vendor/vendor.js');
|
||||
$combiner->registerBundle('~/modules/backend/widgets/table/assets/js/build.js');
|
||||
$combiner->registerBundle('~/modules/backend/formwidgets/datepicker/assets/js/build.js');
|
||||
$combiner->registerBundle('~/modules/backend/formwidgets/richeditor/assets/less/richeditor.less');
|
||||
$combiner->registerBundle('~/modules/backend/formwidgets/richeditor/assets/js/build.js');
|
||||
$combiner->registerBundle('~/modules/backend/formwidgets/codeeditor/assets/less/codeeditor.less');
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Register navigation
|
||||
*/
|
||||
protected function registerBackendNavigation()
|
||||
{
|
||||
BackendMenu::registerCallback(function ($manager) {
|
||||
$manager->registerMenuItems('October.Backend', [
|
||||
'dashboard' => [
|
||||
'label' => 'backend::lang.dashboard.menu_label',
|
||||
'icon' => 'icon-dashboard',
|
||||
'url' => Backend::url('backend'),
|
||||
'permissions' => ['backend.access_dashboard'],
|
||||
'order' => 1
|
||||
]
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Register permissions
|
||||
*/
|
||||
protected function registerBackendPermissions()
|
||||
{
|
||||
BackendAuth::registerCallback(function ($manager) {
|
||||
$manager->registerPermissions('October.Backend', [
|
||||
'backend.access_dashboard' => [
|
||||
'label' => 'system::lang.permissions.view_the_dashboard',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
],
|
||||
'backend.manage_users' => [
|
||||
'label' => 'system::lang.permissions.manage_other_administrators',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
],
|
||||
'backend.manage_branding' => [
|
||||
'label' => 'system::lang.permissions.manage_branding',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
]
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Register widgets
|
||||
*/
|
||||
protected function registerBackendWidgets()
|
||||
{
|
||||
WidgetManager::instance()->registerFormWidgets(function ($manager) {
|
||||
$manager->registerFormWidget('Backend\FormWidgets\CodeEditor', [
|
||||
'label' => 'Code editor',
|
||||
|
|
@ -71,25 +167,13 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
'code' => 'repeater'
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Register navigation
|
||||
*/
|
||||
BackendMenu::registerCallback(function ($manager) {
|
||||
$manager->registerMenuItems('October.Backend', [
|
||||
'dashboard' => [
|
||||
'label' => 'backend::lang.dashboard.menu_label',
|
||||
'icon' => 'icon-dashboard',
|
||||
'url' => Backend::url('backend'),
|
||||
'permissions' => ['backend.access_dashboard'],
|
||||
'order' => 1
|
||||
]
|
||||
]);
|
||||
});
|
||||
|
||||
/*
|
||||
* Register settings
|
||||
*/
|
||||
/*
|
||||
* Register settings
|
||||
*/
|
||||
protected function registerBackendSettings()
|
||||
{
|
||||
SettingsManager::instance()->registerCallback(function ($manager) {
|
||||
$manager->registerSettingItems('October.Backend', [
|
||||
'branding' => [
|
||||
|
|
@ -140,60 +224,5 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
]
|
||||
]);
|
||||
});
|
||||
|
||||
/*
|
||||
* Register permissions
|
||||
*/
|
||||
BackendAuth::registerCallback(function ($manager) {
|
||||
$manager->registerPermissions('October.Backend', [
|
||||
'backend.access_dashboard' => [
|
||||
'label' => 'system::lang.permissions.view_the_dashboard',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
],
|
||||
'backend.manage_users' => [
|
||||
'label' => 'system::lang.permissions.manage_other_administrators',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
],
|
||||
'backend.manage_branding' => [
|
||||
'label' => 'system::lang.permissions.manage_branding',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
]
|
||||
]);
|
||||
});
|
||||
|
||||
/*
|
||||
* Register mail templates
|
||||
*/
|
||||
MailTemplate::registerCallback(function ($template) {
|
||||
$template->registerMailTemplates([
|
||||
'backend::mail.invite' => 'Invitation for newly created administrators.',
|
||||
'backend::mail.restore' => 'Password reset instructions for backend-end administrators.',
|
||||
]);
|
||||
});
|
||||
|
||||
/*
|
||||
* Register asset bundles
|
||||
*/
|
||||
CombineAssets::registerCallback(function($combiner) {
|
||||
$combiner->registerBundle('~/modules/backend/assets/less/controls.less');
|
||||
$combiner->registerBundle('~/modules/backend/assets/less/october.less');
|
||||
$combiner->registerBundle('~/modules/backend/assets/js/october.js');
|
||||
$combiner->registerBundle('~/modules/backend/assets/js/vendor/vendor.js');
|
||||
$combiner->registerBundle('~/modules/backend/widgets/table/assets/js/build.js');
|
||||
$combiner->registerBundle('~/modules/backend/formwidgets/datepicker/assets/js/build.js');
|
||||
$combiner->registerBundle('~/modules/backend/formwidgets/richeditor/assets/less/richeditor.less');
|
||||
$combiner->registerBundle('~/modules/backend/formwidgets/richeditor/assets/js/build.js');
|
||||
$combiner->registerBundle('~/modules/backend/formwidgets/codeeditor/assets/less/codeeditor.less');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap the module events.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
parent::boot('backend');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,13 +15,20 @@ use Backend\Classes\Skin;
|
|||
*/
|
||||
class Backend
|
||||
{
|
||||
/**
|
||||
* Returns the backend URI segment.
|
||||
*/
|
||||
public function uri()
|
||||
{
|
||||
return Config::get('cms.backendUri', 'backend');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a URL in context of the Backend
|
||||
*/
|
||||
public function url($path = null, $parameters = [], $secure = null)
|
||||
{
|
||||
$backendUri = Config::get('cms.backendUri');
|
||||
return Url::to($backendUri . '/' . $path, $parameters, $secure);
|
||||
return Url::to($this->uri() . '/' . $path, $parameters, $secure);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -29,7 +36,7 @@ class Backend
|
|||
*/
|
||||
public function baseUrl($path = null)
|
||||
{
|
||||
$backendUri = Config::get('cms.backendUri');
|
||||
$backendUri = $this->uri();
|
||||
$baseUrl = Request::getBaseUrl();
|
||||
|
||||
if ($path === null) {
|
||||
|
|
@ -54,8 +61,7 @@ class Backend
|
|||
*/
|
||||
public function redirect($path, $status = 302, $headers = [], $secure = null)
|
||||
{
|
||||
$backendUri = Config::get('cms.backendUri');
|
||||
return Redirect::to($backendUri . '/' . $path, $status, $headers, $secure);
|
||||
return Redirect::to($this->uri() . '/' . $path, $status, $headers, $secure);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -63,8 +69,7 @@ class Backend
|
|||
*/
|
||||
public function redirectGuest($path, $status = 302, $headers = [], $secure = null)
|
||||
{
|
||||
$backendUri = Config::get('cms.backendUri');
|
||||
return Redirect::guest($backendUri . '/' . $path, $status, $headers, $secure);
|
||||
return Redirect::guest($this->uri() . '/' . $path, $status, $headers, $secure);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -72,7 +77,6 @@ class Backend
|
|||
*/
|
||||
public function redirectIntended($path, $status = 302, $headers = [], $secure = null)
|
||||
{
|
||||
$backendUri = Config::get('cms.backendUri');
|
||||
return Redirect::intended($backendUri . '/' . $path, $status, $headers, $secure);
|
||||
return Redirect::intended($this->uri() . '/' . $path, $status, $headers, $secure);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<?php namespace Cms;
|
||||
|
||||
use App;
|
||||
use Lang;
|
||||
use Event;
|
||||
use Backend;
|
||||
|
|
@ -23,9 +24,59 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
{
|
||||
parent::register('cms');
|
||||
|
||||
$this->registerComponents();
|
||||
$this->registerAssetBundles();
|
||||
|
||||
// Disabled for now
|
||||
// if (App::runningInBackend()) {
|
||||
$this->registerBackendNavigation();
|
||||
$this->registerBackendPermissions();
|
||||
$this->registerBackendWidgets();
|
||||
$this->registerBackendSettings();
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap the module events.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
parent::boot('cms');
|
||||
|
||||
$this->bootMenuItemEvents();
|
||||
}
|
||||
|
||||
/**
|
||||
* Register components
|
||||
*/
|
||||
protected function registerComponents()
|
||||
{
|
||||
ComponentManager::instance()->registerComponents(function ($manager) {
|
||||
$manager->registerComponent('Cms\Classes\ViewBag', 'viewBag');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Register asset bundles
|
||||
*/
|
||||
protected function registerAssetBundles()
|
||||
{
|
||||
/*
|
||||
* Register navigation
|
||||
* Register asset bundles
|
||||
*/
|
||||
CombineAssets::registerCallback(function($combiner) {
|
||||
$combiner->registerBundle('~/modules/cms/widgets/mediamanager/assets/js/mediamanager-global.js');
|
||||
$combiner->registerBundle('~/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser.js');
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Register navigation
|
||||
*/
|
||||
protected function registerBackendNavigation()
|
||||
{
|
||||
BackendMenu::registerCallback(function ($manager) {
|
||||
$manager->registerMenuItems('October.Cms', [
|
||||
'cms' => [
|
||||
|
|
@ -94,10 +145,13 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
]
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Register permissions
|
||||
*/
|
||||
/*
|
||||
* Register permissions
|
||||
*/
|
||||
protected function registerBackendPermissions()
|
||||
{
|
||||
BackendAuth::registerCallback(function ($manager) {
|
||||
$manager->registerPermissions('October.Cms', [
|
||||
'cms.manage_content' => [
|
||||
|
|
@ -126,17 +180,23 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
]
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Register widgets
|
||||
*/
|
||||
/*
|
||||
* Register widgets
|
||||
*/
|
||||
protected function registerBackendWidgets()
|
||||
{
|
||||
WidgetManager::instance()->registerFormWidgets(function ($manager) {
|
||||
$manager->registerFormWidget('Cms\FormWidgets\Components');
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Register settings
|
||||
*/
|
||||
/*
|
||||
* Register settings
|
||||
*/
|
||||
protected function registerBackendSettings()
|
||||
{
|
||||
SettingsManager::instance()->registerCallback(function ($manager) {
|
||||
$manager->registerSettingItems('October.Cms', [
|
||||
'theme' => [
|
||||
|
|
@ -159,32 +219,13 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
],
|
||||
]);
|
||||
});
|
||||
|
||||
/*
|
||||
* Register components
|
||||
*/
|
||||
ComponentManager::instance()->registerComponents(function ($manager) {
|
||||
$manager->registerComponent('Cms\Classes\ViewBag', 'viewBag');
|
||||
});
|
||||
|
||||
/*
|
||||
* Register asset bundles
|
||||
*/
|
||||
CombineAssets::registerCallback(function($combiner) {
|
||||
$combiner->registerBundle('~/modules/cms/widgets/mediamanager/assets/js/mediamanager-global.js');
|
||||
$combiner->registerBundle('~/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser.js');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap the module events.
|
||||
*
|
||||
* @return void
|
||||
* Registers events for menu items.
|
||||
*/
|
||||
public function boot()
|
||||
protected function bootMenuItemEvents()
|
||||
{
|
||||
parent::boot('cms');
|
||||
|
||||
Event::listen('pages.menuitem.listTypes', function () {
|
||||
return [
|
||||
'cms-page' => 'CMS Page'
|
||||
|
|
|
|||
|
|
@ -34,14 +34,61 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
*/
|
||||
public function register()
|
||||
{
|
||||
/*
|
||||
* Register self
|
||||
*/
|
||||
parent::register('system');
|
||||
|
||||
$this->registerSingletons();
|
||||
$this->registerPrivilegedActions();
|
||||
|
||||
/*
|
||||
* Register singletons
|
||||
* Register all plugins
|
||||
*/
|
||||
PluginManager::instance()->registerAll();
|
||||
|
||||
$this->registerConsole();
|
||||
$this->registerErrorHandler();
|
||||
$this->registerLogging();
|
||||
$this->registerTwigParser();
|
||||
$this->registerMailer();
|
||||
$this->registerMarkupTags();
|
||||
|
||||
/*
|
||||
* Register other module providers
|
||||
*/
|
||||
foreach (Config::get('cms.loadModules', []) as $module) {
|
||||
if (strtolower(trim($module)) != 'system') {
|
||||
App::register('\\' . $module . '\ServiceProvider');
|
||||
}
|
||||
}
|
||||
|
||||
// Disabled for now
|
||||
// if (App::runningInBackend()) {
|
||||
$this->registerBackendNavigation();
|
||||
$this->registerBackendReportWidgets();
|
||||
$this->registerBackendPermissions();
|
||||
$this->registerBackendSettings();
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap the module events.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
/*
|
||||
* Boot plugins
|
||||
*/
|
||||
$pluginManager = PluginManager::instance()->bootAll();
|
||||
|
||||
parent::boot('system');
|
||||
}
|
||||
|
||||
/**
|
||||
* Register singletons
|
||||
*/
|
||||
protected function registerSingletons()
|
||||
{
|
||||
App::singleton('backend.helper', function () {
|
||||
return new \Backend\Helpers\Backend;
|
||||
});
|
||||
|
|
@ -51,148 +98,44 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
App::singleton('backend.auth', function () {
|
||||
return \Backend\Classes\AuthManager::instance();
|
||||
});
|
||||
}
|
||||
|
||||
$this->registerPrivilegedActions();
|
||||
/**
|
||||
* Check for CLI or system/updates route and disable any plugin initialization
|
||||
*/
|
||||
protected function registerPrivilegedActions()
|
||||
{
|
||||
$requests = ['/combine', '@/system/updates', '@/system/install', '@/backend/auth'];
|
||||
$commands = ['october:up', 'october:update'];
|
||||
|
||||
/*
|
||||
* Register all plugins
|
||||
* Requests
|
||||
*/
|
||||
$pluginManager = PluginManager::instance();
|
||||
$pluginManager->registerAll();
|
||||
|
||||
/*
|
||||
* Allow plugins to use the scheduler
|
||||
*/
|
||||
Event::listen('console.schedule', function($schedule) use ($pluginManager) {
|
||||
foreach ($pluginManager->getPlugins() as $plugin) {
|
||||
if (method_exists($plugin, 'registerSchedule')) {
|
||||
$plugin->registerSchedule($schedule);
|
||||
}
|
||||
$path = RouterHelper::normalizeUrl(Request::path());
|
||||
$backendUri = RouterHelper::normalizeUrl(Config::get('cms.backendUri', 'backend'));
|
||||
foreach ($requests as $request) {
|
||||
if (substr($request, 0, 1) == '@') {
|
||||
$request = $backendUri . substr($request, 1);
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* Error handling for uncaught Exceptions
|
||||
*/
|
||||
Event::listen('exception.beforeRender', function ($exception, $httpCode, $request){
|
||||
$handler = new ErrorHandler;
|
||||
return $handler->handleException($exception);
|
||||
});
|
||||
|
||||
/*
|
||||
* Write all log events to the database
|
||||
*/
|
||||
Event::listen('illuminate.log', function ($level, $message, $context) {
|
||||
if (DbDongle::hasDatabase() && !defined('OCTOBER_NO_EVENT_LOGGING')) {
|
||||
EventLog::add($message, $level);
|
||||
if (stripos($path, $request) === 0) {
|
||||
PluginManager::$noInit = true;
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* Register basic Twig
|
||||
*/
|
||||
App::singleton('twig', function ($app) {
|
||||
$twig = new Twig_Environment(new TwigLoader(), ['auto_reload' => true]);
|
||||
$twig->addExtension(new TwigExtension);
|
||||
return $twig;
|
||||
});
|
||||
|
||||
/*
|
||||
* Register .htm extension for Twig views
|
||||
*/
|
||||
App::make('view')->addExtension('htm', 'twig', function () {
|
||||
return new TwigEngine(App::make('twig'));
|
||||
});
|
||||
|
||||
/*
|
||||
* Register Twig that will parse strings
|
||||
*/
|
||||
App::singleton('twig.string', function ($app) {
|
||||
$twig = $app['twig'];
|
||||
$twig->setLoader(new Twig_Loader_String);
|
||||
return $twig;
|
||||
});
|
||||
|
||||
/*
|
||||
* Override system mailer with mail settings
|
||||
*/
|
||||
Event::listen('mailer.beforeRegister', function () {
|
||||
if (MailSettings::isConfigured()) {
|
||||
MailSettings::applyConfigValues();
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* Override standard Mailer content with template
|
||||
*/
|
||||
Event::listen('mailer.beforeAddContent', function ($mailer, $message, $view, $data) {
|
||||
if (MailTemplate::addContentToMailer($message, $view, $data)) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* Register other module providers
|
||||
*/
|
||||
foreach (Config::get('cms.loadModules', []) as $module) {
|
||||
if (strtolower(trim($module)) == 'system') {
|
||||
continue;
|
||||
}
|
||||
App::register('\\' . $module . '\ServiceProvider');
|
||||
}
|
||||
|
||||
/*
|
||||
* Register navigation
|
||||
* CLI
|
||||
*/
|
||||
BackendMenu::registerCallback(function ($manager) {
|
||||
$manager->registerMenuItems('October.System', [
|
||||
'system' => [
|
||||
'label' => 'system::lang.settings.menu_label',
|
||||
'icon' => 'icon-cog',
|
||||
'url' => Backend::url('system/settings'),
|
||||
'permissions' => [],
|
||||
'order' => 1000
|
||||
]
|
||||
]);
|
||||
});
|
||||
if (App::runningInConsole() && count(array_intersect($commands, Request::server('argv'))) > 0) {
|
||||
PluginManager::$noInit = true;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Register report widgets
|
||||
*/
|
||||
WidgetManager::instance()->registerReportWidgets(function ($manager) {
|
||||
$manager->registerReportWidget('System\ReportWidgets\Status', [
|
||||
'label' => 'backend::lang.dashboard.status.widget_title_default',
|
||||
'context' => 'dashboard'
|
||||
]);
|
||||
});
|
||||
|
||||
/*
|
||||
* Register permissions
|
||||
*/
|
||||
BackendAuth::registerCallback(function ($manager) {
|
||||
$manager->registerPermissions('October.System', [
|
||||
'system.manage_updates' => [
|
||||
'label' => 'system::lang.permissions.manage_software_updates',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
],
|
||||
'system.access_logs' => [
|
||||
'label' => 'system::lang.permissions.access_logs',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
],
|
||||
'system.manage_mail_settings' => [
|
||||
'label' => 'system::lang.permissions.manage_mail_settings',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
],
|
||||
'system.manage_mail_templates' => [
|
||||
'label' => 'system::lang.permissions.manage_mail_templates',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
]
|
||||
]);
|
||||
});
|
||||
|
||||
/*
|
||||
* Register markup tags
|
||||
*/
|
||||
/*
|
||||
* Register markup tags
|
||||
*/
|
||||
protected function registerMarkupTags()
|
||||
{
|
||||
MarkupManager::instance()->registerCallback(function ($manager) {
|
||||
$manager->registerFunctions([
|
||||
// Functions
|
||||
|
|
@ -232,10 +175,203 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
'md' => ['Markdown', 'parse'],
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Register command line specifics
|
||||
*/
|
||||
protected function registerConsole()
|
||||
{
|
||||
/*
|
||||
* Allow plugins to use the scheduler
|
||||
*/
|
||||
Event::listen('console.schedule', function($schedule) {
|
||||
$plugins = PluginManager::instance()->getPlugins();
|
||||
foreach ($plugins as $plugin) {
|
||||
if (method_exists($plugin, 'registerSchedule')) {
|
||||
$plugin->registerSchedule($schedule);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* Register settings
|
||||
* Add CMS based cache clearing to native command
|
||||
*/
|
||||
Event::listen('cache:cleared', function() {
|
||||
\System\Helpers\Cache::clear();
|
||||
});
|
||||
|
||||
/*
|
||||
* Register console commands
|
||||
*/
|
||||
$this->registerConsoleCommand('october.up', 'System\Console\OctoberUp');
|
||||
$this->registerConsoleCommand('october.down', 'System\Console\OctoberDown');
|
||||
$this->registerConsoleCommand('october.update', 'System\Console\OctoberUpdate');
|
||||
$this->registerConsoleCommand('october.util', 'System\Console\OctoberUtil');
|
||||
$this->registerConsoleCommand('october.mirror', 'System\Console\OctoberMirror');
|
||||
$this->registerConsoleCommand('october.fresh', 'System\Console\OctoberFresh');
|
||||
|
||||
$this->registerConsoleCommand('plugin.install', 'System\Console\PluginInstall');
|
||||
$this->registerConsoleCommand('plugin.remove', 'System\Console\PluginRemove');
|
||||
$this->registerConsoleCommand('plugin.refresh', 'System\Console\PluginRefresh');
|
||||
|
||||
$this->registerConsoleCommand('theme.install', 'System\Console\ThemeInstall');
|
||||
$this->registerConsoleCommand('theme.remove', 'System\Console\ThemeRemove');
|
||||
$this->registerConsoleCommand('theme.list', 'System\Console\ThemeList');
|
||||
$this->registerConsoleCommand('theme.use', 'System\Console\ThemeUse');
|
||||
}
|
||||
|
||||
/*
|
||||
* Error handling for uncaught Exceptions
|
||||
*/
|
||||
protected function registerErrorHandler()
|
||||
{
|
||||
Event::listen('exception.beforeRender', function ($exception, $httpCode, $request){
|
||||
$handler = new ErrorHandler;
|
||||
return $handler->handleException($exception);
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Write all log events to the database
|
||||
*/
|
||||
protected function registerLogging()
|
||||
{
|
||||
Event::listen('illuminate.log', function ($level, $message, $context) {
|
||||
if (DbDongle::hasDatabase() && !defined('OCTOBER_NO_EVENT_LOGGING')) {
|
||||
EventLog::add($message, $level);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Register text twig parser
|
||||
*/
|
||||
protected function registerTwigParser()
|
||||
{
|
||||
/*
|
||||
* Register basic Twig
|
||||
*/
|
||||
App::singleton('twig', function ($app) {
|
||||
$twig = new Twig_Environment(new TwigLoader(), ['auto_reload' => true]);
|
||||
$twig->addExtension(new TwigExtension);
|
||||
return $twig;
|
||||
});
|
||||
|
||||
/*
|
||||
* Register .htm extension for Twig views
|
||||
*/
|
||||
App::make('view')->addExtension('htm', 'twig', function () {
|
||||
return new TwigEngine(App::make('twig'));
|
||||
});
|
||||
|
||||
/*
|
||||
* Register Twig that will parse strings
|
||||
*/
|
||||
App::singleton('twig.string', function ($app) {
|
||||
$twig = $app['twig'];
|
||||
$twig->setLoader(new Twig_Loader_String);
|
||||
return $twig;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Register mail templating and settings override.
|
||||
*/
|
||||
protected function registerMailer()
|
||||
{
|
||||
/*
|
||||
* Override system mailer with mail settings
|
||||
*/
|
||||
Event::listen('mailer.beforeRegister', function () {
|
||||
if (MailSettings::isConfigured()) {
|
||||
MailSettings::applyConfigValues();
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* Override standard Mailer content with template
|
||||
*/
|
||||
Event::listen('mailer.beforeAddContent', function ($mailer, $message, $view, $data) {
|
||||
if (MailTemplate::addContentToMailer($message, $view, $data)) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Register navigation
|
||||
*/
|
||||
protected function registerBackendNavigation()
|
||||
{
|
||||
BackendMenu::registerCallback(function ($manager) {
|
||||
$manager->registerMenuItems('October.System', [
|
||||
'system' => [
|
||||
'label' => 'system::lang.settings.menu_label',
|
||||
'icon' => 'icon-cog',
|
||||
'url' => Backend::url('system/settings'),
|
||||
'permissions' => [],
|
||||
'order' => 1000
|
||||
]
|
||||
]);
|
||||
});
|
||||
|
||||
/*
|
||||
* Register the sidebar for the System main menu
|
||||
*/
|
||||
BackendMenu::registerContextSidenavPartial(
|
||||
'October.System',
|
||||
'system',
|
||||
'~/modules/system/partials/_system_sidebar.htm'
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
* Register report widgets
|
||||
*/
|
||||
protected function registerBackendReportWidgets()
|
||||
{
|
||||
WidgetManager::instance()->registerReportWidgets(function ($manager) {
|
||||
$manager->registerReportWidget('System\ReportWidgets\Status', [
|
||||
'label' => 'backend::lang.dashboard.status.widget_title_default',
|
||||
'context' => 'dashboard'
|
||||
]);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Register permissions
|
||||
*/
|
||||
protected function registerBackendPermissions()
|
||||
{
|
||||
BackendAuth::registerCallback(function ($manager) {
|
||||
$manager->registerPermissions('October.System', [
|
||||
'system.manage_updates' => [
|
||||
'label' => 'system::lang.permissions.manage_software_updates',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
],
|
||||
'system.access_logs' => [
|
||||
'label' => 'system::lang.permissions.access_logs',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
],
|
||||
'system.manage_mail_settings' => [
|
||||
'label' => 'system::lang.permissions.manage_mail_settings',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
],
|
||||
'system.manage_mail_templates' => [
|
||||
'label' => 'system::lang.permissions.manage_mail_templates',
|
||||
'tab' => 'system::lang.permissions.name'
|
||||
]
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Register settings
|
||||
*/
|
||||
protected function registerBackendSettings()
|
||||
{
|
||||
SettingsManager::instance()->registerCallback(function ($manager) {
|
||||
$manager->registerSettingItems('October.System', [
|
||||
'updates' => [
|
||||
|
|
@ -294,89 +430,5 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
]
|
||||
]);
|
||||
});
|
||||
|
||||
/*
|
||||
* Add CMS based cache clearing to native command
|
||||
*/
|
||||
Event::listen('cache:cleared', function() {
|
||||
\System\Helpers\Cache::clear();
|
||||
});
|
||||
|
||||
/*
|
||||
* Register console commands
|
||||
*/
|
||||
$this->registerConsoleCommand('october.up', 'System\Console\OctoberUp');
|
||||
$this->registerConsoleCommand('october.down', 'System\Console\OctoberDown');
|
||||
$this->registerConsoleCommand('october.update', 'System\Console\OctoberUpdate');
|
||||
$this->registerConsoleCommand('october.util', 'System\Console\OctoberUtil');
|
||||
$this->registerConsoleCommand('october.mirror', 'System\Console\OctoberMirror');
|
||||
$this->registerConsoleCommand('october.fresh', 'System\Console\OctoberFresh');
|
||||
|
||||
$this->registerConsoleCommand('plugin.install', 'System\Console\PluginInstall');
|
||||
$this->registerConsoleCommand('plugin.remove', 'System\Console\PluginRemove');
|
||||
$this->registerConsoleCommand('plugin.refresh', 'System\Console\PluginRefresh');
|
||||
|
||||
$this->registerConsoleCommand('theme.install', 'System\Console\ThemeInstall');
|
||||
$this->registerConsoleCommand('theme.remove', 'System\Console\ThemeRemove');
|
||||
$this->registerConsoleCommand('theme.list', 'System\Console\ThemeList');
|
||||
$this->registerConsoleCommand('theme.use', 'System\Console\ThemeUse');
|
||||
|
||||
/*
|
||||
* Register the sidebar for the System main menu
|
||||
*/
|
||||
BackendMenu::registerContextSidenavPartial(
|
||||
'October.System',
|
||||
'system',
|
||||
'~/modules/system/partials/_system_sidebar.htm'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap the module events.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
/*
|
||||
* Boot plugins
|
||||
*/
|
||||
$pluginManager = PluginManager::instance();
|
||||
$pluginManager->bootAll();
|
||||
|
||||
parent::boot('system');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for CLI or system/updates route and disable any plugin initialization
|
||||
*/
|
||||
protected function registerPrivilegedActions()
|
||||
{
|
||||
$requests = ['/combine', '@/system/updates', '@/system/install', '@/backend/auth'];
|
||||
$commands = ['october:up', 'october:update'];
|
||||
|
||||
/*
|
||||
* Requests
|
||||
*/
|
||||
$path = RouterHelper::normalizeUrl(Request::path());
|
||||
$backendUri = RouterHelper::normalizeUrl(Config::get('cms.backendUri'));
|
||||
foreach ($requests as $request) {
|
||||
if (substr($request, 0, 1) == '@') {
|
||||
$request = $backendUri . substr($request, 1);
|
||||
}
|
||||
|
||||
if (stripos($path, $request) === 0) {
|
||||
PluginManager::$noInit = true;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* CLI
|
||||
*/
|
||||
if (App::runningInConsole() && count(array_intersect($commands, Request::server('argv'))) > 0) {
|
||||
PluginManager::$noInit = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue