<%doc>

=head1 pager

This controls the pager display at the bottom (by default) of the list
and search views. It expects a C<pager> template argument which responds
to the L<Data::Page> interface.

</%doc>

<p class="pager">Pages:
% foreach my $page ( $begin_page .. $end_page ) {
% if ( $page == $pager->current_page ) {
<span class="current-page"><% $page %></span>
% } else {
<& .page_link, page => $page &>
% }
% }
</p>

% # --------------------------------------------------------------------------
<%init>
    our $pager;
    return unless $pager; #  and ( $pager->first_page != $pager->last_page );

    my $begin_page = $pager->current_page - 10;
    $begin_page = $pager->first_page if $begin_page < 1;

    my $end_page = $pager->current_page + 10;
    $end_page = $pager->last_page if $pager->last_page < $end_page;
</%init>

% # --------------------------------------------------------------------------
<%def .page_link>
<%args>
    $page
</%args>            
<% $request->link( table      => $request->model_class->table,
                   action     => $request->action,
                   additional => $args,
                   label      => $page,
                   ) %>
<%init>    
    my $args = "?page=$page";
    
    my %params = %{ $request->params };
    
    delete $params{page};
    
    %params = () if ( $request->action ne 'list' && $request->action ne 'do_search' );
    
    my $uri = URI->new;
    
    $uri->query_form( %params );
    
    $args .= "&".$uri->equery if $uri->equery;
</%init>
</%def>
