Skip to content

Commit d8ca561

Browse files
committed
Refactor pricing page into unified layout with toggle bar
1 parent 6c675af commit d8ca561

7 files changed

Lines changed: 490 additions & 516 deletions

File tree

assets/js/hubpricing.js

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,43 @@ class HubPricing {
66
this._data = data;
77
}
88

9-
loadPrice() {
9+
loadPrices() {
1010
$.ajax({
1111
url: PADDLE_PRICES_URL,
1212
dataType: 'jsonp',
1313
data: {
14-
product_ids: `${PADDLE_HUB_SELF_HOSTED_YEARLY_PLAN_ID},${PADDLE_HUB_MANAGED_YEARLY_PLAN_ID}`
14+
product_ids: `${PADDLE_HUB_SELF_HOSTED_YEARLY_PLAN_ID},${PADDLE_HUB_SELF_HOSTED_MONTHLY_PLAN_ID},${PADDLE_HUB_MANAGED_YEARLY_PLAN_ID},${PADDLE_HUB_MANAGED_MONTHLY_PLAN_ID}`
1515
},
1616
}).done(data => {
17-
this._data.selfHostedMonthlyPrice = {
18-
amount: data.response.products[0].subscription.price.net / 12,
19-
currency: data.response.products[0].currency
20-
};
21-
this._data.managedMonthlyPrice = {
22-
amount: data.response.products[1].subscription.price.net / 12,
23-
currency: data.response.products[1].currency
24-
};
17+
const priceMap = {};
18+
data.response.products.forEach(p => {
19+
priceMap[p.product_id] = {
20+
amount: p.subscription.price.net,
21+
currency: p.currency
22+
};
23+
});
24+
25+
this._assignPrice(priceMap, PADDLE_HUB_SELF_HOSTED_YEARLY_PLAN_ID, 'selfHostedYearlyPrice', 12);
26+
this._assignPrice(priceMap, PADDLE_HUB_SELF_HOSTED_MONTHLY_PLAN_ID, 'selfHostedMonthlyPrice', 1);
27+
this._assignPrice(priceMap, PADDLE_HUB_MANAGED_YEARLY_PLAN_ID, 'managedYearlyPrice', 12);
28+
this._assignPrice(priceMap, PADDLE_HUB_MANAGED_MONTHLY_PLAN_ID, 'managedMonthlyPrice', 1);
29+
30+
const mYearly = priceMap[PADDLE_HUB_MANAGED_YEARLY_PLAN_ID];
31+
const mMonthly = priceMap[PADDLE_HUB_MANAGED_MONTHLY_PLAN_ID];
32+
if (mYearly && mMonthly) {
33+
this._data.savingsPercent = Math.max(0, Math.round((1 - mYearly.amount / (mMonthly.amount * 12)) * 100));
34+
}
2535
});
2636
}
2737

38+
_assignPrice(priceMap, planId, dataKey, divisor) {
39+
const price = priceMap[planId];
40+
if (price) {
41+
this._data[dataKey] = {
42+
amount: price.amount / divisor,
43+
currency: price.currency
44+
};
45+
}
46+
}
47+
2848
}

