Merge pull request #5320 from owncloud/fix_app_sorting

Fix app sorting
This commit is contained in:
Vincent Petry 2013-10-14 02:29:27 -07:00
commit de920736c5
2 changed files with 33 additions and 17 deletions

View File

@ -752,9 +752,42 @@ class OC_App{
} else { } else {
$combinedApps = $appList; $combinedApps = $appList;
} }
// bring the apps into the right order with a custom sort funtion
usort( $combinedApps, '\OC_App::customSort' );
return $combinedApps; return $combinedApps;
} }
/**
* @brief: Internal custom sort funtion to bring the app into the right order. Should only be called by listAllApps
* @return array
*/
private static function customSort($a, $b) {
// prio 1: active
if ($a['active'] != $b['active']) {
return $b['active'] - $a['active'];
}
// prio 2: shipped
if ($a['shipped'] != $b['shipped']) {
$atemp = ($a['shipped'] == true ? 1 : 0);
$btemp = ($b['shipped'] == true ? 1 : 0);
return ($btemp - $atemp);
}
// prio 3: recommended
if ($a['internalclass'] != $b['internalclass']) {
$atemp = ($a['internalclass'] == 'recommendedapp' ? 1 : 0);
$btemp = ($b['internalclass'] == 'recommendedapp' ? 1 : 0);
return ($btemp - $atemp);
}
// prio 4: alphabetical
return strcasecmp($a['name'], $b['name']);
}
/** /**
* @brief: get a list of all apps on apps.owncloud.com * @brief: get a list of all apps on apps.owncloud.com
* @return array, multi-dimensional array of apps. * @return array, multi-dimensional array of apps.

View File

@ -28,24 +28,7 @@ OC_App::loadApps();
OC_Util::addStyle( "settings", "settings" ); OC_Util::addStyle( "settings", "settings" );
OC_App::setActiveNavigationEntry( "core_apps" ); OC_App::setActiveNavigationEntry( "core_apps" );
function app_sort( $a, $b ) {
if ($a['active'] !== $b['active']) {
return $b['active'] - $a['active'];
}
if ($a['internal'] !== $b['internal']) {
return $b['internal'] - $a['internal'];
}
return strcmp($a['name'], $b['name']);
}
$combinedApps = OC_App::listAllApps(); $combinedApps = OC_App::listAllApps();
usort( $combinedApps, 'app_sort' );
$tmpl = new OC_Template( "settings", "apps", "user" ); $tmpl = new OC_Template( "settings", "apps", "user" );