From 3459e2ce33be79063ba3893292a5e5b13c85eb30 Mon Sep 17 00:00:00 2001 From: Majid Achhoud Date: Thu, 18 Jun 2026 14:42:45 +0200 Subject: [PATCH 1/4] Add withdrawal form New /withdrawal/ page (EN/DE) modeled on the contact-sales form: posts JSON to /connect/contact/withdrawal with name, email, po_number, product (DESKTOP/ANDROID/IOS/HUB), optional reason, and altcha captcha. Linked from the footer (Support) and as the first card in the /contact/ inquiries section. --- .../contact/3-inquiries/1-withdrawal.de.md | 7 + .../contact/3-inquiries/1-withdrawal.en.md | 7 + .../{1-press.de.md => 2-press.de.md} | 2 +- .../{1-press.en.md => 2-press.en.md} | 2 +- ...{2-enterprise.de.md => 3-enterprise.de.md} | 2 +- ...{2-enterprise.en.md => 3-enterprise.en.md} | 2 +- .../{3-jobs.de.md => 4-jobs.de.md} | 2 +- .../{3-jobs.en.md => 4-jobs.en.md} | 2 +- content/withdrawal.de.html | 5 + content/withdrawal.en.html | 5 + i18n/de.yaml | 38 +++++ i18n/en.yaml | 38 +++++ layouts/partials/footer.html | 3 + layouts/withdrawal/single.html | 148 ++++++++++++++++++ 14 files changed, 257 insertions(+), 6 deletions(-) create mode 100644 content/contact/3-inquiries/1-withdrawal.de.md create mode 100644 content/contact/3-inquiries/1-withdrawal.en.md rename content/contact/3-inquiries/{1-press.de.md => 2-press.de.md} (95%) rename content/contact/3-inquiries/{1-press.en.md => 2-press.en.md} (95%) rename content/contact/3-inquiries/{2-enterprise.de.md => 3-enterprise.de.md} (95%) rename content/contact/3-inquiries/{2-enterprise.en.md => 3-enterprise.en.md} (95%) rename content/contact/3-inquiries/{3-jobs.de.md => 4-jobs.de.md} (96%) rename content/contact/3-inquiries/{3-jobs.en.md => 4-jobs.en.md} (96%) create mode 100644 content/withdrawal.de.html create mode 100644 content/withdrawal.en.html create mode 100644 layouts/withdrawal/single.html diff --git a/content/contact/3-inquiries/1-withdrawal.de.md b/content/contact/3-inquiries/1-withdrawal.de.md new file mode 100644 index 000000000..a19b92a0a --- /dev/null +++ b/content/contact/3-inquiries/1-withdrawal.de.md @@ -0,0 +1,7 @@ +--- +title: "Widerruf" +faIcon: "fa-solid fa-file-signature" +weight: 1 +--- + +Wenn du Cryptomator gekauft hast und dein Widerrufsrecht ausüben möchtest, nutze bitte unser [Widerrufsformular](/de/withdrawal/). diff --git a/content/contact/3-inquiries/1-withdrawal.en.md b/content/contact/3-inquiries/1-withdrawal.en.md new file mode 100644 index 000000000..231ff5fc3 --- /dev/null +++ b/content/contact/3-inquiries/1-withdrawal.en.md @@ -0,0 +1,7 @@ +--- +title: "Right of Withdrawal" +faIcon: "fa-solid fa-file-signature" +weight: 1 +--- + +If you purchased Cryptomator and wish to exercise your right of withdrawal, please use our [Withdrawal Form](/withdrawal/). diff --git a/content/contact/3-inquiries/1-press.de.md b/content/contact/3-inquiries/2-press.de.md similarity index 95% rename from content/contact/3-inquiries/1-press.de.md rename to content/contact/3-inquiries/2-press.de.md index a99a3edb8..06204f25c 100644 --- a/content/contact/3-inquiries/1-press.de.md +++ b/content/contact/3-inquiries/2-press.de.md @@ -1,7 +1,7 @@ --- title: "Presse" faIcon: "fa-solid fa-newspaper" -weight: 1 +weight: 2 --- Bei pressebezogenen Fragen findest du in unserer Pressemappe einige grundlegende Informationen, Materialien und den richtigen Ansprechpartner. diff --git a/content/contact/3-inquiries/1-press.en.md b/content/contact/3-inquiries/2-press.en.md similarity index 95% rename from content/contact/3-inquiries/1-press.en.md rename to content/contact/3-inquiries/2-press.en.md index 920a33b19..a96f827c3 100644 --- a/content/contact/3-inquiries/1-press.en.md +++ b/content/contact/3-inquiries/2-press.en.md @@ -1,7 +1,7 @@ --- title: "Press" faIcon: "fa-solid fa-newspaper" -weight: 1 +weight: 2 --- For press-related questions check out our Press Kit, which will provide you with some basic information, assets and the right contact person. diff --git a/content/contact/3-inquiries/2-enterprise.de.md b/content/contact/3-inquiries/3-enterprise.de.md similarity index 95% rename from content/contact/3-inquiries/2-enterprise.de.md rename to content/contact/3-inquiries/3-enterprise.de.md index 6259be34e..237771921 100644 --- a/content/contact/3-inquiries/2-enterprise.de.md +++ b/content/contact/3-inquiries/3-enterprise.de.md @@ -1,7 +1,7 @@ --- title: "Enterprise" faIcon: "fa-solid fa-briefcase" -weight: 2 +weight: 3 --- Wir sind offen für Kooperationen und bieten eine Vielzahl von B2B-Dienstleistungen an, darunter auch White-Labeling. diff --git a/content/contact/3-inquiries/2-enterprise.en.md b/content/contact/3-inquiries/3-enterprise.en.md similarity index 95% rename from content/contact/3-inquiries/2-enterprise.en.md rename to content/contact/3-inquiries/3-enterprise.en.md index b21046b13..6e7123b32 100644 --- a/content/contact/3-inquiries/2-enterprise.en.md +++ b/content/contact/3-inquiries/3-enterprise.en.md @@ -1,7 +1,7 @@ --- title: "Enterprise" faIcon: "fa-solid fa-briefcase" -weight: 2 +weight: 3 --- We're open to cooperations and offer a variety of B2B services, including white labeling. diff --git a/content/contact/3-inquiries/3-jobs.de.md b/content/contact/3-inquiries/4-jobs.de.md similarity index 96% rename from content/contact/3-inquiries/3-jobs.de.md rename to content/contact/3-inquiries/4-jobs.de.md index ab360a5f1..5a2d5b695 100644 --- a/content/contact/3-inquiries/3-jobs.de.md +++ b/content/contact/3-inquiries/4-jobs.de.md @@ -1,7 +1,7 @@ --- title: "Jobs" faIcon: "fa-solid fa-user-plus" -weight: 3 +weight: 4 --- Cryptomator wird in erster Linie vom {{< extlink "https://skymatic.de/team/" "Skymatic-Team" >}} gewartet. Wenn du glaubst, dass du zu uns passt, kannst du dich gerne {{< extlink "https://skymatic.de/jobs/" "bei Skymatic bewerben" >}}. diff --git a/content/contact/3-inquiries/3-jobs.en.md b/content/contact/3-inquiries/4-jobs.en.md similarity index 96% rename from content/contact/3-inquiries/3-jobs.en.md rename to content/contact/3-inquiries/4-jobs.en.md index 417a0cfc6..b55cd289b 100644 --- a/content/contact/3-inquiries/3-jobs.en.md +++ b/content/contact/3-inquiries/4-jobs.en.md @@ -1,7 +1,7 @@ --- title: "Jobs" faIcon: "fa-solid fa-user-plus" -weight: 3 +weight: 4 --- Cryptomator is primarily maintained by the {{< extlink "https://skymatic.de/en/team/" "Skymatic Team" >}}. If you think you fit in, feel free to {{< extlink "https://skymatic.de/en/jobs/" "apply to Skymatic" >}}. diff --git a/content/withdrawal.de.html b/content/withdrawal.de.html new file mode 100644 index 000000000..9a9cab39d --- /dev/null +++ b/content/withdrawal.de.html @@ -0,0 +1,5 @@ +--- +title: "Widerrufsformular" +description: "Mit diesem Formular kannst du dein Widerrufsrecht für einen Cryptomator-Kauf ausüben. Gib einfach deinen Namen, deine E-Mail-Adresse und deine Bestellnummer an — um den Rest kümmern wir uns." +type: withdrawal +--- diff --git a/content/withdrawal.en.html b/content/withdrawal.en.html new file mode 100644 index 000000000..b3d096fc8 --- /dev/null +++ b/content/withdrawal.en.html @@ -0,0 +1,5 @@ +--- +title: "Withdrawal Form" +description: "Use this form to exercise your right of withdrawal for a Cryptomator purchase. Just provide your name, email, and order number, and we'll take care of the rest." +type: withdrawal +--- diff --git a/i18n/de.yaml b/i18n/de.yaml index 5a1c9ca17..c535b28f7 100644 --- a/i18n/de.yaml +++ b/i18n/de.yaml @@ -1228,6 +1228,44 @@ - id: contact_sales_step_3_description translation: "Du erhältst innerhalb eines Werktages eine detaillierte Antwort von unserem Team." +# Withdrawal Form +- id: withdrawal_name + translation: "Name" +- id: withdrawal_email + translation: "E-Mail-Adresse" +- id: withdrawal_po_number + translation: "Bestellnummer" +- id: withdrawal_po_number_placeholder + translation: "Die Bestellnummer aus deiner Kaufbestätigung" +- id: withdrawal_product + translation: "Produkt" +- id: withdrawal_product_placeholder + translation: "Bitte wähle ein Produkt" +- id: withdrawal_reason + translation: "Grund (optional)" +- id: withdrawal_reason_placeholder + translation: "Wenn du möchtest, teile uns mit, warum du widerrufst..." +- id: withdrawal_submit + translation: "Widerruf absenden" +- id: withdrawal_success_title + translation: "Widerruf erhalten!" +- id: withdrawal_success_message + translation: "Vielen Dank für deinen Widerruf. Wir bearbeiten die Rückerstattung und bestätigen dir alles per E-Mail." +- id: withdrawal_what_happens_title + translation: "Was passiert als Nächstes?" +- id: withdrawal_step_1_title + translation: "Widerruf erhalten" +- id: withdrawal_step_1_description + translation: "Wir bestätigen den Eingang deines Widerrufs innerhalb weniger Stunden." +- id: withdrawal_step_2_title + translation: "Bestellprüfung" +- id: withdrawal_step_2_description + translation: "Wir gleichen deine Angaben mit deiner Bestellung ab und bearbeiten die Rückerstattung." +- id: withdrawal_step_3_title + translation: "Bestätigung" +- id: withdrawal_step_3_description + translation: "Du erhältst eine E-Mail, die deinen Widerruf und die Rückerstattung bestätigt." + # Partner Form - id: partner_first_name translation: "Vorname" diff --git a/i18n/en.yaml b/i18n/en.yaml index b8955a1d3..a9865d7f7 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -1267,6 +1267,44 @@ - id: contact_sales_step_3_description translation: "Get a detailed, personalized response within one business day." +# Withdrawal Form +- id: withdrawal_name + translation: "Name" +- id: withdrawal_email + translation: "Email Address" +- id: withdrawal_po_number + translation: "Order Number" +- id: withdrawal_po_number_placeholder + translation: "The order number from your purchase confirmation" +- id: withdrawal_product + translation: "Product" +- id: withdrawal_product_placeholder + translation: "Please select a product" +- id: withdrawal_reason + translation: "Reason (optional)" +- id: withdrawal_reason_placeholder + translation: "If you'd like, let us know why you're withdrawing..." +- id: withdrawal_submit + translation: "Submit Withdrawal" +- id: withdrawal_success_title + translation: "Withdrawal Received!" +- id: withdrawal_success_message + translation: "Thanks for reaching out. We'll process the refund and confirm by email." +- id: withdrawal_what_happens_title + translation: "What happens next?" +- id: withdrawal_step_1_title + translation: "Withdrawal received" +- id: withdrawal_step_1_description + translation: "We'll acknowledge receipt of your withdrawal within a few hours." +- id: withdrawal_step_2_title + translation: "Order verification" +- id: withdrawal_step_2_description + translation: "We match your details against your order and process the refund." +- id: withdrawal_step_3_title + translation: "Confirmation" +- id: withdrawal_step_3_description + translation: "You'll receive an email confirming your withdrawal and refund." + # Partner Form - id: partner_first_name translation: "First Name" diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 1e1dc96c1..0a0e10ee2 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -32,6 +32,9 @@

