mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-04-12 02:50:59 +00:00
renamed all userbar templates to be more uniform and changed 'edit bird' to 'userbar' throughout
This commit is contained in:
parent
d61ac002c0
commit
5e17881f2d
15 changed files with 99 additions and 183 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
@ -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 %}
|
||||
|
||||
|
|
@ -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>
|
||||
|
|
@ -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 %}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{% extends "wagtailadmin/userbar/base_item.html" %}
|
||||
{% extends "wagtailadmin/userbar/item_base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block item_content %}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{% extends "wagtailadmin/userbar/base_item.html" %}
|
||||
{% extends "wagtailadmin/userbar/item_base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block item_content %}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{% extends "wagtailadmin/userbar/base_item.html" %}
|
||||
{% extends "wagtailadmin/userbar/item_base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block item_content %}
|
||||
|
|
@ -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 ''
|
||||
|
|
@ -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 ''
|
||||
|
|
@ -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'),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
})
|
||||
Loading…
Reference in a new issue