diff --git a/src/pretix/base/pdf.py b/src/pretix/base/pdf.py index e4b8159c0..d8caaa34a 100644 --- a/src/pretix/base/pdf.py +++ b/src/pretix/base/pdf.py @@ -77,6 +77,7 @@ from reportlab.platypus import Paragraph from pretix.base.i18n import language from pretix.base.models import Checkin, Event, Order, OrderPosition, Question +from pretix.base.services.placeholders import PlaceholderContext from pretix.base.settings import PERSON_NAME_SCHEMES from pretix.base.signals import layout_image_variables, layout_text_variables from pretix.base.templatetags.money import money_filter @@ -401,11 +402,7 @@ DEFAULT_VARIABLES = OrderedDict(( "editor_sample": _("Event organizer info text"), "evaluate": lambda op, order, ev: str(order.event.settings.organizer_info_text) }), - ("event_info_text", { - "label": _("Event info text"), - "editor_sample": _("Event info text"), - "evaluate": lambda op, order, ev: str(order.event.settings.event_info_text) - }), + ("event_info_text", {}), # Placeholder to "reserve" position, defined later in `get_variables` ("now_date", { "label": _("Printing date"), "editor_sample": _("2017-05-31"), @@ -670,6 +667,14 @@ def get_images(event): def get_variables(event): v = copy.copy(DEFAULT_VARIABLES) + templating_context = PlaceholderContext(event=event) + v['event_info_text'] = { + "label": _("Event info text"), + "editor_sample": _("Event info text"), + "evaluate": lambda op, order, ev: + templating_context.format(str(order.event.settings.event_info_text)) + } + scheme = PERSON_NAME_SCHEMES[event.settings.name_scheme] concatenation_for_salutation = scheme.get("concatenation_for_salutation", scheme["concatenation"]) diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index ca5a34d4c..588ee56a8 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -671,6 +671,11 @@ class EventSettingsForm(EventSettingsValidationMixin, FormPlaceholderMixin, Sett base_context = { 'frontpage_text': ['event'], + 'presale_has_ended_text': ['event'], + 'voucher_explanation_text': ['event'], + 'banner_text': ['event'], + 'banner_text_bottom': ['event'], + 'event_info_text': ['event'], } def _resolve_virtual_keys_input(self, data, prefix=''): diff --git a/src/pretix/presale/context.py b/src/pretix/presale/context.py index 203361ac2..0a7683c09 100644 --- a/src/pretix/presale/context.py +++ b/src/pretix/presale/context.py @@ -46,6 +46,7 @@ from pretix.helpers.i18n import ( ) from ..base.i18n import get_language_without_region +from ..base.services.placeholders import PlaceholderContext from ..multidomain.urlreverse import eventreverse from .cookies import get_cookie_providers from .signals import ( @@ -87,6 +88,12 @@ def _default_context(request): f'{request.event.cache.get_or_set("css_version", default=lambda: int(time.time()))}') ctx['css_theme'] = eventreverse(request.event, "presale:event.theme.css") + "?version=" + theme_css_version + templating_context = PlaceholderContext(event=request.event) + ctx['event_texts'] = { + field: templating_context.format(str(request.event.settings.get(field))) + for field in ('banner_text', 'banner_text_bottom', 'voucher_explanation_text') + } + elif hasattr(request, 'organizer') and request.organizer: pretix_settings = request.organizer.settings diff --git a/src/pretix/presale/templates/pretixpresale/event/base.html b/src/pretix/presale/templates/pretixpresale/event/base.html index 2948ab649..b3f566c83 100644 --- a/src/pretix/presale/templates/pretixpresale/event/base.html +++ b/src/pretix/presale/templates/pretixpresale/event/base.html @@ -184,18 +184,18 @@ {% endfor %} {% endif %} - {% if request.event.settings.banner_text %} + {% if event_texts.banner_text %}
- {{ request.event.settings.banner_text|rich_text }} + {{ event_texts.banner_text|rich_text }}
{% endif %} {% block content %} {% endblock %} {% endblock %} {% block footer %} - {% if request.event.settings.banner_text_bottom %} + {% if event_texts.banner_text_bottom %}
- {{ request.event.settings.banner_text_bottom|rich_text }} + {{ event_texts.banner_text_bottom|rich_text }}
{% endif %} {% if request.event.testmode %} diff --git a/src/pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html b/src/pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html index 0834b3076..aed7ef8a6 100644 --- a/src/pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html +++ b/src/pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html @@ -1,9 +1,9 @@ {% load i18n %} {% load eventurl %} {% load rich_text %} -{% if event.settings.voucher_explanation_text %} +{% if event_texts.voucher_explanation_text %}
- {{ event.settings.voucher_explanation_text|rich_text }} + {{ event_texts.voucher_explanation_text|rich_text }}
{% endif %}
diff --git a/src/pretix/presale/templates/pretixpresale/event/index.html b/src/pretix/presale/templates/pretixpresale/event/index.html index 81c394a85..347540bab 100644 --- a/src/pretix/presale/templates/pretixpresale/event/index.html +++ b/src/pretix/presale/templates/pretixpresale/event/index.html @@ -151,8 +151,8 @@ {% if not ev.presale_is_running %}
{% if ev.presale_has_ended %} - {% if event.settings.presale_has_ended_text %} - {{ event.settings.presale_has_ended_text|rich_text }} + {% if presale_has_ended_text %} + {{ presale_has_ended_text|rich_text }} {% else %} {% blocktrans trimmed %} The booking period for this event is over. diff --git a/src/pretix/presale/views/event.py b/src/pretix/presale/views/event.py index 355beed2f..ff4597193 100644 --- a/src/pretix/presale/views/event.py +++ b/src/pretix/presale/views/event.py @@ -634,6 +634,10 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView): context['has_addon_choices'] = any(cp.has_addon_choices for cp in get_cart(self.request)) templating_context = PlaceholderContext(event_or_subevent=self.subevent or self.request.event, event=self.request.event) + + for field in ('presale_has_ended_text',): + context[field] = templating_context.format(str(self.request.event.settings[field])) + if self.subevent: context['frontpage_text'] = templating_context.format(str(self.subevent.frontpage_text)) else: diff --git a/src/pretix/presale/views/widget.py b/src/pretix/presale/views/widget.py index 325e2b585..498ec30c3 100644 --- a/src/pretix/presale/views/widget.py +++ b/src/pretix/presale/views/widget.py @@ -834,7 +834,7 @@ class WidgetAPIProductList(EventListMixin, View): data['vouchers_exist'] = False if ev.presale_has_ended: if request.event.settings.presale_has_ended_text: - data['error'] = str(request.event.settings.presale_has_ended_text) + data['error'] = templating_context.format(str(request.event.settings.presale_has_ended_text)) else: data['error'] = gettext('The booking period for this event is over.') elif request.event.settings.presale_start_show_date: