mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
Move navigation processing to the NavigationManager
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
4bd14ef308
commit
864474b858
2 changed files with 41 additions and 34 deletions
|
|
@ -115,15 +115,49 @@ class NavigationManager implements INavigationManager {
|
|||
}
|
||||
$this->closureEntries = array();
|
||||
|
||||
if ($type === 'all') {
|
||||
return $this->entries;
|
||||
$result = $this->entries;
|
||||
if ($type !== 'all') {
|
||||
$result = array_filter($this->entries, function($entry) use ($type) {
|
||||
return $entry['type'] === $type;
|
||||
});
|
||||
}
|
||||
|
||||
return array_filter($this->entries, function($entry) use ($type) {
|
||||
return $entry['type'] === $type;
|
||||
});
|
||||
return $this->proceedNavigation($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort navigation entries by order, name and set active flag
|
||||
*
|
||||
* @param $list
|
||||
* @return mixed
|
||||
*/
|
||||
private function proceedNavigation($list) {
|
||||
usort($list, function($a, $b) {
|
||||
if (isset($a['order']) && isset($b['order'])) {
|
||||
return ($a['order'] < $b['order']) ? -1 : 1;
|
||||
} else if (isset($a['order']) || isset($b['order'])) {
|
||||
return isset($a['order']) ? -1 : 1;
|
||||
} else {
|
||||
return ($a['name'] < $b['name']) ? -1 : 1;
|
||||
}
|
||||
});
|
||||
|
||||
$activeApp = $this->getActiveEntry();
|
||||
if ($activeApp !== null) {
|
||||
foreach ($list as $index => &$navEntry) {
|
||||
if ($navEntry['id'] == $activeApp) {
|
||||
$navEntry['active'] = true;
|
||||
} else {
|
||||
$navEntry['active'] = false;
|
||||
}
|
||||
}
|
||||
unset($navEntry);
|
||||
}
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* removes all the entries
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -443,31 +443,6 @@ class OC_App {
|
|||
$appManager->disableApp($app);
|
||||
}
|
||||
|
||||
// This is private as well. It simply works, so don't ask for more details
|
||||
private static function proceedNavigation($list) {
|
||||
usort($list, function($a, $b) {
|
||||
if (isset($a['order']) && isset($b['order'])) {
|
||||
return ($a['order'] < $b['order']) ? -1 : 1;
|
||||
} else if (isset($a['order']) || isset($b['order'])) {
|
||||
return isset($a['order']) ? -1 : 1;
|
||||
} else {
|
||||
return ($a['name'] < $b['name']) ? -1 : 1;
|
||||
}
|
||||
});
|
||||
|
||||
$activeApp = OC::$server->getNavigationManager()->getActiveEntry();
|
||||
foreach ($list as $index => &$navEntry) {
|
||||
if ($navEntry['id'] == $activeApp) {
|
||||
$navEntry['active'] = true;
|
||||
} else {
|
||||
$navEntry['active'] = false;
|
||||
}
|
||||
}
|
||||
unset($navEntry);
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the path where to install apps
|
||||
*
|
||||
|
|
@ -618,8 +593,7 @@ class OC_App {
|
|||
* - active: boolean, signals if the user is on this navigation entry
|
||||
*/
|
||||
public static function getNavigation() {
|
||||
$entries = OC::$server->getNavigationManager()->getAll();
|
||||
return self::proceedNavigation($entries);
|
||||
return OC::$server->getNavigationManager()->getAll();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -631,8 +605,7 @@ class OC_App {
|
|||
* entries are sorted by the key 'order' ascending.
|
||||
*/
|
||||
public static function getSettingsNavigation() {
|
||||
$entries = OC::$server->getNavigationManager()->getAll('settings');
|
||||
return self::proceedNavigation($entries);
|
||||
return OC::$server->getNavigationManager()->getAll('settings');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue