diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index c7f7e2c1f..276c1667d 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -101,6 +101,10 @@ DEFAULTS = { 'default': 'False', 'type': bool }, + 'presale_has_ended_text': { + 'default': '', + 'type': LazyI18nString + }, 'payment_explanation': { 'default': '', 'type': LazyI18nString diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index 264dfa41c..6169368dc 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -1049,6 +1049,14 @@ class DisplaySettingsForm(SettingsForm): required=False, widget=I18nTextarea ) + presale_has_ended_text = I18nFormField( + label=_("End of presale text"), + required=False, + widget=I18nTextarea, + widget_kwargs={'attrs': {'rows': '2'}}, + help_text=_("This text will be shown above the ticket shop once the designated sales timeframe for this event " + "is over. You can use it to describe other options to get a ticket, such as a box office.") + ) voucher_explanation_text = I18nFormField( label=_("Voucher explanation"), required=False, diff --git a/src/pretix/control/templates/pretixcontrol/event/display.html b/src/pretix/control/templates/pretixcontrol/event/display.html index 09f1ac9b9..ee991b206 100644 --- a/src/pretix/control/templates/pretixcontrol/event/display.html +++ b/src/pretix/control/templates/pretixcontrol/event/display.html @@ -11,6 +11,7 @@ {% trans "Event page" %} {% bootstrap_field form.logo_image layout="control" %} {% bootstrap_field form.frontpage_text layout="control" %} + {% bootstrap_field form.presale_has_ended_text layout="control" %} {% bootstrap_field form.voucher_explanation_text layout="control" %} {% bootstrap_field form.show_variations_expanded layout="control" %} {% bootstrap_field form.meta_noindex layout="control" %} diff --git a/src/pretix/presale/templates/pretixpresale/event/index.html b/src/pretix/presale/templates/pretixpresale/event/index.html index b829ec0b4..210b65587 100644 --- a/src/pretix/presale/templates/pretixpresale/event/index.html +++ b/src/pretix/presale/templates/pretixpresale/event/index.html @@ -110,9 +110,13 @@ {% if not ev.presale_is_running %}
{% if ev.presale_has_ended %} - {% blocktrans trimmed %} - The presale period for this event is over. - {% endblocktrans %} + {% if event.settings.presale_has_ended_text %} + {{ event.settings.presale_has_ended_text|rich_text }} + {% else %} + {% blocktrans trimmed %} + The presale period for this event is over. + {% endblocktrans %} + {% endif %} {% elif event.settings.presale_start_show_date %} {% blocktrans trimmed with date=ev.presale_start|date:"SHORT_DATE_FORMAT" time=ev.presale_start|time:"TIME_FORMAT" %} The presale for this event will start on {{ date }} at {{ time }}. diff --git a/src/pretix/presale/views/widget.py b/src/pretix/presale/views/widget.py index 5c896ea8d..2bf7fd283 100644 --- a/src/pretix/presale/views/widget.py +++ b/src/pretix/presale/views/widget.py @@ -437,7 +437,10 @@ class WidgetAPIProductList(EventListMixin, View): if not ev.presale_is_running: if ev.presale_has_ended: - data['error'] = ugettext('The presale period for this event is over.') + if request.event.settings.presale_has_ended_text: + data['error'] = str(request.event.settings.presale_has_ended_text) + else: + data['error'] = ugettext('The presale period for this event is over.') elif request.event.settings.presale_start_show_date: data['error'] = ugettext('The presale for this event will start on %(date)s at %(time)s.') % { 'date': date_format(ev.presale_start.astimezone(request.event.timezone), "SHORT_DATE_FORMAT"),