diff --git a/client/scss/components/_listing.scss b/client/scss/components/_listing.scss index a432a87ed4..d676386738 100644 --- a/client/scss/components/_listing.scss +++ b/client/scss/components/_listing.scss @@ -106,7 +106,8 @@ ul.listing { border: 0; } - &.align-top td { + &.align-top td, + td.align-top { vertical-align: top; } diff --git a/wagtail/admin/templates/wagtailadmin/pages/search_results.html b/wagtail/admin/templates/wagtailadmin/pages/search_results.html index 6ef285c4b3..7c8b97042d 100644 --- a/wagtail/admin/templates/wagtailadmin/pages/search_results.html +++ b/wagtail/admin/templates/wagtailadmin/pages/search_results.html @@ -32,7 +32,7 @@ {% endif %} - {% include "wagtailadmin/pages/listing/_list_explore.html" with show_parent=1 sortable=1 sortable_by_type=0 show_bulk_actions=1 show_locale_labels=show_locale_labels %} + {% component table %} {% if is_paginated %} {% include "wagtailadmin/shared/pagination_nav.html" with items=page_obj linkurl=index_url %} diff --git a/wagtail/admin/ui/tables/pages.py b/wagtail/admin/ui/tables/pages.py index 0b112d5835..30f2bfe232 100644 --- a/wagtail/admin/ui/tables/pages.py +++ b/wagtail/admin/ui/tables/pages.py @@ -1,14 +1,22 @@ +from django.utils.safestring import mark_safe +from django.utils.translation import gettext + from wagtail.admin.ui.tables import BaseColumn, Column class PageTitleColumn(BaseColumn): cell_template_name = "wagtailadmin/pages/listing/_page_title_cell.html" + def __init__(self, *args, show_locale_labels=False, **kwargs): + super().__init__(*args, **kwargs) + self.show_locale_labels = show_locale_labels + def get_cell_context_data(self, instance, parent_context): context = super().get_cell_context_data(instance, parent_context) context["page_perms"] = instance.permissions_for_user( parent_context["request"].user ) + context["show_locale_labels"] = self.show_locale_labels return context @@ -21,3 +29,44 @@ class ParentPageColumn(Column): class PageStatusColumn(BaseColumn): cell_template_name = "wagtailadmin/pages/listing/_page_status_cell.html" + + +class BulkActionsColumn(BaseColumn): + header_template_name = "wagtailadmin/bulk_actions/select_all_checkbox_cell.html" + cell_template_name = "wagtailadmin/bulk_actions/listing_checkbox_cell.html" + + def get_header_context_data(self, parent_context): + context = super().get_header_context_data(parent_context) + parent_page = parent_context.get("parent_page") + if parent_page: + context["parent"] = parent_page.id + return context + + def get_cell_context_data(self, instance, parent_context): + context = super().get_cell_context_data(instance, parent_context) + context.update( + { + "obj_type": "page", + "obj": instance, + "aria_labelledby_prefix": "page_", + "aria_labelledby": str(instance.pk), + "aria_labelledby_suffix": "_title", + "checkbox_aria_label": gettext("Select page"), + } + ) + return context + + +class NavigateToChildrenColumn(BaseColumn): + cell_template_name = "wagtailadmin/pages/listing/_navigation_explore.html" + + def get_cell_context_data(self, instance, parent_context): + context = super().get_cell_context_data(instance, parent_context) + context["page"] = instance + context["page_perms"] = instance.permissions_for_user( + parent_context["request"].user + ) + return context + + def render_header_html(self, parent_context): + return mark_safe("