Skip to content

Commit

Permalink
Welcome to the world, October :-)
Browse files Browse the repository at this point in the history
  • Loading branch information
Sam Georges committed May 14, 2014
1 parent 7f1094b commit 77e0927
Show file tree
Hide file tree
Showing 137 changed files with 19,350 additions and 0 deletions.
175 changes: 175 additions & 0 deletions ServiceProvider.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
<?php namespace System;

use App;
use Lang;
use Event;
use Config;
use Backend;
use BackendMenu;
use BackendAuth;
use Twig_Environment;
use System\Classes\ErrorHandler;
use System\Classes\PluginManager;
use System\Classes\SettingsManager;
use System\Twig\Engine as TwigEngine;
use System\Twig\Loader as TwigLoader;
use System\Models\EmailSettings;
use Backend\Classes\WidgetManager;
use October\Rain\Support\ModuleServiceProvider;

class ServiceProvider extends ModuleServiceProvider
Expand All @@ -11,7 +26,161 @@ class ServiceProvider extends ModuleServiceProvider
*/
public function register()
{
/*
* Register self
*/
parent::register('system');

/*
* Reregister core providers
*/
App::register('October\Rain\Config\ConfigServiceProvider');
App::register('October\Rain\Translation\TranslationServiceProvider');

/*
* Define path constants
*/
if (!defined('PATH_APP')) define('PATH_APP', app_path());
if (!defined('PATH_BASE')) define('PATH_BASE', base_path());
if (!defined('PATH_PUBLIC')) define('PATH_PUBLIC', public_path());
if (!defined('PATH_STORAGE')) define('PATH_STORAGE', storage_path());
if (!defined('PATH_PLUGINS')) define('PATH_PLUGINS', base_path() . Config::get('cms.pluginsDir'));

/*
* Register singletons
*/
App::singleton('string', function(){ return new \October\Rain\Support\Str; });
App::singleton('backend.helper', function(){ return new \Backend\Classes\BackendHelper; });
App::singleton('backend.menu', function() { return \Backend\Classes\NavigationManager::instance(); });
App::singleton('backend.auth', function() { return \Backend\Classes\AuthManager::instance(); });

/*
* Register all plugins
*/
$pluginManager = PluginManager::instance();
$pluginManager->registerAll();

/*
* Error handling for uncaught Exceptions
*/
App::error(function(\Exception $exception, $httpCode, $isConsole){
$handler = new ErrorHandler;
return $handler->handleException($exception, $httpCode, $isConsole);
});

/*
* Register .htm extension for Twig views
*/
App::make('view')->addExtension('htm', 'twig', function() {
$twigEnvironment = new Twig_Environment(new TwigLoader(), ['auto_reload' => true]);
return new TwigEngine($twigEnvironment);
});

/*
* Override system email with email settings
*/
Event::listen('mailer.register', function() {
if (EmailSettings::isConfigured())
EmailSettings::applyConfigValues();
});

/*
* Register other module providers
*/
foreach (Config::get('cms.loadModules', []) as $module) {
if (strtolower(trim($module)) == 'system') continue;
App::register('\\' . $module . '\ServiceProvider');
}

/*
* Register navigation
*/
BackendMenu::registerCallback(function($manager) {
$manager->registerMenuItems('October.System', [
'system' => [
'label' => 'system::lang.system.menu_label',
'icon' => 'icon-cog',
'url' => Backend::url('system/settings'),
'permissions' => ['backend.*', 'system.*'],
'order' => 1000,

'sideMenu' => [
'settings' => [
'label' => 'system::lang.settings.menu_label',
'icon' => 'icon-cogs',
'url' => Backend::url('system/settings'),
'permissions' => ['system.manage_settings']
],
'users' => [
'label' => 'backend::lang.user.menu_label',
'icon' => 'icon-user',
'url' => Backend::url('backend/users'),
'permissions' => ['backend.manage_users']
],
'updates' => [
'label' => 'system::lang.updates.menu_label',
'icon' => 'icon-cloud-download',
'url' => Backend::url('system/updates'),
'permissions' => ['system.manage_updates']
]
]

]
]);
});

/*
* Register report widgets
*/
WidgetManager::instance()->registerReportWidgets(function($manager){
$manager->registerReportWidget('System\ReportWidgets\Status', [
'label' => 'System status',
'context' => 'dashboard'
]);
});

/*
* Register permissions
*/
BackendAuth::registerCallback(function($manager) {
$manager->registerPermissions('October.System', [
'system.manage_settings' => ['label' => 'Manage system settings', 'tab' => 'System'],
'system.manage_updates' => ['label' => 'Manage software updates', 'tab' => 'System'],
]);
});

/*
* Register settings
*/
SettingsManager::instance()->registerCallback(function($manager){
$manager->registerSettingItems('October.System', [
'email' => [
'label' => 'Email Configuration',
'description' => 'Manage email configuration.',
'category' => 'System',
'icon' => 'icon-envelope',
'class' => 'System\Models\EmailSettings',
'sort' => 100
],
]);
});

/*
* 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('plugin.install', 'System\Console\PluginInstall');
$this->registerConsoleCommand('plugin.remove', 'System\Console\PluginRemove');
$this->registerConsoleCommand('plugin.refresh', 'System\Console\PluginRefresh');

/*
* Override clear cache command
*/
App::bindShared('command.cache.clear', function($app) {
return new \System\Console\CacheClear($app['cache'], $app['files']);
});
}

