diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/chooser/_search_results.html b/wagtail/wagtailadmin/templates/wagtailadmin/chooser/_search_results.html
index 9c624c00c..42f1ed631 100644
--- a/wagtail/wagtailadmin/templates/wagtailadmin/chooser/_search_results.html
+++ b/wagtail/wagtailadmin/templates/wagtailadmin/chooser/_search_results.html
@@ -1,7 +1,7 @@
-{% load i18n %}
+{% load i18n wagtailadmin_tags %}
- {% blocktrans count counter=pages|length %}
+ {% blocktrans count counter=pages.paginator.count %}
There is one match
{% plural %}
There are {{ counter }} matches
@@ -10,4 +10,7 @@
{% if pages %}
{% include "wagtailadmin/pages/listing/_list_choose.html" with show_parent=1 pages=pages parent_page=parent_page %}
+
+ {% url 'wagtailadmin_choose_page_search' as pagination_base_url %}
+ {% paginate pages base_url=pagination_base_url classnames="navigate-pages" %}
{% endif %}
diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/chooser/browse.js b/wagtail/wagtailadmin/templates/wagtailadmin/chooser/browse.js
index 9566541b7..e6e2c8bc6 100644
--- a/wagtail/wagtailadmin/templates/wagtailadmin/chooser/browse.js
+++ b/wagtail/wagtailadmin/templates/wagtailadmin/chooser/browse.js
@@ -52,6 +52,12 @@ function(modal) {
return false;
});
+ /* pagination links within search results should be AJAX-fetched
+ and the result loaded into .page-results (and ajaxified) */
+ $('.page-results a.navigate-pages', modal.body).click(function() {
+ $('.page-results', modal.body).load(this.href, ajaxifySearchResults);
+ return false;
+ });
}
/*
diff --git a/wagtail/wagtailadmin/views/chooser.py b/wagtail/wagtailadmin/views/chooser.py
index f14533329..15ffa5bfd 100644
--- a/wagtail/wagtailadmin/views/chooser.py
+++ b/wagtail/wagtailadmin/views/chooser.py
@@ -116,20 +116,20 @@ def search(request, parent_page_id=None):
depth=1 # never include root
)
pages = filter_page_type(pages, desired_classes)
- pages = pages.search(search_form.cleaned_data['q'], fields=['title'])[:10]
+ pages = pages.search(search_form.cleaned_data['q'], fields=['title'])
else:
pages = Page.objects.none()
- shown_pages = []
+ paginator, pages = paginate(request, pages, per_page=25)
+
for page in pages:
page.can_choose = True
- shown_pages.append(page)
return render(
request, 'wagtailadmin/chooser/_search_results.html',
shared_context(request, {
'searchform': search_form,
- 'pages': shown_pages,
+ 'pages': pages,
'page_type_string': page_type_string,
})
)