Move navigation processing to the NavigationManager

Signed-off-by: Julius Härtl <jus@bitgrid.net>
pull/8095/head
Julius Härtl 8 years ago
parent 4bd14ef308
commit 864474b858
No known key found for this signature in database
GPG Key ID: 4C614C6ED2CDE6DF
  1. 42
      lib/private/NavigationManager.php
  2. 31
      lib/private/legacy/app.php

@ -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…
Cancel
Save