diff --git a/src/Pingpong/Menus/MenuBuilder.php b/src/Pingpong/Menus/MenuBuilder.php index 2db57e9b..c86d5473 100644 --- a/src/Pingpong/Menus/MenuBuilder.php +++ b/src/Pingpong/Menus/MenuBuilder.php @@ -57,6 +57,13 @@ class MenuBuilder implements Countable */ protected $views; + /** + * Determine whether the ordering feature is enabled or not. + * + * @var boolean + */ + protected $ordering = false; + /** * Constructor. * @@ -248,11 +255,13 @@ public function dropdown($title, \Closure $callback, $order = 0, array $attribut * * @return static */ - public function route($route, $title, $parameters = array(), $attributes = array()) + public function route($route, $title, $parameters = array(), $order = null, $attributes = array()) { $route = array($route, $parameters); - $item = MenuItem::make(compact('route', 'title', 'parameters', 'attributes')); + $item = MenuItem::make( + compact('route', 'title', 'parameters', 'attributes', 'order') + ); $this->items[] = $item; @@ -296,11 +305,12 @@ public function url($url, $title, $order = 0, $attributes = array()) /** * Add new divider item. * + * @param int $order * @return \Pingpong\Menus\MenuItem */ - public function addDivider() + public function addDivider($order = null) { - $this->items[] = new MenuItem(array('name' => 'divider')); + $this->items[] = new MenuItem(array('name' => 'divider', 'order' => $order)); return $this; } @@ -310,11 +320,12 @@ public function addDivider() * * @return \Pingpong\Menus\MenuItem */ - public function addHeader($title) + public function addHeader($title, $order = null) { $this->items[] = new MenuItem(array( 'name' => 'header', 'title' => $title, + 'order' => $order )); return $this; @@ -428,6 +439,30 @@ public function toArray() return $this->toCollection()->toArray(); } + /** + * Enable menu ordering. + * + * @return self + */ + public function enableOrdering() + { + $this->ordering = true; + + return $this; + } + + /** + * Disable menu ordering. + * + * @return self + */ + public function disableOrdering() + { + $this->ordering = true; + + return $this; + } + /** * Get menu items and order it by 'order' key. * @@ -435,7 +470,7 @@ public function toArray() */ public function getOrderedItems() { - if (config('menus.ordering')) { + if (config('menus.ordering') || $this->ordering) { return $this->toCollection()->sortBy(function ($item) { return $item->order; })->all();