diff --git a/modules/backend/classes/NavigationManager.php b/modules/backend/classes/NavigationManager.php index b95c26e2f..0ea6770f6 100644 --- a/modules/backend/classes/NavigationManager.php +++ b/modules/backend/classes/NavigationManager.php @@ -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; + } } } diff --git a/modules/system/ServiceProvider.php b/modules/system/ServiceProvider.php index 44da0839a..d1e801566 100644 --- a/modules/system/ServiceProvider.php +++ b/modules/system/ServiceProvider.php @@ -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); } /*