Simplify system events
This pipes all event calls through a new EventEmitter trait, which substitutes the October Rain event emitter trait. The view event has been moved to this trait also. Pass some variables by reference to allow multi-extension. Fixes #2420
This commit is contained in:
parent
1bdedb5584
commit
0a2b343047
|
|
@ -426,15 +426,6 @@ class ListController extends ControllerBehavior
|
|||
// Overrides
|
||||
//
|
||||
|
||||
/**
|
||||
* Called before the list columns are defined.
|
||||
* @param Backend\Widgets\List $host The hosting list widget
|
||||
* @return void
|
||||
*/
|
||||
// public function listExtendColumnsBefore($host)
|
||||
// {
|
||||
// }
|
||||
|
||||
/**
|
||||
* Called after the list columns are defined.
|
||||
* @param \Backend\Widgets\List $host The hosting list widget
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ use Str;
|
|||
use Lang;
|
||||
use View;
|
||||
use Flash;
|
||||
use Event;
|
||||
use Config;
|
||||
use Request;
|
||||
use Backend;
|
||||
|
|
@ -37,8 +36,8 @@ class Controller extends Extendable
|
|||
use \System\Traits\ViewMaker;
|
||||
use \System\Traits\AssetMaker;
|
||||
use \System\Traits\ConfigMaker;
|
||||
use \System\Traits\EventEmitter;
|
||||
use \Backend\Traits\WidgetMaker;
|
||||
use \October\Rain\Support\Traits\Emitter;
|
||||
|
||||
/**
|
||||
* @var string Object used for storing a fatal error.
|
||||
|
|
@ -178,10 +177,7 @@ class Controller extends Extendable
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('page.beforeDisplay', [$action, $params], true)) ||
|
||||
($event = Event::fire('backend.page.beforeDisplay', [$this, $action, $params], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('backend.page.beforeDisplay', [$action, $params])) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ abstract class WidgetBase extends Extendable
|
|||
use \System\Traits\ViewMaker;
|
||||
use \System\Traits\AssetMaker;
|
||||
use \System\Traits\ConfigMaker;
|
||||
use \System\Traits\EventEmitter;
|
||||
use \Backend\Traits\WidgetMaker;
|
||||
use \October\Rain\Support\Traits\Emitter;
|
||||
|
||||
/**
|
||||
* @var object Supplied configuration.
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
<?php namespace Backend\Widgets;
|
||||
|
||||
use Backend;
|
||||
use Backend\Classes\FormField;
|
||||
use Backend\FormWidgets\DatePicker;
|
||||
use Carbon\Carbon;
|
||||
use Db;
|
||||
use Str;
|
||||
use Lang;
|
||||
use Event;
|
||||
use Backend;
|
||||
use DbDongle;
|
||||
use Carbon\Carbon;
|
||||
use Backend\Classes\WidgetBase;
|
||||
use Backend\Classes\FilterScope;
|
||||
use ApplicationException;
|
||||
|
|
@ -211,7 +208,9 @@ class Filter extends WidgetBase
|
|||
* Trigger class event, merge results as viewable array
|
||||
*/
|
||||
$params = func_get_args();
|
||||
|
||||
$result = $this->fireEvent('filter.update', [$params]);
|
||||
|
||||
if ($result && is_array($result)) {
|
||||
return call_user_func_array('array_merge', $result);
|
||||
}
|
||||
|
|
@ -306,8 +305,7 @@ class Filter extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
Event::fire('backend.filter.extendQuery', [$this, $query, $scope]);
|
||||
$this->fireEvent('filter.extendQuery', [$query, $scope]);
|
||||
$this->fireSystemEvent('backend.filter.extendQuery', [$query, $scope]);
|
||||
|
||||
if (!$searchQuery) {
|
||||
return $query->get();
|
||||
|
|
@ -417,8 +415,7 @@ class Filter extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
Event::fire('backend.filter.extendScopesBefore', [$this]);
|
||||
$this->fireEvent('filter.extendScopesBefore');
|
||||
$this->fireSystemEvent('backend.filter.extendScopesBefore');
|
||||
|
||||
/*
|
||||
* All scopes
|
||||
|
|
@ -432,8 +429,7 @@ class Filter extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
Event::fire('backend.filter.extendScopes', [$this]);
|
||||
$this->fireEvent('filter.extendScopes');
|
||||
$this->fireSystemEvent('backend.filter.extendScopes');
|
||||
|
||||
$this->scopesDefined = true;
|
||||
}
|
||||
|
|
@ -743,7 +739,6 @@ class Filter extends WidgetBase
|
|||
return $processed;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Convert an array from the posted dates
|
||||
*
|
||||
|
|
@ -782,7 +777,6 @@ class Filter extends WidgetBase
|
|||
return $dates;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param mixed $scope
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
<?php namespace Backend\Widgets;
|
||||
|
||||
use Lang;
|
||||
use Event;
|
||||
use Form as FormHelper;
|
||||
use Backend\Classes\FormTabs;
|
||||
use Backend\Classes\FormField;
|
||||
|
|
@ -357,8 +356,7 @@ class Form extends WidgetBase
|
|||
* Extensibility
|
||||
*/
|
||||
$dataHolder = (object) ['data' => $saveData];
|
||||
$this->fireEvent('form.beforeRefresh', [$dataHolder]);
|
||||
Event::fire('backend.form.beforeRefresh', [$this, $dataHolder]);
|
||||
$this->fireSystemEvent('backend.form.beforeRefresh', [$dataHolder]);
|
||||
$saveData = $dataHolder->data;
|
||||
|
||||
/*
|
||||
|
|
@ -370,8 +368,7 @@ class Form extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
$this->fireEvent('form.refreshFields', [$this->allFields]);
|
||||
Event::fire('backend.form.refreshFields', [$this, $this->allFields]);
|
||||
$this->fireSystemEvent('backend.form.refreshFields', [$this->allFields]);
|
||||
|
||||
/*
|
||||
* If an array of fields is supplied, update specified fields individually.
|
||||
|
|
@ -399,10 +396,7 @@ class Form extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
$eventResults = array_merge(
|
||||
$this->fireEvent('form.refresh', [$result]),
|
||||
Event::fire('backend.form.refresh', [$this, $result])
|
||||
);
|
||||
$eventResults = $this->fireSystemEvent('backend.form.refresh', [$result], false);
|
||||
|
||||
foreach ($eventResults as $eventResult) {
|
||||
$result = $eventResult + $result;
|
||||
|
|
@ -426,8 +420,7 @@ class Form extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
Event::fire('backend.form.extendFieldsBefore', [$this]);
|
||||
$this->fireEvent('form.extendFieldsBefore');
|
||||
$this->fireSystemEvent('backend.form.extendFieldsBefore');
|
||||
|
||||
/*
|
||||
* Outside fields
|
||||
|
|
@ -462,8 +455,7 @@ class Form extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
$this->fireEvent('form.extendFields', [$this->allFields]);
|
||||
Event::fire('backend.form.extendFields', [$this, $this->allFields]);
|
||||
$this->fireSystemEvent('backend.form.extendFields', [$this->allFields]);
|
||||
|
||||
/*
|
||||
* Convert automatic spanned fields
|
||||
|
|
|
|||
|
|
@ -1,11 +1,10 @@
|
|||
<?php namespace Backend\Widgets;
|
||||
|
||||
use Db;
|
||||
use Html;
|
||||
use App;
|
||||
use Html;
|
||||
use Lang;
|
||||
use Input;
|
||||
use Event;
|
||||
use Backend;
|
||||
use DbDongle;
|
||||
use Carbon\Carbon;
|
||||
|
|
@ -15,8 +14,8 @@ use System\Helpers\DateTime as DateTimeHelper;
|
|||
use System\Classes\PluginManager;
|
||||
use Backend\Classes\ListColumn;
|
||||
use Backend\Classes\WidgetBase;
|
||||
use ApplicationException;
|
||||
use October\Rain\Database\Model;
|
||||
use ApplicationException;
|
||||
use DateTime;
|
||||
|
||||
/**
|
||||
|
|
@ -334,8 +333,7 @@ class Lists extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
Event::fire('backend.list.extendQueryBefore', [$this, $query]);
|
||||
$this->fireEvent('list.extendQueryBefore', [$query]);
|
||||
$this->fireSystemEvent('backend.list.extendQueryBefore', [$query]);
|
||||
|
||||
/*
|
||||
* Prepare searchable column names
|
||||
|
|
@ -501,10 +499,7 @@ class Lists extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('list.extendQuery', [$query], true)) ||
|
||||
($event = Event::fire('backend.list.extendQuery', [$this, $query], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('backend.list.extendQuery', [$query])) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
|
|
@ -653,8 +648,7 @@ class Lists extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
Event::fire('backend.list.extendColumns', [$this]);
|
||||
$this->fireEvent('list.extendColumns');
|
||||
$this->fireSystemEvent('backend.list.extendColumns');
|
||||
|
||||
/*
|
||||
* Use a supplied column order
|
||||
|
|
@ -754,12 +748,15 @@ class Lists extends WidgetBase
|
|||
{
|
||||
$columns = $this->visibleColumns ?: $this->getVisibleColumns();
|
||||
$total = count($columns);
|
||||
|
||||
if ($this->showCheckboxes) {
|
||||
$total++;
|
||||
}
|
||||
|
||||
if ($this->showSetup) {
|
||||
$total++;
|
||||
}
|
||||
|
||||
return $total;
|
||||
}
|
||||
|
||||
|
|
@ -773,11 +770,7 @@ class Lists extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if ($response = Event::fire('backend.list.overrideHeaderValue', [$this, $column, $value], true)) {
|
||||
$value = $response;
|
||||
}
|
||||
|
||||
if ($response = $this->fireEvent('list.overrideHeaderValue', [$column, $value], true)) {
|
||||
if ($response = $this->fireSystemEvent('backend.list.overrideHeaderValue', [$column, $value])) {
|
||||
$value = $response;
|
||||
}
|
||||
|
||||
|
|
@ -861,11 +854,7 @@ class Lists extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (($response = Event::fire('backend.list.overrideColumnValue', [$this, $record, $column, $value], true)) !== null) {
|
||||
$value = $response;
|
||||
}
|
||||
|
||||
if (($response = $this->fireEvent('list.overrideColumnValue', [$record, $column, $value], true)) !== null) {
|
||||
if ($response = $this->fireSystemEvent('backend.list.overrideColumnValue', [$record, $column, &$value])) {
|
||||
$value = $response;
|
||||
}
|
||||
|
||||
|
|
@ -884,11 +873,7 @@ class Lists extends WidgetBase
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if ($response = Event::fire('backend.list.injectRowClass', [$this, $record], true)) {
|
||||
$value = $response;
|
||||
}
|
||||
|
||||
if ($response = $this->fireEvent('list.injectRowClass', [$record], true)) {
|
||||
if ($response = $this->fireSystemEvent('backend.list.injectRowClass', [$record])) {
|
||||
$value = $response;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
use Str;
|
||||
use Lang;
|
||||
use Event;
|
||||
use Config;
|
||||
use Cms\Classes\CodeBase;
|
||||
use Cms\Classes\CmsException;
|
||||
|
|
@ -18,8 +17,8 @@ use BadMethodCallException;
|
|||
abstract class ComponentBase extends Extendable
|
||||
{
|
||||
use \System\Traits\AssetMaker;
|
||||
use \System\Traits\EventEmitter;
|
||||
use \System\Traits\PropertyContainer;
|
||||
use \October\Rain\Support\Traits\Emitter;
|
||||
|
||||
/**
|
||||
* @var string A unique identifier for this component.
|
||||
|
|
@ -157,10 +156,7 @@ abstract class ComponentBase extends Extendable
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('component.beforeRunAjaxHandler', [$handler], true)) ||
|
||||
($event = Event::fire('cms.component.beforeRunAjaxHandler', [$this, $handler], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.component.beforeRunAjaxHandler', [$handler])) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
|
|
@ -169,10 +165,7 @@ abstract class ComponentBase extends Extendable
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('component.runAjaxHandler', [$handler, $result], true)) ||
|
||||
($event = Event::fire('cms.component.runAjaxHandler', [$this, $handler, $result], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.component.runAjaxHandler', [$handler, $result])) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ use File;
|
|||
use View;
|
||||
use Lang;
|
||||
use Flash;
|
||||
use Event;
|
||||
use Config;
|
||||
use Session;
|
||||
use Request;
|
||||
|
|
@ -42,7 +41,7 @@ use Illuminate\Http\RedirectResponse;
|
|||
class Controller
|
||||
{
|
||||
use \System\Traits\AssetMaker;
|
||||
use \October\Rain\Support\Traits\Emitter;
|
||||
use \System\Traits\EventEmitter;
|
||||
|
||||
/**
|
||||
* @var \Cms\Classes\Theme A reference to the CMS theme processed by the controller.
|
||||
|
|
@ -180,10 +179,7 @@ class Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('page.beforeDisplay', [$url, $page], true)) ||
|
||||
($event = Event::fire('cms.page.beforeDisplay', [$this, $url, $page], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.page.beforeDisplay', [$url, $page])) {
|
||||
if ($event instanceof Page) {
|
||||
$page = $event;
|
||||
}
|
||||
|
|
@ -223,10 +219,7 @@ class Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('page.display', [$url, $page, $result], true)) ||
|
||||
($event = Event::fire('cms.page.display', [$this, $url, $page, $result], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.page.display', [$url, $page, $result])) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
|
|
@ -326,10 +319,7 @@ class Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('page.init', [$page], true)) ||
|
||||
($event = Event::fire('cms.page.init', [$this, $page], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.page.init', [$page])) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
|
|
@ -362,10 +352,7 @@ class Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('page.beforeRenderPage', [$page], true)) ||
|
||||
($event = Event::fire('cms.page.beforeRenderPage', [$this, $page], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.page.beforeRenderPage', [$page])) {
|
||||
$this->pageContents = $event;
|
||||
}
|
||||
else {
|
||||
|
|
@ -410,10 +397,7 @@ class Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('page.start', [], true)) ||
|
||||
($event = Event::fire('cms.page.start', [$this], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.page.start')) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
|
|
@ -422,9 +406,11 @@ class Controller
|
|||
*/
|
||||
if ($this->layoutObj) {
|
||||
CmsException::mask($this->layout, 300);
|
||||
$response = (($result = $this->layoutObj->onStart()) ||
|
||||
$response = (
|
||||
($result = $this->layoutObj->onStart()) ||
|
||||
($result = $this->layout->runComponents()) ||
|
||||
($result = $this->layoutObj->onBeforePageStart())) ? $result: null;
|
||||
($result = $this->layoutObj->onBeforePageStart())
|
||||
) ? $result : null;
|
||||
CmsException::unmask();
|
||||
|
||||
if ($response) {
|
||||
|
|
@ -436,9 +422,11 @@ class Controller
|
|||
* Run page functions
|
||||
*/
|
||||
CmsException::mask($this->page, 300);
|
||||
$response = (($result = $this->pageObj->onStart()) ||
|
||||
$response = (
|
||||
($result = $this->pageObj->onStart()) ||
|
||||
($result = $this->page->runComponents()) ||
|
||||
($result = $this->pageObj->onEnd())) ? $result : null;
|
||||
($result = $this->pageObj->onEnd())
|
||||
) ? $result : null;
|
||||
CmsException::unmask();
|
||||
|
||||
if ($response) {
|
||||
|
|
@ -457,10 +445,7 @@ class Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('page.end', [], true)) ||
|
||||
($event = Event::fire('cms.page.end', [$this], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.page.end')) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
|
|
@ -481,7 +466,7 @@ class Controller
|
|||
|
||||
$dataHolder = (object) ['content' => $content];
|
||||
|
||||
Event::fire('cms.page.postprocess', [$this, $url, $page, $dataHolder]);
|
||||
$this->fireSystemEvent('cms.page.postprocess', [$url, $page, $dataHolder]);
|
||||
|
||||
return $dataHolder->content;
|
||||
}
|
||||
|
|
@ -566,8 +551,7 @@ class Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
$this->fireEvent('page.initComponents', [$this->page, $this->layout]);
|
||||
Event::fire('cms.page.initComponents', [$this, $this->page, $this->layout]);
|
||||
$this->fireSystemEvent('cms.page.initComponents', [$this->page, $this->layout]);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
@ -750,10 +734,7 @@ class Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('page.render', [$contents], true)) ||
|
||||
($event = Event::fire('cms.page.render', [$this, $contents], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.page.render', [$contents])) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
|
|
@ -783,10 +764,7 @@ class Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('page.beforeRenderPartial', [$name], true)) ||
|
||||
($event = Event::fire('cms.page.beforeRenderPartial', [$this, $name], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.page.beforeRenderPartial', [$name])) {
|
||||
$partial = $event;
|
||||
}
|
||||
/*
|
||||
|
|
@ -936,10 +914,7 @@ class Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('page.renderPartial', [$name, $partialContent], true)) ||
|
||||
($event = Event::fire('cms.page.renderPartial', [$this, $name, $partialContent], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.page.renderPartial', [$name, &$partialContent])) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
|
|
@ -958,10 +933,7 @@ class Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('page.beforeRenderContent', [$name], true)) ||
|
||||
($event = Event::fire('cms.page.beforeRenderContent', [$this, $name], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.page.beforeRenderContent', [$name])) {
|
||||
$content = $event;
|
||||
}
|
||||
/*
|
||||
|
|
@ -991,10 +963,7 @@ class Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
if (
|
||||
($event = $this->fireEvent('page.renderContent', [$name, $fileContent], true)) ||
|
||||
($event = Event::fire('cms.page.renderContent', [$this, $name, $fileContent], true))
|
||||
) {
|
||||
if ($event = $this->fireSystemEvent('cms.page.renderContent', [$name, &$fileContent])) {
|
||||
return $event;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,14 +3,11 @@
|
|||
use Url;
|
||||
use Lang;
|
||||
use Flash;
|
||||
use Event;
|
||||
use Config;
|
||||
use Request;
|
||||
use Response;
|
||||
use Exception;
|
||||
use BackendMenu;
|
||||
use Backend\Classes\Controller;
|
||||
use Backend\Classes\WidgetManager;
|
||||
use Cms\Widgets\AssetList;
|
||||
use Cms\Widgets\TemplateList;
|
||||
use Cms\Widgets\ComponentList;
|
||||
|
|
@ -23,9 +20,10 @@ use Cms\Classes\Content;
|
|||
use Cms\Classes\CmsCompoundObject;
|
||||
use Cms\Classes\ComponentManager;
|
||||
use Cms\Classes\ComponentPartial;
|
||||
use ApplicationException;
|
||||
use Backend\Traits\InspectableContainer;
|
||||
use Backend\Classes\Controller;
|
||||
use Backend\Classes\WidgetManager;
|
||||
use October\Rain\Router\Router as RainRouter;
|
||||
use ApplicationException;
|
||||
|
||||
/**
|
||||
* CMS index
|
||||
|
|
@ -35,7 +33,7 @@ use October\Rain\Router\Router as RainRouter;
|
|||
*/
|
||||
class Index extends Controller
|
||||
{
|
||||
use InspectableContainer;
|
||||
use \Backend\Traits\InspectableContainer;
|
||||
|
||||
protected $theme;
|
||||
|
||||
|
|
@ -189,8 +187,7 @@ class Index extends Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
Event::fire('cms.template.save', [$this, $template, $type]);
|
||||
$this->fireEvent('template.save', [$template, $type]);
|
||||
$this->fireSystemEvent('cms.template.save', [$template, $type]);
|
||||
|
||||
Flash::success(Lang::get('cms::lang.template.saved'));
|
||||
|
||||
|
|
@ -263,8 +260,7 @@ class Index extends Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
Event::fire('cms.template.delete', [$this, $type]);
|
||||
$this->fireEvent('template.delete', [$type]);
|
||||
$this->fireSystemEvent('cms.template.delete', [$type]);
|
||||
|
||||
return [
|
||||
'deleted' => $deleted,
|
||||
|
|
@ -284,8 +280,7 @@ class Index extends Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
Event::fire('cms.template.delete', [$this, $type]);
|
||||
$this->fireEvent('template.delete', [$type]);
|
||||
$this->fireSystemEvent('cms.template.delete', [$type]);
|
||||
}
|
||||
|
||||
public function onGetTemplateList()
|
||||
|
|
@ -366,7 +361,10 @@ class Index extends Controller
|
|||
throw new ApplicationException(trans('cms::lang.template.not_found'));
|
||||
}
|
||||
|
||||
Event::fire('cms.template.processSettingsAfterLoad', [$this, $template]);
|
||||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
$this->fireSystemEvent('cms.template.processSettingsAfterLoad', [$template]);
|
||||
|
||||
return $template;
|
||||
}
|
||||
|
|
@ -475,11 +473,9 @@ class Index extends Controller
|
|||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
$dataHolder = (object)[
|
||||
'settings' => $settings
|
||||
];
|
||||
$dataHolder = (object) ['settings' => $settings];
|
||||
|
||||
Event::fire('cms.template.processSettingsBeforeSave', [$this, $dataHolder]);
|
||||
$this->fireSystemEvent('cms.template.processSettingsBeforeSave', [$dataHolder]);
|
||||
|
||||
return $dataHolder->settings;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,94 @@
|
|||
<?php namespace System\Traits;
|
||||
|
||||
use Event;
|
||||
|
||||
/**
|
||||
* Adds system event related features to any class.
|
||||
*
|
||||
* @package october\system
|
||||
* @author Alexey Bobkov, Samuel Georges
|
||||
*/
|
||||
|
||||
trait EventEmitter
|
||||
{
|
||||
use \October\Rain\Support\Traits\Emitter;
|
||||
|
||||
/**
|
||||
* Fires a combination of local and global events. The first segment is removed
|
||||
* from the event name locally and the local object is passed as the first
|
||||
* argument to the event globally. Halting is also enabled by default.
|
||||
*
|
||||
* For example:
|
||||
*
|
||||
* $this->fireSystemEvent('backend.list.myEvent', ['my value']);
|
||||
*
|
||||
* Is equivalent to:
|
||||
*
|
||||
* $this->fireEvent('list.myEvent', ['myvalue'], true);
|
||||
*
|
||||
* Event::fire('backend.list.myEvent', [$this, 'myvalue'], true);
|
||||
*
|
||||
* @param string $event Event name
|
||||
* @param array $params Event parameters
|
||||
* @param boolean $halt Halt after first non-null result
|
||||
* @return mixed
|
||||
*/
|
||||
public function fireSystemEvent($event, $params = [], $halt = true)
|
||||
{
|
||||
$result = [];
|
||||
|
||||
$shortEvent = substr($event, strpos($event, '.') + 1);
|
||||
|
||||
$longArgs = array_merge([$this], $params);
|
||||
|
||||
/*
|
||||
* Local event first
|
||||
*/
|
||||
if ($response = $this->fireEvent($shortEvent, $params, $halt)) {
|
||||
if ($halt) {
|
||||
return $response;
|
||||
}
|
||||
else {
|
||||
$result = array_merge($result, $response);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Global event second
|
||||
*/
|
||||
if ($response = Event::fire($event, $longArgs, $halt)) {
|
||||
if ($halt) {
|
||||
return $response;
|
||||
}
|
||||
else {
|
||||
$result = array_merge($result, $response);
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Special event function used for extending within view files,
|
||||
* allowing HTML to be injected multiple times.
|
||||
*
|
||||
* For example:
|
||||
*
|
||||
* <?= $this->fireViewEvent('backend.auth.extendSigninView') ?>
|
||||
*
|
||||
* @param string $event Event name
|
||||
* @param array $params Event parameters
|
||||
* @return string
|
||||
*/
|
||||
public function fireViewEvent($event, $params = [])
|
||||
{
|
||||
// Add the local object to the first parameter always
|
||||
array_unshift($params, $this);
|
||||
|
||||
if ($result = Event::fire($event, $params)) {
|
||||
return implode(PHP_EOL.PHP_EOL, (array) $result);
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
|
@ -296,22 +296,4 @@ trait ViewMaker
|
|||
$guessedPath = $classFile ? $classFile . '/' . $classFolder . $suffix : null;
|
||||
return ($isPublic) ? File::localToPublic($guessedPath) : $guessedPath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Special event function used for extending within view files
|
||||
* @param string $event Event name
|
||||
* @param array $params Event parameters
|
||||
* @return string
|
||||
*/
|
||||
public function fireViewEvent($event, $params = [])
|
||||
{
|
||||
// Add the local object to the first parameter always
|
||||
array_unshift($params, $this);
|
||||
|
||||
if ($result = Event::fire($event, $params)) {
|
||||
return implode(PHP_EOL.PHP_EOL, (array) $result);
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue