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 %} -

+ {% if cart.positions|length > 1 and can_download_multi %} +

+ {% trans "Download all tickets at once:" %} + {% for b in download_buttons %} + {% if b.multi %} + + {% csrf_token %} + +

+ {% endif %} + {% endfor %} +

+ {% elif tickets_with_download|length == 1 %} +

+ {% for b in download_buttons %} +

{% csrf_token %}
- {% 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; +}