Files
isaaccladandCursor 14e7ae9557
Deploy Ladill Meet / deploy (push) Successful in 49s
Replace native dialogs with app modals for Events link and unlink.
Link opens an in-page modal on conference and webinar show pages; unlink uses the shared confirm-dialog component.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 22:39:02 +00:00

145 lines
7.5 KiB
PHP

@php
use App\Support\EventsSourceLink;
$eventsUrls = EventsSourceLink::urls($room);
$isLinked = EventsSourceLink::isLinked($room);
$eventTitle = EventsSourceLink::eventTitle($room);
$eventsConfigured = EventsSourceLink::isApiConfigured();
$createEventUrl = EventsSourceLink::createEventUrl($room);
$kind = $room->isConference() ? 'conference' : 'webinar';
$expectedType = $room->isConference() ? 'town_hall' : 'webinar';
$linkableEvents = $linkableEvents ?? [];
$canManageEvents = $canManageEvents ?? false;
$unlinkModalName = 'events-unlink-'.$room->uuid;
$linkModalName = 'events-link-'.$room->uuid;
@endphp
<div class="mt-6 rounded-2xl border {{ $isLinked ? 'border-indigo-200 bg-indigo-50/40' : 'border-amber-200 bg-amber-50/50' }} p-6">
<div class="flex flex-wrap items-start justify-between gap-3">
<div>
<h2 class="text-sm font-medium text-slate-900">Ladill Events</h2>
@if ($isLinked && $eventTitle)
<p class="mt-1 text-sm text-slate-600">Linked to <span class="font-medium">{{ $eventTitle }}</span></p>
@elseif ($isLinked)
<p class="mt-1 text-sm text-slate-600">Linked to event #{{ EventsSourceLink::eventId($room) }}</p>
@else
<p class="mt-1 text-sm text-slate-600">
Registration, invitations, speakers, and QR codes for this {{ $kind }} are managed in Ladill Events.
Link a virtual or hybrid event to enable attendee registration.
</p>
@endif
</div>
@if ($isLinked && $canManageEvents)
<x-confirm-dialog
:name="$unlinkModalName"
title="Remove Events link?"
message="Registration settings stay in Events but this room will no longer show as linked."
:action="route('meet.events.link.destroy', $room)"
method="DELETE"
confirm-label="Unlink"
>
<x-slot:trigger>
<button type="button" class="text-xs font-medium text-slate-500 hover:text-slate-700">Unlink</button>
</x-slot:trigger>
</x-confirm-dialog>
@endif
</div>
@if (! $isLinked && ! $eventsConfigured)
<div class="mt-4 rounded-lg border border-amber-300/80 bg-amber-100/60 px-4 py-3 text-sm text-amber-950">
<p class="font-medium">Events linking is not configured on this Meet instance.</p>
<p class="mt-1 text-xs leading-relaxed text-amber-900/90">
Set <span class="font-mono">MEET_API_KEY_EVENTS</span> in Meet and the matching
<span class="font-mono">EVENTS_API_KEY_MEET</span> in Events so Meet can list and link your events.
You can still create an event in Events using the button below.
</p>
</div>
@endif
@if ($isLinked)
<div class="mt-4 grid gap-2 sm:grid-cols-2">
@if ($eventsUrls['registration'])
<div class="rounded-lg border border-white/80 bg-white p-3">
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Registration page</p>
<div class="mt-2 flex gap-2">
<input type="text" readonly value="{{ $eventsUrls['registration'] }}" class="min-w-0 flex-1 rounded border-slate-200 bg-slate-50 text-xs font-mono">
<x-copy-button :text="$eventsUrls['registration']" class="btn-secondary btn-secondary-sm shrink-0" />
</div>
</div>
@endif
@if ($eventsUrls['admin'])
<a href="{{ $eventsUrls['admin'] }}" target="_blank" rel="noopener" class="rounded-lg border border-white/80 bg-white p-3 text-sm font-medium text-indigo-700 hover:bg-indigo-50">
Attendees & check-in
</a>
@endif
@if ($eventsUrls['edit'])
<a href="{{ $eventsUrls['edit'] }}" target="_blank" rel="noopener" class="rounded-lg border border-white/80 bg-white p-3 text-sm font-medium text-indigo-700 hover:bg-indigo-50">
Event settings (tickets, branding)
</a>
@endif
@if ($eventsUrls['comms'])
<a href="{{ $eventsUrls['comms'] }}" target="_blank" rel="noopener" class="rounded-lg border border-white/80 bg-white p-3 text-sm font-medium text-indigo-700 hover:bg-indigo-50">
Bulk invitations & comms
</a>
@endif
@if ($eventsUrls['qr'])
<a href="{{ $eventsUrls['qr'] }}" target="_blank" rel="noopener" class="rounded-lg border border-white/80 bg-white p-3 text-sm font-medium text-indigo-700 hover:bg-indigo-50">
Event QR code
</a>
@endif
@if ($eventsUrls['badges'])
<a href="{{ $eventsUrls['badges'] }}" target="_blank" rel="noopener" class="rounded-lg border border-white/80 bg-white p-3 text-sm font-medium text-indigo-700 hover:bg-indigo-50">
Badges & printing
</a>
@endif
</div>
<p class="mt-3 text-xs text-slate-500">Programme speakers and panelists are configured on the event programme in Events and sync to this session when linked.</p>
@else
<div class="mt-4 flex flex-wrap gap-3">
@if ($eventsConfigured && $canManageEvents)
<button type="button"
@click="$dispatch('open-modal', {{ Js::from($linkModalName) }})"
class="btn-primary btn-primary-sm">
Link to Ladill Events
</button>
@elseif ($eventsConfigured)
<span class="btn-primary btn-primary-sm cursor-not-allowed opacity-50" title="You need manage permission to link events">Link to Ladill Events</span>
@else
<span class="btn-primary btn-primary-sm cursor-not-allowed opacity-50" title="Configure MEET_API_KEY_EVENTS to enable linking">Link to Ladill Events</span>
@endif
<a href="{{ $createEventUrl }}" target="_blank" rel="noopener" class="btn-secondary btn-secondary-sm">Create event in Events</a>
</div>
@endif
</div>
@if (! $isLinked && $eventsConfigured && $canManageEvents)
@php
$openLinkModal = session('open_events_link_modal')
|| $errors->hasAny(['events', 'event_id', 'virtual_session_id']);
@endphp
<x-modal :name="$linkModalName" maxWidth="lg" :show="$openLinkModal">
<div class="px-5 pb-6 pt-2 sm:px-6 sm:pb-6 sm:pt-4">
<h2 class="text-lg font-semibold text-slate-900">Link to Ladill Events</h2>
<p class="mt-1 text-sm text-slate-500">
Choose a virtual or hybrid event. Registration, bulk invitations, speakers, and QR codes will be managed in Events.
</p>
@if ($errors->has('events'))
<div class="mt-4 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700">
{{ $errors->first('events') }}
</div>
@endif
<div class="mt-5">
@include('meet.partials.events-link-form', [
'room' => $room,
'events' => $linkableEvents,
'expectedType' => $expectedType,
'submitLabel' => 'Link event',
'submitClass' => 'btn-primary btn-primary-sm',
])
</div>
</div>
</x-modal>
@endif