renamed all userbar templates to be more uniform and changed 'edit bird' to 'userbar' throughout

This commit is contained in:
Dave Cranwell 2014-03-18 16:53:56 +00:00
parent d61ac002c0
commit 5e17881f2d
15 changed files with 99 additions and 183 deletions

View file

@ -1,117 +0,0 @@
/* NB: This embedding format references ttf/eo/svg files that don't exist.
This is a deliberate means of forcing the browser to use the base64 encoded woff instead. Somehow. */
@font-face {
font-family: 'wagtailuserbar';
src: url('wagtailuserbar.eot');
}
@font-face {
font-family: 'wagtailuserbar';
src: url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff'),
url('wagtailuserbar.ttf') format('truetype'),
url('wagtailuserbar.svg#wagtailuserbar') format('svg');
font-weight: normal;
font-style: normal;
}
body{
padding-top:50px;
}
#wagtail-userbar{
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
font-family:Open Sans,sans-serif;
font-size:13px;
min-height:50px;
position:fixed;
width:100%;
top:0;
background-color:#333;
z-index:10000;
padding:10px 10px 0px 70px;
color:white;
}
#wagtail-userbar:before,
#wagtail-userbar:after {
content: " ";
display: table;
}
#wagtail-userbar:after {
clear: both;
}
#wagtail-userbar:before{
position:absolute;
font-family:wagtailuserbar;
content:"v";
width:50px;
height:100%;
min-height:50px;
line-height:57px;
font-size:40px;
background-color:blue;
display:block;
float:left;
margin:-10px 0 0 -70px;
background-color:#000;
color:white;
opacity:0.4;
text-align:center;
}
#wagtail-userbar ul,
#wagtail-userbar li{
margin:0;
padding:0;
list-style-type:none;
}
#wagtail-userbar li{
margin-bottom:10px;
}
#wagtail-userbar p{
margin:0.5em 0 1em 0;
}
#wagtail-userbar .message{
float:left;
}
#wagtail-userbar .actions{
float:right;
}
#wagtail-userbar .actions form{
float:left;
}
#wagtail-userbar .button{
border:0;
font-family:Open Sans,Arial,sans-serif;
border-radius:2px;
background-color:#666;
-webkit-font-smoothing: antialiased;
text-transform:uppercase;
padding:0.5em 1em;
float:left;
margin:0 1em 1em 0;
font-weight:normal;
font-size:0.9em;
color:white;
line-height:1.2em;
text-decoration:none;
}
#wagtail-userbar .button:hover{
background-color:#555;
}
#wagtail-userbar .button.yes{
background-color:#43b1b0;
}
#wagtail-userbar .button.yes:hover{
background-color:#2c7d7b;
}
#wagtail-userbar .button.no{
background-color:#f7474e;
}
#wagtail-userbar .button.no:hover{
background-color:#cf0911;
}

View file

@ -4,7 +4,7 @@
{% block titletag %}{% trans 'User bar' %}{% endblock %}
{% block css %}
{% compress css %}
<link rel="stylesheet" href="{{ STATIC_URL }}wagtailadmin/scss/edit_bird.scss" type="text/x-scss" />
<link rel="stylesheet" href="{{ STATIC_URL }}wagtailadmin/scss/userbar.scss" type="text/x-scss" />
{% endcompress %}
{% endblock %}

View file

@ -10,4 +10,4 @@
height:300px;
}
</style>
<iframe id="wagtail-userbar" src="{% url 'wagtailadmin_userbar' page.self.id %}" width="1000px" height="1000px" frameborder="0" allowtransparency="true" scrolling="no"></iframe>
<iframe id="wagtail-userbar" src="{% if revision_id %}{% url 'wagtailadmin_userbar_moderation' revision_id %}{% else %}{% url 'wagtailadmin_userbar_frontend' page.self.id %}{% endif %}" width="1000px" height="1000px" frameborder="0" allowtransparency="true" scrolling="no"></iframe>

View file

@ -0,0 +1,6 @@
{% extends "wagtailadmin/userbar/item_base.html" %}
{% load i18n %}
{% block item_content %}
<a href="{% url 'wagtailadmin_pages_add_subpage' self.parent_page.id %}" target="_parent" class="action icon icon-plus" title="{% trans 'Add another page at this level' %}">{% trans 'Add' %}</a>
{% endblock %}

View file

@ -1,4 +1,4 @@
{% extends "wagtailadmin/userbar/base_item.html" %}
{% extends "wagtailadmin/userbar/item_base.html" %}
{% load i18n %}
{% block item_content %}

View file

@ -1,4 +1,4 @@
{% extends "wagtailadmin/userbar/base_item.html" %}
{% extends "wagtailadmin/userbar/item_base.html" %}
{% load i18n %}
{% block item_content %}

View file

@ -1,4 +1,4 @@
{% extends "wagtailadmin/userbar/base_item.html" %}
{% extends "wagtailadmin/userbar/item_base.html" %}
{% load i18n %}
{% block item_content %}

View file

@ -1,22 +0,0 @@
from django import template
from wagtail.wagtailadmin.views import userbar
from wagtail.wagtailcore.models import Page
register = template.Library()
@register.simple_tag(takes_context=True)
def wagtail_edit_bird(context, current_page=None, items=None):
# Find page object
if not current_page:
if 'self' in context and isinstance(context['self'], Page):
current_page = context['self']
else:
return ''
# Find request object
request = context['request']
print context
# Render edit bird
return userbar.render_edit_frame(request, context) or ''

View file

