Skip to content

Commit

Permalink
Emit a loader event, so other certain plugins can be used #12
Browse files Browse the repository at this point in the history
  • Loading branch information
WyriHaximus committed Aug 23, 2014
1 parent 259cb86 commit 827f30e
Showing 1 changed file with 28 additions and 6 deletions.
34 changes: 28 additions & 6 deletions src/View/TwigView.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ class TwigView extends View {
*/
protected $parentView;

/**
* @var \Cake\Event\EventManager
*/
protected $eventManager;

/**
* @param Request $request
* @param Response $response
Expand All @@ -54,25 +59,42 @@ class TwigView extends View {
*/
public function __construct(Request $request = null, Response $response = null,
EventManager $eventManager = null, array $viewOptions = []) {
$this->twig = new \Twig_Environment(new Loader(), [
if ($eventManager === null) {
$eventManager = EventManager::instance();
}
$this->eventManager = $eventManager;

$this->twig = new \Twig_Environment($this->getLoader(), [
'cache' => CACHE . 'twigView' . DS,
'charset' => strtolower(Configure::read('App.encoding')),
'auto_reload' => Configure::read('debug'),
'debug' => Configure::read('debug')
]);

if ($eventManager === null) {
$eventManager = EventManager::instance();
}

$eventManager->dispatch(new Event('TwigView.TwigView.construct', $this));
$this->eventManager->dispatch(new Event('TwigView.TwigView.construct', $this));

parent::__construct($request, $response, $eventManager, $viewOptions);
$this->_ext = self::EXT;

$this->generateHelperList();
}

/**
* @return \Twig_LoaderInterface
*/
protected function getLoader() {
$event = new Event('TwigView.TwigView.loader', $this, [
'loader' => new Loader(),
]);
$this->eventManager->dispatch($event);

if (isset($event->result['loader'])) {
return $event->result['loader'];
}

return $event->data['loader'];
}

protected function generateHelperList() {
$registry = $this->helpers();
$helpers = $registry->normalizeArray($this->helpers);
Expand Down

0 comments on commit 827f30e

Please sign in to comment.