Skip to content

Commit 52fddf4

Browse files
committed
add webinar registration page with banner
1 parent 0ac4079 commit 52fddf4

File tree

7 files changed

+263
-1
lines changed

7 files changed

+263
-1
lines changed

content/webinar.de.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: "Webinar: Cryptomator für Unternehmen"
3+
description: "Nimm an unserem kostenlosen Live-Webinar teil und erfahre, wie du die Cloud-Daten deines Teams mit Zero-Knowledge-Verschlüsselung schützt."
4+
type: webinar
5+
---

content/webinar.en.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: "Webinar: Cryptomator for Companies"
3+
description: "Join our free live webinar and learn how to protect your team's cloud data with zero-knowledge encryption."
4+
type: webinar
5+
---

i18n/de.yaml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,6 +1289,48 @@
12891289
- id: success_story_read_link
12901290
translation: "Erfolgsgeschichte lesen"
12911291

1292+
# Live Webinar Banner
1293+
- id: webinar_banner
1294+
translation: "Live-Webinar – Cryptomator für Unternehmen&nbsp; <a class=\"whitespace-nowrap font-bold\" href=\"/de/webinar/\">Jetzt anmelden&nbsp;<span aria-hidden=\"true\">&rarr;</span></a>"
1295+
1296+
# Webinar Form
1297+
- id: webinar_first_name
1298+
translation: "Vorname"
1299+
- id: webinar_last_name
1300+
translation: "Nachname"
1301+
- id: webinar_email
1302+
translation: "E-Mail-Adresse"
1303+
- id: webinar_company
1304+
translation: "Unternehmen"
1305+
- id: webinar_submit
1306+
translation: "Jetzt anmelden"
1307+
- id: webinar_success_title
1308+
translation: "Du bist angemeldet!"
1309+
- id: webinar_success_message
1310+
translation: "Vielen Dank für deine Anmeldung. Du erhältst in Kürze eine Bestätigungs-E-Mail mit den Webinar-Details."
1311+
- id: webinar_details_title
1312+
translation: "Webinar-Details"
1313+
- id: webinar_date_label
1314+
translation: "Datum"
1315+
- id: webinar_date_value
1316+
translation: "15. März 2026"
1317+
- id: webinar_time_label
1318+
translation: "Uhrzeit"
1319+
- id: webinar_time_value
1320+
translation: "14:00 Uhr MEZ"
1321+
- id: webinar_language_label
1322+
translation: "Sprache"
1323+
- id: webinar_language_value
1324+
translation: "Englisch"
1325+
- id: webinar_learn_title
1326+
translation: "Das lernst du"
1327+
- id: webinar_learn_1
1328+
translation: "Cloud-Speicher für dein Unternehmen verschlüsseln"
1329+
- id: webinar_learn_2
1330+
translation: "Cryptomator Hub einrichten und verwalten"
1331+
- id: webinar_learn_3
1332+
translation: "Best Practices für den unternehmensweiten Einsatz"
1333+
12921334
# Sale
12931335
- id: nav_promotion
12941336
translation: ":snowflake: Winter-Sale: 50 %* Rabatt auf Cryptomator – den&nbsp;ganzen&nbsp;Dezember!&nbsp;<a class=\"whitespace-nowrap font-bold\" href=\"/de/blog/2025/12/01/winter-sale/\">Mehr erfahren&nbsp;<span aria-hidden=\"true\">&rarr;</span></a>"

i18n/en.yaml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,6 +1289,48 @@
12891289
- id: success_story_read_link
12901290
translation: "Read success story"
12911291

