/** * Register a menu. * * @param \Caffeinated\Menus\Builder|\Caffeinated\Menus\Item $menuBuilder * @param \Yajra\CMS\Entities\Menu $menu * @return \Caffeinated\Menus\Builder|bool * @throws \Laracasts\Presenter\Exceptions\PresenterException */ protected function registerMenu($menuBuilder, Menu $menu) { if (!$menuBuilder) { return false; } if (!$menu->published) { return false; } if ($menu->requiresAuthentication() && !auth()->check()) { return false; } if (count($menu->permissions)) { if ($menu->authorization === 'can') { foreach ($menu->permissions as $permission) { if (!currentUser()->can($permission->slug)) { return false; } } } else { $permissions = $menu->permissions->pluck('slug')->toArray(); if (!currentUser()->canAtLeast($permissions)) { return false; } } } $item = $menuBuilder->add($menu->title, url($menu->present()->url))->attribute('target', $menu->present()->target)->attribute('title', $menu->present()->linkTitle); if ($menu->present()->linkStyle) { $item->attribute('style', $menu->present()->linkStyle); } if ($menu->isActive()) { session()->flash('active_menu', $menu); } return $item; }
/** * Rebuild menu entity nested set tree. */ public function rebuildMenu() { Menu::rebuild(true); return $this->notifySuccess(trans('cms::utilities.menu.success')); }
/** * @param \Yajra\CMS\Entities\Navigation $navigation * @param \Yajra\CMS\Entities\Menu $menu * @return string * @throws \Exception */ public function destroy(Navigation $navigation, Menu $menu) { if ($menu->isRoot()) { abort(404); } $navigation->menus()->findOrFail($menu->id)->delete(); return $this->notifySuccess(trans('cms::menu.destroy.success')); }
/** * Get the query object to be processed by datatables. * * @return \Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder */ public function query() { $users = Menu::query()->where('navigation_id', $this->navigation->id); return $this->applyScopes($users); }