NAME
Paginator::Lite - A simple paginator
VERSION
2.1.0
SYNOPSIS
A simple tool to automate the creation of paging links
use Paginator::Lite;
my $paginator = Paginator::Lite->new({
curr => 3,
items => 65,
frame_size => 5,
page_size => 10,
base_url => '/foo/items',
mode => 'query',
params => {
bar => 123
},
});
...
$paginator->first # 1
$paginator->last # 7
$paginator->begin # 1
$paginator->end # 5
$paginator->next # 4
$paginator->prev # 2
$paginator->base_url # '/foo/items'
$paginator->first_url # '/foo/items?bar=123&page=1'
$paginator->prev_url # '/foo/items?bar=123&page=2'
$paginator->curr_url # '/foo/items?bar=123&page=3'
$paginator->next_url # '/foo/items?bar=123&page=4'
$paginator->last_url # '/foo/items?bar=123&page=7'
DESCRIPTION
When handle with huge amounts of data sometimes you want to display
only a portion of it and provide controls to naviagte through it.
The classic way is to provide links or buttons to next, previous and
some pages around the current page, like this:
(prev) 1 2 [3] 4 5 (next)
But when the number of pages grow up too much this approach may be
annoying:
(prev) 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 16 18 19 20 21 (next)
So Paginator::Lite helps you calculating the numbers to feed your view
loops and implements the concept of frame. A frame is a small portion
of pages around the current page that will be displayed in addition to
(prev), (next) and other permanent buttons:
(prev) 10 11 12 [13] 14 15 16 (next)
\ /
----- frame ----
7 of 21 pages
METHODS
new
Creates a Paginator::Lite object.
You must provide all required arguments: base_url, curr, frame_size,
items and page_size.
params is a optional argument that may be used to pass arbitrary data.
See more details about them in documentation of their respective
accessors.
base_url
Returns the value of base_url. It is the same value that you must
supply to constructor. This value will be used by the template to build
the links to direct pages.
curr
Returns the value of current page. It is the same value that you must
supply to constructor.
frame_size
Returns the value of frame_size. It is the same value that you must
supply to constructor. It is also the number of pages visible around
current page.
Usually frame_size may be calculated by:
my $frame_size = $pag->end - $pag->begin + 1
However when current page is too close to first or last, the frame may
be deformed but still trying to center in the current page.
page_size
Returns the value of page_size. It is the same value that you must
supply to constructor and means the number of items that you want
display in a single page.
items
Returns the value of items. It is the same value the you must provide
to constructor and means the total number of items that you are
paginating.
first
Returns the value of the first page, usually 1.
last
Returns the value of the last page. This value is calculated by
dividing the total amount of items by the number of items per page and
then rounding up the result.
$self->{last} = ceil( $self->items / $self->page_size );
begin
Returns the value of the first page of current frame. Usually you will
iterate between begin and end in your view to create direct links to
those pages.
end
Returns the value of the last page of current frame.
prev
Returns the value of previous page. Usually this value is curr - 1,
except when current page is 1.
next
Returns the value of next page. Usually this value is curr + 1, except
when current page is last.
params
Returns arbitrary data passed to contructor by params argument.
mode
Returns the chosen mode (path or query) of resulting URLs.
first_url
Returns the URL of the first page.
prev_url
Returns the URL of the previous page.
curr_url
Returns the URL of the current page.
next_url
Returns the URL of the next page.
last_url
Returns the URL of the last page.
page_url( $page )
Returns the URL of given page.
BUILD
Private. It casts the magic when building the object.
AUTHOR
Blabos de Blebe, <blabos at cpan.org>
BUGS
Please report any bugs or feature requests to bug-paginator-lite at
rt.cpan.org, or through the web interface at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Paginator-Lite. I will
be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Paginator::Lite
You can also look for information at:
* RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Paginator-Lite
* AnnoCPAN: Annotated CPAN documentation
http://annocpan.org/dist/Paginator-Lite
* CPAN Ratings
http://cpanratings.perl.org/d/Paginator-Lite
* Search CPAN
http://search.cpan.org/dist/Paginator-Lite/
COPYRIGHT & LICENSE
Copyright 2012 Blabos de Blebe.
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.