Compare commits

...

15 Commits

Author SHA1 Message Date
Raphael Michel
55d246f82e REmove totod 2018-07-16 10:34:55 +02:00
Raphael Michel
e9f0af1898 More views 2018-07-16 10:34:23 +02:00
Raphael Michel
053de88173 Navigational context selector 2018-07-14 16:39:19 +02:00
Raphael Michel
886b938f08 Allow plugins to add sub navigation points 2018-07-14 15:07:35 +02:00
Raphael Michel
59245c4ec3 New navi mechanism 2018-07-14 14:23:12 +02:00
Raphael Michel
71664e5203 Navigation behaviour 2018-07-09 15:40:06 +02:00
Raphael Michel
ce3ae5c218 CSS changes 2018-07-09 13:41:45 +02:00
Raphael Michel
9be5ec2417 Check-in and voucher templates 2018-07-09 08:56:01 +02:00
Raphael Michel
93b07a476d Minor css changes 2018-07-09 00:23:34 +02:00
Raphael Michel
d583775132 Order-related templates 2018-07-09 00:14:22 +02:00
Raphael Michel
0daded8af5 Item-related templates 2018-07-08 23:55:26 +02:00
Raphael Michel
7b230726b0 More pages 2018-07-08 22:31:28 +02:00
Raphael Michel
365d78f63c control stylesheet 2018-07-08 18:51:34 +02:00
Raphael Michel
50aa186197 Error pages 2018-07-08 18:15:14 +02:00
Raphael Michel
32f401e423 Login page 2018-07-08 17:44:13 +02:00
158 changed files with 6473 additions and 4906 deletions

View File

@@ -1151,3 +1151,15 @@ class Quota(LoggedModel):
else: else:
if subevent: if subevent:
raise ValidationError(_('The subevent does not belong to this event.')) raise ValidationError(_('The subevent does not belong to this event.'))
def get_items_display(self):
parts = []
vars = self.variations.all()
for i in self.items.all():
if i.has_variations:
for v in vars:
if v.item_id == i.pk:
parts.append('{} {}'.format(i, v))
else:
parts.append(str(i))
return parts

View File

@@ -2,7 +2,8 @@
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Bad Request" %}{% endblock %} {% block title %}{% trans "Bad Request" %}{% endblock %}
{% block content %} {% block content %}
<i class="fa fa-frown-o big-icon"></i> <i class="fa fa-frown-o fa-fw big-icon"></i>
<div class="error-details">
<h1>{% trans "Bad Request" %}</h1> <h1>{% trans "Bad Request" %}</h1>
<p>{% trans "We were unable to parse your request." %}</p> <p>{% trans "We were unable to parse your request." %}</p>
<p>{{ exception }}</p> <p>{{ exception }}</p>
@@ -10,4 +11,5 @@
<a id='goback' href='#'>{% trans "Take a step back" %}</a> <a id='goback' href='#'>{% trans "Take a step back" %}</a>
&middot; <a id='reload' href='#'>{% trans "Try again" %}</a> &middot; <a id='reload' href='#'>{% trans "Try again" %}</a>
</p> </p>
</div>
{% endblock %} {% endblock %}

View File

@@ -2,7 +2,8 @@
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Permission denied" %}{% endblock %} {% block title %}{% trans "Permission denied" %}{% endblock %}
{% block content %} {% block content %}
<i class="fa fa-lock big-icon"></i> <i class="fa fa-fw fa-lock big-icon"></i>
<div class="error-details">
<h1>{% trans "Permission denied" %}</h1> <h1>{% trans "Permission denied" %}</h1>
<p>{% trans "You do not have access to this page." %}</p> <p>{% trans "You do not have access to this page." %}</p>
<p>{{ exception }}</p> <p>{{ exception }}</p>
@@ -10,4 +11,5 @@
<a id='goback' href='#'>{% trans "Take a step back" %}</a> <a id='goback' href='#'>{% trans "Take a step back" %}</a>
&middot; <a id='reload' href='#'>{% trans "Try again" %}</a> &middot; <a id='reload' href='#'>{% trans "Try again" %}</a>
</p> </p>
</div>
{% endblock %} {% endblock %}

View File

@@ -2,11 +2,13 @@
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Not found" %}{% endblock %} {% block title %}{% trans "Not found" %}{% endblock %}
{% block content %} {% block content %}
<i class="fa fa-meh-o big-icon"></i> <i class="fa fa-meh-o fa-fw big-icon"></i>
<div class="error-details">
<h1>{% trans "Not found" %}</h1> <h1>{% trans "Not found" %}</h1>
<p>{% trans "I'm afraid we could not find the the resource you requested." %}</p> <p>{% trans "I'm afraid we could not find the the resource you requested." %}</p>
<p>{{ exception }}</p> <p>{{ exception }}</p>
<p class="links"> <p class="links">
<a id='goback' href='#'>{% trans "Take a step back" %}</a> <a id='goback' href='#'>{% trans "Take a step back" %}</a>
</p> </p>
</div>
{% endblock %} {% endblock %}

View File

@@ -2,7 +2,8 @@
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Internal Server Error" %}{% endblock %} {% block title %}{% trans "Internal Server Error" %}{% endblock %}
{% block content %} {% block content %}
<i class="fa fa-bolt big-icon"></i> <i class="fa fa-bolt big-icon fa-fw"></i>
<div class="error-details">
<h1>{% trans "Internal Server Error" %}</h1> <h1>{% trans "Internal Server Error" %}</h1>
<p>{% trans "We had trouble processing your request." %}</p> <p>{% trans "We had trouble processing your request." %}</p>
<p>{% trans "If this problem persists, please contact us." %}</p> <p>{% trans "If this problem persists, please contact us." %}</p>
@@ -20,4 +21,5 @@
<a id='goback' href='#'>{% trans "Take a step back" %}</a> <a id='goback' href='#'>{% trans "Take a step back" %}</a>
&middot; <a id='reload' href='#'>{% trans "Try again" %}</a> &middot; <a id='reload' href='#'>{% trans "Try again" %}</a>
</p> </p>
</div>
{% endblock %} {% endblock %}

View File

@@ -2,10 +2,12 @@
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Verification failed" %}{% endblock %} {% block title %}{% trans "Verification failed" %}{% endblock %}
{% block content %} {% block content %}
<i class="fa fa-frown-o big-icon"></i> <i class="fa fa-frown-o big-icon fa-fw"></i>
<div class="error-details">
<h1>{% trans "Verification failed" %}</h1> <h1>{% trans "Verification failed" %}</h1>
<p>{% blocktrans trimmed %} <p>{% blocktrans trimmed %}
We could not verify that this request really was sent from you. For security reasons, we therefore cannot process it. We could not verify that this request really was sent from you. For security reasons, we therefore cannot
process it.
{% endblocktrans %}</p> {% endblocktrans %}</p>
{% if no_referer %} {% if no_referer %}
<p>{{ no_referer1 }}</p> <p>{{ no_referer1 }}</p>
@@ -15,10 +17,12 @@
<p>{{ no_cookie2 }}</p> <p>{{ no_cookie2 }}</p>
{% else %} {% else %}
<p>{% blocktrans trimmed %} <p>{% blocktrans trimmed %}
Please go back to the last page, refresh this page and then try again. If the problem persists, please get in touch with us. Please go back to the last page, refresh this page and then try again. If the problem persists, please
get in touch with us.
{% endblocktrans %}</p> {% endblocktrans %}</p>
{% endif %} {% endif %}
<p class="links"> <p class="links">
<a id='goback' href='#'>{% trans "Take a step back" %}</a> <a id='goback' href='#'>{% trans "Take a step back" %}</a>
</p> </p>
</div>
{% endblock %} {% endblock %}

View File

@@ -8,11 +8,14 @@ from django.utils.translation import get_language
from pretix.base.models.auth import StaffSession from pretix.base.models.auth import StaffSession
from pretix.base.settings import GlobalSettingsObject from pretix.base.settings import GlobalSettingsObject
from pretix.control.navigation import (
get_event_navigation, get_global_navigation, get_organizer_navigation,
)
from ..helpers.i18n import ( from ..helpers.i18n import (
get_javascript_format, get_javascript_output_format, get_moment_locale, get_javascript_format, get_javascript_output_format, get_moment_locale,
) )
from .signals import html_head, nav_event, nav_global, nav_topbar from .signals import html_head, nav_topbar
SessionStore = import_module(settings.SESSION_ENGINE).SessionStore SessionStore = import_module(settings.SESSION_ENGINE).SessionStore
@@ -40,10 +43,9 @@ def contextprocessor(request):
ctx['html_head'] = "".join(_html_head) ctx['html_head'] = "".join(_html_head)
_js_payment_weekdays_disabled = '[]' _js_payment_weekdays_disabled = '[]'
_nav_event = []
if getattr(request, 'event', None) and hasattr(request, 'organizer') and request.user.is_authenticated: if getattr(request, 'event', None) and hasattr(request, 'organizer') and request.user.is_authenticated:
for receiver, response in nav_event.send(request.event, request=request): ctx['nav_items'] = get_event_navigation(request)
_nav_event += response
if request.event.settings.get('payment_term_weekdays'): if request.event.settings.get('payment_term_weekdays'):
_js_payment_weekdays_disabled = '[0,6]' _js_payment_weekdays_disabled = '[0,6]'
@@ -65,17 +67,13 @@ def contextprocessor(request):
if request.GET.get('subevent', ''): if request.GET.get('subevent', ''):
# Do not use .get() for lazy evaluation # Do not use .get() for lazy evaluation
ctx['selected_subevents'] = request.event.subevents.filter(pk=request.GET.get('subevent')) ctx['selected_subevents'] = request.event.subevents.filter(pk=request.GET.get('subevent'))
elif getattr(request, 'organizer', None) and request.user.is_authenticated:
ctx['nav_items'] = get_organizer_navigation(request)
elif request.user.is_authenticated:
ctx['nav_items'] = get_global_navigation(request)
ctx['nav_event'] = _nav_event
ctx['js_payment_weekdays_disabled'] = _js_payment_weekdays_disabled ctx['js_payment_weekdays_disabled'] = _js_payment_weekdays_disabled
_nav_global = []
if not hasattr(request, 'event') and request.user.is_authenticated:
for receiver, response in nav_global.send(request, request=request):
_nav_global += response
ctx['nav_global'] = sorted(_nav_global, key=lambda n: n['label'])
_nav_topbar = [] _nav_topbar = []
if request.user.is_authenticated: if request.user.is_authenticated:
for receiver, response in nav_topbar.send(request, request=request): for receiver, response in nav_topbar.send(request, request=request):

View File

