[Catalyst] OT: Better TT pager?
Bill Moseley
moseley at hank.org
Tue Dec 23 15:49:55 GMT 2008
On Tue, Dec 23, 2008 at 06:34:06AM -0500, Jesse Sheidlower wrote:
>
> Some time ago, I developed or stole a TT pager that I now use
> in all of my Cat apps. It looks like this, though occasionally
> with minor CSS tweaks:
Well, FWIW, here's my old code. I probably should clean up before
posting and provide some config instead of hard-coded values, but...
[%
# pager.tt
#
# Creates stash entries: (all localized)
# page_nav.summary = "Viewing: 41 - 50 of 200"
# page_nav.previous = "Previous" link if exists
# page_nav.next = "Next" link if exists
# page_nav.pages = list of pages as html
RETURN UNLESS pager.last_page > 1;
page_nav.summary = loc( [
'<em>Viewing Page:</em> [_1] of [_2]',
pager.current_page,
pager.last_page,
] );
# Create url object to modify
USE u = URL(c.uri_path, c.req.parameters );
IF pager.current_page > 1;
lnk = u( p = pager.current_page - 1);
label = loc('Previous');
page_nav.previous = "<a href='$lnk'><em>$label</em></a>";
END;
IF pager.current_page < pager.last_page;
lnk = u( p = pager.current_page + 1);
label = loc('Next');
page_nav.next = "<a href='$lnk'><em>$label</em></a>";
END;
# Set start and end position of sliding window
IF pager.current_page <= 6;
page_start = 1;
page_end = 10;
ELSE;
page_start = pager.current_page - 5;
page_end = page_start + 9;
END;
SET page_end = pager.last_page IF page_end > pager.last_page;
pg = []; # list of pages
FOR num IN [ page_start .. page_end ];
IF num == pager.current_page;
pg.push( '<em>' _ num _ '</em>' );
NEXT;
END;
lnk = u( p = num);
pg.push( "<a href='$lnk'>$num</a>");
END;
page_nav.pages = pg;
%]
[% BLOCK formatted_page_nav %]
<div class="pager">
<p>
[% page_nav.summary %]
</p>
<ol>
[%- "<li>$page_nav.previous</li>" IF page_nav.previous %]
[%- FOR p = page_nav.pages %]
<li>[% p %]</li>
[%- END %]
[%- "<li>$page_nav.next</li>" IF page_nav.next %]
</ol>
</div>
[% END %]
--
Bill Moseley
moseley at hank.org
Sent from my iMutt
More information about the Catalyst
mailing list