<%! 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>