public static function getMenuItems($roleId = null) { $sections = Menu::where('type', 'section')->orderBy('order_index', 'asc')->get(); $menu = array(); foreach ($sections as $section) { $allowedItemsCount = 0; $menuItems = Menu::where('type', 'item')->where('id_section', $section->id)->orderBy('order_index', 'asc')->get(); $filteredItems = array(); foreach ($menuItems as $item) { if ($roleId !== null) { if (self::checkAction($roleId, $item)) { $filteredItems[] = $item; $allowedItemsCount++; } } else { $filteredItems[] = $item; $allowedItemsCount++; } } //Only show section when there are items to display if ($allowedItemsCount > 0 || $roleId === null) { $menu[] = ['section' => $section, 'items' => $filteredItems]; } } //dd($menu); return $menu; }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next, $currentRoute) { $menuItem = Menu::where('route', $currentRoute)->first(); if ($menuItem !== null) { $section = Menu::findOrFail($menuItem->id_section); if ($section->name == 'toplevel') { session(['current_section' => $menuItem]); } else { session(['current_section' => $section]); } } return $next($request); }
/** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy(Request $request, $id) { $menuItem = Menu::findOrFail($id); if ($menuItem->type == "section") { $items = Menu::where('id_section', $menuItem->id)->get(); if ($items !== null) { foreach ($items as $item) { $item->delete(); } } } $menuItem->delete(); $message = $menuItem->name . ' removed successfully'; if ($request->ajax()) { return $message; } Session::flash('message', $message); return redirect()->route('admin.menus.index'); }