Author: XE Developers (developers@xpressengine.com)
Inheritance: extends Xpressengine\Support\Singleton
 /**
  * index
  *
  * @return RendererInterface
  */
 public function index()
 {
     $instanceConfig = InstanceConfig::instance();
     $instanceId = $instanceConfig->getInstanceId();
     $configName = $this->getConfigKeyString($instanceId);
     $includePath = $this->configManager->getVal($configName);
     return XePresenter::make('show', ['includePath' => $includePath]);
 }
 public function testGetCurrentInstanceId()
 {
     /**
      * @var InstanceConfig $instanceConfig
      */
     $instanceConfig = InstanceConfig::instance();
     $instanceConfig->setInstanceId('testInstanceId');
     $instanceId = getCurrentInstanceId();
     $this->assertEquals('testInstanceId', $instanceId);
 }
 /**
  * testMenuConfig
  *
  * @return void
  */
 public function testMenuConfig()
 {
     /**
      * @var InstanceConfig $instanceConfig;
      */
     $instanceConfig = InstanceConfig::instance();
     $instanceConfig->setInstanceId('testInstance');
     $instanceConfig->setTheme('bootstrapTheme');
     $instanceConfig->setUrl('test');
     $instanceConfig->setModule('xpressengine@test');
     $this->assertEquals('testInstance', $instanceConfig->getInstanceId());
     $this->assertEquals('bootstrapTheme', $instanceConfig->getTheme());
     $this->assertEquals('test', $instanceConfig->getUrl());
     $this->assertEquals('xpressengine@test', $instanceConfig->getModule());
 }
 /**
  * testInstanceConfig
  *
  * @return void
  */
 public function testInstanceConfig()
 {
     /**
      * @var InstanceConfig $instanceConfig
      */
     $instanceConfig = InstanceConfig::instance();
     $instanceConfig->setInstanceId('test');
     $instanceConfig->setModule('module/xpressengine@board');
     $instanceConfig->setTheme('defaultTheme');
     $instanceConfig->setUrl('freeboard');
     $this->assertEquals('freeboard', $instanceConfig->getUrl());
     $this->assertEquals('module/xpressengine@board', $instanceConfig->getModule());
     $this->assertEquals('test', $instanceConfig->getInstanceId());
     $this->assertEquals('defaultTheme', $instanceConfig->getTheme());
 }
 /**
  * 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());
         HtmlRenderer::setCommonHtmlWrapper(app('config')['xe.HtmlWrapper.common']);
         HtmlRenderer::setPopupHtmlWrapper(app('config')['xe.HtmlWrapper.popup']);
         /** @var \Xpressengine\Presenter\RendererInterface $proxyHtmlRenderer */
         $proxyHtmlRenderer = $app['xe.interception']->proxy(HtmlRenderer::class, 'HtmlRenderer');
         /** @var \Xpressengine\Presenter\RendererInterface $proxyJsonRenderer */
         $proxyJsonRenderer = $app['xe.interception']->proxy(JsonRenderer::class, 'JsonRenderer');
         $presenter->register($proxyHtmlRenderer::format(), function (Presenter $presenter) use($proxyHtmlRenderer) {
             return new $proxyHtmlRenderer($presenter, app('xe.seo'), app('xe.widget.parser'));
         });
         $presenter->register($proxyJsonRenderer::format(), function (Presenter $presenter) use($proxyJsonRenderer) {
             return new $proxyJsonRenderer($presenter);
         });
         return $presenter;
     });
 }
 /**
  * show document
  *
  * @param Request $request request
  * @param string  $slug    slug
  * @return mixed
  */
 public function index(Request $request, $slug)
 {
     $slug = BoardSlug::where('slug', $slug)->first();
     $instanceId = $slug->instanceId;
     $id = $slug->targetId;
     $instanceConfig = InstanceConfig::instance();
     $instanceConfig->setInstanceId($slug->instanceId);
     /**
      * @var Handler $handler
      * @var ConfigHandler $configHandler
      * @var UrlHandler $urlHandler
      * @var BoardPermissionHandler $permission
      */
     $handler = app('xe.board.handler');
     $configHandler = app('xe.board.config');
     $urlHandler = app('xe.board.url');
     $permission = app('xe.board.permission');
     $this->setCurrentPage($request, $handler, $configHandler, $slug);
     $userController = new UserController($handler, $configHandler, $urlHandler, $permission);
     return $userController->show($request, $permission, $instanceId, $id);
 }
