Sort directories before files in source views. Thanks to William Martin!

(closes issue 573)
This commit is contained in:
Thomas Keller 2011-01-03 15:10:42 +01:00
parent 777937b70c
commit d4929622bf

View File

@ -154,6 +154,7 @@ class IDF_Views_Source
}
$scmConf = $request->conf->getVal('scm', 'git');
$props = $scm->getProperties($commit);
$res->uasort(array('IDF_Views_Source', 'treeSort'));
return Pluf_Shortcuts_RenderToResponse('idf/source/'.$scmConf.'/tree.html',
array(
'page_title' => $title,
@ -246,6 +247,7 @@ class IDF_Views_Source
$previous = substr($request_file, 0, -strlen($l.' '));
$scmConf = $request->conf->getVal('scm', 'git');
$props = $scm->getProperties($commit, $request_file);
$res->uasort(array('IDF_Views_Source', 'treeSort'));
return Pluf_Shortcuts_RenderToResponse('idf/source/'.$scmConf.'/tree.html',
array(
'page_title' => $page_title,
@ -455,6 +457,28 @@ class IDF_Views_Source
$scm->getFile($file_info));
}
/**
* Callback function to sort tree entries
*/
public static function treeSort($a, $b)
{
// compare two nodes of the same type
if ($a->type === $b->type) {
if (mb_convert_case($a->file, MB_CASE_LOWER) <
mb_convert_case ($b->file, MB_CASE_LOWER)) {
return -1;
}
return 1;
}
// compare two nodes of different types, directories ("tree")
// should come before files ("blob")
if ($a->type > $b->type) {
return -1;
}
return 1;
}
/**
* Get the scm type for page title
*