diff --git a/index.php b/index.php index f624b2e6a..cf2644f6c 100644 --- a/index.php +++ b/index.php @@ -15,19 +15,6 @@ use Grav\Common\Grav; // Register the auto-loader. $loader = require_once $autoload; -// Setup Whoops error handler -$whoops = new \Whoops\Run; - -$error_page = new \Whoops\Handler\PrettyPageHandler; -$error_page->setPageTitle('Crikey! There was an error...'); -$error_page->setEditor('sublime'); -$error_page->addResourcePath(__DIR__ .'/system/assets'); -$error_page->addCustomCss('whoops.css'); - -$whoops->pushHandler($error_page); -$whoops->register(); - - if (!ini_get('date.timezone')) { date_default_timezone_set('UTC'); } diff --git a/system/src/Grav/Common/Grav.php b/system/src/Grav/Common/Grav.php index db5392e4b..eaa4e2da0 100644 --- a/system/src/Grav/Common/Grav.php +++ b/system/src/Grav/Common/Grav.php @@ -3,6 +3,7 @@ namespace Grav\Common; use Grav\Common\Page\Pages; use Grav\Common\Service\ConfigServiceProvider; +use Grav\Common\Service\ErrorServiceProvider; use Grav\Common\Service\StreamsServiceProvider; use RocketTheme\Toolbox\DI\Container; use RocketTheme\Toolbox\Event\Event; @@ -56,6 +57,8 @@ class Grav extends Container $container['debugger'] = new Debugger(); $container['debugger']->startTimer('_init', 'Init'); + $container->register(new ErrorServiceProvider); + $container['uri'] = function ($c) { return new Uri($c); }; diff --git a/system/src/Grav/Common/Service/ErrorServiceProvider.php b/system/src/Grav/Common/Service/ErrorServiceProvider.php new file mode 100644 index 000000000..085fe6c0d --- /dev/null +++ b/system/src/Grav/Common/Service/ErrorServiceProvider.php @@ -0,0 +1,32 @@ +setPageTitle('Crikey! There was an error...'); + $error_page->setEditor('sublime'); + $error_page->addResourcePath(GRAV_ROOT . '/system/assets'); + $error_page->addCustomCss('whoops.css'); + + $json_page = new JsonResponseHandler; + $json_page->onlyForAjaxRequests(true); + + $whoops->pushHandler($error_page); + $whoops->pushHandler($json_page); + $whoops->register(); + + $container['whoops'] = $whoops; + } +}