X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FApache%2FMVC%2FModel%2FCDBI.pm;h=2d2aa2b123a35c9d19ffe944eaa2acc949eff64b;hb=7232f39368bec26e484089f9f81ab6b6dc94e9eb;hp=854118e1559f2007fda5983a31a41b2708a604ae;hpb=5cccc5a89004f9c514e9d611b5e2a02e9aa28ece;p=maypole.git diff --git a/lib/Apache/MVC/Model/CDBI.pm b/lib/Apache/MVC/Model/CDBI.pm index 854118e..2d2aa2b 100644 --- a/lib/Apache/MVC/Model/CDBI.pm +++ b/lib/Apache/MVC/Model/CDBI.pm @@ -4,6 +4,7 @@ use Lingua::EN::Inflect::Number qw(to_PL); use Class::DBI::AsForm; use Class::DBI::FromCGI; use Class::DBI::AbstractSearch; +use Class::DBI::Plugin::RetrieveAll; use Class::DBI::Pager; use CGI::Untaint; use strict; @@ -83,11 +84,19 @@ sub search :Exported { sub list :Exported { my ($self, $r) = @_; + my %ok_columns = map {$_ => 1} $self->columns; if ( my $rows = $r->config->{rows_per_page}) { $self = $self->pager($rows, $r->query->{page}); $r->{template_args}{pager} = $self; } - $r->objects([ $self->retrieve_all ]); + my $order; + if ($order = $r->query->{order} and $ok_columns{$order}) { + $r->objects([ $self->retrieve_all_sorted_by( $order. + ($r->query->{o2} eq "desc" && " DESC") + )]); + } else { + $r->objects([ $self->retrieve_all ]); + } } 1;