--- a/templates/channel_search.tmpl Tue Feb 10 00:04:15 2009 +0200
+++ b/templates/channel_search.tmpl Tue Feb 10 00:19:56 2009 +0200
@@ -1,39 +1,38 @@
<%inherit file="channel.tmpl" />
-<%def name="paginate(url, count, skip, max, _more=None, **args)">
- ## update max?
- % if more :
- <% max = h.max(max, skip) %>
- % else :
- <% max = skip %>
- % endif
- ## number of pages
- <% page_count = max / count + 1 %>
+<%def name="paginate(url, count, page_cur, page_max, _more=None, _last=False, **args)">
+ <%doc>
+ Pagination works using page numbers, with a specific number of maximum pages displayed. If _more is True,
+ then instead of a "Next" button, we have a "More" button, which goes to the max+1'th page, unless _last is
+ True, whereupon it's not displayed
+ </%doc>
<div class="paginate">
<ul>
<li>
- % if skip :
- <a href="${h.build_url(url, count=count, skip=h.skip_prev(count, skip), max=max, **args)}">« Prev</a>
+ % if page_cur > 1 :
+ <a href="${h.build_url(url, count=count, page=page_cur-1, max=max, **args)}">« Prev</a>
% else :
<span>« Prev</span>
%endif
</li>
- % for page in xrange(page_count) :
+ % for page in xrange(1, page_max + 1) :
<li>
- % if page == skip / count :
- <strong>${page + 1}</strong>
+ % if page == page_cur :
+ <strong>${page}</strong>
% else :
- <a href="${h.build_url(url, count=count, skip=h.skip_page(count, page), max=max, **args)}">${page + 1}</a>
+ <a href="${h.build_url(url, count=count, page=page, max=page_max, **args)}">${page}</a>
% endif
</li>
% endfor
<li>
- % if _more :
- <a href="${h.build_url(url, count=count, skip=h.skip_next(count, max), **args)}">More »</a>
- % elif False :
- <a href="${h.build_url(url, count=count, skip=h.skip_next(count, max), **args)}">Next »</a>
- % else : ## last page
+ % if _more and _last :
+ <span>More »</span>
+ % elif _more :
+ <a href="${h.build_url(url, count=count, page=page_max+1, **args)}">More »</a>
+ % elif page_cur == page_max : ## last page
<span>Next »</span>
+ % else :
+ <a href="${h.build_url(url, count=count, page=page+1, **args)}">Next »</a>
% endif
</li>
</ul>
@@ -71,11 +70,11 @@
% else :
<div id="title">${channel.title} :: Search '${search_query}'</div>
-${paginate(urls.channel_search, count, skip, max, channel=channel, q=search_query, _more=bool(lines))}
+${paginate(urls.channel_search, count, page, max, channel=channel, q=search_query, _more=True, _last=not(bool(lines)))}
% if lines :
<%include file="lines.tmpl" />
% else :
<div id="search-error">No results found</div>
% endif
-${paginate(urls.channel_search, count, skip, max, channel=channel, q=search_query, _more=bool(lines))}
+${paginate(urls.channel_search, count, page, max, channel=channel, q=search_query, _more=True, _last=not(bool(lines)))}
% endif