/** * Register bindings in the container. * * @return void */ public function boot() { View::composer('sections.left-sidebar-menu', function ($view) { // Default menu items $sidebarMenu = ['home' => ['title' => 'Home', 'href' => '/'], 'api_endpoints' => ['title' => 'API Endpoint Reference', 'href' => '/endpoint-reference'], 'object_models' => ['title' => 'Object Models', 'href' => '/object-models'], 'article1' => ['title' => 'User Guide', 'href' => '/article/user-guide'], 'article2' => ['title' => "Beginner's Tutorial", 'href' => '/article/beginners-tutorial'], 'article3' => ['title' => 'Authorization Guide', 'href' => '/article/authorization-guide'], 'article4' => ['title' => 'Change Log', 'href' => '/change-log']]; // Populate Endpoint Reference menu item $sidebarMenu['api_endpoints']['sub_menu'] = []; foreach (ApiResource::all() as $resource) { $resourceMenuItem = ['title' => $resource->title, 'href' => '/endpoint-reference/resource/' . $resource->alias, 'sub_menu' => []]; foreach ($resource->endpoints as $endpoint) { array_push($resourceMenuItem['sub_menu'], ['title' => $endpoint->title, 'href' => '/endpoint-reference/endpoint/' . $endpoint->alias]); } array_push($sidebarMenu['api_endpoints']['sub_menu'], $resourceMenuItem); } // Mark selected menu items function markSelected(&$menuItems) { $selectedItems = 0; $uri = Request::path(); foreach ($menuItems as &$menuItem) { $selectedChildren = 0; if ($uri == trim($menuItem['href'], "/")) { $menuItem['class'] = 'selected'; $menuItem['open'] = true; $selectedItems++; } if (isset($menuItem['sub_menu'])) { if (!empty($menuItem['sub_menu'])) { $selectedChildren += markSelected($menuItem['sub_menu']); } } if ($selectedChildren > 0) { $menuItem['class'] = 'child-selected'; $menuItem['open'] = true; } $selectedItems += $selectedChildren; } return $selectedItems; } markSelected($sidebarMenu); $view->with('sidebarMenu', $sidebarMenu); }); }