diff --git a/apps/user_status/appinfo/info.xml b/apps/user_status/appinfo/info.xml index 23f07eb325ae2..b99639c5fb0f1 100644 --- a/apps/user_status/appinfo/info.xml +++ b/apps/user_status/appinfo/info.xml @@ -15,7 +15,6 @@ user_status-menuitem User status - 1 settings diff --git a/lib/private/App/InfoParser.php b/lib/private/App/InfoParser.php index 9d57ef95688d3..7267b58cfbc23 100644 --- a/lib/private/App/InfoParser.php +++ b/lib/private/App/InfoParser.php @@ -225,6 +225,11 @@ public function parse($file) { * @return bool */ private function isNavigationItem($data): bool { + // Allow settings navigation items with no route entry + $type = $data['type'] ?? 'link'; + if ($type === 'settings') { + return isset($data['name']); + } return isset($data['name'], $data['route']); } diff --git a/lib/private/NavigationManager.php b/lib/private/NavigationManager.php index b78d9fa1ed81e..e3d5ac752d804 100644 --- a/lib/private/NavigationManager.php +++ b/lib/private/NavigationManager.php @@ -301,10 +301,12 @@ private function init() { continue; } foreach ($info['navigations']['navigation'] as $key => $nav) { + $nav['type'] = $nav['type'] ?? 'link'; if (!isset($nav['name'])) { continue; } - if (!isset($nav['route'])) { + // Allow settings navigation items with no route entry, all other types require one + if (!isset($nav['route']) && $nav['type'] !== 'settings') { continue; } $role = isset($nav['@attributes']['role']) ? $nav['@attributes']['role'] : 'all'; @@ -314,8 +316,8 @@ private function init() { $l = $this->l10nFac->get($app); $id = $nav['id'] ?? $app . ($key === 0 ? '' : $key); $order = isset($nav['order']) ? $nav['order'] : 100; - $type = isset($nav['type']) ? $nav['type'] : 'link'; - $route = $nav['route'] !== '' ? $this->urlGenerator->linkToRoute($nav['route']) : ''; + $type = $nav['type']; + $route = !empty($nav['route']) ? $this->urlGenerator->linkToRoute($nav['route']) : ''; $icon = isset($nav['icon']) ? $nav['icon'] : 'app.svg'; foreach ([$icon, "$app.svg"] as $i) { try { diff --git a/resources/app-info-shipped.xsd b/resources/app-info-shipped.xsd index 031579ad5a374..c11264142ebfb 100644 --- a/resources/app-info-shipped.xsd +++ b/resources/app-info-shipped.xsd @@ -446,7 +446,7 @@ - + diff --git a/resources/app-info.xsd b/resources/app-info.xsd index 1c7cc5c47e432..191c8ed7c5b0b 100644 --- a/resources/app-info.xsd +++ b/resources/app-info.xsd @@ -442,7 +442,7 @@ - +