From 12864749f98e41b3f2aa4ff05bd4c8a8ef2f2958 Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Wed, 1 Mar 2023 11:29:56 +0100 Subject: [PATCH] room info: add option to hide qr code or show the submission image --- pretalx_broadcast_tools/forms.py | 26 ++++++++++++++----- .../pretalx_broadcast_tools/room_info.js | 19 +++++++++----- .../pretalx_broadcast_tools/orga.html | 1 + pretalx_broadcast_tools/views.py | 5 ++-- 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/pretalx_broadcast_tools/forms.py b/pretalx_broadcast_tools/forms.py index c849f46..80d7e45 100644 --- a/pretalx_broadcast_tools/forms.py +++ b/pretalx_broadcast_tools/forms.py @@ -1,4 +1,4 @@ -from django.forms import BooleanField, CharField, Textarea +from django.forms import BooleanField, CharField, Textarea, ChoiceField from django.utils.translation import gettext_lazy as _ from hierarkey.forms import HierarkeyForm from i18nfield.forms import I18nFormField, I18nFormMixin, I18nTextInput @@ -22,14 +22,26 @@ 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." + + broadcast_tools_room_info_lower_content = ChoiceField( + choices=( + ("", "No lower content"), + ("public_qr", "QR code linking to the 'talk detail' page"), + ( + "feedback_qr", + "QR code linking to the feedback page of the currently running talk", + ), + ("talk_image", "session image uploaded by the speaker(s)"), ), - label=_("Show feedback QR code instead of talk detail QR code"), - required=False, + help_text=_( + "If a talk is running, the room info page will always show " + "the talk title and the list of speakers. The content below " + "is configurable here." + ), + label=_("lower content"), + required=True, ) + 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 185aeed..ab4ab84 100644 --- a/pretalx_broadcast_tools/static/pretalx_broadcast_tools/room_info.js +++ b/pretalx_broadcast_tools/static/pretalx_broadcast_tools/room_info.js @@ -13,15 +13,14 @@ function update_room_info() { } if (!room_name) { - $('#broadcast_tools_room_info_title').text(event_info['name']); - $('#broadcast_tools_room_info_speaker').text('Backstage'); + $('#broadcast_tools_room_info_roomname').text(event_info['name']); + $('#broadcast_tools_room_info_title').text('Backstage'); + $('#broadcast_tools_room_info_speaker').text(''); $('#broadcast_tools_room_info_qr').text(''); $('#broadcast_tools_room_info').css('background-color', event_info['color']); return } - $('#broadcast_tools_room_info_roomname').text(room_name); - if (!schedule) { $('#broadcast_tools_room_info_speaker').text('Waiting for schedule ...') return @@ -43,17 +42,23 @@ function update_room_info() { current_talk = get_current_talk(15); if (current_talk) { - if (event_info['room-info']['qr_type'] == 'feedback') { + if (event_info['room-info']['lower_info'] == 'feedback_qr') { qr_info = 'Feedback QR Code

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

'; - } else { + } else if (event_info['room-info']['lower_info'] == 'public_qr') { qr_info = 'QR Code linking to URL below

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

'; + } else if (event_info['room-info']['lower_info'] == 'talk_image' && current_talk['image_url']) { + qr_info = 'Talk image'; + } else { + qr_info = ''; } + $('#broadcast_tools_room_info_roomname').text(room_name); $('#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(qr_info); } else { - $('#broadcast_tools_room_info_title').text(event_info['name']); + $('#broadcast_tools_room_info_roomname').text(event_info['name']); + $('#broadcast_tools_room_info_title').text(room_name); $('#broadcast_tools_room_info_speaker').text(''); $('#broadcast_tools_room_info_qr').text(''); } diff --git a/pretalx_broadcast_tools/templates/pretalx_broadcast_tools/orga.html b/pretalx_broadcast_tools/templates/pretalx_broadcast_tools/orga.html index 7c1fb9b..f0475f2 100644 --- a/pretalx_broadcast_tools/templates/pretalx_broadcast_tools/orga.html +++ b/pretalx_broadcast_tools/templates/pretalx_broadcast_tools/orga.html @@ -64,6 +64,7 @@ {% translate "Room info" %} {% bootstrap_field form.broadcast_tools_room_info_feedback_instead_of_public layout='event' %} + {% bootstrap_field form.broadcast_tools_room_info_lower_content layout='event' %}
diff --git a/pretalx_broadcast_tools/views.py b/pretalx_broadcast_tools/views.py index d2065d4..1ac84fc 100644 --- a/pretalx_broadcast_tools/views.py +++ b/pretalx_broadcast_tools/views.py @@ -75,9 +75,7 @@ class BroadcastToolsEventInfoView(View): self.request.event.settings.broadcast_tools_lower_thirds_no_talk_info ), "room-info": { - "qr_type": "feedback" - if self.request.event.settings.broadcast_tools_room_info_feedback_instead_of_public - else "public", + "lower_info": self.request.event.settings.broadcast_tools_room_info_lower_content or '', }, "slug": self.request.event.slug, }, @@ -149,6 +147,7 @@ class BroadcastToolsScheduleView(EventPermissionRequired, ScheduleMixin, View): else None, "room": room["name"].localize(schedule.event.locale), "infoline": infoline.format(**placeholders(schedule, talk)), + "image_url": talk.submission.image_url, "urls": { "feedback": "{}{}".format( schedule.event.custom_domain or settings.SITE_URL,