diff --git a/client/public/locales/de/translation.json b/client/public/locales/de/translation.json index 05da8d6..ab851b1 100644 --- a/client/public/locales/de/translation.json +++ b/client/public/locales/de/translation.json @@ -23,7 +23,6 @@ "Editor mode is enforced!": "Editor kann nicht verlassen werden!", "Editor mode": "Editor", "Typewriter mode": "Schreibmaschine", - "information, Impressum, privacy policy": "Informationen, Impressum, Privacy Policy", "Preferences": "Einstellungen", "Game Info & Credits": "Spielinfo & Credits", "Game Info": "Spielinfo", @@ -91,5 +90,11 @@ "Retry proof from here": "Ab hier erneut versuchen", "Retry": "", "Failed command": "Befehl fehlgeschlagen", - "view the Lean game server on Github": "Lean game Server auf Github ansehen" + "view the Lean game server on Github": "Lean game Server auf Github ansehen", + "Theorem": "Theorem", + "Impressum": "Impressum", + "Privacy Policy": "Datenschutzerklärung", + "<0>Impressum<1>Contact:
Marcus Zibrowius, Jon Eugster
Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
Universitätsstr. 1
40225 Düsseldorf
Germany
+49 211 81-14690
<14>Contact Details<2>Legal form:
The Heinrich Heine University Düsseldorf is a corporation under public law. It is legally represented by the Rector Prof. Dr. Anja Steinbeck. The responsible supervisory authority is the Ministry of Culture and Science of North Rhine-Westphalia, Völklinger Straße 49, 40221 Düsseldorf.<3>VAT identification number:
according to §27a Sales Tax Act
DE 811222416<4><0>Impressum HHU": "<0>Impressum<1>Kontakt:
Marcus Zibrowius, Jon Eugster
Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
Universitätsstr. 1
40225 Düsseldorf
Deutschland
+49 211 81-14690
<14>Kontaktinformationen<2>Rechtsform:
Die Heinrich-Heine Universität Düsseldorf ist eine Körperschaft des Öffentlichen Rechts. Sie wird durch die Rektorin Prof. Dr. Anja Steinbeck gesetzlich vertreten. Zuständige Aufsichtsbehörde ist das Ministerium für Kultur und Wissenschaft des Landes Nordrhein-Westfalen, Völklinger Straße 49, 40221 Düsseldorf.<3>Umsatzsteuer-Identifikationsnummer:
gemäß §27a Umsatzsteuergesetz
DE 811222416<4><0>Impressum der HHU", + "<0>Progress saving<1>The game stores your progress in your local browser storage. If you delete it, your progress will be lost!
Warning: In most browsers, deleting cookies will also clear the local storage (or \"local site data\"). Make sure to download your game progress first!<2>Development<3>The game engine has been created by Alexander Bentkamp, Jon Eugster. On a prototype by Patrick Massot.<4>The source code of this Lean game engine is <1>available on Github. If you experience any problems, please file an <3>Issue on Github or get directly in contact.<5>Funding<6>The game engine has been developed as part of the project <1>ADAM: Anticipating the Digital Age of Mathematics at Heinrich-Heine-Universität Düsseldorf. It is funded by the Stiftung Innovation in der Hochschullehre as part of project Freiraum 2022.": "<0>Spielstandspeicherung<1>Das Spiel speichert den Spielstand im lokalen Browserspeicher. Wird dieser gelöscht, ist der Spielstand nicht wiederherstellbar!
Achtung: In üblichen Browsern bewirkt ein löschen von Cookies auch ein löschen des lokalen Browserspeichers (z.B. \"local site data\"). Der Spielstand sollte vorgehend heruntergeladen werden!<2>Entwicklung<3>Der Spieleserver wurde entwickelt von Alexander Bentkamp, Jon Eugster. Basierend auf einem Prototyp von Patrick Massot.<4>Der Sourcecode dieses Lean-Game-Engine ist <1>auf Github verfügbar. Bei Problemen, bitte einen <3>Github-Issue ausfüllen oder direkt mit uns Kontakt aufnehmen.<5>Funding<6>Dieser Spielserver wurde im Rahmen des Projekts <1>ADAM: Anticipating the Digital Age of Mathematics an der Heinrich-Heine-Universität Düsseldorf entwickelt. Es wird finanziell durch das Projekt Freiraum 2022 der Stiftung Innovation in der Hochschullehre unterstützt.", + "<0>Privacy Policy

Our server collects metadata (such as IP address, browser, operating system) and the data that the user enters into the editor. The data is used to compute the Lean output and display it to the user. The information will be stored as long as the user stays on our website and will be deleted immediately afterwards. We keep logs to improve our software, but the contained data is anonymized.

We do not use cookies, but your game progress is stored in the browser as site data. Your game progress is not saved on the server; if you delete your browser storage, it is completely gone.

Our server is located in Germany.

<4>Contact:
Marcus Zibrowius, Jon Eugster
Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
Universitätsstr. 1
40225 Düsseldorf
Germany
+49 211 81-14690
<14>Contact Details": "<0>Datenschutzerklärung

Unser Server verarbeitet Benutzer-Metadaten (zum Beispiel IP-Addresse, Browser-Version, Betriebssystem) sowie die Benutzereingaben in den Editor. Diese Daten werden verwendet um die Lean-Ausgabe zu berechnen und dem Benutzer darzustellen. Die Informationen werden nur gespeichert, solange der Benutzer auf unserer Webseite bleibt und anschliessend sofort gelöscht. Wir führen Log-Dateien um die Software zu verbessern, aber die enthaltenen Daten sind anonymisiert.

Wir verwenden keine Cookies, aber der Spielstand wird im Browser als \"Site Data\" gespeichert. Der Spielstand wird nicht auf dem Server gespeichert; wird er lokal gelöscht, kann er nicht wiederhergestellt werden.

Unser Server ist in Deutschland stationiert.

<4>Kontakt:
Markus Zibrowius, Jon Eugster
Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
Universitätsstr. 1
40225 Düsseldorf
Deutschland
+49 211 81-14690
<14>Kontaktdetails" } diff --git a/client/public/locales/en/translation.json b/client/public/locales/en/translation.json index c968175..b953a04 100644 --- a/client/public/locales/en/translation.json +++ b/client/public/locales/en/translation.json @@ -23,7 +23,6 @@ "Editor mode is enforced!": "Editor mode is enforced!", "Editor mode": "Editor mode", "Typewriter mode": "Typewriter mode", - "information, Impressum, privacy policy": "information, Impressum, privacy policy", "Preferences": "Preferences", "Game Info & Credits": "Game Info & Credits", "Game Info": "Game Info", @@ -91,5 +90,11 @@ "Retry proof from here": "Retry proof from here", "Retry": "Retry", "Failed command": "Failed command", - "view the Lean game server on Github": "view the Lean game server on Github" + "view the Lean game server on Github": "view the Lean game server on Github", + "Theorem": "Theorem", + "Impressum": "Impressum", + "Privacy Policy": "Privacy Policy", + "<0>Impressum<1>Contact:
Marcus Zibrowius, Jon Eugster
Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
Universitätsstr. 1
40225 Düsseldorf
Germany
+49 211 81-14690
<14>Contact Details<2>Legal form:
The Heinrich Heine University Düsseldorf is a corporation under public law. It is legally represented by the Rector Prof. Dr. Anja Steinbeck. The responsible supervisory authority is the Ministry of Culture and Science of North Rhine-Westphalia, Völklinger Straße 49, 40221 Düsseldorf.<3>VAT identification number:
according to §27a Sales Tax Act
DE 811222416<4><0>Impressum HHU": "<0>Impressum<1>Contact:
Marcus Zibrowius, Jon Eugster
Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
Universitätsstr. 1
40225 Düsseldorf
Germany
+49 211 81-14690
<14>Contact Details<2>Legal form:
The Heinrich Heine University Düsseldorf is a corporation under public law. It is legally represented by the Rector Prof. Dr. Anja Steinbeck. The responsible supervisory authority is the Ministry of Culture and Science of North Rhine-Westphalia, Völklinger Straße 49, 40221 Düsseldorf.<3>VAT identification number:
according to §27a Sales Tax Act
DE 811222416<4><0>Impressum HHU", + "<0>Progress saving<1>The game stores your progress in your local browser storage. If you delete it, your progress will be lost!
Warning: In most browsers, deleting cookies will also clear the local storage (or \"local site data\"). Make sure to download your game progress first!<2>Development<3>The game engine has been created by Alexander Bentkamp, Jon Eugster. On a prototype by Patrick Massot.<4>The source code of this Lean game engine is <1>available on Github. If you experience any problems, please file an <3>Issue on Github or get directly in contact.<5>Funding<6>The game engine has been developed as part of the project <1>ADAM: Anticipating the Digital Age of Mathematics at Heinrich-Heine-Universität Düsseldorf. It is funded by the Stiftung Innovation in der Hochschullehre as part of project Freiraum 2022.": "<0>Progress saving<1>The game stores your progress in your local browser storage. If you delete it, your progress will be lost!
Warning: In most browsers, deleting cookies will also clear the local storage (or \"local site data\"). Make sure to download your game progress first!<2>Development<3>The game engine has been created by Alexander Bentkamp, Jon Eugster. On a prototype by Patrick Massot.<4>The source code of this Lean game engine is <1>available on Github. If you experience any problems, please file an <3>Issue on Github or get directly in contact.<5>Funding<6>The game engine has been developed as part of the project <1>ADAM: Anticipating the Digital Age of Mathematics at Heinrich-Heine-Universität Düsseldorf. It is funded by the Stiftung Innovation in der Hochschullehre as part of project Freiraum 2022.", + "<0>Privacy Policy

Our server collects metadata (such as IP address, browser, operating system) and the data that the user enters into the editor. The data is used to compute the Lean output and display it to the user. The information will be stored as long as the user stays on our website and will be deleted immediately afterwards. We keep logs to improve our software, but the contained data is anonymized.

We do not use cookies, but your game progress is stored in the browser as site data. Your game progress is not saved on the server; if you delete your browser storage, it is completely gone.

Our server is located in Germany.

<4>Contact:
Marcus Zibrowius, Jon Eugster
Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
Universitätsstr. 1
40225 Düsseldorf
Germany
+49 211 81-14690
<14>Contact Details": "<0>Privacy Policy

Our server collects metadata (such as IP address, browser, operating system) and the data that the user enters into the editor. The data is used to compute the Lean output and display it to the user. The information will be stored as long as the user stays on our website and will be deleted immediately afterwards. We keep logs to improve our software, but the contained data is anonymized.

We do not use cookies, but your game progress is stored in the browser as site data. Your game progress is not saved on the server; if you delete your browser storage, it is completely gone.

Our server is located in Germany.

<4>Contact:
Marcus Zibrowius, Jon Eugster
Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
Universitätsstr. 1
40225 Düsseldorf
Germany
+49 211 81-14690
<14>Contact Details" } diff --git a/client/public/locales/zh/translation.json b/client/public/locales/zh/translation.json index 947dc54..bbe0b68 100644 --- a/client/public/locales/zh/translation.json +++ b/client/public/locales/zh/translation.json @@ -23,7 +23,6 @@ "Editor mode is enforced!": "编辑器模式开启!", "Editor mode": "编辑器模式", "Typewriter mode": "打字机模式", - "information, Impressum, privacy policy": "信息、版权声明 (Impressum)、隐私政策", "Preferences": "偏好设置", "Game Info & Credits": "游戏信息和荣誉", "Game Info": "游戏信息", @@ -91,5 +90,11 @@ "Level": "关卡", "Introduction": "介绍", "Retry": "重试", - "Failed command": "命令失败" + "Failed command": "命令失败", + "view the Lean game server on Github": "", + "Impressum": "版权声明", + "Privacy Policy": "隐私政策", + "<0>Impressum<1>Contact:
Marcus Zibrowius, Jon Eugster
Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
Universitätsstr. 1
40225 Düsseldorf
Germany
+49 211 81-14690
<14>Contact Details<2>Legal form:
The Heinrich Heine University Düsseldorf is a corporation under public law. It is legally represented by the Rector Prof. Dr. Anja Steinbeck. The responsible supervisory authority is the Ministry of Culture and Science of North Rhine-Westphalia, Völklinger Straße 49, 40221 Düsseldorf.<3>VAT identification number:
according to §27a Sales Tax Act
DE 811222416<4><0>Impressum HHU": "", + "<0>Progress saving<1>The game stores your progress in your local browser storage. If you delete it, your progress will be lost!
Warning: In most browsers, deleting cookies will also clear the local storage (or \"local site data\"). Make sure to download your game progress first!<2>Development<3>The game engine has been created by Alexander Bentkamp, Jon Eugster. On a prototype by Patrick Massot.<4>The source code of this Lean game engine is <1>available on Github. If you experience any problems, please file an <3>Issue on Github or get directly in contact.<5>Funding<6>The game engine has been developed as part of the project <1>ADAM: Anticipating the Digital Age of Mathematics at Heinrich-Heine-Universität Düsseldorf. It is funded by the Stiftung Innovation in der Hochschullehre as part of project Freiraum 2022.": "", + "<0>Privacy Policy

Our server collects metadata (such as IP address, browser, operating system) and the data that the user enters into the editor. The data is used to compute the Lean output and display it to the user. The information will be stored as long as the user stays on our website and will be deleted immediately afterwards. We keep logs to improve our software, but the contained data is anonymized.

We do not use cookies, but your game progress is stored in the browser as site data. Your game progress is not saved on the server; if you delete your browser storage, it is completely gone.

Our server is located in Germany.

<4>Contact:
Marcus Zibrowius, Jon Eugster
Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
Universitätsstr. 1
40225 Düsseldorf
Germany
+49 211 81-14690
<14>Contact Details": "" } diff --git a/client/src/components/app_bar.tsx b/client/src/components/app_bar.tsx index 37d55dd..026400b 100644 --- a/client/src/components/app_bar.tsx +++ b/client/src/components/app_bar.tsx @@ -123,16 +123,21 @@ function InputModeButton({setNavOpen, isDropdown}) { } -/** button to toggle iimpressum popup - * - * Note: Do not translate the word "Impressum"! German GDPR needs this. -*/ export function ImpressumButton({setNavOpen, toggleImpressum, isDropdown}) { const { t } = useTranslation() return +} + +export function PrivacyButton({setNavOpen, togglePrivacy, isDropdown}) { + const { t } = useTranslation() + return } @@ -204,11 +209,12 @@ function InventoryButton({pageNumber, setPageNumber}) { } /** the navigation bar on the welcome page */ -export function WelcomeAppBar({pageNumber, setPageNumber, gameInfo, toggleImpressum, toggleEraseMenu, toggleUploadMenu, toggleInfo, togglePreferencesPopup} : { +export function WelcomeAppBar({pageNumber, setPageNumber, gameInfo, toggleImpressum, togglePrivacy, toggleEraseMenu, toggleUploadMenu, toggleInfo, togglePreferencesPopup} : { pageNumber: number, setPageNumber: any, gameInfo: GameInfo, toggleImpressum: any, + togglePrivacy: any, toggleEraseMenu: any, toggleUploadMenu: any, toggleInfo: any, @@ -238,16 +244,18 @@ export function WelcomeAppBar({pageNumber, setPageNumber, gameInfo, toggleImpres + } /** the navigation bar in a level */ -export function LevelAppBar({isLoading, levelTitle, toggleImpressum, toggleInfo, togglePreferencesPopup, pageNumber=undefined, setPageNumber=undefined} : { +export function LevelAppBar({isLoading, levelTitle, toggleImpressum, togglePrivacy, toggleInfo, togglePreferencesPopup, pageNumber=undefined, setPageNumber=undefined} : { isLoading: boolean, levelTitle: string, toggleImpressum: any, + togglePrivacy: any, toggleInfo: any, togglePreferencesPopup: any, pageNumber?: number, @@ -282,6 +290,7 @@ export function LevelAppBar({isLoading, levelTitle, toggleImpressum, toggleInfo, + : @@ -303,6 +312,7 @@ export function LevelAppBar({isLoading, levelTitle, toggleImpressum, toggleInfo,
+
diff --git a/client/src/components/infoview/typewriter.tsx b/client/src/components/infoview/typewriter.tsx index e06fec2..bdf3553 100644 --- a/client/src/components/infoview/typewriter.tsx +++ b/client/src/components/infoview/typewriter.tsx @@ -35,6 +35,12 @@ monaco.languages.register({ extensions: ['.leancmd'] }) +// register Monaco languages // TODO: JE. I dont understand why I suddenly had to add this when it worked without before. +monaco.languages.register({ + id: 'lean4', + extensions: ['.lean'] +}) + // map of monaco "language id's" to TextMate scopeNames const grammars = new Map() grammars.set('lean4', 'source.lean') diff --git a/client/src/components/landing_page.tsx b/client/src/components/landing_page.tsx index f108720..955950c 100644 --- a/client/src/components/landing_page.tsx +++ b/client/src/components/landing_page.tsx @@ -11,12 +11,12 @@ import '../css/landing_page.css' import bgImage from '../assets/bg.jpg' import Markdown from './markdown'; -import {PrivacyPolicyPopup} from './popup/privacy_policy' +import {PrivacyPolicyPopup, ImpressumPopup} from './popup/privacy_policy' import { GameTile, useGetGameInfoQuery } from '../state/api' import path from 'path'; import { PreferencesPopup } from './popup/preferences'; -import { ImpressumButton, MenuButton, PreferencesButton } from './app_bar'; +import { ImpressumButton, MenuButton, PreferencesButton, PrivacyButton } from './app_bar'; import ReactCountryFlag from 'react-country-flag'; import lean4gameConfig from '../config.json' import i18next from 'i18next'; @@ -91,11 +91,15 @@ function LandingPage() { const navigate = useNavigate(); const [impressumPopup, setImpressumPopup] = React.useState(false); + const [privacyPopup, setPrivacyPopup] = React.useState(false); const [preferencesPopup, setPreferencesPopup] = React.useState(false); const [navOpen, setNavOpen] = React.useState(false); const openImpressum = () => setImpressumPopup(true); const closeImpressum = () => setImpressumPopup(false); const toggleImpressum = () => setImpressumPopup(!impressumPopup); + const openPrivacy = () => setPrivacyPopup(true); + const closePrivacy = () => setPrivacyPopup(false); + const togglePrivacy = () => setPrivacyPopup(!privacyPopup); const closePreferencesPopup = () => setPreferencesPopup(false); const togglePreferencesPopup = () => setPreferencesPopup(!preferencesPopup); @@ -128,6 +132,7 @@ function LandingPage() {
+
@@ -214,7 +219,9 @@ function LandingPage() {
{/* Do not translate "Impressum", it's needed for German GDPR */} Impressum - {impressumPopup? : null} + {t("Privacy Policy")} + {privacyPopup? : null} + {impressumPopup? : null} {preferencesPopup ? : null}
diff --git a/client/src/components/level.tsx b/client/src/components/level.tsx index 8d06b9e..37710e3 100644 --- a/client/src/components/level.tsx +++ b/client/src/components/level.tsx @@ -33,7 +33,7 @@ import { DeletedChatContext, InputModeContext, PreferencesContext, MonacoEditorC import { DualEditor } from './infoview/main' import { GameHint, InteractiveGoalsWithHints, ProofState } from './infoview/rpc_api' import { DeletedHints, Hint, Hints, MoreHelpButton, filterHints } from './hints' -import { PrivacyPolicyPopup } from './popup/privacy_policy' +import { ImpressumPopup, PrivacyPolicyPopup } from './popup/privacy_policy' import path from 'path'; import '@fontsource/roboto/300.css' @@ -75,10 +75,12 @@ function Level() { // pop-ups const [impressum, setImpressum] = React.useState(false) + const [privacy, setPrivacy] = React.useState(false) const [info, setInfo] = React.useState(false) const [preferencesPopup, setPreferencesPopup] = React.useState(false) function closeImpressum() {setImpressum(false)} + function closePrivacy() {setPrivacy(false)} function closeInfo() {setInfo(false)} function closePreferencesPopup() {setPreferencesPopup(false)} function toggleImpressum() {setImpressum(!impressum)} @@ -87,9 +89,10 @@ function Level() { return {levelId == 0 ? - : - } - {impressum ? : null} + : + } + {impressum ? : null} + {privacy ? : null} {info ? : null} {preferencesPopup ? : null} @@ -212,7 +215,7 @@ function ExercisePanel({codeviewRef, visible=true}: {codeviewRef: React.MutableR } -function PlayableLevel({impressum, setImpressum, toggleInfo, togglePreferencesPopup}) { +function PlayableLevel({impressum, setImpressum, privacy, setPrivacy, toggleInfo, togglePreferencesPopup}) { let { t } = useTranslation() const codeviewRef = useRef(null) const gameId = React.useContext(GameIdContext) @@ -251,6 +254,7 @@ function PlayableLevel({impressum, setImpressum, toggleInfo, togglePreferencesPo // impressum pop-up function toggleImpressum() {setImpressum(!impressum)} + function togglePrivacy() {setPrivacy(!privacy)} // When clicking on an inventory item, the inventory is overlayed by the item's doc. // If this state is set to a pair `(name, type)` then the according doc will be open. @@ -419,8 +423,9 @@ function PlayableLevel({impressum, setImpressum, toggleInfo, togglePreferencesPo isLoading={level.isLoading} levelTitle={(mobile ? "" : t("Level")) + ` ${levelId} / ${gameInfo.data?.worldSize[worldId]}` + (level?.data?.title && ` : ${t(level?.data?.title, {ns: gameId})}`)} - toggleImpressum={toggleImpressum} - toggleInfo={toggleInfo} + toggleImpressum={toggleImpressum} + togglePrivacy={togglePrivacy} + toggleInfo={toggleInfo} togglePreferencesPopup={togglePreferencesPopup} /> {mobile? @@ -479,7 +484,7 @@ function IntroductionPanel({gameInfo}) { export default Level /** The site with the introduction text of a world */ -function Introduction({impressum, setImpressum, toggleInfo, togglePreferencesPopup}) { +function Introduction({impressum, setImpressum, privacy, setPrivacy, toggleInfo, togglePreferencesPopup}) { let { t } = useTranslation() const gameId = React.useContext(GameIdContext) @@ -497,9 +502,11 @@ function Introduction({impressum, setImpressum, toggleInfo, togglePreferencesPop const toggleImpressum = () => { setImpressum(!impressum) } - + const togglePrivacy = () => { + setPrivacy(!privacy) + } return <> - + {gameInfo.isLoading ?
: mobile ? diff --git a/client/src/components/popup/game_info.tsx b/client/src/components/popup/game_info.tsx index 593c245..cf0e118 100644 --- a/client/src/components/popup/game_info.tsx +++ b/client/src/components/popup/game_info.tsx @@ -4,7 +4,7 @@ import * as React from 'react' import { Typography } from '@mui/material' import Markdown from '../markdown' -import { useTranslation } from 'react-i18next' +import { Trans, useTranslation } from 'react-i18next' import { GameIdContext } from '../../app' /** Pop-up that is displaying the Game Info. @@ -22,6 +22,34 @@ export function InfoPopup ({info, handleClose}: {info: string, handleClose: () =
{t(info, {ns: gameId})} +
+ +

Progress saving

+

+ The game stores your progress in your local browser storage. If you delete it, your progress will be lost!
+ Warning: In most browsers, deleting cookies will also clear the local storage (or "local site data"). + Make sure to download your game progress first! +

+

Development

+

The game engine has been created by Alexander Bentkamp, Jon Eugster. + On a prototype by Patrick Massot. +

+

+ The source code of this Lean game engine + is available on Github. + If you experience any problems, please + file an Issue on Github or + get directly in contact. +

+

Funding

+

+ The game engine has been developed as part of the + project ADAM: Anticipating the Digital + Age of Mathematics at + Heinrich-Heine-Universität Düsseldorf. It is funded by + the Stiftung Innovation in der Hochschullehre as part of project Freiraum 2022. +

+
diff --git a/client/src/components/popup/privacy_policy.tsx b/client/src/components/popup/privacy_policy.tsx index f205abb..50a3665 100644 --- a/client/src/components/popup/privacy_policy.tsx +++ b/client/src/components/popup/privacy_policy.tsx @@ -4,6 +4,7 @@ import { faShield } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import * as React from 'react' +import { Trans, useTranslation } from 'react-i18next'; /** Pop-up that is displayed when opening the privacy policy. * @@ -13,49 +14,99 @@ import * as React from 'react' * Note: Do not translate the Impressum! */ export function PrivacyPolicyPopup ({handleClose}: {handleClose: () => void}) { + let {t, i18n} = useTranslation() + function content (lng = i18n.language) { + const tt = i18n.getFixedT(lng); + return +

Privacy Policy

+

+ Our server collects metadata (such as IP address, browser, operating system) + and the data that the user enters into the editor. The data is used to + compute the Lean output and display it to the user. The information will be stored + as long as the user stays on our website and will be deleted immediately afterwards. + We keep logs to improve our software, but the contained data is anonymized. +

+

+ We do not use cookies, but your game progress is stored in the browser + as site data. Your game progress is not saved on the server; if you delete + your browser storage, it is completely gone. +

+

Our server is located in Germany.

+

+ Contact:
+ Marcus Zibrowius, Jon Eugster
+ Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
+ Universitätsstr. 1
+ 40225 Düsseldorf
+ Germany
+ +49 211 81-14690
+ Contact Details +

+
+ } + + + return
+
+
+
+ {i18n.language != 'en' && <> +

(English version below)

+ {content()} +
+ } + {content('en')} +
+
+} + +/** Pop-up that is displayed when opening the privacy policy. + * + * `handleClose` is the function to close it again because it's open/closed state is + * controlled by the containing element. + * + * Note: Do not translate the Impressum! + */ +export function ImpressumPopup ({handleClose}: {handleClose: () => void}) { + let {t, i18n} = useTranslation() + + function content (lng = i18n.language) { + const tt = i18n.getFixedT(lng); + return +

Impressum

+

+ Contact:
+ Marcus Zibrowius, Jon Eugster
+ Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
+ Universitätsstr. 1
+ 40225 Düsseldorf
+ Germany
+ +49 211 81-14690
+ Contact Details +

+

+ Legal form:
+ The Heinrich Heine University Düsseldorf is a corporation under public law. It is legally represented by the Rector Prof. Dr. Anja Steinbeck. The responsible supervisory authority is the Ministry of Culture and Science of North Rhine-Westphalia, Völklinger Straße 49, 40221 Düsseldorf. +

+

+ VAT identification number:
+ according to §27a Sales Tax Act
+ DE 811222416 +

+

Impressum HHU

+
+ } + return
-
-
-

Privacy Policy & Impressum

-

- Our server collects metadata (such as IP address, browser, operating system) - and the data that the user enters into the editor. The data is used to - compute the Lean output and display it to the user. The information will be stored - as long as the user stays on our website and will be deleted immediately afterwards. - We keep logs to improve our software, but the contained data is anonymized. -

-

- We do not use cookies, but your game progress is stored in the browser - as site data. Your game progress is not saved on the server; if you delete - your browser storage, it is completely gone. -

-

Our server is located in Germany.

-

- Contact information:
- Alexander Bentkamp, Jon Eugster
- Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
- Universitätsstr. 1
- 40225 Düsseldorf
- Germany
- +49 211 81-12173
- Contact Details -

-

Development & Funding

-

- The source code of this Lean game engine - is available on Github. - If you experience any problems, please - file an Issue on Github or - get directly in contact. -

-

- The game engine has been developed as part of the - project ADAM: Anticipating the Digital - Age of Mathematics at - Heinrich-Heine-Universität Düsseldorf. It is funded by - the Stiftung Innovation in der Hochschullehre as part of project Freiraum 2022. -

-
+
+
+ {i18n.language != 'en' && <> +

(English version below)

+ {content()} +
+ } + {content('en')} +
} diff --git a/client/src/components/welcome.tsx b/client/src/components/welcome.tsx index ecc1c74..8aaea5e 100644 --- a/client/src/components/welcome.tsx +++ b/client/src/components/welcome.tsx @@ -14,7 +14,7 @@ import { PreferencesContext } from './infoview/context' import { InventoryPanel } from './inventory' import { ErasePopup } from './popup/erase' import { InfoPopup } from './popup/game_info' -import { PrivacyPolicyPopup } from './popup/privacy_policy' +import { ImpressumPopup, PrivacyPolicyPopup } from './popup/privacy_policy' import { RulesHelpPopup } from './popup/rules_help' import { UploadPopup } from './popup/upload' import { PreferencesPopup} from "./popup/preferences" @@ -86,6 +86,7 @@ function Welcome() { // pop-ups const [eraseMenu, setEraseMenu] = React.useState(false) const [impressum, setImpressum] = React.useState(false) + const [privacy, setPrivacy] = React.useState(false) const [info, setInfo] = React.useState(false) const [rulesHelp, setRulesHelp] = React.useState(false) const [uploadMenu, setUploadMenu] = React.useState(false) @@ -93,12 +94,14 @@ function Welcome() { function closeEraseMenu() {setEraseMenu(false)} function closeImpressum() {setImpressum(false)} + function closePrivacy() {setPrivacy(false)} function closeInfo() {setInfo(false)} function closeRulesHelp() {setRulesHelp(false)} function closeUploadMenu() {setUploadMenu(false)} function closePreferencesPopup() {setPreferencesPopup(false)} function toggleEraseMenu() {setEraseMenu(!eraseMenu)} function toggleImpressum() {setImpressum(!impressum)} + function togglePrivacy() {setPrivacy(!privacy)} function toggleInfo() {setInfo(!info)} function toggleUploadMenu() {setUploadMenu(!uploadMenu)} function togglePreferencesPopup() {setPreferencesPopup(!preferencesPopup)} @@ -115,7 +118,7 @@ function Welcome() { : <> -
@@ -139,7 +142,8 @@ function Welcome() { }
- {impressum ? : null} + {impressum ? : null} + {privacy ? : null} {rulesHelp ? : null} {eraseMenu? : null} {uploadMenu? : null} diff --git a/client/src/css/app.css b/client/src/css/app.css index 206638d..f8a68b4 100644 --- a/client/src/css/app.css +++ b/client/src/css/app.css @@ -145,3 +145,9 @@ em { .privacy-policy { z-index: 10; } + +.modal hr { + margin-top: 3rem; + margin-bottom: 3rem; + border-color: var(--vscode-breadcrumb-foreground); +} diff --git a/index.html b/index.html index 7da8849..4d2935b 100644 --- a/index.html +++ b/index.html @@ -23,13 +23,19 @@

Impressum:
- Jon Eugster
+ Marcus Zibrowius, Jon Eugster
Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
Universitätsstr. 1
40225 Düsseldorf
Germany
- +49 211 81-12173
- Contact Details + +49 211 81-14690
+ Contact Details +

+

+ Datenschutzerklärung:
+ Without JavaScript this website cannot be used and therefore no personal data is collected + or stored.
+ Our Server is located in Germany.