Hide Settings menu when no sub pages to display (#3172)

Remove the Settings main menu item if there are no submenus to display. Fixes https://github.com/octobercms/october/issues/2175
This commit is contained in:
Luke Towers 2017-10-18 11:22:33 -06:00 committed by GitHub
parent ac2e5937f0
commit aee81081df
2 changed files with 21 additions and 5 deletions

View File

@ -313,14 +313,18 @@ class NavigationManager
* Returns a list of side menu items for the currently active main menu item.
* The currently active main menu item is set with the setContext methods.
*/
public function listSideMenuItems()
public function listSideMenuItems($owner = null, $code = null)
{
$activeItem = null;
foreach ($this->listMainMenuItems() as $item) {
if ($this->isMainMenuItemActive($item)) {
$activeItem = $item;
break;
if (!is_null($owner) && !is_null($code)) {
$activeItem = @$this->items[$this->makeItemKey($owner, $code)];
} else {
foreach ($this->listMainMenuItems() as $item) {
if ($this->isMainMenuItemActive($item)) {
$activeItem = $item;
break;
}
}
}

View File

@ -354,6 +354,18 @@ class ServiceProvider extends ModuleServiceProvider
'system',
'~/modules/system/partials/_system_sidebar.htm'
);
/*
* Remove the October.System.system main menu item if there is no subpages to display
*/
Event::listen('backend.menu.extendItems', function ($manager) {
$systemSettingItems = SettingsManager::instance()->listItems('system');
$systemMenuItems = $manager->listSideMenuItems('October.System', 'system');
if (empty($systemSettingItems) && empty($systemMenuItems)) {
$manager->removeMainMenuItem('October.System', 'system');
}
}, -9999);
}
/*