1292+
# Live Webinar Banner
1293+
- id: webinar_banner
1294+
translation: "Live Webinar – Cryptomator for Companies&nbsp; <a class=\"whitespace-nowrap font-bold\" href=\"/webinar/\">Sign up&nbsp;<span aria-hidden=\"true\">&rarr;</span></a>"
1295+
1296+
# Webinar Form
1297+
- id: webinar_first_name
1298+
translation: "First Name"
1299+
- id: webinar_last_name
1300+
translation: "Last Name"
1301+
- id: webinar_email
1302+
translation: "Email Address"
1303+
- id: webinar_company
1304+
translation: "Company"
1305+
- id: webinar_submit
1306+
translation: "Register Now"
1307+
- id: webinar_success_title
1308+
translation: "You're registered!"
1309+
- id: webinar_success_message
1310+
translation: "Thank you for registering. You will receive a confirmation email with the webinar details shortly."
1311+
- id: webinar_details_title
1312+
translation: "Webinar Details"
1313+
- id: webinar_date_label
1314+
translation: "Date"
1315+
- id: webinar_date_value
1316+
translation: "March 15, 2026"
1317+
- id: webinar_time_label
1318+
translation: "Time"
1319+
- id: webinar_time_value
1320+
translation: "2:00 PM CET"
1321+
- id: webinar_language_label
1322+
translation: "Language"
1323+
- id: webinar_language_value
1324+
translation: "English"
1325+
- id: webinar_learn_title
1326+
translation: "What You'll Learn"
1327+
- id: webinar_learn_1
1328+
translation: "Encrypt cloud storage for your company"
1329+
- id: webinar_learn_2
1330+
translation: "Set up and manage Cryptomator Hub"
1331+
- id: webinar_learn_3
1332+
translation: "Best practices for company-wide deployment"
1333+
12921334
# Sale
12931335
- id: nav_promotion
12941336
translation: ":snowflake: Winter Sale: 50%* Off Cryptomator – All&nbsp;December&nbsp;Long!&nbsp;<a class=\"whitespace-nowrap font-bold\" href=\"/blog/2025/12/01/winter-sale/\">Learn More&nbsp;<span aria-hidden=\"true\">&rarr;</span></a>"

layouts/_default/baseof.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
</head>
6666
<body x-data="{ isNavOpen: false, globalData: { githubStargazers: null, mastodonFollowers: null } }" x-init="determineGlobalData('{{ .Site.Language.Lang }}', globalData)" :class="isNavOpen && 'overflow-hidden'" class="bg-dark font-body text-gray-900">
6767
{{ partial "nav.html" . }}
68-
{{- $topPadding := cond .IsHome "" "pt-12" -}}
68+
{{- $topPadding := cond .IsHome "" "pt-24 md:pt-18" -}}
6969
<div class="bg-gray-100 min-h-[80vh] {{ $topPadding }}">
7070
<!-- Code that all your templates share, like a header -->
7171
{{ block "main" . }}

layouts/partials/nav.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
{{- $backgroundColor := cond .IsHome "bg-dark" "bg-white" -}}
55
{{- $currentRelPermalink := .RelPermalink -}}
66
<nav class="w-full max-h-screen {{ $textColor }} fixed {{ $backgroundColor }} shadow-sm z-50">
7+
<div class="w-full bg-primary text-center text-sm text-white p-0.5">
8+
<p>{{ i18n "webinar_banner" | safeHTML }}</p>
9+
</div>
710
<div class="flex justify-between items-stretch w-full lg:px-8">
811
<!-- Regular Navigation -->
912
<div class="flex items-stretch">