Example #7
0
 /**
  * Generate a URL to a named route.
  *
  * @param  string                    $name       route name
  * @param  array                     $parameters route parameter
  * @param  string                    $instanceId instance id
  * @param  bool                      $absolute   absolute bool
  * @param  \Illuminate\Routing\Route $route      illuminate route
  *
  * @return string
  */
 function instanceRoute($name, $parameters = array(), $instanceId = null, $absolute = true, $route = null)
 {
     /**
      * @var Xpressengine\Routing\RouteCollection $routeCollection
      */
     if ($instanceId === null) {
         $instanceConfig = InstanceConfig::instance();
         $module = $instanceConfig->getModule();
         $url = $instanceConfig->getUrl();
     } else {
         /**
          * @var $instanceRouter InstanceRouteHandler
          */
         $instanceRouter = app('xe.router');
         $instanceRoute = $instanceRouter->getByInstanceId($instanceId);
         $url = $instanceRoute->url;
         $module = $instanceRoute->module;
     }
     $name = $module . '.' . $name;
     array_unshift($parameters, $url);
     return app('url')->route($name, $parameters, $absolute, $route);
 }
Example #8
0
 /**
  * setInstanceConfig
  *
  * @param InstanceRoute $instanceRoute instance route
  * @param XeRequest     $request       xpressengine request
  *
  * @return void
  */
 private function setInstanceConfig(InstanceRoute $instanceRoute, XeRequest $request)
 {
     $item = $this->menuHandler->getItem($instanceRoute->instanceId);
     $menuConfig = $this->menuHandler->getMenuItemTheme($item);
     if ($request->isMobile()) {
         $theme = $menuConfig->get('mobileTheme');
     } else {
         $theme = $menuConfig->get('desktopTheme');
     }
     $instanceId = $instanceRoute->instanceId;
     $module = $instanceRoute->module;
     $url = $instanceRoute->url;
     $instanceConfig = InstanceConfig::instance();
     $instanceConfig->setTheme($theme);
     $instanceConfig->setInstanceId($instanceId);
     $instanceConfig->setModule($module);
     $instanceConfig->setUrl($url);
     $themeHandler = $this->themeHandler;
     $themeHandler->selectTheme($theme);
 }
 /**
  * getMenuItem
  *
  * @return MenuItem
  */
 protected function getMenuItem()
 {
     /**
      * @var MenuRetrieveHandler $menuHandler
      */
     $instanceConfig = InstanceConfig::instance();
     $menuHandler = $this->app['xe.menu'];
     $item = $menuHandler->getItem($instanceConfig->instanceId);
     return $item;
 }
Example #10
0
 /**
  * set board list
  *
  * @return void
  */
 protected function setBoardList()
 {
     $instanceConfig = InstanceConfig::instance();
     $instanceId = $instanceConfig->getInstanceId();
     $configHandler = app('xe.board.config');
     $boards = $configHandler->gets();
     $boardList = [];
     /** @var ConfigEntity $config */
     foreach ($boards as $config) {
         // 현재의 게시판은 리스트에서 제외
         if ($instanceId === $config->get('boardId')) {
             continue;
         }
         $boardList[] = ['value' => $config->get('boardId'), 'text' => $config->get('boardName')];
     }
     $this->data['boardList'] = $boardList;
 }
 /**
  * PageUserController constructor.
  */
 public function __construct()
 {
     XePresenter::setSkinTargetId(PageModule::getId());
     $instanceConfig = InstanceConfig::instance();
     $this->pageId = $instanceConfig->getInstanceId();
 }
