From bb55df2723431a94f37e87c218faa5236da7677a Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Tue, 28 Feb 2023 19:10:18 +0100 Subject: [PATCH] add option to switch between feedback and public qr code --- pretalx_broadcast_tools/forms.py | 8 ++++++++ .../pretalx_broadcast_tools/room_info.js | 8 +++++++- .../pretalx_broadcast_tools/orga.html | 6 ++++++ pretalx_broadcast_tools/views.py | 18 ++++++++++++++++-- 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/pretalx_broadcast_tools/forms.py b/pretalx_broadcast_tools/forms.py index db3cd00..c849f46 100644 --- a/pretalx_broadcast_tools/forms.py +++ b/pretalx_broadcast_tools/forms.py @@ -22,6 +22,14 @@ class BroadcastToolsSettingsForm(I18nFormMixin, HierarkeyForm): required=False, widget=I18nTextInput, ) + broadcast_tools_room_info_feedback_instead_of_public = BooleanField( + help_text=_( + "If checked, the qr code shown on the 'room info' page will " + "link to the feedback page instead of the talk detail page." + ), + label=_("Show feedback QR code instead of talk detail QR code"), + required=False, + ) broadcast_tools_pdf_show_internal_notes = BooleanField( help_text=_( "If checked, the value of the 'internal notes' field in a " diff --git a/pretalx_broadcast_tools/static/pretalx_broadcast_tools/room_info.js b/pretalx_broadcast_tools/static/pretalx_broadcast_tools/room_info.js index fd00913..625a364 100644 --- a/pretalx_broadcast_tools/static/pretalx_broadcast_tools/room_info.js +++ b/pretalx_broadcast_tools/static/pretalx_broadcast_tools/room_info.js @@ -41,9 +41,15 @@ function update_room_info() { current_talk = get_current_talk(15); if (current_talk) { + if (event_info['room-info']['qr_type'] == 'feedback') { + qr_info = 'Feedback QR Code

Leave Feedback by scanning the code or visiting ' + current_talk['urls']['feedback'] + '

'; + } else { + qr_info = 'QR Code linking to URL below

' + current_talk['urls']['public'] + '

'; + } + $('#broadcast_tools_room_info_title').text(current_talk['title']); $('#broadcast_tools_room_info_speaker').text(current_talk['persons'].join(', ')); - $('#broadcast_tools_room_info_qr').html('Feedback QR Code

Leave Feedback by scanning the code or visiting ' + current_talk['urls']['feedback'] + '

'); + $('#broadcast_tools_room_info_qr').html(qr_info); } else { $('#broadcast_tools_room_info_title').text(event_info['name']); $('#broadcast_tools_room_info_speaker').text(room_name); diff --git a/pretalx_broadcast_tools/templates/pretalx_broadcast_tools/orga.html b/pretalx_broadcast_tools/templates/pretalx_broadcast_tools/orga.html index c75523e..7c1fb9b 100644 --- a/pretalx_broadcast_tools/templates/pretalx_broadcast_tools/orga.html +++ b/pretalx_broadcast_tools/templates/pretalx_broadcast_tools/orga.html @@ -59,6 +59,12 @@ hide itself.

+
+ + {% translate "Room info" %} + + {% bootstrap_field form.broadcast_tools_room_info_feedback_instead_of_public layout='event' %} +
{% translate "PDF export" %} diff --git a/pretalx_broadcast_tools/views.py b/pretalx_broadcast_tools/views.py index f39fd54..766d8b4 100644 --- a/pretalx_broadcast_tools/views.py +++ b/pretalx_broadcast_tools/views.py @@ -69,12 +69,15 @@ class BroadcastToolsEventInfoView(View): color = self.request.event.primary_color or "#3aa57c" return JsonResponse( { - "slug": self.request.event.slug, + "color": color, "name": str(self.request.event.name), "no_talk": str( self.request.event.settings.broadcast_tools_lower_thirds_no_talk_info ), - "color": color, + "room-info": { + "qr_type": "feedback" if self.request.event.settings.broadcast_tools_room_info_feedback_instead_of_public else "public", + }, + "slug": self.request.event.slug, }, ) @@ -156,6 +159,17 @@ class BroadcastToolsScheduleView(EventPermissionRequired, ScheduleMixin, View): "talk": talk.submission.id, }, ), + "public": "{}{}".format( + schedule.event.custom_domain or settings.SITE_URL, + talk.submission.urls.public, + ), + "public_qr": reverse( + "plugins:pretalx_broadcast_tools:public_qr_id", + kwargs={ + "event": schedule.event.slug, + "talk": talk.submission.id, + }, + ), }, } for day in schedule.data