added user bar items, improved ui

pull/2201/head
mr-winter 2016-02-05 11:34:11 +13:00 zatwierdzone przez Josh Barr
rodzic 0d021575b1
commit cb15ef271d
8 zmienionych plików z 95 dodań i 28 usunięć

Wyświetl plik

@ -1,12 +1,24 @@
'use strict'; 'use strict';
document.addEventListener('DOMContentLoaded', function() { document.addEventListener('DOMContentLoaded', function() {
var trigger = document.querySelectorAll('[data-wagtail-userbar-trigger]')[0];
var userbar = document.querySelectorAll('[data-wagtail-userbar]')[0]; var userbar = document.querySelectorAll('[data-wagtail-userbar]')[0];
var className = 'is-active'; var className = 'is-active';
userbar.addEventListener("mouseenter", showUserbar, false); if ('ontouchstart' in window) {
userbar.classList.add("touch");
} else {
userbar.classList.add("no-touch");
}
trigger.addEventListener("mouseenter", showUserbar, false);
userbar.addEventListener("mouseleave", hideUserbar, false); userbar.addEventListener("mouseleave", hideUserbar, false);
trigger.addEventListener("touchstart", toggleUserbar, false);
// make sure userbar is hidden when navigating back
window.addEventListener('pageshow', hideUserbar, false);
function showUserbar() { function showUserbar() {
userbar.classList.add(className); userbar.classList.add(className);
} }
@ -14,5 +26,8 @@ document.addEventListener('DOMContentLoaded', function() {
function hideUserbar() { function hideUserbar() {
userbar.classList.remove(className); userbar.classList.remove(className);
} }
});
function toggleUserbar() {
userbar.classList.toggle(className);
}
});

Wyświetl plik

@ -9,39 +9,33 @@ $size-home-button: 3.5em;
position: fixed; position: fixed;
z-index: 9999; z-index: 9999;
bottom: 2em; bottom: 2em;
right: 1.5em; right: 2em;
a {
display: block;
overflow: hidden;
text-decoration: none;
}
} }
.wagtail-userbar__home { .wagtail-userbar__trigger {
width: $size-home-button; width: $size-home-button;
height: $size-home-button; height: $size-home-button;
overflow: hidden;
background-color: $color-white; background-color: $color-white;
border-radius: 50%; border-radius: 50%;
color: $color-black; color: $color-black;
padding: 0; padding: 0;
&:focus, cursor: pointer;
&:hover {
color: $color-black;
}
&.icon:before { &.icon:before {
@include transition(color 0.2s ease); @include transition(color .2s ease);
font-size: 35px; font-size: 35px;
margin: 0.2em 0.15em; margin: .25em .15em .2em .175em;
display: block; display: block;
} }
box-shadow: 0 0 1px 0 rgba(107, 214, 230, 1), 0 1px 10px 0 rgba(107, 214, 230, .7); box-shadow: 0 0 1px 0 rgba(107, 214, 230, 1), 0 1px 10px 0 rgba(107, 214, 230, .7);
transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out;
&:hover { .wagtail-userbar.touch.is-active &,
.no-touch &:hover {
box-shadow: 0 0 1px 0 rgba(107, 214, 230, 1), 0 3px 15px 0 rgba(107, 214, 230, .95); box-shadow: 0 0 1px 0 rgba(107, 214, 230, 1), 0 3px 15px 0 rgba(107, 214, 230, .95);
} }
} }
@ -56,7 +50,7 @@ $size-home-button: 3.5em;
right: 0; right: 0;
margin: 0; margin: 0;
padding-bottom: $width-arrow * 2; padding-bottom: $width-arrow * 2;
min-width:16em; min-width: 17em;
visibility: hidden; visibility: hidden;
@ -93,22 +87,22 @@ $size-home-button: 3.5em;
background-color: $color-grey-1; background-color: $color-grey-1;
&:first-child { &:first-child {
border-top-left-radius: 0.5em; border-top-left-radius: .5em;
border-top-right-radius: 0.5em; border-top-right-radius: .5em;
} }
&:last-child { &:last-child {
border-bottom-right-radius: 0.5em; border-bottom-right-radius: .5em;
border-bottom-left-radius: 0.5em; border-bottom-left-radius: .5em;
} }
& + li { & + li {
border-top: 1px solid darken($color-grey-1, 4%); border-top: 1px solid darken($color-grey-1, 3%);
} }
transform: translateY(1em); transform: translateY(1em);
opacity: 0; opacity: 0;
transition-duration: .15s; transition-duration: .125s;
transition-timing-function: cubic-bezier(.55,0,.1,1); transition-timing-function: cubic-bezier(.55,0,.1,1);
.wagtail-userbar.is-active & { .wagtail-userbar.is-active & {
@ -126,6 +120,8 @@ $size-home-button: 3.5em;
li a, li a,
li .action { li .action {
color: #aaa; color: #aaa;
display: block;
text-decoration: none;
&:hover, &:hover,
&:focus { &:focus {

Wyświetl plik

@ -5,7 +5,7 @@
<link rel="stylesheet" href="{% static 'wagtailadmin/css/userbar.css' %}" type="text/css" /> <link rel="stylesheet" href="{% static 'wagtailadmin/css/userbar.css' %}" type="text/css" />
{% endcompress %} {% endcompress %}
<div class="wagtail-userbar__nav"> <div class="wagtail-userbar__nav">
<a href="{% url 'wagtailadmin_home' %}" target="_parent" class="icon icon-wagtail wagtail-userbar__home">{% trans 'Go to Wagtail admin interface' %}</a> <div class="icon icon-wagtail wagtail-userbar__trigger" data-wagtail-userbar-trigger>{% trans 'Go to Wagtail admin interface' %}</div>
<ul> <ul>
{% for item in items %} {% for item in items %}
{{ item|safe }} {{ item|safe }}

Wyświetl plik

@ -0,0 +1,8 @@
{% extends "wagtailadmin/userbar/item_base.html" %}
{% load i18n %}
{% block item_content %}
<div class="action icon icon-wagtail">
<a href="{% url 'wagtailadmin_home' %}" target="_parent" class="">{% trans 'Go to Wagtail admin' %}</a>
</div>
{% endblock %}

Wyświetl plik

@ -3,6 +3,6 @@
{% block item_content %} {% block item_content %}
<div class="action icon icon-edit"> <div class="action icon icon-edit">
<a href="{% url 'wagtailadmin_pages:edit' self.page.id %}" target="_parent" class="">{% trans 'Edit' %}</a> <a href="{% url 'wagtailadmin_pages:edit' self.page.id %}" target="_parent" class="">{% trans 'Edit this page' %}</a>
</div> </div>
{% endblock %} {% endblock %}

Wyświetl plik

@ -0,0 +1,8 @@
{% extends "wagtailadmin/userbar/item_base.html" %}
{% load i18n %}
{% block item_content %}
<div class="action icon icon-folder-open-inverse">
<a href="{% url 'wagtailadmin_explore' self.parent_page.id %}" target="_parent" class="">{% trans 'Show in Explorer' %}</a>
</div>
{% endblock %}

Wyświetl plik

@ -6,8 +6,8 @@ from wagtail.wagtailcore.models import Page, PageRevision, PAGE_TEMPLATE_VAR
from django.shortcuts import render from django.shortcuts import render
# from django.contrib.auth.decorators import permission_required # from django.contrib.auth.decorators import permission_required
from wagtail.wagtailadmin.userbar import EditPageItem, AddPageItem, ApproveModerationEditPageItem, \ from wagtail.wagtailadmin.userbar import AdminItem, ExplorePageItem, EditPageItem, AddPageItem, \
RejectModerationEditPageItem ApproveModerationEditPageItem, RejectModerationEditPageItem
from wagtail.wagtailcore import hooks from wagtail.wagtailcore import hooks
register = template.Library() register = template.Library()
@ -50,12 +50,16 @@ def wagtailuserbar(context):
if revision_id is None: if revision_id is None:
items = [ items = [
AdminItem(),
EditPageItem(Page.objects.get(id=page.id)), EditPageItem(Page.objects.get(id=page.id)),
ExplorePageItem(Page.objects.get(id=page.id)),
AddPageItem(Page.objects.get(id=page.id)), AddPageItem(Page.objects.get(id=page.id)),
] ]
else: else:
items = [ items = [
AdminItem(),
EditPageItem(PageRevision.objects.get(id=revision_id).page), EditPageItem(PageRevision.objects.get(id=revision_id).page),
ExplorePageItem(PageRevision.objects.get(id=revision_id).page),
AddPageItem(PageRevision.objects.get(id=revision_id).page), AddPageItem(PageRevision.objects.get(id=revision_id).page),
ApproveModerationEditPageItem(PageRevision.objects.get(id=revision_id)), ApproveModerationEditPageItem(PageRevision.objects.get(id=revision_id)),
RejectModerationEditPageItem(PageRevision.objects.get(id=revision_id)), RejectModerationEditPageItem(PageRevision.objects.get(id=revision_id)),

Wyświetl plik

@ -8,6 +8,18 @@ class BaseItem(object):
return render_to_string(self.template, dict(self=self, request=request), request=request) return render_to_string(self.template, dict(self=self, request=request), request=request)
class AdminItem(BaseItem):
template = 'wagtailadmin/userbar/item_admin.html'
def render(self, 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 ""
return super(AdminItem, self).render(request)
class AddPageItem(BaseItem): class AddPageItem(BaseItem):
template = 'wagtailadmin/userbar/item_page_add.html' template = 'wagtailadmin/userbar/item_page_add.html'
@ -32,6 +44,30 @@ class AddPageItem(BaseItem):
return super(AddPageItem, self).render(request) return super(AddPageItem, self).render(request)
class ExplorePageItem(BaseItem):
template = 'wagtailadmin/userbar/item_page_explore.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 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 super(ExplorePageItem, self).render(request)
class EditPageItem(BaseItem): class EditPageItem(BaseItem):
template = 'wagtailadmin/userbar/item_page_edit.html' template = 'wagtailadmin/userbar/item_page_edit.html'