Sindbad~EG File Manager
<?php
namespace JeroenNoten\LaravelAdminLte;
use Illuminate\Contracts\Container\Container;
use Illuminate\Contracts\Events\Dispatcher;
use JeroenNoten\LaravelAdminLte\Events\BuildingMenu;
use JeroenNoten\LaravelAdminLte\Helpers\LayoutHelper;
use JeroenNoten\LaravelAdminLte\Helpers\NavbarItemHelper;
use JeroenNoten\LaravelAdminLte\Helpers\SidebarItemHelper;
use JeroenNoten\LaravelAdminLte\Menu\Builder;
class AdminLte
{
/**
* The array of menu items.
*
* @var array
*/
protected $menu;
/**
* The array of menu filters. These filters will apply on each one of the
* menu items in order to transforms they in some way.
*
* @var array
*/
protected $filters;
/**
* The events dispatcher.
*
* @var Dispatcher
*/
protected $events;
/**
* The application service container.
*
* @var Container
*/
protected $container;
/**
* Map between a valid menu filter token and his respective filter method.
* These filters are intended to get a specific set of menu items.
*
* @var array
*/
protected $menuFilterMap;
/**
* Constructor.
*
* @param array $filters
* @param Dispatcher $events
* @param Container $container
*/
public function __construct(array $filters, Dispatcher $events, Container $container)
{
$this->filters = $filters;
$this->events = $events;
$this->container = $container;
// Fill the map of filters methods.
$this->menuFilterMap = [
'sidebar' => [$this, 'sidebarFilter'],
'navbar-left' => [$this, 'navbarLeftFilter'],
'navbar-right' => [$this, 'navbarRightFilter'],
'navbar-user' => [$this, 'navbarUserMenuFilter'],
];
}
/**
* Get all the menu items, or a specific set of these.
*
* @param string $filterToken Token representing a subset of the menu items
* @return array A set of menu items
*/
public function menu($filterToken = null)
{
if (empty($this->menu)) {
$this->menu = $this->buildMenu();
}
// Check for filter token.
if (isset($this->menuFilterMap[$filterToken])) {
return array_filter(
$this->menu,
$this->menuFilterMap[$filterToken]
);
}
// No filter token provided, return the complete menu.
return $this->menu;
}
/**
* Build the menu.
*
* @return array The set of menu items
*/
protected function buildMenu()
{
// Create the menu builder instance.
$builder = new Builder($this->buildFilters());
// Dispatch the BuildingMenu event. Listeners of this event will fill
// the menu.
$this->events->dispatch(new BuildingMenu($builder));
// Return the set of menu items.
return $builder->menu;
}
/**
* Build the menu filters.
*
* @return array The set of filters that will apply on each menu item
*/
protected function buildFilters()
{
return array_map([$this->container, 'make'], $this->filters);
}
/**
* Filter method used to get the sidebar menu items.
*
* @param mixed $item A menu item
* @return bool
*/
private function sidebarFilter($item)
{
return SidebarItemHelper::isValidItem($item);
}
/**
* Filter method used to get the top navbar left menu items.
*
* @param mixed $item A menu item
* @return bool
*/
private function navbarLeftFilter($item)
{
if (LayoutHelper::isLayoutTopnavEnabled() && SidebarItemHelper::isValidItem($item)) {
return NavbarItemHelper::isAcceptedItem($item);
}
return NavbarItemHelper::isValidLeftItem($item);
}
/**
* Filter method used to get the top navbar right menu items.
*
* @param mixed $item A menu item
* @return bool
*/
private function navbarRightFilter($item)
{
return NavbarItemHelper::isValidRightItem($item);
}
/**
* Filter method used to get the navbar user menu items.
*
* @param mixed $item A menu item
* @return bool
*/
private function navbarUserMenuFilter($item)
{
return NavbarItemHelper::isValidUserMenuItem($item);
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists