diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/chooser/_browse_results.html b/wagtail/wagtailadmin/templates/wagtailadmin/chooser/_browse_results.html index 1844abd18..0a54eb6c5 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/chooser/_browse_results.html +++ b/wagtail/wagtailadmin/templates/wagtailadmin/chooser/_browse_results.html @@ -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 %} diff --git a/wagtail/wagtailadmin/views/chooser.py b/wagtail/wagtailadmin/views/chooser.py index 9c11a2b0b..1ab9aa181 100644 --- a/wagtail/wagtailadmin/views/chooser.py +++ b/wagtail/wagtailadmin/views/chooser.py @@ -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'),