mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-17 19:51:11 +00:00
implemented moderation user buttons the same as edit button
This commit is contained in:
parent
edd757c578
commit
637899f6c2
9 changed files with 104 additions and 48 deletions
|
|
@ -14,8 +14,9 @@ body{
|
|||
|
||||
nav{
|
||||
float:right;
|
||||
|
||||
&:hover ul{
|
||||
height:200px;
|
||||
height:300px;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -42,34 +43,66 @@ ul{
|
|||
|
||||
li{
|
||||
@include transition(width 0.2s ease);
|
||||
float:right;
|
||||
clear:both;
|
||||
width:3.5em;
|
||||
overflow:hidden;
|
||||
margin-bottom:1px;
|
||||
position:relative;
|
||||
padding-bottom:1px;
|
||||
|
||||
&:hover{
|
||||
width:8em;
|
||||
width:10em;
|
||||
}
|
||||
}
|
||||
|
||||
a{
|
||||
.action{
|
||||
@include transition(background-color 0.2s ease, color 0.2s ease);
|
||||
display:block;
|
||||
background-color:$color-teal;
|
||||
color:white;
|
||||
|
||||
&:before{
|
||||
margin-right:0.3em;
|
||||
}
|
||||
|
||||
&:hover{
|
||||
background-color:$color-teal-darker;
|
||||
color:white;
|
||||
}
|
||||
}
|
||||
|
||||
/* actions which can be accomplished just with a link tag */
|
||||
a.action, a{
|
||||
display:block;
|
||||
width:10em;
|
||||
height:1.5em;
|
||||
text-align:left;
|
||||
overflow:hidden;
|
||||
text-decoration:none;
|
||||
text-transform:uppercase;
|
||||
padding:1em;
|
||||
padding:1em;
|
||||
}
|
||||
|
||||
&:before{
|
||||
margin-right:0.3em;
|
||||
}
|
||||
&:hover{
|
||||
background-color:$color-teal-darker;
|
||||
/* actions which require wrapping a form input */
|
||||
div.action{
|
||||
input{
|
||||
color:white;
|
||||
-webkit-font-smoothing: antialiased; /* Do not remove! */
|
||||
font-family:Open Sans,Arial,sans-serif;
|
||||
border:0;
|
||||
background:none;
|
||||
display:block;
|
||||
text-transform:uppercase;
|
||||
padding:1em;
|
||||
width:100%;
|
||||
position:relative;
|
||||
z-index:1;
|
||||
text-align:left;
|
||||
padding-left:3.5em;
|
||||
}
|
||||
&:before{
|
||||
position:absolute;
|
||||
top:0.6em;
|
||||
left:0.6em;
|
||||
z-index:0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
{% extends "wagtailadmin/userbar/base_item.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block item_content %}
|
||||
<form action="{% url 'wagtailadmin_pages_approve_moderation' self.revision_id %}" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="submit" value="Approve" />
|
||||
</form>
|
||||
<form action="{% url 'wagtailadmin_pages_approve_moderation' self.revision.id %}" method="post">
|
||||
{% csrf_token %}
|
||||
<div class="action icon icon-tick">
|
||||
<input type="submit" value="{% trans 'Approve' %}" />
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
@ -11,7 +11,7 @@
|
|||
{% block furniture %}
|
||||
<div class="wagtail-userbar">
|
||||
<nav>
|
||||
<a href="{% url 'wagtailadmin_home' %}" class="home icon icon-wagtail">Admin interface</a>
|
||||
<a href="{% url 'wagtailadmin_home' %}" class="home icon icon-wagtail" title="{% trans 'Go to Wagtail admin interface' %}">{% trans 'Go to Wagtail admin interface' %}</a>
|
||||
<ul>
|
||||
{% for item in items %}
|
||||
{{ item|safe }}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{% extends "wagtailadmin/userbar/base_item.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block item_content %}
|
||||
<a href="{% url 'wagtailadmin_pages_edit' self.page.id %}" class="icon icon-edit">Edit</a>
|
||||
<a href="{% url 'wagtailadmin_pages_edit' self.page.id %}" class="action icon icon-edit">{% trans 'Edit' %}</a>
|
||||
{% endblock %}
|
||||
|
|
@ -5,8 +5,9 @@
|
|||
right:0;
|
||||
z-index:9000;
|
||||
border:0;
|
||||
width:100px;
|
||||
height:100px;
|
||||
width:150px;
|
||||
height:300px;
|
||||
transition
|
||||
}
|
||||
</style>
|
||||
<iframe id="wagtail-userbar" src="{% url 'wagtailadmin_userbar' page.self.id %}" width="1000px" height="1000px" frameborder="0" allowtransparency="true" scrolling="no" style="background:transparent"></iframe>
|
||||
|
|
@ -1,8 +1,11 @@
|
|||
{% extends "wagtailadmin/userbar/base_item.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block item_content %}
|
||||
<form action="{% url 'wagtailadmin_pages_reject_moderation' self.revision_id %}" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="submit" value="Reject" />
|
||||
</form>
|
||||
<form action="{% url 'wagtailadmin_pages_reject_moderation' self.revision.id %}" method="post">
|
||||
{% csrf_token %}
|
||||
<div class="action icon icon-cross">
|
||||
<input type="submit" value="{% trans 'Reject' %}" />
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
@ -18,15 +18,43 @@ class EditPageItem(BaseItem):
|
|||
def render(self, request):
|
||||
# Don't render if the page doesn't have an id
|
||||
if not self.page.id:
|
||||
return
|
||||
return ""
|
||||
|
||||
# Don't render if user doesn't have permission to access the admin area
|
||||
if not request.user.has_perm('wagtailadmin.access_admin'):
|
||||
return
|
||||
|
||||
return ""
|
||||
|
||||
# Don't render if the user doesn't have permission to edit this page
|
||||
permission_checker = self.page.permissions_for_user(request.user)
|
||||
if not permission_checker.can_edit():
|
||||
return
|
||||
return ""
|
||||
|
||||
return super(EditPageItem, self).render(request)
|
||||
return super(EditPageItem, self).render(request)
|
||||
|
||||
class ModeratePageItem(BaseItem):
|
||||
|
||||
def __init__(self, page):
|
||||
self.page = page
|
||||
|
||||
def render(self, request):
|
||||
if not self.page.id:
|
||||
return ""
|
||||
|
||||
if not self.page.get_latest_revision().submitted_for_moderation:
|
||||
return ""
|
||||
|
||||
self.revision = self.page.get_latest_revision()
|
||||
|
||||
if not request.user.has_perm('wagtailadmin.access_admin'):
|
||||
return ""
|
||||
|
||||
if not self.page.permissions_for_user(request.user).can_publish():
|
||||
return ""
|
||||
|
||||
return super(ModeratePageItem, self).render(request)
|
||||
|
||||
class ApproveModerationEditPageItem(ModeratePageItem):
|
||||
template = 'wagtailadmin/userbar/approve_moderation_item.html'
|
||||
|
||||
class RejectModerationEditPageItem(ModeratePageItem):
|
||||
template = 'wagtailadmin/userbar/reject_moderation_item.html'
|
||||
|
|
|
|||
|
|
@ -611,19 +611,6 @@ def reject_moderation(request, revision_id):
|
|||
return redirect('wagtailadmin_home')
|
||||
|
||||
|
||||
class ModerationEditBirdItem(edit_bird.BaseItem):
|
||||
def __init__(self, revision_id):
|
||||
self.revision_id = revision_id
|
||||
|
||||
|
||||
class ApproveModerationEditBirdItem(ModerationEditBirdItem):
|
||||
template = 'wagtailadmin/edit_bird/approve_moderation_item.html'
|
||||
|
||||
|
||||
class RejectModerationEditBirdItem(ModerationEditBirdItem):
|
||||
template = 'wagtailadmin/edit_bird/reject_moderation_item.html'
|
||||
|
||||
|
||||
@permission_required('wagtailadmin.access_admin')
|
||||
def preview_for_moderation(request, revision_id):
|
||||
revision = get_object_or_404(PageRevision, id=revision_id)
|
||||
|
|
@ -636,10 +623,4 @@ def preview_for_moderation(request, revision_id):
|
|||
|
||||
page = revision.as_page_object()
|
||||
|
||||
request.wagtail_edit_bird_items = [
|
||||
edit_bird.EditPageItem(page),
|
||||
ApproveModerationEditBirdItem(revision.id),
|
||||
RejectModerationEditBirdItem(revision.id),
|
||||
]
|
||||
|
||||
return page.serve(request)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ from django.contrib.auth.forms import SetPasswordForm
|
|||
from django.contrib.auth.decorators import permission_required
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from wagtail.wagtailadmin.userbar import EditPageItem
|
||||
from wagtail.wagtailadmin.userbar import EditPageItem, ApproveModerationEditPageItem, RejectModerationEditPageItem
|
||||
from wagtail.wagtailadmin import hooks
|
||||
from wagtail.wagtailcore.models import Page
|
||||
|
||||
|
|
@ -20,11 +20,17 @@ def render_edit_frame(request, context):
|
|||
def userbar(request, page_id):
|
||||
items = [
|
||||
EditPageItem(Page.objects.get(id=page_id)),
|
||||
ApproveModerationEditPageItem(Page.objects.get(id=page_id)),
|
||||
RejectModerationEditPageItem(Page.objects.get(id=page_id)),
|
||||
]
|
||||
|
||||
for fn in hooks.get_hooks('construct_wagtail_edit_bird'):
|
||||
fn(request, items)
|
||||
|
||||
|
||||
for item in items:
|
||||
print item.render(request)
|
||||
|
||||
# Render the items
|
||||
rendered_items = [item.render(request) for item in items]
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue