Example #1
0
 /**
  * @test
  */
 public function it_returns_a_list_of_sub_menus()
 {
     $menu = new MenuItem('menu', 'url');
     $sub_menu1 = new MenuItem('menu1', 'url');
     $sub_menu2 = new MenuItem('menu2', 'url');
     $this->assertEmpty($menu->getElements());
     $menu->add($sub_menu1);
     $menu->add($sub_menu2);
     $this->assertEquals(array($sub_menu1, $sub_menu2), $menu->getElements());
 }
 /**
  * Render a menu for a specific level.
  *
  * @param  MenuItem $menu
  * @param  integer  $level
  *
  * @return string
  */
 protected function renderMenu(MenuItem $menu, $level = 1)
 {
     //Render the submenus first.
     $children = '';
     if ($menu->getElements()) {
         $children .= '<ul class="kebir-sub-menu">';
         foreach ($menu->getElements() as $sub_menu) {
             $children .= $this->renderMenu($sub_menu, $level + 1);
         }
         $children .= "</ul>";
     }
     //Prepare the html classes to add to the menu.
     $selected = $this->isSelectedMenu($menu, $children) ? ' selected' : '';
     $has_children = $children ? ' has-sub-menu' : '';
     //Get the final output.
     $output = '<li class="kebir-menu level-' . $level . $selected . $has_children . '">';
     $output .= "<a href=" . $menu->getUrl() . ' class="kebir-menu-label">' . $menu->getName() . "</a>";
     $output .= $children;
     $output .= "</li>";
     return $output;
 }