63 lines
1.7 KiB
HTML
63 lines
1.7 KiB
HTML
<%! from urllib import urlencode %>
|
|
|
|
<%
|
|
def merge(dic1, dic2):
|
|
return dict(dic1.items() + dic2.items())
|
|
|
|
def url_for_page(_page):
|
|
return base_url + '?' + urlencode(merge(query_params, {'page': _page}))
|
|
%>
|
|
|
|
<%def name="link_to_page(_page, text)">
|
|
<a class="discussion-page-link" href="javascript:void(0)" page-url="${url_for_page(_page) | h}">${text}</a>
|
|
</%def>
|
|
|
|
<%def name="div_page(_page)">
|
|
% if _page != page:
|
|
<div class="page-link">
|
|
${link_to_page(_page, str(_page))}
|
|
</div>
|
|
% else:
|
|
<div class="page-link">${_page}</div>
|
|
% endif
|
|
</%def>
|
|
|
|
<%def name="list_pages(*args)">
|
|
% for arg in args:
|
|
% if arg == 'dots':
|
|
<div class="page-dots">...</div>
|
|
% elif isinstance(arg, list):
|
|
% for _page in arg:
|
|
${div_page(_page)}
|
|
% endfor
|
|
% else:
|
|
${div_page(arg)}
|
|
% endif
|
|
% endfor
|
|
</%def>
|
|
|
|
<div class="discussion-${discussion_type | h}-paginator discussion-paginator local">
|
|
<div class="prev-page">
|
|
% if page > 1:
|
|
${link_to_page(page - 1, "< Previous page")}
|
|
% endif
|
|
</div>
|
|
|
|
% if num_pages <= 2 * pages_nearby_delta + 2:
|
|
${list_pages(range(1, num_pages + 1))}
|
|
% else:
|
|
% if page <= 2 * pages_nearby_delta:
|
|
${list_pages(range(1, 2 * pages_nearby_delta + 2), 'dots', num_pages)}
|
|
% elif num_pages - page + 1 <= 2 * pages_nearby_delta:
|
|
${list_pages(1, 'dots', range(num_pages - 2 * pages_nearby_delta, num_pages + 1))}
|
|
% else:
|
|
${list_pages(1, 'dots', range(page - pages_nearby_delta, page + pages_nearby_delta + 1), 'dots', num_pages)}
|
|
% endif
|
|
% endif
|
|
<div class="next-page">
|
|
% if page < num_pages:
|
|
${link_to_page(page + 1, "Next page >")}
|
|
% endif
|
|
</div>
|
|
</div>
|