Skip to content

Commit 9b9fc35

Browse files
committed
Merge branch 'develop' into feature/post-quantum-roadmap
2 parents fafd197 + 202c78f commit 9b9fc35

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+2095
-240
lines changed

assets/css/custom.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ textarea:read-only {
200200
[id]::before {
201201
content: '';
202202
display: block;
203-
height: 138px;
204-
margin-top: -138px;
203+
height: 96px;
204+
margin-top: -96px;
205205
visibility: hidden;
206206
}

assets/js/hubcontact.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
"use strict";
2+
3+
const REQUEST_HUB_CONTACT_URL = STORE_API_URL + '/hub/request-contact';
4+
5+
class HubContact {
6+
7+
constructor(form, feedbackData, submitData) {
8+
this._form = form;
9+
this._feedbackData = feedbackData;
10+
this._submitData = submitData;
11+
}
12+
13+
request() {
14+
if (!$(this._form)[0].checkValidity()) {
15+
$(this._form).find(':input').addClass('show-invalid');
16+
this._feedbackData.errorMessage = 'Please fill in all required fields.';
17+
return;
18+
}
19+
20+
this._feedbackData.success = false;
21+
this._feedbackData.inProgress = true;
22+
this._feedbackData.errorMessage = '';
23+
24+
$.ajax({
25+
url: REQUEST_HUB_CONTACT_URL,
26+
type: 'POST',
27+
data: this._submitData
28+
}).done(_ => {
29+
this.onRequestSucceeded();
30+
if (this._submitData.acceptNewsletter) {
31+
subscribeToNewsletter(this._submitData.email, 7);
32+
}
33+
}).fail(xhr => {
34+
this.onRequestFailed(xhr.responseJSON?.message || 'Request failed.');
35+
});
36+
}
37+
38+
onRequestFailed(error) {
39+
this._feedbackData.success = false;
40+
this._feedbackData.inProgress = false;
41+
this._feedbackData.errorMessage = error;
42+
}
43+
44+
onRequestSucceeded() {
45+
this._feedbackData.success = true;
46+
this._feedbackData.inProgress = false;
47+
this._feedbackData.errorMessage = '';
48+
window.scrollTo(0, 0);
49+
}
50+
51+
}

assets/js/hubmanaged.js

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,19 @@ class HubManaged {
2727
data: {
2828
email: this._submitData.email
2929
}
30-
}).done(_ => {
30+
}).done(response => {
31+
if (response.isCompanyEmail && response.domainWithoutSuffix) {
32+
this._submitData.subdomain = response.domainWithoutSuffix;
33+
} else {
34+
this._submitData.subdomain = '';
35+
}
3136
this.onValidationSucceeded();
3237
}).fail(xhr => {
3338
this.onValidationFailed(xhr.responseJSON?.message || 'Validating email failed.');
3439
});
3540
}
3641

37-
validateTeamAndSubdomain() {
42+
validateSubdomain() {
3843
if (!$(this._form)[0].checkValidity()) {
3944
$(this._form).find(':input').addClass('show-invalid');
4045
this._feedbackData.errorMessage = 'Please fill in all required fields.';
@@ -47,13 +52,12 @@ class HubManaged {
4752
url: VALIDATE_HUB_MANAGED_REQUEST_URL,
4853
type: 'GET',
4954
data: {
50-
team: this._submitData.team,
5155
subdomain: this._submitData.subdomain
5256
}
5357
}).done(_ => {
5458
this.onValidationSucceeded();
5559
}).fail(xhr => {
56-
this.onValidationFailed(xhr.responseJSON?.message || 'Validating team and subdomain failed.');
60+
this.onValidationFailed(xhr.responseJSON?.message || 'Validating subdomain failed.');
5761
});
5862
}
5963

@@ -129,30 +133,6 @@ class HubManaged {
129133

130134
}
131135

132-
function teamToSubdomain(team) {
133-
// Convert to lowercase
134-
let subdomain = team.toLowerCase();
135-
// Replace German specific characters
136-
subdomain = subdomain.replace(/ß/g, "ss").replace(/ä/g, "ae").replace(/ö/g, "oe").replace(/ü/g, "ue");
137-
// Normalize to decompose accented characters and remove diacritics
138-
subdomain = subdomain.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
139-
// Replace any whitespace (including spaces, tabs, etc.) with a hyphen
140-
subdomain = subdomain.replace(/\s+/g, "-");
141-
// Remove any characters that are not letters, numbers, or hyphens
142-
subdomain = subdomain.replace(/[^a-z0-9-]/g, "");
143-
// Replace multiple hyphens with a single hyphen
144-
subdomain = subdomain.replace(/-+/g, "-");
145-
// Remove any leading or trailing hyphens
146-
subdomain = subdomain.replace(/^-+/, "").replace(/-+$/, "");
147-
// Cap the subdomain at 63 characters
148-
if (subdomain.length > 63) {
149-
subdomain = subdomain.slice(0, 63);
150-
// Remove any trailing hyphen after truncation
151-
subdomain = subdomain.replace(/-+$/, "");
152-
}
153-
return subdomain;
154-
}
155-
156136
function subdomainToURL(subdomain) {
157137
return `https://${subdomain}.cryptomator.cloud`;
158138
}

content/become-a-partner.de.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: "Partner werden"
3+
description: "Tritt unserem Partnerprogramm bei und hilf Organisationen dabei, ihre Daten mit den Verschlüsselungslösungen von Cryptomator Hub zu sichern. Lass dein Geschäft mit unserer bewährten Technologie wachsen."
4+
type: "become-a-partner"
5+
---

content/become-a-partner.en.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: "Become a Partner"
3+
description: "Join our partner program and help organizations secure their data with Cryptomator's encryption solutions. Grow your business with our proven technology."
4+
type: "become-a-partner"
5+
---

content/book-a-demo.de.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: "Demo buchen"
3+
description: "Vereinbare jetzt eine Live-Demo und erfahre, wie Cryptomator Hub deine sensiblen Daten schützt, volle Kontrolle über Cloud-Zugriffe schafft und sichere Zusammenarbeit ermöglicht."
4+
type: book-a-demo
5+
---

content/book-a-demo.en.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: "Book a Demo"
3+
description: "Schedule a personalized demo of Cryptomator Hub to see how it can secure your team's data and streamline your cloud storage workflows."
4+
type: book-a-demo
5+
---

content/contact-sales.de.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: "Vertrieb kontaktieren"
3+
description: "Du hast Fragen zu Preisen, technischer Integration oder Compliance? Unser Vertriebsteam berät dich gerne persönlich und findet gemeinsam mit dir die passende Lösung für dein Unternehmen."
4+
type: contact-sales
5+
---

content/contact-sales.en.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: "Contact Sales"
3+
description: "Get in touch with our sales team to discuss pricing, technical integration, compliance requirements, or any other questions about Cryptomator Hub."
4+
type: contact-sales
5+
---

content/coop/myleny.de.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
title: "myLeny inklusive LenyMobile"
3+
prio: 80
4+
img: /img/coop/myleny.png
5+
img2x: /img/coop/[email protected]
6+
description: "myLeny®, das sichere Ökosystem für deine Digitale Selbstbestimmung aus der Schweiz; standortunabhängig, sicher, anonym. Inklusive Cryptomator auf allen LenyMobile®."
7+
ctalink: https://lenotra.com
8+
ctatext: "Weitere Infos unter lenotra.com"
9+
---
10+
11+
<figure class="text-center">
12+
<img class="inline-block rounded-sm" src="/de/img/coop/myleny-banner.png" srcset="/de/img/coop/myleny-banner.png 1x, /de/img/coop/[email protected] 2x" alt="myLeny Konzept"/>
13+
</figure>
14+
15+
## myLeny® – sicher, einfach, funktional, kompatibel
16+
17+
Digitale Selbstbestimmung ist dein Recht. Ein achtsamer Umgang mit deinen Daten im Alltag jedoch auch eine grosse Herausforderung.
18+
Das myLeny Komplettpaket unterstützt dich mit LenyMobile und NesCHt dabei optimal ohne dich einzuschränken.
19+
20+
## LenyMobile® – dein Begleiter im digitalen Alltag
21+
22+
Das handliche Mobiltelefon mit LenyMobile OS – 100% Android-kompatibel, aktuell, sicher und vollständig für dich eingerichtet.
23+
Basierend auf qualitativ hochwertigen, markt-aktuellen Geräten von weltweit führenden Herstellern.
24+
25+
## NesCHt® – das sichere Zuhause für deine Daten
26+
27+
Dein Datenspeicher in hoch-sicheren, ISO-zertifizierten Rechenzentren in der Schweiz zur Lagerung und Bearbeitung deiner Daten – synchron mit deinem LenyMobile, Tablet, PC oder Mac.
28+
29+
## myLeny® und Cryptomator
30+
31+
Lizenziert und vorinstalliert auf jedem LenyMobile – Zusätzlich zum gehärteten LenyMobile OS ergänzt Cryptomator in idealer Weise den hochsicheren Austausch mit anderen Plattformen via NesCHt.

0 commit comments

Comments
 (0)