public function testCanAttachMenus() { $list = static::$itemList; $list->add('#', 'foo'); $list->attach(Menu::items()->add('#', 'bar')); $this->assertHTML($this->matchListWithItem(), $list); $this->assertHTML($this->matchLink('#', 'bar'), $list); }
public function breadcrumbs() { $menu = \Menu\Menu::handler('breadcrumbs'); foreach ($this->getMenuItems() as $route => $menuItems) { $items = \Menu\Menu::items('breadcrumbs'); foreach ($menuItems as $itemRoute => $itemName) { $items->add($itemRoute, $itemName); } $menu->add($route, $route, $items); } return $menu->breadcrumbs(function ($itemLists) { return $itemLists[1]; })->setElement('ol')->addClass('breadcrumb'); }
/** * @param array $menu * @param $parent */ protected function buildMenu(array $menu, $parent) { foreach ($menu as $menu_name => $menu_details) { $uri = array_get($menu_details, 'uri', null); $label = array_get($menu_details, 'label', null); $label = $label ? Lang::get($label) : null; $icon = array_get($menu_details, 'icon', null); $children = array_get($menu_details, 'children', false); $skipItem = false; foreach ($this->callbacks as $callback) { $result = $callback($menu_details); if (!$result) { $skipItem = true; break; } } if ($skipItem) { continue; } // Create children container $items = Menu::items($menu_name); $content = ''; $icon_content = ''; if ($icon) { $icon_content .= '<span class="' . $icon . '"></span> '; } $content .= $icon_content . $label; if ($uri) { $item = $parent->add($uri, $content, $items); if ($uri !== '#') { $item->activePattern('^\\/' . preg_quote($uri, '/') . '(.+)$'); } } else { $parent->raw($content, $items); } if ($children) { $this->buildMenu($children, $items); } } }
public static function genMainMenu() { Self::setMenu(); $aryMenu = Static::$arrMainMenu; $menu = Menu::handler('mainmenu'); foreach ($aryMenu as $lv1) { if (isset($lv1['childrens']) && !empty($lv1['childrens']) && is_array($lv1['childrens'])) { // With level 2 $menuItems = Menu::items(); foreach ($lv1['childrens'] as $lv2) { $menuItems->add($lv2['url'], $lv2['rawContent']); } $menu->add($lv1['url'], $lv1['rawContent'], $menuItems, null, ['class' => 'treeview']); } else { $menu->add($lv1['url'], $lv1['rawContent']); } } /*$menu->add('dashboard', '<i class="fa fa-dashboard"></i> <span>Dashboard</span>') ->add('contacts', '<i class="fa fa-dashboard"></i> <span>Contact</span> <small class="badge pull-right bg-yellow">12</small>') ->add('#', '<i class="fa fa-calendar"></i> <span>Parent</span> <i class="fa fa-angle-left pull-right"></i>', Menu::items() // ->prefixParents() ->add('#', '<i class="fa fa-angle-double-right"></i>Menu 1') ->add('#', '<i class="fa fa-angle-double-right"></i>Menu 2') ->add('#', '<i class="fa fa-angle-double-right"></i>Menu 3') , null, [ 'class' => "treeview" ] ) // ->raw(null, null, ['class' => 'divider']) ->add('inbox', '<i class="fa fa-envelope"></i> <span>Inbox</span>');*/ //styling $menu->addClass('sidebar-menu')->getAllItemLists()->map(function ($item) { if ($item->isActive()) { $item->addClass('active'); } if ($item->hasChildren()) { $item->addClass('treeview-menu'); } }); return $menu; }
public function testCanGetItemLists() { $itemList = Menu::items('foo'); Menu::setItemList('foo', $itemList); $this->assertEquals($itemList, Menu::getItemList('foo')); }
private function composeMainMenu() { View::composer('app', function ($view) { // Set up some permissions $user = Auth::user(); $isRegistered = !!$user; $isMember = $isRegistered && $user->isMember(); $isCommittee = $isRegistered && $user->isCommittee(); $isAssociate = $isRegistered && $user->isAssociate(); $isSU = $isRegistered && $user->isSU(); $isAdmin = $isRegistered && $user->isAdmin(); // Create the parent menu $menu = Menu::handler('mainNav'); $menu->add(route('home'), 'Home')->activePattern('\\/page\\/home'); $menu->add(route('page.show', 'about'), 'About Us'); $menu->add(route('committee.view'), 'The Committee'); $menu->add(route('gallery.index'), 'Galleries')->activePattern('\\/gallery'); $menu->add(route('members.dash'), 'Members\' Area', Menu::items('members'))->activePattern('\\/members'); $menu->add(route('resources.search'), 'Resources', Menu::items('resources'))->activePattern('\\/resources'); $menu->add(route('contact.enquiries'), 'Enquiries'); $menu->add(route('contact.book'), 'Book Us')->activePattern('\\/contact\\/book'); // Build the members sub-menu if ($isRegistered) { $members = $menu->find('members'); $members->add(route('members.myprofile'), 'My Profile', Menu::items('members.profile'), [], ['class' => 'profile'])->add(route('events.diary'), 'Events Diary', Menu::items('members.events'), [], ['class' => 'events'])->activePattern('\\/events\\/diary'); if ($isMember || $isAdmin) { $members->add(route('membership'), 'The Membership', Menu::items('members.users'), [], ['class' => 'admin-users'])->add(route('quotes.index'), 'Quotes Board')->add(route('equipment.dash'), 'Equipment', Menu::items('members.equipment'), [], ['class' => 'equipment']); } if ($isMember || $isAdmin || $isSU) { $members->add(route('training.dash'), 'Training', Menu::items('members.training'), [], ['class' => 'training']); } if ($isMember || $isAdmin) { $members->add('#', 'Other', Menu::items('members.misc'), [], ['class' => 'misc'])->raw('', null, ['class' => 'divider'])->add(route('contact.accident'), 'Report an Accident')->raw('', null, ['class' => 'divider']); // Build the profile sub-menu $menu->find('members.profile')->add(route('members.myprofile', 'events'), 'My events')->add(route('members.myprofile', 'training'), 'My training'); // Build the events sub-menu $events = $menu->find('members.events'); $events->add(route('events.mydiary'), 'My diary')->activePattern('\\/events\\/my-diary')->add(route('events.signup'), 'Event sign-up')->activePattern('\\/events\\/signup')->add('https://docs.google.com/a/bts-crew.com/forms/d/e/1FAIpQLSekw6oEojBdD1REd2krli3U-4BYWNG9zfThCmTJKc1A1OaR3g/viewform', 'Submit event report'); if ($isAdmin) { //$events->add('#', 'View booking requests') $events->add(route('events.index'), 'View all events')->add(route('events.add'), 'Add event'); } // Build the users sub-menu if ($isAdmin) { $menu->find('members.users')->add(route('user.index'), 'View all users')->add(route('user.create'), 'Create a new user'); } // Build the equipment sub-menu $menu->find('members.equipment')->add(route('equipment.assets'), 'Asset register')->add(route('equipment.repairs'), 'View repairs db')->add(route('equipment.repairs.add'), 'Report broken kit'); // Build the training sub-menu $training = $menu->find('members.training'); $training->add(route('training.skills.index'), 'View skills'); if ($isAdmin) { $training->add(route('training.skills.proposal.index'), 'Review proposals')->activePattern('\\/training\\/skills\\/proposal'); $training->add(route('training.skills.log'), 'Skills log'); } // Build the misc sub-menu $misc = $menu->find('members.misc'); $misc->add(route('polls.index'), 'Polls')->activePattern('\\/polls')->add(route('elections.index'), 'Committee elections')->activePattern('\\/elections'); //->add('#', 'BTS Awards') if ($isAdmin) { $misc->add(route('page.index'), 'Manage webpages')->add(route('su.dash'), 'View SU Area'); } } $members->add(route('auth.logout'), 'Log out'); } // Build the resources sub-menu $resources = $menu->find('resources'); if ($isMember || $isAdmin) { $resources->add(route('resources.search', ['category' => 'event-reports']), 'Event Reports')->add(route('resources.search', ['category' => 'event-risk-assessments']), 'Event Risk Assessments')->add(route('resources.search', ['category' => 'meeting-minutes']), 'Meeting Minutes')->add(route('resources.search', ['category' => 'meeting-agendas']), 'Meeting Agendas'); } //$resources->add('#', 'Safety Information') //->add('#', 'Weather Forecast') $resources->add(route('page.show', 'links'), 'Links')->add(route('page.show', 'faq'), 'FAQ'); // Add the necessary classes $menu->addClass('nav navbar-nav')->getItemsByContentType(Link::class)->map(function ($item) { if ($item->hasChildren()) { $item->addClass('dropdown'); $item->getChildren()->getAllItems()->map(function ($childItem) use($item) { if ($childItem->isActive()) { $item->addClass('active'); } }); } }); $menu->getAllItemLists()->map(function ($itemList) { if ($itemList->hasChildren()) { $itemList->addClass('dropdown-menu'); } }); $view->with('mainNav', $menu->render()); }); }