/**
Expand All @@ -21,6 +190,12 @@ public function register()
*/
public function boot()
{
/*
* Boot plugins
*/
$pluginManager = PluginManager::instance();
$pluginManager->bootAll();

parent::boot('system');
}
}
54 changes: 54 additions & 0 deletions aliases.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<?php

return [

/*
* Laravel aliases
*/
'App' => 'Illuminate\Support\Facades\App',
'Artisan' => 'Illuminate\Support\Facades\Artisan',
'Cache' => 'Illuminate\Support\Facades\Cache',
'ClassLoader' => 'Illuminate\Support\ClassLoader',
'Controller' => 'Illuminate\Routing\Controller',
'Cookie' => 'Illuminate\Support\Facades\Cookie',
'Crypt' => 'Illuminate\Support\Facades\Crypt',
'DB' => 'Illuminate\Support\Facades\DB',
'Eloquent' => 'Illuminate\Database\Eloquent\Model',
'Event' => 'Illuminate\Support\Facades\Event',
'Hash' => 'Illuminate\Support\Facades\Hash',
'HTML' => 'Illuminate\Support\Facades\HTML',
'Input' => 'Illuminate\Support\Facades\Input',
'Lang' => 'Illuminate\Support\Facades\Lang',
'Log' => 'Illuminate\Support\Facades\Log',
'Mail' => 'Illuminate\Support\Facades\Mail',
'Paginator' => 'Illuminate\Support\Facades\Paginator',
'Password' => 'Illuminate\Support\Facades\Password',
'Queue' => 'Illuminate\Support\Facades\Queue',
'Redirect' => 'Illuminate\Support\Facades\Redirect',
'Redis' => 'Illuminate\Support\Facades\Redis',
'Request' => 'Illuminate\Support\Facades\Request',
'Response' => 'Illuminate\Support\Facades\Response',
'Route' => 'Illuminate\Support\Facades\Route',
'Schema' => 'Illuminate\Support\Facades\Schema',
'Session' => 'Illuminate\Support\Facades\Session',
'URL' => 'Illuminate\Support\Facades\URL',
'Validator' => 'Illuminate\Support\Facades\Validator',
'View' => 'Illuminate\Support\Facades\View',
'Form' => 'Illuminate\Support\Facades\Form',

/*
* October aliases
*/
'Model' => 'October\Rain\Database\Model',
'Block' => 'October\Rain\Support\Facades\Block',
'File' => 'October\Rain\Support\Facades\File',
'Config' => 'October\Rain\Support\Facades\Config',
'Seeder' => 'October\Rain\Database\Updates\Seeder',
'Flash' => 'October\Rain\Support\Facades\Flash',
'Http' => 'October\Rain\Support\Facades\Http',
'Str' => 'October\Rain\Support\Facades\Str',
'Backend' => 'Backend\Facades\Backend',
'BackendMenu' => 'Backend\Facades\BackendMenu',
'BackendAuth' => 'Backend\Facades\BackendAuth',

];
Loading

0 comments on commit 77e0927

Please sign in to comment.