Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion apps/treasures/app/components/EpubReader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import Link from 'next/link';
import { useLocale } from 'next-intl';
import { useLocale, useTranslations } from 'next-intl';
import JSZip from 'jszip';

// ── Types ──────────────────────────────────────────────────────────────────
Expand Down Expand Up @@ -242,6 +242,7 @@ type HLColor = (typeof HL_COLORS)[number];

export default function EpubReader({ epubUrl, title, author }: Props) {
const locale = useLocale();
const tReader = useTranslations('treasures.reader');

const [phase, setPhase] = useState<Phase>('downloading');
const [progress, setProgress] = useState(0);
Expand Down Expand Up @@ -795,6 +796,9 @@ export default function EpubReader({ epubUrl, title, author }: Props) {
: fmtBytes(loadedBytes)}
</div>
)}
<p className="epub-loading__egw-notice">
{tReader('egwNotice')} <a href={`/${locale}/datenschutz`}>{tReader('egwNoticeLink')}</a>.
</p>
</div>
</div>
);
Expand Down
22 changes: 22 additions & 0 deletions apps/treasures/app/components/TreasureCatalog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,26 @@ function ScriptureQuote() {
);
}

function EgwDisclaimer() {
const t = useTranslations('treasures.catalog');
return (
<p className="egw-disclaimer">
{t.rich('egwDisclaimer', {
estate: (chunks) => (
<a href="https://whiteestate.org" target="_blank" rel="noopener noreferrer">
{chunks}
</a>
),
site: (chunks) => (
<a href="https://egwwritings.org" target="_blank" rel="noopener noreferrer">
{chunks}
</a>
),
})}
</p>
);
}

const BANNER_KEY = 'uploads/998516df-c8b7-4492-a11f-7785412673d6.png';

