public function testGetCurrentInstanceId() { /** * @var InstanceConfig $instanceConfig */ $instanceConfig = InstanceConfig::instance(); $instanceConfig->setInstanceId('testInstanceId'); $instanceId = getCurrentInstanceId(); $this->assertEquals('testInstanceId', $instanceId); }
protected function getMenu($config, $menuName, $setSelected = false) { $menuId = array_get($config, $menuName); $selectedMenuItem = null; $menuItems = []; if ($menuId !== null) { $mainmenu = \Menu::getMenu($menuId); $menuItems = $mainmenu->getItems(); $currentInstanceId = getCurrentInstanceId(); if ($currentInstanceId !== null && $mainmenu->hasItem($currentInstanceId)) { $mainmenu->setItemSelected($currentInstanceId); if ($setSelected) { $this->selectedMenu = $mainmenu->getItem($currentInstanceId); } } } return $menuItems; }
/** * 메뉴를 html 마크업으로 출력할 때, 사용하기 쉽도록 메뉴아이템 리스트를 제공한다. * * @package Xpressengine\Menu * * @param string $menuId 출력할 메뉴의 ID * * @return Illuminate\Support\Collection 메뉴아이템 리스트 */ function menu_list($menuId) { $menu = null; if ($menuId !== null) { $menu = app('xe.menu')->get($menuId, ['items.basicImage', 'items.hoverImage', 'items.selectedImage', 'items.mBasicImage', 'items.mHoverImage', 'items.mSelectedImage']); } /** @var Xpressengine\Menu\Models\Menu $menu */ if ($menu !== null) { if (!function_exists('removeInvisible')) { /** * 보이지 않는(보기 권한이 없는) 메뉴는 제외시킨다. * * @param \Xpressengine\Menu\Models\MenuItem $item menu item * @param \Xpressengine\Menu\Models\Menu $menu menu * * @return null|\Xpressengine\Menu\Models\MenuItem */ function removeInvisible($item, $menu) { // resolve item if (Gate::denies('visible', [$item, $menu])) { return null; } // resolve child menuitems of item $children = new \Illuminate\Support\Collection(); foreach ($item['children'] as $child) { if ($new = removeInvisible($child, $menu)) { if ($new) { $children[] = $new; } } } $item['children'] = $children; return $item; } } $current = getCurrentInstanceId(); if ($current !== null) { $menu->setItemSelected($current); } $tree = $menu->getTree()->getTreeNodes(); // resolve menu visible $menuTree = []; foreach ($tree as $item) { if ($new = removeInvisible($item, $menu)) { $menuTree[] = $new; } } return $menuTree; } else { return new Illuminate\Support\Collection(); } }