diff options
author | Michael Elkins <melkins@tislabs.com> | 2013-03-05 01:04:29 +0000 |
---|---|---|
committer | Michael Elkins <melkins@tislabs.com> | 2013-03-05 01:04:29 +0000 |
commit | e9bdab9b2743aa3caf2c4beb75f2cba9ea23ce82 (patch) | |
tree | fb97c0a8d2f425e1df9d52189f1e5a657be58745 | |
parent | 39c4a987c530a26aa7c4fb7dfb4065c94aba158d (diff) |
fix paginator template tag to nicely display when there are a huge amount of pages. display at most 5 page links and use ellipsis to indicate there are more pages.
svn path=/trunk/; revision=5106
-rw-r--r-- | rpkid/rpki/gui/app/templatetags/bootstrap_pager.py | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/rpkid/rpki/gui/app/templatetags/bootstrap_pager.py b/rpkid/rpki/gui/app/templatetags/bootstrap_pager.py index be7d7ca3..ff141c9d 100644 --- a/rpkid/rpki/gui/app/templatetags/bootstrap_pager.py +++ b/rpkid/rpki/gui/app/templatetags/bootstrap_pager.py @@ -17,15 +17,25 @@ class BootstrapPagerNode(template.Node): else: r.append('<li><a href="%s?page=%d">«</a></li>' % (request.path, pager_object.number - 1)) - for i in pager_object.paginator.page_range: + # display at most 5 pages around the current page + min_page = max(pager_object.number - 2, 1) + max_page = min(min_page + 5, pager_object.paginator.num_pages) + + if min_page > 1: + r.append('<li class="disabled"><a>…</a></li>') + + for i in range(min_page, max_page + 1): r.append('<li %s><a href="%s?page=%d">%d</a></li>' % ('' if i != pager_object.number else 'class="active"', request.path, i, i)) + if max_page < pager_object.paginator.num_pages: + r.append('<li class="disabled"><a>…</a></li>') if pager_object.number < pager_object.paginator.num_pages: r.append('<li><a href="%s?page=%d">»</a></li>' % (request.path, pager_object.number + 1)) else: r.append('<li class="disabled"><a>»</a></li>') + r.append('</ul></div>') return '\n'.join(r) |