/**
* 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;
}