413 lines
15 KiB
PHP
413 lines
15 KiB
PHP
<?php
|
|
|
|
use KupShop\AdminBundle\AdminRegister\AdminRegisterLocator;
|
|
use KupShop\KupShopBundle\Util\Compat\ServiceContainer;
|
|
|
|
class AdminBarMenu
|
|
{
|
|
protected $customMenuItems = [];
|
|
|
|
protected $menu = [
|
|
[
|
|
'name' => 'administration',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'leadpage',
|
|
'left' => 'blank', 'right' => 's=board.php',
|
|
],
|
|
[
|
|
'name' => 'shopStore',
|
|
'left' => 's=menu.php&type=shopStore', 'right' => 's=board.php&type=shopStore',
|
|
],
|
|
[
|
|
'name' => 'newWindow',
|
|
'script' => 'newWindow();',
|
|
],
|
|
[
|
|
'name' => 'logout',
|
|
'script' => 'logout(0)',
|
|
],
|
|
[
|
|
'name' => 'adminEdit',
|
|
'script' => "nw('adminEdit')",
|
|
],
|
|
[
|
|
'name' => 'htmlComponents',
|
|
/* 'left' => 's=menu.php&type=htmlComponents', */ 'right' => 's=board.php&type=htmlComponents',
|
|
],
|
|
[
|
|
'name' => 'chooseLanguage',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'czech',
|
|
'href' => 'admin-change-language/czech',
|
|
],
|
|
[
|
|
'name' => 'english',
|
|
'href' => 'admin-change-language/english',
|
|
],
|
|
],
|
|
],
|
|
],
|
|
],
|
|
[
|
|
'name' => 'productsMenu',
|
|
'left' => 's=menu.php&type=products', 'right' => 's=list.php&type=products',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'products',
|
|
'left' => 's=menu.php&type=products', 'right' => 's=list.php&type=products',
|
|
],
|
|
[
|
|
'name' => 'productsMassModification',
|
|
'left' => 'blank', 'right' => 's=list.php&type=productsMassModification',
|
|
],
|
|
[
|
|
'name' => 'parameters',
|
|
'left' => 's=menu.php&type=parameters', 'right' => 's=list.php&type=parameters',
|
|
],
|
|
[
|
|
'name' => 'productsVarLabels',
|
|
'left' => 's=menu.php&type=productsVarLabels', 'right' => 's=list.php&type=productsVarLabels',
|
|
],
|
|
[
|
|
'name' => 'sections',
|
|
'left' => 's=menu.php&type=sections', 'right' => 's=list.php&type=sections',
|
|
],
|
|
[
|
|
'name' => 'producers',
|
|
'left' => 's=menu.php&type=producers', 'right' => 's=list.php&type=producers',
|
|
],
|
|
[
|
|
'name' => 'templatesMenu',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'templates',
|
|
'left' => 's=menu.php&type=templates', 'right' => 's=list.php&type=templates',
|
|
],
|
|
[
|
|
'name' => 'templatesCategories',
|
|
'left' => 's=menu.php&type=templatesCategories', 'right' => 's=list.php&type=templatesCategories',
|
|
],
|
|
],
|
|
],
|
|
[
|
|
'name' => 'reviews',
|
|
'left' => 's=menu.php&type=reviews', 'right' => 's=list.php&type=reviews&type_list=ShowNotConfirmed',
|
|
],
|
|
[
|
|
'name' => 'productsRelatedTypes',
|
|
'left' => 's=menu.php&type=productsRelatedTypes', 'right' => 's=list.php&type=productsRelatedTypes',
|
|
],
|
|
],
|
|
],
|
|
[
|
|
'name' => 'ordersMenu',
|
|
'left' => 's=menu.php&type=orders', 'right' => 's=list.php&type=orders',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'orders',
|
|
'left' => 's=menu.php&type=orders', 'right' => 's=list.php&type=orders',
|
|
],
|
|
[
|
|
'name' => 'users',
|
|
'left' => 's=menu.php&type=users', 'right' => 's=list.php&type=users',
|
|
],
|
|
[
|
|
'name' => 'usersGroups',
|
|
'left' => 's=menu.php&type=usersGroups', 'right' => 's=list.php&type=usersGroups',
|
|
],
|
|
|
|
[
|
|
'name' => 'ordersMassProcess',
|
|
'left' => 's=menu.php&type=ordersMassProcess', 'right' => 's=list.php&type=ordersMassProcess',
|
|
],
|
|
|
|
[
|
|
'name' => 'old_pos',
|
|
'script' => "nw('old_pos')",
|
|
],
|
|
|
|
[
|
|
'name' => 'orderPayment',
|
|
'left' => 's=menu.php&type=orderPayment', 'right' => null,
|
|
],
|
|
],
|
|
],
|
|
[
|
|
'name' => 'stockMenu',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'stockIn',
|
|
'left' => 's=menu.php&type=stockIn', 'right' => 's=list.php&type=stockIn',
|
|
],
|
|
[
|
|
'name' => 'suppliers',
|
|
'left' => 's=menu.php&type=suppliers', 'right' => 's=list.php&type=suppliers',
|
|
],
|
|
[
|
|
'name' => 'stockInMissing',
|
|
'left' => 's=menu.php&type=stockInMissing', 'right' => 's=list.php&type=stockInMissing&fromNav=1',
|
|
],
|
|
[
|
|
'name' => 'productsOfSuppliers',
|
|
'left' => 's=menu.php&type=productsOfSuppliers', 'right' => 's=list.php&type=productsOfSuppliers',
|
|
],
|
|
[
|
|
'name' => 'ordersOfSuppliers',
|
|
'left' => 's=menu.php&type=ordersOfSuppliers', 'right' => 's=list.php&type=ordersOfSuppliers',
|
|
],
|
|
|
|
[
|
|
'name' => 'inventory',
|
|
'left' => 's=menu.php&type=inventory', 'right' => 's=list.php&type=inventory',
|
|
],
|
|
|
|
[
|
|
'name' => 'productsPrices',
|
|
'left' => 's=menu.php&type=productsPrices', 'right' => 's=list.php&type=productsPrices',
|
|
],
|
|
],
|
|
],
|
|
[
|
|
'name' => 'contentMenu',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'menu',
|
|
'left' => 's=menu.php&type=menu', 'right' => 's=list.php&type=menu',
|
|
],
|
|
[
|
|
'name' => 'sliders',
|
|
'left' => 's=menu.php&type=sliders', 'right' => 's=list.php&type=sliders',
|
|
],
|
|
[
|
|
'name' => 'articlesMenu',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'articles',
|
|
'left' => 's=menu.php&type=articles', 'right' => 's=list.php&type=articles',
|
|
],
|
|
[
|
|
'name' => 'artsections',
|
|
'left' => 's=menu.php&type=artsections', 'right' => 's=list.php&type=artsections',
|
|
],
|
|
[
|
|
'name' => 'artauthors',
|
|
'left' => 's=menu.php&type=artauthors', 'right' => 's=list.php&type=artauthors',
|
|
],
|
|
[
|
|
'name' => 'articlesTags',
|
|
'left' => 's=menu.php&type=articlesTags', 'right' => 's=list.php&type=articlesTags',
|
|
],
|
|
],
|
|
],
|
|
[
|
|
'name' => 'sellers',
|
|
'left' => 's=menu.php&type=sellers', 'right' => 's=list.php&type=sellers',
|
|
],
|
|
[
|
|
'name' => 'photos',
|
|
'left' => 's=menu.php&type=photos', 'right' => 's=list.php&type=photos',
|
|
],
|
|
[
|
|
'name' => 'fileBrowser',
|
|
'script' => 'nw(\'kcfinder\', \'all\')',
|
|
],
|
|
/*[
|
|
'name' => 'fileBrowser',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'browseImages',
|
|
'script' => 'nw(\'kcfinder\')',
|
|
],
|
|
[
|
|
'name' => 'browseFiles',
|
|
'script' => 'nw(\'kcfinder\', \'other\')',
|
|
],
|
|
],
|
|
],*/
|
|
],
|
|
],
|
|
[
|
|
'name' => 'toolsMenu',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'dbbackup',
|
|
'left' => 's=menu.php&type=dbbackup', 'right' => 's=list.php&type=dbbackup',
|
|
],
|
|
|
|
[
|
|
'name' => 'stats',
|
|
'left' => 'blank', 'right' => 's=board.php&type=stats',
|
|
],
|
|
[
|
|
'name' => 'export',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'export_products',
|
|
'left' => 's=menu.php&type=export', 'right' => 's=board.php&type=export_products',
|
|
],
|
|
[
|
|
'name' => 'export_selling_products',
|
|
'left' => 's=menu.php&type=export', 'right' => 's=board.php&type=export_selling_products',
|
|
],
|
|
[
|
|
'name' => 'export_orders',
|
|
'left' => 's=menu.php&type=export', 'right' => 's=board.php&type=export_orders',
|
|
],
|
|
[
|
|
'name' => 'export_users',
|
|
'left' => 's=menu.php&type=export', 'right' => 's=board.php&type=export_users',
|
|
],
|
|
],
|
|
],
|
|
[
|
|
'name' => 'import',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'import-generic',
|
|
'right' => 's=import.generic.php',
|
|
],
|
|
[
|
|
'name' => 'import_automatic',
|
|
'left' => 's=menu.php&type=automatic_import', 'right' => 's=list.php&type=automatic_import',
|
|
],
|
|
[
|
|
'name' => 'import-xml_feed',
|
|
'script' => "nw('import.xml_feed')",
|
|
],
|
|
[
|
|
'name' => 'import-xml_feed_new',
|
|
'script' => "nw('import.xml_feed_new')",
|
|
],
|
|
],
|
|
],
|
|
[
|
|
'name' => 'cleaning',
|
|
'script' => "nw('cleaning')",
|
|
],
|
|
],
|
|
],
|
|
[
|
|
'name' => 'settingsMenu',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'admins',
|
|
'left' => 's=menu.php&type=admins', 'right' => 's=list.php&type=admins',
|
|
],
|
|
[
|
|
'name' => 'settings',
|
|
'script' => "nw('settings')",
|
|
],
|
|
[
|
|
'name' => 'emails',
|
|
'script' => "nw('emails')",
|
|
],
|
|
[
|
|
'name' => 'delivery',
|
|
'submenu' => [
|
|
[
|
|
'name' => 'delivery_type',
|
|
'left' => 's=menu.php&type=delivery', 'right' => 's=list.php&type=delivery',
|
|
],
|
|
[
|
|
'name' => 'deliveryDelivery',
|
|
'left' => 's=menu.php&type=deliveryDelivery', 'right' => 's=list.php&type=deliveryDelivery',
|
|
],
|
|
[
|
|
'name' => 'deliveryPayment',
|
|
'left' => 's=menu.php&type=deliveryPayment', 'right' => 's=list.php&type=deliveryPayment',
|
|
],
|
|
],
|
|
],
|
|
[
|
|
'name' => 'vats',
|
|
'left' => 's=menu.php&type=vats', 'right' => 's=list.php&type=vats',
|
|
],
|
|
[
|
|
'name' => 'priceLevels',
|
|
'left' => 's=menu.php&type=pricelevels', 'right' => 's=list.php&type=pricelevels',
|
|
],
|
|
[
|
|
'name' => 'fulltext',
|
|
'script' => "nw('fulltext')",
|
|
],
|
|
],
|
|
],
|
|
];
|
|
|
|
public function getMenu(): array
|
|
{
|
|
$userRights = new UserRights();
|
|
/** @var \Symfony\Component\EventDispatcher\EventDispatcher $dispatcher */
|
|
$dispatcher = ServiceContainer::getService('event_dispatcher');
|
|
$event = new \KupShop\KupShopBundle\Event\CreateMenuEvent($this, $userRights);
|
|
$dispatcher->dispatch($event, \KupShop\KupShopBundle\Event\CreateMenuEvent::COMPLETING_TREE);
|
|
$adminRegisterLocator = ServiceContainer::getService(AdminRegisterLocator::class);
|
|
foreach ($adminRegisterLocator->getMenu() as $menu => $items) {
|
|
foreach ($items as $item) {
|
|
$this->addItem($menu, $item);
|
|
}
|
|
}
|
|
$this->sortMenu($this->menu);
|
|
|
|
return $this->menu;
|
|
}
|
|
|
|
private function sortMenu(&$menu)
|
|
{
|
|
foreach ($menu as $pos => &$item) {
|
|
if (is_array($item) && array_key_exists('submenu', $item)) {
|
|
$this->sortMenu($item['submenu']);
|
|
}
|
|
|
|
if (is_array($item) && array_key_exists('position', $item)) {
|
|
$menuItem = [$menu[$pos]];
|
|
unset($menu[$pos]);
|
|
array_splice($menu, $item['position'], 0, $menuItem);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function addItem($menuName, $item, &$menu = null, $index = 0)
|
|
{
|
|
if (!$menu) {
|
|
$menu = &$this->menu;
|
|
}
|
|
// / new
|
|
$menuNames = $this->getMenuNames($menuName);
|
|
$maxIndex = count($menuNames) - 1;
|
|
foreach ($menu as &$menuItem) {
|
|
if ($menuItem['name'] == $menuNames[$index]) {
|
|
if ($index == $maxIndex) {
|
|
$menuItem['submenu'][] = $item;
|
|
|
|
return true;
|
|
} else {
|
|
$result = $this->addItem($menuName, $item, $menuItem['submenu'], ++$index);
|
|
if ($result) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// create root menu item if $menuItem was not found
|
|
$menu[] = $item;
|
|
|
|
return false;
|
|
}
|
|
|
|
public function getMenuNames($menuName)
|
|
{
|
|
$names = explode('/', $menuName);
|
|
|
|
return $names;
|
|
}
|
|
|
|
public function setMenu(array $menu)
|
|
{
|
|
$this->menu = $menu;
|
|
}
|
|
}
|