S {{- with .Site.GetPage "/contact" }}
  • {{ .Title }}
  • {{- end }} + {{- with .Site.GetPage "/withdrawal" }} +
  • {{ .Title }}
  • + {{- end }} diff --git a/layouts/withdrawal/single.html b/layouts/withdrawal/single.html new file mode 100644 index 000000000..8d8c4c684 --- /dev/null +++ b/layouts/withdrawal/single.html @@ -0,0 +1,148 @@ +{{ define "preloads" }} + {{ partial "altcha-css.html" . }} +{{ end }} +{{ define "main" }} +
    +
    +

    {{ .Title }}

    +

    {{ .Description }}

    +
    + +
    +
    + +
    +
    +
    + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + +
    +

    + + {{ $challengeUrl := printf "%s/connect/contact/challenge" .Site.Params.apiBaseUrl }} + {{ partial "captcha.html" (dict "challengeUrl" $challengeUrl "captchaPayload" "submitData.captcha" "captchaState" "captchaState") }} +
    +
    +
    +
    + + + +
    + +
    +
    + +

    + {{ i18n "withdrawal_success_title" }} +

    +

    + {{ i18n "withdrawal_success_message" }} +

    +
    +
    +
    +
    +{{ end }} +{{ define "script" }} + {{ if hugo.IsDevelopment }} + {{ $apiFormJs := resources.Get "js/apiform.js" }} + + {{ $altchaJs := resources.Get "js/altcha/altcha.js" }} + + {{ $altchaWorkerJs := resources.Get "js/altcha/worker.js" }} + + {{ else }} + {{ $apiFormJs := resources.Get "js/apiform.js" | minify | fingerprint }} + + {{ $altchaJs := resources.Get "js/altcha/altcha.js" }} + + {{ $altchaWorkerJs := resources.Get "js/altcha/worker.js" }} + + {{ end }} +{{ end }} From 3018ee6f2fcc12246ac731bc91b9f24c79cf8a8b Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Thu, 18 Jun 2026 16:09:22 +0200 Subject: [PATCH 2/4] Minor refactoring --- content/withdrawal.de.html | 4 +-- content/withdrawal.en.html | 4 +-- i18n/de.yaml | 12 --------- i18n/en.yaml | 12 --------- layouts/withdrawal/single.html | 48 +++++++++++----------------------- 5 files changed, 19 insertions(+), 61 deletions(-) diff --git a/content/withdrawal.de.html b/content/withdrawal.de.html index 9a9cab39d..06c1b50d9 100644 --- a/content/withdrawal.de.html +++ b/content/withdrawal.de.html @@ -1,5 +1,5 @@ --- -title: "Widerrufsformular" -description: "Mit diesem Formular kannst du dein Widerrufsrecht für einen Cryptomator-Kauf ausüben. Gib einfach deinen Namen, deine E-Mail-Adresse und deine Bestellnummer an — um den Rest kümmern wir uns." +title: "Widerruf" +description: "Mit diesem Formular kannst du dein Widerrufsrecht für den Kauf eines Produkts der Skymatic GmbH ausüben. Gib einfach deinen Namen, deine E-Mail-Adresse und deine Bestellnummer an — um den Rest kümmern wir uns." type: withdrawal --- diff --git a/content/withdrawal.en.html b/content/withdrawal.en.html index b3d096fc8..dad50a0af 100644 --- a/content/withdrawal.en.html +++ b/content/withdrawal.en.html @@ -1,5 +1,5 @@ --- -title: "Withdrawal Form" -description: "Use this form to exercise your right of withdrawal for a Cryptomator purchase. Just provide your name, email, and order number, and we'll take care of the rest." +title: "Withdrawal" +description: "Use this form to exercise your right of withdrawal for a Skymatic GmbH purchase. Just provide your name, email, and order number, and we'll take care of the rest." type: withdrawal --- diff --git a/i18n/de.yaml b/i18n/de.yaml index c535b28f7..47c980ae1 100644 --- a/i18n/de.yaml +++ b/i18n/de.yaml @@ -1253,18 +1253,6 @@ translation: "Vielen Dank für deinen Widerruf. Wir bearbeiten die Rückerstattung und bestätigen dir alles per E-Mail." - id: withdrawal_what_happens_title translation: "Was passiert als Nächstes?" -- id: withdrawal_step_1_title - translation: "Widerruf erhalten" -- id: withdrawal_step_1_description - translation: "Wir bestätigen den Eingang deines Widerrufs innerhalb weniger Stunden." -- id: withdrawal_step_2_title - translation: "Bestellprüfung" -- id: withdrawal_step_2_description - translation: "Wir gleichen deine Angaben mit deiner Bestellung ab und bearbeiten die Rückerstattung." -- id: withdrawal_step_3_title - translation: "Bestätigung" -- id: withdrawal_step_3_description - translation: "Du erhältst eine E-Mail, die deinen Widerruf und die Rückerstattung bestätigt." # Partner Form - id: partner_first_name diff --git a/i18n/en.yaml b/i18n/en.yaml index a9865d7f7..4ec5a095d 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -1292,18 +1292,6 @@ translation: "Thanks for reaching out. We'll process the refund and confirm by email." - id: withdrawal_what_happens_title translation: "What happens next?" -- id: withdrawal_step_1_title - translation: "Withdrawal received" -- id: withdrawal_step_1_description - translation: "We'll acknowledge receipt of your withdrawal within a few hours." -- id: withdrawal_step_2_title - translation: "Order verification" -- id: withdrawal_step_2_description - translation: "We match your details against your order and process the refund." -- id: withdrawal_step_3_title - translation: "Confirmation" -- id: withdrawal_step_3_description - translation: "You'll receive an email confirming your withdrawal and refund." # Partner Form - id: partner_first_name diff --git a/layouts/withdrawal/single.html b/layouts/withdrawal/single.html index 8d8c4c684..86f353863 100644 --- a/layouts/withdrawal/single.html +++ b/layouts/withdrawal/single.html @@ -76,40 +76,22 @@

    {{ .Title }}

    From 45090c3542f55ae72ace40e939aa47e9acbc7717 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Thu, 18 Jun 2026 16:30:54 +0200 Subject: [PATCH 3/4] Adjust wording --- i18n/de.yaml | 2 +- i18n/en.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/de.yaml b/i18n/de.yaml index 47c980ae1..5f7e66ba8 100644 --- a/i18n/de.yaml +++ b/i18n/de.yaml @@ -1250,7 +1250,7 @@ - id: withdrawal_success_title translation: "Widerruf erhalten!" - id: withdrawal_success_message - translation: "Vielen Dank für deinen Widerruf. Wir bearbeiten die Rückerstattung und bestätigen dir alles per E-Mail." + translation: "Vielen Dank für deinen Widerruf. Wir bearbeiten deine Rückerstattungsanfrage und bestätigen dir den Eingang per E-Mail." - id: withdrawal_what_happens_title translation: "Was passiert als Nächstes?" diff --git a/i18n/en.yaml b/i18n/en.yaml index 4ec5a095d..982bc818d 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -1289,7 +1289,7 @@ - id: withdrawal_success_title translation: "Withdrawal Received!" - id: withdrawal_success_message - translation: "Thanks for reaching out. We'll process the refund and confirm by email." + translation: "Thanks for reaching out. We'll process the refund requst and confirm the request by email." - id: withdrawal_what_happens_title translation: "What happens next?" From d899332b6bca94e5c1f03b1529c336598660f9fb Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Thu, 18 Jun 2026 16:36:12 +0200 Subject: [PATCH 4/4] Adjust further wording --- content/contact/3-inquiries/1-withdrawal.de.md | 2 +- content/contact/3-inquiries/1-withdrawal.en.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/contact/3-inquiries/1-withdrawal.de.md b/content/contact/3-inquiries/1-withdrawal.de.md index a19b92a0a..682f7a108 100644 --- a/content/contact/3-inquiries/1-withdrawal.de.md +++ b/content/contact/3-inquiries/1-withdrawal.de.md @@ -4,4 +4,4 @@ faIcon: "fa-solid fa-file-signature" weight: 1 --- -Wenn du Cryptomator gekauft hast und dein Widerrufsrecht ausüben möchtest, nutze bitte unser [Widerrufsformular](/de/withdrawal/). +Wenn du ein Produkt der Skymatic GmbH gekauft hast und dein Widerrufsrecht ausüben möchtest, nutze bitte unser [Widerrufsformular](/de/withdrawal/). diff --git a/content/contact/3-inquiries/1-withdrawal.en.md b/content/contact/3-inquiries/1-withdrawal.en.md index 231ff5fc3..9c3eb7ab5 100644 --- a/content/contact/3-inquiries/1-withdrawal.en.md +++ b/content/contact/3-inquiries/1-withdrawal.en.md @@ -4,4 +4,4 @@ faIcon: "fa-solid fa-file-signature" weight: 1 --- -If you purchased Cryptomator and wish to exercise your right of withdrawal, please use our [Withdrawal Form](/withdrawal/). +If you have purchased a Skymatic GmbH product and wish to exercise your right of withdrawal, please use our [Withdrawal Form](/withdrawal/). \ No newline at end of file