]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Apache/MVC/Model/CDBI.pm
This gives us row ordering by column.
[maypole.git] / lib / Apache / MVC / Model / CDBI.pm
index 854118e1559f2007fda5983a31a41b2708a604ae..2d2aa2b123a35c9d19ffe944eaa2acc949eff64b 100644 (file)
@@ -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;