]> git.decadent.org.uk Git - maypole.git/blob - templates/factory/pager
419d1019efdb7852027fe86b50d607a8b0e213d0
[maypole.git] / templates / factory / pager
1 [%#
2
3 =head1 pager
4
5 This controls the pager display at the bottom (by default) of the list
6 and search views. It expects a C<pager> template argument which responds
7 to the L<Data::Page> interface.
8
9 #%]
10 [%
11 IF pager AND pager.first_page != pager.last_page;
12 %]
13 <p class="pager">Pages: 
14 [%
15     SET begin_page = pager.current_page - 10;
16     IF begin_page < 1;
17         SET begin_page = pager.first_page;
18     END;
19     SET end_page = pager.current_page + 10;
20     IF pager.last_page < end_page;
21         SET end_page = pager.last_page;
22     END;
23      FOREACH num = [begin_page .. end_page];
24           IF num == pager.current_page;
25             "["; num; "] ";
26           ELSE;
27             SET label = "[" _ num _ "]";
28             SET args = "?page=" _ num;
29             SET action = "list";
30             FOR col = classmetadata.columns.list;
31               IF request.query.$col;
32                 SET args = args _ "&" _ col _ "=" _ request.query.$col;
33                 SET action = "search";
34               END;
35             END;
36             link(classmetadata.table, action, args, label);
37           END;
38      END;
39 %]
40 </p>
41 [% END %]