Render edit URL in page usage view as a header button

pull/11758/head
Sage Abdullah 2024-03-08 16:32:12 +00:00 zatwierdzone przez LB (Ben Johnston)
rodzic c6bb19d823
commit dc93d28784
2 zmienionych plików z 17 dodań i 0 usunięć

Wyświetl plik

@ -58,6 +58,14 @@ class TestPageUsage(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
]
self.assertBreadcrumbsItemsRendered(items, response.content)
# There should be exactly one edit link, rendered as a header button
edit_url = reverse("wagtailadmin_pages:edit", args=(self.page.id,))
soup = self.get_soup(response.content)
edit_links = soup.select(f"a[href='{edit_url}']")
self.assertEqual(len(edit_links), 1)
edit_link = edit_links[0]
self.assertIn("w-header-button", edit_link.attrs.get("class"))
def test_has_private_usage(self):
PageChooserModel.objects.create(page=self.page)
usage_url = reverse("wagtailadmin_pages:usage", args=(self.page.id,))

Wyświetl plik

@ -78,6 +78,7 @@ class UsageView(generic.UsageView):
pk_url_kwarg = "page_id"
header_icon = "doc-empty-inverse"
usage_url_name = "wagtailadmin_pages:usage"
edit_url_name = "wagtailadmin_pages:edit"
_show_breadcrumbs = True
def dispatch(self, request, *args, **kwargs):
@ -88,3 +89,11 @@ class UsageView(generic.UsageView):
@cached_property
def breadcrumbs_items(self):
return get_breadcrumbs_items_for_page(self.object, self.request.user)
def get_breadcrumbs_items(self):
# The generic UsageView will add an edit link for the current object as
# the second-to-last item, but we don't want that because we want to
# link to the explore view instead for consistency with how page
# breadcrumbs work elsewhere. So we only take the last item, which is
# the "self" (Usage) item.
return self.breadcrumbs_items + [super().get_breadcrumbs_items()[-1]]