/**
* register presenter
*
* @return void
*/
private function registerPresenter()
{
$this->app->singleton('xe.presenter', function ($app) {
$proxyClass = $app['xe.interception']->proxy(Presenter::class, 'Presenter');
/** @var \Xpressengine\Presenter\Presenter $presenter */
$presenter = new $proxyClass($app['view'], $app['request'], $app['xe.theme'], $app['xe.skin'], $app['xe.settings'], InstanceConfig::instance());
HtmlPresenter::setCommonHtmlWrapper(app('config')['xe.HtmlWrapper.common']);
HtmlPresenter::setPopupHtmlWrapper(app('config')['xe.HtmlWrapper.popup']);
/** @var \Xpressengine\Presenter\Presentable $htmlProxy */
$htmlProxy = $app['xe.interception']->proxy(HtmlPresenter::class, 'HtmlRenderer');
/** @var \Xpressengine\Presenter\Presentable $jsonProxy */
$jsonProxy = $app['xe.interception']->proxy(JsonPresenter::class, 'JsonRenderer');
$presenter->register($htmlProxy::format(), function (Presenter $presenter) use($htmlProxy) {
return new $htmlProxy($presenter, app('xe.seo'), app('xe.widget.parser'));
});
$presenter->register($jsonProxy::format(), function (Presenter $presenter) use($jsonProxy) {
return new $jsonProxy($presenter);
});
return $presenter;
});
}