forked from CGM_Public/pretix_original
Item-related templates
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -2,81 +2,89 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% load bootstrap3 %}
|
{% load bootstrap3 %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>{% trans "Delete event" %}</h1>
|
<div class="panel panel-default">
|
||||||
{% if request.event.allow_delete %}
|
<div class="panel-heading">
|
||||||
{% bootstrap_form_errors form layout="inline" %}
|
<h2 class="panel-title">{% trans "Delete event" %}</h2>
|
||||||
<p>
|
</div>
|
||||||
{% blocktrans trimmed %}
|
<div class="panel-body">
|
||||||
This operation will destroy your event including all configuration, products, quotas, questions,
|
{% if request.event.allow_delete %}
|
||||||
vouchers, lists, etc.
|
{% bootstrap_form_errors form layout="inline" %}
|
||||||
{% endblocktrans %}
|
|
||||||
</p>
|
|
||||||
<p><strong>
|
|
||||||
{% blocktrans trimmed %}
|
|
||||||
This operation is irreversible and there is no way to bring your data back.
|
|
||||||
{% endblocktrans %}
|
|
||||||
</strong></p>
|
|
||||||
<form action="" method="post">
|
|
||||||
{% csrf_token %}
|
|
||||||
<p>
|
<p>
|
||||||
{% blocktrans trimmed with slug=request.event.slug %}
|
{% blocktrans trimmed %}
|
||||||
To confirm you really want this, please type out the event's short name ("{{ slug }}") here:
|
This operation will destroy your event including all configuration, products, quotas, questions,
|
||||||
|
vouchers, lists, etc.
|
||||||
{% endblocktrans %}
|
{% endblocktrans %}
|
||||||
</p>
|
</p>
|
||||||
{% bootstrap_field form.slug layout="inline" %}
|
<p><strong>
|
||||||
<p>
|
{% blocktrans trimmed %}
|
||||||
{% blocktrans trimmed with slug=request.event.slug %}
|
This operation is irreversible and there is no way to bring your data back.
|
||||||
Also, to make sure it's really you, please enter your user password here:
|
|
||||||
{% endblocktrans %}
|
{% endblocktrans %}
|
||||||
</p>
|
</strong></p>
|
||||||
{% bootstrap_field form.user_pw layout="inline" %}
|
<form action="" method="post">
|
||||||
|
|
||||||
<div class="form-group submit-group">
|
|
||||||
<button type="submit" class="btn btn-danger btn-save">
|
|
||||||
{% trans "Delete" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
{% else %}
|
|
||||||
<p>
|
|
||||||
{% trans "Your event can not be deleted as it already contains orders." %}
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
{% blocktrans trimmed %}
|
|
||||||
pretix does not allow deleting orders once they have been placed in order to be audit-proof and
|
|
||||||
trustable by financial authorities.
|
|
||||||
{% endblocktrans %}
|
|
||||||
</p>
|
|
||||||
{% if request.event.live %}
|
|
||||||
<p>
|
|
||||||
{% trans "You can instead take your shop offline. This will hide it from everyone except from the organizer teams you configured to have access to the event." %}
|
|
||||||
</p>
|
|
||||||
<form action="{% url "control:event.live" event=request.event.slug organizer=request.organizer.slug %}"
|
|
||||||
method="post">
|
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="hidden" name="live" value="false">
|
<p>
|
||||||
|
{% blocktrans trimmed with slug=request.event.slug %}
|
||||||
|
To confirm you really want this, please type out the event's short name ("{{ slug }}") here:
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
{% bootstrap_field form.slug layout="inline" %}
|
||||||
|
<p>
|
||||||
|
{% blocktrans trimmed with slug=request.event.slug %}
|
||||||
|
Also, to make sure it's really you, please enter your user password here:
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
{% bootstrap_field form.user_pw layout="inline" %}
|
||||||
|
|
||||||
<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">
|
<button type="submit" class="btn btn-danger btn-save">
|
||||||
<span class="fa fa-eraser"></span>
|
{% trans "Delete" %}
|
||||||
{% trans "Delete personal data" %}
|
|
||||||
</a>
|
|
||||||
<button type="submit" class="btn btn-primary btn-save">
|
|
||||||
<span class="fa fa-power-off"></span>
|
|
||||||
{% trans "Go offline" %}
|
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p>
|
<p>
|
||||||
{% trans "However, since your shop is offline, it is only visible to the organizing team according to the permissions you configured." %}
|
{% trans "Your event can not be deleted as it already contains orders." %}
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
pretix does not allow deleting orders once they have been placed in order to be audit-proof and
|
||||||
|
trustable by financial authorities.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
{% if request.event.live %}
|
||||||
|
<p>
|
||||||
|
{% trans "You can instead take your shop offline. This will hide it from everyone except from the organizer teams you configured to have access to the event." %}
|
||||||
|
</p>
|
||||||
|
<form action="{% url "control:event.live" event=request.event.slug organizer=request.organizer.slug %}"
|
||||||
|
method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<input type="hidden" name="live" value="false">
|
||||||
|
|
||||||
|
<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">
|
||||||
|
<span class="fa fa-eraser"></span>
|
||||||
|
{% trans "Delete personal data" %}
|
||||||
|
</a>
|
||||||
|
<button type="submit" class="btn btn-primary btn-save">
|
||||||
|
<span class="fa fa-power-off"></span>
|
||||||
|
{% trans "Go offline" %}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{% else %}
|
||||||
|
<p>
|
||||||
|
{% 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>
|
||||||
</div>
|
</div>
|
||||||
</p>
|
</p>
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -5,16 +5,20 @@
|
|||||||
{% load staticfiles %}
|
{% load staticfiles %}
|
||||||
{% block title %}{{ request.event.name }}{% endblock %}
|
{% block title %}{{ request.event.name }}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>
|
<div class="panel panel-default">
|
||||||
{{ request.event.name }}
|
<div class="panel-body">
|
||||||
<small>
|
<h1>
|
||||||
{% if request.event.has_subevents %}
|
{{ request.event.name }}
|
||||||
{% trans "Event series" %}
|
<small>
|
||||||
{% else %}
|
{% if request.event.has_subevents %}
|
||||||
{{ request.event.get_date_range_display }}
|
{% trans "Event series" %}
|
||||||
{% endif %}
|
{% else %}
|
||||||
</small>
|
{{ request.event.get_date_range_display }}
|
||||||
</h1>
|
{% endif %}
|
||||||
|
</small>
|
||||||
|
</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> </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">
|
||||||
|
|||||||
@@ -5,33 +5,38 @@
|
|||||||
<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">
|
||||||
<legend>{% trans "Invoicing" %}</legend>
|
<div class="panel-heading">
|
||||||
{% bootstrap_field form.invoice_address_asked layout="control" %}
|
<legend>{% trans "Invoicing" %}</legend>
|
||||||
{% bootstrap_field form.invoice_address_required layout="control" %}
|
</div>
|
||||||
{% bootstrap_field form.invoice_name_required layout="control" %}
|
<div class="panel-body">
|
||||||
{% bootstrap_field form.invoice_generate layout="control" %}
|
{% bootstrap_field form.invoice_address_asked layout="control" %}
|
||||||
{% bootstrap_field form.invoice_email_attachment layout="control" %}
|
{% bootstrap_field form.invoice_address_required layout="control" %}
|
||||||
{% bootstrap_field form.invoice_address_vatid layout="control" %}
|
{% bootstrap_field form.invoice_name_required layout="control" %}
|
||||||
{% bootstrap_field form.invoice_numbers_consecutive layout="control" %}
|
{% bootstrap_field form.invoice_generate layout="control" %}
|
||||||
{% bootstrap_field form.invoice_numbers_prefix layout="control" %}
|
{% bootstrap_field form.invoice_email_attachment layout="control" %}
|
||||||
{% bootstrap_field form.invoice_renderer layout="control" %}
|
{% bootstrap_field form.invoice_address_vatid layout="control" %}
|
||||||
{% bootstrap_field form.invoice_language layout="control" %}
|
{% bootstrap_field form.invoice_numbers_consecutive layout="control" %}
|
||||||
{% bootstrap_field form.invoice_include_free layout="control" %}
|
{% bootstrap_field form.invoice_numbers_prefix layout="control" %}
|
||||||
{% bootstrap_field form.invoice_attendee_name layout="control" %}
|
{% bootstrap_field form.invoice_renderer layout="control" %}
|
||||||
{% bootstrap_field form.invoice_address_from layout="control" %}
|
{% bootstrap_field form.invoice_language layout="control" %}
|
||||||
{% bootstrap_field form.invoice_introductory_text layout="control" %}
|
{% bootstrap_field form.invoice_include_free layout="control" %}
|
||||||
{% bootstrap_field form.invoice_additional_text layout="control" %}
|
{% bootstrap_field form.invoice_attendee_name layout="control" %}
|
||||||
{% bootstrap_field form.invoice_footer_text layout="control" %}
|
{% bootstrap_field form.invoice_address_from layout="control" %}
|
||||||
{% bootstrap_field form.invoice_logo_image layout="control" %}
|
{% bootstrap_field form.invoice_introductory_text layout="control" %}
|
||||||
|
{% bootstrap_field form.invoice_additional_text layout="control" %}
|
||||||
|
{% bootstrap_field form.invoice_footer_text layout="control" %}
|
||||||
|
{% bootstrap_field form.invoice_logo_image layout="control" %}
|
||||||
|
<div class="form-group submit-group">
|
||||||
|
<button type="submit" class="btn btn-default btn-lg" name="preview" value="preview"
|
||||||
|
formtarget="_blank">
|
||||||
|
{% trans "Save and show preview" %}
|
||||||
|
</button>
|
||||||
|
<button type="submit" class="btn btn-primary btn-save">
|
||||||
|
{% trans "Save" %}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<div class="form-group submit-group">
|
|
||||||
<button type="submit" class="btn btn-default btn-lg" name="preview" value="preview" formtarget="_blank">
|
|
||||||
{% trans "Save and show preview" %}
|
|
||||||
</button>
|
|
||||||
<button type="submit" class="btn btn-primary btn-save">
|
|
||||||
{% trans "Save" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -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" %}
|
||||||
|
|
||||||
|
|||||||
@@ -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 class="form-group submit-group">
|
||||||
|
<button type="submit" class="btn btn-primary btn-save">
|
||||||
|
{% trans "Save" %}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<div class="form-group submit-group">
|
|
||||||
<button type="submit" class="btn btn-primary btn-save">
|
|
||||||
{% trans "Save" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -4,30 +4,37 @@
|
|||||||
{% 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">
|
||||||
class="btn btn-default btn-sm btn-link">
|
<span class="fa fa-caret-left"></span>
|
||||||
<span class="fa fa-caret-left"></span>
|
{% trans "Back" %}
|
||||||
{% trans "Back" %}
|
</a>
|
||||||
</a>
|
</p>
|
||||||
{% trans "Payment provider:" %} {{ provider.verbose_name }}
|
<fieldset class="panel panel-default">
|
||||||
</legend>
|
<div class="panel-heading">
|
||||||
{% bootstrap_form form layout='control' %}
|
<legend>
|
||||||
{% if settings_content %}{{ settings_content|safe }}{% endif %}
|
{% trans "Payment provider:" %} {{ provider.verbose_name }}
|
||||||
<p> </p>
|
</legend>
|
||||||
<div class="alert alert-legal">
|
</div>
|
||||||
<strong>{% trans "Warning:" %}</strong>
|
<div class="panel-body">
|
||||||
{% blocktrans trimmed %}
|
{% bootstrap_form form layout='control' %}
|
||||||
Please note that EU Directive 2015/2366 bans surcharging payment fees for most common payment
|
{% if settings_content %}{{ settings_content|safe }}{% endif %}
|
||||||
methods within the European Union. If in doubt, consult a lawyer or refrain from charging payment
|
<p> </p>
|
||||||
fees.
|
<div class="alert alert-legal">
|
||||||
{% endblocktrans %}
|
<strong>{% trans "Warning:" %}</strong>
|
||||||
<br>
|
{% blocktrans trimmed %}
|
||||||
{% blocktrans trimmed %}
|
Please note that EU Directive 2015/2366 bans surcharging payment fees for most common payment
|
||||||
In simple terms, this means you need to pay any fees imposed by the payment providers and cannot
|
methods within the European Union. If in doubt, consult a lawyer or refrain from charging
|
||||||
pass it on to your customers.
|
payment
|
||||||
{% endblocktrans %}
|
fees.
|
||||||
|
{% endblocktrans %}
|
||||||
|
<br>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
In simple terms, this means you need to pay any fees imposed by the payment providers and cannot
|
||||||
|
pass it on to your customers.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<div class="form-group submit-group">
|
<div class="form-group submit-group">
|
||||||
|
|||||||
@@ -3,24 +3,33 @@
|
|||||||
{% 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">
|
||||||
{% csrf_token %}
|
<div class="panel panel-default">
|
||||||
{% if possible %}
|
<div class="panel-heading">
|
||||||
<p>{% blocktrans %}Are you sure you want to delete the tax rule <strong>{{ taxrule }}</strong>?{% endblocktrans %}</p>
|
<legend>{% trans "Delete tax rule" %}</legend>
|
||||||
{% else %}
|
</div>
|
||||||
<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>
|
<div class="panel-body">
|
||||||
{% endif %}
|
{% csrf_token %}
|
||||||
<div class="form-group submit-group">
|
{% if possible %}
|
||||||
<a href="{% url "control:event.settings.tax" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn
|
<p>{% blocktrans %}Are you sure you want to delete the tax rule <strong>{{ taxrule }}</strong>
|
||||||
|
?{% endblocktrans %}</p>
|
||||||
|
{% 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>
|
||||||
|
{% endif %}
|
||||||
|
<div class="form-group submit-group">
|
||||||
|
<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>
|
||||||
{% if possible %}
|
{% if possible %}
|
||||||
<button type="submit" class="btn btn-danger btn-save">
|
<button type="submit" class="btn btn-danger btn-save">
|
||||||
{% trans "Delete" %}
|
{% trans "Delete" %}
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -10,19 +10,25 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block inside %}
|
{% block inside %}
|
||||||
{% if rule %}
|
|
||||||
<legend>{% blocktrans with name=rule.name %}Tax rule: {{ name }}{% endblocktrans %}</legend>
|
|
||||||
{% else %}
|
|
||||||
<legend>{% trans "Tax rule" %}</legend>
|
|
||||||
{% endif %}
|
|
||||||
<form action="" method="post" class="form-horizontal">
|
<form action="" method="post" class="form-horizontal">
|
||||||
{% csrf_token %}
|
<div class="panel panel-default">
|
||||||
{% bootstrap_form_errors form %}
|
<div class="panel-heading">
|
||||||
{% bootstrap_field form.name layout="control" %}
|
{% if rule %}
|
||||||
{% bootstrap_field form.rate addon_after="%" layout="control" %}
|
<legend>{% blocktrans with name=rule.name %}Tax rule: {{ name }}{% endblocktrans %}</legend>
|
||||||
|
{% else %}
|
||||||
|
<legend>{% trans "Tax rule" %}</legend>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="panel-body">
|
||||||
|
{% bootstrap_form_errors form %}
|
||||||
|
{% bootstrap_field form.name 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">
|
||||||
<h4 class="panel-title">
|
<h4 class="panel-title">
|
||||||
<strong>{% trans "Advanced settings" %}</strong>
|
<strong>{% trans "Advanced settings" %}</strong>
|
||||||
@@ -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." %}
|
||||||
|
|||||||
@@ -2,50 +2,60 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% block title %}{% trans "Tax rules" %}{% endblock %}
|
{% block title %}{% trans "Tax rules" %}{% endblock %}
|
||||||
{% block inside %}
|
{% block inside %}
|
||||||
<legend>{% trans "Tax rules" %}</legend>
|
<div class="panel panel-default">
|
||||||
{% if taxrules|length == 0 %}
|
<div class="panel-heading">
|
||||||
<div class="empty-collection">
|
<legend>{% trans "Tax rules" %}</legend>
|
||||||
<p>
|
</div>
|
||||||
{% blocktrans trimmed %}
|
{% if taxrules|length == 0 %}
|
||||||
You haven't created any tax rules yet.
|
<div class="panel-body empty-collection">
|
||||||
{% endblocktrans %}
|
<p>
|
||||||
</p>
|
{% blocktrans trimmed %}
|
||||||
|
You haven't created any tax rules yet.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<a href="{% url "control:event.settings.tax.add" organizer=request.event.organizer.slug event=request.event.slug %}"
|
<a href="{% url "control:event.settings.tax.add" organizer=request.event.organizer.slug event=request.event.slug %}"
|
||||||
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 %}"
|
||||||
</a>
|
class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new tax rule" %}
|
||||||
</p>
|
</a>
|
||||||
<div class="table-responsive">
|
</div>
|
||||||
<table class="table table-hover table-quotas">
|
<div class="table-responsive">
|
||||||
<thead>
|
<table class="table table-hover table-quotas">
|
||||||
<tr>
|
<thead>
|
||||||
<th>{% trans "Name" %}</th>
|
|
||||||
<th>{% trans "Rate" %}</th>
|
|
||||||
<th class="action-col-2"></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for tr in taxrules %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<th>{% trans "Name" %}</th>
|
||||||
<strong><a href="{% url "control:event.settings.tax.edit" organizer=request.event.organizer.slug event=request.event.slug rule=tr.id %}">
|
<th>{% trans "Rate" %}</th>
|
||||||
{{ tr.name }}
|
<th class="action-col-2"></th>
|
||||||
</a></strong>
|
|
||||||
</td>
|
|
||||||
<td>{{ tr.rate }} %</td>
|
|
||||||
<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.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>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for tr in taxrules %}
|
||||||
</div>
|
<tr>
|
||||||
{% endif %}
|
<td>
|
||||||
{% include "pretixcontrol/pagination.html" %}
|
<strong><a
|
||||||
|
href="{% url "control:event.settings.tax.edit" organizer=request.event.organizer.slug event=request.event.slug rule=tr.id %}">
|
||||||
|
{{ tr.name }}
|
||||||
|
</a></strong>
|
||||||
|
</td>
|
||||||
|
<td>{{ tr.rate }} %</td>
|
||||||
|
<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.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>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
{% include "pretixcontrol/pagination.html" %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -5,47 +5,55 @@
|
|||||||
{% load eventurl %}
|
{% load eventurl %}
|
||||||
{% load eventsignal %}
|
{% load eventsignal %}
|
||||||
{% block inside %}
|
{% block inside %}
|
||||||
<legend>{% trans "Widget" %}</legend>
|
<fieldset class="panel panel-default">
|
||||||
<p>
|
<div class="panel-heading">
|
||||||
{% blocktrans trimmed %}
|
<legend>{% trans "Widget" %}</legend>
|
||||||
The pretix widget is a way to embed your ticket shop into your event website. This way, your visitors can
|
</div>
|
||||||
buy their ticket right away without leaving your website.
|
<div class="panel-body">
|
||||||
{% endblocktrans %}
|
<p>
|
||||||
</p>
|
{% blocktrans trimmed %}
|
||||||
{% if valid %}
|
The pretix widget is a way to embed your ticket shop into your event website. This way, your
|
||||||
<p>
|
visitors can
|
||||||
{% blocktrans trimmed %}
|
buy their ticket right away without leaving your website.
|
||||||
To embed the widget onto your website, simply copy the following code to the <code><head></code>
|
{% endblocktrans %}
|
||||||
section of your website:
|
</p>
|
||||||
{% endblocktrans %}
|
{% if valid %}
|
||||||
</p>
|
<p>
|
||||||
<pre><link rel="stylesheet" type="text/css" href="{% abseventurl request.event "presale:event.widget.css" %}">
|
{% blocktrans trimmed %}
|
||||||
|
To embed the widget onto your website, simply copy the following code to the
|
||||||
|
<code><head></code>
|
||||||
|
section of your website:
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
<pre><link rel="stylesheet" type="text/css" href="{% abseventurl request.event "presale:event.widget.css" %}">
|
||||||
<script type="text/javascript" src="{{ urlprefix }}{% url "presale:widget.js" lang=form.cleaned_data.language %}" async></script></pre>
|
<script type="text/javascript" src="{{ urlprefix }}{% url "presale:widget.js" lang=form.cleaned_data.language %}" async></script></pre>
|
||||||
<p>
|
<p>
|
||||||
{% blocktrans trimmed %}
|
{% blocktrans trimmed %}
|
||||||
Then, copy the following code to the place of your website where you want the widget to show up:
|
Then, copy the following code to the place of your website where you want the widget to show up:
|
||||||
{% endblocktrans %}
|
{% endblocktrans %}
|
||||||
</p>
|
</p>
|
||||||
{% if form.cleaned_data.subevent %}
|
{% if form.cleaned_data.subevent %}
|
||||||
{% abseventurl request.event "presale:event.index" subevent=form.cleaned_data.subevent.pk as indexurl %}
|
{% abseventurl request.event "presale:event.index" subevent=form.cleaned_data.subevent.pk as indexurl %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% 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><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 %}></div>
|
<pre><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 %}></div>
|
||||||
<noscript>
|
<noscript>
|
||||||
<div class="pretix-widget">
|
<div class="pretix-widget">
|
||||||
<div class="pretix-widget-info-message">
|
<div class="pretix-widget-info-message">
|
||||||
{% blocktrans trimmed with a_attr='target="_blank" rel="noopener" href="'|add:indexurl|add:'"'|safe %}
|
{% blocktrans trimmed with a_attr='target="_blank" rel="noopener" href="'|add:indexurl|add:'"'|safe %}
|
||||||
JavaScript is disabled in your browser. To access our ticket shop without JavaScript,
|
JavaScript is disabled in your browser. To access our ticket shop without JavaScript,
|
||||||
please <a {{ a_attr }}>click here</a>.
|
please <a {{ a_attr }}>click here</a>.
|
||||||
{% endblocktrans %}
|
{% endblocktrans %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</noscript>
|
</noscript>
|
||||||
</pre>
|
</pre>
|
||||||
{% else %}
|
{% else %}
|
||||||
<pre><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 %}></pretix-widget>
|
<pre><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 %}></pretix-widget>
|
||||||
<noscript>
|
<noscript>
|
||||||
<div class="pretix-widget">
|
<div class="pretix-widget">
|
||||||
<div class="pretix-widget-info-message">
|
<div class="pretix-widget-info-message">
|
||||||
@@ -57,30 +65,32 @@
|
|||||||
</div>
|
</div>
|
||||||
</noscript>
|
</noscript>
|
||||||
</pre>
|
</pre>
|
||||||
|
{% endif %}
|
||||||
|
<p>
|
||||||
|
<a href="https://docs.pretix.eu/en/latest/user/events/widget.html" target="_blank" rel="noopener">
|
||||||
|
<span class="fa fa-question-circle"></span>
|
||||||
|
{% trans "Read our documentation for more information" %}
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
{% else %}
|
||||||
|
<p>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Using this form, you can generate a code to copy and paste to your website source.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
<form action="" method="post" class="form-horizontal">
|
||||||
|
{% csrf_token %}
|
||||||
|
{% bootstrap_form form layout="control" %}
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-md-offset-3 col-md-9">
|
||||||
|
<button type="submit" class="btn btn-primary btn-save">
|
||||||
|
{% trans "Generate widget code" %}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<p>
|
</div>
|
||||||
<a href="https://docs.pretix.eu/en/latest/user/events/widget.html" target="_blank" rel="noopener">
|
</fieldset>
|
||||||
<span class="fa fa-question-circle"></span>
|
{% eventsignal request.event "pretix.control.signals.event_settings_widget" request=request %}
|
||||||
{% trans "Read our documentation for more information" %}
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
{% else %}
|
|
||||||
<p>
|
|
||||||
{% blocktrans trimmed %}
|
|
||||||
Using this form, you can generate a code to copy and paste to your website source.
|
|
||||||
{% endblocktrans %}
|
|
||||||
</p>
|
|
||||||
<form action="" method="post" class="form-horizontal">
|
|
||||||
{% csrf_token %}
|
|
||||||
{% bootstrap_form form layout="control" %}
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="col-md-offset-3 col-md-9">
|
|
||||||
<button type="submit" class="btn btn-primary btn-save">
|
|
||||||
{% trans "Generate widget code" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
{% endif %}
|
|
||||||
{% eventsignal request.event "pretix.control.signals.event_settings_widget" request=request %}
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -3,17 +3,21 @@
|
|||||||
{% load bootstrap3 %}
|
{% load bootstrap3 %}
|
||||||
{% load formset_tags %}
|
{% load formset_tags %}
|
||||||
{% block inside %}
|
{% block inside %}
|
||||||
<p>
|
<div class="panel panel-default">
|
||||||
{% blocktrans trimmed %}
|
<div class="panel-body">
|
||||||
With add-ons, you can specify products that can be bought as an addition to this product. For example, if
|
{% blocktrans trimmed %}
|
||||||
you host a conference with a base conference ticket and a number of workshops, you could define the
|
With add-ons, you can specify products that can be bought as an addition to this product. For example,
|
||||||
workshops as add-ons to the conference ticket. With this configuration, the workshops cannot be bought
|
if
|
||||||
on their own but only in combination with a conference ticket. You can here specify categories of products
|
you host a conference with a base conference ticket and a number of workshops, you could define the
|
||||||
that can be used as add-ons to this product. You can also specify the minimum and maximum number of
|
workshops as add-ons to the conference ticket. With this configuration, the workshops cannot be bought
|
||||||
add-ons of the given category that can or need to be chosen. The user can buy every add-on from the
|
on their own but only in combination with a conference ticket. You can here specify categories of
|
||||||
category at most once. If an add-on product has multiple variations, only one of them can be bought.
|
products
|
||||||
{% endblocktrans %}
|
that can be used as add-ons to this product. You can also specify the minimum and maximum number of
|
||||||
</p>
|
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.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</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 }}">
|
||||||
|
|||||||
@@ -3,34 +3,35 @@
|
|||||||
{% 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">
|
||||||
<ul class="nav nav-pills">
|
<div class="panel-heading">
|
||||||
<li {% if "event.item" == url_name %}class="active"{% endif %}>
|
<h1 class="panel-title">{% trans "Modify product:" %} {{ object.name }}</h1>
|
||||||
<a href="{% url 'control:event.item' organizer=request.event.organizer.slug event=request.event.slug item=object.id %}">
|
</div>
|
||||||
{% trans "General information" %}
|
<div class="panel-body">
|
||||||
</a>
|
<ul class="nav nav-pills">
|
||||||
</li>
|
<li {% if "event.item" == url_name %}class="active"{% endif %}>
|
||||||
{% if object.has_variations %}
|
<a href="{% url 'control:event.item' organizer=request.event.organizer.slug event=request.event.slug item=object.id %}">
|
||||||
<li {% if "event.item.variations" == url_name %}class="active"{% endif %}>
|
{% trans "General information" %}
|
||||||
<a href="{% url 'control:event.item.variations' organizer=request.event.organizer.slug event=request.event.slug item=object.id %}">
|
</a>
|
||||||
{% trans "Variations" %}
|
</li>
|
||||||
</a>
|
{% if object.has_variations %}
|
||||||
</li>
|
<li {% if "event.item.variations" == url_name %}class="active"{% endif %}>
|
||||||
{% endif %}
|
<a href="{% url 'control:event.item.variations' organizer=request.event.organizer.slug event=request.event.slug item=object.id %}">
|
||||||
<li {% if "event.item.addons" == url_name %}class="active"{% endif %}>
|
{% trans "Variations" %}
|
||||||
<a href="{% url 'control:event.item.addons' organizer=request.event.organizer.slug event=request.event.slug item=object.id %}">
|
</a>
|
||||||
{% trans "Add-Ons" %}
|
</li>
|
||||||
</a>
|
{% endif %}
|
||||||
</li>
|
<li {% if "event.item.addons" == url_name %}class="active"{% endif %}>
|
||||||
</ul>
|
<a href="{% url 'control:event.item.addons' organizer=request.event.organizer.slug event=request.event.slug item=object.id %}">
|
||||||
{% else %}
|
{% trans "Add-Ons" %}
|
||||||
<h1>{% trans "Create product" %}</h1>
|
</a>
|
||||||
<p>{% blocktrans trimmed %}
|
</li>
|
||||||
You will be able to adjust further settings in the next step.
|
</ul>
|
||||||
{% endblocktrans %}</p>
|
</div>
|
||||||
|
</div>
|
||||||
{% 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.
|
||||||
|
|||||||
@@ -1,40 +1,55 @@
|
|||||||
{% 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">
|
||||||
<legend>{% trans "General information" %}</legend>
|
<div class="panel-heading">
|
||||||
{% bootstrap_field form.name layout="control" %}
|
<legend>{% trans "General information" %}</legend>
|
||||||
<div class="internal-name-wrapper">
|
</div>
|
||||||
{% bootstrap_field form.internal_name layout="control" %}
|
<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" %}
|
||||||
|
<div class="internal-name-wrapper">
|
||||||
|
{% bootstrap_field form.internal_name layout="control" %}
|
||||||
|
</div>
|
||||||
|
{% bootstrap_field form.copy_from layout="control" %}
|
||||||
|
{% bootstrap_field form.has_variations layout="control" %}
|
||||||
|
{% bootstrap_field form.category layout="control" %}
|
||||||
|
{% bootstrap_field form.admission layout="control" %}
|
||||||
</div>
|
</div>
|
||||||
{% bootstrap_field form.copy_from layout="control" %}
|
|
||||||
{% bootstrap_field form.has_variations layout="control" %}
|
|
||||||
{% bootstrap_field form.category layout="control" %}
|
|
||||||
{% bootstrap_field form.admission layout="control" %}
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{% if form.quota_option %}
|
{% if form.quota_option %}
|
||||||
<fieldset>
|
<fieldset class="panel panel-default">
|
||||||
<legend>{% trans "Quota settings" %}</legend>
|
<div class="panel-heading">
|
||||||
{% bootstrap_field form.quota_option layout="control" %}
|
<legend>{% trans "Quota settings" %}</legend>
|
||||||
<div id="existing-quota-group">
|
|
||||||
{% bootstrap_field form.quota_add_existing layout="control" %}
|
|
||||||
</div>
|
</div>
|
||||||
<div id="new-quota-group">
|
<div class="panel-body">
|
||||||
{% bootstrap_field form.quota_add_new_name layout="control" %}
|
{% bootstrap_field form.quota_option layout="control" %}
|
||||||
{% bootstrap_field form.quota_add_new_size layout="control" %}
|
<div id="existing-quota-group">
|
||||||
|
{% bootstrap_field form.quota_add_existing layout="control" %}
|
||||||
|
</div>
|
||||||
|
<div id="new-quota-group">
|
||||||
|
{% bootstrap_field form.quota_add_new_name layout="control" %}
|
||||||
|
{% bootstrap_field form.quota_add_new_size layout="control" %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<fieldset>
|
<fieldset class="panel panel-default">
|
||||||
<legend>{% trans "Price settings" %}</legend>
|
<div class="panel-heading">
|
||||||
{% bootstrap_field form.default_price layout="control" %}
|
<legend>{% trans "Price settings" %}</legend>
|
||||||
{% bootstrap_field form.tax_rule layout="control" %}
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
{% bootstrap_field form.default_price 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">
|
||||||
|
|||||||
@@ -6,45 +6,70 @@
|
|||||||
{% 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">
|
||||||
<legend>{% trans "General information" %}</legend>
|
<div class="panel-heading">
|
||||||
{% bootstrap_field form.name layout="control" %}
|
<legend>{% trans "General information" %}</legend>
|
||||||
<div class="internal-name-wrapper">
|
</div>
|
||||||
{% bootstrap_field form.internal_name layout="control" %}
|
<div class="panel-body">
|
||||||
|
{% bootstrap_field form.name layout="control" %}
|
||||||
|
<div class="internal-name-wrapper">
|
||||||
|
{% bootstrap_field form.internal_name layout="control" %}
|
||||||
|
</div>
|
||||||
|
{% bootstrap_field form.active layout="control" %}
|
||||||
|
{% bootstrap_field form.category layout="control" %}
|
||||||
|
{% bootstrap_field form.admission layout="control" %}
|
||||||
|
{% bootstrap_field form.description layout="control" %}
|
||||||
|
{% bootstrap_field form.picture layout="control" %}
|
||||||
</div>
|
</div>
|
||||||
{% bootstrap_field form.active layout="control" %}
|
|
||||||
{% bootstrap_field form.category layout="control" %}
|
|
||||||
{% bootstrap_field form.admission layout="control" %}
|
|
||||||
{% bootstrap_field form.description layout="control" %}
|
|
||||||
{% bootstrap_field form.picture layout="control" %}
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset class="panel panel-default">
|
||||||
<legend>{% trans "Price settings" %}</legend>
|
<div class="panel-heading">
|
||||||
{% bootstrap_field form.default_price addon_after=request.event.currency layout="control" %}
|
<legend>{% trans "Price settings" %}</legend>
|
||||||
{% bootstrap_field form.tax_rule layout="control" %}
|
</div>
|
||||||
{% bootstrap_field form.free_price layout="control" %}
|
<div class="panel-body">
|
||||||
|
{% bootstrap_field form.default_price addon_after=request.event.currency layout="control" %}
|
||||||
|
{% bootstrap_field form.tax_rule layout="control" %}
|
||||||
|
{% bootstrap_field form.free_price layout="control" %}
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset class="panel panel-default">
|
||||||
<legend>{% trans "Availability" %}</legend>
|
<div class="panel-heading">
|
||||||
{% bootstrap_field form.available_from layout="control" %}
|
<legend>{% trans "Availability" %}</legend>
|
||||||
{% bootstrap_field form.available_until layout="control" %}
|
</div>
|
||||||
{% bootstrap_field form.max_per_order layout="control" %}
|
<div class="panel-body">
|
||||||
{% bootstrap_field form.min_per_order layout="control" %}
|
{% bootstrap_field form.available_from layout="control" %}
|
||||||
{% bootstrap_field form.require_voucher layout="control" %}
|
{% bootstrap_field form.available_until layout="control" %}
|
||||||
{% bootstrap_field form.hide_without_voucher layout="control" %}
|
{% bootstrap_field form.max_per_order layout="control" %}
|
||||||
{% bootstrap_field form.allow_cancel layout="control" %}
|
{% bootstrap_field form.min_per_order layout="control" %}
|
||||||
|
{% bootstrap_field form.require_voucher layout="control" %}
|
||||||
|
{% bootstrap_field form.hide_without_voucher layout="control" %}
|
||||||
|
{% bootstrap_field form.allow_cancel layout="control" %}
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset class="panel panel-default">
|
||||||
<legend>{% trans "Check-in" %}</legend>
|
<div class="panel-heading">
|
||||||
{% bootstrap_field form.checkin_attention layout="control" %}
|
<legend>{% trans "Check-in" %}</legend>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
{% bootstrap_field form.checkin_attention layout="control" %}
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset class="panel panel-default">
|
||||||
<legend>{% trans "Additional settings" %}</legend>
|
<div class="panel-heading">
|
||||||
{% bootstrap_field form.original_price addon_after=request.event.currency layout="control" %}
|
<legend>{% trans "Additional settings" %}</legend>
|
||||||
{% for f in plugin_forms %}
|
</div>
|
||||||
{% bootstrap_form f layout="control" %}
|
<div class="panel-body">
|
||||||
{% endfor %}
|
{% bootstrap_field form.original_price addon_after=request.event.currency layout="control" %}
|
||||||
|
{% for f in plugin_forms %}
|
||||||
|
{% bootstrap_form f layout="control" %}
|
||||||
|
{% 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 %}
|
||||||
|
|||||||
@@ -2,56 +2,65 @@
|
|||||||
{% 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 %}
|
{% if categories|length == 0 %}
|
||||||
</p>
|
<div class="empty-collection panel-body">
|
||||||
{% if categories|length == 0 %}
|
<p>
|
||||||
<div class="empty-collection">
|
{% blocktrans trimmed %}
|
||||||
<p>
|
You haven't created any categories yet.
|
||||||
{% blocktrans trimmed %}
|
{% endblocktrans %}
|
||||||
You haven't created any categories yet.
|
</p>
|
||||||
{% endblocktrans %}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<a href="{% url "control:event.items.categories.add" organizer=request.event.organizer.slug event=request.event.slug %}"
|
<a href="{% url "control:event.items.categories.add" organizer=request.event.organizer.slug event=request.event.slug %}"
|
||||||
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 %}"
|
||||||
</a>
|
class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new category" %}
|
||||||
</p>
|
</a>
|
||||||
<div class="table-responsive">
|
</div>
|
||||||
<table class="table table-hover">
|
<div class="table-responsive">
|
||||||
<thead>
|
<table class="table table-hover">
|
||||||
<tr>
|
<thead>
|
||||||
<th>{% trans "Product categories" %}</th>
|
|
||||||
<th class="action-col-2"></th>
|
|
||||||
<th class="action-col-2"></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for c in categories %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<th>{% trans "Product categories" %}</th>
|
||||||
<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>
|
<th class="action-col-2"></th>
|
||||||
</td>
|
<th class="action-col-2"></th>
|
||||||
<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.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 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.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>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for c in categories %}
|
||||||
</div>
|
<tr>
|
||||||
{% include "pretixcontrol/pagination.html" %}
|
<td>
|
||||||
{% endif %}
|
<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>
|
||||||
|
<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.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 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.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>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="panel-footer">
|
||||||
|
{% include "pretixcontrol/pagination.html" %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -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">
|
||||||
{% bootstrap_field form.name layout="control" %}
|
<legend>{% trans "Product category" %}</legend>
|
||||||
<div class="internal-name-wrapper">
|
</div>
|
||||||
{% bootstrap_field form.internal_name layout="control" %}
|
<div class="panel-body">
|
||||||
|
{% bootstrap_field form.name layout="control" %}
|
||||||
|
<div class="internal-name-wrapper">
|
||||||
|
{% bootstrap_field form.internal_name layout="control" %}
|
||||||
|
</div>
|
||||||
|
{% bootstrap_field form.description 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>
|
</div>
|
||||||
{% bootstrap_field form.description layout="control" %}
|
|
||||||
{% bootstrap_field form.is_addon layout="control" %}
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
{% if category %}
|
{% if category %}
|
||||||
@@ -32,10 +40,5 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group submit-group">
|
</form>
|
||||||
<button type="submit" class="btn btn-primary btn-save">
|
|
||||||
{% trans "Save" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -3,19 +3,26 @@
|
|||||||
{% 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">
|
||||||
<form action="" method="post" class="form-horizontal">
|
<div class="panel-heading">
|
||||||
{% csrf_token %}
|
<h1 class="panel-title">{% trans "Delete product category" %}</h1>
|
||||||
<p>{% blocktrans trimmed with name=category.name %}
|
</div>
|
||||||
Are you sure you want to delete the category <strong>{{ name }}</strong>?
|
<div class="panel-body">
|
||||||
{% endblocktrans %}</p>
|
<form action="" method="post" class="form-horizontal">
|
||||||
<div class="form-group submit-group">
|
{% csrf_token %}
|
||||||
<a href="{% url "control:event.items.categories" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default btn-cancel">
|
<p>{% blocktrans trimmed with name=category.name %}
|
||||||
{% trans "Cancel" %}
|
Are you sure you want to delete the category <strong>{{ name }}</strong>?
|
||||||
</a>
|
{% endblocktrans %}</p>
|
||||||
<button type="submit" class="btn btn-danger btn-save">
|
<div class="form-group submit-group">
|
||||||
{% trans "Delete" %}
|
<a href="{% url "control:event.items.categories" organizer=request.event.organizer.slug event=request.event.slug %}"
|
||||||
</button>
|
class="btn btn-default btn-cancel">
|
||||||
</div>
|
{% trans "Cancel" %}
|
||||||
</form>
|
</a>
|
||||||
|
<button type="submit" class="btn btn-danger btn-save">
|
||||||
|
{% trans "Delete" %}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -2,94 +2,101 @@
|
|||||||
{% 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
|
{% if items|length == 0 %}
|
||||||
give category.
|
<div class="empty-collection panel-body">
|
||||||
{% endblocktrans %}
|
<p>
|
||||||
</p>
|
{% blocktrans trimmed %}
|
||||||
{% if items|length == 0 %}
|
You haven't created any products yet.
|
||||||
<div class="empty-collection">
|
{% endblocktrans %}
|
||||||
<p>
|
</p>
|
||||||
{% blocktrans trimmed %}
|
|
||||||
You haven't created any products yet.
|
|
||||||
{% endblocktrans %}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<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-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>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{% trans "Product name" %}</th>
|
<th>{% trans "Product name" %}</th>
|
||||||
<th class="iconcol"></th>
|
<th class="iconcol"></th>
|
||||||
<th class="iconcol"></th>
|
<th class="iconcol"></th>
|
||||||
<th class="iconcol"></th>
|
<th class="iconcol"></th>
|
||||||
<th class="iconcol"></th>
|
<th class="iconcol"></th>
|
||||||
<th>{% trans "Category" %}</th>
|
<th>{% trans "Category" %}</th>
|
||||||
<th class="action-col-2"></th>
|
<th class="action-col-2"></th>
|
||||||
<th class="action-col-2"></th>
|
<th class="action-col-2"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% regroup items by category as cat_list %}
|
{% regroup items by category as cat_list %}
|
||||||
{% for c in cat_list %}
|
{% for c in cat_list %}
|
||||||
{% for i in c.list %}
|
{% for i in c.list %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>
|
<td><strong>
|
||||||
{% if not i.active %}<strike>{% endif %}
|
{% if not i.active %}<strike>{% endif %}
|
||||||
<a href="
|
<a href="
|
||||||
{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=i.id %}">{{ i }}</a>
|
{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=i.id %}">{{ i }}</a>
|
||||||
{% if not i.active %}</strike>{% endif %}
|
{% if not i.active %}</strike>{% endif %}
|
||||||
</strong>
|
</strong>
|
||||||
</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"
|
||||||
{% endif %}
|
title="{% trans "Admission ticket" %}"></span>
|
||||||
</td>
|
{% endif %}
|
||||||
<td>
|
</td>
|
||||||
{% if i.var_count %}
|
<td>
|
||||||
<span class="fa fa-list-ul fa-fw text-muted" data-toggle="tooltip" title="{% trans "Product with variations" %}"></span>
|
{% if i.var_count %}
|
||||||
{% endif %}
|
<span class="fa fa-list-ul fa-fw text-muted" data-toggle="tooltip"
|
||||||
</td>
|
title="{% trans "Product with variations" %}"></span>
|
||||||
<td>
|
{% endif %}
|
||||||
{% if i.hide_without_voucher %}
|
</td>
|
||||||
<span class="fa fa-ticket fa-fw text-muted" data-toggle="tooltip" title="{% trans "Only visible with a voucher" %}"></span>
|
<td>
|
||||||
{% elif i.require_voucher %}
|
{% if i.hide_without_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"
|
||||||
{% endif %}
|
title="{% trans "Only visible with a voucher" %}"></span>
|
||||||
</td>
|
{% elif i.require_voucher %}
|
||||||
<td>{% if i.category %}{{ i.category.name }}{% endif %}</td>
|
<span class="fa fa-ticket fa-fw text-muted" data-toggle="tooltip"
|
||||||
<td>
|
title="{% trans "Can only bought using a voucher" %}"></span>
|
||||||
<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>
|
{% endif %}
|
||||||
<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>{% if i.category %}{{ i.category.name }}{% endif %}</td>
|
||||||
<td class="text-right">
|
<td>
|
||||||
<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.items.up" 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 {% if forloop.counter0 == 0 %}disabled{% endif %}"><i
|
||||||
</td>
|
class="fa fa-arrow-up"></i></a>
|
||||||
</tr>
|
<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 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.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>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
</tbody>
|
||||||
</tbody>
|
</table>
|
||||||
</table>
|
</div>
|
||||||
</div>
|
{% endif %}
|
||||||
{% include "pretixcontrol/pagination.html" %}
|
</div>
|
||||||
{% endif %}
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -5,84 +5,114 @@
|
|||||||
{% 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>
|
<h1 class="panel-title">
|
||||||
<form class="form-inline helper-display-inline" action="" method="get">
|
{% blocktrans with name=question.question %}Question: {{ name }}{% endblocktrans %}
|
||||||
<p>
|
</h1>
|
||||||
<select name="status" class="form-control">
|
</div>
|
||||||
<option value="" {% if request.GET.status == "" %}selected="selected"{% endif %}>{% trans "All orders" %}</option>
|
<div class="panel-body">
|
||||||
<option value="p" {% if request.GET.status == "p" %}selected="selected"{% endif %}>{% trans "Paid" %}</option>
|
<form class="form-inline helper-display-inline" action="" method="get">
|
||||||
<option value="n" {% if request.GET.status == "n" %}selected="selected"{% endif %}>{% trans "Pending" %}</option>
|
<p>
|
||||||
<option value="np" {% if request.GET.status == "np" or "status" not in request.GET %}selected="selected"{% endif %}>{% trans "Pending or paid" %}</option>
|
<select name="status" class="form-control">
|
||||||
<option value="o" {% if request.GET.status == "o" %}selected="selected"{% endif %}>{% trans "Pending (overdue)" %}</option>
|
<option value=""
|
||||||
<option value="e" {% if request.GET.status == "e" %}selected="selected"{% endif %}>{% trans "Expired" %}</option>
|
{% if request.GET.status == "" %}selected="selected"{% endif %}>{% trans "All orders" %}</option>
|
||||||
<option value="ne" {% if request.GET.status == "ne" %}selected="selected"{% endif %}>{% trans "Pending or expired" %}</option>
|
<option value="p"
|
||||||
<option value="c" {% if request.GET.status == "c" %}selected="selected"{% endif %}>{% trans "Canceled" %}</option>
|
{% if request.GET.status == "p" %}selected="selected"{% endif %}>{% trans "Paid" %}</option>
|
||||||
<option value="r" {% if request.GET.status == "r" %}selected="selected"{% endif %}>{% trans "Refunded" %}</option>
|
<option value="n"
|
||||||
</select>
|
{% if request.GET.status == "n" %}selected="selected"{% endif %}>{% trans "Pending" %}</option>
|
||||||
<select name="item" class="form-control">
|
<option value="np"
|
||||||
<option value="">{% trans "All products" %}</option>
|
{% if request.GET.status == "np" or "status" not in request.GET %}selected="selected"{% endif %}>{% trans "Pending or paid" %}</option>
|
||||||
{% for item in items %}
|
<option value="o"
|
||||||
<option value="{{ item.id }}"
|
{% if request.GET.status == "o" %}selected="selected"{% endif %}>{% trans "Pending (overdue)" %}</option>
|
||||||
{% if request.GET.item|add:0 == item.id %}selected="selected"{% endif %}>
|
<option value="e"
|
||||||
{{ item.name }}
|
{% if request.GET.status == "e" %}selected="selected"{% endif %}>{% trans "Expired" %}</option>
|
||||||
</option>
|
<option value="ne"
|
||||||
{% endfor %}
|
{% if request.GET.status == "ne" %}selected="selected"{% endif %}>{% trans "Pending or expired" %}</option>
|
||||||
</select>
|
<option value="c"
|
||||||
<button class="btn btn-primary" type="submit">{% trans "Filter" %}</button>
|
{% if request.GET.status == "c" %}selected="selected"{% endif %}>{% trans "Canceled" %}</option>
|
||||||
</p>
|
<option value="r"
|
||||||
</form>
|
{% if request.GET.status == "r" %}selected="selected"{% endif %}>{% trans "Refunded" %}</option>
|
||||||
|
</select>
|
||||||
|
<select name="item" class="form-control">
|
||||||
|
<option value="">{% trans "All products" %}</option>
|
||||||
|
{% for item in items %}
|
||||||
|
<option value="{{ item.id }}"
|
||||||
|
{% if request.GET.item|add:0 == item.id %}selected="selected"{% endif %}>
|
||||||
|
{{ item.name }}
|
||||||
|
</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
<button class="btn btn-primary" type="submit">{% trans "Filter" %}</button>
|
||||||
|
</p>
|
||||||
|
</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">
|
||||||
<p>
|
<div class="panel panel-default">
|
||||||
{% blocktrans trimmed %}
|
<div class="panel-body empty-collection">
|
||||||
No matching answers found.
|
<p>
|
||||||
{% endblocktrans %}
|
{% blocktrans trimmed %}
|
||||||
</p>
|
No matching answers found.
|
||||||
{% if not items %}
|
{% endblocktrans %}
|
||||||
<p>
|
</p>
|
||||||
{% trans "You need to assign the question to a product to collect answers." %}
|
{% if not items %}
|
||||||
</p>
|
<p>
|
||||||
|
{% trans "You need to assign the question to a product to collect answers." %}
|
||||||
|
</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>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="col-md-5 col-xs-12">
|
<div class="col-md-5 col-xs-12">
|
||||||
<div class="chart" id="question_chart" data-type="{{ question.type }}">
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="chart" id="question_chart" data-type="{{ question.type }}">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<script type="application/json" id="question-chart-data">{{ stats_json|escapejson }}</script>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="application/json" id="question-chart-data">{{ stats_json|escapejson }}</script>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-5 col-xs-12">
|
<div class="col-md-5 col-xs-12">
|
||||||
<table class="table table-bordered table-hover">
|
<div class="panel panel-default">
|
||||||
<thead>
|
<table class="table table-bordered table-hover">
|
||||||
<tr>
|
<thead>
|
||||||
<th>{% trans "Answer" %}</th>
|
|
||||||
<th>{% trans "Count" %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for stat in stats %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<th>{% trans "Answer" %}</th>
|
||||||
<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 }}">
|
<th>{% trans "Count" %}</th>
|
||||||
{{ stat.answer }}
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>{{ stat.count }}</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for stat in stats %}
|
||||||
|
<tr>
|
||||||
|
<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 }}">
|
||||||
|
{{ stat.answer }}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>{{ stat.count }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="col-xs-12 col-lg-2">
|
<div class="col-xs-12 col-lg-2">
|
||||||
|
|||||||
@@ -3,23 +3,36 @@
|
|||||||
{% 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">
|
||||||
<form action="" method="post" class="form-horizontal">
|
<div class="panel-heading">
|
||||||
{% csrf_token %}
|
<h1 class="panel-title">{% trans "Delete question" %}</h1>
|
||||||
<p>{% blocktrans %}Are you sure you want to delete the question <strong>{{ question }}</strong>?{% endblocktrans %}</p>
|
</div>
|
||||||
{% if dependent|length > 0 %}
|
<div class="panel-body">
|
||||||
<p>{% blocktrans %}All answers to the question given by the buyers of the following products will be <strong>lost</strong>.{% endblocktrans %}</p>
|
<form action="" method="post" class="form-horizontal">
|
||||||
{% for item in dependent %}
|
{% csrf_token %}
|
||||||
<li><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.pk %}">{{ item.name }}</a></li>
|
<p>{% blocktrans %}Are you sure you want to delete the question <strong>{{ question }}</strong>
|
||||||
{% endfor %}
|
?{% endblocktrans %}</p>
|
||||||
{% endif %}
|
{% if dependent|length > 0 %}
|
||||||
<div class="form-group submit-group">
|
<p>{% blocktrans %}All answers to the question given by the buyers of the following products will be
|
||||||
<a href="{% url "control:event.items.questions" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default btn-cancel">
|
<strong>lost</strong>.{% endblocktrans %}</p>
|
||||||
{% trans "Cancel" %}
|
<ul>
|
||||||
</a>
|
{% for item in dependent %}
|
||||||
<button type="submit" class="btn btn-danger btn-save">
|
<li>
|
||||||
{% trans "Delete" %}
|
<a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.pk %}">{{ item.name }}</a>
|
||||||
</button>
|
</li>
|
||||||
</div>
|
{% endfor %}
|
||||||
</form>
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
<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">
|
||||||
|
{% trans "Cancel" %}
|
||||||
|
</a>
|
||||||
|
<button type="submit" class="btn btn-danger btn-save">
|
||||||
|
{% trans "Delete" %}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -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">
|
||||||
{% bootstrap_field form.question layout="control" %}
|
{% if question %}
|
||||||
{% bootstrap_field form.help_text layout="control" %}
|
<h1 class="panel-title">{% blocktrans with name=question.question %}Question:
|
||||||
{% bootstrap_field form.type layout="control" %}
|
{{ name }}{% endblocktrans %}</h1>
|
||||||
{% bootstrap_field form.identifier layout="control" %}
|
{% else %}
|
||||||
{% bootstrap_field form.ask_during_checkin layout="control" %}
|
<h1 class="panel-title">{% trans "Question" %}</h1>
|
||||||
{% bootstrap_field form.required layout="control" %}
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
{% bootstrap_field form.question layout="control" %}
|
||||||
|
{% bootstrap_field form.help_text layout="control" %}
|
||||||
|
{% bootstrap_field form.type layout="control" %}
|
||||||
|
{% bootstrap_field form.identifier layout="control" %}
|
||||||
|
{% bootstrap_field form.ask_during_checkin layout="control" %}
|
||||||
|
{% bootstrap_field form.required layout="control" %}
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset class="panel panel-default">
|
||||||
<legend>{% trans "Apply to products" %}</legend>
|
<div class="panel-heading">
|
||||||
{% bootstrap_field form.items layout="control" %}
|
<legend>{% trans "Apply to products" %}</legend>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
{% 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,77 +45,81 @@
|
|||||||
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">
|
||||||
<legend>{% trans "Answer options" %}</legend>
|
<div class="panel-heading">
|
||||||
<noscript>
|
<legend>{% trans "Answer options" %}</legend>
|
||||||
<p>{% trans "Only applicable if you choose 'Choose one/multiple from a list' above." %}</p>
|
</div>
|
||||||
</noscript>
|
<div class="panel-body">
|
||||||
<div class="formset" data-formset data-formset-prefix="{{ formset.prefix }}">
|
<noscript>
|
||||||
{{ formset.management_form }}
|
<p>{% trans "Only applicable if you choose 'Choose one/multiple from a list' above." %}</p>
|
||||||
{% bootstrap_formset_errors formset %}
|
</noscript>
|
||||||
<div data-formset-body>
|
<div class="formset" data-formset data-formset-prefix="{{ formset.prefix }}">
|
||||||
{% for form in formset %}
|
{{ formset.management_form }}
|
||||||
<div data-formset-form>
|
{% bootstrap_formset_errors formset %}
|
||||||
<div class="sr-only">
|
<div data-formset-body>
|
||||||
{{ form.id }}
|
{% for form in formset %}
|
||||||
{% bootstrap_field form.DELETE form_group_class="" layout="inline" %}
|
<div data-formset-form>
|
||||||
{% bootstrap_field form.ORDER form_group_class="" layout="inline" %}
|
<div class="sr-only">
|
||||||
</div>
|
{{ form.id }}
|
||||||
<div class="row question-option-row">
|
{% bootstrap_field form.DELETE form_group_class="" layout="inline" %}
|
||||||
<div class="col-xs-10">
|
{% bootstrap_field form.ORDER form_group_class="" layout="inline" %}
|
||||||
|
</div>
|
||||||
|
<div class="row question-option-row">
|
||||||
|
<div class="col-xs-10">
|
||||||
<span class="text-muted">
|
<span class="text-muted">
|
||||||
{% blocktrans trimmed with id=form.instance.identifier %}
|
{% blocktrans trimmed with id=form.instance.identifier %}
|
||||||
Answer option {{ id }}
|
Answer option {{ id }}
|
||||||
{% endblocktrans %}
|
{% endblocktrans %}
|
||||||
</span>
|
</span>
|
||||||
{% bootstrap_form_errors form %}
|
{% bootstrap_form_errors form %}
|
||||||
{% bootstrap_field form.answer layout='inline' form_group_class="" %}
|
{% bootstrap_field form.answer layout='inline' form_group_class="" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-2 text-right">
|
<div class="col-xs-2 text-right">
|
||||||
<span> </span><br>
|
<span> </span><br>
|
||||||
<button type="button" class="btn btn-default" data-formset-move-up-button>
|
<button type="button" class="btn btn-default" data-formset-move-up-button>
|
||||||
<i class="fa fa-arrow-up"></i></button>
|
<i class="fa fa-arrow-up"></i></button>
|
||||||
<button type="button" class="btn btn-default" data-formset-move-down-button>
|
<button type="button" class="btn btn-default" data-formset-move-down-button>
|
||||||
<i class="fa fa-arrow-down"></i></button>
|
<i class="fa fa-arrow-down"></i></button>
|
||||||
<button type="button" class="btn btn-danger" data-formset-delete-button>
|
<button type="button" class="btn btn-danger" data-formset-delete-button>
|
||||||
<i class="fa fa-trash"></i></button>
|
<i class="fa fa-trash"></i></button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% endfor %}
|
||||||
{% endfor %}
|
</div>
|
||||||
</div>
|
<script type="form-template" data-formset-empty-form>
|
||||||
<script type="form-template" data-formset-empty-form>
|
{% escapescript %}
|
||||||
{% escapescript %}
|
<div data-formset-form>
|
||||||
<div data-formset-form>
|
<div class="sr-only">
|
||||||
<div class="sr-only">
|
{{ formset.empty_form.id }}
|
||||||
{{ formset.empty_form.id }}
|
{% bootstrap_field formset.empty_form.DELETE form_group_class="" layout="inline" %}
|
||||||
{% bootstrap_field formset.empty_form.DELETE form_group_class="" layout="inline" %}
|
{% bootstrap_field formset.empty_form.ORDER form_group_class="" layout="inline" %}
|
||||||
{% bootstrap_field formset.empty_form.ORDER form_group_class="" layout="inline" %}
|
</div>
|
||||||
</div>
|
<div class="row question-option-row">
|
||||||
<div class="row question-option-row">
|
<div class="col-xs-10">
|
||||||
<div class="col-xs-10">
|
|
||||||
<span class="text-muted">
|
<span class="text-muted">
|
||||||
{% trans "New answer option" %}
|
{% trans "New answer option" %}
|
||||||
</span>
|
</span>
|
||||||
{% bootstrap_field formset.empty_form.answer layout='inline' form_group_class="" %}
|
{% bootstrap_field formset.empty_form.answer layout='inline' form_group_class="" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-2 text-right">
|
<div class="col-xs-2 text-right">
|
||||||
<span> </span><br>
|
<span> </span><br>
|
||||||
<button type="button" class="btn btn-default" data-formset-move-up-button>
|
<button type="button" class="btn btn-default" data-formset-move-up-button>
|
||||||
<i class="fa fa-arrow-up"></i></button>
|
<i class="fa fa-arrow-up"></i></button>
|
||||||
<button type="button" class="btn btn-default" data-formset-move-down-button>
|
<button type="button" class="btn btn-default" data-formset-move-down-button>
|
||||||
<i class="fa fa-arrow-down"></i></button>
|
<i class="fa fa-arrow-down"></i></button>
|
||||||
<button type="button" class="btn btn-danger" data-formset-delete-button>
|
<button type="button" class="btn btn-danger" data-formset-delete-button>
|
||||||
<i class="fa fa-trash"></i></button>
|
<i class="fa fa-trash"></i></button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% endescapescript %}
|
||||||
{% endescapescript %}
|
</script>
|
||||||
</script>
|
<p>
|
||||||
<p>
|
<button type="button" class="btn btn-default" data-formset-add>
|
||||||
<button type="button" class="btn btn-default" data-formset-add>
|
<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">
|
||||||
|
|||||||
@@ -2,74 +2,89 @@
|
|||||||
{% 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">
|
||||||
{% blocktrans trimmed %}
|
<h1 class="panel-title">{% trans "Questions" %}</h1>
|
||||||
Questions allow your attendees to fill in additional data about their ticket. If you provide food, one
|
</div>
|
||||||
example might be to ask your users about dietary requirements.
|
<div class="panel-body">
|
||||||
{% endblocktrans %}
|
{% blocktrans trimmed %}
|
||||||
</p>
|
Questions allow your attendees to fill in additional data about their ticket. If you provide food, one
|
||||||
{% if questions|length == 0 %}
|
example might be to ask your users about dietary requirements.
|
||||||
<div class="empty-collection">
|
{% endblocktrans %}
|
||||||
<p>
|
</div>
|
||||||
{% blocktrans trimmed %}
|
{% if questions|length == 0 %}
|
||||||
You haven't created any questions yet.
|
<div class="empty-collection panel-body">
|
||||||
{% endblocktrans %}
|
<p>
|
||||||
</p>
|
{% blocktrans trimmed %}
|
||||||
|
You haven't created any questions yet.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<a href="{% url "control:event.items.questions.add" organizer=request.event.organizer.slug event=request.event.slug %}"
|
<a href="{% url "control:event.items.questions.add" organizer=request.event.organizer.slug event=request.event.slug %}"
|
||||||
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 %}"
|
||||||
</a>
|
class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new question" %}
|
||||||
</p>
|
</a>
|
||||||
<div class="table-responsive">
|
</div>
|
||||||
<table class="table table-hover table-quotas">
|
<div class="table-responsive">
|
||||||
<thead>
|
<table class="table table-hover table-quotas">
|
||||||
<tr>
|
<thead>
|
||||||
<th>{% trans "Question" %}</th>
|
|
||||||
<th>{% trans "Type" %}</th>
|
|
||||||
<th>{% trans "Products" %}</th>
|
|
||||||
<th class="action-col-2"></th>
|
|
||||||
<th class="action-col-2"></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for q in questions %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong><a href="
|
<th>{% trans "Question" %}</th>
|
||||||
{% url "control:event.items.questions.show" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}">{{ q.question }}</a></strong>
|
<th>{% trans "Type" %}</th>
|
||||||
</td>
|
<th>{% trans "Products" %}</th>
|
||||||
<td>
|
<th class="action-col-2"></th>
|
||||||
{{ q.get_type_display }}
|
<th class="action-col-2"></th>
|
||||||
{% if q.required %}
|
|
||||||
<span class="fa fa-exclamation-circle text-muted"
|
|
||||||
data-toggle="tooltip" title="{% trans "Required question" %}">
|
|
||||||
</span>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
{% 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>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</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.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 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.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>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for q in questions %}
|
||||||
</div>
|
<tr>
|
||||||
{% include "pretixcontrol/pagination.html" %}
|
<td><strong><a href="
|
||||||
{% endif %}
|
{% url "control:event.items.questions.show" organizer=request.event.organizer.slug event=request.event.slug question=q.id %}">{{ q.question }}</a></strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ q.get_type_display }}
|
||||||
|
{% if q.required %}
|
||||||
|
<span class="fa fa-exclamation-circle text-muted"
|
||||||
|
data-toggle="tooltip" title="{% trans "Required question" %}">
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
{% 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>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</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.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 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.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>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="panel-footer">
|
||||||
|
{% include "pretixcontrol/pagination.html" %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -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>
|
<h1 class="panel-title">
|
||||||
|
{% blocktrans with name=quota.name %}Quota: {{ name }}{% endblocktrans %}
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
</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,48 +27,60 @@
|
|||||||
{% 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">
|
||||||
<legend>{% trans "Usage overview" %}</legend>
|
<div class="panel panel-default">
|
||||||
<div class="chart" id="quota_chart">
|
<div class="panel-heading">
|
||||||
|
<legend>{% trans "Usage overview" %}</legend>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="chart" id="quota_chart">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<script type="application/json" id="quota-chart-data">{{ quota_chart_data|escapejson }}</script>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="application/json" id="quota-chart-data">{{ quota_chart_data|escapejson }}</script>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-5 col-xs-12">
|
<div class="col-md-5 col-xs-12">
|
||||||
<legend>{% trans "Availability calculation" %}</legend>
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<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>
|
||||||
|
{% for row in quota_table_rows %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-9">{{ row.label }}</div>
|
||||||
|
<div class="col-xs-3 text-right"> – {{ row.value }}</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-9"><strong>{% trans "Current availability" %}</strong></div>
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
{% if quota.size == None %}{% trans "Infinite" %}{% else %}{{ avail.1 }}{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% if quota_overbooked > 0 %}
|
||||||
|
<div class="alert alert-warning">
|
||||||
|
{% blocktrans trimmed with num=quota_overbooked %}
|
||||||
|
This quota is currently overbooked by {{ num }} tickets.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% if has_ignore_vouchers %}
|
||||||
|
<div class="alert alert-warning">
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Your event contains vouchers that affect products covered by this quota and that
|
||||||
|
allow a user to buy products even if this quota is sold out.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% for row in quota_table_rows %}
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-9">{{ row.label }}</div>
|
|
||||||
<div class="col-xs-3 text-right"> – {{ row.value }}</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-9"><strong>{% trans "Current availability" %}</strong></div>
|
|
||||||
<div class="col-xs-3 text-right">
|
|
||||||
{% if quota.size == None %}{% trans "Infinite" %}{% else %}{{ avail.1 }}{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% if quota_overbooked > 0 %}
|
|
||||||
<div class="alert alert-warning">
|
|
||||||
{% blocktrans trimmed with num=quota_overbooked %}
|
|
||||||
This quota is currently overbooked by {{ num }} tickets.
|
|
||||||
{% endblocktrans %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% if has_ignore_vouchers %}
|
|
||||||
<div class="alert alert-warning">
|
|
||||||
{% blocktrans trimmed %}
|
|
||||||
Your event contains vouchers that affect products covered by this quota and that
|
|
||||||
allow a user to buy products even if this quota is sold out.
|
|
||||||
{% endblocktrans %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</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">
|
||||||
|
|||||||
@@ -3,23 +3,36 @@
|
|||||||
{% 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">
|
||||||
<form action="" method="post" class="form-horizontal">
|
<div class="panel-heading">
|
||||||
{% csrf_token %}
|
<h1 class="panel-title">{% trans "Delete quota" %}</h1>
|
||||||
<p>{% blocktrans %}Are you sure you want to delete the quota <strong>{{ quota }}</strong>?{% endblocktrans %}</p>
|
</div>
|
||||||
{% if dependent|length > 0 %}
|
<div class="panel-body">
|
||||||
<p>{% blocktrans %}The following products might be no longer available for sale:{% endblocktrans %}</p>
|
<form action="" method="post" class="form-horizontal">
|
||||||
{% for item in dependent %}
|
{% csrf_token %}
|
||||||
<li><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.pk %}">{{ item.name }}</a></li>
|
<p>{% blocktrans %}Are you sure you want to delete the quota <strong>{{ quota }}</strong>
|
||||||
{% endfor %}
|
?{% endblocktrans %}</p>
|
||||||
{% endif %}
|
{% if dependent|length > 0 %}
|
||||||
<div class="form-group submit-group">
|
<p>{% blocktrans %}The following products might be no longer available for
|
||||||
<a href="{% url "control:event.items.quotas" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default btn-cancel">
|
sale:{% endblocktrans %}</p>
|
||||||
{% trans "Cancel" %}
|
<ul>
|
||||||
</a>
|
{% for item in dependent %}
|
||||||
<button type="submit" class="btn btn-danger btn-save">
|
<li>
|
||||||
{% trans "Delete" %}
|
<a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.pk %}">{{ item.name }}</a>
|
||||||
</button>
|
</li>
|
||||||
</div>
|
{% endfor %}
|
||||||
</form>
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
<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">
|
||||||
|
{% trans "Cancel" %}
|
||||||
|
</a>
|
||||||
|
<button type="submit" class="btn btn-danger btn-save">
|
||||||
|
{% trans "Delete" %}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -9,36 +9,37 @@
|
|||||||
{% 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">
|
||||||
{% else %}
|
{% if quota %}
|
||||||
<h1>{% trans "Quota" %}</h1>
|
<h1 class="panel-title">{% blocktrans with name=quota.name %}Quota: {{ name }}{% endblocktrans %}</h1>
|
||||||
{% endif %}
|
{% else %}
|
||||||
<form action="" method="post" class="form-horizontal">
|
<h1 class="panel-title">{% trans "Quota" %}</h1>
|
||||||
{% csrf_token %}
|
|
||||||
{% bootstrap_form_errors form %}
|
|
||||||
<fieldset>
|
|
||||||
<legend>{% trans "General information" %}</legend>
|
|
||||||
{% bootstrap_field form.name layout="control" %}
|
|
||||||
{% bootstrap_field form.size layout="control" %}
|
|
||||||
{% if form.subevent %}
|
|
||||||
{% bootstrap_field form.subevent layout="control" %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<legend>{% trans "Items" %}</legend>
|
|
||||||
<p>
|
|
||||||
{% blocktrans trimmed %}
|
|
||||||
Please select the products or product variations this quota should be applied to. If you apply two
|
|
||||||
quotas to the same product, it will only be available if
|
|
||||||
<strong>both</strong> quotas have capacity
|
|
||||||
left.
|
|
||||||
{% endblocktrans %}
|
|
||||||
</p>
|
|
||||||
{% bootstrap_field form.itemvars layout="control" %}
|
|
||||||
</fieldset>
|
|
||||||
<div class="form-group submit-group">
|
|
||||||
<button type="submit" class="btn btn-primary btn-save">
|
|
||||||
{% trans "Save" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
<form action="" method="post" class="form-horizontal panel-body">
|
||||||
|
{% csrf_token %}
|
||||||
|
{% bootstrap_form_errors form %}
|
||||||
|
<fieldset>
|
||||||
|
{% bootstrap_field form.name layout="control" %}
|
||||||
|
{% bootstrap_field form.size layout="control" %}
|
||||||
|
{% if form.subevent %}
|
||||||
|
{% bootstrap_field form.subevent layout="control" %}
|
||||||
|
{% endif %}
|
||||||
|
{% bootstrap_field form.itemvars layout="control" %}
|
||||||
|
<p class="help-block">
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Please select the products or product variations this quota should be applied to. If you apply
|
||||||
|
two quotas to the same product, it will only be available if <strong>both</strong> quotas have capacity
|
||||||
|
left.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
</fieldset>
|
||||||
|
<div class="form-group submit-group">
|
||||||
|
<button type="submit" class="btn btn-primary btn-save">
|
||||||
|
{% trans "Save" %}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -2,82 +2,93 @@
|
|||||||
{% 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">
|
||||||
{% blocktrans trimmed %}
|
<h1 class="panel-title">{% trans "Quotas" %}</h1>
|
||||||
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
|
|
||||||
number of attendees or the number of attendees is limited. You can assign a product to multiple quotas
|
|
||||||
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.
|
|
||||||
{% endblocktrans %}
|
|
||||||
</p>
|
|
||||||
{% if request.event.has_subevents %}
|
|
||||||
<form class="form-inline helper-display-inline" action="" method="get">
|
|
||||||
{% include "pretixcontrol/event/fragment_subevent_choice_simple.html" %}
|
|
||||||
</form>
|
|
||||||
{% endif %}
|
|
||||||
{% if quotas|length == 0 %}
|
|
||||||
<div class="empty-collection">
|
|
||||||
<p>
|
|
||||||
{% if request.GET.subevent %}
|
|
||||||
{% trans "Your search did not match any quotas." %}
|
|
||||||
{% else %}
|
|
||||||
{% blocktrans trimmed %}
|
|
||||||
You haven't created any quotas yet.
|
|
||||||
{% endblocktrans %}
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<a href="{% url "control:event.items.quotas.add" organizer=request.event.organizer.slug event=request.event.slug %}"
|
|
||||||
class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new quota" %}</a>
|
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
<div class="panel-body">
|
||||||
<p>
|
{% blocktrans trimmed %}
|
||||||
<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" %}
|
To make your products actually available, you also need quotas. Quotas define, how many instances of
|
||||||
</a>
|
your product pretix will sell. This way, you can configure whether your event can take an unlimited
|
||||||
</p>
|
number of attendees or the number of attendees is limited. You can assign a product to multiple quotas
|
||||||
<div class="table-responsive">
|
to fulfil more complex requirements, e.g. if you want to limit the total number of tickets sold and the
|
||||||
<table class="table table-hover table-quotas">
|
number of a specific ticket type at the same time.
|
||||||
<thead>
|
{% endblocktrans %}
|
||||||
<tr>
|
</div>
|
||||||
<th>{% trans "Quota name" %}</th>
|
{% if request.event.has_subevents %}
|
||||||
<th>{% trans "Products" %}</th>
|
<form class="form-inline helper-display-inline" action="" method="get">
|
||||||
{% if request.event.has_subevents %}
|
{% include "pretixcontrol/event/fragment_subevent_choice_simple.html" %}
|
||||||
<th>{% trans "Date" context "subevent" %}</th>
|
</form>
|
||||||
|
{% endif %}
|
||||||
|
{% if quotas|length == 0 %}
|
||||||
|
<div class="empty-collection panel-body">
|
||||||
|
<p>
|
||||||
|
{% if request.GET.subevent %}
|
||||||
|
{% trans "Your search did not match any quotas." %}
|
||||||
|
{% else %}
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
You haven't created any quotas yet.
|
||||||
|
{% endblocktrans %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<th>{% trans "Total capacity" %}</th>
|
</p>
|
||||||
<th>{% trans "Capacity left" %}</th>
|
|
||||||
<th class="action-col-2"></th>
|
<a href="{% url "control:event.items.quotas.add" organizer=request.event.organizer.slug event=request.event.slug %}"
|
||||||
</tr>
|
class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new quota" %}</a>
|
||||||
</thead>
|
</div>
|
||||||
<tbody>
|
{% else %}
|
||||||
{% for q in quotas %}
|
<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>
|
||||||
|
</div>
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-hover table-quotas">
|
||||||
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<th>{% trans "Quota name" %}</th>
|
||||||
<strong><a href="{% url "control:event.items.quotas.show" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}">{{ q.name }}</a></strong>
|
<th>{% trans "Products" %}</th>
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
{% 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>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
{% if request.event.has_subevents %}
|
{% if request.event.has_subevents %}
|
||||||
<td>{{ q.subevent.name }} – {{ q.subevent.get_date_range_display }}</td>
|
<th>{% trans "Date" context "subevent" %}</th>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<td>{% if q.size == None %}Unlimited{% else %}{{ q.size }}{% endif %}</td>
|
<th>{% trans "Total capacity" %}</th>
|
||||||
<td>{% include "pretixcontrol/items/fragment_quota_availability.html" with availability=q.availability %}</td>
|
<th>{% trans "Capacity left" %}</th>
|
||||||
<td class="text-right">
|
<th class="action-col-2"></th>
|
||||||
<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.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>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for q in quotas %}
|
||||||
</div>
|
<tr>
|
||||||
{% endif %}
|
<td>
|
||||||
{% include "pretixcontrol/pagination.html" %}
|
<strong><a href="{% url "control:event.items.quotas.show" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}">{{ q.name }}</a></strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
{% 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>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
{% if request.event.has_subevents %}
|
||||||
|
<td>{{ q.subevent.name }} – {{ q.subevent.get_date_range_display }}</td>
|
||||||
|
{% endif %}
|
||||||
|
<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 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.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>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="panel-footer">
|
||||||
|
{% include "pretixcontrol/pagination.html" %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -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,37 +12,44 @@
|
|||||||
{% 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 %}
|
||||||
<li>
|
<li>
|
||||||
<a href="?{% url_replace request 'page' page_obj.next_page_number %}">
|
<a href="?{% url_replace request 'page' page_obj.next_page_number %}">
|
||||||
<span>»</span>
|
<span>»</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
</ul>
|
||||||
{% if page_obj.paginator.count > 1 %}
|
|
||||||
<li class="page-current"><a>
|
|
||||||
{% blocktrans trimmed with count=page_obj.paginator.count %}
|
|
||||||
{{ count }} elements
|
|
||||||
{% endblocktrans %}
|
|
||||||
</a></li>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
{% if page_size %}
|
|
||||||
<div class="clearfix">
|
|
||||||
<small>
|
|
||||||
{% trans "Show per page:" %}
|
|
||||||
</small>
|
|
||||||
<a href="?{% url_replace request "page_size" "25" "page" "1" %}">
|
|
||||||
{% if page_size == 25 %}<strong>{% endif %}25{% if page_size == 25 %}</strong>{% endif %}</a> |
|
|
||||||
<a href="?{% url_replace request "page_size" "50" "page" "1" %}">
|
|
||||||
{% if page_size == 50 %}<strong>{% endif %}50{% if page_size == 50 %}</strong>{% endif %}</a> |
|
|
||||||
<a href="?{% url_replace request "page_size" "100" "page" "1" %}">
|
|
||||||
{% if page_size == 100 %}<strong>{% endif %}100{% if page_size == 100 %}</strong>{% endif %}</a>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if page_obj.paginator.count > 0 %}
|
||||||
|
<ul class="pagination pagination-count">
|
||||||
|
<li class="page-current"><a>
|
||||||
|
{% blocktrans trimmed with count=page_obj.paginator.count %}
|
||||||
|
{{ count }} elements
|
||||||
|
{% endblocktrans %}
|
||||||
|
</a></li>
|
||||||
|
</ul>
|
||||||
|
<ul class="pagination pagination-select">
|
||||||
|
<li class="page-current"><a>
|
||||||
|
{% trans "Show per page:" %}
|
||||||
|
</a></li>
|
||||||
|
<li>
|
||||||
|
<a href="?{% url_replace request "page_size" "25" "page" "1" %}">
|
||||||
|
{% 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" %}">
|
||||||
|
{% 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" %}">
|
||||||
|
{% if page_size == 100 %}<strong>{% endif %}100{% if page_size == 100 %}</strong>{% endif %}</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
<div class="clearfix">
|
||||||
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
@@ -4,48 +4,57 @@
|
|||||||
{% 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">
|
||||||
<legend>{% trans "Step 1: Download data" %}</legend>
|
<div class="panel-heading">
|
||||||
<p>
|
<legend>{% trans "Step 1: Download data" %}</legend>
|
||||||
{% blocktrans trimmed %}
|
</div>
|
||||||
You are about to permamanently delete data from the server, even though you might be required to
|
<div class="panel-body">
|
||||||
keep
|
<p>
|
||||||
some of this data on file. You should therefore download the following file and store it in a safe
|
{% blocktrans trimmed %}
|
||||||
place:
|
You are about to permamanently delete data from the server, even though you might be required to
|
||||||
{% endblocktrans %}
|
keep some of this data on file. You should therefore download the following file and store it in a
|
||||||
</p>
|
safe place:
|
||||||
<p>
|
{% endblocktrans %}
|
||||||
<a href="{% url "cachedfile.download" id=file.pk %}" class="btn btn-primary btn-lg">
|
</p>
|
||||||
{% trans "Download data" %}
|
<p>
|
||||||
</a>
|
<a href="{% url "cachedfile.download" id=file.pk %}" class="btn btn-primary btn-lg">
|
||||||
</p>
|
{% trans "Download data" %}
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset class="panel-default panel">
|
||||||
<legend>{% trans "Step 2: Confirm download" %}</legend>
|
<div class="panel-heading">
|
||||||
<p>
|
<legend>{% trans "Step 2: Confirm download" %}</legend>
|
||||||
{% blocktrans trimmed %}
|
</div>
|
||||||
In the downloaded file, there is a text file named "CONFIRM_CODE.txt" with a six-character code.
|
<div class="panel-body">
|
||||||
Please enter this code here to confirm that you successfully downloaded the file.
|
<p>
|
||||||
{% endblocktrans %}
|
{% blocktrans trimmed %}
|
||||||
</p>
|
In the downloaded file, there is a text file named "CONFIRM_CODE.txt" with a six-character code.
|
||||||
<input type="text" class="form-control" name="confirm_code" required placeholder="{% trans "Confirmation code" %}">
|
Please enter this code here to confirm that you successfully downloaded the file.
|
||||||
<br>
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
<input type="text" class="form-control" name="confirm_code" required
|
||||||
|
placeholder="{% trans "Confirmation code" %}">
|
||||||
|
<br>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset class="panel-default panel">
|
||||||
<legend>{% trans "Step 3: Confirm deletion" %}</legend>
|
<div class="panel-heading">
|
||||||
<p>
|
<legend>{% trans "Step 3: Confirm deletion" %}</legend>
|
||||||
{% blocktrans trimmed with event=request.event.name %}
|
</div>
|
||||||
Please re-check that you are fully certain that you want to delete the selected categories of data from the event <strong>{{ event }}</strong>.
|
<div class="panel-body">
|
||||||
In this case, please enter your user password here:
|
<p>
|
||||||
{% endblocktrans %}
|
{% blocktrans trimmed with event=request.event.name %}
|
||||||
</p>
|
Please re-check that you are fully certain that you want to delete the selected categories of
|
||||||
<input type="password" class="form-control" name="password" required placeholder="{% trans "Your password" %}">
|
data from the event <strong>{{ event }}</strong>.
|
||||||
|
In this case, please enter your user password here:
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
<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">
|
||||||
|
|||||||
@@ -4,37 +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">
|
||||||
{% trans "Data shredder" %}
|
<div class="panel-heading">
|
||||||
</h1>
|
<h1 class="panel-title">
|
||||||
<p>
|
{% trans "Data shredder" %}
|
||||||
{% blocktrans trimmed %}
|
</h1>
|
||||||
This feature allows you to remove personal data from this event. You will first select what kind of data
|
</div>
|
||||||
you want to shred, then you are able to download the affected data and after you confirmed the download,
|
<div class="panel-body">
|
||||||
the data will be removed from the server's database. The data might still exist in backups for a limited
|
|
||||||
period of time.
|
<p>
|
||||||
{% endblocktrans %}
|
{% blocktrans trimmed %}
|
||||||
<strong>
|
This feature allows you to remove personal data from this event. You will first select what kind of
|
||||||
{% blocktrans trimmed %}
|
data you want to shred, then you are able to download the affected data and after you confirmed the
|
||||||
Using this will not remove the orders for your event, it just scrubs them of data that can be linked
|
download, the data will be removed from the server's database. The data might still exist in backups for a
|
||||||
to individual persons.
|
limited period of time.
|
||||||
{% endblocktrans %}
|
{% endblocktrans %}
|
||||||
</strong>
|
<strong>
|
||||||
</p>
|
{% blocktrans trimmed %}
|
||||||
<div class="alert alert-legal">
|
Using this will not remove the orders for your event, it just scrubs them of data that can be
|
||||||
<strong>
|
linked to individual persons.
|
||||||
{% blocktrans trimmed %}
|
{% endblocktrans %}
|
||||||
It is within your own responsibility to check if you are allowed to delete the affected data in your
|
</strong>
|
||||||
legislation, e.g. for reasons of taxation. In many countries, you need to keep some data in the live
|
</p>
|
||||||
system in case of an audit.
|
<div class="alert alert-legal">
|
||||||
{% endblocktrans %}
|
<strong>
|
||||||
</strong>
|
{% blocktrans trimmed %}
|
||||||
{% blocktrans trimmed %}
|
It is within your own responsibility to check if you are allowed to delete the affected data in
|
||||||
For most categories of data, you will be able to partially download the data to store it offline. Some
|
your legislation, e.g. for reasons of taxation. In many countries, you need to keep some data in the
|
||||||
kinds of data (such as some payment information) as well as historical log data cannot be downloaded at
|
live system in case of an audit.
|
||||||
the moment.
|
{% endblocktrans %}
|
||||||
{% endblocktrans %}
|
</strong>
|
||||||
<div class="clear"></div>
|
{% blocktrans trimmed %}
|
||||||
|
For most categories of data, you will be able to partially download the data to store it offline.
|
||||||
|
Some kinds of data (such as some payment information) as well as historical log data cannot be downloaded
|
||||||
|
at the moment.
|
||||||
|
{% endblocktrans %}
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if constraints %}
|
{% if constraints %}
|
||||||
<div class="alert alert-danger">
|
<div class="alert alert-danger">
|
||||||
@@ -42,10 +49,9 @@
|
|||||||
</div>
|
</div>
|
||||||
{% 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">
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user