Create button subclasses for page listing buttons

pull/10939/head
Matt Westcott 2023-09-21 21:01:05 +01:00 zatwierdzone przez Matt Westcott
rodzic e195b01502
commit c05c2ccb6e
1 zmienionych plików z 86 dodań i 72 usunięć

Wyświetl plik

@ -239,13 +239,61 @@ def page_listing_buttons(page, page_perms, next_url=None):
) )
class PageListingEditButton(PageListingButton):
label = _("Edit")
icon_name = "edit"
class PageListingViewDraftButton(PageListingButton):
label = _("View draft")
icon_name = "draft"
class PageListingViewLiveButton(PageListingButton):
label = _("View live")
icon_name = "doc-empty"
class PageListingAddChildPageButton(PageListingButton):
label = _("Add child page")
icon_name = "circle-plus"
class PageListingMoveButton(PageListingButton):
label = _("Move")
icon_name = "arrow-right-full"
class PageListingCopyButton(PageListingButton):
label = _("Copy")
icon_name = "copy"
class PageListingDeleteButton(PageListingButton):
label = _("Delete")
icon_name = "bin"
class PageListingUnpublishButton(PageListingButton):
label = _("Unpublish")
icon_name = "download"
class PageListingHistoryButton(PageListingButton):
label = _("History")
icon_name = "history"
class PageListingSortMenuOrderButton(PageListingButton):
label = _("Sort menu order")
icon_name = "list-ul"
@hooks.register("register_page_listing_more_buttons") @hooks.register("register_page_listing_more_buttons")
def page_listing_more_buttons(page, page_perms, next_url=None): def page_listing_more_buttons(page, page_perms, next_url=None):
if page_perms.can_edit(): if page_perms.can_edit():
yield PageListingButton( yield PageListingEditButton(
_("Edit"), url=reverse("wagtailadmin_pages:edit", args=[page.id]),
reverse("wagtailadmin_pages:edit", args=[page.id]),
icon_name="edit",
attrs={ attrs={
"aria-label": _("Edit '%(title)s'") "aria-label": _("Edit '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -254,10 +302,8 @@ def page_listing_more_buttons(page, page_perms, next_url=None):
) )
if page.has_unpublished_changes and page.is_previewable(): if page.has_unpublished_changes and page.is_previewable():
yield PageListingButton( yield PageListingViewDraftButton(
_("View draft"), url=reverse("wagtailadmin_pages:view_draft", args=[page.id]),
reverse("wagtailadmin_pages:view_draft", args=[page.id]),
icon_name="draft",
attrs={ attrs={
"aria-label": _("Preview draft version of '%(title)s'") "aria-label": _("Preview draft version of '%(title)s'")
% {"title": page.get_admin_display_title()}, % {"title": page.get_admin_display_title()},
@ -266,10 +312,8 @@ def page_listing_more_buttons(page, page_perms, next_url=None):
priority=4, priority=4,
) )
if page.live and page.url: if page.live and page.url:
yield PageListingButton( yield PageListingViewLiveButton(
_("View live"), url=page.url,
page.url,
icon_name="doc-empty",
attrs={ attrs={
"rel": "noreferrer", "rel": "noreferrer",
"aria-label": _("View live version of '%(title)s'") "aria-label": _("View live version of '%(title)s'")
@ -278,10 +322,8 @@ def page_listing_more_buttons(page, page_perms, next_url=None):
priority=6, priority=6,
) )
if page_perms.can_add_subpage(): if page_perms.can_add_subpage():
yield PageListingButton( yield PageListingAddChildPageButton(
_("Add child page"), url=reverse("wagtailadmin_pages:add_subpage", args=[page.id]),
reverse("wagtailadmin_pages:add_subpage", args=[page.id]),
icon_name="circle-plus",
attrs={ attrs={
"aria-label": _("Add a child page to '%(title)s' ") "aria-label": _("Add a child page to '%(title)s' ")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -290,10 +332,8 @@ def page_listing_more_buttons(page, page_perms, next_url=None):
) )
if page_perms.can_move(): if page_perms.can_move():
yield PageListingButton( yield PageListingMoveButton(
_("Move"), url=reverse("wagtailadmin_pages:move", args=[page.id]),
reverse("wagtailadmin_pages:move", args=[page.id]),
icon_name="arrow-right-full",
attrs={ attrs={
"aria-label": _("Move page '%(title)s'") "aria-label": _("Move page '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -305,10 +345,8 @@ def page_listing_more_buttons(page, page_perms, next_url=None):
if next_url: if next_url:
url += "?" + urlencode({"next": next_url}) url += "?" + urlencode({"next": next_url})
yield PageListingButton( yield PageListingCopyButton(
_("Copy"), url=url,
url,
icon_name="copy",
attrs={ attrs={
"aria-label": _("Copy page '%(title)s'") "aria-label": _("Copy page '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -326,10 +364,8 @@ def page_listing_more_buttons(page, page_perms, next_url=None):
if next_url and include_next_url: if next_url and include_next_url:
url += "?" + urlencode({"next": next_url}) url += "?" + urlencode({"next": next_url})
yield PageListingButton( yield PageListingDeleteButton(
_("Delete"), url=url,
url,
icon_name="bin",
attrs={ attrs={
"aria-label": _("Delete page '%(title)s'") "aria-label": _("Delete page '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -341,10 +377,8 @@ def page_listing_more_buttons(page, page_perms, next_url=None):
if next_url: if next_url:
url += "?" + urlencode({"next": next_url}) url += "?" + urlencode({"next": next_url})
yield PageListingButton( yield PageListingUnpublishButton(
_("Unpublish"), url=url,
url,
icon_name="resubmit",
attrs={ attrs={
"aria-label": _("Unpublish page '%(title)s'") "aria-label": _("Unpublish page '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -352,10 +386,8 @@ def page_listing_more_buttons(page, page_perms, next_url=None):
priority=40, priority=40,
) )
if page_perms.can_view_revisions(): if page_perms.can_view_revisions():
yield PageListingButton( yield PageListingHistoryButton(
_("History"), url=reverse("wagtailadmin_pages:history", args=[page.id]),
reverse("wagtailadmin_pages:history", args=[page.id]),
icon_name="history",
attrs={ attrs={
"aria-label": _("View page history for '%(title)s'") "aria-label": _("View page history for '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -364,10 +396,8 @@ def page_listing_more_buttons(page, page_perms, next_url=None):
) )
if page_perms.can_reorder_children(): if page_perms.can_reorder_children():
yield PageListingButton( yield PageListingSortMenuOrderButton(
_("Sort menu order"), url="?ordering=ord",
"?ordering=ord",
icon_name="list-ul",
attrs={ attrs={
"aria-label": _("Change ordering of child pages of '%(title)s'") "aria-label": _("Change ordering of child pages of '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -379,10 +409,8 @@ def page_listing_more_buttons(page, page_perms, next_url=None):
@hooks.register("register_page_header_buttons") @hooks.register("register_page_header_buttons")
def page_header_buttons(page, page_perms, next_url=None): def page_header_buttons(page, page_perms, next_url=None):
if page_perms.can_edit(): if page_perms.can_edit():
yield PageListingButton( yield PageListingEditButton(
_("Edit"), url=reverse("wagtailadmin_pages:edit", args=[page.id]),
reverse("wagtailadmin_pages:edit", args=[page.id]),
icon_name="edit",
attrs={ attrs={
"aria-label": _("Edit '%(title)s'") "aria-label": _("Edit '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -390,10 +418,8 @@ def page_header_buttons(page, page_perms, next_url=None):
priority=10, priority=10,
) )
if page_perms.can_add_subpage(): if page_perms.can_add_subpage():
yield PageListingButton( yield PageListingAddChildPageButton(
_("Add child page"), url=reverse("wagtailadmin_pages:add_subpage", args=[page.id]),
reverse("wagtailadmin_pages:add_subpage", args=[page.id]),
icon_name="circle-plus",
attrs={ attrs={
"aria-label": _("Add a child page to '%(title)s' ") "aria-label": _("Add a child page to '%(title)s' ")
% {"title": page.get_admin_display_title()}, % {"title": page.get_admin_display_title()},
@ -401,10 +427,8 @@ def page_header_buttons(page, page_perms, next_url=None):
priority=15, priority=15,
) )
if page_perms.can_move(): if page_perms.can_move():
yield PageListingButton( yield PageListingMoveButton(
_("Move"), url=reverse("wagtailadmin_pages:move", args=[page.id]),
reverse("wagtailadmin_pages:move", args=[page.id]),
icon_name="arrow-right-full",
attrs={ attrs={
"aria-label": _("Move page '%(title)s'") "aria-label": _("Move page '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -416,10 +440,8 @@ def page_header_buttons(page, page_perms, next_url=None):
if next_url: if next_url:
url += "?" + urlencode({"next": next_url}) url += "?" + urlencode({"next": next_url})
yield PageListingButton( yield PageListingCopyButton(
_("Copy"), url=url,
url,
icon_name="copy",
attrs={ attrs={
"aria-label": _("Copy page '%(title)s'") "aria-label": _("Copy page '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -441,10 +463,8 @@ def page_header_buttons(page, page_perms, next_url=None):
if next_url and include_next_url: if next_url and include_next_url:
url += "?" + urlencode({"next": next_url}) url += "?" + urlencode({"next": next_url})
yield PageListingButton( yield PageListingDeleteButton(
_("Delete"), url=url,
url,
icon_name="bin",
attrs={ attrs={
"aria-label": _("Delete page '%(title)s'") "aria-label": _("Delete page '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -456,10 +476,8 @@ def page_header_buttons(page, page_perms, next_url=None):
if next_url: if next_url:
url += "?" + urlencode({"next": next_url}) url += "?" + urlencode({"next": next_url})
yield PageListingButton( yield PageListingUnpublishButton(
_("Unpublish"), url=url,
url,
icon_name="download",
attrs={ attrs={
"aria-label": _("Unpublish page '%(title)s'") "aria-label": _("Unpublish page '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -467,10 +485,8 @@ def page_header_buttons(page, page_perms, next_url=None):
priority=60, priority=60,
) )
if page_perms.can_view_revisions(): if page_perms.can_view_revisions():
yield PageListingButton( yield PageListingHistoryButton(
_("History"), url=reverse("wagtailadmin_pages:history", args=[page.id]),
reverse("wagtailadmin_pages:history", args=[page.id]),
icon_name="history",
attrs={ attrs={
"aria-label": _("View page history for '%(title)s'") "aria-label": _("View page history for '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}
@ -480,10 +496,8 @@ def page_header_buttons(page, page_perms, next_url=None):
if page_perms.can_reorder_children(): if page_perms.can_reorder_children():
url = reverse("wagtailadmin_explore", args=[page.id]) url = reverse("wagtailadmin_explore", args=[page.id])
url += "?ordering=ord" url += "?ordering=ord"
yield PageListingButton( yield PageListingSortMenuOrderButton(
_("Sort menu order"), url=url,
url,
icon_name="list-ul",
attrs={ attrs={
"aria-label": _("Change ordering of child pages of '%(title)s'") "aria-label": _("Change ordering of child pages of '%(title)s'")
% {"title": page.get_admin_display_title()} % {"title": page.get_admin_display_title()}