Apply incremental default order values on side menu items

Refs #1079
This commit is contained in:
Samuel Georges 2015-05-02 10:47:06 +10:00
parent 7c205c7ceb
commit cceae62812
2 changed files with 22 additions and 25 deletions

View File

@ -47,7 +47,7 @@ class NavigationManager
'url' => null,
'counter' => null,
'counterLabel'=> null,
'order' => 100,
'order' => -1,
'attributes' => [],
'permissions' => []
];
@ -100,7 +100,9 @@ class NavigationManager
/*
* Sort menu items
*/
usort($this->items, 'self::sortMenu');
usort($this->items, function ($a, $b) {
return $a->order - $b->order;
});
/*
* Filter items user lacks permission for
@ -113,28 +115,29 @@ class NavigationManager
continue;
}
usort($item->sideMenu, 'self::sortMenu');
/*
* Apply incremental default orders
*/
$orderCount = 0;
foreach ($item->sideMenu as $sideMenuItem) {
if ($sideMenuItem->order !== -1) continue;
$sideMenuItem->order = ($orderCount += 100);
}
/*
* Sort side menu items
*/
usort($item->sideMenu, function ($a, $b) {
return $a->order - $b->order;
});
/*
* Filter items user lacks permission for
*/
$item->sideMenu = $this->filterItemPermissions($user, $item->sideMenu);
}
}
/**
* Callback method used by usort() to compare menu items.
* Should be referenced with 'self::sortMenu' as the second parameter to usort().
* @param object $a First menu item to compare
* @param object $b Second menu item to compare
* @return integer Returns 1, 0 or -1 depending on order
*/
protected static function sortMenu($a, $b)
{
if ($a->order < $b->order) {
return -1;
}
return (int) $a->order > $b->order;
}
/**
* Registers a callback function that defines menu items.
* The callback function should register menu items by calling the manager's

View File

@ -40,7 +40,6 @@ class ServiceProvider extends ModuleServiceProvider
'label' => 'cms::lang.page.menu_label',
'icon' => 'icon-copy',
'url' => 'javascript:;',
'order' => 100,
'attributes' => ['data-menu-item' => 'pages'],
'permissions' => ['cms.manage_pages'],
'counterLabel' => 'cms::lang.page.unsaved_label'
@ -49,7 +48,6 @@ class ServiceProvider extends ModuleServiceProvider
'label' => 'cms::lang.partial.menu_label',
'icon' => 'icon-tags',
'url' => 'javascript:;',
'order' => 200,
'attributes' => ['data-menu-item' => 'partials'],
'permissions' => ['cms.manage_partials'],
'counterLabel' => 'cms::lang.partial.unsaved_label'
@ -58,7 +56,6 @@ class ServiceProvider extends ModuleServiceProvider
'label' => 'cms::lang.layout.menu_label',
'icon' => 'icon-th-large',
'url' => 'javascript:;',
'order' => 300,
'attributes' => ['data-menu-item' => 'layouts'],
'permissions' => ['cms.manage_layouts'],
'counterLabel' => 'cms::lang.layout.unsaved_label'
@ -67,7 +64,6 @@ class ServiceProvider extends ModuleServiceProvider
'label' => 'cms::lang.content.menu_label',
'icon' => 'icon-file-text-o',
'url' => 'javascript:;',
'order' => 400,
'attributes' => ['data-menu-item' => 'content'],
'permissions' => ['cms.manage_content'],
'counterLabel' => 'cms::lang.content.unsaved_label'
@ -76,7 +72,6 @@ class ServiceProvider extends ModuleServiceProvider
'label' => 'cms::lang.asset.menu_label',
'icon' => 'icon-picture-o',
'url' => 'javascript:;',
'order' => 500,
'attributes' => ['data-menu-item' => 'assets'],
'permissions' => ['cms.manage_assets'],
'counterLabel' => 'cms::lang.asset.unsaved_label'
@ -85,7 +80,6 @@ class ServiceProvider extends ModuleServiceProvider
'label' => 'cms::lang.component.menu_label',
'icon' => 'icon-puzzle-piece',
'url' => 'javascript:;',
'order' => 600,
'attributes' => ['data-menu-item' => 'components'],
'permissions' => ['cms.manage_pages', 'cms.manage_layouts', 'cms.manage_partials']
]