content/hub-managed-terms.de.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ Gegenstand des Vertrags ist die entgeltliche und zeitlich auf die Dauer des Vert
142142
Unabhängig des Widerrufsrechts ([§ 15](#withdrawal)) steht dem Kunden, d.h. sowohl dem Verbraucher wie auch Unternehmer, das Recht zu, die Software 30 Tage kostenfrei und für beide Seiten unverbindlich zu nutzen (nachfolgend „Testphase“). In der Testphase hat der Kunde insbesondere keinen Anspruch auf uneingeschränkten Funktionsumfang der Software oder Störungsbehebung sowie Vertragsstrafe nach [§ 6](#sla).
143143

144144
## §13 Vergütungs- und Zahlungsbedingungen {#fees}
145-
13.1 Die Preise für die Software und Services kann der Kunde auf der Website ([https://cryptomator.org/de/pricing/#for-teams](https://cryptomator.org/de/pricing/#for-teams)) einsehen. Soweit nicht anders vereinbart (Individualvereinbarung, Rabatt-Aktion o.ä.) hat der Kunde – nach Ablauf der Testphase ([§ 12](#trial)) – monatlich ein Entgelt in Höhe von 12 EUR pro aktiven Nutzer an den Provider zu zahlen.
145+
13.1 Die Preise für die Software und Services kann der Kunde auf der Website ([https://cryptomator.org/de/pricing/](https://cryptomator.org/de/pricing/)) einsehen. Soweit nicht anders vereinbart (Individualvereinbarung, Rabatt-Aktion o.ä.) hat der Kunde – nach Ablauf der Testphase ([§ 12](#trial)) – monatlich ein Entgelt in Höhe von 12 EUR pro aktiven Nutzer an den Provider zu zahlen.
146146

147147
13.2 Vom Provider nach [§ 6 (7)](#sla) verwirkte Vertragsstrafen werden automatisch monatlich mit dem zu zahlenden Entgelt verrechnet.
148148

content/hub-managed-terms.en.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ The subject of the agreement is the provision of "Cryptomator Hub" (hereinafter
146146
Irrespective of the right of withdrawal ([§ 16](#withdrawal)), the Customer, i.e. both the consumer and the entrepreneur, shall be entitled to use the software for 30 days free of charge and without obligation for both parties (hereinafter "test phase"). During the Test Phase, the Customer shall in particular have no claim to unrestricted functional scope of the Software or troubleshooting as well as contractual penalty pursuant to [§ 6](#sla).
147147

148148
## §13 Remuneration and Payment Conditions {#fees}
149-
13.1 The Customer can view the prices for the software and services on the website ([https://cryptomator.org/pricing/#for-teams](https://cryptomator.org/pricing/#for-teams)). Unless otherwise agreed (individual agreement, discount campaign or similar), the Customer shall - after expiry of the test phase ([§ 12](#trial)) - pay a monthly fee of EUR 12 per active user to the Provider.
149+
13.1 The Customer can view the prices for the software and services on the website ([https://cryptomator.org/pricing/](https://cryptomator.org/pricing/)). Unless otherwise agreed (individual agreement, discount campaign or similar), the Customer shall - after expiry of the test phase ([§ 12](#trial)) - pay a monthly fee of EUR 12 per active user to the Provider.
150150

151151
13.2 Contractual penalties forfeited by the Provider pursuant to [§ 6 (7)](#sla) shall be automatically offset against the payable fee on a monthly basis.
152152

i18n/de.yaml

Lines changed: 53 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -863,10 +863,12 @@
863863
# Pricing
864864
- id: pricing_title
865865
translation: "Finde die passende Option für dich"
866-
- id: pricing_individuals
867-
translation: "Für Einzelnutzer"
868-
- id: pricing_teams
869-
translation: "Für Teams"
866+
- id: pricing_billing_monthly
867+
translation: "Monatlich"
868+
- id: pricing_billing_yearly
869+
translation: "Jährlich"
870+
- id: pricing_billing_save
871+
translation: "Spare"
870872
- id: pricing_vat_excluded
871873
translation: "zzgl. USt."
872874
- id: pricing_vat_included
@@ -876,52 +878,39 @@
876878
- id: hub_different_recurring_description
877879
translation: "nach dem ersten Jahr"
878880

879-
- id: pricing_desktop_price_description
880-
translation: "Donationware"
881-
- id: pricing_desktop_cta_1
882-
translation: "Jetzt herunterladen"
883-
- id: pricing_desktop_cta_2
884-
translation: "Unterstütze uns"
885-
- id: pricing_desktop_benefit_1
886-
translation: "Kompatibel mit jedem Cloud-Speicher mit Dateisystem-Synchronisierung, z.B. Dropbox, Google Drive, OneDrive, Nextcloud uvm."
887-
- id: pricing_desktop_benefit_2
888-
translation: "Clientseitige Verschlüsselung für Privatsphäre"
889-
- id: pricing_desktop_benefit_3
890-
translation: "Zugriff über virtuelles Laufwerk"
891-
- id: pricing_desktop_benefit_4
892-
translation: "Keine Accounts, keine Datenweitergabe"
893-
894881
- id: pricing_android_price
895882
translation: "29,99 €"
896-
- id: pricing_android_price_description
897-
translation: "Lebenslange Lizenz"
898-
- id: pricing_android_cta
899-
translation: "Jetzt herunterladen"
900-
- id: pricing_android_benefit_1
901-
translation: "Kompatibel mit Dropbox, Google Drive, OneDrive, pCloud, WebDAV- und S3-basiertem Cloud-Speicher"
902-
- id: pricing_android_benefit_2
903-
translation: "Mobiler Zugriff auf verschlüsselte Dateien"
904-
- id: pricing_android_benefit_3
905-
translation: "Tresore mit biometrischer Auth entsperren"
906-
- id: pricing_android_benefit_4
907-
translation: "Keine Accounts, keine Datenweitergabe"
908-
909-
- id: pricing_ios_free_description
910-
translation: "Lesezugriff"
911883
- id: pricing_ios_price
912884
translation: "29,99 €"
913-
- id: pricing_ios_price_description
914-
translation: "Lebenslange Lizenz"
915-
- id: pricing_ios_cta
885+
886+
- id: pricing_individual_title
887+
translation: "Individuell"
888+
- id: pricing_individual_subtitle
889+
translation: "Verschlüssele deine persönlichen Cloud-Dateien. Open Source und für immer kostenlos."
890+
- id: pricing_individual_price_description
891+
translation: "für den persönlichen Gebrauch"
892+
- id: pricing_individual_cta
916893
translation: "Jetzt herunterladen"
917-
- id: pricing_ios_benefit_1
918-
translation: "Kompatibel mit iCloud Drive, Dropbox, Google Drive, OneDrive, pCloud, Box, WebDAV- und S3-basiertem Cloud-Speicher"
919-
- id: pricing_ios_benefit_2
920-
translation: "Vollständig in die Dateien-App integriert"
921-
- id: pricing_ios_benefit_3
922-
translation: "Tresore mit Face ID / Touch ID entsperren"
923-
- id: pricing_ios_benefit_4
924-
translation: "Keine Accounts, keine Datenweitergabe"
894+
- id: pricing_individual_benefit_1
895+
translation: "Unbegrenzte Tresore"
896+
- id: pricing_individual_benefit_2
897+
translation: "Kompatibel mit jedem Cloud-Speicher"
898+
- id: pricing_individual_benefit_3
899+
translation: "Voller Zugriff über Desktop-App"
900+
- id: pricing_individual_benefit_4
901+
translation: "Community-Support"
902+
- id: pricing_individual_mobile_upgrades_title
903+
translation: "Optionale Upgrades"
904+
- id: pricing_individual_upgrade_dark_mode
905+
translation: "Dark Mode auf dem Desktop"
906+
- id: pricing_supporter_cert_price
907+
translation: "ab 29,99 €"
908+
- id: pricing_individual_mobile_android
909+
translation: "Voller Zugriff auf Android"
910+
- id: pricing_individual_mobile_ios
911+
translation: "Voller Zugriff auf iOS"
912+
- id: pricing_individual_upgrades_note
913+
translation: "Separate Einmalkäufe je Plattform. Preise können je nach Region variieren."
925914

926915
- id: pricing_hub_self_hosted_title
927916
translation: "Self-Hosted"
@@ -935,33 +924,25 @@
935924

936925
- id: pricing_hub_community_title
937926
translation: "Community"
938-
- id: pricing_hub_community_price_description
939-
translation: "zum Loslegen"
927+
- id: pricing_hub_community_subtitle
928+
translation: "Kostenlos und Open Source für kleine Teams. Auf eigener Infrastruktur deployen mit voller Kontrolle über die Daten."
940929
- id: pricing_hub_community_benefit_1
941-
translation: "Unbegrenzte Tresore"
930+
translation: "Inklusive 5 Sitze"
942931
- id: pricing_hub_community_benefit_2
943-
translation: "5 Sitze"
944-
- id: pricing_hub_community_benefit_3
945-
translation: "Voller Zugriff über Desktop-App"
946-
- id: pricing_hub_community_benefit_4
947-
translation: "Lesender Zugriff über Mobile-Apps"
948-
- id: pricing_hub_community_benefit_4_tooltip
949-
translation: "Wenn du die Vollversion der mobilen App freigeschaltet hast, erhältst du vollen Zugriff."
950-
- id: pricing_hub_community_benefit_5
951-
translation: "Community-Support"
932+
translation: "Nur Self-Hosted"
952933

953934
- id: pricing_hub_standard_title
954935
translation: "Standard"
936+
- id: pricing_hub_standard_subtitle
937+
translation: "Für Teams, die skalierbare und sichere Dateiverschlüsselung benötigen."
955938
- id: pricing_hub_standard_price_description
956939
translation: "pro Sitz, pro Monat"
957940
- id: pricing_hub_standard_benefit_1
958-
translation: "Alles in Community"
941+
translation: "Alle Cryptomator-Features, plus:"
959942
- id: pricing_hub_standard_benefit_2
960-
translation: "Ab 3 Sitze"
943+
translation: "Benutzer- und Gruppenverwaltung"
961944
- id: pricing_hub_standard_benefit_3
962945
translation: "Voller Zugriff über Mobile-Apps"
963-
- id: pricing_hub_standard_benefit_3_tooltip
964-
translation: "Du erhältst vollen Zugriff, ohne die Vollversion der mobilen App freischalten zu müssen."
965946
- id: pricing_hub_standard_benefit_4
966947
translation: "Audit-Logs"
967948
- id: pricing_hub_standard_benefit_5
@@ -973,6 +954,8 @@
973954

974955
- id: pricing_hub_enterprise_title
975956
translation: "Enterprise"
957+
- id: pricing_hub_enterprise_subtitle
958+
translation: "Für großflächige Deployments mit Premium-Support."
976959
- id: pricing_hub_enterprise_price
977960
translation: "Individuell"
978961
- id: pricing_hub_enterprise_price_description
@@ -982,10 +965,12 @@
982965
- id: pricing_hub_enterprise_benefit_1
983966
translation: "Alles in Standard"
984967
- id: pricing_hub_enterprise_benefit_2
985-
translation: "Beratung und Unterstützung durch Experten"
968+
translation: "Notfallzugriff"
986969
- id: pricing_hub_enterprise_benefit_3
987-
translation: "Dedizierter Kundenbetreuer"
970+
translation: "Beratung und Unterstützung durch Experten"
988971
- id: pricing_hub_enterprise_benefit_4
972+
translation: "Dedizierter Kundenbetreuer"
973+
- id: pricing_hub_enterprise_benefit_5
989974
translation: "Vorrangiger E-Mail-Support"
990975

991976
- id: pricing_support_us_title
@@ -997,6 +982,11 @@
997982
- id: pricing_support_us_sponsor_button
998983
translation: "Werde Sponsor"
999984

985+
- id: pricing_faq_individual_badge
986+
translation: "Für Einzelnutzer"
987+
- id: pricing_faq_teams_badge
988+
translation: "Für Teams"
989+
1000990
# Supporter Certificate
1001991
- id: supporter_cert_common_email
1002992
translation: "E-Mail"

0 commit comments

Comments
 (0)