Пример #1
0
 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);
 }
Пример #2
0
 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');
 }
Пример #3
0
 /**
  * @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);
         }
     }
 }
Пример #4
0
 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;
 }
Пример #5
0
 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());
     });
 }