Implement pagination on the page chooser

This commit is contained in:
Matt Westcott 2015-06-26 12:33:07 +01:00
parent 54add57ab8
commit 6d416e5bcd
2 changed files with 14 additions and 0 deletions

View file

@ -5,4 +5,7 @@
{% if pages %}
{% include "wagtailadmin/pages/listing/_list_choose.html" with allow_navigation=1 orderable=0 pages=pages parent_page=parent_page %}
{% url 'wagtailadmin_choose_page_child' parent_page.id as pagination_base_url %}
{% include "wagtailadmin/pages/listing/_pagination.html" with page=pages base_url=pagination_base_url query_params=querystring classnames="navigate-pages" only %}
{% endif %}

View file

@ -1,3 +1,4 @@
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib.contenttypes.models import ContentType
from django.shortcuts import get_object_or_404, render
from django.http import Http404
@ -49,6 +50,16 @@ def browse(request, parent_page_id=None):
if page.can_choose or page.can_descend:
shown_pages.append(page)
# Apply pagination
p = request.GET.get('p', 1)
paginator = Paginator(shown_pages, 25)
try:
shown_pages = paginator.page(p)
except PageNotAnInteger:
shown_pages = paginator.page(1)
except EmptyPage:
shown_pages = paginator.page(paginator.num_pages)
return render_modal_workflow(request, 'wagtailadmin/chooser/browse.html', 'wagtailadmin/chooser/browse.js', {
'allow_external_link': request.GET.get('allow_external_link'),
'allow_email_link': request.GET.get('allow_email_link'),