From 1417fafcd3db5d2353530fed0429e32881400e6f Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Fri, 13 Mar 2026 13:41:49 -0400 Subject: [PATCH] feat(launcher): auto-apply kiosk URL params on Launcher link for poster sessions When on a Poster Session in Pres Mgmt, the Launcher nav link now appends ?iframe=true&launcher_menu=hide so the recipient opens a clean kiosk view without the site header or left session panel. - ae_comp__events_menu_nav: add events__launcher_extra_params prop; update launcher_sess_qry to merge extra params after session_id - session_page_menu: derive is_poster from type_code and pass the kiosk params into the Launcher link --- .../session/[session_id]/session_page_menu.svelte | 4 ++++ src/routes/events/ae_comp__events_menu_nav.svelte | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/session_page_menu.svelte b/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/session_page_menu.svelte index eb590223..3e9224a1 100644 --- a/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/session_page_menu.svelte +++ b/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/session_page_menu.svelte @@ -36,6 +36,9 @@ let show_modal = $state(false); let show_help = $state(false); + // Detect poster sessions so the Launcher link auto-applies kiosk URL params + let is_poster = $derived($lq__event_session_obj?.type_code === 'poster'); + async function on_toggle(field: string, new_val: boolean) { await api.update_ae_obj_v3({ api_cfg: $ae_api, @@ -91,6 +94,7 @@ events__launcher_session_id={$lq__event_session_obj?.event_session_id && $ae_loc.administrator_access ? $lq__event_session_obj?.event_session_id : null} + events__launcher_extra_params={is_poster ? 'iframe=true&launcher_menu=hide' : ''} events__location_id={$lq__event_session_obj?.event_location_id && $ae_loc.trusted_access ? $lq__event_session_obj?.event_location_id : null} diff --git a/src/routes/events/ae_comp__events_menu_nav.svelte b/src/routes/events/ae_comp__events_menu_nav.svelte index 4d6faa1c..3d98a6b5 100644 --- a/src/routes/events/ae_comp__events_menu_nav.svelte +++ b/src/routes/events/ae_comp__events_menu_nav.svelte @@ -23,6 +23,7 @@ events__launcher_session_id?: null | string; // event_session_id to pass to launcher as ?session_id= events__session_id?: null | string; // event_session_id — used for "Back to Session" link only events__session_search?: boolean; // event_id + events__launcher_extra_params?: string; // extra URL params appended to the launcher link (e.g. 'iframe=true&launcher_menu=hide') } let { @@ -31,6 +32,7 @@ ae_core = false, events__launcher_id = null, events__launcher_session_id = null, + events__launcher_extra_params = '', events__location_id = null, events__locations = false, events__reports = false, @@ -41,7 +43,12 @@ // Build launcher URL segments separately so the href template stays simple (avoids ternaries in href attr) let launcher_loc_seg = $derived(events__launcher_id ? `/${events__launcher_id}` : ''); - let launcher_sess_qry = $derived(events__launcher_session_id ? `?session_id=${events__launcher_session_id}` : ''); + let launcher_sess_qry = $derived.by(() => { + const parts: string[] = []; + if (events__launcher_session_id) parts.push(`session_id=${events__launcher_session_id}`); + if (events__launcher_extra_params) parts.push(events__launcher_extra_params); + return parts.length ? `?${parts.join('&')}` : ''; + });