mirror of
https://github.com/wagtail/wagtail.git
synced 2024-12-01 11:41:20 +01:00
Add remove workflow action to page list. Move save button out of footer to emphasize that removing a page is not an unsaved action
This commit is contained in:
parent
7fceab2306
commit
c38e9cfcd4
@ -28,24 +28,36 @@
|
||||
{% csrf_token %}
|
||||
|
||||
{% block form %}{{ edit_handler.render_form_content }}{% endblock %}
|
||||
|
||||
{% block footer %}
|
||||
<footer role="contentinfo">
|
||||
<ul>
|
||||
<li class="actions">
|
||||
{% block form_actions %}
|
||||
<div class="dropdown dropup dropdown-button match-width">
|
||||
<button type="submit" class="button action-save button-longrunning" data-clicked-text="{% trans 'Saving…' %}">
|
||||
<span class="icon icon-spinner"></span><em>{% trans 'Save' %}</em>
|
||||
</button>
|
||||
</div>
|
||||
{% endblock %}
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ view.delete_url }}" class="button">Disable</a>
|
||||
</li>
|
||||
</ul>
|
||||
</footer>
|
||||
{% endblock %}
|
||||
<div class="object">
|
||||
<ul class="object-layout">
|
||||
<li class="object-layout_big-part">
|
||||
{% block form_actions %}
|
||||
<p class="save">
|
||||
<button type="submit" class="button action-save button-longrunning" data-clicked-text="{% trans 'Saving…' %}">
|
||||
<span class="icon icon-spinner"></span><em>{% trans 'Save' %}</em>
|
||||
</button>
|
||||
</p>
|
||||
{% endblock %}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
{% if pages %}
|
||||
<div class="object">
|
||||
<div class="title-wrapper">Pages</div>
|
||||
<div class="object-layout">
|
||||
<div class="object-layout_big-part">
|
||||
<div class="multiple">
|
||||
{% include "wagtailadmin/workflows/listing/_list_workflow_pages.html" %}
|
||||
<p class="add">
|
||||
<a class="button bicolor icon icon-plus">
|
||||
Add
|
||||
</a>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
@ -0,0 +1,13 @@
|
||||
{% extends "wagtailadmin/pages/listing/_list_explore.html" %}
|
||||
|
||||
{% load i18n wagtailadmin_tags %}
|
||||
|
||||
{% block page_navigation %}
|
||||
<td class="remove-workflow" valign="top">
|
||||
<form action="{% url 'wagtailadmin_workflows:remove' page.id %}" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="next" value="{{ request.path }}">
|
||||
<button type="submit" class="button button-secondary button-small">{% trans 'Remove' %}</button>
|
||||
</form>
|
||||
</td>
|
||||
{% endblock %}
|
@ -7,4 +7,5 @@ urlpatterns = [
|
||||
path('', workflows.Index.as_view(), name='index'),
|
||||
path('add/', workflows.create, name='add'),
|
||||
path('edit/<int:pk>', workflows.edit, name='edit'),
|
||||
path('remove/<int:pk>', workflows.remove_workflow, name='remove')
|
||||
]
|
||||
|
@ -1,21 +1,23 @@
|
||||
from django.http import HttpResponseForbidden
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.utils.translation import ugettext_lazy
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.utils.http import is_safe_url
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.views.decorators.http import require_POST
|
||||
|
||||
from wagtail.admin import messages
|
||||
from wagtail.admin.edit_handlers import ObjectList, FieldPanel, InlinePanel, get_edit_handler
|
||||
from wagtail.admin.views.generic import CreateView, DeleteView, EditView, IndexView
|
||||
from wagtail.core import hooks
|
||||
from wagtail.core.models import Workflow
|
||||
from wagtail.core.models import Page, Workflow
|
||||
from wagtail.admin.views.pages import get_valid_next_url_from_request
|
||||
from wagtail.core.permissions import workflow_permission_policy
|
||||
from django.shortcuts import get_object_or_404, redirect, render
|
||||
|
||||
Workflow.panels = [
|
||||
FieldPanel("name"),
|
||||
InlinePanel("workflow_tasks"),
|
||||
FieldPanel("active"),
|
||||
InlinePanel("workflow_tasks", heading="Tasks"),
|
||||
]
|
||||
|
||||
|
||||
def get_handler():
|
||||
handler = ObjectList(Workflow.panels)
|
||||
handler.bind_to(model=Workflow)
|
||||
@ -32,8 +34,8 @@ class Index(IndexView):
|
||||
template_name = 'wagtailadmin/workflows/index.html'
|
||||
add_url_name = 'wagtailadmin_workflows:add'
|
||||
edit_url_name = 'wagtailadmin_workflows:edit'
|
||||
page_title = ugettext_lazy("Workflows")
|
||||
add_item_label = ugettext_lazy("Add a workflow")
|
||||
page_title = _("Workflows")
|
||||
add_item_label = _("Add a workflow")
|
||||
header_icon = 'placeholder'
|
||||
|
||||
|
||||
@ -58,7 +60,7 @@ def create(request):
|
||||
'edit_handler': edit_handler,
|
||||
'form': form,
|
||||
'icon': 'placeholder',
|
||||
'title': ugettext_lazy("Workflows"),
|
||||
'title': _("Workflows"),
|
||||
'next': next_url,
|
||||
})
|
||||
|
||||
@ -68,6 +70,7 @@ def edit(request, pk):
|
||||
edit_handler = Workflow.get_edit_handler()
|
||||
edit_handler = edit_handler.bind_to(request=request, instance=workflow)
|
||||
form_class = edit_handler.get_form_class()
|
||||
pages = Page.objects.filter(workflow=workflow)
|
||||
|
||||
next_url = get_valid_next_url_from_request(request)
|
||||
|
||||
@ -84,7 +87,32 @@ def edit(request, pk):
|
||||
'edit_handler': edit_handler,
|
||||
'form': form,
|
||||
'icon': 'placeholder',
|
||||
'title': ugettext_lazy("Workflows"),
|
||||
'subtitle': ugettext_lazy("Edit Workflow"),
|
||||
'title': _("Workflows"),
|
||||
'subtitle': _("Edit Workflow"),
|
||||
'next': next_url,
|
||||
'pages': pages
|
||||
})
|
||||
|
||||
|
||||
@require_POST
|
||||
def remove_workflow(request, pk):
|
||||
# Get the page
|
||||
page = get_object_or_404(Page, id=pk).specific
|
||||
|
||||
# Check permissions
|
||||
if not request.user.is_superuser:
|
||||
raise PermissionDenied
|
||||
|
||||
# Unlock the page
|
||||
if page.workflow:
|
||||
page.workflow = None
|
||||
page.save()
|
||||
|
||||
messages.success(request, _("Workflow unassigned from Page '{0}'.").format(page.get_admin_display_title()))
|
||||
|
||||
# Redirect
|
||||
redirect_to = request.POST.get('next', None)
|
||||
if redirect_to and is_safe_url(url=redirect_to, allowed_hosts={request.get_host()}):
|
||||
return redirect(redirect_to)
|
||||
else:
|
||||
return redirect('wagtailadmin_explore', page.get_parent().id)
|
||||
|
Loading…
Reference in New Issue
Block a user