@ -1,17 +1,25 @@
from django import template
from django.contrib.staticfiles.storage import staticfiles_storage
from django.utils.html import format_html, format_html_join
from wagtail.wagtailadmin.views import userbar
from wagtail.wagtailcore.models import Page
register = template.Library()
@register.simple_tag(takes_context=True)
def wagtailuserbar(context, cssfile=None):
try:
items = format_html_join(u'', u'<li>{0}</li>', [(item,) for item in context['request'].userbar])
context.hasuserbar = True
if not cssfile:
cssfile = staticfiles_storage.url('wagtailadmin/css/wagtail-userbar.css')
return format_html(u'<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans:400" /><link rel="stylesheet" href="{0}" /><ul id="wagtail-userbar">{1}</ul>', cssfile, items)
except AttributeError:
def wagtailuserbar(context, current_page=None, items=None):
# Find request object
request = context['request']
# Don't render if user doesn't have permission to access the admin area
if not request.user.has_perm('wagtailadmin.access_admin'):
return ''
# Find page object
if not current_page:
if 'self' in context and isinstance(context['self'], Page):
current_page = context['self']
else:
return ''
# Render edit bird
return userbar.render_edit_frame(request, context) or ''

View file

@ -80,5 +80,6 @@ urlpatterns += patterns(
url(r'^account/$', 'account.account', name='wagtailadmin_account'),
url(r'^account/change_password/$', 'account.change_password', name='wagtailadmin_account_change_password'),
url(r'^userbar/(\d+)/$', 'userbar.userbar', name='wagtailadmin_userbar'),
url(r'^userbar/(\d+)/$', 'userbar.for_frontend', name='wagtailadmin_userbar_frontend'),
url(r'^userbar/moderation/(\d+)/$', 'userbar.for_moderation', name='wagtailadmin_userbar_moderation'),
)

View file

@ -3,14 +3,36 @@ from django.template import RequestContext
from django.template.loader import render_to_string
class BaseItem(object):
template = 'wagtailadmin/userbar/base_item.html'
template = 'wagtailadmin/userbar/item_base.html'
def render(self, request):
return render_to_string(self.template, dict(self=self, request=request), context_instance=RequestContext(request))
class AddPageItem(BaseItem):
template = 'wagtailadmin/userbar/item_page_add.html'
def __init__(self, page):
self.page = page
self.parent_page = page.get_parent()
def render(self, request):
# Don't render if the page doesn't have an id
if not self.page.id:
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 ""
# Don't render if user doesn't have ability to add siblings
permission_checker = self.page.get_parent().permissions_for_user(request.user)
if not permission_checker.can_add_subpage():
return ""
return super(AddPageItem, self).render(request)
class EditPageItem(BaseItem):
template = 'wagtailadmin/userbar/edit_page_item.html'
template = 'wagtailadmin/userbar/item_page_edit.html'
def __init__(self, page):
self.page = page
@ -33,28 +55,26 @@ class EditPageItem(BaseItem):
class ModeratePageItem(BaseItem):
def __init__(self, page):
self.page = page
def __init__(self, revision):
self.revision = revision
def render(self, request):
if not self.page.id:
if not self.revision.id:
return ""
if not self.page.get_latest_revision().submitted_for_moderation:
if not self.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():
if not self.revision.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'
template = 'wagtailadmin/userbar/item_page_approve.html'
class RejectModerationEditPageItem(ModeratePageItem):
template = 'wagtailadmin/userbar/reject_moderation_item.html'
template = 'wagtailadmin/userbar/item_page_reject.html'

View file

@ -623,4 +623,6 @@ def preview_for_moderation(request, revision_id):
page = revision.as_page_object()
request.revision_id = revision_id
return page.serve(request)

View file

@ -6,42 +6,60 @@ 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, ApproveModerationEditPageItem, RejectModerationEditPageItem
from wagtail.wagtailadmin.userbar import EditPageItem, AddPageItem, ApproveModerationEditPageItem, RejectModerationEditPageItem
from wagtail.wagtailadmin import hooks
from wagtail.wagtailcore.models import Page
from wagtail.wagtailcore.models import Page, PageRevision
def render_edit_frame(request, context):
try:
revision_id = request.revision_id
except:
revision_id = None
# Render the frame to contain the userbar items
return render_to_string('wagtailadmin/userbar/frame.html', {
'page': context
'page': context,
'revision_id': revision_id
})
@permission_required('wagtailadmin.access_admin')
def userbar(request, page_id):
def for_frontend(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)),
AddPageItem(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]
# Remove any unrendered items
rendered_items = [item for item in rendered_items if item]
# Quit if no items rendered
if not rendered_items:
return
# Render the edit bird
return render(request, 'wagtailadmin/userbar/base.html', {
'items': rendered_items,
})
def for_moderation(request, revision_id):
items = [
EditPageItem(PageRevision.objects.get(id=revision_id).page),
AddPageItem(PageRevision.objects.get(id=revision_id).page),
ApproveModerationEditPageItem(PageRevision.objects.get(id=revision_id)),
RejectModerationEditPageItem(PageRevision.objects.get(id=revision_id)),
]
for fn in hooks.get_hooks('construct_wagtail_edit_bird'):
fn(request, items)
# Render the items
rendered_items = [item.render(request) for item in items]
# Remove any unrendered items
rendered_items = [item for item in rendered_items if item]
# Render the edit bird
return render(request, 'wagtailadmin/userbar/edit_bird.html', {
'items': [item.render(request) for item in items],
return render(request, 'wagtailadmin/userbar/base.html', {
'items': rendered_items,
})