Example #12
0
 /**
  * skin 설정할 때 thumbnail table 을 join 할 수 있도록 intercept 등록
  *
  * @return void
  */
 protected static function interceptSetSkinTargetId()
 {
     intercept(sprintf('%s@setSkinTargetId', Presenter::class), 'board_gallery_skin::set_skin_target_id', function ($func, $skinTargetId) {
         $func($skinTargetId);
         $request = app('request');
         $instanceConfig = InstanceConfig::instance();
         if ($request instanceof Request) {
             $isMobile = $request->isMobile();
         } else {
             $isMobile = false;
         }
         $assignedSkin = XeSkin::getAssigned([$skinTargetId, $instanceConfig->getInstanceId()], $isMobile ? 'mobile' : 'desktop');
         // target 의 스킨이 현재 skin 의 아이디와 일치하는지 확인
         if (in_array($assignedSkin->getId(), static::getThumbSkins())) {
             // 리스트 출력할 때 gallery thumbnail 확인을 위한 table join 이벤트 등록
             Event::listen('xe.plugin.board.articles', function ($query) {
                 $query->leftJoin('board_gallery_thumbs', sprintf('%s.%s', $query->getQuery()->from, 'id'), '=', sprintf('%s.%s', 'board_gallery_thumbs', 'targetId'));
             });
         }
     });
 }
Example #13
0
 /**
  * create instance
  */
 public function __construct()
 {
     $instanceConfig = InstanceConfig::instance();
     $this->currentUrl = $instanceConfig->getUrl();
     $this->boardId = $instanceConfig->getInstanceId();
     if ($this->boardId === null) {
         throw new NotFoundInstanceIdException();
     }
     $this->handler = app('xe.board.handler');
     $this->urlHandler = app('xe.board.url');
     $this->configHandler = app('xe.board.config');
     // set config
     $this->config = $this->configHandler->get($this->boardId);
     $this->handler->setConfig($this->config);
     $this->urlHandler->setConfig($this->config);
     // check is manager
     $this->permissionHandler = app('xe.board.permission');
     if (Auth::guest() === false && $this->permissionHandler->get($this->boardId)->ables(PermissionHandler::ACTION_MANAGE) === true) {
         $this->isManager = true;
     }
     // set skin
     /** @var \Xpressengine\Presenter\Presenter $presenter */
     $presenter = app('xe.presenter');
     $presenter->setSkin(Board::getId());
     //$presenter->htmlRenderPopup();
     $presenter->share('config', $this->config);
     $presenter->share('currentUrl', $this->currentUrl);
     $presenter->share('boardId', $this->boardId);
     $presenter->share('handler', $this->handler);
     $presenter->share('permissionHandler', $this->permissionHandler);
     $presenter->share('configHandler', $this->configHandler);
     $presenter->share('urlHandler', $this->urlHandler);
     $presenter->share('isManager', $this->isManager);
 }
Example #14
0
 /**
  * Return current Instance Id
  *
  * @return string
  */
 function getCurrentInstanceId()
 {
     $instanceConfig = InstanceConfig::instance();
     return $instanceConfig->getInstanceId();
 }
 /**
  * UserController constructor.
  *
  * @param Handler $handler
  * @param ConfigHandler $configHandler
  * @param UrlHandler $urlHandler
  * @param BoardPermissionHandler $boardPermission
  */
 public function __construct(Handler $handler, ConfigHandler $configHandler, UrlHandler $urlHandler, BoardPermissionHandler $boardPermission)
 {
     $instanceConfig = InstanceConfig::instance();
     $this->instanceId = $instanceConfig->getInstanceId();
     $this->handler = $handler;
     $this->configHandler = $configHandler;
     $this->urlHandler = $urlHandler;
     $this->config = $configHandler->get($this->instanceId);
     if ($this->config !== null) {
         $urlHandler->setConfig($this->config);
         $this->isManager = false;
         if (Gate::allows(BoardPermissionHandler::ACTION_MANAGE, new Instance($boardPermission->name($this->instanceId)))) {
             $this->isManager = true;
         }
     }
     // set Skin
     XePresenter::setSkinTargetId(BoardModule::getId());
     XePresenter::share('handler', $handler);
     XePresenter::share('configHandler', $configHandler);
     XePresenter::share('urlHandler', $urlHandler);
     XePresenter::share('isManager', $this->isManager);
     XePresenter::share('instanceId', $this->instanceId);
     XePresenter::share('config', $this->config);
 }
 /**
  * getMenuItem
  *
  * @return MenuItem
  */
 protected function getMenuItem()
 {
     $instanceConfig = InstanceConfig::instance();
     return $instanceConfig->getMenuItem();
 }