Skip to content

Commit 2601298

Browse files
committed
Merge branch 'md/gitweb-sort-by-age' into maint
* md/gitweb-sort-by-age: gitweb: Sort projects with undefined ages last
2 parents c12a978 + 28dae18 commit 2601298

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

gitweb/gitweb.perl

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5528,23 +5528,30 @@ sub fill_project_list_info {
55285528

55295529
sub sort_projects_list {
55305530
my ($projlist, $order) = @_;
5531-
my @projects;
55325531

5533-
my %order_info = (
5534-
project => { key => 'path', type => 'str' },
5535-
descr => { key => 'descr_long', type => 'str' },
5536-
owner => { key => 'owner', type => 'str' },
5537-
age => { key => 'age', type => 'num' }
5538-
);
5539-
my $oi = $order_info{$order};
5540-
return @$projlist unless defined $oi;
5541-
if ($oi->{'type'} eq 'str') {
5542-
@projects = sort {$a->{$oi->{'key'}} cmp $b->{$oi->{'key'}}} @$projlist;
5543-
} else {
5544-
@projects = sort {$a->{$oi->{'key'}} <=> $b->{$oi->{'key'}}} @$projlist;
5532+
sub order_str {
5533+
my $key = shift;
5534+
return sub { $a->{$key} cmp $b->{$key} };
55455535
}
55465536

5547-
return @projects;
5537+
sub order_num_then_undef {
5538+
my $key = shift;
5539+
return sub {
5540+
defined $a->{$key} ?
5541+
(defined $b->{$key} ? $a->{$key} <=> $b->{$key} : -1) :
5542+
(defined $b->{$key} ? 1 : 0)
5543+
};
5544+
}
5545+
5546+
my %orderings = (
5547+
project => order_str('path'),
5548+
descr => order_str('descr_long'),
5549+
owner => order_str('owner'),
5550+
age => order_num_then_undef('age'),
5551+
);
5552+
5553+
my $ordering = $orderings{$order};
5554+
return defined $ordering ? sort $ordering @$projlist : @$projlist;
55485555
}
55495556

55505557
# returns a hash of categories, containing the list of project

0 commit comments

Comments
 (0)