]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Apache/MVC/Model/CDBI.pm
And now we have paging support. (And some better docs)
[maypole.git] / lib / Apache / MVC / Model / CDBI.pm
index d842d5f16730788f52efb256d88bbbf83057fa63..854118e1559f2007fda5983a31a41b2708a604ae 100644 (file)
@@ -4,9 +4,23 @@ use Lingua::EN::Inflect::Number qw(to_PL);
 use Class::DBI::AsForm;
 use Class::DBI::FromCGI;
 use Class::DBI::AbstractSearch;
+use Class::DBI::Pager;
 use CGI::Untaint;
 use strict;
 
+=head1 NAME
+
+Apache::MVC::Model::CDBI - Model class based on Class::DBI
+
+=head1 DESCRIPTION
+
+This is a master model class which uses C<Class::DBI> to do all the hard
+work of fetching rows and representing them as objects. It is a good
+model to copy if you're replacing it with other database abstraction
+modules.
+
+=cut
+
 sub related {
     my ($self, $r) = @_;
     # Has-many methods; XXX this is a hack
@@ -67,15 +81,13 @@ sub search :Exported {
     $r->{template_args}{search} = 1;
 }
 
+sub list :Exported {
+    my ($self, $r) = @_;
+    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 ]);
+}
 1;
 
-=head1 NAME
-
-Apache::MVC::Model::CDBI - Model class based on Class::DBI
-
-=head1 DESCRIPTION
-
-This is a master model class which uses C<Class::DBI> to do all the hard
-work of fetching rows and representing them as objects; instead, it
-concentrates on the actions that can be performed in the URL:
-C<do_edit>, C<delete> and C<search>.