Merge pull request #1033 from solgenomics/topic/add_musabase_logo
[sgn.git] / mason / page / pagination_control.mas
blob53d00638f9eed8310968369167b14bfd3232999b
1 <%doc>
2 =head1 NAME
4   pagination_control.mas - make an HTML pagination control using a L<Data::Page>
6 =head1 ARGS
8 =head2 link_maker
10 subroutine ref that takes one argument, the page number, and returns a
11 link URL
13 =head2 pager
15 L<Data::Page>-compliant pager.  For example, this might come from a
16 L<DBIx::Class::ResultSet> via C<$rs->pager>.
18 =cut
20 </%doc>
22 <%args>
23   $link_maker
24   $pager
25 </%args>
27 % if( $pager->previous_page || $pager->next_page ) {
28    <div class="paginate_nav">
29 %    if( $pager->previous_page ) {
30         <a class="paginate_nav" href="<% $link_maker->($pager->previous_page) %>">&lt;</a>
31 %    }
32 %    for my $page ( $pagelink_first .. $pagelink_last ) {
33 %       if( $pager->current_page == $page ) {
34             <span class="paginate_nav_currpage paginate_nav"><% $page %></span>
35 %       } else {
36             <a class="paginate_nav" href="<% $link_maker->($page) %>"><% $page %></a>
37 %       }
38 %    }
39 %    if( $pager->next_page ) {
40         <a class="paginate_nav" href="<% $link_maker->($pager->next_page) %>">&gt;</a>
41 %    }
42    </div>
43 % }
45 <%init>
46   my $pagelink_first = $pager->current_page - 6;
47   $pagelink_first = $pager->first_page if $pagelink_first < $pager->first_page;
48   my $pagelink_last = $pager->current_page + 5;
49   $pagelink_last = $pager->last_page if $pagelink_last > $pager->last_page;
50 </%init>