More on rows-per-page...
Added helpers and updated MyModel with a view to making rows-per-page a user preference.
This commit is contained in:
parent
74ae6e1745
commit
6ea53c5657
15
lib/MyApp.pm
15
lib/MyApp.pm
|
@ -10,6 +10,19 @@ sub add_my_helpers ($self) {
|
|||
return scalar reverse $rev;
|
||||
}
|
||||
);
|
||||
$self->helper(
|
||||
default_rpp => sub ($self) {
|
||||
return $self->config->{'default-rows-per-page'};
|
||||
}
|
||||
);
|
||||
$self->helper(
|
||||
logname => sub ($self) { $self->session('logname'); }
|
||||
);
|
||||
$self->helper(
|
||||
rpp => sub ($self) {
|
||||
$self->session('rows_per_page') // $self->default_rpp;
|
||||
}
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -39,7 +52,7 @@ sub startup ($self) {
|
|||
# Put a route under athentication.
|
||||
my $auth = $r->under(
|
||||
'/' => sub ($c) {
|
||||
return 1 if ($c->session('logname'));
|
||||
return 1 if ($c->logname);
|
||||
$c->flash('naughty' => 1);
|
||||
$c->session('post_login' => $c->current_route);
|
||||
$c->redirect_to('auth');
|
||||
|
|
|
@ -5,8 +5,11 @@ use MyModel::Author;
|
|||
|
||||
sub books ($self) {
|
||||
my $page_number = $self->param('page_number') // 1;
|
||||
my $book_model = MyModel::Book->new;
|
||||
my $book_page = $book_model->get_page($page_number, $self->param('title_like'));
|
||||
my $book_model = MyModel::Book->new(rows_per_page => $self->rpp);
|
||||
my $book_page = $book_model->get_page(
|
||||
$page_number,
|
||||
$self->param('title_like'),
|
||||
);
|
||||
$self->render(
|
||||
book_page => $book_page,
|
||||
pager => $book_page->pager,
|
||||
|
@ -15,7 +18,7 @@ sub books ($self) {
|
|||
|
||||
sub authors ($self) {
|
||||
my $page_number = $self->param('page_number') // 1;
|
||||
my $author_model = MyModel::Author->new;
|
||||
my $author_model = MyModel::Author->new(rows_per_page => $self->rpp);;
|
||||
my $author_page = $author_model->get_page(
|
||||
$page_number,
|
||||
$self->param('name_like'),
|
||||
|
|
|
@ -1,10 +1,24 @@
|
|||
package MyModel;
|
||||
use feature qw( signatures );
|
||||
use Moose;
|
||||
use Moose::Util::TypeConstraints;
|
||||
use Mojo::Log;
|
||||
use Book::Schema;
|
||||
use List::Util qw( max min );
|
||||
no warnings qw( experimental::signatures );
|
||||
|
||||
# Keep rows-per-page within a sane range.
|
||||
subtype 'RowsPerPage',
|
||||
as 'Int',
|
||||
where { 5 <= $_ && $_ <= 100 };
|
||||
|
||||
has 'rows_per_page' => (
|
||||
is => 'rw',
|
||||
isa => 'RowsPerPage',
|
||||
required => 1,
|
||||
default => 20,
|
||||
);
|
||||
|
||||
our $logger = Mojo::Log->new;
|
||||
|
||||
# Share this among all model instances.
|
||||
|
|
|
@ -18,7 +18,7 @@ sub get_page ($self, $page_number = 1, $title_like = undef) {
|
|||
{ prefetch => [ "author" ],
|
||||
order_by => [ "me.title " ],
|
||||
page => $page_number,
|
||||
rows => 10,
|
||||
rows => $self->rows_per_page,
|
||||
},
|
||||
);
|
||||
return $rs;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
secrets:
|
||||
- 197b9b0060f3285c0909d83598e54f9ec0602151
|
||||
default-rows-per-page: 10
|
||||
|
|
|
@ -10,7 +10,7 @@ $t->get_ok('/about')->status_is(200)->content_like(qr/about/i);
|
|||
$t->get_ok('/account')->status_is(302);
|
||||
$t->get_ok('/auth')->status_is(200)->content_like(qr/login/i);
|
||||
$t->post_ok('/login' => form => { logname => 'Dobby' });
|
||||
$t->get_ok('/')->status_is(200)->content_like(qr/dobby/i);
|
||||
$t->get_ok('/account')->status_is(200)->content_like(qr/dobby/i);
|
||||
$t->get_ok('/books/1')->status_is(200)->content_like(qr/[[:digit:]] books found/i);
|
||||
$t->get_ok('/authors/1')->status_is(200)->content_like(qr/[[:digit:]] authors found/i);
|
||||
$t->get_ok('/logout')->status_is(302);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
% layout 'default';
|
||||
% title 'Account';
|
||||
<h1><%= session 'logname' %>'s account on MyApp</h1>
|
||||
<h1><%= logname %>'s account on MyApp</h1>
|
||||
|
||||
Account details here.
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
<% } %>
|
||||
</div>
|
||||
<div>
|
||||
<% if (session('logname')) { %>
|
||||
You are logged in as <%= session 'logname' %>.
|
||||
<% if (logname) { %>
|
||||
You are logged in as <%= logname %>.
|
||||
<%= link_to("Logout" => 'logout') %>
|
||||
<% } elsif (current_route ne 'auth') { %>
|
||||
<%= link_to("Login" => 'auth') %>
|
||||
|
|
Loading…
Reference in New Issue