1dadc6f6c4
Deploy PROD / deploy (push) Successful in 20s
Uczestnik przy dostawcy z wlasnymi pokojami (LiveKit, Jitsi, Daily, Zoom)
nie mial ZADNEJ drogi na sale:
- mail potwierdzajacy prowadzil na /w/{slug}, czyli formularz zapisu,
- strona zgloszenia renderowala przycisk "Dolacz do spotkania" wylacznie
gdy `webinars.join_url` nie bylo puste, a przy LiveKit pokoj jest
wewnetrzny i to pole zostaje NULL,
- mail obiecywal przy tym wprost "link do spotkania znajdziesz na stronie
swojego zgloszenia".
Adres sklada teraz `VideoProviderFactory.meetingUrlFor`, bo tylko backend
zna token zapisu. Tryb NONE oddaje `join_url` wklejony przez organizatora,
kazdy inny dostawca wlasna trase /spotkanie/{token}. Ta sama wartosc zasila
widok zgloszenia i szablony maili, wiec nie ma dwoch miejsc do poprawiania.
Szablon potwierdzenia dostaje przycisk wejscia jako pierwszy, nad odnosnikiem
do strony webinaru, oraz zdanie o tym, ze sala otwiera sie przed startem:
bez niego uczestnik klikajacy tydzien wczesniej widzi odliczanie i nie wie,
czy tak ma byc. Szablon przypomnienia mial obsluge `joinUrl` od poczatku,
wiec naprawia sie sam.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
142 lines
7.3 KiB
HTML
142 lines
7.3 KiB
HTML
<!doctype html>
|
|
<html xmlns:th="http://www.thymeleaf.org" lang="pl">
|
|
<head>
|
|
<meta charset="UTF-8"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
|
<title th:text="${webinarTitle}">Potwierdzenie zapisu</title>
|
|
</head>
|
|
<!--
|
|
Uklad tabelami i style w atrybutach, bo klienci pocztowi nie obsluguja
|
|
arkuszy zewnetrznych ani wiekszosci nowoczesnego CSS.
|
|
Tresc jest widoczna dla uczestnika, wiec pisana z polskimi znakami.
|
|
-->
|
|
<body style="margin:0; padding:0; background-color:#f1f5f9; font-family:'Segoe UI',Tahoma,Arial,sans-serif; color:#0f172a;">
|
|
|
|
<!-- podglad w skrzynce odbiorczej, niewidoczny w tresci wiadomosci -->
|
|
<div style="display:none; max-height:0; overflow:hidden; opacity:0;">
|
|
Potwierdzamy zapis na webinar. W załączniku znajdziesz zaproszenie do kalendarza.
|
|
</div>
|
|
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"
|
|
style="background-color:#f1f5f9; padding:24px 12px;">
|
|
<tr>
|
|
<td align="center">
|
|
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"
|
|
style="max-width:560px; background-color:#ffffff; border-radius:12px; overflow:hidden;">
|
|
|
|
<!-- pasek marki -->
|
|
<tr>
|
|
<td style="background-color:#1d4ed8; padding:16px 32px;">
|
|
<span style="color:#ffffff; font-size:15px; font-weight:600;"
|
|
th:text="${brandName}">Marka</span>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td style="padding:32px;">
|
|
|
|
<h1 style="margin:0 0 20px; font-size:24px; line-height:1.3; font-weight:700; color:#0f172a;">
|
|
Potwierdzenie zapisu
|
|
</h1>
|
|
|
|
<p style="margin:0 0 12px; font-size:16px; line-height:1.6; color:#334155;">
|
|
Dzień dobry <span th:text="${firstName}">Imię</span>,
|
|
</p>
|
|
<p style="margin:0 0 24px; font-size:16px; line-height:1.6; color:#334155;">
|
|
potwierdzamy Twój zapis na webinar
|
|
<strong style="color:#0f172a;" th:text="${webinarTitle}">Tytuł webinaru</strong>.
|
|
</p>
|
|
|
|
<!-- termin -->
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"
|
|
style="background-color:#f8fafc; border-left:3px solid #1d4ed8; border-radius:6px; margin-bottom:28px;">
|
|
<tr>
|
|
<td style="padding:16px 20px;">
|
|
<p style="margin:0 0 4px; font-size:12px; font-weight:600; letter-spacing:0.06em; color:#64748b;">
|
|
TERMIN
|
|
</p>
|
|
<p style="margin:0; font-size:17px; font-weight:600; color:#0f172a;"
|
|
th:text="${startsAt}">termin</p>
|
|
<p style="margin:4px 0 0; font-size:14px; color:#64748b;">
|
|
strefa czasowa <span th:text="${timezone}">Europe/Warsaw</span>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<!--
|
|
Link do sali. Pierwszy, bo to po niego uczestnik wraca do tej
|
|
wiadomosci w dniu szkolenia. Przycisk w tabeli, bo Outlook
|
|
ignoruje marginesy na znaczniku a.
|
|
-->
|
|
<table th:if="${joinUrl}" role="presentation" cellpadding="0" cellspacing="0" border="0"
|
|
style="margin:0 0 12px;">
|
|
<tr>
|
|
<td style="background-color:#1d4ed8; border-radius:8px;">
|
|
<a th:href="${joinUrl}"
|
|
style="display:inline-block; padding:14px 28px; font-size:16px; font-weight:600; color:#ffffff; text-decoration:none;">
|
|
Dołącz do spotkania
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<!--
|
|
Sala otwiera sie dopiero przed startem. Bez tego zdania uczestnik
|
|
klikajacy tydzien wczesniej widzi odliczanie i nie wie, czy to
|
|
tak ma byc, czy cos jest zepsute.
|
|
-->
|
|
<p th:if="${joinUrl}"
|
|
style="margin:0 0 28px; font-size:14px; line-height:1.6; color:#64748b;">
|
|
Spotkanie otworzy się na krótko przed rozpoczęciem. Jeśli otworzysz
|
|
link wcześniej, zobaczysz odliczanie do startu.
|
|
</p>
|
|
|
|
<!-- przycisk w tabeli, bo Outlook ignoruje marginesy na znaczniku a -->
|
|
<table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin:0 0 28px;">
|
|
<tr>
|
|
<td style="background-color:#ffffff; border:1px solid #cbd5e1; border-radius:8px;">
|
|
<a th:href="${webinarUrl}"
|
|
style="display:inline-block; padding:13px 27px; font-size:16px; font-weight:600; color:#1d4ed8; text-decoration:none;">
|
|
Otwórz stronę webinaru
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<!-- zalacznik kalendarza -->
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"
|
|
style="background-color:#eff6ff; border-radius:8px;">
|
|
<tr>
|
|
<td style="padding:14px 18px; font-size:14px; line-height:1.6; color:#1e40af;">
|
|
Do wiadomości dołączyliśmy plik <strong>invite.ics</strong>.
|
|
Otwórz go, aby dodać wydarzenie do swojego kalendarza.
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
|
|
<!-- stopka -->
|
|
<tr>
|
|
<td style="border-top:1px solid #e2e8f0; padding:20px 32px; background-color:#f8fafc;">
|
|
<p style="margin:0; font-size:13px; line-height:1.6; color:#64748b;">
|
|
Swój zapis, link do spotkania i rezygnację znajdziesz na
|
|
<a th:href="${cancelUrl}" style="color:#1d4ed8;">stronie swojego zgłoszenia</a>.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p style="max-width:560px; margin:16px auto 0; font-size:12px; color:#94a3b8; text-align:center;">
|
|
Wiadomość wysłana automatycznie przez <span th:text="${brandName}">markę</span>.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</body>
|
|
</html>
|