@@ -0,0 +1,440 @@
from django.http import HttpRequest
from django.urls import reverse
from django.utils.translation import pgettext_lazy, ugettext_lazy as _
from pretix.control.signals import (
nav_event, nav_event_settings, nav_global, nav_organizer,
)
def get_event_navigation(request: HttpRequest):
url = request.resolver_match
nav = [
{
'label': _('Dashboard'),
'url': reverse('control:event.index', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': (url.url_name == 'event.index'),
'icon': 'dashboard',
}
]
if 'can_change_event_settings' in request.eventpermset:
event_settings = [
{
'label': _('General'),
'url': reverse('control:event.settings', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': url.url_name == 'event.settings',
},
{
'label': _('Payment'),
'url': reverse('control:event.settings.payment', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': url.url_name == 'event.settings.payment',
},
{
'label': _('Plugins'),
'url': reverse('control:event.settings.plugins', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': url.url_name == 'event.settings.plugins',
},
{
'label': _('Display'),
'url': reverse('control:event.settings.display', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': url.url_name == 'event.settings.display',
},
{
'label': _('Tickets'),
'url': reverse('control:event.settings.tickets', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': url.url_name == 'event.settings.tickets',
},
{
'label': _('E-mail'),
'url': reverse('control:event.settings.mail', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': url.url_name == 'event.settings.mail',
},
{
'label': _('Tax rules'),
'url': reverse('control:event.settings.tax', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': url.url_name == 'event.settings.tax',
},
{
'label': _('Invoicing'),
'url': reverse('control:event.settings.invoice', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': url.url_name == 'event.settings.invoice',
},
{
'label': _('Widget'),
'url': reverse('control:event.settings.widget', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': url.url_name == 'event.settings.widget',
},
]
event_settings += sorted(
sum((list(a[1]) for a in nav_event_settings.send(request.event, request=request)), []),
key=lambda r: r['label']
)
nav.append({
'label': _('Settings'),
'url': reverse('control:event.settings', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': False,
'icon': 'wrench',
'children': event_settings
})
if request.event.has_subevents:
nav.append({
'label': pgettext_lazy('subevent', 'Dates'),
'url': reverse('control:event.subevents', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': ('event.subevent' in url.url_name),
'icon': 'calendar',
})
if 'can_change_items' in request.eventpermset:
nav.append({
'label': _('Products'),
'url': reverse('control:event.items', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': False,
'icon': 'ticket',
'children': [
{
'label': _('Products'),
'url': reverse('control:event.items', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': url.url_name in (
'event.item', 'event.items.add', 'event.items') or "event.item." in url.url_name,
},
{
'label': _('Quotas'),
'url': reverse('control:event.items.quotas', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': 'event.items.quota' in url.url_name,
},
{
'label': _('Categories'),
'url': reverse('control:event.items.categories', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': 'event.items.categories' in url.url_name,
},
{
'label': _('Questions'),
'url': reverse('control:event.items.questions', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': 'event.items.questions' in url.url_name,
},
]
})
if 'can_view_orders' in request.eventpermset:
nav.append({
'label': _('Orders'),
'url': reverse('control:event.orders', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': False,
'icon': 'shopping-cart',
'children': [
{
'label': _('All orders'),
'url': reverse('control:event.orders', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': url.url_name in ('event.orders', 'event.order') or "event.order." in url.url_name,
},
{
'label': _('Overview'),
'url': reverse('control:event.orders.overview', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': 'event.orders.overview' in url.url_name,
},
{
'label': _('Export'),
'url': reverse('control:event.orders.export', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': 'event.orders.export' in url.url_name,
},
{
'label': _('Waiting list'),
'url': reverse('control:event.orders.waitinglist', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': 'event.orders.waitinglist' in url.url_name,
},
]
})
if 'can_view_vouchers' in request.eventpermset:
nav.append({
'label': _('Vouchers'),
'url': reverse('control:event.vouchers', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': False,
'icon': 'tags',
'children': [
{
'label': _('All vouchers'),
'url': reverse('control:event.vouchers', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': url.url_name != 'event.vouchers.tags' and "event.vouchers" in url.url_name,
},
{
'label': _('Tags'),
'url': reverse('control:event.vouchers.tags', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': 'event.vouchers.tags' in url.url_name,
},
]
})
if 'can_view_orders' in request.eventpermset:
nav.append({
'label': pgettext_lazy('navigation', 'Check-in'),
'url': reverse('control:event.orders.checkinlists', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': False,
'icon': 'check-square-o',
'children': [
{
'label': _('Check-in lists'),
'url': reverse('control:event.orders.checkinlists', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': 'event.orders.checkin' in url.url_name,
},
]
})
merge_in(nav, sorted(
sum((list(a[1]) for a in nav_event.send(request.event, request=request)), []),
key=lambda r: r['label']
))
return nav
def get_global_navigation(request):
url = request.resolver_match
has_staff_session = request.user.has_active_staff_session(request.session.session_key)
nav = [
{
'label': _('Dashboard'),
'url': reverse('control:index'),
'active': (url.url_name == 'index'),
'icon': 'dashboard',
},
{
'label': _('Events'),
'url': reverse('control:events'),
'active': 'events' in url.url_name,
'icon': 'calendar',
},
{
'label': _('Organizers'),
'url': reverse('control:organizers'),
'active': 'organizers' in url.url_name,
'icon': 'group',
},
{
'label': _('Order search'),
'url': reverse('control:search.orders'),
'active': 'search.orders' in url.url_name,
'icon': 'search',
},
{
'label': _('User settings'),
'url': reverse('control:user.settings'),
'active': False,
'icon': 'user',
'children': [
{
'label': _('General'),
'url': reverse('control:user.settings'),
'active': 'user.settings' == url.url_name,
},
{
'label': _('Notifications'),
'url': reverse('control:user.settings.notifications'),
'active': 'user.settings.notifications' == url.url_name,
},
{
'label': _('2FA'),
'url': reverse('control:user.settings.2fa'),
'active': 'user.settings.2fa' in url.url_name,
},
{
'label': _('Authorized apps'),
'url': reverse('control:user.settings.oauth.list'),
'active': 'user.settings.oauth' in url.url_name,
},
{
'label': _('Account history'),
'url': reverse('control:user.settings.history'),
'active': 'user.settings.history' in url.url_name,
},
]
},
]
if has_staff_session:
nav.append({
'label': _('Users'),
'url': reverse('control:users'),
'active': False,
'icon': 'user',
'children': [
{
'label': _('All users'),
'url': reverse('control:users'),
'active': ('users' in url.url_name),
},
{
'label': _('Admin sessions'),
'url': reverse('control:user.sudo.list'),
'active': ('sudo' in url.url_name),
},
]
})
nav.append({
'label': _('Global settings'),
'url': reverse('control:global.settings'),
'active': False,
'icon': 'wrench',
'children': [
{
'label': _('Settings'),
'url': reverse('control:global.settings'),
'active': (url.url_name == 'global.settings'),
},
{
'label': _('Update check'),
'url': reverse('control:global.update'),
'active': (url.url_name == 'global.update'),
},
]
})
merge_in(nav, sorted(
sum((list(a[1]) for a in nav_global.send(request, request=request)), []),
key=lambda r: r['label']
))
return nav
def get_organizer_navigation(request):
url = request.resolver_match
nav = [
{
'label': _('Events'),
'url': reverse('control:organizer', kwargs={
'organizer': request.organizer.slug
}),
'active': url.url_name == 'organizer',
'icon': 'calendar',
},
]
if 'can_change_organizer_settings' in request.orgapermset:
nav.append({
'label': _('Settings'),
'url': reverse('control:organizer.edit', kwargs={
'organizer': request.organizer.slug
}),
'icon': 'wrench',
'children': [
{
'label': _('General'),
'url': reverse('control:organizer.edit', kwargs={
'organizer': request.organizer.slug
}),
'active': url.url_name == 'organizer.edit',
},
{
'label': _('Display'),
'url': reverse('control:organizer.display', kwargs={
'organizer': request.organizer.slug
}),
'active': url.url_name == 'organizer.display',
},
]
})
if 'can_change_teams' in request.orgapermset:
nav.append({
'label': _('Teams'),
'url': reverse('control:organizer.teams', kwargs={
'organizer': request.organizer.slug
}),
'active': 'organizer.team' in url.url_name,
'icon': 'group',
})
merge_in(nav, sorted(
sum((list(a[1]) for a in nav_organizer.send(request.organizer, request=request, organizer=request.organizer)),
[]),
key=lambda r: r['label']
))
return nav
def merge_in(nav, newnav):
for item in newnav:
if 'parent' in item:
parents = [n for n in nav if n['url'] == item['parent']]
if parents:
parents[0]['children'].append(item)
else:
nav.append(item)

View File

@@ -8,6 +8,7 @@
{% csrf_token %} {% csrf_token %}
{% bootstrap_field form.email %} {% bootstrap_field form.email %}
{% bootstrap_field form.password %} {% bootstrap_field form.password %}
{% if form.keep_logged_in %} {% if form.keep_logged_in %}
{% bootstrap_field form.keep_logged_in %} {% bootstrap_field form.keep_logged_in %}
{% endif %} {% endif %}

View File

@@ -59,7 +59,8 @@
data-payment-weekdays-disabled="{{ js_payment_weekdays_disabled }}" data-payment-weekdays-disabled="{{ js_payment_weekdays_disabled }}"
data-select2-locale="{{ select2locale }}" data-longdateformat="{{ js_long_date_format }}" class="nojs"> data-select2-locale="{{ select2locale }}" data-longdateformat="{{ js_long_date_format }}" class="nojs">
<div id="wrapper"> <div id="wrapper">
<nav class="navbar navbar-inverse navbar-static-top" role="navigation"> <nav class="navbar-static-top" role="navigation">
<div class="navbar navbar-fixed navbar-inverse ">
<div class="navbar-header"> <div class="navbar-header">
<button type="button" class="navbar-toggle" <button type="button" class="navbar-toggle"
data-toggle="collapse" data-target=".navbar-nav-collapse"> data-toggle="collapse" data-target=".navbar-nav-collapse">
@@ -94,21 +95,6 @@
</a> </a>
</div> </div>
<ul class="nav navbar-nav navbar-top-links navbar-left hidden-xs"> <ul class="nav navbar-nav navbar-top-links navbar-left hidden-xs">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-calendar"></i>
<span class="event-name">{{ request.event }}</span>
<span class="caret"></span></a>
<ul class="dropdown-menu event-dropdown" role="menu" data-event-typeahead
data-source="{% url "control:events.typeahead" %}">
<li class="query-holder">
<div class="form-box">
<input type="text" class="form-control"
placeholder="{% trans "Search for events" %}"
data-typeahead-query>
</div>
</li>
</ul>
</li>
{% if request.event %} {% if request.event %}
<li> <li>
{% if has_domain and not request.event.live %} {% if has_domain and not request.event.live %}
@@ -191,6 +177,7 @@
</a> </a>
</li> </li>
</ul> </ul>
</div>
<div class="navbar-default sidebar" role="navigation"> <div class="navbar-default sidebar" role="navigation">
<div class="sidebar-nav navbar-events-collapse navbar-collapse hidden-sm hidden-md hidden-lg mobile-event-dropdown"> <div class="sidebar-nav navbar-events-collapse navbar-collapse hidden-sm hidden-md hidden-lg mobile-event-dropdown">
<ul class="nav" data-event-typeahead data-source="{% url "control:events.typeahead" %}"> <ul class="nav" data-event-typeahead data-source="{% url "control:events.typeahead" %}">
@@ -204,59 +191,37 @@
</ul> </ul>
</div> </div>
<div class="sidebar-nav navbar-nav-collapse navbar-collapse"> <div class="sidebar-nav navbar-nav-collapse navbar-collapse">
<div class="dropdown context-selector">
{% if request.event %}
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-calendar fa-fw"></i>
<span class="event-name">{{ request.event }}</span>
<span class="caret"></span></a>
{% elif request.organizer %}
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-group fa-fw"></i>
<span class="event-name">{{ request.organizer }}</span>
<span class="caret"></span></a>
{% else %}
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-user fa-fw"></i>
<span class="event-name">{{ request.user }}</span>
<span class="caret"></span></a>
{% endif %}
<ul class="dropdown-menu event-dropdown" role="menu" data-event-typeahead
data-source="{% url "control:nav.typeahead" %}">
<li class="query-holder">
<div class="form-box">
<input type="text" class="form-control"
placeholder="{% trans "Search for events" %}"
data-typeahead-query>
</div>
</li>
</ul>
</div>
<ul class="nav" id="side-menu"> <ul class="nav" id="side-menu">
{% block nav %} {% block nav %}
<li> {% for nav in nav_items %}
<a href="{% url 'control:index' %}" {% if url_name == "index" %}class="active"{% endif %}>
<i class="fa fa-dashboard fa-fw"></i>
{% trans "Dashboard" %}
</a>
</li>
{% if staff_session %}
<li>
<a href="{% url 'control:global.settings' %}"
{% if "global.settings" in url_name %}class="active"{% endif %}>
<i class="fa fa-wrench fa-fw"></i>
{% trans "Global settings" %}
</a>
</li>
{% endif %}
<li>
<a href="{% url 'control:events' %}" {% if "events" in url_name %}class="active"{% endif %}>
<i class="fa fa-calendar fa-fw"></i>
{% trans "Events" %}
</a>
</li>
<li>
<a href="{% url 'control:organizers' %}" {% if "organizer" in url_name %}class="active"{% endif %}>
<i class="fa fa-users fa-fw"></i>
{% trans "Organizers" %}
</a>
</li>
<li>
<a href="{% url 'control:search.orders' %}"
{% if url_name == "search.orders" %}class="active"{% endif %}>
<i class="fa fa-search fa-fw"></i>
{% trans "Order search" %}
</a>
</li>
{% if staff_session %}
<li>
<a href="{% url 'control:users' %}"
{% if "users" in url_name %}class="active"{% endif %}>
<i class="fa fa-user fa-fw"></i>
{% trans "Users" %}
</a>
</li>
<li>
<a href="{% url 'control:user.sudo.list' %}"
{% if "sudo" in url_name %}class="active"{% endif %}>
<i class="fa fa-id-card fa-fw"></i>
{% trans "Admin sessions" %}
</a>
</li>
{% endif %}
{% for nav in nav_global %}
<li> <li>
<a href="{{ nav.url }}" {% if nav.active %}class="active"{% endif %} <a href="{{ nav.url }}" {% if nav.active %}class="active"{% endif %}
{% if nav.children %}class="has-children"{% endif %}> {% if nav.children %}class="has-children"{% endif %}>

View File

@@ -7,15 +7,9 @@
{% blocktrans with name=checkinlist.name %}Check-in list: {{ name }}{% endblocktrans %} {% blocktrans with name=checkinlist.name %}Check-in list: {{ name }}{% endblocktrans %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1> <div class="panel panel-with-btn panel-default">
{% blocktrans with name=checkinlist.name %}Check-in list: {{ name }}{% endblocktrans %} <div class="panel-heading">
{% if 'can_change_event_settings' in request.eventpermset %} <div class="pull-right">
<a href="{% url "control:event.orders.checkinlists.edit" event=request.event.slug organizer=request.event.organizer.slug list=checkinlist.pk %}"
class="btn btn-default">
<span class="fa fa-edit"></span>
{% trans "Edit list" %}
</a>
{% endif %}
<a href="{% url "control:event.orders.export" event=request.event.slug organizer=request.event.organizer.slug %}?identifier=checkinlistpdf&checkinlistpdf-list={{ checkinlist.pk }}" <a href="{% url "control:event.orders.export" event=request.event.slug organizer=request.event.organizer.slug %}?identifier=checkinlistpdf&checkinlistpdf-list={{ checkinlist.pk }}"
class="btn btn-default" target="_blank"> class="btn btn-default" target="_blank">
<span class="fa fa-download"></span> <span class="fa fa-download"></span>
@@ -26,8 +20,39 @@
<span class="fa fa-download"></span> <span class="fa fa-download"></span>
{% trans "CSV" %} {% trans "CSV" %}
</a> </a>
{% if 'can_change_event_settings' in request.eventpermset %}
<a href="{% url "control:event.orders.checkinlists.edit" event=request.event.slug organizer=request.event.organizer.slug list=checkinlist.pk %}"
class="btn btn-default">
<span class="fa fa-edit"></span>
{% trans "Edit list" %}
</a>
{% endif %}
</div>
<h1 class="panel-title">
{% blocktrans with name=checkinlist.name %}Check-in list: {{ name }}{% endblocktrans %}
</h1> </h1>
<form class="row filter-form" action="" method="get"> </div>
<div class="panel-body">
<dl class="dl-horizontal dl-left">
<dt>{% trans "Products" %}</dt>
<dd>
{% if checkinlist.all_products %}
{% trans "All" %}
{% else %}
{{ checkinlist.limit_products.all|join:"<br>" }}
{% endif %}
</dd>
<dt>{% trans "Orders" %}</dt>
<dd>{% if checkinlist.include_pending %}{% trans "Pending and paid" %}{% else %}{% trans "Only paid orders" %}{% endif %}</dd>
{% if checkinlist.subevent %}
<dt>{% trans "Date" context "subevent" %}</dt>
<dd>{{ checkinlist.subevent }}</dd>
{% endif %}
</dl>
</div>
</div>
<div class="panel panel-default">
<form class="panel-body row filter-form" action="" method="get">
<div class="col-md-4 col-sm-6 col-xs-12"> <div class="col-md-4 col-sm-6 col-xs-12">
{% bootstrap_field filter_form.user layout='inline' %} {% bootstrap_field filter_form.user layout='inline' %}
</div> </div>
@@ -47,7 +72,7 @@
</div> </div>
</form> </form>
{% if entries|length == 0 %} {% if entries|length == 0 %}
<div class="empty-collection"> <div class="panel-body empty-collection">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
No attendee record was found. No attendee record was found.
@@ -55,25 +80,40 @@
</p> </p>
</div> </div>
{% else %} {% else %}
<form method="post" action=""> <form method="post" action="" class="table-responsive">
{% csrf_token %} {% csrf_token %}
<div class="table-responsive">
<table class="table table-condensed table-hover"> <table class="table table-condensed table-hover">
<thead> <thead>
<tr> <tr>
<th></th> <th></th>
<th>{% trans "Order code" %} <a href="?{% url_replace request 'ordering' '-code'%}"><i class="fa fa-caret-down"></i></a> <th>{% trans "Order code" %} <a href="?{% url_replace request 'ordering' '-code' %}">
<a href="?{% url_replace request 'ordering' 'code'%}"><i class="fa fa-caret-up"></i></a></th> <i class="fa fa-caret-down"></i></a>
<th>{% trans "Item" %} <a href="?{% url_replace request 'ordering' '-item'%}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' 'code' %}">
<a href="?{% url_replace request 'ordering' 'item'%}"><i class="fa fa-caret-up"></i></a></th> <i class="fa fa-caret-up"></i></a>
<th>{% trans "Email" %} <a href="?{% url_replace request 'ordering' '-email'%}"><i class="fa fa-caret-down"></i></a> </th>
<a href="?{% url_replace request 'ordering' 'email'%}"><i class="fa fa-caret-up"></i></a></th> <th>{% trans "Item" %} <a href="?{% url_replace request 'ordering' '-item' %}">
<th>{% trans "Name" %} <a href="?{% url_replace request 'ordering' '-name'%}"><i class="fa fa-caret-down"></i></a> <i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'name'%}"><i class="fa fa-caret-up"></i></a></th> <a href="?{% url_replace request 'ordering' 'item' %}">
<th>{% trans "Status" %} <a href="?{% url_replace request 'ordering' '-status'%}"><i class="fa fa-caret-down"></i></a> <i class="fa fa-caret-up"></i></a>
<a href="?{% url_replace request 'ordering' 'status'%}"><i class="fa fa-caret-up"></i></a></th> </th>
<th>{% trans "Timestamp" %} <a href="?{% url_replace request 'ordering' '-timestamp'%}"><i class="fa fa-caret-down"></i></a> <th>{% trans "Email" %} <a href="?{% url_replace request 'ordering' '-email' %}">
<a href="?{% url_replace request 'ordering' 'timestamp'%}"><i class="fa fa-caret-up"></i></a></th> <i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'email' %}">
<i class="fa fa-caret-up"></i></a>
</th>
<th>{% trans "Name" %} <a href="?{% url_replace request 'ordering' '-name' %}">
<i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'name' %}">
<i class="fa fa-caret-up"></i></a>
</th>
<th>{% trans "Status" %} <a href="?{% url_replace request 'ordering' '-status' %}">
<i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'status' %}"><i class="fa fa-caret-up"></i></a>
</th>
<th>{% trans "Timestamp" %} <a href="?{% url_replace request 'ordering' '-timestamp' %}">
<i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'timestamp' %}">
<i class="fa fa-caret-up"></i></a></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -81,11 +121,13 @@
<tr> <tr>
<td> <td>
{% if "can_change_orders" in request.eventpermset %} {% if "can_change_orders" in request.eventpermset %}
<input type="checkbox" name="checkin" id="id_checkin" class="" value="{{ e.pk }}"/> <input type="checkbox" name="checkin" id="id_checkin" class=""
value="{{ e.pk }}"/>
{% endif %} {% endif %}
</td> </td>
<td> <td>
<strong><a href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=e.order.code %}">{{ e.order.code }}</a></strong> <strong><a
href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=e.order.code %}">{{ e.order.code }}</a></strong>
{% if e.order.status == "n" %} {% if e.order.status == "n" %}
<span class="label label-warning">{% trans "unpaid" %}</span> <span class="label label-warning">{% trans "unpaid" %}</span>
{% endif %} {% endif %}
@@ -115,13 +157,17 @@
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div>
{% if "can_change_orders" in request.eventpermset %} {% if "can_change_orders" in request.eventpermset %}
<div class="panel-footer">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">
{% trans "Check-In selected attendees" %} {% trans "Check-In selected attendees" %}
</button> </button>
</div>
{% endif %} {% endif %}
</form> </form>
<div class="panel-footer">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
{% endif %} {% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -3,7 +3,11 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Delete check-in list" %}{% endblock %} {% block title %}{% trans "Delete check-in list" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Delete check-in list" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Delete check-in list" %}</h1>
</div>
<div class="panel-body">
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
<p>{% blocktrans with name=checkinlist.name %}Are you sure you want to delete the check-in list <strong>{{ name }}</strong>?{% endblocktrans %}</p> <p>{% blocktrans with name=checkinlist.name %}Are you sure you want to delete the check-in list <strong>{{ name }}</strong>?{% endblocktrans %}</p>
@@ -22,4 +26,6 @@
</button> </button>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -9,22 +9,30 @@
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block inside %} {% block inside %}
{% if checkinlist %}
<h1>{% blocktrans with name=checkinlist.name %}Check-in list: {{ name }}{% endblocktrans %}</h1>
{% else %}
<h1>{% trans "Check-in list" %}</h1>
{% endif %}
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
<fieldset> <fieldset class="panel panel-default">
<legend>{% trans "General information" %}</legend> <div class="panel-heading">
{% if checkinlist %}
<h1 class="panel-title">{% blocktrans with name=checkinlist.name %}Check-in list: {{ name }}{% endblocktrans %}</h1>
{% else %}
<h1 class="panel-title">{% trans "Check-in list" %}</h1>
{% endif %}
</div>
<div class="panel-body">
{% bootstrap_field form.name layout="control" %} {% bootstrap_field form.name layout="control" %}
{% if form.subevent %} {% if form.subevent %}
{% bootstrap_field form.subevent layout="control" %} {% bootstrap_field form.subevent layout="control" %}
{% endif %} {% endif %}
{% bootstrap_field form.include_pending layout="control" %} {% bootstrap_field form.include_pending layout="control" %}
</div>
</fieldset>
<fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Products" %}</legend> <legend>{% trans "Products" %}</legend>
</div>
<div class="panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
Please select the products that should be part of this check-in list. Please select the products that should be part of this check-in list.
@@ -32,6 +40,7 @@
</p> </p>
{% bootstrap_field form.all_products layout="control" %} {% bootstrap_field form.all_products layout="control" %}
{% bootstrap_field form.limit_products layout="control" %} {% bootstrap_field form.limit_products layout="control" %}
</div>
</fieldset> </fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">

View File

@@ -2,32 +2,39 @@
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Check-in lists" %}{% endblock %} {% block title %}{% trans "Check-in lists" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Check-in lists" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Check-in lists" %}</h1>
</div>
<div class="panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You can create check-in lists that you can use e.g. at the entrance of your event to track who is coming You can create check-in lists that you can use e.g. at the entrance of your event to track who is
and if they actually bought a ticket. You can do this process by printing out the list on paper, using this coming and if they actually bought a ticket. You can do this process by printing out the list on paper,
web interface or by using one of our mobile or desktop apps to automatically scan tickets. using this web interface or by using one of our mobile or desktop apps to automatically scan tickets.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You can create multiple check-in lists to separate multiple parts of your event, for example if you have You can create multiple check-in lists to separate multiple parts of your event, for example if you
separate entries for multiple ticket types. Different check-in lists are completely independent: If a ticket have separate entries for multiple ticket types. Different check-in lists are completely independent: If
shows up on two lists, it is valid once on every list. This might be useful if you run a festival with a ticket shows up on two lists, it is valid once on every list. This might be useful if you run a
festival passes that allow access to every or multiple performances as well as tickets only valid for single festival with festival passes that allow access to every or multiple performances as well as tickets only valid
performances. for single performances.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
</div>
</div>
<div class="panel panel-default">
{% if request.event.has_subevents %} {% if request.event.has_subevents %}
<form class="form-inline helper-display-inline" action="" method="get"> <form class="panel-body form-inline helper-display-inline" action="" method="get">
<form class="form-inline helper-display-inline" action="" method="get"> <form class="form-inline helper-display-inline" action="" method="get">
{% include "pretixcontrol/event/fragment_subevent_choice_simple.html" %} {% include "pretixcontrol/event/fragment_subevent_choice_simple.html" %}
</form> </form>
</form> </form>
{% endif %} {% endif %}
{% if checkinlists|length == 0 %} {% if checkinlists|length == 0 %}
<div class="empty-collection"> <div class="empty-collection panel-body">
<p> <p>
{% if request.GET.subevent %} {% if request.GET.subevent %}
{% trans "Your search did not match any check-in lists." %} {% trans "Your search did not match any check-in lists." %}
@@ -46,10 +53,11 @@
</div> </div>
{% else %} {% else %}
{% if "can_change_event_settings" in request.eventpermset %} {% if "can_change_event_settings" in request.eventpermset %}
<p> <div class="panel-body">
<a href="{% url "control:event.orders.checkinlists.add" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new check-in list" %} <a href="{% url "control:event.orders.checkinlists.add" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new check-in list" %}
</a> </a>
</p> </div>
{% endif %} {% endif %}
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover table-quotas"> <table class="table table-hover table-quotas">
@@ -68,7 +76,10 @@
{% for cl in checkinlists %} {% for cl in checkinlists %}
<tr> <tr>
<td> <td>
<strong><a href="{% url "control:event.orders.checkinlists.show" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}">{{ cl.name }}</a></strong> <strong><a
href="{% url "control:event.orders.checkinlists.show" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}">
{{ cl.name }}
</a></strong>
</td> </td>
<td> <td>
<div class="quotabox availability"> <div class="quotabox availability">
@@ -77,7 +88,8 @@
</div> </div>
</div> </div>
<div class="numbers"> <div class="numbers">
{{ cl.checkin_count|default_if_none:"0" }} / {{ cl.position_count|default_if_none:"0" }} {{ cl.checkin_count|default_if_none:"0" }} /
{{ cl.position_count|default_if_none:"0" }}
</div> </div>
</div> </div>
</td> </td>
@@ -98,10 +110,13 @@
{% endif %} {% endif %}
</td> </td>
<td class="text-right"> <td class="text-right">
<a href="{% url "control:event.orders.checkinlists.show" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}" class="btn btn-default btn-sm"><i class="fa fa-eye"></i></a> <a href="{% url "control:event.orders.checkinlists.show" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}"
class="btn btn-default btn-sm"><i class="fa fa-eye"></i></a>
{% if "can_change_event_settings" in request.eventpermset %} {% if "can_change_event_settings" in request.eventpermset %}
<a href="{% url "control:event.orders.checkinlists.edit" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a> <a href="{% url "control:event.orders.checkinlists.edit" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}"
<a href="{% url "control:event.orders.checkinlists.delete" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a> class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
<a href="{% url "control:event.orders.checkinlists.delete" organizer=request.event.organizer.slug event=request.event.slug list=cl.id %}"
class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
{% endif %} {% endif %}
</td> </td>
</tr> </tr>
@@ -109,6 +124,9 @@
</tbody> </tbody>
</table> </table>
</div> </div>
{% endif %} <div class="panel-footer">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
{% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -2,7 +2,10 @@
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Current issues" %}{% endblock %} {% block title %}{% trans "Current issues" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Current issues" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Current issues" %}</h1>
</div>
<ul class="list-group"> <ul class="list-group">
{% for action in actions %} {% for action in actions %}
<li class="list-group-item logentry"> <li class="list-group-item logentry">
@@ -11,7 +14,8 @@
class="btn btn-default btn-xs pull-right"> class="btn btn-default btn-xs pull-right">
{% trans "Hide message" %} {% trans "Hide message" %}
</a> </a>
<small><span class="fa fa-clock-o"></span> {{ action.datetime|date:"SHORT_DATETIME_FORMAT" }}</small> <small><span class="fa fa-clock-o"></span> {{ action.datetime|date:"SHORT_DATETIME_FORMAT" }}
</small>
</p> </p>
{{ action.display|safe }} {{ action.display|safe }}
</li> </li>
@@ -21,5 +25,8 @@
</div> </div>
{% endfor %} {% endfor %}
</ul> </ul>
<div class="panel-footer">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -2,152 +2,3 @@
{% load i18n %} {% load i18n %}
{% load staticfiles %} {% load staticfiles %}
{% block title %}{{ request.event.name }}{% endblock %} {% block title %}{{ request.event.name }}{% endblock %}
{% block nav %}
<li>
<a href="{% url 'control:event.index' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if url_name == "event.index" %}class="active"{% endif %}>
<i class="fa fa-dashboard fa-fw"></i>
{% trans "Event dashboard" %}
</a>
</li>
{% if 'can_change_event_settings' in request.eventpermset %}
<li>
<a href="{% url 'control:event.settings' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if is_event_settings or "event.settings" == url_name or "event.settings." in url_name %}class="active"{% endif %}>
<i class="fa fa-wrench fa-fw"></i>
{% trans "Settings" %}
</a>
</li>
{% if request.event.has_subevents %}
<li>
<a href="{% url 'control:event.subevents' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if "event.subevent" in url_name %}class="active"{% endif %}>
<i class="fa fa-calendar fa-fw"></i>
{% trans "Dates" context "subevent" %}
</a>
</li>
{% endif %}
{% endif %}
{% if 'can_change_items' in request.eventpermset %}
<li>
<a href="{% url 'control:event.items' organizer=request.event.organizer.slug event=request.event.slug %}"
class="has-children">
<i class="fa fa-ticket fa-fw"></i>
{% trans "Products" %}
</a>
<a href="#" class="arrow">
<span class="fa arrow"></span>
</a>
<ul class="nav nav-second-level">
<li>
<a href="{% url 'control:event.items' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if "event.items" == url_name or "event.item." in url_name or "event.items.add" == url_name or url_name == "event.item" %}class="active"{% endif %}>
{% trans "Products" %}</a>
</li>
<li>
<a href="{% url 'control:event.items.quotas' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if "event.items.quotas" in url_name %}class="active"{% endif %}>
{% trans "Quotas" %}
</a>
</li>
<li>
<a href="{% url 'control:event.items.categories' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if "event.items.categories" in url_name %}class="active"{% endif %}>
{% trans "Categories" %}
</a>
</li>
<li>
<a href="{% url 'control:event.items.questions' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if "event.items.questions" in url_name %}class="active"{% endif %}>
{% trans "Questions" %}
</a>
</li>
</ul>
</li>
{% endif %}
{% if 'can_view_orders' in request.eventpermset %}
<li>
<a href="{% url 'control:event.orders' organizer=request.event.organizer.slug event=request.event.slug %}"
class="has-children">
<i class="fa fa-shopping-cart fa-fw"></i>
{% trans "Orders" %}
</a>
<a href="#" class="arrow">
<span class="fa arrow"></span>
</a>
<ul class="nav nav-second-level">
<li>
<a href="{% url 'control:event.orders' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if url_name == "event.orders" or "event.order." in url_name or url_name == "event.order" %}class="active"{% endif %}>
{% trans "All orders" %}
</a>
</li>
<li>
<a href="{% url 'control:event.orders.overview' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if url_name == "event.orders.overview" %}class="active"{% endif %}>
{% trans "Overview" %}
</a>
</li>
<li>
<a href="{% url 'control:event.orders.export' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if url_name == "event.orders.export" %}class="active"{% endif %}>
{% trans "Export" %}
</a>
</li>
<li>
<a href="{% url 'control:event.orders.waitinglist' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if url_name == "event.orders.waitinglist" %}class="active"{% endif %}>
{% trans "Waiting list" %}
</a>
</li>
</ul>
</li>
{% endif %}
{% if 'can_view_vouchers' in request.eventpermset %}
<li>
<a href="{% url 'control:event.vouchers' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if url_name == "event.voucher" %}class="active"{% endif %}>
<i class="fa fa-tags fa-fw"></i>
{% trans "Vouchers" %}
</a>
</li>
{% endif %}
{% if 'can_view_orders' in request.eventpermset %}
<li>
<a href="{% url 'control:event.orders.checkinlists' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if "event.orders.checkin" in url_name %}class="active"{% endif %}>
<i class="fa fa-check-square-o fa-fw"></i>
{% trans "Check-in lists" %}
</a>
</li>
{% endif %}
{% for nav in nav_event %}
<li>
<a href="{{ nav.url }}" {% if nav.active %}class="active"{% endif %}
{% if nav.children %}class="has-children"{% endif %}>
{% if nav.icon and "." in nav.icon %}
<img src="{% static nav.icon %}" class="fa-img">
{% elif nav.icon %}
<i class="fa fa-{{ nav.icon }} fa-fw"></i>
{% endif %}
{{ nav.label }}
</a>
{% if nav.children %}
<a href="#" class="arrow">
<span class="fa arrow"></span>
</a>
<ul class="nav nav-second-level">
{% for item in nav.children %}
<li>
<a href="{{ item.url }}"
{% if item.active %}class="active"{% endif %}>
{{ item.label }}
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
{% endblock %}

View File

@@ -2,7 +2,11 @@
{% load i18n %} {% load i18n %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% block content %} {% block content %}
<h1>{% trans "Delete event" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">{% trans "Delete event" %}</h2>
</div>
<div class="panel-body">
{% if request.event.allow_delete %} {% if request.event.allow_delete %}
{% bootstrap_form_errors form layout="inline" %} {% bootstrap_form_errors form layout="inline" %}
<p> <p>
@@ -57,7 +61,8 @@
<input type="hidden" name="live" value="false"> <input type="hidden" name="live" value="false">
<div class="form-group submit-group"> <div class="form-group submit-group">
<a href="{% url "control:event.shredder.start" event=request.event.slug organizer=request.organizer.slug %}" class="btn btn-danger btn-save"> <a href="{% url "control:event.shredder.start" event=request.event.slug organizer=request.organizer.slug %}"
class="btn btn-danger btn-save">
<span class="fa fa-eraser"></span> <span class="fa fa-eraser"></span>
{% trans "Delete personal data" %} {% trans "Delete personal data" %}
</a> </a>
@@ -71,7 +76,8 @@
<p> <p>
{% trans "However, since your shop is offline, it is only visible to the organizing team according to the permissions you configured." %} {% trans "However, since your shop is offline, it is only visible to the organizing team according to the permissions you configured." %}
<div class="form-group submit-group"> <div class="form-group submit-group">
<a href="{% url "control:event.shredder.start" event=request.event.slug organizer=request.organizer.slug %}" class="btn btn-danger btn-save"> <a href="{% url "control:event.shredder.start" event=request.event.slug organizer=request.organizer.slug %}"
class="btn btn-danger btn-save">
<span class="fa fa-eraser"></span> <span class="fa fa-eraser"></span>
{% trans "Delete personal data" %} {% trans "Delete personal data" %}
</a> </a>
@@ -79,4 +85,6 @@
</p> </p>
{% endif %} {% endif %}
{% endif %} {% endif %}
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -6,22 +6,30 @@
<form action="" method="post" class="form-horizontal" enctype="multipart/form-data"> <form action="" method="post" class="form-horizontal" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Event page" %}</legend> <legend>{% trans "Event page" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.logo_image layout="control" %} {% bootstrap_field form.logo_image layout="control" %}
{% bootstrap_field form.frontpage_text layout="control" %} {% bootstrap_field form.frontpage_text layout="control" %}
{% bootstrap_field form.show_variations_expanded layout="control" %} {% bootstrap_field form.show_variations_expanded layout="control" %}
{% if form.frontpage_subevent_ordering %} {% if form.frontpage_subevent_ordering %}
{% bootstrap_field form.frontpage_subevent_ordering layout="control" %} {% bootstrap_field form.frontpage_subevent_ordering layout="control" %}
{% endif %} {% endif %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Shop design" %}</legend> <legend>{% trans "Shop design" %}</legend>
</div>
<div class="panel-body">
{% url "control:organizer.display" organizer=request.organizer.slug as org_url %} {% url "control:organizer.display" organizer=request.organizer.slug as org_url %}
{% propagated request.event org_url "primary_color" "primary_font" %} {% propagated request.event org_url "primary_color" "primary_font" %}
{% bootstrap_field form.primary_color layout="control" %} {% bootstrap_field form.primary_color layout="control" %}
{% bootstrap_field form.primary_font layout="control" %} {% bootstrap_field form.primary_font layout="control" %}
{% endpropagated %} {% endpropagated %}
</div>
</fieldset> </fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">

View File

@@ -5,6 +5,8 @@
{% load staticfiles %} {% load staticfiles %}
{% block title %}{{ request.event.name }}{% endblock %} {% block title %}{{ request.event.name }}{% endblock %}
{% block content %} {% block content %}
<div class="panel panel-default">
<div class="panel-body">
<h1> <h1>
{{ request.event.name }} {{ request.event.name }}
<small> <small>
@@ -15,6 +17,8 @@
{% endif %} {% endif %}
</small> </small>
</h1> </h1>
</div>
</div>
{% if actions|length > 0 %} {% if actions|length > 0 %}
<div class="panel panel-danger"> <div class="panel panel-danger">
<div class="panel-heading"> <div class="panel-heading">
@@ -71,7 +75,6 @@
{% endfor %} {% endfor %}
</div> </div>
<p>&nbsp;</p>
<div class="panel panel-default items"> <div class="panel panel-default items">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title"> <h3 class="panel-title">

View File

@@ -5,8 +5,11 @@
<form action="" method="post" class="form-horizontal" enctype="multipart/form-data"> <form action="" method="post" class="form-horizontal" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Invoicing" %}</legend> <legend>{% trans "Invoicing" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.invoice_address_asked layout="control" %} {% bootstrap_field form.invoice_address_asked layout="control" %}
{% bootstrap_field form.invoice_address_required layout="control" %} {% bootstrap_field form.invoice_address_required layout="control" %}
{% bootstrap_field form.invoice_name_required layout="control" %} {% bootstrap_field form.invoice_name_required layout="control" %}
@@ -24,14 +27,16 @@
{% bootstrap_field form.invoice_additional_text layout="control" %} {% bootstrap_field form.invoice_additional_text layout="control" %}
{% bootstrap_field form.invoice_footer_text layout="control" %} {% bootstrap_field form.invoice_footer_text layout="control" %}
{% bootstrap_field form.invoice_logo_image layout="control" %} {% bootstrap_field form.invoice_logo_image layout="control" %}
</fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-default btn-lg" name="preview" value="preview" formtarget="_blank"> <button type="submit" class="btn btn-default btn-lg" name="preview" value="preview"
formtarget="_blank">
{% trans "Save and show preview" %} {% trans "Save and show preview" %}
</button> </button>
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">
{% trans "Save" %} {% trans "Save" %}
</button> </button>
</div> </div>
</div>
</fieldset>
</form> </form>
{% endblock %} {% endblock %}

View File

@@ -2,7 +2,11 @@
{% load i18n %} {% load i18n %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% block content %} {% block content %}
<h1>{% trans "Shop status" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Shop status" %}</h1>
</div>
<div class="panel-body">
{% if request.event.live %} {% if request.event.live %}
<p> <p>
{% trans "Your shop is currently live. If you take it down, it will only be visible to you and your team." %} {% trans "Your shop is currently live. If you take it down, it will only be visible to you and your team." %}
@@ -48,4 +52,6 @@
</form> </form>
{% endif %} {% endif %}
{% endif %} {% endif %}
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -3,9 +3,11 @@
{% load staticfiles %} {% load staticfiles %}
{% block title %}{% trans "Event logs" %}{% endblock %} {% block title %}{% trans "Event logs" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Event logs" %}</h1> <div class="panel panel-default">
<form class="form-inline helper-display-inline" action="" method="get"> <div class="panel-heading">
<p> <h1 class="panel-title">{% trans "Event logs" %}</h1>
</div>
<form class="form-inline panel-body" action="" method="get">
<select name="user" class="form-control"> <select name="user" class="form-control">
<option value="">{% trans "All actions" %}</option> <option value="">{% trans "All actions" %}</option>
<option value="yes" {% if request.GET.user == "yes" %}selected="selected"{% endif %}> <option value="yes" {% if request.GET.user == "yes" %}selected="selected"{% endif %}>
@@ -24,7 +26,6 @@
{% endfor %} {% endfor %}
</select> </select>
<button class="btn btn-primary" type="submit">{% trans "Filter" %}</button> <button class="btn btn-primary" type="submit">{% trans "Filter" %}</button>
</p>
</form> </form>
<ul class="list-group"> <ul class="list-group">
{% for log in logs %} {% for log in logs %}
@@ -75,5 +76,8 @@
</div> </div>
{% endfor %} {% endfor %}
</ul> </ul>
<div class="panel-footer">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -6,16 +6,18 @@
mail-preview-url="{% url "control:event.settings.mail.preview" event=request.event.slug organizer=request.event.organizer.slug %}"> mail-preview-url="{% url "control:event.settings.mail.preview" event=request.event.slug organizer=request.event.organizer.slug %}">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "E-mail settings" %}</legend> <legend>{% trans "E-mail settings" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.mail_prefix layout="control" %} {% bootstrap_field form.mail_prefix layout="control" %}
{% bootstrap_field form.mail_from layout="control" %} {% bootstrap_field form.mail_from layout="control" %}
{% bootstrap_field form.mail_text_signature layout="control" %} {% bootstrap_field form.mail_text_signature layout="control" %}
{% bootstrap_field form.mail_bcc layout="control" %} {% bootstrap_field form.mail_bcc layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <div class="" id="questions_group">
<legend>{% trans "E-mail content" %}</legend>
<div class="panel-group" id="questions_group">
{% blocktrans asvar title_placed_order %}Placed order{% endblocktrans %} {% blocktrans asvar title_placed_order %}Placed order{% endblocktrans %}
{% include "pretixcontrol/event/mail_settings_fragment.html" with pid="order_placed" title=title_placed_order items="mail_text_order_placed" %} {% include "pretixcontrol/event/mail_settings_fragment.html" with pid="order_placed" title=title_placed_order items="mail_text_order_placed" %}
@@ -46,9 +48,11 @@
{% blocktrans asvar title_download_tickets_reminder %}Reminder to download tickets{% endblocktrans %} {% blocktrans asvar title_download_tickets_reminder %}Reminder to download tickets{% endblocktrans %}
{% include "pretixcontrol/event/mail_settings_fragment.html" with pid="ticket_reminder" title=title_download_tickets_reminder items="mail_days_download_reminder,mail_text_download_reminder" exclude="mail_days_download_reminder" %} {% include "pretixcontrol/event/mail_settings_fragment.html" with pid="ticket_reminder" title=title_download_tickets_reminder items="mail_days_download_reminder,mail_text_download_reminder" exclude="mail_days_download_reminder" %}
</div> </div>
</fieldset> <fieldset class="panel panel-default">
<fieldset> <div class="panel-heading">
<legend>{% trans "SMTP settings" %}</legend> <legend>{% trans "SMTP settings" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.smtp_use_custom layout="control" %} {% bootstrap_field form.smtp_use_custom layout="control" %}
{% bootstrap_field form.smtp_host layout="control" %} {% bootstrap_field form.smtp_host layout="control" %}
{% bootstrap_field form.smtp_port layout="control" %} {% bootstrap_field form.smtp_port layout="control" %}
@@ -56,6 +60,7 @@
{% bootstrap_field form.smtp_password layout="control" %} {% bootstrap_field form.smtp_password layout="control" %}
{% bootstrap_field form.smtp_use_tls layout="control" %} {% bootstrap_field form.smtp_use_tls layout="control" %}
{% bootstrap_field form.smtp_use_ssl layout="control" %} {% bootstrap_field form.smtp_use_ssl layout="control" %}
</div>
</fieldset> </fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">

View File

@@ -4,7 +4,10 @@
<details class="panel panel-default"> <details class="panel panel-default">
<summary class="panel-heading"> <summary class="panel-heading">
<h4 class="panel-title"> <h4 class="panel-title">
<span>
{% trans "E-mail content:" %}
<strong>{% trans title %}</strong> <strong>{% trans title %}</strong>
</span>
<i class="fa fa-angle-down collapse-indicator"></i> <i class="fa fa-angle-down collapse-indicator"></i>
</h4> </h4>
</summary> </summary>

View File

@@ -4,8 +4,10 @@
{% block inside %} {% block inside %}
<form action="" method="post" class="form-horizontal form-plugins"> <form action="" method="post" class="form-horizontal form-plugins">
{% csrf_token %} {% csrf_token %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Payment providers" %}</legend> <legend>{% trans "Payment providers" %}</legend>
</div>
<table class="table table-payment-providers"> <table class="table table-payment-providers">
<tbody> <tbody>
{% for provider in providers %} {% for provider in providers %}
@@ -44,8 +46,11 @@
</tbody> </tbody>
</table> </table>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "General payment settings" %}</legend> <legend>{% trans "General payment settings" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_form_errors form layout="control" %} {% bootstrap_form_errors form layout="control" %}
{% bootstrap_field form.payment_term_days layout="control" %} {% bootstrap_field form.payment_term_days layout="control" %}
{% bootstrap_field form.payment_term_last layout="control" %} {% bootstrap_field form.payment_term_last layout="control" %}
@@ -53,11 +58,12 @@
{% bootstrap_field form.payment_term_expire_automatically layout="control" %} {% bootstrap_field form.payment_term_expire_automatically layout="control" %}
{% bootstrap_field form.payment_term_accept_late layout="control" %} {% bootstrap_field form.payment_term_accept_late layout="control" %}
{% bootstrap_field form.tax_rate_default layout="control" %} {% bootstrap_field form.tax_rate_default layout="control" %}
</fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">
{% trans "Save" %} {% trans "Save" %}
</button> </button>
</div> </div>
</div>
</fieldset>
</form> </form>
{% endblock %} {% endblock %}

View File

@@ -4,15 +4,20 @@
{% block inside %} {% block inside %}
<form action="" method="post" class="form-horizontal form-plugins"> <form action="" method="post" class="form-horizontal form-plugins">
{% csrf_token %} {% csrf_token %}
<fieldset> <p>
<legend>
<a href="{% url 'control:event.settings.payment' event=request.event.slug organizer=request.organizer.slug %}" <a href="{% url 'control:event.settings.payment' event=request.event.slug organizer=request.organizer.slug %}"
class="btn btn-default btn-sm btn-link"> class="btn btn-default">
<span class="fa fa-caret-left"></span> <span class="fa fa-caret-left"></span>
{% trans "Back" %} {% trans "Back" %}
</a> </a>
</p>
<fieldset class="panel panel-default">
<div class="panel-heading">
<legend>
{% trans "Payment provider:" %} {{ provider.verbose_name }} {% trans "Payment provider:" %} {{ provider.verbose_name }}
</legend> </legend>
</div>
<div class="panel-body">
{% bootstrap_form form layout='control' %} {% bootstrap_form form layout='control' %}
{% if settings_content %}{{ settings_content|safe }}{% endif %} {% if settings_content %}{{ settings_content|safe }}{% endif %}
<p>&nbsp;</p> <p>&nbsp;</p>
@@ -20,7 +25,8 @@
<strong>{% trans "Warning:" %}</strong> <strong>{% trans "Warning:" %}</strong>
{% blocktrans trimmed %} {% blocktrans trimmed %}
Please note that EU Directive 2015/2366 bans surcharging payment fees for most common payment Please note that EU Directive 2015/2366 bans surcharging payment fees for most common payment
methods within the European Union. If in doubt, consult a lawyer or refrain from charging payment methods within the European Union. If in doubt, consult a lawyer or refrain from charging
payment
fees. fees.
{% endblocktrans %} {% endblocktrans %}
<br> <br>
@@ -29,6 +35,7 @@
pass it on to your customers. pass it on to your customers.
{% endblocktrans %} {% endblocktrans %}
</div> </div>
</div>
</fieldset> </fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">

View File

@@ -4,8 +4,6 @@
{% block inside %} {% block inside %}
<form action="" method="post" class="form-horizontal form-plugins"> <form action="" method="post" class="form-horizontal form-plugins">
{% csrf_token %} {% csrf_token %}
<fieldset>
<legend>{% trans "Installed plugins" %}</legend>
{% if "success" in request.GET %} {% if "success" in request.GET %}
<div class="alert alert-success"> <div class="alert alert-success">
{% trans "Your changes have been saved." %} {% trans "Your changes have been saved." %}
@@ -22,13 +20,17 @@
</div> </div>
<div class="col-sm-4"> <div class="col-sm-4">
{% if plugin.app.compatibility_errors %} {% if plugin.app.compatibility_errors %}
<button class="btn disabled btn-block btn-default" disabled="disabled">{% trans "Incompatible" %}</button> <button class="btn disabled btn-block btn-default"
disabled="disabled">{% trans "Incompatible" %}</button>
{% elif plugin.restricted and not staff_session %} {% elif plugin.restricted and not staff_session %}
<button class="btn disabled btn-block btn-default" disabled="disabled">{% trans "Not available" %}</button> <button class="btn disabled btn-block btn-default"
disabled="disabled">{% trans "Not available" %}</button>
{% elif plugin.module in plugins_active %} {% elif plugin.module in plugins_active %}
<button class="btn btn-default btn-block" name="plugin:{{ plugin.module }}" value="disable">{% trans "Disable" %}</button> <button class="btn btn-default btn-block" name="plugin:{{ plugin.module }}"
value="disable">{% trans "Disable" %}</button>
{% else %} {% else %}
<button class="btn btn-default btn-block" name="plugin:{{ plugin.module }}" value="enable">{% trans "Enable" %}</button> <button class="btn btn-default btn-block" name="plugin:{{ plugin.module }}"
value="enable">{% trans "Enable" %}</button>
{% endif %} {% endif %}
</div> </div>
</div> </div>
@@ -74,6 +76,5 @@
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
</fieldset>
</form> </form>
{% endblock %} {% endblock %}

View File

@@ -4,34 +4,37 @@
{% load formset_tags %} {% load formset_tags %}
{% block title %}{{ request.event.name }}{% endblock %} {% block title %}{{ request.event.name }}{% endblock %}
{% block content %} {% block content %}
<div class="panel panel-default">
<div class="panel-body">
<div class="quick-setup-step"> <div class="quick-setup-step">
<div class="quick-icon"> <div class="quick-icon">
<span class="fa fa-fw fa-check-circle text-success"></span> <span class="fa fa-fw fa-check-circle text-success"></span>
</div> </div>
<div class="quick-content"> <div class="quick-content">
<h2>{% trans "Congratulations!" %}</h2> <h2>{% trans "Congratulations!" %}</h2>
<p> <p>
<strong>{% trans "You just created an event!" %}</strong> <strong>{% trans "You just created an event!" %}</strong>
</p> </p>
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You can scroll down and create your first ticket products quickly, or you can use the navigation You can scroll down and create your first ticket products quickly, or you can use the
navigation
on the left to modify the settings of your event in much more detail. on the left to modify the settings of your event in much more detail.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
</div> </div>
</div>
</div>
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
<fieldset class="quick-setup-step"> <fieldset class="panel panel-default">
<div class="quick-icon"> <div class="panel-heading">
<span class="fa fa-fw fa-ticket text-muted"></span>
</div>
<div class="quick-content">
<legend>{% trans "Create ticket types" %}</legend> <legend>{% trans "Create ticket types" %}</legend>
</div>
<div class="panel-body">
<div class="formset" data-formset data-formset-prefix="{{ formset.prefix }}"> <div class="formset" data-formset data-formset-prefix="{{ formset.prefix }}">
{{ formset.management_form }} {{ formset.management_form }}
{% bootstrap_formset_errors formset %} {% bootstrap_formset_errors formset %}
@@ -104,7 +107,9 @@
<strong>{% trans "Total capacity:" %}</strong> <strong>{% trans "Total capacity:" %}</strong>
<span id="total-capacity"></span> <span id="total-capacity"></span>
{% bootstrap_field form.total_quota layout="inline" field_class="sr-only" %} {% bootstrap_field form.total_quota layout="inline" field_class="sr-only" %}
<a href="#" data-toggle="tooltip" title="{% trans 'You can set a limit on the total number of tickets sold for your event, regardless of the ticket type.' %}" id="total-capacity-edit"> <a href="#" data-toggle="tooltip"
title="{% trans 'You can set a limit on the total number of tickets sold for your event, regardless of the ticket type.' %}"
id="total-capacity-edit">
<span class="fa fa-edit"></span> <span class="fa fa-edit"></span>
</a> </a>
</div> </div>
@@ -114,20 +119,19 @@
<p>&nbsp;</p> <p>&nbsp;</p>
<p class="bigger"> <p class="bigger">
{% blocktrans trimmed %} {% blocktrans trimmed %}
If you want to use more advanced features like non-admission products, product variations, custom If you want to use more advanced features like non-admission products, product variations,
quotas, add-on products or want to modify your ticket types in more detail, you can later do so custom quotas, add-on products or want to modify your ticket types in more detail, you can later
in the "Products" section in the navigation. Don't worry, you can change everything you input here. do so in the "Products" section in the navigation. Don't worry, you can change everything you
input here.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<p>&nbsp;</p>
</div> </div>
</fieldset> </fieldset>
<fieldset class="quick-setup-step"> <fieldset class="panel panel-default">
<div class="quick-icon"> <div class="panel-heading">
<span class="fa fa-fw fa-wrench text-muted"></span>
</div>
<div class="quick-content">
<legend>{% trans "Features" %}</legend> <legend>{% trans "Features" %}</legend>
</div>
<div class="panel-body">
<p class="bigger"> <p class="bigger">
{% blocktrans trimmed %} {% blocktrans trimmed %}
We recommend that you take some time to go through the "Settings" part of your event, but if We recommend that you take some time to go through the "Settings" part of your event, but if
@@ -138,15 +142,13 @@
{% bootstrap_field form.waiting_list_enabled layout="control" label_class="sr-only" field_class="col-md-12" %} {% bootstrap_field form.waiting_list_enabled layout="control" label_class="sr-only" field_class="col-md-12" %}
{% bootstrap_field form.show_quota_left layout="control" label_class="sr-only" field_class="col-md-12" %} {% bootstrap_field form.show_quota_left layout="control" label_class="sr-only" field_class="col-md-12" %}
{% bootstrap_field form.attendee_names_required layout="control" label_class="sr-only" field_class="col-md-12" %} {% bootstrap_field form.attendee_names_required layout="control" label_class="sr-only" field_class="col-md-12" %}
<p>&nbsp;</p>
</div> </div>
</fieldset> </fieldset>
<fieldset class="quick-setup-step" id="quick-setup-step-payment"> <fieldset class="panel panel-default" id="quick-setup-step-payment">
<div class="quick-icon"> <div class="panel-heading">
<span class="fa fa-fw fa-money text-muted"></span>
</div>
<div class="quick-content">
<legend>{% trans "Payment" %}</legend> <legend>{% trans "Payment" %}</legend>
</div>
<div class="panel-body">
<p class="bigger"> <p class="bigger">
{% blocktrans trimmed %} {% blocktrans trimmed %}
pretix supports a pretix supports a
@@ -164,21 +166,20 @@
<div data-display-dependency="#id_payment_stripe__enabled"> <div data-display-dependency="#id_payment_stripe__enabled">
<div class="alert alert-info"> <div class="alert alert-info">
{% blocktrans trimmed %} {% blocktrans trimmed %}
After you saved this page, we will redirect you to Stripe to create or connect an account After you saved this page, we will redirect you to Stripe to create or connect an
account
there. Once you completed this, you will be taken back to pretix. there. Once you completed this, you will be taken back to pretix.
{% endblocktrans %} {% endblocktrans %}
</div> </div>
</div> </div>
{% endif %} {% endif %}
<p>&nbsp;</p>
</div> </div>
</fieldset> </fieldset>
<fieldset class="quick-setup-step"> <fieldset class="panel panel-default">
<div class="quick-icon"> <div class="panel-heading">
<span class="fa fa-fw fa-envelope text-muted"></span>
</div>
<div class="quick-content">
<legend>{% trans "Getting in touch with you" %}</legend> <legend>{% trans "Getting in touch with you" %}</legend>
</div>
<div class="quick-content panel-body">
<p class="bigger"> <p class="bigger">
{% blocktrans trimmed %} {% blocktrans trimmed %}
In case something goes wrong or is unclear, we strongly suggest that you provide ways for your In case something goes wrong or is unclear, we strongly suggest that you provide ways for your

View File

@@ -5,8 +5,11 @@
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "General information" %}</legend> <legend>{% trans "General information" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.name layout="control" %} {% bootstrap_field form.name layout="control" %}
{% bootstrap_field form.slug layout="control" %} {% bootstrap_field form.slug layout="control" %}
{% bootstrap_field form.date_from layout="control" %} {% bootstrap_field form.date_from layout="control" %}
@@ -35,9 +38,13 @@
</div> </div>
</div> </div>
{% endif %} {% endif %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Display settings" %}</legend> <legend>{% trans "Display settings" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field sform.locales layout="control" %} {% bootstrap_field sform.locales layout="control" %}
{% bootstrap_field sform.locale layout="control" %} {% bootstrap_field sform.locale layout="control" %}
{% bootstrap_field sform.timezone layout="control" %} {% bootstrap_field sform.timezone layout="control" %}
@@ -48,17 +55,25 @@
{% bootstrap_field sform.confirm_text layout="control" %} {% bootstrap_field sform.confirm_text layout="control" %}
{% bootstrap_field sform.show_quota_left layout="control" %} {% bootstrap_field sform.show_quota_left layout="control" %}
{% bootstrap_field sform.display_net_prices layout="control" %} {% bootstrap_field sform.display_net_prices layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Timeline" %}</legend> <legend>{% trans "Timeline" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.presale_start layout="control" %} {% bootstrap_field form.presale_start layout="control" %}
{% bootstrap_field sform.presale_start_show_date layout="control" %} {% bootstrap_field sform.presale_start_show_date layout="control" %}
{% bootstrap_field form.presale_end layout="control" %} {% bootstrap_field form.presale_end layout="control" %}
{% bootstrap_field sform.show_items_outside_presale_period layout="control" %} {% bootstrap_field sform.show_items_outside_presale_period layout="control" %}
{% bootstrap_field sform.last_order_modification_date layout="control" %} {% bootstrap_field sform.last_order_modification_date layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Orders" %}</legend> <legend>{% trans "Orders" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field sform.reservation_time layout="control" %} {% bootstrap_field sform.reservation_time layout="control" %}
{% bootstrap_field sform.max_items_per_order layout="control" %} {% bootstrap_field sform.max_items_per_order layout="control" %}
{% bootstrap_field sform.attendee_names_asked layout="control" %} {% bootstrap_field sform.attendee_names_asked layout="control" %}
@@ -67,12 +82,17 @@
{% bootstrap_field sform.attendee_emails_asked layout="control" %} {% bootstrap_field sform.attendee_emails_asked layout="control" %}
{% bootstrap_field sform.attendee_emails_required layout="control" %} {% bootstrap_field sform.attendee_emails_required layout="control" %}
{% bootstrap_field sform.cancel_allow_user layout="control" %} {% bootstrap_field sform.cancel_allow_user layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Waiting list" %}</legend> <legend>{% trans "Waiting list" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field sform.waiting_list_enabled layout="control" %} {% bootstrap_field sform.waiting_list_enabled layout="control" %}
{% bootstrap_field sform.waiting_list_auto layout="control" %} {% bootstrap_field sform.waiting_list_auto layout="control" %}
{% bootstrap_field sform.waiting_list_hours layout="control" %} {% bootstrap_field sform.waiting_list_hours layout="control" %}
</div>
</fieldset> </fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">

View File

@@ -4,6 +4,8 @@
{% block title %}{{ request.event.name }}{% endblock %} {% block title %}{{ request.event.name }}{% endblock %}
{% block content %} {% block content %}
{% if "congratulations" in request.GET %} {% if "congratulations" in request.GET %}
<div class="panel panel-default">
<div class="panel-body">
<div class="thank-you"> <div class="thank-you">
<span class="fa fa-check-circle"></span> <span class="fa fa-check-circle"></span>
@@ -13,7 +15,8 @@
</p> </p>
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You can now scroll down and modify the settings in more detail, if you want, or you can create your You can now scroll down and modify the settings in more detail, if you want, or you can
create your
first product to start selling tickets right away! first product to start selling tickets right away!
{% endblocktrans %} {% endblocktrans %}
</p> </p>
@@ -25,70 +28,10 @@
</p> </p>
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
</div>
</div>
{% endif %} {% endif %}
<h1>{% trans "Settings" %}</h1>
<ul class="nav nav-pills">
{% if 'can_change_event_settings' in request.eventpermset %}
<li {% if "event.settings" == url_name %}class="active"{% endif %}>
<a href="{% url 'control:event.settings' organizer=request.event.organizer.slug event=request.event.slug %}">
{% trans "General" %}
</a>
</li>
<li {% if "event.settings.payment" == url_name %}class="active"{% endif %}>
<a href="{% url 'control:event.settings.payment' organizer=request.event.organizer.slug event=request.event.slug %}">
{% trans "Payment" %}
</a>
</li>
<li {% if "event.settings.plugins" == url_name %}class="active"{% endif %}>
<a href="{% url 'control:event.settings.plugins' organizer=request.event.organizer.slug event=request.event.slug %}">
{% trans "Plugins" %}
</a>
</li>
<li {% if "event.settings.display" == url_name %}class="active"{% endif %}>
<a href="{% url 'control:event.settings.display' organizer=request.event.organizer.slug event=request.event.slug %}">
{% trans "Display" %}
</a>
</li>
<li {% if "event.settings.tickets" == url_name %}class="active"{% endif %}>
<a href="{% url 'control:event.settings.tickets' organizer=request.event.organizer.slug event=request.event.slug %}">
{% trans "Tickets" %}
</a>
</li>
<li {% if "event.settings.mail" == url_name %}class="active"{% endif %}>
<a href="{% url 'control:event.settings.mail' organizer=request.event.organizer.slug event=request.event.slug %}">
{% trans "E-mail" %}
</a>
</li>
<li {% if "event.settings.tax" in url_name %}class="active"{% endif %}>
<a href="{% url 'control:event.settings.tax' organizer=request.event.organizer.slug event=request.event.slug %}">
{% trans "Tax rules" %}
</a>
</li>
<li {% if "event.settings.invoice" == url_name %}class="active"{% endif %}>
<a href="{% url 'control:event.settings.invoice' organizer=request.event.organizer.slug event=request.event.slug %}">
{% trans "Invoicing" %}
</a>
</li>
<li {% if "event.settings.permissions" == url_name %}class="active"{% endif %}>
<a href="{% url 'control:event.settings.permissions' organizer=request.event.organizer.slug event=request.event.slug %}">
{% trans "Permissions" %}
</a>
</li>
<li {% if "event.settings.widget" == url_name %}class="active"{% endif %}>
<a href="{% url 'control:event.settings.widget' organizer=request.event.organizer.slug event=request.event.slug %}">
{% trans "Widget" %}
</a>
</li>
{% endif %}
{% for nav in nav_event_settings %}
<li {% if nav.active %}class="active"{% endif %}>
<a href="{{ nav.url }}">
{{ nav.label }}
</a>
</li>
{% endfor %}
</ul>
{% block inside %} {% block inside %}
{% endblock %} {% endblock %}
{% endblock %} {% endblock %}

View File

@@ -3,16 +3,23 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Delete tax rule" %}{% endblock %} {% block title %}{% trans "Delete tax rule" %}{% endblock %}
{% block inside %} {% block inside %}
<legend>{% trans "Delete tax rule" %}</legend>
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
<div class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Delete tax rule" %}</legend>
</div>
<div class="panel-body">
{% csrf_token %} {% csrf_token %}
{% if possible %} {% if possible %}
<p>{% blocktrans %}Are you sure you want to delete the tax rule <strong>{{ taxrule }}</strong>?{% endblocktrans %}</p> <p>{% blocktrans %}Are you sure you want to delete the tax rule <strong>{{ taxrule }}</strong>
?{% endblocktrans %}</p>
{% else %} {% else %}
<p>{% blocktrans %}You cannot delete a tax rule that is in use for a product or has been in use for any existing orders.{% endblocktrans %}</p> <p>{% blocktrans %}You cannot delete a tax rule that is in use for a product or has been in use for
any existing orders.{% endblocktrans %}</p>
{% endif %} {% endif %}
<div class="form-group submit-group"> <div class="form-group submit-group">
<a href="{% url "control:event.settings.tax" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn <a href="{% url "control:event.settings.tax" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn
btn-default btn-cancel"> btn-default btn-cancel">
{% trans "Cancel" %} {% trans "Cancel" %}
</a> </a>
@@ -22,5 +29,7 @@ btn-default btn-cancel">
</button> </button>
{% endif %} {% endif %}
</div> </div>
</div>
</div>
</form> </form>
{% endblock %} {% endblock %}

View File

@@ -10,17 +10,23 @@
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block inside %} {% block inside %}
<form action="" method="post" class="form-horizontal">
<div class="panel panel-default">
<div class="panel-heading">
{% if rule %} {% if rule %}
<legend>{% blocktrans with name=rule.name %}Tax rule: {{ name }}{% endblocktrans %}</legend> <legend>{% blocktrans with name=rule.name %}Tax rule: {{ name }}{% endblocktrans %}</legend>
{% else %} {% else %}
<legend>{% trans "Tax rule" %}</legend> <legend>{% trans "Tax rule" %}</legend>
{% endif %} {% endif %}
<form action="" method="post" class="form-horizontal"> </div>
{% csrf_token %} {% csrf_token %}
<div class="panel-body">
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
{% bootstrap_field form.name layout="control" %} {% bootstrap_field form.name layout="control" %}
{% bootstrap_field form.rate addon_after="%" layout="control" %} {% bootstrap_field form.rate addon_after="%" layout="control" %}
</div>
</div>
<details class="panel panel-default" <details class="panel panel-default"
{% if rule.eu_reverse_charge or rule.has_custom_rules or form.errors %}open{% endif %}> {% if rule.eu_reverse_charge or rule.has_custom_rules or form.errors %}open{% endif %}>
<summary class="panel-heading"> <summary class="panel-heading">
@@ -31,7 +37,6 @@
</summary> </summary>
<div id="advanced"> <div id="advanced">
<div class="panel-body"> <div class="panel-body">
<legend>{% trans "Advanced settings" %}</legend>
<div class="alert alert-legal"> <div class="alert alert-legal">
{% blocktrans trimmed with docs="https://docs.pretix.eu/en/latest/user/events/taxes.html" %} {% blocktrans trimmed with docs="https://docs.pretix.eu/en/latest/user/events/taxes.html" %}
These settings are intended for advanced users. See the These settings are intended for advanced users. See the
@@ -47,8 +52,10 @@
<div class="alert alert-warning"> <div class="alert alert-warning">
{% blocktrans trimmed %} {% blocktrans trimmed %}
These settings are intended for professional users with very specific taxation situations. These settings are intended for professional users with very specific taxation situations.
If you create any rule here, the reverse charge settings above will be ignored. The rules will be If you create any rule here, the reverse charge settings above will be ignored. The rules
checked in order and once the first rule matches the order, it will be used and all further rules will will be
checked in order and once the first rule matches the order, it will be used and all further
rules will
be ignored. If no rule matches, tax will be charged. be ignored. If no rule matches, tax will be charged.
{% endblocktrans %} {% endblocktrans %}
{% trans "All of these rules will only apply if an invoice address is set." %} {% trans "All of these rules will only apply if an invoice address is set." %}

View File

@@ -2,9 +2,17 @@
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Tax rules" %}{% endblock %} {% block title %}{% trans "Tax rules" %}{% endblock %}
{% block inside %} {% block inside %}
<div class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Tax rules" %}</legend> <legend>{% trans "Tax rules" %}</legend>
</div>
<div class="panel-body">
{% trans "You can create one or multiple tax rules that you can apply to your products." %}
</div>
</div>
<div class="panel panel-default">
{% if taxrules|length == 0 %} {% if taxrules|length == 0 %}
<div class="empty-collection"> <div class="panel-body empty-collection">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You haven't created any tax rules yet. You haven't created any tax rules yet.
@@ -15,10 +23,11 @@
class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new tax rule" %}</a> class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new tax rule" %}</a>
</div> </div>
{% else %} {% else %}
<p> <div class="panel-body">
<a href="{% url "control:event.settings.tax.add" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new tax rule" %} <a href="{% url "control:event.settings.tax.add" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new tax rule" %}
</a> </a>
</p> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover table-quotas"> <table class="table table-hover table-quotas">
<thead> <thead>
@@ -32,20 +41,26 @@
{% for tr in taxrules %} {% for tr in taxrules %}
<tr> <tr>
<td> <td>
<strong><a href="{% url "control:event.settings.tax.edit" organizer=request.event.organizer.slug event=request.event.slug rule=tr.id %}"> <strong><a
href="{% url "control:event.settings.tax.edit" organizer=request.event.organizer.slug event=request.event.slug rule=tr.id %}">
{{ tr.name }} {{ tr.name }}
</a></strong> </a></strong>
</td> </td>
<td>{{ tr.rate }} %</td> <td>{{ tr.rate }} %</td>
<td class="text-right"> <td class="text-right">
<a href="{% url "control:event.settings.tax.edit" organizer=request.event.organizer.slug event=request.event.slug rule=tr.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a> <a href="{% url "control:event.settings.tax.edit" organizer=request.event.organizer.slug event=request.event.slug rule=tr.id %}"
<a href="{% url "control:event.settings.tax.delete" organizer=request.event.organizer.slug event=request.event.slug rule=tr.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a> class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
<a href="{% url "control:event.settings.tax.delete" organizer=request.event.organizer.slug event=request.event.slug rule=tr.id %}"
class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div> </div>
{% endif %} <div class="panel-body">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
{% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -4,12 +4,16 @@
{% block inside %} {% block inside %}
<form action="" method="post" class="form-horizontal" enctype="multipart/form-data"> <form action="" method="post" class="form-horizontal" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Ticket download" %}</legend> <legend>{% trans "Ticket download" %}</legend>
</div>
<div class="panel-body">
{% if request.event.settings.ticket_download and not any_enabled %} {% if request.event.settings.ticket_download and not any_enabled %}
<div class="alert alert-warning"> <div class="alert alert-warning">
{% blocktrans trimmed %} {% blocktrans trimmed %}
You activated ticket downloads but no output provider is enabled. Be sure to enable a plugin and You activated ticket downloads but no output provider is enabled. Be sure to enable a plugin
and
activate an output provider. activate an output provider.
{% endblocktrans %} {% endblocktrans %}
</div> </div>
@@ -19,6 +23,8 @@
{% bootstrap_field form.ticket_download_date layout="control" %} {% bootstrap_field form.ticket_download_date layout="control" %}
{% bootstrap_field form.ticket_download_addons layout="control" %} {% bootstrap_field form.ticket_download_addons layout="control" %}
{% bootstrap_field form.ticket_download_nonadm layout="control" %} {% bootstrap_field form.ticket_download_nonadm layout="control" %}
</div>
</fieldset>
{% for provider in providers %} {% for provider in providers %}
<div class="panel panel-default ticketoutput-panel"> <div class="panel panel-default ticketoutput-panel">
<div class="panel-heading"> <div class="panel-heading">
@@ -42,7 +48,6 @@
{% trans "There are no ticket outputs available. Please go to the plugin settings and activate one or more ticket output plugins." %}</em> {% trans "There are no ticket outputs available. Please go to the plugin settings and activate one or more ticket output plugins." %}</em>
</div> </div>
{% endfor %} {% endfor %}
</fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">
{% trans "Save" %} {% trans "Save" %}

View File

@@ -5,17 +5,23 @@
{% load eventurl %} {% load eventurl %}
{% load eventsignal %} {% load eventsignal %}
{% block inside %} {% block inside %}
<fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Widget" %}</legend> <legend>{% trans "Widget" %}</legend>
</div>
<div class="panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
The pretix widget is a way to embed your ticket shop into your event website. This way, your visitors can The pretix widget is a way to embed your ticket shop into your event website. This way, your
visitors can
buy their ticket right away without leaving your website. buy their ticket right away without leaving your website.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
{% if valid %} {% if valid %}
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
To embed the widget onto your website, simply copy the following code to the <code>&lt;head&gt;</code> To embed the widget onto your website, simply copy the following code to the
<code>&lt;head&gt;</code>
section of your website: section of your website:
{% endblocktrans %} {% endblocktrans %}
</p> </p>
@@ -32,7 +38,9 @@
{% abseventurl request.event "presale:event.index" as indexurl %} {% abseventurl request.event "presale:event.index" as indexurl %}
{% endif %} {% endif %}
{% if form.cleaned_data.compatibility_mode %} {% if form.cleaned_data.compatibility_mode %}
<pre>&lt;div class="pretix-widget-compat" event="{% abseventurl request.event "presale:event.index" %}"{% if form.cleaned_data.subevent %} subevent="{{ form.cleaned_data.subevent.pk }}"{% endif %}{% if form.cleaned_data.voucher %} voucher="{{ form.cleaned_data.voucher }}"{% endif %}&gt;&lt;/div&gt; <pre>&lt;div class="pretix-widget-compat" event="{% abseventurl request.event "presale:event.index" %}"
{% if form.cleaned_data.subevent %} subevent="{{ form.cleaned_data.subevent.pk }}"{% endif %}
{% if form.cleaned_data.voucher %} voucher="{{ form.cleaned_data.voucher }}"{% endif %}&gt;&lt;/div&gt;
&lt;noscript&gt; &lt;noscript&gt;
&lt;div class="pretix-widget"&gt; &lt;div class="pretix-widget"&gt;
&lt;div class="pretix-widget-info-message"&gt; &lt;div class="pretix-widget-info-message"&gt;
@@ -45,7 +53,7 @@
&lt;/noscript&gt; &lt;/noscript&gt;
</pre> </pre>
{% else %} {% else %}
<pre>&lt;pretix-widget event="{% abseventurl request.event "presale:event.index" %}"{% if form.cleaned_data.subevent %} subevent="{{ form.cleaned_data.subevent.pk }}"{% endif %}{% if form.cleaned_data.voucher %} voucher="{{ form.cleaned_data.voucher }}"{% endif %}&gt;&lt;/pretix-widget&gt; <pre>&lt;pretix-widget event="{% abseventurl request.event "presale:event.index" %}" {% if form.cleaned_data.subevent %} subevent="{{ form.cleaned_data.subevent.pk }}"{% endif %} {% if form.cleaned_data.voucher %} voucher="{{ form.cleaned_data.voucher }}"{% endif %}&gt;&lt;/pretix-widget&gt;
&lt;noscript&gt; &lt;noscript&gt;
&lt;div class="pretix-widget"&gt; &lt;div class="pretix-widget"&gt;
&lt;div class="pretix-widget-info-message"&gt; &lt;div class="pretix-widget-info-message"&gt;
@@ -82,5 +90,7 @@
</div> </div>
</form> </form>
{% endif %} {% endif %}
</div>
</fieldset>
{% eventsignal request.event "pretix.control.signals.event_settings_widget" request=request %} {% eventsignal request.event "pretix.control.signals.event_settings_widget" request=request %}
{% endblock %} {% endblock %}

View File

@@ -3,9 +3,6 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Create a new event" %}{% endblock %} {% block title %}{% trans "Create a new event" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Create a new event" %} <small>{% blocktrans trimmed with step=wizard.steps.step1 %}
Step {{ step }}
{% endblocktrans %}</small></h1>
{% if has_organizer %} {% if has_organizer %}
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
@@ -13,17 +10,6 @@
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
{% block form %} {% block form %}
{% endblock %} {% endblock %}
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save pull-right">
{% trans "Continue" %}
</button>
{% if wizard.steps.prev %}
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}"
class="btn btn-default btn-lg pull-left">
{% trans "Back" %}
</button>
{% endif %}
</div>
</form> </form>
{% else %} {% else %}
<div class="alert alert-danger"> <div class="alert alert-danger">

View File

@@ -2,8 +2,15 @@
{% load i18n %} {% load i18n %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% block form %} {% block form %}
<fieldset> <div class="panel panel-default">
<legend>{% trans "General information" %}</legend> <div class="panel-heading">
<h1 class="panel-title">{% trans "Create a new event" %}
<small>{% blocktrans trimmed with step=wizard.steps.step1 %}
Step {{ step }}
{% endblocktrans %}</small>
</h1>
</div>
<fieldset class="panel-body">
{% bootstrap_field form.name layout="control" %} {% bootstrap_field form.name layout="control" %}
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label" for="{{ form.slug.id_for_label }}">{{ form.slug.label }}</label> <label class="col-md-3 control-label" for="{{ form.slug.id_for_label }}">{{ form.slug.label }}</label>
@@ -40,16 +47,36 @@
{% bootstrap_field form.currency layout="control" %} {% bootstrap_field form.currency layout="control" %}
{% bootstrap_field form.tax_rate addon_after="%" layout="control" %} {% bootstrap_field form.tax_rate addon_after="%" layout="control" %}
</fieldset> </fieldset>
<fieldset> </div>
<fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Display settings" %}</legend> <legend>{% trans "Display settings" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.locale layout="control" %} {% bootstrap_field form.locale layout="control" %}
{% bootstrap_field form.timezone layout="control" %} {% bootstrap_field form.timezone layout="control" %}
</div>
</fieldset> </fieldset>
{% if form.presale_start %} {% if form.presale_start %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Timeline" %}</legend> <legend>{% trans "Timeline" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.presale_start layout="control" %} {% bootstrap_field form.presale_start layout="control" %}
{% bootstrap_field form.presale_end layout="control" %} {% bootstrap_field form.presale_end layout="control" %}
</div>
</fieldset> </fieldset>
{% endif %} {% endif %}
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save pull-right">
{% trans "Continue" %}
</button>
{% if wizard.steps.prev %}
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}"
class="btn btn-default btn-lg pull-left">
{% trans "Back" %}
</button>
{% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -2,6 +2,15 @@
{% load i18n %} {% load i18n %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% block form %} {% block form %}
<div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Create a new event" %}
<small>{% blocktrans trimmed with step=wizard.steps.step1 %}
Step {{ step }}
{% endblocktrans %}</small>
</h1>
</div>
<div class="panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
Do you want to copy over your configuration from a different event? We will copy all Do you want to copy over your configuration from a different event? We will copy all
@@ -17,4 +26,17 @@
</strong> </strong>
</div> </div>
{% bootstrap_field form.copy_from_event layout="control" %} {% bootstrap_field form.copy_from_event layout="control" %}
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save pull-right">
{% trans "Continue" %}
</button>
{% if wizard.steps.prev %}
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}"
class="btn btn-default btn-lg pull-left">
{% trans "Back" %}
</button>
{% endif %}
</div>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -2,11 +2,33 @@
{% load i18n %} {% load i18n %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% block form %} {% block form %}
<div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Create a new event" %}
<small>{% blocktrans trimmed with step=wizard.steps.step1 %}
Step {{ step }}
{% endblocktrans %}</small>
</h1>
</div>
<div class="panel-body">
{% bootstrap_field form.organizer layout="horizontal" %} {% bootstrap_field form.organizer layout="horizontal" %}
{% bootstrap_field form.locales layout="horizontal" %} {% bootstrap_field form.locales layout="horizontal" %}
{% bootstrap_field form.has_subevents layout="horizontal" %} {% bootstrap_field form.has_subevents layout="horizontal" %}
<p> <p class="help-block">
<span class="fa fa-info-circle"></span> <span class="fa fa-info-circle"></span>
{% trans "Please note that you will only be able to delete your event until the first order has been created." %} {% trans "Please note that you will only be able to delete your event until the first order has been created." %}
</p> </p>
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save pull-right">
{% trans "Continue" %}
</button>
{% if wizard.steps.prev %}
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}"
class="btn btn-default btn-lg pull-left">
{% trans "Back" %}
</button>
{% endif %}
</div>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -4,10 +4,15 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Events" %}{% endblock %} {% block title %}{% trans "Events" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Events" %}</h1> <div class="panel panel-default">
<p>{% trans "The list below shows all events you have administrative access to. Click on the event name to access event details." %}</p> <div class="panel-heading">
<h1 class="panel-title">{% trans "Events" %}</h1>
</div>
<div class="panel-body">{% trans "The list below shows all events you have administrative access to. Click on the event name to access event details." %}</div>
</div>
<div class="panel panel-default">
{% if events|length == 0 and not filter_form.filtered %} {% if events|length == 0 and not filter_form.filtered %}
<div class="empty-collection"> <div class="empty-collection panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You currently do not have access to any events. You currently do not have access to any events.
@@ -20,7 +25,7 @@
</a> </a>
</div> </div>
{% else %} {% else %}
<form class="row filter-form" action="" method="get"> <form class="panel-body row filter-form" action="" method="get">
<div class="col-md-4 col-sm-6 col-xs-12"> <div class="col-md-4 col-sm-6 col-xs-12">
{% bootstrap_field filter_form.query layout='inline' %} {% bootstrap_field filter_form.query layout='inline' %}
</div> </div>
@@ -39,12 +44,12 @@
</button> </button>
</div> </div>
</form> </form>
<p> <div class="panel-body">
<a href="{% url "control:events.add" %}" class="btn btn-default"> <a href="{% url "control:events.add" %}" class="btn btn-default">
<span class="fa fa-plus"></span> <span class="fa fa-plus"></span>
{% trans "Create a new event" %} {% trans "Create a new event" %}
</a> </a>
</p> </div>
<table class="table table-condensed table-hover"> <table class="table table-condensed table-hover">
<thead> <thead>
<tr> <tr>
@@ -54,13 +59,16 @@
{% if not hide_orga %} {% if not hide_orga %}
<th> <th>
{% trans "Organizer" %} {% trans "Organizer" %}
<a href="?{% url_replace request 'ordering' '-organizer' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-organizer' %}"><i
<a href="?{% url_replace request 'ordering' 'organizer' %}"><i class="fa fa-caret-up"></i></a> class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'organizer' %}"><i
class="fa fa-caret-up"></i></a>
</th> </th>
{% endif %} {% endif %}
<th> <th>
{% trans "Start date" %} {% trans "Start date" %}
<a href="?{% url_replace request 'ordering' '-date_from' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-date_from' %}"><i
class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'date_from' %}"><i class="fa fa-caret-up"></i></a> <a href="?{% url_replace request 'ordering' 'date_from' %}"><i class="fa fa-caret-up"></i></a>
/ /
{% trans "End date" %} {% trans "End date" %}
@@ -69,8 +77,10 @@
</th> </th>
<th> <th>
{% trans "Paid tickets per quota" %} {% trans "Paid tickets per quota" %}
<a href="?{% url_replace request 'ordering' '-sum_tickets_paid' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-sum_tickets_paid' %}"><i
<a href="?{% url_replace request 'ordering' 'sum_tickets_paid' %}"><i class="fa fa-caret-up"></i></a> class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'sum_tickets_paid' %}"><i
class="fa fa-caret-up"></i></a>
</th> </th>
<th class="text-right"> <th class="text-right">
{% trans "Status" %} {% trans "Status" %}
@@ -83,10 +93,13 @@
{% for e in events %} {% for e in events %}
<tr> <tr>
<td class="event-name-col"> <td class="event-name-col">
<strong><a href="{% url "control:event.index" organizer=e.organizer.slug event=e.slug %}">{{ e.name }}</a></strong> <strong><a
<br><small>{{ e.slug }}</small> href="{% url "control:event.index" organizer=e.organizer.slug event=e.slug %}">{{ e.name }}</a></strong>
<br>
<small>{{ e.slug }}</small>
</td> </td>
{% if not hide_orga %}<td>{{ e.organizer }}</td>{% endif %} {% if not hide_orga %}
<td>{{ e.organizer }}</td>{% endif %}
<td class="event-date-col"> <td class="event-date-col">
{% if e.has_subevents %} {% if e.has_subevents %}
{{ e.min_from|default_if_none:""|date:"SHORT_DATETIME_FORMAT" }} {{ e.min_from|default_if_none:""|date:"SHORT_DATETIME_FORMAT" }}
@@ -132,6 +145,9 @@
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
<div class="panel-footer">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
{% endif %} {% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -4,6 +4,12 @@
{% block title %}{% trans "System message" %}{% endblock %} {% block title %}{% trans "System message" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "System message" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "System message" %}</h1>
</div>
<div class="panel-body">
{{ global_settings.banner_message_detail|rich_text }} {{ global_settings.banner_message_detail|rich_text }}
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -3,6 +3,11 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block inner %} {% block inner %}
<div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Global settings" %}</h1>
</div>
<div class="panel-body">
<form action="" method="post" class="form-horizontal" enctype="multipart/form-data"> <form action="" method="post" class="form-horizontal" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
@@ -13,4 +18,6 @@
</button> </button>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -4,19 +4,6 @@
{% block title %}{% trans "Global settings" %}{% endblock %} {% block title %}{% trans "Global settings" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Global settings" %}</h1>
<ul class="nav nav-pills">
<li {% if "global.settings" == url_name %}class="active"{% endif %}>
<a href="{% url 'control:global.settings' %}">
{% trans "General" %}
</a>
</li>
<li {% if "global.update" == url_name %}class="active"{% endif %}>
<a href="{% url 'control:global.update' %}">
{% trans "Update check" %}
</a>
</li>
</ul>
{% block inner %} {% block inner %}
{% endblock %} {% endblock %}
{% endblock %} {% endblock %}

View File

@@ -3,13 +3,18 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block inner %} {% block inner %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Update check results" %}</legend> <legend>{% trans "Update check results" %}</legend>
</div>
{% if not gs.settings.update_check_perform %} {% if not gs.settings.update_check_perform %}
<div class="panel-body">
<div class="alert alert-warning"> <div class="alert alert-warning">
{% trans "Update checks are disabled." %} {% trans "Update checks are disabled." %}
</div> </div>
</div>
{% elif not gs.settings.update_check_last %} {% elif not gs.settings.update_check_last %}
<div class="panel-body">
<div class="alert alert-info"> <div class="alert alert-info">
{% trans "No update check has been performed yet since the last update of this installation. Update checks are performed on a daily basis if your cronjob is set up properly." %} {% trans "No update check has been performed yet since the last update of this installation. Update checks are performed on a daily basis if your cronjob is set up properly." %}
</div> </div>
@@ -21,7 +26,9 @@
</button> </button>
</p> </p>
</form> </form>
</div>
{% elif "error" in gs.settings.update_check_result %} {% elif "error" in gs.settings.update_check_result %}
<div class="panel-body">
<div class="alert alert-danger"> <div class="alert alert-danger">
{% trans "The last update check was not successful." %} {% trans "The last update check was not successful." %}
{% if gs.settings.update_check_result.error == "http_error" %} {% if gs.settings.update_check_result.error == "http_error" %}
@@ -40,18 +47,19 @@
</button> </button>
</p> </p>
</form> </form>
</div>
{% else %} {% else %}
<div class="panel-body">
<form action="" method="post"> <form action="" method="post">
{% csrf_token %} {% csrf_token %}
<p>
{% blocktrans trimmed with date=gs.settings.update_check_last|date:"SHORT_DATETIME_FORMAT" %} {% blocktrans trimmed with date=gs.settings.update_check_last|date:"SHORT_DATETIME_FORMAT" %}
Last updated: {{ date }} Last updated: {{ date }}
{% endblocktrans %} {% endblocktrans %}
<button type="submit" name="trigger" value="1" class="btn btn-default btn-xs"> <button type="submit" name="trigger" value="1" class="btn btn-default btn-xs">
{% trans "Check for updates now" %} {% trans "Check for updates now" %}
</button> </button>
</p>
</form> </form>
</div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-condensed"> <table class="table table-condensed">
<thead> <thead>
@@ -76,15 +84,19 @@
</fieldset> </fieldset>
<form action="" method="post" class="form-horizontal" enctype="multipart/form-data"> <form action="" method="post" class="form-horizontal" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Update check settings" %}</legend> <legend>{% trans "Update check settings" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
{% bootstrap_form form layout='horizontal' %} {% bootstrap_form form layout='horizontal' %}
</fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">
{% trans "Save" %} {% trans "Save" %}
</button> </button>
</div> </div>
</div>
</fieldset>
</form> </form>
{% endblock %} {% endblock %}

View File

@@ -3,17 +3,21 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% load formset_tags %} {% load formset_tags %}
{% block inside %} {% block inside %}
<p> <div class="panel panel-default">
<div class="panel-body">
{% blocktrans trimmed %} {% blocktrans trimmed %}
With add-ons, you can specify products that can be bought as an addition to this product. For example, if With add-ons, you can specify products that can be bought as an addition to this product. For example,
if
you host a conference with a base conference ticket and a number of workshops, you could define the you host a conference with a base conference ticket and a number of workshops, you could define the
workshops as add-ons to the conference ticket. With this configuration, the workshops cannot be bought workshops as add-ons to the conference ticket. With this configuration, the workshops cannot be bought
on their own but only in combination with a conference ticket. You can here specify categories of products on their own but only in combination with a conference ticket. You can here specify categories of
products
that can be used as add-ons to this product. You can also specify the minimum and maximum number of that can be used as add-ons to this product. You can also specify the minimum and maximum number of
add-ons of the given category that can or need to be chosen. The user can buy every add-on from the add-ons of the given category that can or need to be chosen. The user can buy every add-on from the
category at most once. If an add-on product has multiple variations, only one of them can be bought. category at most once. If an add-on product has multiple variations, only one of them can be bought.
{% endblocktrans %} {% endblocktrans %}
</p> </div>
</div>
<form class="form-horizontal branches" method="post" action=""> <form class="form-horizontal branches" method="post" action="">
{% csrf_token %} {% csrf_token %}
<div class="formset" data-formset data-formset-prefix="{{ formset.prefix }}"> <div class="formset" data-formset data-formset-prefix="{{ formset.prefix }}">

View File

@@ -3,7 +3,11 @@
{% block title %}{{ object.name }} :: {% trans "Product" %}{% endblock %} {% block title %}{{ object.name }} :: {% trans "Product" %}{% endblock %}
{% block content %} {% block content %}
{% if object.id %} {% if object.id %}
<h1>{% trans "Modify product:" %} {{ object.name }}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Modify product:" %} {{ object.name }}</h1>
</div>
<div class="panel-body">
<ul class="nav nav-pills"> <ul class="nav nav-pills">
<li {% if "event.item" == url_name %}class="active"{% endif %}> <li {% if "event.item" == url_name %}class="active"{% endif %}>
<a href="{% url 'control:event.item' organizer=request.event.organizer.slug event=request.event.slug item=object.id %}"> <a href="{% url 'control:event.item' organizer=request.event.organizer.slug event=request.event.slug item=object.id %}">
@@ -23,14 +27,11 @@
</a> </a>
</li> </li>
</ul> </ul>
{% else %} </div>
<h1>{% trans "Create product" %}</h1> </div>
<p>{% blocktrans trimmed %}
You will be able to adjust further settings in the next step.
{% endblocktrans %}</p>
{% endif %} {% endif %}
{% if object.id and not object.quotas.exists %} {% if object.id and not object.quotas.exists %}
<div class="alert alert-warning"> <div class="alert 1alert-warning">
{% blocktrans trimmed %} {% blocktrans trimmed %}
Please note that your product will <strong>not</strong> be available for sale until you have added your Please note that your product will <strong>not</strong> be available for sale until you have added your
item to an existing or newly created quota. item to an existing or newly created quota.

View File

@@ -1,14 +1,20 @@
{% extends "pretixcontrol/item/base.html" %} {% extends "pretixcontrol/item/base.html" %}
{% load i18n %} {% load i18n %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% block inside %}
{% load static %} {% load static %}
<script type="text/javascript" src="{% static "pretixcontrol/js/ui/hidequota.js" %}"></script> {% block inside %}
<script type="text/javascript" src="{% static "pretixcontrol/js/ui/hidequota.js" %}"></script>
<form action="" method="post" class="form-horizontal" enctype="multipart/form-data"> <form action="" method="post" class="form-horizontal" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "General information" %}</legend> <legend>{% trans "General information" %}</legend>
</div>
<div class="panel-body">
<p>{% blocktrans trimmed %}
You will be able to adjust further settings in the next step.
{% endblocktrans %}</p>
{% bootstrap_field form.name layout="control" %} {% bootstrap_field form.name layout="control" %}
<div class="internal-name-wrapper"> <div class="internal-name-wrapper">
{% bootstrap_field form.internal_name layout="control" %} {% bootstrap_field form.internal_name layout="control" %}
@@ -17,10 +23,14 @@
{% bootstrap_field form.has_variations layout="control" %} {% bootstrap_field form.has_variations layout="control" %}
{% bootstrap_field form.category layout="control" %} {% bootstrap_field form.category layout="control" %}
{% bootstrap_field form.admission layout="control" %} {% bootstrap_field form.admission layout="control" %}
</div>
</fieldset> </fieldset>
{% if form.quota_option %} {% if form.quota_option %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Quota settings" %}</legend> <legend>{% trans "Quota settings" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.quota_option layout="control" %} {% bootstrap_field form.quota_option layout="control" %}
<div id="existing-quota-group"> <div id="existing-quota-group">
{% bootstrap_field form.quota_add_existing layout="control" %} {% bootstrap_field form.quota_add_existing layout="control" %}
@@ -29,12 +39,17 @@
{% bootstrap_field form.quota_add_new_name layout="control" %} {% bootstrap_field form.quota_add_new_name layout="control" %}
{% bootstrap_field form.quota_add_new_size layout="control" %} {% bootstrap_field form.quota_add_new_size layout="control" %}
</div> </div>
</div>
</fieldset> </fieldset>
{% endif %} {% endif %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Price settings" %}</legend> <legend>{% trans "Price settings" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.default_price layout="control" %} {% bootstrap_field form.default_price layout="control" %}
{% bootstrap_field form.tax_rule layout="control" %} {% bootstrap_field form.tax_rule layout="control" %}
</div>
</fieldset> </fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">

View File

@@ -6,8 +6,11 @@
{% csrf_token %} {% csrf_token %}
<div class="row"> <div class="row">
<div class="col-xs-12 col-lg-10"> <div class="col-xs-12 col-lg-10">
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "General information" %}</legend> <legend>{% trans "General information" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.name layout="control" %} {% bootstrap_field form.name layout="control" %}
<div class="internal-name-wrapper"> <div class="internal-name-wrapper">
{% bootstrap_field form.internal_name layout="control" %} {% bootstrap_field form.internal_name layout="control" %}
@@ -17,15 +20,23 @@
{% bootstrap_field form.admission layout="control" %} {% bootstrap_field form.admission layout="control" %}
{% bootstrap_field form.description layout="control" %} {% bootstrap_field form.description layout="control" %}
{% bootstrap_field form.picture layout="control" %} {% bootstrap_field form.picture layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Price settings" %}</legend> <legend>{% trans "Price settings" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.default_price addon_after=request.event.currency layout="control" %} {% bootstrap_field form.default_price addon_after=request.event.currency layout="control" %}
{% bootstrap_field form.tax_rule layout="control" %} {% bootstrap_field form.tax_rule layout="control" %}
{% bootstrap_field form.free_price layout="control" %} {% bootstrap_field form.free_price layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Availability" %}</legend> <legend>{% trans "Availability" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.available_from layout="control" %} {% bootstrap_field form.available_from layout="control" %}
{% bootstrap_field form.available_until layout="control" %} {% bootstrap_field form.available_until layout="control" %}
{% bootstrap_field form.max_per_order layout="control" %} {% bootstrap_field form.max_per_order layout="control" %}
@@ -33,18 +44,32 @@
{% bootstrap_field form.require_voucher layout="control" %} {% bootstrap_field form.require_voucher layout="control" %}
{% bootstrap_field form.hide_without_voucher layout="control" %} {% bootstrap_field form.hide_without_voucher layout="control" %}
{% bootstrap_field form.allow_cancel layout="control" %} {% bootstrap_field form.allow_cancel layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Check-in" %}</legend> <legend>{% trans "Check-in" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.checkin_attention layout="control" %} {% bootstrap_field form.checkin_attention layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Additional settings" %}</legend> <legend>{% trans "Additional settings" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.original_price addon_after=request.event.currency layout="control" %} {% bootstrap_field form.original_price addon_after=request.event.currency layout="control" %}
{% for f in plugin_forms %} {% for f in plugin_forms %}
{% bootstrap_form f layout="control" %} {% bootstrap_form f layout="control" %}
{% endfor %} {% endfor %}
</div>
</fieldset> </fieldset>
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save">
{% trans "Save" %}
</button>
</div>
</div> </div>
<div class="col-xs-12 col-lg-2"> <div class="col-xs-12 col-lg-2">
<div class="panel panel-default"> <div class="panel panel-default">
@@ -57,10 +82,5 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save">
{% trans "Save" %}
</button>
</div>
</form> </form>
{% endblock %} {% endblock %}

View File

@@ -2,14 +2,17 @@
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Product categories" %}{% endblock %} {% block title %}{% trans "Product categories" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Product categories" %}</h1> <div class="panel panel-default">
<p> <div class="panel-heading">
{% blocktrans trimmed %} <h1 class="panel-title">{% trans "Product categories" %}</h1>
You can use categories to group multiple products together in an organized way. </div>
{% endblocktrans %} <div class="panel-body">
</p> {% trans "You can use categories to group multiple products together in an organized way." %}
</div>
</div>
<div class="panel panel-default">
{% if categories|length == 0 %} {% if categories|length == 0 %}
<div class="empty-collection"> <div class="empty-collection panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You haven't created any categories yet. You haven't created any categories yet.
@@ -20,10 +23,11 @@
class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new category" %}</a> class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new category" %}</a>
</div> </div>
{% else %} {% else %}
<p> <div class="panel-body">
<a href="{% url "control:event.items.categories.add" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new category" %} <a href="{% url "control:event.items.categories.add" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new category" %}
</a> </a>
</p> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover"> <table class="table table-hover">
<thead> <thead>
@@ -37,21 +41,31 @@
{% for c in categories %} {% for c in categories %}
<tr> <tr>
<td> <td>
<strong><a href="{% url "control:event.items.categories.edit" organizer=request.event.organizer.slug event=request.event.slug category=c.id %}">{{ c.name }}</a></strong> <strong><a
href="{% url "control:event.items.categories.edit" organizer=request.event.organizer.slug event=request.event.slug category=c.id %}">{{ c.name }}</a></strong>
</td> </td>
<td> <td>
<a href="{% url "control:event.items.categories.up" organizer=request.event.organizer.slug event=request.event.slug category=c.id %}" class="btn btn-default btn-sm {% if forloop.counter0 == 0 %}disabled{% endif %}"><i class="fa fa-arrow-up"></i></a> <a href="{% url "control:event.items.categories.up" organizer=request.event.organizer.slug event=request.event.slug category=c.id %}"
<a href="{% url "control:event.items.categories.down" organizer=request.event.organizer.slug event=request.event.slug category=c.id %}" class="btn btn-default btn-sm {% if forloop.revcounter0 == 0 %}disabled{% endif %}"><i class="fa fa-arrow-down"></i></a> class="btn btn-default btn-sm {% if forloop.counter0 == 0 %}disabled{% endif %}"><i
class="fa fa-arrow-up"></i></a>
<a href="{% url "control:event.items.categories.down" organizer=request.event.organizer.slug event=request.event.slug category=c.id %}"
class="btn btn-default btn-sm {% if forloop.revcounter0 == 0 %}disabled{% endif %}"><i
class="fa fa-arrow-down"></i></a>
</td> </td>
<td class="text-right"> <td class="text-right">
<a href="{% url "control:event.items.categories.edit" organizer=request.event.organizer.slug event=request.event.slug category=c.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a> <a href="{% url "control:event.items.categories.edit" organizer=request.event.organizer.slug event=request.event.slug category=c.id %}"
<a href="{% url "control:event.items.categories.delete" organizer=request.event.organizer.slug event=request.event.slug category=c.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a> class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
<a href="{% url "control:event.items.categories.delete" organizer=request.event.organizer.slug event=request.event.slug category=c.id %}"
class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="panel-footer">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
{% endif %} {% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -3,20 +3,28 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Product category" %}{% endblock %} {% block title %}{% trans "Product category" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Product category" %}</h1>
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
<div class="row"> <div class="row">
<div class="col-xs-12{% if category %} col-lg-10{% endif %}"> <div class="col-xs-12{% if category %} col-lg-10{% endif %}">
<fieldset> <fieldset class="panel panel-default">
<legend>{% trans "General information" %}</legend> <div class="panel-heading">
<legend>{% trans "Product category" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.name layout="control" %} {% bootstrap_field form.name layout="control" %}
<div class="internal-name-wrapper"> <div class="internal-name-wrapper">
{% bootstrap_field form.internal_name layout="control" %} {% bootstrap_field form.internal_name layout="control" %}
</div> </div>
{% bootstrap_field form.description layout="control" %} {% bootstrap_field form.description layout="control" %}
{% bootstrap_field form.is_addon layout="control" %} {% bootstrap_field form.is_addon layout="control" %}
</div>
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save">
{% trans "Save" %}
</button>
</div>
</fieldset> </fieldset>
</div> </div>
{% if category %} {% if category %}
@@ -32,10 +40,5 @@
</div> </div>
{% endif %} {% endif %}
</div> </div>
<div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save">
{% trans "Save" %}
</button>
</div>
</form> </form>
{% endblock %} {% endblock %}

View File

@@ -3,14 +3,19 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Delete product category" %}{% endblock %} {% block title %}{% trans "Delete product category" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Delete product category" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Delete product category" %}</h1>
</div>
<div class="panel-body">
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
<p>{% blocktrans trimmed with name=category.name %} <p>{% blocktrans trimmed with name=category.name %}
Are you sure you want to delete the category <strong>{{ name }}</strong>? Are you sure you want to delete the category <strong>{{ name }}</strong>?
{% endblocktrans %}</p> {% endblocktrans %}</p>
<div class="form-group submit-group"> <div class="form-group submit-group">
<a href="{% url "control:event.items.categories" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default btn-cancel"> <a href="{% url "control:event.items.categories" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn btn-default btn-cancel">
{% trans "Cancel" %} {% trans "Cancel" %}
</a> </a>
<button type="submit" class="btn btn-danger btn-save"> <button type="submit" class="btn btn-danger btn-save">
@@ -18,4 +23,6 @@
</button> </button>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -2,16 +2,17 @@
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Products" %}{% endblock %} {% block title %}{% trans "Products" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Products" %}</h1> <div class="panel panel-default">
<p> <div class="panel-heading">
{% blocktrans trimmed %} <legend>{% trans "Products" %}</legend>
Below, you find a list of all available products. You can click on a product name to inspect and change </div>
product details. You can also use the buttons on the right to change the order of products within a <div class="panel-body">
give category. {% trans "Products are everything that you sell: Different ticket price categories, additional merchandise items, or parts of your event that you sell individually." %}
{% endblocktrans %} </div>
</p> </div>
<div class="panel panel-default">
{% if items|length == 0 %} {% if items|length == 0 %}
<div class="empty-collection"> <div class="empty-collection panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You haven't created any products yet. You haven't created any products yet.
@@ -22,10 +23,10 @@
class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new product" %}</a> class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new product" %}</a>
</div> </div>
{% else %} {% else %}
<p> <div class="panel-body">
<a href="{% url "control:event.items.add" organizer=request.event.organizer.slug event=request.event.slug %}" <a href="{% url "control:event.items.add" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new product" %}</a> class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new product" %}</a>
</p> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-condensed table-hover"> <table class="table table-condensed table-hover">
<thead> <thead>
@@ -54,35 +55,46 @@
</td> </td>
<td> <td>
{% if i.available_from or i.available_until %} {% if i.available_from or i.available_until %}
<span class="fa fa-clock-o fa-fw text-muted" data-toggle="tooltip" title="{% trans "Only available in a limited timeframe" %}"> <span class="fa fa-clock-o fa-fw text-muted" data-toggle="tooltip"
title="{% trans "Only available in a limited timeframe" %}">
</span> </span>
{% endif %} {% endif %}
</td> </td>
<td> <td>
{% if i.admission %} {% if i.admission %}
<span class="fa fa-user fa-fw text-muted" data-toggle="tooltip" title="{% trans "Admission ticket" %}"></span> <span class="fa fa-user fa-fw text-muted" data-toggle="tooltip"
title="{% trans "Admission ticket" %}"></span>
{% endif %} {% endif %}
</td> </td>
<td> <td>
{% if i.var_count %} {% if i.var_count %}
<span class="fa fa-list-ul fa-fw text-muted" data-toggle="tooltip" title="{% trans "Product with variations" %}"></span> <span class="fa fa-list-ul fa-fw text-muted" data-toggle="tooltip"
title="{% trans "Product with variations" %}"></span>
{% endif %} {% endif %}
</td> </td>
<td> <td>
{% if i.hide_without_voucher %} {% if i.hide_without_voucher %}
<span class="fa fa-ticket fa-fw text-muted" data-toggle="tooltip" title="{% trans "Only visible with a voucher" %}"></span> <span class="fa fa-ticket fa-fw text-muted" data-toggle="tooltip"
title="{% trans "Only visible with a voucher" %}"></span>
{% elif i.require_voucher %} {% elif i.require_voucher %}
<span class="fa fa-ticket fa-fw text-muted" data-toggle="tooltip" title="{% trans "Can only bought using a voucher" %}"></span> <span class="fa fa-ticket fa-fw text-muted" data-toggle="tooltip"
title="{% trans "Can only bought using a voucher" %}"></span>
{% endif %} {% endif %}
</td> </td>
<td>{% if i.category %}{{ i.category.name }}{% endif %}</td> <td>{% if i.category %}{{ i.category.name }}{% endif %}</td>
<td> <td>
<a href="{% url "control:event.items.up" organizer=request.event.organizer.slug event=request.event.slug item=i.id %}" class="btn btn-default btn-sm {% if forloop.counter0 == 0 %}disabled{% endif %}"><i class="fa fa-arrow-up"></i></a> <a href="{% url "control:event.items.up" organizer=request.event.organizer.slug event=request.event.slug item=i.id %}"
<a href="{% url "control:event.items.down" organizer=request.event.organizer.slug event=request.event.slug item=i.id %}" class="btn btn-default btn-sm {% if forloop.revcounter0 == 0 %}disabled{% endif %}"><i class="fa fa-arrow-down"></i></a> class="btn btn-default btn-sm {% if forloop.counter0 == 0 %}disabled{% endif %}"><i
class="fa fa-arrow-up"></i></a>
<a href="{% url "control:event.items.down" organizer=request.event.organizer.slug event=request.event.slug item=i.id %}"
class="btn btn-default btn-sm {% if forloop.revcounter0 == 0 %}disabled{% endif %}"><i
class="fa fa-arrow-down"></i></a>
</td> </td>
<td class="text-right"> <td class="text-right">
<a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=i.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a> <a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=i.id %}"
<a href="{% url "control:event.items.delete" organizer=request.event.organizer.slug event=request.event.slug item=i.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a> class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
<a href="{% url "control:event.items.delete" organizer=request.event.organizer.slug event=request.event.slug item=i.id %}"
class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
@@ -90,6 +102,6 @@
</tbody> </tbody>
</table> </table>
</div> </div>
{% include "pretixcontrol/pagination.html" %}
{% endif %} {% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -5,27 +5,59 @@
{% load formset_tags %} {% load formset_tags %}
{% block title %}{% blocktrans with name=question.question %}Question: {{ name }}{% endblocktrans %}{% endblock %} {% block title %}{% blocktrans with name=question.question %}Question: {{ name }}{% endblocktrans %}{% endblock %}
{% block inside %} {% block inside %}
<h1> <div class="row" id="question-stats">
{% blocktrans with name=question.question %}Question: {{ name }}{% endblocktrans %} <div class="col-lg-10 col-xs-12">
<div class="panel panel-default panel-with-btn">
<div class="panel-heading">
<a href="{% url "control:event.items.questions.edit" event=request.event.slug organizer=request.event.organizer.slug question=question.pk %}" <a href="{% url "control:event.items.questions.edit" event=request.event.slug organizer=request.event.organizer.slug question=question.pk %}"
class="btn btn-default"> class="btn btn-default btn-sm pull-right">
<span class="fa fa-edit"></span> <span class="fa fa-edit"></span>
{% trans "Edit question" %} {% trans "Edit question" %}
</a> </a>
<h1 class="panel-title">
{% blocktrans with name=question.question %}Question: {{ name }}{% endblocktrans %}
</h1> </h1>
<form class="form-inline helper-display-inline" action="" method="get"> </div>
<p> <div class="panel-body">
<dl class="dl-horizontal dl-left">
<dt>{% trans "Products" %}</dt>
<dd>{{ question.items.all|join:"<br>" }}</dd>
<dt>{% trans "Type" %}</dt>
<dd>{{ question.get_type_display }}</dd>
<dt>{% trans "Internal reference" %}</dt>
<dd>{{ question.identifier }}</dd>
<dt>{% trans "Answer required" %}</dt>
<dd>{% if question.required %}{% trans "Yes" %}{% else %}{% trans "No" %}{% endif %}</dd>
<dt>{% trans "Time of question" %}</dt>
<dd>{% if not question.ask_during_checkin %}{% trans "Ticket purchase" %}{% else %}
{% trans "Check-in" %}{% endif %}</dd>
</dl>
</div>
<div class="panel-footer">
<form class="row" action="" method="get">
<div class="col-md-5 col-xs-12">
<select name="status" class="form-control"> <select name="status" class="form-control">
<option value="" {% if request.GET.status == "" %}selected="selected"{% endif %}>{% trans "All orders" %}</option> <option value=""
<option value="p" {% if request.GET.status == "p" %}selected="selected"{% endif %}>{% trans "Paid" %}</option> {% if request.GET.status == "" %}selected="selected"{% endif %}>{% trans "All orders" %}</option>
<option value="n" {% if request.GET.status == "n" %}selected="selected"{% endif %}>{% trans "Pending" %}</option> <option value="p"
<option value="np" {% if request.GET.status == "np" or "status" not in request.GET %}selected="selected"{% endif %}>{% trans "Pending or paid" %}</option> {% if request.GET.status == "p" %}selected="selected"{% endif %}>{% trans "Paid" %}</option>
<option value="o" {% if request.GET.status == "o" %}selected="selected"{% endif %}>{% trans "Pending (overdue)" %}</option> <option value="n"
<option value="e" {% if request.GET.status == "e" %}selected="selected"{% endif %}>{% trans "Expired" %}</option> {% if request.GET.status == "n" %}selected="selected"{% endif %}>{% trans "Pending" %}</option>
<option value="ne" {% if request.GET.status == "ne" %}selected="selected"{% endif %}>{% trans "Pending or expired" %}</option> <option value="np"
<option value="c" {% if request.GET.status == "c" %}selected="selected"{% endif %}>{% trans "Canceled" %}</option> {% if request.GET.status == "np" or "status" not in request.GET %}selected="selected"{% endif %}>{% trans "Pending or paid" %}</option>
<option value="r" {% if request.GET.status == "r" %}selected="selected"{% endif %}>{% trans "Refunded" %}</option> <option value="o"
{% if request.GET.status == "o" %}selected="selected"{% endif %}>{% trans "Pending (overdue)" %}</option>
<option value="e"
{% if request.GET.status == "e" %}selected="selected"{% endif %}>{% trans "Expired" %}</option>
<option value="ne"
{% if request.GET.status == "ne" %}selected="selected"{% endif %}>{% trans "Pending or expired" %}</option>
<option value="c"
{% if request.GET.status == "c" %}selected="selected"{% endif %}>{% trans "Canceled" %}</option>
<option value="r"
{% if request.GET.status == "r" %}selected="selected"{% endif %}>{% trans "Refunded" %}</option>
</select> </select>
</div>
<div class="col-md-5 col-xs-12">
<select name="item" class="form-control"> <select name="item" class="form-control">
<option value="">{% trans "All products" %}</option> <option value="">{% trans "All products" %}</option>
{% for item in items %} {% for item in items %}
@@ -35,12 +67,16 @@
</option> </option>
{% endfor %} {% endfor %}
</select> </select>
<button class="btn btn-primary" type="submit">{% trans "Filter" %}</button> </div>
</p> <div class="col-md-2 col-xs-12">
<button class="btn btn-block btn-primary" type="submit">{% trans "Filter" %}</button>
</div>
</form> </form>
<div class="row" id="question-stats"> </div>
</div>
{% if not stats %} {% if not stats %}
<div class="empty-collection col-md-10 col-xs-12"> <div class="panel panel-default">
<div class="panel-body empty-collection">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
No matching answers found. No matching answers found.
@@ -52,17 +88,26 @@
</p> </p>
<a href="{% url "control:event.items.questions.edit" event=request.event.slug organizer=request.event.organizer.slug question=question.pk %}" <a href="{% url "control:event.items.questions.edit" event=request.event.slug organizer=request.event.organizer.slug question=question.pk %}"
class="btn btn-primary btn-lg"><i class="fa fa-edit"></i> {% trans "Edit question" %}</a> class="btn btn-primary btn-lg"><i class="fa fa-edit"></i> {% trans "Edit question" %}
</a>
{% endif %} {% endif %}
</div> </div>
</div>
{% else %} {% else %}
<div class="col-md-5 col-xs-12"> <div class="row">
<div class="col-md-6 col-xs-12">
<div class="panel panel-default">
<div class="panel-body">
<div class="chart" id="question_chart" data-type="{{ question.type }}"> <div class="chart" id="question_chart" data-type="{{ question.type }}">
</div> </div>
<script type="application/json" id="question-chart-data">{{ stats_json|escapejson }}</script> <script type="application/json"
id="question-chart-data">{{ stats_json|escapejson }}</script>
</div> </div>
<div class="col-md-5 col-xs-12"> </div>
</div>
<div class="col-md-6 col-xs-12">
<div class="panel panel-default">
<table class="table table-bordered table-hover"> <table class="table table-bordered table-hover">
<thead> <thead>
<tr> <tr>
@@ -74,7 +119,18 @@
{% for stat in stats %} {% for stat in stats %}
<tr> <tr>
<td> <td>
<a href="{% url "control:event.orders" event=request.event.slug organizer=request.event.organizer.slug %}?status={{ request.GET.status|default:"np" }}&item={{ request.GET.item }}&question={{ question.pk }}&answer={{ stat.alink|default:stat.answer|urlencode }}"> <a href="{% url "control:event.orders" event=request.event.slug organizer=request.event.organizer.slug %}?status=
{{ request.GET.status|default:"np" }}&item={{ request.GET.item }}&question={{ question.pk }}&answer=
{{ stat.alink|default:stat.answer|urlencode }}">
{{ stat.answer }} {{ stat.answer }}
</a> </a>
</td> </td>
@@ -84,7 +140,10 @@
</tbody> </tbody>
</table> </table>
</div> </div>
</div>
</div>
{% endif %} {% endif %}
</div>
<div class="col-xs-12 col-lg-2"> <div class="col-xs-12 col-lg-2">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">

View File

@@ -3,18 +3,29 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Delete question" %}{% endblock %} {% block title %}{% trans "Delete question" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Delete question" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Delete question" %}</h1>
</div>
<div class="panel-body">
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
<p>{% blocktrans %}Are you sure you want to delete the question <strong>{{ question }}</strong>?{% endblocktrans %}</p> <p>{% blocktrans %}Are you sure you want to delete the question <strong>{{ question }}</strong>
?{% endblocktrans %}</p>
{% if dependent|length > 0 %} {% if dependent|length > 0 %}
<p>{% blocktrans %}All answers to the question given by the buyers of the following products will be <strong>lost</strong>.{% endblocktrans %}</p> <p>{% blocktrans %}All answers to the question given by the buyers of the following products will be
<strong>lost</strong>.{% endblocktrans %}</p>
<ul>
{% for item in dependent %} {% for item in dependent %}
<li><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.pk %}">{{ item.name }}</a></li> <li>
<a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.pk %}">{{ item.name }}</a>
</li>
{% endfor %} {% endfor %}
</ul>
{% endif %} {% endif %}
<div class="form-group submit-group"> <div class="form-group submit-group">
<a href="{% url "control:event.items.questions" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default btn-cancel"> <a href="{% url "control:event.items.questions" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn btn-default btn-cancel">
{% trans "Cancel" %} {% trans "Cancel" %}
</a> </a>
<button type="submit" class="btn btn-danger btn-save"> <button type="submit" class="btn btn-danger btn-save">
@@ -22,4 +33,6 @@
</button> </button>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -10,26 +10,34 @@
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block inside %} {% block inside %}
{% if question %}
<h1>{% blocktrans with name=question.question %}Question: {{ name }}{% endblocktrans %}</h1>
{% else %}
<h1>{% trans "Question" %}</h1>
{% endif %}
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
<fieldset> <fieldset class="panel panel-default">
<legend>{% trans "General information" %}</legend> <div class="panel-heading">
{% if question %}
<h1 class="panel-title">{% blocktrans with name=question.question %}Question:
{{ name }}{% endblocktrans %}</h1>
{% else %}
<h1 class="panel-title">{% trans "Question" %}</h1>
{% endif %}
</div>
<div class="panel-body">
{% bootstrap_field form.question layout="control" %} {% bootstrap_field form.question layout="control" %}
{% bootstrap_field form.help_text layout="control" %} {% bootstrap_field form.help_text layout="control" %}
{% bootstrap_field form.type layout="control" %} {% bootstrap_field form.type layout="control" %}
{% bootstrap_field form.identifier layout="control" %} {% bootstrap_field form.identifier layout="control" %}
{% bootstrap_field form.ask_during_checkin layout="control" %} {% bootstrap_field form.ask_during_checkin layout="control" %}
{% bootstrap_field form.required layout="control" %} {% bootstrap_field form.required layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Apply to products" %}</legend> <legend>{% trans "Apply to products" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.items layout="control" %} {% bootstrap_field form.items layout="control" %}
</div>
</fieldset> </fieldset>
<div class="alert alert-info alert-required-boolean"> <div class="alert alert-info alert-required-boolean">
{% blocktrans trimmed %} {% blocktrans trimmed %}
@@ -37,8 +45,11 @@
accepted. If you want to allow both options, do not make this field required. accepted. If you want to allow both options, do not make this field required.
{% endblocktrans %} {% endblocktrans %}
</div> </div>
<fieldset id="answer-options"> <fieldset class="panel panel-default" id="answer-options">
<div class="panel-heading">
<legend>{% trans "Answer options" %}</legend> <legend>{% trans "Answer options" %}</legend>
</div>
<div class="panel-body">
<noscript> <noscript>
<p>{% trans "Only applicable if you choose 'Choose one/multiple from a list' above." %}</p> <p>{% trans "Only applicable if you choose 'Choose one/multiple from a list' above." %}</p>
</noscript> </noscript>
@@ -109,6 +120,7 @@
<i class="fa fa-plus"></i> {% trans "Add a new option" %}</button> <i class="fa fa-plus"></i> {% trans "Add a new option" %}</button>
</p> </p>
</div> </div>
</div>
</fieldset> </fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">

View File

@@ -2,15 +2,20 @@
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Questions" %}{% endblock %} {% block title %}{% trans "Questions" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Questions" %}</h1> <div class="panel panel-default">
<p> <div class="panel-heading">
<h1 class="panel-title">{% trans "Questions" %}</h1>
</div>
<div class="panel-body">
{% blocktrans trimmed %} {% blocktrans trimmed %}
Questions allow your attendees to fill in additional data about their ticket. If you provide food, one Questions allow your attendees to fill in additional data about their ticket. If you provide food, one
example might be to ask your users about dietary requirements. example might be to ask your users about dietary requirements.
{% endblocktrans %} {% endblocktrans %}
</p> </div>
</div>
<div class="panel panel-default">
{% if questions|length == 0 %} {% if questions|length == 0 %}
<div class="empty-collection"> <div class="empty-collection panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You haven't created any questions yet. You haven't created any questions yet.
@@ -21,10 +26,11 @@
class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new question" %}</a> class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new question" %}</a>
</div> </div>
{% else %} {% else %}
<p> <div class="panel-body">
<a href="{% url "control:event.items.questions.add" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new question" %} <a href="{% url "control:event.items.questions.add" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new question" %}
</a> </a>
</p> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover table-quotas"> <table class="table table-hover table-quotas">
<thead> <thead>
@@ -53,23 +59,34 @@
<td> <td>
<ul> <ul>
{% for item in q.items.all %} {% for item in q.items.all %}
<li><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.id %}">{{ item }}</a></li> <li>
<a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.id %}">{{ item }}</a>
</li>
{% endfor %} {% endfor %}
</ul> </ul>
</td> </td>
<td> <td>
<a href="{% url "control:event.items.questions.up" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}" class="btn btn-default btn-sm {% if forloop.counter0 == 0 %}disabled{% endif %}"><i class="fa fa-arrow-up"></i></a> <a href="{% url "control:event.items.questions.up" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}"
<a href="{% url "control:event.items.questions.down" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}" class="btn btn-default btn-sm {% if forloop.revcounter0 == 0 %}disabled{% endif %}"><i class="fa fa-arrow-down"></i></a> class="btn btn-default btn-sm {% if forloop.counter0 == 0 %}disabled{% endif %}"><i
class="fa fa-arrow-up"></i></a>
<a href="{% url "control:event.items.questions.down" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}"
class="btn btn-default btn-sm {% if forloop.revcounter0 == 0 %}disabled{% endif %}"><i
class="fa fa-arrow-down"></i></a>
</td> </td>
<td class="text-right"> <td class="text-right">
<a href="{% url "control:event.items.questions.edit" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a> <a href="{% url "control:event.items.questions.edit" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}"
<a href="{% url "control:event.items.questions.delete" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a> class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
<a href="{% url "control:event.items.questions.delete" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}"
class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="panel-footer">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
{% endif %} {% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -5,36 +5,68 @@
{% load eventsignal %} {% load eventsignal %}
{% block title %}{% blocktrans with name=quota.name %}Quota: {{ name }}{% endblocktrans %}{% endblock %} {% block title %}{% blocktrans with name=quota.name %}Quota: {{ name }}{% endblocktrans %}{% endblock %}
{% block inside %} {% block inside %}
<h1> <div class="row" id="quota-stats">
{% blocktrans with name=quota.name %}Quota: {{ name }}{% endblocktrans %} <div class="col-lg-10 col-xs-12">
<div class="panel panel-default panel-with-btn">
<div class="panel-heading">
{% if 'can_change_items' in request.eventpermset %} {% if 'can_change_items' in request.eventpermset %}
<a href="{% url "control:event.items.quotas.edit" event=request.event.slug organizer=request.event.organizer.slug quota=quota.pk %}" <a href="{% url "control:event.items.quotas.edit" event=request.event.slug organizer=request.event.organizer.slug quota=quota.pk %}"
class="btn btn-default"> class="btn btn-default btn-sm pull-right">
<span class="fa fa-edit"></span> <span class="fa fa-edit"></span>
{% trans "Edit quota" %} {% trans "Edit quota" %}
</a> </a>
{% endif %} {% endif %}
<h1 class="panel-title">
{% blocktrans with name=quota.name %}Quota: {{ name }}{% endblocktrans %}
<div class="clearfix"></div>
</h1> </h1>
</div>
<div class="panel-body">
<dl class="dl-horizontal dl-left">
<dt>{% trans "Size" %}</dt>
<dd>{{ quota.size|default_if_none:"Unlimited" }}</dd>
<dt>{% trans "Products" %}</dt>
<dd>{{ quota.get_items_display|join:"<br>" }}</dd>
{% if quota.subevent %}
<dt>{% trans "Date" context "subevent" %}</dt>
<dd>{{ quota.subevent }}</dd>
{% endif %}
</dl>
</div>
</div>
{% if quota.subevent %} {% if quota.subevent %}
<p> <p>
<span class="fa fa-calendar"></span> {{ quota.subevent.name }} {{ quota.subevent.get_date_range_display }} <span class="fa fa-calendar"></span> {{ quota.subevent.name }}
{{ quota.subevent.get_date_range_display }}
</p> </p>
{% endif %} {% endif %}
<div class="row" id="quota-stats"> <div class="row" id="quota-stats">
<div class="col-md-5 col-xs-12"> <div class="col-md-6 col-xs-12">
<div class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Usage overview" %}</legend> <legend>{% trans "Usage overview" %}</legend>
</div>
<div class="panel-body">
<div class="chart" id="quota_chart"> <div class="chart" id="quota_chart">
</div> </div>
<script type="application/json" id="quota-chart-data">{{ quota_chart_data|escapejson }}</script> <script type="application/json"
id="quota-chart-data">{{ quota_chart_data|escapejson }}</script>
</div> </div>
<div class="col-md-5 col-xs-12"> </div>
</div>
<div class="col-md-6 col-xs-12">
<div class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Availability calculation" %}</legend> <legend>{% trans "Availability calculation" %}</legend>
</div>
<div class="panel-body">
<div class="row"> <div class="row">
<div class="col-xs-9">{% trans "Total quota" %}</div> <div class="col-xs-9">{% trans "Total quota" %}</div>
<div class="col-xs-3 text-right"> <div class="col-xs-3 text-right">
{% if quota.size == None %}{% trans "Infinite" %}{% else %}{{ quota.size }}{% endif %} {% if quota.size == None %}{% trans "Infinite" %}{% else %}
{{ quota.size }}{% endif %}
</div> </div>
</div> </div>
{% for row in quota_table_rows %} {% for row in quota_table_rows %}
@@ -65,6 +97,10 @@
</div> </div>
{% endif %} {% endif %}
</div> </div>
</div>
</div>
</div>
</div>
<div class="col-md-2 col-xs-12"> <div class="col-md-2 col-xs-12">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">

View File

@@ -3,18 +3,29 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Delete quota" %}{% endblock %} {% block title %}{% trans "Delete quota" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Delete quota" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Delete quota" %}</h1>
</div>
<div class="panel-body">
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
<p>{% blocktrans %}Are you sure you want to delete the quota <strong>{{ quota }}</strong>?{% endblocktrans %}</p> <p>{% blocktrans %}Are you sure you want to delete the quota <strong>{{ quota }}</strong>
?{% endblocktrans %}</p>
{% if dependent|length > 0 %} {% if dependent|length > 0 %}
<p>{% blocktrans %}The following products might be no longer available for sale:{% endblocktrans %}</p> <p>{% blocktrans %}The following products might be no longer available for
sale:{% endblocktrans %}</p>
<ul>
{% for item in dependent %} {% for item in dependent %}
<li><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.pk %}">{{ item.name }}</a></li> <li>
<a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.pk %}">{{ item.name }}</a>
</li>
{% endfor %} {% endfor %}
</ul>
{% endif %} {% endif %}
<div class="form-group submit-group"> <div class="form-group submit-group">
<a href="{% url "control:event.items.quotas" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default btn-cancel"> <a href="{% url "control:event.items.quotas" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn btn-default btn-cancel">
{% trans "Cancel" %} {% trans "Cancel" %}
</a> </a>
<button type="submit" class="btn btn-danger btn-save"> <button type="submit" class="btn btn-danger btn-save">
@@ -22,4 +33,6 @@
</button> </button>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -9,31 +9,31 @@
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block inside %} {% block inside %}
{% if question %} <div class="panel panel-default">
<h1>{% blocktrans with name=quota.name %}Quota: {{ name }}{% endblocktrans %}</h1> <div class="panel-heading">
{% if quota %}
<h1 class="panel-title">{% blocktrans with name=quota.name %}Quota: {{ name }}{% endblocktrans %}</h1>
{% else %} {% else %}
<h1>{% trans "Quota" %}</h1> <h1 class="panel-title">{% trans "Quota" %}</h1>
{% endif %} {% endif %}
<form action="" method="post" class="form-horizontal"> </div>
<form action="" method="post" class="form-horizontal panel-body">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
<fieldset> <fieldset>
<legend>{% trans "General information" %}</legend>
{% bootstrap_field form.name layout="control" %} {% bootstrap_field form.name layout="control" %}
{% bootstrap_field form.size layout="control" %} {% bootstrap_field form.size layout="control" %}
{% if form.subevent %} {% if form.subevent %}
{% bootstrap_field form.subevent layout="control" %} {% bootstrap_field form.subevent layout="control" %}
{% endif %} {% endif %}
<legend>{% trans "Items" %}</legend> {% bootstrap_field form.itemvars layout="control" %}
<p> <p class="help-block">
{% blocktrans trimmed %} {% blocktrans trimmed %}
Please select the products or product variations this quota should be applied to. If you apply two Please select the products or product variations this quota should be applied to. If you apply
quotas to the same product, it will only be available if two quotas to the same product, it will only be available if <strong>both</strong> quotas have capacity
<strong>both</strong> quotas have capacity
left. left.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
{% bootstrap_field form.itemvars layout="control" %}
</fieldset> </fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">
@@ -41,4 +41,5 @@
</button> </button>
</div> </div>
</form> </form>
</div>
{% endblock %} {% endblock %}

View File

@@ -2,8 +2,11 @@
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Quotas" %}{% endblock %} {% block title %}{% trans "Quotas" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Quotas" %}</h1> <div class="panel panel-default">
<p> <div class="panel-heading">
<h1 class="panel-title">{% trans "Quotas" %}</h1>
</div>
<div class="panel-body">
{% blocktrans trimmed %} {% blocktrans trimmed %}
To make your products actually available, you also need quotas. Quotas define, how many instances of To make your products actually available, you also need quotas. Quotas define, how many instances of
your product pretix will sell. This way, you can configure whether your event can take an unlimited your product pretix will sell. This way, you can configure whether your event can take an unlimited
@@ -11,14 +14,16 @@
to fulfil more complex requirements, e.g. if you want to limit the total number of tickets sold and the to fulfil more complex requirements, e.g. if you want to limit the total number of tickets sold and the
number of a specific ticket type at the same time. number of a specific ticket type at the same time.
{% endblocktrans %} {% endblocktrans %}
</p> </div>
</div>
<div class="panel panel-default">
{% if request.event.has_subevents %} {% if request.event.has_subevents %}
<form class="form-inline helper-display-inline" action="" method="get"> <form class="panel-body form-inline helper-display-inline" action="" method="get">
{% include "pretixcontrol/event/fragment_subevent_choice_simple.html" %} {% include "pretixcontrol/event/fragment_subevent_choice_simple.html" %}
</form> </form>
{% endif %} {% endif %}
{% if quotas|length == 0 %} {% if quotas|length == 0 %}
<div class="empty-collection"> <div class="empty-collection panel-body">
<p> <p>
{% if request.GET.subevent %} {% if request.GET.subevent %}
{% trans "Your search did not match any quotas." %} {% trans "Your search did not match any quotas." %}
@@ -33,10 +38,11 @@
class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new quota" %}</a> class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new quota" %}</a>
</div> </div>
{% else %} {% else %}
<p> <div class="panel-body">
<a href="{% url "control:event.items.quotas.add" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new quota" %} <a href="{% url "control:event.items.quotas.add" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new quota" %}
</a> </a>
</p> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover table-quotas"> <table class="table table-hover table-quotas">
<thead> <thead>
@@ -60,7 +66,9 @@
<td> <td>
<ul> <ul>
{% for item in q.items.all %} {% for item in q.items.all %}
<li><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.id %}">{{ item }}</a></li> <li>
<a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.id %}">{{ item }}</a>
</li>
{% endfor %} {% endfor %}
</ul> </ul>
</td> </td>
@@ -70,14 +78,19 @@
<td>{% if q.size == None %}Unlimited{% else %}{{ q.size }}{% endif %}</td> <td>{% if q.size == None %}Unlimited{% else %}{{ q.size }}{% endif %}</td>
<td>{% include "pretixcontrol/items/fragment_quota_availability.html" with availability=q.availability %}</td> <td>{% include "pretixcontrol/items/fragment_quota_availability.html" with availability=q.availability %}</td>
<td class="text-right"> <td class="text-right">
<a href="{% url "control:event.items.quotas.edit" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a> <a href="{% url "control:event.items.quotas.edit" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}"
<a href="{% url "control:event.items.quotas.delete" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a> class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
<a href="{% url "control:event.items.quotas.delete" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}"
class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div> </div>
{% endif %} <div class="panel-footer">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
{% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -3,10 +3,15 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Disable application" %}{% endblock %} {% block title %}{% trans "Disable application" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Disable application" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Disable application" %}</h1>
</div>
<div class="panel-body">
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
<p>{% blocktrans %}Are you sure you want to disable the application <strong>{{ application }}</strong> permanently?{% endblocktrans %}</p> <p>{% blocktrans %}Are you sure you want to disable the application <strong>{{ application }}</strong>
permanently?{% endblocktrans %}</p>
<div class="form-group submit-group"> <div class="form-group submit-group">
<a href="{% url "control:user.settings.oauth.apps" %}" class="btn btn-default btn-cancel"> <a href="{% url "control:user.settings.oauth.apps" %}" class="btn btn-default btn-cancel">
{% trans "Cancel" %} {% trans "Cancel" %}
@@ -16,4 +21,6 @@
</button> </button>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -3,7 +3,10 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Your applications" %}{% endblock %} {% block title %}{% trans "Your applications" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Your applications" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Your applications" %}</h1>
</div>
{% if applications %} {% if applications %}
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-condensed table-hover"> <table class="table table-condensed table-hover">
@@ -16,25 +19,30 @@
<tbody> <tbody>
{% for application in applications %} {% for application in applications %}
<tr> <tr>
<td><strong><a href="{% url "control:user.settings.oauth.app" pk=application.pk %}">{{ application.name }}</a></strong></td> <td><strong><a
href="{% url "control:user.settings.oauth.app" pk=application.pk %}">{{ application.name }}</a></strong>
</td>
<td class="text-right"> <td class="text-right">
<a href="{% url "control:user.settings.oauth.app" pk=application.pk %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a> <a href="{% url "control:user.settings.oauth.app" pk=application.pk %}"
<a href="{% url "control:user.settings.oauth.app.roll" pk=application.pk %}" class="btn btn-default btn-sm"><i class="fa fa-repeat"></i></a> class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
<a href="{% url "control:user.settings.oauth.app.disable" pk=application.pk %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a> <a href="{% url "control:user.settings.oauth.app.roll" pk=application.pk %}"
class="btn btn-default btn-sm"><i class="fa fa-repeat"></i></a>
<a href="{% url "control:user.settings.oauth.app.disable" pk=application.pk %}"
class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div> </div>
<p> <div class="panel-body">
<a class="btn btn-primary" href="{% url "control:user.settings.oauth.apps.register" %}"> <a class="btn btn-primary" href="{% url "control:user.settings.oauth.apps.register" %}">
<span class="fa fa-plus"></span> <span class="fa fa-plus"></span>
{% trans "Create new application" %} {% trans "Create new application" %}
</a> </a>
</p> </div>
{% else %} {% else %}
<div class="empty-collection"> <div class="empty-collection panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
No applications registered yet. No applications registered yet.
@@ -47,4 +55,5 @@
</a> </a>
</div> </div>
{% endif %} {% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -3,7 +3,11 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Register a new application" %}{% endblock %} {% block title %}{% trans "Register a new application" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Register a new application" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Register a new application" %}</h1>
</div>
<div class="panel-body">
<form class="form-horizontal" method="post" action=""> <form class="form-horizontal" method="post" action="">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form form layout='control' %} {% bootstrap_form form layout='control' %}
@@ -13,4 +17,6 @@
</button> </button>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -3,10 +3,15 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Generate new application secret" %}{% endblock %} {% block title %}{% trans "Generate new application secret" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Generate new application secret" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Generate new application secret" %}</h1>
</div>
<div class="panel-body">
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
<p>{% blocktrans %}Are you sure you want to generate a new client secret for the application <strong>{{ application }}</strong>?{% endblocktrans %}</p> <p>{% blocktrans %}Are you sure you want to generate a new client secret for the application
<strong>{{ application }}</strong>?{% endblocktrans %}</p>
<div class="form-group submit-group"> <div class="form-group submit-group">
<a href="{% url "control:user.settings.oauth.apps" %}" class="btn btn-default btn-cancel"> <a href="{% url "control:user.settings.oauth.apps" %}" class="btn btn-default btn-cancel">
{% trans "Cancel" %} {% trans "Cancel" %}
@@ -16,4 +21,6 @@
</button> </button>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -3,7 +3,11 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Update an application" %}{% endblock %} {% block title %}{% trans "Update an application" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Update an application" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Update an application" %}</h1>
</div>
<div class="panel-body">
<form class="form-horizontal" method="post" action=""> <form class="form-horizontal" method="post" action="">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form form layout='control' %} {% bootstrap_form form layout='control' %}
@@ -13,4 +17,6 @@
</button> </button>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -3,7 +3,11 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Revoke access" %}{% endblock %} {% block title %}{% trans "Revoke access" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Revoke access" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Revoke access" %}</h1>
</div>
<div class="panel-body">
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
<p>{% blocktrans %}Are you sure you want to revoke access to your account for the application <strong>{{ application }}</strong>?{% endblocktrans %}</p> <p>{% blocktrans %}Are you sure you want to revoke access to your account for the application <strong>{{ application }}</strong>?{% endblocktrans %}</p>
@@ -16,4 +20,6 @@
</button> </button>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -3,12 +3,15 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Authorized applications" %}{% endblock %} {% block title %}{% trans "Authorized applications" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Authorized applications" %}</h1> <div class="panel panel-default">
<p> <div class="panel-heading">
<h1 class="panel-title">{% trans "Authorized applications" %}</h1>
</div>
<div class="panel-body">
<a href="{% url "control:user.settings.oauth.apps" %}" class="btn btn-default"> <a href="{% url "control:user.settings.oauth.apps" %}" class="btn btn-default">
{% trans "Manage your own apps" %} {% trans "Manage your own apps" %}
</a> </a>
</p> </div>
{% if tokens %} {% if tokens %}
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-condensed table-hover table-quotas"> <table class="table table-condensed table-hover table-quotas">
@@ -54,7 +57,7 @@
</table> </table>
</div> </div>
{% else %} {% else %}
<div class="empty-collection"> <div class="empty-collection panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
No applications have access to your pretix account. No applications have access to your pretix account.
@@ -62,4 +65,5 @@
</p> </p>
</div> </div>
{% endif %} {% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -4,9 +4,13 @@
{% trans "Cancel order" %} {% trans "Cancel order" %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">
{% trans "Cancel order" %} {% trans "Cancel order" %}
</h1> </h1>
</div>
<div class="panel-body">
<p>{% blocktrans trimmed %} <p>{% blocktrans trimmed %}
Do you really want to cancel this order? You cannot revert this action. Do you really want to cancel this order? You cannot revert this action.
{% endblocktrans %}</p> {% endblocktrans %}</p>
@@ -35,4 +39,6 @@
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -7,27 +7,33 @@
{% endblocktrans %} {% endblocktrans %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1> <div class="panel panel-default panel-with-btn">
{% blocktrans trimmed with code=order.code %} <div class="panel-heading">
Change order: {{ code }} <a class="btn btn-default btn-sm pull-right"
{% endblocktrans %}
<a class="btn btn-link btn-lg"
href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}"> href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}">
{% blocktrans trimmed with order=order.code %} {% blocktrans trimmed with order=order.code %}
Back to order {{ order }} Back to order {{ order }}
{% endblocktrans %} {% endblocktrans %}
</a> </a>
<h1 class="panel-title">
{% blocktrans trimmed with code=order.code %}
Change order: {{ code }}
{% endblocktrans %}
</h1> </h1>
</div>
<div class="panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You can use this tool to change the ordered products or to partially cancel the order. Please keep You can use this tool to change the ordered products or to partially cancel the order. Please keep
in mind that changing an order can have several implications, e.g. the payment method fee might change or in mind that changing an order can have several implications, e.g. the payment method fee might
change or
additional questions can be added to the order that need to be answered by the user. additional questions can be added to the order that need to be answered by the user.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
The user will receive a notification about the change but in the case of new required questions, the user The user will receive a notification about the change but in the case of new required questions, the
user
will not be forced to answer them. will not be forced to answer them.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
@@ -38,18 +44,23 @@
</p> </p>
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
If you chose "split into new order" for multiple positions, they will be all split in one second order If you chose "split into new order" for multiple positions, they will be all split in one second
order
together, not multiple orders. together, not multiple orders.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<div class="alert alert-warning"><strong> <div class="alert alert-warning"><strong>
{% blocktrans trimmed %} {% blocktrans trimmed %}
Please use this tool carefully. Changes you make here are not reversible. Also, if you change an order Please use this tool carefully. Changes you make here are not reversible. Also, if you change an
manually, not all constraints (e.g. on required add-ons) will be checked. Therefore, you might construct order
manually, not all constraints (e.g. on required add-ons) will be checked. Therefore, you might
construct
an order that would not be able to exist otherwise. an order that would not be able to exist otherwise.
In most cases it is easier to cancel the order completely and create a new one. In most cases it is easier to cancel the order completely and create a new one.
{% endblocktrans %} {% endblocktrans %}
</strong></div> </strong></div>
</div>
</div>
<form method="post" href=""> <form method="post" href="">
{% csrf_token %} {% csrf_token %}
{% for position in positions %} {% for position in positions %}

View File

@@ -5,19 +5,22 @@
{% trans "Change contact information" %} {% trans "Change contact information" %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1> <div class="panel panel-default panel-with-btn">
{% trans "Change contact information" %} <div class="panel-heading">
<a class="btn btn-link btn-lg" <a class="btn btn-default btn-sm pull-right"
href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}"> href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}">
{% blocktrans trimmed with order=order.code %} {% blocktrans trimmed with order=order.code %}
Back to order {{ order }} Back to order {{ order }}
{% endblocktrans %} {% endblocktrans %}
</a> </a>
<h1 class="panel-title">
{% trans "Change contact information" %}
</h1> </h1>
</div>
<div class="panel-body">
<form method="post" class="form-horizontal" href=""> <form method="post" class="form-horizontal" href="">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="status" value="c" /> <input type="hidden" name="status" value="c"/>
{% bootstrap_form form layout='horizontal' %} {% bootstrap_form form layout='horizontal' %}
<div class="form-group submit-group"> <div class="form-group submit-group">
<a class="btn btn-default btn-lg" <a class="btn btn-default btn-lg"
@@ -30,4 +33,6 @@
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -5,15 +5,19 @@
{% trans "Change locale information" %} {% trans "Change locale information" %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1> <div class="panel panel-default panel-with-btn">
{% trans "Change locale information" %} <div class="panel-heading">
<a class="btn btn-link btn-lg" <a class="btn btn-default btn-sm pull-right"
href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}"> href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}">
{% blocktrans trimmed with order=order.code %} {% blocktrans trimmed with order=order.code %}
Back to order {{ order }} Back to order {{ order }}
{% endblocktrans %} {% endblocktrans %}
</a> </a>
<h1 class="panel-title">
{% trans "Change locale information" %}
</h1> </h1>
</div>
<div class="panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
This language will be used whenever emails are sent to the users. This language will be used whenever emails are sent to the users.
@@ -35,4 +39,6 @@
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -5,24 +5,29 @@
{% trans "Change contact information" %} {% trans "Change contact information" %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1> <div class="panel panel-default panel-with-btn">
{% trans "Change order information" %} <div class="panel-heading">
<a class="btn btn-link btn-lg" <a class="btn btn-default btn-sm pull-right"
href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}"> href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}">
{% blocktrans trimmed with order=order.code %} {% blocktrans trimmed with order=order.code %}
Back to order {{ order }} Back to order {{ order }}
{% endblocktrans %} {% endblocktrans %}
</a> </a>
<h1 class="panel-title">
{% trans "Change order information" %}
</h1> </h1>
</div>
</div>
<form method="post" class="form-horizontal" href="" enctype="multipart/form-data"> <form method="post" class="form-horizontal" href="" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
<div class="panel-group" id="questions_accordion"> <div class="" id="questions_accordion">
{% if request.event.settings.invoice_address_asked or order.invoice_address or request.event.settings.invoice_name_required %} {% if request.event.settings.invoice_address_asked or order.invoice_address or request.event.settings.invoice_name_required %}
<details class="panel panel-default" open> <details class="panel panel-default" open>
<summary class="panel-heading"> <summary class="panel-heading">
<h4 class="panel-title"> <h4 class="panel-title">
<strong>{% trans "Invoice information" %} {% if not request.event.settings.invoice_address_required %} <strong>{% trans "Invoice information" %}
{% if not request.event.settings.invoice_address_required %}
{% trans "(optional)" %} {% trans "(optional)" %}
{% endif %}</strong> {% endif %}</strong>
<i class="fa fa-angle-down collapse-indicator"></i> <i class="fa fa-angle-down collapse-indicator"></i>

View File

@@ -5,19 +5,22 @@
{% trans "Extend payment term" %} {% trans "Extend payment term" %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1> <div class="panel panel-default panel-with-btn">
{% trans "Extend payment term" %} <div class="panel-heading">
<a class="btn btn-link btn-lg" <a class="btn btn-default btn-sm pull-right"
href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}"> href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}">
{% blocktrans trimmed with order=order.code %} {% blocktrans trimmed with order=order.code %}
Back to order {{ order }} Back to order {{ order }}
{% endblocktrans %} {% endblocktrans %}
</a> </a>
<h1 class="panel-title">
{% trans "Extend payment term" %}
</h1> </h1>
</div>
<div class="panel-body">
<form method="post" class="form-horizontal" href=""> <form method="post" class="form-horizontal" href="">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="status" value="c" /> <input type="hidden" name="status" value="c"/>
{% bootstrap_form form layout='horizontal' %} {% bootstrap_form form layout='horizontal' %}
<div class="form-group submit-group"> <div class="form-group submit-group">
<a class="btn btn-default btn-lg" <a class="btn btn-default btn-lg"
@@ -30,4 +33,6 @@
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -12,6 +12,22 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
{% blocktrans asvar s_taxes %}taxes{% endblocktrans %} {% blocktrans asvar s_taxes %}taxes{% endblocktrans %}
{% if order.is_expired_by_time %}
<form action="{% url "control:event.order.transition" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}"
method="post">
{% csrf_token %}
<div class="alert alert-info">
<button name="status" value="e" class="btn btn-default pull-right">{% trans "Expire order" %}</button>
{% trans "The payment for this order is overdue, but you have configured not to expire orders automatically. To free quota capacity, you can mark it as expired manually." %}
<div class="clearfix"></div>
</div>
</form>
{% endif %}
<div class="row">
<div class="col-xs-12 col-lg-10">
<div class="panel items">
<div class="panel-body">
<h1> <h1>
{% blocktrans trimmed with code=order.code %} {% blocktrans trimmed with code=order.code %}
Order details: {{ code }} Order details: {{ code }}
@@ -54,27 +70,6 @@
</div> </div>
</form> </form>
{% endif %} {% endif %}
{% if order.is_expired_by_time %}
<form action="{% url "control:event.order.transition" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}"
method="post">
{% csrf_token %}
<div class="alert alert-info">
<button name="status" value="e" class="btn btn-default pull-right">{% trans "Expire order" %}</button>
{% trans "The payment for this order is overdue, but you have configured not to expire orders automatically. To free quota capacity, you can mark it as expired manually." %}
<div class="clearfix"></div>
</div>
</form>
{% endif %}
<div class="row">
<div class="col-xs-12 col-lg-10">
<div class="panel panel-primary items">
<div class="panel-heading">
<h3 class="panel-title">
{% trans "Order details" %}
</h3>
</div>
<div class="panel-body">
<dl class="dl-horizontal"> <dl class="dl-horizontal">
<dt>{% trans "Order code" %}</dt> <dt>{% trans "Order code" %}</dt>
<dd>{{ order.code }}</dd> <dd>{{ order.code }}</dd>

View File

@@ -3,16 +3,18 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Email history" %}{% endblock %} {% block title %}{% trans "Email history" %}{% endblock %}
{% block content %} {% block content %}
<h1> <div class="panel panel-default panel-with-btn">
{% trans "Email history" %} <div class="panel-heading">
<a class="btn btn-link btn-lg" <a class="btn btn-default btn-sm pull-right"
href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}"> href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}">
{% blocktrans trimmed with order=order.code %} {% blocktrans trimmed with order=order.code %}
Back to order {{ order }} Back to order {{ order }}
{% endblocktrans %} {% endblocktrans %}
</a> </a>
<h1 class="panel-title">
{% trans "Email history" %}
</h1> </h1>
<div> </div>
<ul class="list-group"> <ul class="list-group">
{% for log in logs %} {% for log in logs %}
<li class="list-group-item logentry"> <li class="list-group-item logentry">
@@ -55,6 +57,8 @@
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> <div class="panel-footer">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -5,22 +5,26 @@
{% trans "Mark order as paid" %} {% trans "Mark order as paid" %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1> <div class="panel panel-default panel-with-btn">
{% trans "Mark order as paid" %} <div class="panel-heading">
<a class="btn btn-link btn-lg" <a class="btn btn-default btn-sm pull-right"
href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}"> href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}">
{% blocktrans trimmed with order=order.code %} {% blocktrans trimmed with order=order.code %}
Back to order {{ order }} Back to order {{ order }}
{% endblocktrans %} {% endblocktrans %}
</a> </a>
<h1 class="panel-title">
{% trans "Mark order as paid" %}
</h1> </h1>
</div>
<div class="panel-body">
<form method="post" class="form-horizontal" href=""> <form method="post" class="form-horizontal" href="">
{% csrf_token %} {% csrf_token %}
<p>{% blocktrans trimmed %} <p>{% blocktrans trimmed %}
Do you really want to mark this order as paid? Do you really want to mark this order as paid?
{% endblocktrans %}</p> {% endblocktrans %}</p>
<input type="hidden" name="status" value="p" /> <input type="hidden" name="status" value="p"/>
{% bootstrap_form form layout='horizontal' horizontal_label_class='sr-only' horizontal_field_class='col-md-12' %} {% bootstrap_form form layout='horizontal' horizontal_label_class='sr-only' horizontal_field_class='col-md-12' %}
<div class="form-group submit-group"> <div class="form-group submit-group">
<a class="btn btn-default btn-lg" <a class="btn btn-default btn-lg"
@@ -33,4 +37,6 @@
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -4,15 +4,19 @@
{% trans "Refund order" %} {% trans "Refund order" %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1> <div class="panel panel-default panel-with-btn">
{% trans "Refund order" %} <div class="panel-heading">
<a class="btn btn-link btn-lg" <a class="btn btn-default btn-sm pull-right"
href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}"> href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}">
{% blocktrans trimmed with order=order.code %} {% blocktrans trimmed with order=order.code %}
Back to order {{ order }} Back to order {{ order }}
{% endblocktrans %} {% endblocktrans %}
</a> </a>
<h1 class="panel-title">
{% trans "Refund order" %}
</h1> </h1>
</div>
<div class="panel-body">
<form method="post" href=""> <form method="post" href="">
<p>{% blocktrans trimmed %} <p>{% blocktrans trimmed %}
Do you really want to refund this order? You cannot revert this action. Do you really want to refund this order? You cannot revert this action.
@@ -21,7 +25,7 @@
{{ payment|safe }} {{ payment|safe }}
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="status" value="r" /> <input type="hidden" name="status" value="r"/>
<div class="row checkout-button-row"> <div class="row checkout-button-row">
<div class="col-md-4"> <div class="col-md-4">
<a class="btn btn-block btn-default btn-lg" <a class="btn btn-block btn-default btn-lg"
@@ -37,4 +41,6 @@
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -3,35 +3,24 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Send email" %}{% endblock %} {% block title %}{% trans "Send email" %}{% endblock %}
{% block content %} {% block content %}
<h1> <div class="panel panel-default panel-with-btn">
{% trans "Send email" %} <div class="panel-heading">
<a class="btn btn-link btn-lg" <a class="btn btn-default btn-sm pull-right"
href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}"> href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}">
{% blocktrans trimmed with order=order.code %} {% blocktrans trimmed with order=order.code %}
Back to order {{ order }} Back to order {{ order }}
{% endblocktrans %} {% endblocktrans %}
</a> </a>
<h1 class="panel-title">
{% trans "Send email" %}
</h1> </h1>
{% block inner %} </div>
<div class="panel-body">
<form class="form-horizontal" method="post" action=""> <form class="form-horizontal" method="post" action="">
{% csrf_token %} {% csrf_token %}
{% bootstrap_field form.sendto layout='horizontal' %} {% bootstrap_field form.sendto layout='horizontal' %}
{% bootstrap_field form.subject layout='horizontal' %} {% bootstrap_field form.subject layout='horizontal' %}
{% bootstrap_field form.message layout='horizontal' %} {% bootstrap_field form.message layout='horizontal' %}
{% if request.method == "POST" %}
<fieldset>
<legend>{% trans "E-mail preview" %}</legend>
<div class="tab-pane mail-preview-group">
<pre lang="" class="mail-preview">
{% for segment in preview_output %}
{% spaceless %}
{{ segment|linebreaksbr }}
{% endspaceless %}
{% endfor %}
</pre>
</div>
</fieldset>
{% endif %}
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-default btn-save pull-left" name="action" value="preview"> <button type="submit" class="btn btn-default btn-save pull-left" name="action" value="preview">
{% trans "Preview email" %} {% trans "Preview email" %}
@@ -41,5 +30,24 @@
</button> </button>
</div> </div>
</form> </form>
{% endblock %} </div>
</div>
{% if request.method == "POST" %}
<fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "E-mail preview" %}</legend>
</div>
<div class="panel-body">
<div class="tab-pane mail-preview-group">
<pre lang="" class="mail-preview">
{% for segment in preview_output %}
{% spaceless %}
{{ segment|linebreaksbr }}
{% endspaceless %}
{% endfor %}
</pre>
</div>
</div>
</fieldset>
{% endif %}
{% endblock %} {% endblock %}

View File

@@ -4,12 +4,11 @@
{% load order_overview %} {% load order_overview %}
{% block title %}{% trans "Data export" %}{% endblock %} {% block title %}{% trans "Data export" %}{% endblock %}
{% block content %} {% block content %}
<h1>
{% trans "Data export" %}
{% if "identifier" in request.GET %} {% if "identifier" in request.GET %}
<p class="text-right">
<a href="?" class="btn btn-default">{% trans "Show all" %}</a> <a href="?" class="btn btn-default">{% trans "Show all" %}</a>
</p>
{% endif %} {% endif %}
</h1>
{% for e in exporters %} {% for e in exporters %}
<details class="panel panel-default" {% if "identifier" in request.GET %}open{% endif %}> <details class="panel panel-default" {% if "identifier" in request.GET %}open{% endif %}>
<summary class="panel-heading"> <summary class="panel-heading">
@@ -24,7 +23,7 @@
method="post" class="form-horizontal" data-asynctask data-asynctask-download method="post" class="form-horizontal" data-asynctask data-asynctask-download
data-asynctask-long> data-asynctask-long>
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="exporter" value="{{ e.identifier }}" /> <input type="hidden" name="exporter" value="{{ e.identifier }}"/>
{% bootstrap_form e.form layout='horizontal' %} {% bootstrap_form e.form layout='horizontal' %}
<button class="btn btn-primary pull-right" type="submit"> <button class="btn btn-primary pull-right" type="submit">
<span class="icon icon-upload"></span> {% trans "Start export" %} <span class="icon icon-upload"></span> {% trans "Start export" %}

View File

@@ -6,9 +6,9 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Orders" %}{% endblock %} {% block title %}{% trans "Orders" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Orders" %}</h1> <div class="panel panel-default">
{% if not filter_form.filtered and orders|length == 0 %} {% if not filter_form.filtered and orders|length == 0 %}
<div class="empty-collection"> <div class="empty-collection panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
Nobody ordered a ticket yet. Nobody ordered a ticket yet.
@@ -27,11 +27,13 @@
{% endif %} {% endif %}
</div> </div>
{% else %} {% else %}
<div class="panel-body">
<div class="row filter-form"> <div class="row filter-form">
<form class="col-md-2 col-xs-12" <form class="col-md-2 col-xs-12"
action="{% url "control:event.orders.go" event=request.event.slug organizer=request.event.organizer.slug %}"> action="{% url "control:event.orders.go" event=request.event.slug organizer=request.event.organizer.slug %}">
<div class="input-group"> <div class="input-group">
<input type="text" name="code" class="form-control" placeholder="{% trans "Order code" %}" autofocus> <input type="text" name="code" class="form-control" placeholder="{% trans "Order code" %}"
autofocus>
<span class="input-group-btn"> <span class="input-group-btn">
<button class="btn btn-primary" type="submit">{% trans "Go!" %}</button> <button class="btn btn-primary" type="submit">{% trans "Go!" %}</button>
</span> </span>
@@ -78,35 +80,45 @@
{% blocktrans trimmed with question=filter_form.cleaned_data.question.question %} {% blocktrans trimmed with question=filter_form.cleaned_data.question.question %}
List filtered by answers to question "{{ question }}". List filtered by answers to question "{{ question }}".
{% endblocktrans %} {% endblocktrans %}
<a href="?{% url_replace request 'question' '' 'answer' ''%}" class="text-muted"> <a href="?{% url_replace request 'question' '' 'answer' '' %}" class="text-muted">
<span class="fa fa-times"></span> <span class="fa fa-times"></span>
{% trans "Remove filter" %} {% trans "Remove filter" %}
</a> </a>
</p> </p>
{% endif %} {% endif %}
</div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-condensed table-hover"> <table class="table table-condensed table-hover">
<thead> <thead>
<tr> <tr>
<th>{% trans "Order code" %} <th>{% trans "Order code" %}
<a href="?{% url_replace request 'ordering' '-code' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-code' %}"><i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'code' %}"><i class="fa fa-caret-up"></i></a></th> <a href="?{% url_replace request 'ordering' 'code' %}"><i class="fa fa-caret-up"></i></a>
</th>
<th>{% trans "User" %} <th>{% trans "User" %}
<a href="?{% url_replace request 'ordering' '-email' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-email' %}"><i
<a href="?{% url_replace request 'ordering' 'email' %}"><i class="fa fa-caret-up"></i></a></th> class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'email' %}"><i class="fa fa-caret-up"></i></a>
</th>
<th>{% trans "Order date" %} <th>{% trans "Order date" %}
<a href="?{% url_replace request 'ordering' '-datetime' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-datetime' %}"><i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'datetime' %}"><i class="fa fa-caret-up"></i></a> <a href="?{% url_replace request 'ordering' 'datetime' %}"><i
class="fa fa-caret-up"></i></a>
</th> </th>
<th class="text-right">{% trans "Order total" %} <th class="text-right">{% trans "Order total" %}
<a href="?{% url_replace request 'ordering' '-total' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-total' %}"><i
<a href="?{% url_replace request 'ordering' 'total' %}"><i class="fa fa-caret-up"></i></a></th> class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'total' %}"><i class="fa fa-caret-up"></i></a>
</th>
<th class="text-right">{% trans "Positions" %} <th class="text-right">{% trans "Positions" %}
<a href="?{% url_replace request 'ordering' '-pcnt' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-pcnt' %}"><i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'pcnt' %}"><i class="fa fa-caret-up"></i></a></th> <a href="?{% url_replace request 'ordering' 'pcnt' %}"><i class="fa fa-caret-up"></i></a>
</th>
<th class="text-right">{% trans "Status" %} <th class="text-right">{% trans "Status" %}
<a href="?{% url_replace request 'ordering' '-status' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-status' %}"><i
<a href="?{% url_replace request 'ordering' 'status' %}"><i class="fa fa-caret-up"></i></a></th> class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'status' %}"><i class="fa fa-caret-up"></i></a>
</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -135,6 +147,9 @@
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="panel-footer">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
{% endif %} {% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -3,27 +3,38 @@
{% load order_overview %} {% load order_overview %}
{% block title %}{% trans "Sales overview" %}{% endblock %} {% block title %}{% trans "Sales overview" %}{% endblock %}
{% block content %} {% block content %}
<div class="panel panel-default panel-with-button">
<div class="panel-heading">
{% url "control:event.orders" organizer=request.event.organizer.slug event=request.event.slug as listurl %} {% url "control:event.orders" organizer=request.event.organizer.slug event=request.event.slug as listurl %}
<div class="pull-right"> <div class="pull-right">
<div class="btn-group" role="group" id="sumtoggle"> <div class="btn-group" role="group" id="sumtoggle">
<button type="button" data-target=".count" class="btn btn-default active">{% trans "Sales" %}</button> <button type="button" data-target=".count"
<button type="button" data-target=".sum-gross" class="btn btn-default">{% trans "Revenue (gross)" %}</button> class="btn btn-sm btn-default active">{% trans "Sales" %}</button>
<button type="button" data-target=".sum-net" class="btn btn-default">{% trans "Revenue (net)" %}</button> <button type="button" data-target=".sum-gross"
class="btn btn-sm btn-default">{% trans "Revenue (gross)" %}</button>
<button type="button" data-target=".sum-net"
class="btn btn-sm btn-default">{% trans "Revenue (net)" %}</button>
</div> </div>
</div> </div>
<h1>{% trans "Order overview" %}</h1> <h1 class="panel-title">{% trans "Order overview" %}</h1>
<div class="clearfix"></div>
</div>
{% if request.event.has_subevents %} {% if request.event.has_subevents %}
<form class="form-inline helper-display-inline" action="" method="get"> <form class="panel-body form-inline helper-display-inline" action="" method="get">
{% include "pretixcontrol/event/fragment_subevent_choice_simple.html" %} {% include "pretixcontrol/event/fragment_subevent_choice_simple.html" %}
</form> </form>
{% endif %} {% endif %}
{% if subevent_warning %} {% if subevent_warning %}
<div class="panel-body">
<div class="alert alert-info"> <div class="alert alert-info">
{% blocktrans trimmed context "subevent" %} {% blocktrans trimmed context "subevent" %}
If you select a single date, payment method fees will not be listed here as it might not be clear which If you select a single date, payment method fees will not be listed here as it might not be
clear
which
date they belong to. date they belong to.
{% endblocktrans %} {% endblocktrans %}
</div> </div>
</div>
{% endif %} {% endif %}
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-condensed table-hover table-product-overview"> <table class="table table-condensed table-hover table-product-overview">
@@ -119,4 +130,5 @@
</tfoot> </tfoot>
</table> </table>
</div> </div>
</div>
{% endblock %} {% endblock %}

View File

@@ -3,44 +3,6 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Organizer" %}{% endblock %} {% block title %}{% trans "Organizer" %}{% endblock %}
{% block content %} {% block content %}
<h1>
{% blocktrans with name=organizer.name %}Organizer: {{ name }}{% endblocktrans %}
{% if 'can_change_organizer_settings' in request.orgapermset %}
<a href="{% url "control:organizer.edit" organizer=organizer.slug %}"
class="btn btn-default hidden-print">
<span class="fa fa-edit"></span>
{% trans "Edit" %}
</a>
{% endif %}
</h1>
<ul class="nav nav-pills hidden-print">
<li {% if "organizer" == url_name %}class="active"{% endif %}>
<a href="{% url "control:organizer" organizer=organizer.slug %}">
{% trans "Events" %}
</a>
</li>
{% if 'can_change_teams' in request.orgapermset %}
<li {% if "organizer.team" in url_name %}class="active"{% endif %}>
<a href="{% url "control:organizer.teams" organizer=organizer.slug %}">
{% trans "Teams" %}
</a>
</li>
{% endif %}
{% if 'can_change_organizer_settings' in request.orgapermset %}
<li {% if "organizer.display" in url_name %}class="active"{% endif %}>
<a href="{% url "control:organizer.display" organizer=organizer.slug %}">
{% trans "Display" %}
</a>
</li>
{% endif %}
{% for nav in nav_organizer %}
<li {% if nav.active %}class="active"{% endif %}>
<a href="{{ nav.url }}">
{{ nav.label }}
</a>
</li>
{% endfor %}
</ul>
{% block inner %} {% block inner %}
{% endblock %} {% endblock %}

View File

@@ -3,19 +3,22 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Create a new organizer" %}{% endblock %} {% block title %}{% trans "Create a new organizer" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Create a new organizer" %}</h1>
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
<div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Create a new organizer" %}</h1>
</div>
<div class="panel-body">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
<fieldset>
<legend>{% trans "General information" %}</legend>
{% bootstrap_field form.name layout="horizontal" %} {% bootstrap_field form.name layout="horizontal" %}
{% bootstrap_field form.slug layout="horizontal" %} {% bootstrap_field form.slug layout="horizontal" %}
</fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">
{% trans "Save" %} {% trans "Save" %}
</button> </button>
</div> </div>
</div>
</div>
</form> </form>
{% endblock %} {% endblock %}

View File

@@ -2,11 +2,18 @@
{% load i18n %} {% load i18n %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% block inner %} {% block inner %}
<div class="panel panel-default">
{% if events|length == 0 %} {% if events|length == 0 %}
<p> <div class="panel-body empty-collection">
<em>{% trans "You currently do not have access to any events." %}</em> <em>{% trans "You currently do not have access to any events." %}</em>
</p> </div>
{% else %} {% else %}
<div class="panel-body">
<a href="{% url "control:events.add" %}" class="btn btn-default">
<span class="fa fa-plus"></span>
{% trans "Create a new event" %}
</a>
</div>
<table class="table table-condensed table-hover"> <table class="table table-condensed table-hover">
<thead> <thead>
<tr> <tr>
@@ -27,8 +34,5 @@
</tbody> </tbody>
</table> </table>
{% endif %} {% endif %}
<a href="{% url "control:events.add" %}" class="btn btn-default"> </div>
<span class="fa fa-plus"></span>
{% trans "Create a new event" %}
</a>
{% endblock %} {% endblock %}

View File

@@ -4,17 +4,24 @@
{% block inner %} {% block inner %}
<form action="" method="post" class="form-horizontal" enctype="multipart/form-data"> <form action="" method="post" class="form-horizontal" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Organizer page" %}</legend> <legend>{% trans "Organizer page" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
{% bootstrap_field form.locales layout="control" %} {% bootstrap_field form.locales layout="control" %}
{% bootstrap_field form.organizer_logo_image layout="control" %} {% bootstrap_field form.organizer_logo_image layout="control" %}
{% bootstrap_field form.organizer_homepage_text layout="control" %} {% bootstrap_field form.organizer_homepage_text layout="control" %}
{% bootstrap_field form.event_list_type layout="control" %} {% bootstrap_field form.event_list_type layout="control" %}
{% bootstrap_field form.organizer_link_back layout="control" %} {% bootstrap_field form.organizer_link_back layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel-default panel">
<div class="panel-heading">
<legend>{% trans "Shop design" %}</legend> <legend>{% trans "Shop design" %}</legend>
</div>
<div class="panel-body">
<p class="help-block"> <p class="help-block">
{% blocktrans trimmed %} {% blocktrans trimmed %}
These settings will be used for the organizer page as well as for the default settings These settings will be used for the organizer page as well as for the default settings

View File

@@ -4,29 +4,41 @@
{% load formset_tags %} {% load formset_tags %}
{% block title %}{% trans "Organizer" %}{% endblock %} {% block title %}{% trans "Organizer" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Organizer" %}</h1>
<form action="" method="post" class="form-horizontal" enctype="multipart/form-data"> <form action="" method="post" class="form-horizontal" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "General information" %}</legend> <legend>{% trans "General information" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
{% bootstrap_field form.name layout="control" %} {% bootstrap_field form.name layout="control" %}
{% bootstrap_field form.slug layout="control" %} {% bootstrap_field form.slug layout="control" %}
{% if form.domain %} {% if form.domain %}
{% bootstrap_field form.domain layout="control" %} {% bootstrap_field form.domain layout="control" %}
{% endif %} {% endif %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Other" %}</legend> <legend>{% trans "Other" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_form_errors sform %} {% bootstrap_form_errors sform %}
{% bootstrap_field sform.organizer_info_text layout="control" %} {% bootstrap_field sform.organizer_info_text layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Event metadata (advanced)" %}</legend> <legend>{% trans "Event metadata (advanced)" %}</legend>
</div>
<div class="panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You can here define a set of metadata properties (i.e. variables) that you can later set for your You can here define a set of metadata properties (i.e. variables) that you can later set for
events and re-use in places like ticket layouts. This is an useful timesaver if you create lots and your
events and re-use in places like ticket layouts. This is an useful timesaver if you create lots
and
lots of events. lots of events.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
@@ -79,6 +91,7 @@
<i class="fa fa-plus"></i> {% trans "Add property" %}</button> <i class="fa fa-plus"></i> {% trans "Add property" %}</button>
</p> </p>
</div> </div>
</div>
</fieldset> </fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">

View File

@@ -5,9 +5,14 @@
{% load eventurl %} {% load eventurl %}
{% block title %}{% trans "Organizers" %}{% endblock %} {% block title %}{% trans "Organizers" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Organizers" %}</h1> <div class="panel panel-default">
<p>{% trans "The list below shows all organizer accounts you have administrative access to." %}</p> <div class="panel-heading">
<form class="row filter-form" action="" method="get"> <h1 class="panel-title">{% trans "Organizers" %}</h1>
</div>
<div class="panel-body">{% trans "The list below shows all organizer accounts you have administrative access to." %}</div>
</div>
<div class="panel panel-default">
<form class="row filter-form panel-body" action="" method="get">
<div class="col-md-10 col-sm-6 col-xs-12"> <div class="col-md-10 col-sm-6 col-xs-12">
{% bootstrap_field filter_form.query layout='inline' %} {% bootstrap_field filter_form.query layout='inline' %}
</div> </div>
@@ -21,12 +26,12 @@
</div> </div>
</form> </form>
{% if staff_session %} {% if staff_session %}
<p> <div class="panel-body">
<a href="{% url "control:organizers.add" %}" class="btn btn-default"> <a href="{% url "control:organizers.add" %}" class="btn btn-default">
<span class="fa fa-plus"></span> <span class="fa fa-plus"></span>
{% trans "Create a new organizer" %} {% trans "Create a new organizer" %}
</a> </a>
</p> </div>
{% endif %} {% endif %}
<table class="table table-condensed table-hover"> <table class="table table-condensed table-hover">
<thead> <thead>
@@ -54,5 +59,8 @@
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
<div class="panel-footer">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -2,11 +2,17 @@
{% load i18n %} {% load i18n %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% block inner %} {% block inner %}
<h2>{% trans "Delete team:" %} {{ team.name }}</h2> <div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-titlte">{% trans "Delete team:" %} {{ team.name }}</h2>
</div>
<div class="panel-body">
{% if not possible %} {% if not possible %}
<p>{% blocktrans %}You cannot delete the team because there would be no one left who could change team permissions afterwards.{% endblocktrans %}</p> <p>{% blocktrans %}You cannot delete the team because there would be no one left who could change team
permissions afterwards.{% endblocktrans %}</p>
<div class="form-group submit-group"> <div class="form-group submit-group">
<a href="{% url "control:organizer.teams" organizer=request.organizer.slug %}" class="btn btn-default btn-cancel"> <a href="{% url "control:organizer.teams" organizer=request.organizer.slug %}"
class="btn btn-default btn-cancel">
{% trans "Cancel" %} {% trans "Cancel" %}
</a> </a>
<div class="clearfix"></div> <div class="clearfix"></div>
@@ -17,7 +23,8 @@
<p>{% blocktrans %}Are you sure you want to delete the team?{% endblocktrans %} <p>{% blocktrans %}Are you sure you want to delete the team?{% endblocktrans %}
</p> </p>
<div class="form-group submit-group"> <div class="form-group submit-group">
<a href="{% url "control:organizer.teams" organizer=request.organizer.slug%}" class="btn btn-default btn-cancel"> <a href="{% url "control:organizer.teams" organizer=request.organizer.slug %}"
class="btn btn-default btn-cancel">
{% trans "Cancel" %} {% trans "Cancel" %}
</a> </a>
<button type="submit" class="btn btn-danger btn-save"> <button type="submit" class="btn btn-danger btn-save">
@@ -26,4 +33,6 @@
</div> </div>
</form> </form>
{% endif %} {% endif %}
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -2,31 +2,43 @@
{% load i18n %} {% load i18n %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% block inner %} {% block inner %}
<form class="form-horizontal" action="" method="post">
{% csrf_token %}
{% bootstrap_form_errors form %}
<fieldset class="panel panel-default">
<div class="panel-heading">
{% if team %} {% if team %}
<h2>{% trans "Team:" %} {{ team.name }}</h2> <h2 class="panel-title">{% trans "Team:" %} {{ team.name }}</h2>
{% else %} {% else %}
<h2>{% trans "Create a new team" %}</h2> <h2 class="panel-title">{% trans "Create a new team" %}</h2>
{% endif %}
</div>
<div class="panel-body">
{% if not team %}
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You will be able to add team members in the next step. You will be able to add team members in the next step.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
{% endif %} {% endif %}
<form class="form-horizontal" action="" method="post">
{% csrf_token %}
{% bootstrap_form_errors form %}
<fieldset>
<legend>{% trans "General information" %}</legend>
{% bootstrap_field form.name layout="control" %} {% bootstrap_field form.name layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Organizer permissions" %}</legend> <legend>{% trans "Organizer permissions" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.can_create_events layout="control" %} {% bootstrap_field form.can_create_events layout="control" %}
{% bootstrap_field form.can_change_teams layout="control" %} {% bootstrap_field form.can_change_teams layout="control" %}
{% bootstrap_field form.can_change_organizer_settings layout="control" %} {% bootstrap_field form.can_change_organizer_settings layout="control" %}
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Event permissions" %}</legend> <legend>{% trans "Event permissions" %}</legend>
</div>
<div class="panel-body">
{% bootstrap_field form.all_events layout="control" %} {% bootstrap_field form.all_events layout="control" %}
{% bootstrap_field form.limit_events layout="control" %} {% bootstrap_field form.limit_events layout="control" %}
@@ -36,6 +48,7 @@
{% bootstrap_field form.can_change_orders layout="control" %} {% bootstrap_field form.can_change_orders layout="control" %}
{% bootstrap_field form.can_view_vouchers layout="control" %} {% bootstrap_field form.can_view_vouchers layout="control" %}
{% bootstrap_field form.can_change_vouchers layout="control" %} {% bootstrap_field form.can_change_vouchers layout="control" %}
</div>
</fieldset> </fieldset>
<div class="form-group submit-group"> <div class="form-group submit-group">
<button type="submit" class="btn btn-primary btn-save"> <button type="submit" class="btn btn-primary btn-save">

View File

@@ -2,18 +2,24 @@
{% load i18n %} {% load i18n %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% block inner %} {% block inner %}
<h2> <div class="panel panel-default">
{% trans "Team:" %} {{ team.name }} <div class="panel-heading">
<a href="{% url "control:organizer.team.edit" organizer=organizer.slug team=team.pk %}" <a href="{% url "control:organizer.team.edit" organizer=organizer.slug team=team.pk %}"
class="btn btn-default"> class="btn btn-default pull-right">
<span class="fa fa-edit"></span> <span class="fa fa-edit"></span>
{% trans "Edit" %} {% trans "Edit" %}
</a> </a>
<h2 class="panel-title">
{% trans "Team:" %} {{ team.name }}
</h2> </h2>
<h3>{% trans "Team members" %}</h3> </div>
</div>
<form action="" method="post"> <form action="" method="post">
{% csrf_token %}
<!-- Trick browsers into taking this as a default --> <!-- Trick browsers into taking this as a default -->
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{% trans "Team members" %}</h3>
</div>
<button type="submit" class="btn btn-primary btn-sm btn-block nearly-gone"></button> <button type="submit" class="btn btn-primary btn-sm btn-block nearly-gone"></button>
<table class="table table-condensed table-hover"> <table class="table table-condensed table-hover">
<thead> <thead>
@@ -64,12 +70,7 @@
<tfoot> <tfoot>
<tr> <tr>
<td> <td>
{% bootstrap_field add_form.user layout='inline' %}<br> {% bootstrap_field add_form.user layout='inline' %}
{% blocktrans trimmed %}
To add a new user, you can enter their email address here. If they already have a
pretix account, they will immediately be added to the event. Otherwise, they will
be sent an email with an invitation.
{% endblocktrans %}
</td> </td>
<td class="text-right"> <td class="text-right">
<button type="submit" class="btn btn-primary btn-sm btn-block"> <button type="submit" class="btn btn-primary btn-sm btn-block">
@@ -79,12 +80,23 @@
</tr> </tr>
</tfoot> </tfoot>
</table> </table>
<div class="panel-footer">
{% blocktrans trimmed %}
To add a new user, you can enter their email address here. If they already have a
pretix account, they will immediately be added to the event. Otherwise, they will
be sent an email with an invitation.
{% endblocktrans %}
</div>
</div>
</form> </form>
<h3>{% trans "API tokens" %}</h3>
<form action="" method="post"> <form action="" method="post">
{% csrf_token %} {% csrf_token %}
<!-- Trick browsers into taking this as a default --> <!-- Trick browsers into taking this as a default -->
<button type="submit" class="btn btn-primary btn-sm btn-block nearly-gone"></button> <button type="submit" class="btn btn-primary btn-sm btn-block nearly-gone"></button>
<div class="panel-default panel">
<div class="panel-heading">
<h3 class="panel-title">{% trans "API tokens" %}</h3>
</div>
<table class="table table-condensed table-hover"> <table class="table table-condensed table-hover">
<thead> <thead>
<tr> <tr>
@@ -120,6 +132,7 @@
</tr> </tr>
</tfoot> </tfoot>
</table> </table>
</div>
</form> </form>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">

View File

@@ -2,13 +2,13 @@
{% load i18n %} {% load i18n %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% block inner %} {% block inner %}
<p> <div class="panel panel-default">
{% trans "The list below shows all teams that exist within this organizer." %} <div class="panel-body">
</p>
<a href="{% url "control:organizer.team.add" organizer=request.organizer.slug %}" class="btn btn-default"> <a href="{% url "control:organizer.team.add" organizer=request.organizer.slug %}" class="btn btn-default">
<span class="fa fa-plus"></span> <span class="fa fa-plus"></span>
{% trans "Create a new team" %} {% trans "Create a new team" %}
</a> </a>
</div>
<table class="table table-condensed table-hover"> <table class="table table-condensed table-hover">
<thead> <thead>
<tr> <tr>
@@ -53,4 +53,5 @@
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div>
{% endblock %} {% endblock %}

View File

@@ -1,8 +1,8 @@
{% load i18n %} {% load i18n %}
{% load urlreplace %} {% load urlreplace %}
<nav class="text-center pagination-container"> <nav class="text-center pagination-container">
<ul class="pagination">
{% if is_paginated %} {% if is_paginated %}
<ul class="pagination">
{% if page_obj.has_previous %} {% if page_obj.has_previous %}
<li> <li>
<a href="?{% url_replace request 'page' page_obj.previous_page_number %}"> <a href="?{% url_replace request 'page' page_obj.previous_page_number %}">
@@ -12,7 +12,7 @@
{% endif %} {% endif %}
<li class="page-current"><a> <li class="page-current"><a>
{% blocktrans trimmed with page=page_obj.number of=page_obj.paginator.num_pages count=page_obj.paginator.count %} {% blocktrans trimmed with page=page_obj.number of=page_obj.paginator.num_pages count=page_obj.paginator.count %}
Page {{ page }} of {{ of }} ({{ count }} elements) Page {{ page }} of {{ of }}
{% endblocktrans %} {% endblocktrans %}
</a></li> </a></li>
{% if page_obj.has_next %} {% if page_obj.has_next %}
@@ -22,27 +22,34 @@
</a> </a>
</li> </li>
{% endif %} {% endif %}
{% else %} </ul>
{% if page_obj.paginator.count > 1 %} {% endif %}
{% if page_obj.paginator.count > 0 %}
<ul class="pagination pagination-count">
<li class="page-current"><a> <li class="page-current"><a>
{% blocktrans trimmed with count=page_obj.paginator.count %} {% blocktrans trimmed with count=page_obj.paginator.count %}
{{ count }} elements {{ count }} elements
{% endblocktrans %} {% endblocktrans %}
</a></li> </a></li>
{% endif %}
{% endif %}
</ul> </ul>
{% if page_size %} <ul class="pagination pagination-select">
<div class="clearfix"> <li class="page-current"><a>
<small>
{% trans "Show per page:" %} {% trans "Show per page:" %}
</small> </a></li>
<li>
<a href="?{% url_replace request "page_size" "25" "page" "1" %}"> <a href="?{% url_replace request "page_size" "25" "page" "1" %}">
{% if page_size == 25 %}<strong>{% endif %}25{% if page_size == 25 %}</strong>{% endif %}</a> | {% if page_size == 25 %}<strong>{% endif %}25{% if page_size == 25 %}</strong>{% endif %}</a>
</li>
<li>
<a href="?{% url_replace request "page_size" "50" "page" "1" %}"> <a href="?{% url_replace request "page_size" "50" "page" "1" %}">
{% if page_size == 50 %}<strong>{% endif %}50{% if page_size == 50 %}</strong>{% endif %}</a> | {% if page_size == 50 %}<strong>{% endif %}50{% if page_size == 50 %}</strong>{% endif %}</a>
</li>
<li>
<a href="?{% url_replace request "page_size" "100" "page" "1" %}"> <a href="?{% url_replace request "page_size" "100" "page" "1" %}">
{% if page_size == 100 %}<strong>{% endif %}100{% if page_size == 100 %}</strong>{% endif %}</a> {% if page_size == 100 %}<strong>{% endif %}100{% if page_size == 100 %}</strong>{% endif %}</a>
</div> </li>
</ul>
{% endif %} {% endif %}
<div class="clearfix">
</div>
</nav> </nav>

View File

@@ -11,12 +11,6 @@
<link type="text/css" rel="stylesheet" href="{% url "control:pdf.css" organizer=request.organizer.slug event=request.event.slug %}"> <link type="text/css" rel="stylesheet" href="{% url "control:pdf.css" organizer=request.organizer.slug event=request.event.slug %}">
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1>
{% trans "PDF Editor" %}
{% if title %}
<small>{{ title }}</small>
{% endif %}
</h1>
<script type="application/json" id="editor-data"> <script type="application/json" id="editor-data">
{{ layout|safe }} {{ layout|safe }}
@@ -27,25 +21,30 @@
<div class="panel-heading"> <div class="panel-heading">
<div class="pull-right"> <div class="pull-right">
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-default btn-xs" id="toolbox-source" <button type="button" class="btn btn-default btn-sm" id="toolbox-source"
title="{% trans "Code" %}"> title="{% trans "Code" %}">
<span class="fa fa-code"></span> <span class="fa fa-code"></span>
</button> </button>
<button type="button" class="btn btn-default btn-xs" id="toolbox-paste" <button type="button" class="btn btn-default btn-sm" id="toolbox-paste"
title="{% trans "Paste" %}"> title="{% trans "Paste" %}">
<span class="fa fa-paste"></span> <span class="fa fa-paste"></span>
</button> </button>
<button type="button" class="btn btn-default btn-xs" id="toolbox-undo" <button type="button" class="btn btn-default btn-sm" id="toolbox-undo"
title="{% trans "Undo" %}"> title="{% trans "Undo" %}">
<span class="fa fa-undo"></span> <span class="fa fa-undo"></span>
</button> </button>
<button type="button" class="btn btn-default btn-xs" id="toolbox-redo" <button type="button" class="btn btn-default btn-sm" id="toolbox-redo"
title="{% trans "Redo" %}"> title="{% trans "Redo" %}">
<span class="fa fa-repeat"></span> <span class="fa fa-repeat"></span>
</button> </button>
</div> </div>
</div> </div>
{% trans "Editor" %} <h1 class="panel-title">
{% trans "PDF Editor" %}
{% if title %}
<small>{{ title }}</small>
{% endif %}
</h1>
</div> </div>
<div class="panel-body"> <div class="panel-body">
<div id="editor-canvas-area"> <div id="editor-canvas-area">

View File

@@ -6,7 +6,8 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Order search" %}{% endblock %} {% block title %}{% trans "Order search" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Order search" %}</h1> <div class="panel panel-default">
<div class="panel-body">
<form class="row filter-form" action="" method="get"> <form class="row filter-form" action="" method="get">
<div class="col-md-3 col-sm-6 col-xs-12"> <div class="col-md-3 col-sm-6 col-xs-12">
{% bootstrap_field filter_form.query layout='inline' %} {% bootstrap_field filter_form.query layout='inline' %}
@@ -29,6 +30,7 @@
</button> </button>
</div> </div>
</form> </form>
</div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-condensed table-hover"> <table class="table table-condensed table-hover">
<thead> <thead>
@@ -44,7 +46,8 @@
<a href="?{% url_replace request 'ordering' 'email' %}"><i class="fa fa-caret-up"></i></a></th> <a href="?{% url_replace request 'ordering' 'email' %}"><i class="fa fa-caret-up"></i></a></th>
<th>{% trans "Order date" %} <th>{% trans "Order date" %}
<a href="?{% url_replace request 'ordering' '-datetime' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-datetime' %}"><i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'datetime' %}"><i class="fa fa-caret-up"></i></a></th> <a href="?{% url_replace request 'ordering' 'datetime' %}"><i class="fa fa-caret-up"></i></a>
</th>
<th class="text-right">{% trans "Order total" %} <th class="text-right">{% trans "Order total" %}
<a href="?{% url_replace request 'ordering' '-total' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-total' %}"><i class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'total' %}"><i class="fa fa-caret-up"></i></a></th> <a href="?{% url_replace request 'ordering' 'total' %}"><i class="fa fa-caret-up"></i></a></th>
@@ -84,5 +87,8 @@
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="panel-footer">
{% include "pretixcontrol/pagination_huge.html" %} {% include "pretixcontrol/pagination_huge.html" %}
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -4,20 +4,19 @@
{% load order_overview %} {% load order_overview %}
{% block title %}{% trans "Data shredder" %}{% endblock %} {% block title %}{% trans "Data shredder" %}{% endblock %}
{% block content %} {% block content %}
<h1>
{% trans "Data shredder" %}
</h1>
<form action="{% url "control:event.shredder.shred" event=request.event.slug organizer=request.organizer.slug %}" <form action="{% url "control:event.shredder.shred" event=request.event.slug organizer=request.organizer.slug %}"
method="post" class="form-horizontal" data-asynctask> method="post" class="form-horizontal" data-asynctask>
{% csrf_token %} {% csrf_token %}
<fieldset> <fieldset class="panel-default panel">
<div class="panel-heading">
<legend>{% trans "Step 1: Download data" %}</legend> <legend>{% trans "Step 1: Download data" %}</legend>
</div>
<div class="panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You are about to permamanently delete data from the server, even though you might be required to You are about to permamanently delete data from the server, even though you might be required to
keep keep some of this data on file. You should therefore download the following file and store it in a
some of this data on file. You should therefore download the following file and store it in a safe safe place:
place:
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<p> <p>
@@ -25,27 +24,37 @@
{% trans "Download data" %} {% trans "Download data" %}
</a> </a>
</p> </p>
</div>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel-default panel">
<div class="panel-heading">
<legend>{% trans "Step 2: Confirm download" %}</legend> <legend>{% trans "Step 2: Confirm download" %}</legend>
</div>
<div class="panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
In the downloaded file, there is a text file named "CONFIRM_CODE.txt" with a six-character code. In the downloaded file, there is a text file named "CONFIRM_CODE.txt" with a six-character code.
Please enter this code here to confirm that you successfully downloaded the file. Please enter this code here to confirm that you successfully downloaded the file.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<input type="text" class="form-control" name="confirm_code" required placeholder="{% trans "Confirmation code" %}"> <input type="text" class="form-control" name="confirm_code" required
placeholder="{% trans "Confirmation code" %}">
<br> <br>
</fieldset> </fieldset>
<fieldset> <fieldset class="panel-default panel">
<div class="panel-heading">
<legend>{% trans "Step 3: Confirm deletion" %}</legend> <legend>{% trans "Step 3: Confirm deletion" %}</legend>
</div>
<div class="panel-body">
<p> <p>
{% blocktrans trimmed with event=request.event.name %} {% blocktrans trimmed with event=request.event.name %}
Please re-check that you are fully certain that you want to delete the selected categories of data from the event <strong>{{ event }}</strong>. Please re-check that you are fully certain that you want to delete the selected categories of
data from the event <strong>{{ event }}</strong>.
In this case, please enter your user password here: In this case, please enter your user password here:
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<input type="password" class="form-control" name="password" required placeholder="{% trans "Your password" %}"> <input type="password" class="form-control" name="password" required
placeholder="{% trans "Your password" %}">
</fieldset> </fieldset>
<input type="hidden" name="file" value="{{ file.pk }}"> <input type="hidden" name="file" value="{{ file.pk }}">
<div class="form-group submit-group"> <div class="form-group submit-group">

View File

@@ -4,38 +4,44 @@
{% load order_overview %} {% load order_overview %}
{% block title %}{% trans "Data shredder" %}{% endblock %} {% block title %}{% trans "Data shredder" %}{% endblock %}
{% block content %} {% block content %}
<h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">
{% trans "Data shredder" %} {% trans "Data shredder" %}
</h1> </h1>
</div>
<div class="panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
This feature allows you to remove personal data from this event. You will first select what kind of data This feature allows you to remove personal data from this event. You will first select what kind of
you want to shred, then you are able to download the affected data and after you confirmed the download, data you want to shred, then you are able to download the affected data and after you confirmed the
the data will be removed from the server's database. The data might still exist in backups for a limited download, the data will be removed from the server's database. The data might still exist in backups for a
period of time. limited period of time.
{% endblocktrans %} {% endblocktrans %}
<strong> <strong>
{% blocktrans trimmed %} {% blocktrans trimmed %}
Using this will not remove the orders for your event, it just scrubs them of data that can be linked Using this will not remove the orders for your event, it just scrubs them of data that can be
to individual persons. linked to individual persons.
{% endblocktrans %} {% endblocktrans %}
</strong> </strong>
</p> </p>
<div class="alert alert-legal"> <div class="alert alert-legal">
<strong> <strong>
{% blocktrans trimmed %} {% blocktrans trimmed %}
It is within your own responsibility to check if you are allowed to delete the affected data in your It is within your own responsibility to check if you are allowed to delete the affected data in
legislation, e.g. for reasons of taxation. In many countries, you need to keep some data in the live your legislation, e.g. for reasons of taxation. In many countries, you need to keep some data in the
system in case of an audit. live system in case of an audit.
{% endblocktrans %} {% endblocktrans %}
</strong> </strong>
{% blocktrans trimmed %} {% blocktrans trimmed %}
For most categories of data, you will be able to partially download the data to store it offline. Some For most categories of data, you will be able to partially download the data to store it offline.
kinds of data (such as some payment information) as well as historical log data cannot be downloaded at Some kinds of data (such as some payment information) as well as historical log data cannot be downloaded
the moment. at the moment.
{% endblocktrans %} {% endblocktrans %}
<div class="clear"></div> <div class="clear"></div>
</div> </div>
</div>
</div>
{% if constraints %} {% if constraints %}
<div class="alert alert-danger"> <div class="alert alert-danger">
{{ constraints }} {{ constraints }}
@@ -43,9 +49,8 @@
{% else %} {% else %}
<form action="{% url "control:event.shredder.export" event=request.event.slug organizer=request.organizer.slug %}" <form action="{% url "control:event.shredder.export" event=request.event.slug organizer=request.organizer.slug %}"
method="post" class="form-horizontal" data-asynctask> method="post" class="form-horizontal" data-asynctask>
<legend>{% trans "Data selection" %}</legend>
{% csrf_token %} {% csrf_token %}
<div class="panel-group" id="payment_accordion"> <div class="" id="payment_accordion">
{% for ident, shredder in shredders.items %} {% for ident, shredder in shredders.items %}
<div class="panel panel-default"> <div class="panel panel-default">
<label class="accordion-radio"> <label class="accordion-radio">

View File

@@ -6,7 +6,6 @@
{% load eventsignal %} {% load eventsignal %}
{% block title %}{% trans "Date" context "subevent" %}{% endblock %} {% block title %}{% trans "Date" context "subevent" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Create multiple dates" context "subevent" %}</h1>
<form action="" method="post" class="form-horizontal" id="subevent-bulk-create-form"> <form action="" method="post" class="form-horizontal" id="subevent-bulk-create-form">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
@@ -16,8 +15,6 @@
<div class="row"> <div class="row">
<div class="col-md-8"> <div class="col-md-8">
<fieldset> <fieldset>
<legend>{% trans "Dates" context "subevent" %}</legend>
<div class="formset" data-formset data-formset-prefix="{{ rrule_formset.prefix }}" <div class="formset" data-formset data-formset-prefix="{{ rrule_formset.prefix }}"
id="rrule-formset"> id="rrule-formset">
{{ rrule_formset.management_form }} {{ rrule_formset.management_form }}
@@ -34,7 +31,7 @@
{% trans "Repetition rule" %} {% trans "Repetition rule" %}
</div> </div>
<div class="col-md-2 text-right"> <div class="col-md-2 text-right">
<button type="button" class="btn btn-danger btn-xs" <button type="button" class="btn btn-danger btn-sm"
data-formset-delete-button> data-formset-delete-button>
<i class="fa fa-trash"></i></button> <i class="fa fa-trash"></i></button>
</div> </div>
@@ -145,7 +142,7 @@
{% trans "Repetition rule" %} {% trans "Repetition rule" %}
</div> </div>
<div class="col-md-2 text-right"> <div class="col-md-2 text-right">
<button type="button" class="btn btn-danger btn-xs" <button type="button" class="btn btn-danger btn-sm"
data-formset-delete-button> data-formset-delete-button>
<i class="fa fa-trash"></i></button> <i class="fa fa-trash"></i></button>
</div> </div>
@@ -253,10 +250,14 @@
</fieldset> </fieldset>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<fieldset> <fieldset class="panel panel-default">
<div class="panel-heading">
<legend>{% trans "Preview" context "subevent" %}</legend> <legend>{% trans "Preview" context "subevent" %}</legend>
</div>
<div class="panel-body">
<ul id="rrule-preview"> <ul id="rrule-preview">
</ul> </ul>
</div>
</fieldset> </fieldset>
</div> </div>
</div> </div>

View File

@@ -4,9 +4,9 @@
{% load urlreplace %} {% load urlreplace %}
{% block title %}{% trans "Dates" context "subevent" %}{% endblock %} {% block title %}{% trans "Dates" context "subevent" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Dates" context "subevent" %}</h1>
{% if subevents|length == 0 and not filter_form.filtered %} {% if subevents|length == 0 and not filter_form.filtered %}
<div class="empty-collection"> <div class="panel-default">
<div class="empty-collection panel-body">
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
You haven't created any dates for this event series yet. You haven't created any dates for this event series yet.
@@ -20,8 +20,10 @@
class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> class="btn btn-primary btn-lg"><i class="fa fa-plus"></i>
{% trans "Create many new dates" context "subevent" %}</a> {% trans "Create many new dates" context "subevent" %}</a>
</div> </div>
</div>
{% else %} {% else %}
<form class="row filter-form" action="" method="get"> <div class="panel panel-default">
<form class="row filter-form panel-body" action="" method="get">
<div class="col-md-4 col-sm-6 col-xs-12"> <div class="col-md-4 col-sm-6 col-xs-12">
{% bootstrap_field filter_form.query layout='inline' %} {% bootstrap_field filter_form.query layout='inline' %}
</div> </div>
@@ -40,17 +42,17 @@
</button> </button>
</div> </div>
</form> </form>
<p> <div class="panel-body">
<a href="{% url "control:event.subevents.add" organizer=request.event.organizer.slug event=request.event.slug %}" <a href="{% url "control:event.subevents.add" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn btn-default"><i class="fa fa-plus"></i> class="btn btn-default"><i class="fa fa-plus"></i>
{% trans "Create a new date" context "subevent" %}</a> {% trans "Create a new date" context "subevent" %}</a>
<a href="{% url "control:event.subevents.bulk" organizer=request.event.organizer.slug event=request.event.slug %}" <a href="{% url "control:event.subevents.bulk" organizer=request.event.organizer.slug event=request.event.slug %}"
class="btn btn-default"><i class="fa fa-plus"></i> class="btn btn-default"><i class="fa fa-plus"></i>
{% trans "Create many new dates" context "subevent" %}</a> {% trans "Create many new dates" context "subevent" %}</a>
</p> </div>
<form action="{% url "control:event.subevents.bulkaction" organizer=request.event.organizer.slug event=request.event.slug %}" method="post"> <form action="{% url "control:event.subevents.bulkaction" organizer=request.event.organizer.slug event=request.event.slug %}"
method="post" class="table-responsive">
{% csrf_token %} {% csrf_token %}
<div class="table-responsive">
<table class="table table-hover table-quotas"> <table class="table table-hover table-quotas">
<thead> <thead>
<tr> <tr>
@@ -64,17 +66,22 @@
</th> </th>
<th> <th>
{% trans "Begin" %} {% trans "Begin" %}
<a href="?{% url_replace request 'ordering' '-date_from' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-date_from' %}"><i
<a href="?{% url_replace request 'ordering' 'date_from' %}"><i class="fa fa-caret-up"></i></a> class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'date_from' %}"><i
class="fa fa-caret-up"></i></a>
</th> </th>
<th> <th>
{% trans "Paid tickets per quota" %} {% trans "Paid tickets per quota" %}
<a href="?{% url_replace request 'ordering' '-sum_tickets_paid' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-sum_tickets_paid' %}"><i
<a href="?{% url_replace request 'ordering' 'sum_tickets_paid' %}"><i class="fa fa-caret-up"></i></a> class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'sum_tickets_paid' %}"><i
class="fa fa-caret-up"></i></a>
</th> </th>
<th> <th>
{% trans "Status" %} {% trans "Status" %}
<a href="?{% url_replace request 'ordering' '-active' %}"><i class="fa fa-caret-down"></i></a> <a href="?{% url_replace request 'ordering' '-active' %}"><i
class="fa fa-caret-down"></i></a>
<a href="?{% url_replace request 'ordering' 'active' %}"><i class="fa fa-caret-up"></i></a> <a href="?{% url_replace request 'ordering' 'active' %}"><i class="fa fa-caret-up"></i></a>
</th> </th>
<th></th> <th></th>
@@ -89,7 +96,8 @@
{% endif %} {% endif %}
</td> </td>
<td> <td>
<strong><a href="{% url "control:event.subevent" organizer=request.event.organizer.slug event=request.event.slug subevent=s.id %}"> <strong><a
href="{% url "control:event.subevent" organizer=request.event.organizer.slug event=request.event.slug subevent=s.id %}">
{{ s.name }}</a></strong> {{ s.name }}</a></strong>
</td> </td>
<td>{{ s.get_date_from_display }}</td> <td>{{ s.get_date_from_display }}</td>
@@ -117,7 +125,8 @@
{% endif %} {% endif %}
</td> </td>
<td class="text-right"> <td class="text-right">
<a href="{% url "control:event.subevent" organizer=request.event.organizer.slug event=request.event.slug subevent=s.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a> <a href="{% url "control:event.subevent" organizer=request.event.organizer.slug event=request.event.slug subevent=s.id %}"
class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
<div class="btn-group {% if forloop.revcounter0 < 2 %}dropup{% endif %}"> <div class="btn-group {% if forloop.revcounter0 < 2 %}dropup{% endif %}">
<button type="button" class="btn btn-default btn-sm dropdown-toggle" <button type="button" class="btn btn-default btn-sm dropdown-toggle"
data-toggle="dropdown"> data-toggle="dropdown">
@@ -136,14 +145,16 @@
</li> </li>
</ul> </ul>
</div> </div>
<a href="{% url "control:event.subevent.delete" organizer=request.event.organizer.slug event=request.event.slug subevent=s.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a> <a href="{% url "control:event.subevent.delete" organizer=request.event.organizer.slug event=request.event.slug subevent=s.id %}"
class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table>
</div>
{% if "can_change_event_settings" in request.eventpermset %} {% if "can_change_event_settings" in request.eventpermset %}
<tfoot>
<tr>
<td colspan="6">
<button type="submit" class="btn btn-default btn-save" name="action" value="delete"> <button type="submit" class="btn btn-default btn-save" name="action" value="delete">
{% trans "Delete selected" %} {% trans "Delete selected" %}
</button> </button>
@@ -153,8 +164,15 @@
<button type="submit" class="btn btn-default btn-save" name="action" value="disable"> <button type="submit" class="btn btn-default btn-save" name="action" value="disable">
{% trans "Disable selected" %} {% trans "Disable selected" %}
</button> </button>
</td>
</tr>
</tfoot>
{% endif %} {% endif %}
</table>
</form> </form>
<div class="panel-footer">
{% include "pretixcontrol/pagination.html" %} {% include "pretixcontrol/pagination.html" %}
</div>
</div>
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@@ -3,7 +3,11 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Add a two-factor authentication device" %}{% endblock %} {% block title %}{% trans "Add a two-factor authentication device" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Add a two-factor authentication device" %}</h1> <div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">{% trans "Add a two-factor authentication device" %}</h1>
</div>
<div class="panel-body">
<form action="" method="post" class="form-horizontal"> <form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
@@ -15,4 +19,6 @@
</button> </button>
</div> </div>
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -3,13 +3,14 @@
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Add a two-factor authentication device" %}{% endblock %} {% block title %}{% trans "Add a two-factor authentication device" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Add a two-factor authentication device" %}</h1> <div class="panel panel-default">
<p> <div class="panel-heading">
{% trans "To set up this device, please follow the following steps:" %} <legend>
</p> {% trans "Step 1:" %}
<ol class="multi-step-tutorial">
<li>
{% trans "Download the Google Authenticator application to your phone:" %} {% trans "Download the Google Authenticator application to your phone:" %}
</legend>
</div>
<div class="panel-body">
<ul> <ul>
<li> <li>
<a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&" <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&"
@@ -34,9 +35,14 @@
</a> </a>
</li> </li>
</ul> </ul>
</li> </div>
<li> </div>
<div class="panel panel-default">
<div class="panel-heading">
{% trans "Step 2:" %}
{% trans "Add a new account to the app by scanning the following barcode:" %} {% trans "Add a new account to the app by scanning the following barcode:" %}
</div>
<div class="panel-body">
<div class="qrcode-canvas" data-qrdata="#qrdata"></div> <div class="qrcode-canvas" data-qrdata="#qrdata"></div>
<p> <p>
<a data-toggle="collapse" href="#no_scan"> <a data-toggle="collapse" href="#no_scan">
@@ -55,13 +61,14 @@
{% trans 'In "Secret"/"Account Key", enter the following code:' %} {% trans 'In "Secret"/"Account Key", enter the following code:' %}
<div> <div>
<code id="otp_secret" style="white-space: pre">{{ secretGrouped }}</code> <code id="otp_secret" style="white-space: pre">{{ secretGrouped }}</code>
<button type="button" class="btn btn-default btn-xs btn-clipboard" data-clipboard-target="#otp_secret"> <button type="button" class="btn btn-default btn-xs btn-clipboard"
data-clipboard-target="#otp_secret">
<span class="fa fa-clipboard" aria-hidden="true"></span> <span class="fa fa-clipboard" aria-hidden="true"></span>
{% trans "copy" %} {% trans "copy" %}
</button> </button>
</div> </div>
<div> <div>
<small>Spaces don't matter.</small> <small>{% trans "Spaces don't matter." %}</small>
</div> </div>
</li> </li>
<li> <li>
@@ -69,26 +76,33 @@
</li> </li>
</ol> </ol>
</div> </div>
</li> </div>
<li> </div>
<div class="panel panel-default">
<div class="panel-heading">
{% trans "Step 3:" %}
{% trans "Enter the displayed code here:" %} {% trans "Enter the displayed code here:" %}
</div>
<div class="panel-body">
<form class="form form-inline" method="post" action=""> <form class="form form-inline" method="post" action="">
{% csrf_token %} {% csrf_token %}
<input type="number" name="token" class="form-control" required="required"> <input type="number" name="token" class="form-control" required="required">
<button class="btn btn-primary" type="submit"> <button class="btn btn-primary" type="submit">
{% trans "Continue" %} {% trans "Continue" %}
</button><br> </button>
<br>
<label> <label>
<input type="checkbox" name="activate" checked="checked" value="on"> <input type="checkbox" name="activate" checked="checked" value="on">
{% trans "Require second factor for future logins" %} {% trans "Require second factor for future logins" %}
</label> </label>
</form> </form>
</li> </div>
</ol> </div>
<script type="text/json" id="qrdata"> <script type="text/json" id="qrdata">
{{ qrdata|safe }} {{ qrdata|safe }}
</script> </script>
{% endblock %} {% endblock %}

Some files were not shown because too many files have changed in this diff Show More