The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

pager

This controls the pager display at the bottom (by default) of the list and search views. It expects a pager template argument which responds to the 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>