layouts/webinar/single.html

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
{{ define "preloads" }}
2+
{{ partial "altcha-css.html" . }}
3+
{{ end }}
4+
{{ define "main" }}
5+
<section x-data="{feedbackData: {success: false, inProgress: false, errorMessage: ''}, submitData: {firstName: '', lastName: '', email: '', company: '', captcha: null, acceptNewsletter: false, formType: 'webinar'}, acceptTerms: false, hubContact: null, captchaState: null}" x-init="hubContact = new HubContact($refs.form, feedbackData, submitData)" class="container py-12">
6+
<header class="mb-6">
7+
<h1 class="font-h1 mb-8">{{ .Title }}</h1>
8+
<p class="lead">{{ .Description }}</p>
9+
</header>
10+
11+
<form x-ref="form" @submit.prevent="hubContact.request(); $refs.captcha.reset()">
12+
<div x-show="!feedbackData.success" class="grid grid-cols-1 md:grid-cols-3 gap-6 items-start">
13+
<!-- Left Side - Registration Form -->
14+
<section class="white-box md:col-span-2">
15+
<div class="px-4 py-5 md:p-6">
16+
<div class="grid grid-cols-2 gap-6">
17+
<!-- First Name -->
18+
<div class="col-span-2 md:col-span-1">
19+
<label for="firstName" class="block text-sm font-medium text-gray-700 mb-2">
20+
{{ i18n "webinar_first_name" }} <span class="text-red-500" aria-label="required">*</span>
21+
</label>
22+
<input type="text" id="firstName" name="firstName" x-model="submitData.firstName" class="block input-box w-full" maxlength="100" required aria-required="true" @blur="$el.classList.add('show-invalid')">
23+
</div>
24+
25+
<!-- Last Name -->
26+
<div class="col-span-2 md:col-span-1">
27+
<label for="lastName" class="block text-sm font-medium text-gray-700 mb-2">
28+
{{ i18n "webinar_last_name" }} <span class="text-red-500" aria-label="required">*</span>
29+
</label>
30+
<input type="text" id="lastName" name="lastName" x-model="submitData.lastName" class="block input-box w-full" maxlength="100" required aria-required="true" @blur="$el.classList.add('show-invalid')">
31+
</div>
32+
33+
<!-- Company -->
34+
<div class="col-span-2">
35+
<label for="company" class="block text-sm font-medium text-gray-700 mb-2">
36+
{{ i18n "webinar_company" }} <span class="text-red-500" aria-label="required">*</span>
37+
</label>
38+
<input type="text" id="company" name="company" x-model="submitData.company" class="block input-box w-full" maxlength="200" required aria-required="true" @blur="$el.classList.add('show-invalid')">
39+
</div>
40+
41+
<!-- Email -->
42+
<div class="col-span-2">
43+
<label for="email" class="block text-sm font-medium text-gray-700 mb-2">
44+
{{ i18n "webinar_email" }} <span class="text-red-500" aria-label="required">*</span>
45+
</label>
46+
<input type="email" id="email" name="email" x-model="submitData.email" class="block input-box w-full" required aria-required="true" @blur="$el.classList.add('show-invalid')">
47+
</div>
48+
49+
<div class="col-span-2">
50+
<!-- Terms & Privacy Acceptance -->
51+
<p class="font-p text-sm mb-2">
52+
{{ partial "checkbox.html" (dict "context" . "alpineVariable" "acceptTerms" "label" (i18n "accept_hub_managed_terms_and_privacy" | safeHTML)) }}
53+
</p>
54+
55+
<!-- Optional Newsletter -->
56+
<p class="font-p text-sm mb-2">
57+
{{ partial "checkbox.html" (dict "context" . "alpineVariable" "submitData.acceptNewsletter" "label" (i18n "accept_hub_newsletter_optional")) }}
58+
</p>
59+
</div>
60+
61+
<div class="col-span-2">
62+
<p :class="{'hidden': !feedbackData.errorMessage}" class="text-sm text-red-600 mb-2" x-text="feedbackData.errorMessage"></p>
63+
<button :disabled="feedbackData.inProgress || !acceptTerms || captchaState == 'verifying'" type="submit" class="btn btn-primary w-full md:w-64" data-umami-event="webinar-form" x-cloak>
64+
<i :class="{'fa-paper-plane': !feedbackData.inProgress, 'fa-spinner fa-spin': feedbackData.inProgress}" class="fa-solid" aria-hidden="true"></i>
65+
{{ i18n "webinar_submit" }}
66+
</button>
67+
{{ $challengeUrl := printf "%s/connect/contact/challenge" .Site.Params.apiBaseUrl }}
68+
{{ partial "captcha.html" (dict "challengeUrl" $challengeUrl "captchaPayload" "submitData.captcha" "captchaState" "captchaState") }}
69+
</div>
70+
</div>
71+
</div>
72+
</section>
73+
74+
<!-- Sidebar -->
75+
<aside class="white-box md:col-span-1">
76+
<div class="px-4 py-5 md:p-6">
77+
<div class="space-y-6">
78+
<div>
79+
<h3 class="font-h3 mb-4">{{ i18n "webinar_details_title" }}</h3>
80+
81+
<ul class="space-y-4">
82+
<li class="flex items-start">
83+
<i class="fa-solid fa-calendar text-primary mr-3 mt-1"></i>
84+
<div>
85+
<div class="font-medium text-gray-900">{{ i18n "webinar_date_label" }}</div>
86+
<p class="text-sm text-gray-600">{{ i18n "webinar_date_value" }}</p>
87+
</div>
88+
</li>
89+
90+
<li class="flex items-start">
91+
<i class="fa-solid fa-clock text-primary mr-3 mt-1"></i>
92+
<div>
93+
<div class="font-medium text-gray-900">{{ i18n "webinar_time_label" }}</div>
94+
<p class="text-sm text-gray-600">{{ i18n "webinar_time_value" }}</p>
95+
</div>
96+
</li>
97+
98+
<li class="flex items-start">
99+
<i class="fa-solid fa-globe text-primary mr-3 mt-1"></i>
100+
<div>
101+
<div class="font-medium text-gray-900">{{ i18n "webinar_language_label" }}</div>
102+
<p class="text-sm text-gray-600">{{ i18n "webinar_language_value" }}</p>
103+
</div>
104+
</li>
105+
</ul>
106+
</div>
107+
108+
<!-- Divider -->
109+
<hr class="border-gray-200">
110+
111+
<!-- What You'll Learn -->
112+
<div>
113+
<h3 class="font-h3 mb-4">{{ i18n "webinar_learn_title" }}</h3>
114+
115+
<ul class="space-y-3">
116+
<li class="flex items-start">
117+
<i class="fa-solid fa-check text-primary mr-3 mt-1"></i>
118+
<span class="text-sm text-gray-600">{{ i18n "webinar_learn_1" }}</span>
119+
</li>
120+
<li class="flex items-start">
121+
<i class="fa-solid fa-check text-primary mr-3 mt-1"></i>
122+
<span class="text-sm text-gray-600">{{ i18n "webinar_learn_2" }}</span>
123+
</li>
124+
<li class="flex items-start">
125+
<i class="fa-solid fa-check text-primary mr-3 mt-1"></i>
126+
<span class="text-sm text-gray-600">{{ i18n "webinar_learn_3" }}</span>
127+
</li>
128+
</ul>
129+
</div>
130+
</div>
131+
</div>
132+
</aside>
133+
</div>
134+
135+
<section x-show="feedbackData.success" class="white-box" x-cloak>
136+
<div class="flex flex-col items-center justify-center gap-4 text-center md:min-h-110 px-4 py-5 md:p-6">
137+
<i class="fa-solid fa-check-circle text-7xl text-secondary"></i>
138+
<h3 class="font-h3">
139+
{{ i18n "webinar_success_title" }}
140+
</h3>
141+
<p class="font-p">
142+
{{ i18n "webinar_success_message" }}
143+
</p>
144+
</div>
145+
</section>
146+
</form>
147+
</section>
148+
{{ end }}
149+
{{ define "script" }}
150+
{{ if hugo.IsDevelopment }}
151+
{{ $hubContactJs := resources.Get "js/hubcontact.js" }}
152+
<script type="text/javascript" src="{{ $hubContactJs.RelPermalink }}" defer></script>
153+
{{ $altchaJs := resources.Get "js/altcha/altcha.js" }}
154+
<script type="module" src="{{ $altchaJs.RelPermalink }}" defer></script>
155+
{{ $altchaWorkerJs := resources.Get "js/altcha/worker.js" }}
156+
<script type="module" src="{{ $altchaWorkerJs.RelPermalink }}" defer></script>
157+
{{ else }}
158+
{{ $hubContactJs := resources.Get "js/hubcontact.js" | minify | fingerprint }}
159+
<script type="text/javascript" src="{{ $hubContactJs.RelPermalink }}" integrity="{{ $hubContactJs.Data.Integrity }}" defer></script>
160+
{{ $altchaJs := resources.Get "js/altcha/altcha.js" }}
161+
<script type="module" src="{{ $altchaJs.RelPermalink }}" integrity="{{ $altchaJs.Data.Integrity }}" defer></script>
162+
{{ $altchaWorkerJs := resources.Get "js/altcha/worker.js" }}
163+
<script type="module" src="{{ $altchaWorkerJs.RelPermalink }}" integrity="{{ $altchaWorkerJs.Data.Integrity }}" defer></script>
164+
{{ end }}
165+
{{ end }}

0 commit comments

Comments
 (0)