diff --git a/system/src/Grav/Common/Debugger.php b/system/src/Grav/Common/Debugger.php index 4f22cc0ff..9e82a8034 100644 --- a/system/src/Grav/Common/Debugger.php +++ b/system/src/Grav/Common/Debugger.php @@ -13,6 +13,7 @@ use Clockwork\Clockwork; use Clockwork\DataSource\MonologDataSource; use Clockwork\DataSource\PhpDataSource; use Clockwork\DataSource\XdebugDataSource; +use Clockwork\Request\Timeline; use Clockwork\Request\UserData; use Clockwork\Storage\FileStorage; use DebugBar\DataCollector\ConfigCollector; @@ -28,6 +29,7 @@ use DebugBar\JavascriptRenderer; use DebugBar\StandardDebugBar; use Grav\Common\Config\Config; use Grav\Common\Processors\ProcessorInterface; +use Grav\Common\Twig\TwigClockworkDataSource; use Monolog\Logger; use RocketTheme\Toolbox\Event\Event; use Symfony\Component\EventDispatcher\EventDispatcherInterface; @@ -138,6 +140,9 @@ class Debugger if ($log instanceof Logger) { $clockwork->addDataSource(new MonologDataSource($log)); } + + $clockwork->addDataSource(new TwigClockworkDataSource($this->grav['twig'])); + $timeLine = $clockwork->getTimeline(); if ($this->requestTime !== GRAV_REQUEST_TIME) { $timeLine->addEvent('server', 'Server', $this->requestTime, GRAV_REQUEST_TIME); diff --git a/system/src/Grav/Common/Twig/TwigClockworkDataSource.php b/system/src/Grav/Common/Twig/TwigClockworkDataSource.php new file mode 100644 index 000000000..b2ddffc2b --- /dev/null +++ b/system/src/Grav/Common/Twig/TwigClockworkDataSource.php @@ -0,0 +1,58 @@ +views = new Timeline(); + } + + /** + * Adds twig data to the request + */ + public function resolve(Request $request) + { + $this->processTwigTimings(); + + $request->viewsData = $this->views->finalize(); + + return $request; + } + + protected function processTwigTimings() + { + $time = 10; + + $data = ['foo', 'bar']; + + $this->views->addEvent( + 'view Test', + 'Rendering a view', + $time, + $time + 10, + [ 'name' => 'Test Name', 'data' => (new Serializer)->normalize($data) ] + ); + } +}