Add 'Page locked' as a distinct menu item

This commit is contained in:
Matt Westcott 2019-10-09 10:18:13 +01:00
parent fe2f8644fa
commit 0bd6266736
4 changed files with 26 additions and 4 deletions

View file

@ -57,7 +57,7 @@ class ActionMenuItem(metaclass=MediaDefiningClass):
class PublishMenuItem(ActionMenuItem):
label = "Publish"
label = _("Publish")
name = 'action-publish'
template = 'wagtailadmin/pages/action_menu/publish.html'
@ -133,6 +133,20 @@ class SaveDraftMenuItem(ActionMenuItem):
return context
class PageLockedMenuItem(ActionMenuItem):
name = 'action-page-locked'
label = _("Page locked")
template = 'wagtailadmin/pages/action_menu/page_locked.html'
def is_shown(self, request, context):
return ('page' in context) and (context['page'].locked)
def get_context(self, request, parent_context):
context = super().get_context(request, parent_context)
context['is_revision'] = (context['view'] == 'revisions_revert')
return context
BASE_PAGE_ACTION_MENU_ITEMS = None
@ -150,6 +164,7 @@ def _get_base_page_action_menu_items():
PublishMenuItem(order=30),
SubmitForModerationMenuItem(order=40),
SaveDraftMenuItem(order=50),
PageLockedMenuItem(order=10000),
]
for hook in hooks.get_hooks('register_page_action_menu_item'):
BASE_PAGE_ACTION_MENU_ITEMS.append(hook())
@ -176,7 +191,10 @@ class PageActionMenu:
for hook in hooks.get_hooks('construct_page_action_menu'):
hook(self.menu_items, self.request, self.context)
self.default_item = self.menu_items.pop() if self.menu_items else SaveDraftMenuItem(order=50)
try:
self.default_item = self.menu_items.pop()
except IndexError:
self.default_item = None
def render_html(self):
return render_to_string(self.template, {

View file

@ -1,5 +1,7 @@
{% if show_menu %}
{% if default_menu_item %}
{{ default_menu_item }}
{% endif %}
{% if show_menu %}
<div class="dropdown-toggle icon icon-arrow-up"></div>
<ul>
{% for item in rendered_menu_items %}

View file

@ -0,0 +1,2 @@
{% load i18n %}
<button type="submit" class="button action-save {% if is_revision %}warning{% endif %}" disabled>{% trans 'Page locked' %}</button>

View file

@ -1,2 +1,2 @@
{% load i18n %}
<button type="submit" class="button action-save button-longrunning {% if is_revision %}warning{% endif %}" data-clicked-text="{% trans 'Saving…' %}" {% if page.locked %}disabled {% endif %}><span class="icon icon-spinner"></span><em>{% if page.locked %}{% trans 'Page locked' %}{% else %}{% if is_revision %}{% trans 'Replace current draft' %}{% else %}{% trans 'Save draft' %}{% endif %}{% endif %}</em></button>
<button type="submit" class="button action-save button-longrunning {% if is_revision %}warning{% endif %}" data-clicked-text="{% trans 'Saving…' %}"><span class="icon icon-spinner"></span><em>{% if is_revision %}{% trans 'Replace current draft' %}{% else %}{% trans 'Save draft' %}{% endif %}</em></button>