export default function TreasureCatalog({
Expand Down Expand Up @@ -176,6 +196,8 @@ export default function TreasureCatalog({
onLangChange={handleLangChange}
/>

<EgwDisclaimer />

<section className="shop-section" ref={sectionRef}>
{loading ? (
<div className="shop-loading">
Expand Down
38 changes: 38 additions & 0 deletions apps/treasures/app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -669,6 +669,28 @@ nav {
display: block;
}

.egw-disclaimer {
max-width: 760px;
margin: 0 auto 2rem;
padding: 0 1.5rem;
font-size: 0.78rem;
line-height: 1.6;
color: var(--muted, #7a7470);
text-align: center;
}

.egw-disclaimer a {
color: rgba(201, 169, 110, 0.7);
text-decoration: none;
border-bottom: 1px solid rgba(201, 169, 110, 0.25);
transition: color 0.2s, border-color 0.2s;
}

.egw-disclaimer a:hover {
color: var(--gold, #c9a96e);
border-color: var(--gold, #c9a96e);
}

/* ── RESPONSIVE ── */
@media (max-width: 1200px) {
.shop-grid {
Expand Down Expand Up @@ -821,6 +843,22 @@ nav {
letter-spacing: 0.04em;
}

.epub-loading__egw-notice {
font-family: 'Cormorant Garamond', serif;
font-size: 0.72rem;
color: var(--muted);
text-align: center;
margin-top: 1.25rem;
line-height: 1.5;
opacity: 0.8;
}

.epub-loading__egw-notice a {
color: var(--gold);
text-decoration: underline;
text-underline-offset: 2px;
}

/* ── Reader themes ───────────────────────────────────────── */
/* Default (dark) — scoped inside .epub-reader so the rest of the page is unaffected */
.epub-reader {
Expand Down
2 changes: 1 addition & 1 deletion docs/dsgvo.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ These are the only external data recipients currently named in [Datenschutzerkl
| Processor | Purpose | Disclosed in |
|---|---|---|
| Cloudflare | Hosting, Web Analytics, CDN | section4 |
| egwwritings.org (White Estate) | EPUB file delivery for Treasures | section5 |
| egwwritings.org (White Estate) | EPUB file delivery for Treasures | section5 + inline notice in EpubReader |

**To add a new processor:** update [de.json + en.json legal.datenschutz](../packages/i18n/src/messages/) AND ship the code change in the same PR. Not a separate PR, not "TODO later".

Expand Down
9 changes: 7 additions & 2 deletions packages/i18n/src/messages/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -633,7 +633,7 @@
"section4Body": "Diese Website wird über Cloudflare Pages gehostet. Cloudflare kann dabei technische Zugriffsdaten (z. B. IP-Adresse, Zeitpunkt des Abrufs) verarbeiten. Websitestatistiken werden über Cloudflare Web Analytics erfasst — cookiefrei, ohne Nutzerprofile und ohne personenbezogene Daten.",
"cloudflarePrivacy": "Datenschutzerklärung von Cloudflare",
"section5Title": "Externe Inhalte (E-Books)",
"section5Body": "Auf der Plattform „Schätze“ können digitale Bücher im EPUB-Format direkt im Browser gelesen werden. Beim Öffnen eines Buches stellt Ihr Browser eine direkte Verbindung zum externen Dateiserver her (derzeit: egwwritings.org, betrieben von der Ellen G. White Estate, Inc., USA), von dem die EPUB-Datei bezogen wird. Dabei wird Ihre IP-Adresse sowie der Zeitpunkt des Abrufs an diesen Drittanbieter übermittelt. Die Verarbeitung erfolgt auf Grundlage unseres berechtigten Interesses an der Bereitstellung des angeforderten Inhalts (Art. 6 Abs. 1 lit. f DSGVO). Weitere Informationen finden Sie in der",
"section5Body": "Auf der Plattform „Schätze“ können digitale Bücher im EPUB-Format direkt im Browser gelesen werden. Beim bloßen Durchsuchen des Katalogs werden keine Daten an externe Server übertragen. Erst wenn Sie aktiv ein Buch öffnen, stellt Ihr Browser eine direkte Verbindung zum externen Dateiserver her (derzeit: egwwritings.org, betrieben von der Ellen G. White Estate, Inc., USA), von dem die EPUB-Datei bezogen wird. Dabei werden Ihre IP-Adresse sowie der Zeitpunkt des Abrufs an diesen Drittanbieter in den USA übermittelt. Rechtsgrundlage für die Datenverarbeitung ist Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an der Bereitstellung des angeforderten Inhalts); für die Übermittlung in die USA gilt Art. 49 Abs. 1 lit. b DSGVO (Erforderlichkeit zur Vertragserfüllung auf Anfrage der betroffenen Person). Weitere Informationen finden Sie in der",
"section5PrivacyLink": "Datenschutzerklärung der Ellen G. White Estate",
"section6Title": "Buchanfrage (Geschenk erhalten)",
"section6Body": "Wenn Sie über das Formular „Geschenk erhalten“ Bücher anfordern, verarbeiten wir folgende Daten: Name, E-Mail-Adresse, Postanschrift (Straße, PLZ, Stadt), Land sowie optional Telefonnummer und eine persönliche Mitteilung. Rechtsgrundlage ist Ihre Einwilligung gemäß Art. 6 Abs. 1 lit. a DSGVO. Die Daten werden ausschließlich für die Bearbeitung und den Versand der Anfrage verwendet und nach Abschluss des Versands gelöscht. Sie können Ihre Einwilligung jederzeit per E-Mail widerrufen:",
Expand Down Expand Up @@ -747,7 +747,8 @@
"empty": "Keine Ergebnisse für diese Auswahl.",
"scriptureText": "Deine Zeugnisse sind mein ewiges Erbe; denn sie sind meines Herzens Wonne.",
"scriptureRef": "Psalm 119,111",
"biblesTitle": "Heilige Schrift"
"biblesTitle": "Heilige Schrift",
"egwDisclaimer": "Einige Bücher auf dieser Seite sind Eigentum der <estate>Ellen G. White Estate, Inc.</estate> (USA). Die EPUB-Dateien werden direkt von <site>egwwritings.org</site> bereitgestellt — wir ermöglichen lediglich den bequemen Zugang."
},
"bookRequest": {
"bannerEyebrow": "Kostenlose Bücher",
Expand Down Expand Up @@ -796,6 +797,10 @@
"landDe": "Deutschland",
"landAt": "Österreich",
"landCh": "Schweiz"
},
"reader": {
"egwNotice": "Beim Laden verbindet sich Ihr Browser direkt mit egwwritings.org (USA). Mehr in der",
"egwNoticeLink": "Datenschutzerklärung"
}
}
}
9 changes: 7 additions & 2 deletions packages/i18n/src/messages/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -633,7 +633,7 @@
"section4Body": "This website is hosted via Cloudflare Pages. Cloudflare may process technical access data (e.g. IP address, time of access). Website statistics are collected via Cloudflare Web Analytics — cookie-free, without user profiles and without personal data.",
"cloudflarePrivacy": "Cloudflare Privacy Policy",
"section5Title": "External Content (E-Books)",
"section5Body": "The “Treasures” platform allows digital books in EPUB format to be read directly in the browser. When opening a book, your browser establishes a direct connection to the external file server (currently: egwwritings.org, operated by the Ellen G. White Estate, Inc., USA) from which the EPUB file is retrieved. In doing so, your IP address and the time of access are transmitted to this third-party provider. Processing is based on our legitimate interest in delivering the requested content (Art. 6(1)(f) GDPR). For more information, please see the",
"section5Body": "The “Treasures” platform allows digital books in EPUB format to be read directly in the browser. No data is transmitted to external servers when you browse the catalog. Only when you actively open a book does your browser establish a direct connection to the external file server (currently: egwwritings.org, operated by the Ellen G. White Estate, Inc., USA) from which the EPUB file is retrieved. In doing so, your IP address and the time of access are transmitted to this third-party provider in the USA. The legal basis for processing is Art. 6(1)(f) GDPR (legitimate interest in delivering the requested content); for the transfer to the USA, Art. 49(1)(b) GDPR applies (transfer necessary for the performance of a contract at the request of the data subject). For more information, please see the",
"section5PrivacyLink": "Ellen G. White Estate Privacy Policy",
"section6Title": "Book Request (Receive a Gift)",
"section6Body": "When you request books through the \"Receive a Gift\" form, we process the following data: name, email address, postal address (street, postal code, city), country, and optionally phone number and a personal message. The legal basis is your consent pursuant to Art. 6(1)(a) GDPR. The data is used solely for processing and shipping your request and will be deleted after delivery is complete. You may revoke your consent at any time by email:",
Expand Down Expand Up @@ -747,7 +747,8 @@
"empty": "No results for this selection.",
"scriptureText": "Your testimonies are my heritage forever, for they are the joy of my heart.",
"scriptureRef": "Psalm 119:111",
"biblesTitle": "Holy Scripture"
"biblesTitle": "Holy Scripture",
"egwDisclaimer": "Some books on this page are the property of <estate>Ellen G. White Estate, Inc.</estate> (USA). The EPUB files are delivered directly from <site>egwwritings.org</site> — we simply provide convenient access."
},
"bookRequest": {
"bannerEyebrow": "Free Books",
Expand Down Expand Up @@ -796,6 +797,10 @@
"landDe": "Germany",
"landAt": "Austria",
"landCh": "Switzerland"
},
"reader": {
"egwNotice": "When loading, your browser connects directly to egwwritings.org (USA). More in the",
"egwNoticeLink": "Privacy Policy"
}
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading