Item-related templates

This commit is contained in:
Raphael Michel
2018-07-08 23:55:26 +02:00
parent 7b230726b0
commit 0daded8af5
34 changed files with 1314 additions and 1021 deletions

View File

@@ -31,7 +31,7 @@
</li> </li>
<li> <li>
<a href="{% url 'control:event.settings.payment' organizer=request.event.organizer.slug event=request.event.slug %}" <a href="{% url 'control:event.settings.payment' organizer=request.event.organizer.slug event=request.event.slug %}"
{% if "event.settings.payment" == url_name %}class="active"{% endif %}> {% if "event.settings.payment" in url_name %}class="active"{% endif %}>
{% trans "Payment" %} {% trans "Payment" %}
</a> </a>
</li> </li>

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

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

@@ -17,7 +17,7 @@
{% bootstrap_field form.mail_bcc layout="control" %} {% bootstrap_field form.mail_bcc layout="control" %}
</div> </div>
</fieldset> </fieldset>
<div class="panel-group" id="questions_group"> <div class="" 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" %}

View File

@@ -58,12 +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" %}
</div>
</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

@@ -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,12 @@
{% 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>
{% 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 +18,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 +36,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

@@ -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,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,12 @@
{% 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 %}
</p>
{% 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 +18,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 +36,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,12 @@
{% 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 %} <h1 class="panel-title">{% trans "Products" %}</h1>
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
give category.
{% endblocktrans %}
</p>
{% 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 +18,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 +50,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 +97,6 @@
</tbody> </tbody>
</table> </table>
</div> </div>
{% include "pretixcontrol/pagination.html" %}
{% endif %} {% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -5,26 +5,39 @@
{% 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="panel panel-default panel-with-btn">
{% blocktrans with name=question.question %}Question: {{ name }}{% endblocktrans %} <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>
</div>
<div class="panel-body">
<form class="form-inline helper-display-inline" action="" method="get"> <form class="form-inline helper-display-inline" action="" method="get">
<p> <p>
<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>
<select name="item" class="form-control"> <select name="item" class="form-control">
<option value="">{% trans "All products" %}</option> <option value="">{% trans "All products" %}</option>
@@ -38,9 +51,13 @@
<button class="btn btn-primary" type="submit">{% trans "Filter" %}</button> <button class="btn btn-primary" type="submit">{% trans "Filter" %}</button>
</p> </p>
</form> </form>
</div>
</div>
<div class="row" id="question-stats"> <div class="row" id="question-stats">
{% if not stats %} {% if not stats %}
<div class="empty-collection col-md-10 col-xs-12"> <div class="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.
@@ -55,14 +72,21 @@
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>
</div>
{% else %} {% else %}
<div class="col-md-5 col-xs-12"> <div class="col-md-5 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>
</div>
<div class="col-md-5 col-xs-12"> <div class="col-md-5 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 +98,12 @@
{% 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,6 +113,7 @@
</tbody> </tbody>
</table> </table>
</div> </div>
</div>
{% endif %} {% endif %}
<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">

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,18 @@
{% 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>
{% 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 +24,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 +57,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,16 +5,21 @@
{% 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="panel panel-default panel-with-btn">
{% blocktrans with name=quota.name %}Quota: {{ name }}{% endblocktrans %} <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>
{% 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 }}
@@ -22,14 +27,24 @@
{% 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-5 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>
</div>
<div class="col-md-5 col-xs-12"> <div class="col-md-5 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>
@@ -65,6 +80,8 @@
</div> </div>
{% endif %} {% endif %}
</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,14 @@
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>
{% if request.event.has_subevents %} {% if request.event.has_subevents %}
<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>
{% 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 +36,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 +64,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 +76,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

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

@@ -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,45 @@
{% 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 +50,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

@@ -111,6 +111,9 @@
.panel { .panel {
box-shadow:0 2px 5px 0 rgba(78,50,92,.1),0 1px 1px 0 rgba(0,0,0,.07); box-shadow:0 2px 5px 0 rgba(78,50,92,.1),0 1px 1px 0 rgba(0,0,0,.07);
} }
.panel-default {
border: none;
}
.panel-default > .panel-heading, .panel-default > .panel-footer { .panel-default > .panel-heading, .panel-default > .panel-footer {
background: white; background: white;
} }
@@ -127,6 +130,15 @@
.panel > .table-responsive table th:last-child { .panel > .table-responsive table th:last-child {
padding-right: $panel-body-padding; padding-right: $panel-body-padding;
} }
.panel > table td,
.panel > table th,
.panel > .table-responsive table td,
.panel > .table-responsive table th {
vertical-align: middle;
}
.panel-with-btn .panel-title {
line-height: 30px;
}
.panel-danger > .panel-heading, .panel-success > .panel-heading, .panel-default > .panel-heading, .panel-info > .panel-heading, .panel-warning > .panel-heading { .panel-danger > .panel-heading, .panel-success > .panel-heading, .panel-default > .panel-heading, .panel-info > .panel-heading, .panel-warning > .panel-heading {
color: #000000; color: #000000;

View File

@@ -2,8 +2,10 @@
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-items: flex-start; align-items: flex-start;
margin-left: -5px; margin-left: -10px;
margin-right: -5px; margin-right: -10px;
margin-bottom: 10px;
margin-top: -10px;
} }
.dashboard .widget-container { .dashboard .widget-container {
@@ -11,10 +13,10 @@
align-self: stretch; align-self: stretch;
padding: 15px 5px; padding: 15px 5px;
min-height: 160px; min-height: 160px;
margin: 5px; margin: 10px;
background: white; background: white;
box-shadow: 0 7px 14px 0 rgba(78, 50, 92, 0.1),0 3px 6px 0 rgba(0,0,0,.07); box-shadow:0 2px 5px 0 rgba(78,50,92,.1),0 1px 1px 0 rgba(0,0,0,.07);
border-radius: $panel-border-radius; border-radius: $panel-border-radius;
} }

View File

@@ -71,6 +71,11 @@ div[data-formset-body], div[data-formset-form], div[data-nested-formset-form], d
@include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large); @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large);
} }
} }
.panel-body .submit-group {
box-shadow: none;
padding: 0;
}
.panel .form-group:last-child { .panel .form-group:last-child {
margin-bottom: 0; margin-bottom: 0;

View File

@@ -105,9 +105,7 @@ h1 .btn-sm {
.btn-toolbar { .btn-toolbar {
margin-bottom: 20px; margin-bottom: 20px;
} }
.container-fluid > .alert:first-child {
margin-top: 20px;
}
.flipped-scroll-wrapper { .flipped-scroll-wrapper {
overflow-y: auto; overflow-y: auto;
@@ -171,7 +169,7 @@ p.bigger {
} }
} }
.empty-collection { .empty-collection {
margin: 20px 0; padding: 40px 0;
text-align: center; text-align: center;
p { p {
@@ -566,6 +564,23 @@ ul.pagination {
.pagination-container { .pagination-container {
margin-bottom: 20px; margin-bottom: 20px;
} }
.panel {
ul.pagination {
margin: 0;
float: right;
}
ul.pagination-count {
float: left;
}
ul.pagination-select {
margin: auto;
float: none;
}
.pagination-container {
padding: 0;
margin: 0;
}
}
.table-payment-providers > tbody > tr > td { .table-payment-providers > tbody > tr > td {
vertical-align: middle; vertical-align: middle;