From 25ba2f1145e9bb8b45bd94128bfc5acab6ada421 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Thu, 27 Jun 2024 10:46:26 +0200 Subject: [PATCH] Add signal seatingframe_html_head (#4270) --- src/pretix/presale/signals.py | 11 +++++++++++ .../templates/pretixpresale/event/seatingplan.html | 2 +- src/pretix/presale/views/event.py | 7 ++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/pretix/presale/signals.py b/src/pretix/presale/signals.py index bc1af19fe4..db24b8b0d3 100644 --- a/src/pretix/presale/signals.py +++ b/src/pretix/presale/signals.py @@ -80,6 +80,17 @@ of every page in the frontend. You will get the request as the keyword argument As with all plugin signals, the ``sender`` keyword argument will contain the event. """ +seatingframe_html_head = EventPluginSignal() +""" +Arguments: ``request`` + +This signal allows you to put code inside the HTML ```` tag +of the seatingframe page in the frontend. You will get the request as the keyword argument +``request`` and are expected to return plain HTML. + +As with all plugin signals, the ``sender`` keyword argument will contain the event. +""" + html_page_header = EventPluginSignal() """ Arguments: ``request`` diff --git a/src/pretix/presale/templates/pretixpresale/event/seatingplan.html b/src/pretix/presale/templates/pretixpresale/event/seatingplan.html index d3c9e672c6..23fa799d56 100644 --- a/src/pretix/presale/templates/pretixpresale/event/seatingplan.html +++ b/src/pretix/presale/templates/pretixpresale/event/seatingplan.html @@ -13,7 +13,7 @@ {% if css_theme %} {% endif %} - {{ html_head|safe }} + {{ seatingframe_html_head|safe }} {% include "pretixpresale/fragment_js.html" %} diff --git a/src/pretix/presale/views/event.py b/src/pretix/presale/views/event.py index 6038377aff..c1b56c5255 100644 --- a/src/pretix/presale/views/event.py +++ b/src/pretix/presale/views/event.py @@ -82,7 +82,7 @@ from pretix.helpers.formats.en.formats import ( from pretix.helpers.http import redirect_to_url from pretix.multidomain.urlreverse import eventreverse from pretix.presale.ical import get_public_ical -from pretix.presale.signals import item_description +from pretix.presale.signals import item_description, seatingframe_html_head from pretix.presale.views.organizer import ( EventListMixin, add_subevents_for_days, days_for_template, filter_qs_by_attr, has_before_after, weeks_for_template, @@ -849,6 +849,11 @@ class SeatingPlanView(EventViewMixin, TemplateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) + + _html_head = [] + for receiver, response in seatingframe_html_head.send(self.request.event, request=self.request): + _html_head.append(response) + context['seatingframe_html_head'] = "".join(_html_head) context['subevent'] = self.subevent context['cart_redirect'] = eventreverse(self.request.event, 'presale:event.checkout.start', kwargs={'cart_namespace': kwargs.get('cart_namespace') or ''})