implemented moderation user buttons the same as edit button

This commit is contained in:
Dave Cranwell 2014-03-13 16:20:53 +00:00
parent edd757c578
commit 637899f6c2
9 changed files with 104 additions and 48 deletions

View file

@ -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;
}
}

View file

@ -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 %}

View file

@ -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 }}

View file

@ -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 %}

View file

@ -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>

View file

@ -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 %}

View file

@ -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'

View file

@ -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)

View file

@ -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]