diff --git a/wagtail/admin/templates/wagtailadmin/pages/listing/_list_unlock.html b/wagtail/admin/templates/wagtailadmin/pages/listing/_list_unlock.html new file mode 100644 index 000000000..f1cc01d0e --- /dev/null +++ b/wagtail/admin/templates/wagtailadmin/pages/listing/_list_unlock.html @@ -0,0 +1,21 @@ +{% extends "wagtailadmin/pages/listing/_list_explore.html" %} + +{% load i18n wagtailadmin_tags %} + +{% block page_navigation %} + + {% page_permissions page as perms %} +

+ Locked + {% if page.locked_by %}by {% if page.locked_by_id == request.user.pk %}you{% else %}{{ page.locked_by }}{% endif %}{% endif %} + {% if page.locked_at %}at {{ page.locked_at|date:"d M Y H:i" }}{% endif %} +

+ {% if perms.can_unlock %} +
+ {% csrf_token %} + + +
+ {% endif %} + +{% endblock %} diff --git a/wagtail/admin/templates/wagtailadmin/pages/locked_pages.html b/wagtail/admin/templates/wagtailadmin/pages/locked_pages.html new file mode 100644 index 000000000..0112fddad --- /dev/null +++ b/wagtail/admin/templates/wagtailadmin/pages/locked_pages.html @@ -0,0 +1,12 @@ +{% extends "wagtailadmin/base.html" %} +{% load i18n %} +{% block titletag %}{% trans "Locked pages" %}{% endblock %} + +{% block content %} + {% trans "Locked pages" as title %} + {% include "wagtailadmin/shared/header.html" with title=title icon="doc-empty-inverse" %} + +
+ {% include "wagtailadmin/pages/locked_pages_results.html" %} +
+{% endblock %} diff --git a/wagtail/admin/templates/wagtailadmin/pages/locked_pages_results.html b/wagtail/admin/templates/wagtailadmin/pages/locked_pages_results.html new file mode 100644 index 000000000..74242c59c --- /dev/null +++ b/wagtail/admin/templates/wagtailadmin/pages/locked_pages_results.html @@ -0,0 +1,11 @@ +{% load i18n wagtailadmin_tags %} +
+ {% if pages %} + {% include "wagtailadmin/pages/listing/_list_unlock.html" %} + + {% url 'wagtailadmin_pages:locked_pages' as pagination_base_url %} + {% paginate pages base_url=pagination_base_url %} + {% else %} +

{% trans 'No pages have been locked.' %}

+ {% endif %} +
diff --git a/wagtail/admin/urls/pages.py b/wagtail/admin/urls/pages.py index 74fc4007f..9c853d767 100644 --- a/wagtail/admin/urls/pages.py +++ b/wagtail/admin/urls/pages.py @@ -33,6 +33,7 @@ urlpatterns = [ url(r'^(\d+)/lock/$', pages.lock, name='lock'), url(r'^(\d+)/unlock/$', pages.unlock, name='unlock'), + url(r'^locked/$', pages.locked_pages, name='locked_pages'), url(r'^(\d+)/revisions/$', pages.revisions_index, name='revisions_index'), url(r'^(\d+)/revisions/(\d+)/view/$', pages.revisions_view, name='revisions_view'), diff --git a/wagtail/admin/views/pages.py b/wagtail/admin/views/pages.py index 1f0297535..560639115 100644 --- a/wagtail/admin/views/pages.py +++ b/wagtail/admin/views/pages.py @@ -1280,3 +1280,14 @@ def revisions_unschedule(request, page_id, revision_id): 'next': next_url, 'subtitle': subtitle }) + + +def locked_pages(request): + pages = UserPagePermissionsProxy(request.user).editable_pages().filter(locked=True) + + paginator = Paginator(pages, per_page=10) + pages = paginator.get_page(request.GET.get('p')) + + return render(request, 'wagtailadmin/pages/locked_pages.html', { + 'pages': pages, + })