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

(closes issue 573)
master
Thomas Keller 2011-01-03 15:10:42 +01:00
parent 777937b70c
commit d4929622bf
1 changed files with 24 additions and 0 deletions

View File

@ -154,6 +154,7 @@ class IDF_Views_Source
} }
$scmConf = $request->conf->getVal('scm', 'git'); $scmConf = $request->conf->getVal('scm', 'git');
$props = $scm->getProperties($commit); $props = $scm->getProperties($commit);
$res->uasort(array('IDF_Views_Source', 'treeSort'));
return Pluf_Shortcuts_RenderToResponse('idf/source/'.$scmConf.'/tree.html', return Pluf_Shortcuts_RenderToResponse('idf/source/'.$scmConf.'/tree.html',
array( array(
'page_title' => $title, 'page_title' => $title,
@ -246,6 +247,7 @@ class IDF_Views_Source
$previous = substr($request_file, 0, -strlen($l.' ')); $previous = substr($request_file, 0, -strlen($l.' '));
$scmConf = $request->conf->getVal('scm', 'git'); $scmConf = $request->conf->getVal('scm', 'git');
$props = $scm->getProperties($commit, $request_file); $props = $scm->getProperties($commit, $request_file);
$res->uasort(array('IDF_Views_Source', 'treeSort'));
return Pluf_Shortcuts_RenderToResponse('idf/source/'.$scmConf.'/tree.html', return Pluf_Shortcuts_RenderToResponse('idf/source/'.$scmConf.'/tree.html',
array( array(
'page_title' => $page_title, 'page_title' => $page_title,
@ -455,6 +457,28 @@ class IDF_Views_Source
$scm->getFile($file_info)); $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 * Get the scm type for page title
* *