From b84b51250fe0188f970b0ba7904b33c89e2046cd Mon Sep 17 00:00:00 2001
From: Raphael Michel
Date: Mon, 20 Apr 2020 17:39:11 +0200
Subject: [PATCH] More visible download buttons for single tickets
---
doc/development/api/ticketoutput.rst | 2 +
src/pretix/base/ticketoutput.py | 7 ++++
.../plugins/ticketoutputpdf/ticketoutput.py | 1 +
.../event/fragment_downloads.html | 39 ++++++++++++-------
src/pretix/presale/views/order.py | 5 +++
.../static/pretixpresale/scss/_event.scss | 3 ++
6 files changed, 44 insertions(+), 13 deletions(-)
diff --git a/doc/development/api/ticketoutput.rst b/doc/development/api/ticketoutput.rst
index 64da67956f..73e9f3cb73 100644
--- a/doc/development/api/ticketoutput.rst
+++ b/doc/development/api/ticketoutput.rst
@@ -74,6 +74,8 @@ The output class
.. autoattribute:: multi_download_button_text
+ .. autoattribute:: long_download_button_text
+
.. autoattribute:: preview_allowed
.. autoattribute:: javascript_required
diff --git a/src/pretix/base/ticketoutput.py b/src/pretix/base/ticketoutput.py
index 558e3b494d..efc05010be 100644
--- a/src/pretix/base/ticketoutput.py
+++ b/src/pretix/base/ticketoutput.py
@@ -162,6 +162,13 @@ class BaseTicketOutput:
"""
return _('Download ticket')
+ @property
+ def long_download_button_text(self) -> str:
+ """
+ The text on the large download button in the frontend.
+ """
+ return self.download_button_text
+
@property
def multi_download_button_text(self) -> str:
"""
diff --git a/src/pretix/plugins/ticketoutputpdf/ticketoutput.py b/src/pretix/plugins/ticketoutputpdf/ticketoutput.py
index d7f187c4d9..1793bf2414 100644
--- a/src/pretix/plugins/ticketoutputpdf/ticketoutput.py
+++ b/src/pretix/plugins/ticketoutputpdf/ticketoutput.py
@@ -29,6 +29,7 @@ class PdfTicketOutput(BaseTicketOutput):
verbose_name = _('PDF output')
download_button_text = _('PDF')
multi_download_button_text = _('Download tickets (PDF)')
+ long_download_button_text = _('Download ticket (PDF)')
def __init__(self, event, override_layout=None, override_background=None):
self.override_layout = override_layout
diff --git a/src/pretix/presale/templates/pretixpresale/event/fragment_downloads.html b/src/pretix/presale/templates/pretixpresale/event/fragment_downloads.html
index cfe56144e1..cacc501147 100644
--- a/src/pretix/presale/templates/pretixpresale/event/fragment_downloads.html
+++ b/src/pretix/presale/templates/pretixpresale/event/fragment_downloads.html
@@ -5,24 +5,37 @@
{% blocktrans trimmed %}
You can download your tickets using the buttons below. Please have your ticket ready when entering the event.
{% endblocktrans %}
-
- {% if cart.positions|length > 1 and can_download_multi %}
-
- {% trans "Download all tickets at once:" %}
- {% for b in download_buttons %}
- {% if b.multi %}
-
+ {% endif %}
+ {% endfor %}
+
+ {% elif tickets_with_download|length == 1 %}
+
+ {% for b in download_buttons %}
+
- {% endif %}
- {% endfor %}
-
- {% endif %}
+ {% endfor %}
+
+ {% endif %}
+
{% elif not download_buttons and ticket_download_date %}
{% if order.status == 'p' %}
diff --git a/src/pretix/presale/views/order.py b/src/pretix/presale/views/order.py
index 54c78e6135..1b03be49db 100644
--- a/src/pretix/presale/views/order.py
+++ b/src/pretix/presale/views/order.py
@@ -162,6 +162,7 @@ class OrderDetails(EventViewMixin, OrderDetailMixin, CartMixin, TicketPageMixin,
buttons.append({
'text': provider.download_button_text or 'Download',
'multi_text': provider.multi_download_button_text or 'Download',
+ 'long_text': provider.long_download_button_text or 'Download',
'icon': provider.download_button_icon or 'fa-download',
'identifier': provider.identifier,
'multi': provider.multi_download_enabled,
@@ -176,6 +177,7 @@ class OrderDetails(EventViewMixin, OrderDetailMixin, CartMixin, TicketPageMixin,
queryset=self.order.positions.prefetch_related('issued_gift_cards').select_related('tax_rule'),
order=self.order
)
+ ctx['tickets_with_download'] = [p for p in ctx['cart']['positions'] if p.generate_ticket]
ctx['can_download_multi'] = any([b['multi'] for b in self.download_buttons]) and (
[p.generate_ticket for p in ctx['cart']['positions']].count(True) > 1
)
@@ -256,6 +258,8 @@ class OrderPositionDetails(EventViewMixin, OrderPositionDetailMixin, CartMixin,
'icon': provider.download_button_icon or 'fa-download',
'identifier': provider.identifier,
'multi': provider.multi_download_enabled,
+ 'multi_text': provider.multi_download_button_text or 'Download',
+ 'long_text': provider.long_download_button_text or 'Download',
'javascript_required': provider.javascript_required
})
return buttons
@@ -271,6 +275,7 @@ class OrderPositionDetails(EventViewMixin, OrderPositionDetailMixin, CartMixin,
),
order=self.order
)
+ ctx['tickets_with_download'] = [p for p in ctx['cart']['positions'] if p.generate_ticket]
return ctx
diff --git a/src/pretix/static/pretixpresale/scss/_event.scss b/src/pretix/static/pretixpresale/scss/_event.scss
index 8ee9c68620..12f406f962 100644
--- a/src/pretix/static/pretixpresale/scss/_event.scss
+++ b/src/pretix/static/pretixpresale/scss/_event.scss
@@ -227,3 +227,6 @@ h2.subevent-head {
#cancel-fee-custom-link {
margin-bottom: 20px;
}
+.info-download {
+ margin-top: 15px;
+}