/** * @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; }