Add hook for renderContent

Fix priority of local<->global events
This commit is contained in:
Sam Georges 2014-07-27 12:22:50 +10:00
parent 6b6333a467
commit 12f9c88345
1 changed files with 30 additions and 9 deletions

View File

@ -129,10 +129,10 @@ class Controller extends BaseController
/*
* Extensibility
*/
if ($event = Event::fire('cms.page.beforeDisplay', [$this, $url, $page], true))
if ($event = $this->fireEvent('page.beforeDisplay', [$url, $page], true))
return $event;
if ($event = $this->fireEvent('page.beforeDisplay', [$url, $page], true))
if ($event = Event::fire('cms.page.beforeDisplay', [$this, $url, $page], true))
return $event;
/*
@ -229,10 +229,10 @@ class Controller extends BaseController
/*
* Extensibility
*/
if ($event = Event::fire('cms.page.display', [$this, $url, $page], true))
if ($event = $this->fireEvent('page.display', [$url, $page], true))
return $event;
if ($event = $this->fireEvent('page.display', [$url, $page], true))
if ($event = Event::fire('cms.page.display', [$this, $url, $page], true))
return $event;
if (!is_string($result))
@ -472,10 +472,10 @@ class Controller extends BaseController
/*
* Extensibility
*/
if ($event = Event::fire('cms.page.start', [$this], true))
if ($event = $this->fireEvent('page.start', [], true))
return $event;
if ($event = $this->fireEvent('page.start', [], true))
if ($event = Event::fire('cms.page.start', [$this], true))
return $event;
/*
@ -514,10 +514,10 @@ class Controller extends BaseController
/*
* Extensibility
*/
if ($event = Event::fire('cms.page.end', [$this], true))
if ($event = $this->fireEvent('page.end', [], true))
return $event;
if ($event = $this->fireEvent('page.end', [], true))
if ($event = Event::fire('cms.page.end', [$this], true))
return $event;
return $response;
@ -619,7 +619,19 @@ class Controller extends BaseController
*/
public function renderContent($name)
{
if (($content = Content::loadCached($this->theme, $name)) === null)
/*
* Extensibility
*/
if ($event = $this->fireEvent('page.beforeRenderContent', [$name], true))
$content = $event;
elseif ($event = Event::fire('cms.page.beforeRenderContent', [$this, $name], true))
$content = $event;
/*
* Load content from theme
*/
elseif (($content = Content::loadCached($this->theme, $name)) === null)
throw new CmsException(Lang::get('cms::lang.content.not_found', ['name'=>$name]));
$filePath = $content->getFullPath();
@ -628,6 +640,15 @@ class Controller extends BaseController
if (strtolower(File::extension($filePath)) == 'md')
$fileContent = Markdown::parse($fileContent);
/*
* Extensibility
*/
if ($event = $this->fireEvent('page.renderContent', [$name, $fileContent], true))
return $event;
if ($event = Event::fire('cms.page.renderContent', [$this, $name, $fileContent], true))
return $event;
return $fileContent;
}