public function editSetting(MenuRetrieveHandler $menuHandler, SiteHandler $siteHandler, ThemeHandler $themeHandler)
 {
     $config = app('xe.site')->getSiteConfig();
     $siteKey = $siteHandler->getCurrentSiteKey();
     $indexInstance = $siteHandler->getHomeInstanceId();
     $menus = $menuHandler->getAllMenu($siteKey);
     $selectedTheme = $themeHandler->getSiteThemeId();
     return \Presenter::make('settings.setting', compact('config', 'selectedTheme', 'menus', 'indexInstance'));
 }
 /**
  * index
  *
  * @param IlluminateConfig    $config       laravel config
  * @param MenuRetrieveHandler $menuHandler  menu handler
  * @param MenuCacheHandler    $cacheHandler menu cache handler
  * @param SiteHandler         $siteHandler  site handler
  *
  * @return RendererInterface
  */
 public function index(IlluminateConfig $config, MenuRetrieveHandler $menuHandler, MenuCacheHandler $cacheHandler, SiteHandler $siteHandler)
 {
     $siteKey = $siteHandler->getCurrentSiteKey();
     $menus = $menuHandler->getAllMenu($siteKey);
     $homeMenuId = $siteHandler->getHomeInstanceId();
     $menuMaxDepth = $config->get('xe.menu.maxDepth');
     $transKey = [];
     foreach ($menus as $menu) {
         $transKey = array_merge($transKey, $cacheHandler->getMenuItemKeys($menu));
     }
     // 메뉴 어드민 트리 뷰에서 필요한 고유 다국어
     FrontEnd::translation(['xe::addItem', 'xe::goLink', 'xe::setHome']);
     // 메뉴 타이틀 user 다국어
     Frontend::translation($transKey);
     return Presenter::make('menu.index', ['siteKey' => $siteKey, 'menus' => $menus, 'home' => $homeMenuId, 'maxDepth' => $menuMaxDepth]);
 }
 /**
  * testGetAllMenuWithCache
  *
  * @return void
  */
 public function testGetAllMenuWithCache()
 {
     $menuRepo = $this->menuRepository;
     $typeHandler = $this->typeHandler;
     $permissionHandler = $this->menuPermissionHandler;
     $cacheHandler = $this->cacheHandler;
     $menuPermission = $this->menuPermission;
     $dummyMenu1 = new MenuEntity(['id' => 'menu1', 'title' => 'testTitle1', 'description' => 'testDescription'], new TreeCollection([new MenuItem(['id' => 'testMenuItem1'])]));
     $dummyMenu2 = new MenuEntity(['id' => 'menu2', 'title' => 'testTitle2', 'description' => 'testDescription'], new TreeCollection([new MenuItem(['id' => 'testMenuItem2'])]));
     $dummyMenu3 = new MenuEntity(['id' => 'menu3', 'title' => 'testTitle3', 'description' => 'testDescription'], new TreeCollection([new MenuItem(['id' => 'testMenuItem3'])]));
     $menuHandler = new MenuRetrieveHandler($menuRepo, $typeHandler, $permissionHandler, $cacheHandler);
     $menuRepo->shouldReceive('findAllMenuIds')->andReturn(['menu1', 'menu2', 'menu3']);
     $cacheHandler->shouldReceive('isExistCachedMenu')->andReturn(true);
     $cacheHandler->shouldReceive('getCachedMenu')->with('menu1')->andReturn($dummyMenu1);
     $cacheHandler->shouldReceive('getCachedMenu')->with('menu2')->andReturn($dummyMenu2);
     $cacheHandler->shouldReceive('getCachedMenu')->with('menu3')->andReturn($dummyMenu3);
     $permissionHandler->shouldReceive('getMenuPermissions')->andReturn(['menu1' => $menuPermission, 'menu2' => $menuPermission, 'menu3' => $menuPermission, '' => $menuPermission, 'testMenuItem1' => $menuPermission, 'testMenuItem2' => $menuPermission, 'testMenuItem3' => $menuPermission]);
     $testSiteKey = 'default';
     $menus = $menuHandler->getAllMenu($testSiteKey);
     $this->assertEquals(['menu1' => $dummyMenu1, 'menu2' => $dummyMenu2, 'menu3' => $dummyMenu3], $menus);
 }