kopia lustrzana https://github.com/wagtail/wagtail
Add a view_name argument to register_page_header_buttons
rodzic
3d8e6824a8
commit
8079cad7df
|
|
@ -551,7 +551,7 @@ This example will add a simple button to the secondary dropdown menu:
|
|||
from wagtail.admin import widgets as wagtailadmin_widgets
|
||||
|
||||
@hooks.register('register_page_header_buttons')
|
||||
def page_header_buttons(page, user, next_url=None):
|
||||
def page_header_buttons(page, user, view_name, next_url=None):
|
||||
yield wagtailadmin_widgets.Button(
|
||||
'A dropdown button',
|
||||
'/goes/to/a/url/',
|
||||
|
|
@ -563,12 +563,13 @@ The arguments passed to the hook are as follows:
|
|||
|
||||
- `page` - the page object to generate the button for
|
||||
- `user` - the logged-in user
|
||||
- `view_name` - either `index` or `edit`, depending on whether the button is being generated for the page listing or edit view
|
||||
- `next_url` - the URL that the linked action should redirect back to on completion of the action, if the view supports it
|
||||
|
||||
The `priority` argument controls the order the buttons are displayed in the dropdown. Buttons are ordered from low to high priority, so a button with `priority=10` will be displayed before a button with `priority=60`.
|
||||
|
||||
```{versionchanged} 5.2
|
||||
The hook function now receives a `user` argument instead of a `page_perms` argument. To check the user's permissions on the page, use `page.permissions_for_user(user)`.
|
||||
The hook function now receives a `user` argument instead of a `page_perms` argument, and a `view_name` argument. To check the user's permissions on the page, use `page.permissions_for_user(user)`.
|
||||
```
|
||||
|
||||
## Editor workflow
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
{# Actions divider #}
|
||||
<div class="w-w-px w-h-[30px] w-ml-auto sm:w-ml-0 w-bg-border-furniture"></div>
|
||||
{# Page actions dropdown #}
|
||||
{% page_header_buttons parent_page user=request.user %}
|
||||
{% page_header_buttons parent_page user=request.user view_name="index" %}
|
||||
{% endblock %}
|
||||
{% block actions %}
|
||||
{% if not parent_page.is_root %}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
{# Actions divider #}
|
||||
<div class="w-w-px w-h-[30px] w-ml-auto sm:w-ml-0 w-bg-border-furniture"></div>
|
||||
{# Page actions dropdown #}
|
||||
{% page_header_buttons page user=request.user %}
|
||||
{% page_header_buttons page user=request.user view_name="edit" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block actions %}
|
||||
|
|
|
|||
|
|
@ -505,7 +505,7 @@ def page_listing_buttons(context, page, user):
|
|||
@register.inclusion_tag(
|
||||
"wagtailadmin/pages/listing/_page_header_buttons.html", takes_context=True
|
||||
)
|
||||
def page_header_buttons(context, page, user):
|
||||
def page_header_buttons(context, page, user, view_name):
|
||||
next_url = context["request"].path
|
||||
page_perms = page.permissions_for_user(user)
|
||||
button_hooks = hooks.get_hooks("register_page_header_buttons")
|
||||
|
|
@ -513,7 +513,9 @@ def page_header_buttons(context, page, user):
|
|||
buttons = []
|
||||
for hook in button_hooks:
|
||||
if accepts_kwarg(hook, "user"):
|
||||
buttons.extend(hook(page=page, user=user, next_url=next_url))
|
||||
buttons.extend(
|
||||
hook(page=page, user=user, next_url=next_url, view_name=view_name)
|
||||
)
|
||||
else:
|
||||
# old-style hook that accepts page_perms instead of user
|
||||
warn(
|
||||
|
|
|
|||
|
|
@ -345,10 +345,13 @@ class TestPageHeaderButtonsHooks(TestButtonsHooks):
|
|||
self.assertContains(response, "Another useless header button")
|
||||
|
||||
def test_register_page_header_buttons_new_signature(self):
|
||||
def custom_page_header_buttons(page, user, next_url=None):
|
||||
def custom_page_header_buttons(page, user, view_name, next_url=None):
|
||||
if not isinstance(user, AbstractBaseUser):
|
||||
raise TypeError("expected a user instance")
|
||||
|
||||
if view_name != "edit":
|
||||
raise ValueError("expected view_name to be 'edit'")
|
||||
|
||||
yield wagtailadmin_widgets.Button(
|
||||
"Another useless header button", "/custom-url", priority=10
|
||||
)
|
||||
|
|
@ -378,7 +381,9 @@ class TestPageHeaderButtonsHooks(TestButtonsHooks):
|
|||
next_url = "a/random/url/"
|
||||
full_url = base_url + "?" + urlencode({"next": next_url})
|
||||
|
||||
buttons = page_header_buttons(page, self.user, next_url=next_url)
|
||||
buttons = page_header_buttons(
|
||||
page, self.user, view_name="index", next_url=next_url
|
||||
)
|
||||
delete_button = next(button for button in buttons if button.label == "Delete")
|
||||
|
||||
self.assertEqual(delete_button.url, full_url)
|
||||
|
|
@ -395,7 +400,9 @@ class TestPageHeaderButtonsHooks(TestButtonsHooks):
|
|||
base_url = reverse("wagtailadmin_pages:delete", args=[page.id])
|
||||
next_url = reverse("wagtailadmin_explore", args=[page.id])
|
||||
|
||||
buttons = page_header_buttons(page, self.user, next_url=next_url)
|
||||
buttons = page_header_buttons(
|
||||
page, self.user, view_name="index", next_url=next_url
|
||||
)
|
||||
|
||||
delete_button = next(button for button in buttons if button.label == "Delete")
|
||||
|
||||
|
|
@ -405,7 +412,9 @@ class TestPageHeaderButtonsHooks(TestButtonsHooks):
|
|||
base_url = reverse("wagtailadmin_pages:delete", args=[page.id])
|
||||
next_url = reverse("wagtailadmin_pages:edit", args=[page.id])
|
||||
|
||||
buttons = page_header_buttons(page, self.user, next_url=next_url)
|
||||
buttons = page_header_buttons(
|
||||
page, self.user, view_name="index", next_url=next_url
|
||||
)
|
||||
|
||||
delete_button = next(button for button in buttons if button.label == "Delete")
|
||||
|
||||
|
|
|
|||
|
|
@ -442,7 +442,7 @@ def page_listing_more_buttons(page, user, next_url=None):
|
|||
|
||||
|
||||
@hooks.register("register_page_header_buttons")
|
||||
def page_header_buttons(page, user, next_url=None):
|
||||
def page_header_buttons(page, user, view_name, next_url=None):
|
||||
page_perms = page.permissions_for_user(user)
|
||||
yield PageListingEditButton(
|
||||
page=page,
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ def page_listing_more_buttons(page, user, next_url=None):
|
|||
|
||||
|
||||
@hooks.register("register_page_header_buttons")
|
||||
def page_header_buttons(page, user, next_url=None):
|
||||
def page_header_buttons(page, user, view_name, next_url=None):
|
||||
if not page.is_root() and user.has_perm("simple_translation.submit_translation"):
|
||||
# If there's at least one locale that we haven't translated into yet,
|
||||
# show "Translate this page" button
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue