diff --git a/wagtail/admin/tests/pages/test_explorer_view.py b/wagtail/admin/tests/pages/test_explorer_view.py index c4dbab852bc..a13cb9dc909 100644 --- a/wagtail/admin/tests/pages/test_explorer_view.py +++ b/wagtail/admin/tests/pages/test_explorer_view.py @@ -735,14 +735,35 @@ def test_locale_selector(self): response = self.client.get( reverse("wagtailadmin_explore", args=[self.events_page.id]) ) + html = response.content.decode() self.assertContains(response, 'id="status-sidebar-english"') self.assertContains(response, "Switch locales") + add_translation_url = reverse( + "wagtailadmin_explore", args=[self.translated_events_page.id] + ) + self.assertTagInHTML( + f'French', + html, + allow_extra_attrs=True, + ) + @override_settings(WAGTAIL_I18N_ENABLED=False) def test_locale_selector_not_present_when_i18n_disabled(self): response = self.client.get( reverse("wagtailadmin_explore", args=[self.events_page.id]) ) + html = response.content.decode() self.assertNotContains(response, "Switch locales") + + add_translation_url = reverse( + "wagtailadmin_explore", args=[self.translated_events_page.id] + ) + self.assertTagInHTML( + f'French', + html, + allow_extra_attrs=True, + count=0, + ) diff --git a/wagtail/admin/ui/side_panels.py b/wagtail/admin/ui/side_panels.py index 6ceffdf2c7e..d0a7d819852 100644 --- a/wagtail/admin/ui/side_panels.py +++ b/wagtail/admin/ui/side_panels.py @@ -30,6 +30,10 @@ class BaseStatusSidePanel(BaseSidePanel): toggle_aria_label = gettext_lazy("Toggle status") toggle_icon_name = "info-circle" + def __init__(self, *args, in_explorer=False, **kwargs): + super().__init__(*args, **kwargs) + self.in_explorer = in_explorer + def get_status_templates(self, context): templates = [] @@ -86,15 +90,17 @@ def get_context_data(self, parent_context): ) if getattr(settings, "WAGTAIL_I18N_ENABLED", False): + url_name = "wagtailadmin_pages:edit" + if self.in_explorer: + url_name = "wagtailadmin_explore" + context.update( { "locale": page.locale, "translations": [ { "locale": translation.locale, - "url": reverse( - "wagtailadmin_pages:edit", args=[translation.id] - ), + "url": reverse(url_name, args=[translation.id]), } for translation in page.get_translations() .only("id", "locale", "depth") @@ -178,11 +184,13 @@ def media(self): class PageSidePanels(BaseSidePanels): - def __init__(self, request, page, *, preview_enabled, comments_enabled): + def __init__( + self, request, page, *, preview_enabled, comments_enabled, in_explorer=False + ): super().__init__(request, page) self.side_panels = [ - PageStatusSidePanel(page, self.request), + PageStatusSidePanel(page, self.request, in_explorer=in_explorer), ] if preview_enabled and page.preview_modes: diff --git a/wagtail/admin/views/pages/listing.py b/wagtail/admin/views/pages/listing.py index 9f9eb2de85c..154c6aa1ae7 100644 --- a/wagtail/admin/views/pages/listing.py +++ b/wagtail/admin/views/pages/listing.py @@ -97,6 +97,7 @@ def index(request, parent_page_id=None): side_panels = PageSidePanels( request, parent_page.specific, + in_explorer=True, preview_enabled=False, comments_enabled=False, )