items; } /** * Create a new Menu instance. * * @param array $attributes * @return void */ public function __construct($attributes = []) { $this->attributes = $attributes; $this->html = new HtmlBuilder; } public function addDirect($menu) { $this->items[] = $menu; return $this; } public function create_submenu($name, $title, $icon = '', $attributes = [], $weight = 0) { $menu_item = false; foreach ($this->items as $item) { if ($item->name == $name) { $menu_item = $item; //$menu_item = $item->nested(); break; } } if (!$menu_item) { $menu = new MenuItem(); $menu = $menu->title($title)->icon($icon)->attributes($attributes)->weight($weight)->name($name); $menu = $menu->nest(new Menu(Array('class' => 'nav nav-ident'))); $menu_item = $menu->nested(); $this->items[] = $menu; } else { if (!$title == null) { $menu_item->title($title)->icon($icon)->attributes($attributes)->weight($weight)->name($name); $menu_item = $menu_item->nested(); }else{ $menu_item = $menu_item->nested(); } } return $menu_item; } public function add_on($name, MenuItem $item) { $this->create_submenu($name)->items[] = $item; } public function add_on_new($name, $link, $title, $icon = '', $attributes = [], $weight = 0) { $menu_item = $this->create_submenu($name, null); $menu = new MenuItem(); $menu_item->items[] = $menu->link($link)->title($title)->icon($icon)->attributes($attributes)->weight($weight)->name($name); } /** * Add a menu item. * * @param string $link * @param string $title * @param array $attributes * @return \JasonLewis\Menu\Menu */ public function add($link, $title, $icon = '', $attributes = [], $weight = 0) { $menu = new MenuItem(); $this->items[] = $menu->link($link)->title($title)->icon($icon)->attributes($attributes)->weight($weight); return $this; } /** * Nest a menu on the previous item. * * @param array $attributes * @return \JasonLewis\Menu\Menu */ public function nestMenu($attributes = []) { $key = count($this->items) - 1; $this->items[$key]->nest($menu = new Menu($attributes)); return $menu; } /** * Render the menu. * * @return string */ public function render() { $this->sort(); $attributes = $this->html->attributes($this->attributes); $menu[] = "