Files
geograsim/App/impressum.php
T
Adminator 1e51ef7def Nachtrag: alle bisher untracked Ordner + hängende Änderungen mit-committen
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/
- 12 code-workspace-Files
- STATUS-*.md
- viele M/D/R-Änderungen an bereits getrackten Files
- .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-08 02:27:02 +02:00

155 lines
8.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
require_once __DIR__ . '/php/config/app.php';
$bp = BASE_PATH;
$activeMain = null;
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GeoGraSim — Impressum</title>
<link rel="icon" type="image/png" href="favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="favicon.svg">
<link rel="stylesheet" href="assets/fonts/inter.css">
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Inter',sans-serif;background:#f7f6f3;color:#1a1a1a;line-height:1.7}
.topbar{background:#fff;padding:.6rem 1.2rem;display:flex;align-items:center;gap:.8rem;border-bottom:1px solid rgba(0,0,0,.06);flex-wrap:wrap}
.topbar a{text-decoration:none}
.topbar img{height:32px}
.topbar .spacer{flex:1}
.btn-sm{padding:.3rem .6rem;border:1px solid rgba(0,0,0,.08);border-radius:6px;background:#fff;font-size:.68rem;font-weight:600;color:#4a4a4a;text-decoration:none}
.wrap{max-width:760px;margin:0 auto;padding:2rem 1.5rem 4rem}
h1{font-size:1.6rem;font-weight:900;color:#1f4e5a;margin-bottom:.5rem}
h2{font-size:1rem;font-weight:800;color:#1f4e5a;margin:1.5rem 0 .4rem;padding-top:.8rem;border-top:1px solid rgba(0,0,0,.06)}
p,li{font-size:.85rem;color:#333;margin-bottom:.5rem}
.card{background:#fff;border-radius:12px;padding:1.2rem;border:1px solid rgba(0,0,0,.04);margin-bottom:1rem}
label{display:block;font-size:.72rem;font-weight:600;color:#4a4a4a;margin-bottom:.2rem;margin-top:.6rem}
input,textarea,select{width:100%;padding:.5rem .7rem;border:1.5px solid rgba(0,0,0,.1);border-radius:7px;font-size:.82rem;font-family:inherit;outline:none}
input:focus,textarea:focus{border-color:#4a7c8a}
textarea{resize:vertical;min-height:100px}
.btn{padding:.5rem 1.2rem;border:none;border-radius:8px;background:#4a7c8a;color:#fff;font-size:.82rem;font-weight:700;cursor:pointer;margin-top:.6rem}
.btn:hover{background:#3a6470}
.captcha-box{background:#f7f6f3;border-radius:8px;padding:.8rem;margin-top:.6rem;display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}
.captcha-q{font-size:.82rem;font-weight:600;color:#1f4e5a}
.captcha-input{width:80px;text-align:center;font-size:1rem;font-weight:700}
.msg{font-size:.75rem;padding:.4rem .6rem;border-radius:6px;margin-top:.5rem;display:none}
.msg.ok{display:block;background:#dceadd;color:#5a8a5e}
.msg.err{display:block;background:#f2ddd8;color:#c07a6b}
.footer-note{font-size:.72rem;color:#8a8a8a;text-align:center;margin-top:2rem;padding-top:1rem;border-top:1px solid rgba(0,0,0,.06)}
.footer-note a{color:#4a7c8a;text-decoration:none}
</style>
</head>
<body>
<?php include __DIR__ . '/pages/_partials/public_topnav.php'; ?>
<div class="wrap">
<h1>Impressum</h1>
<p>Angaben gemäß § 5 E-Commerce-Gesetz (ECG) und § 25 Mediengesetz (MedienG)</p>
<div class="card">
<p><strong>Medieninhaber und Herausgeber:</strong></p>
<p>
Dominik Mößlang<br>
Laimburggasse 32/Tür 18<br>
8010 Graz, Österreich
</p>
<p><strong>Kontakt:</strong></p>
<p>
E-Mail: <a href="mailto:support@geograsim.at" style="color:#4a7c8a">support@geograsim.at</a><br>
Web: <a href="https://geograsim.at" style="color:#4a7c8a">geograsim.at</a>
</p>
<p><strong>Unternehmensgegenstand:</strong><br>Entwicklung und Betrieb einer webbasierten Lernplattform für den Geografie- und Wirtschaftskunde-Unterricht.</p>
<p><strong>Anwendbare Rechtsvorschriften:</strong><br>E-Commerce-Gesetz (ECG), Mediengesetz (MedienG), Datenschutz-Grundverordnung (DSGVO), Telekommunikationsgesetz 2021 (TKG 2021)</p>
</div>
<h2>Haftungsausschluss</h2>
<p>Die Inhalte dieser Website wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich.</p>
<p>Für die Inhalte externer Links (OpenStreetMap, Wikipedia) übernehmen wir keine Haftung. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.</p>
<h2>Urheberrecht</h2>
<p>Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem österreichischen Urheberrecht. Die Simulationen, Texte, Grafiken und das didaktische Konzept sind geistiges Eigentum von Schroffenegger & Mößlang.</p>
<p>Geodaten: © <a href="https://www.openstreetmap.org/copyright" style="color:#4a7c8a">OpenStreetMap</a> contributors.</p>
<h2>Kontaktformular</h2>
<div class="card">
<label>Ihr Name</label>
<input type="text" id="cf-name" placeholder="Vor- und Nachname">
<label>E-Mail-Adresse</label>
<input type="email" id="cf-email" placeholder="name@example.at">
<label>Betreff</label>
<select id="cf-subject">
<option value="Allgemeine Anfrage">Allgemeine Anfrage</option>
<option value="Technisches Problem">Technisches Problem</option>
<option value="Datenschutz">Datenschutz</option>
<option value="Barrierefreiheit">Barrierefreiheit</option>
<option value="Lizenzanfrage">Lizenzanfrage</option>
<option value="Sonstiges">Sonstiges</option>
</select>
<label>Nachricht</label>
<textarea id="cf-message" placeholder="Ihre Nachricht…"></textarea>
<div class="captcha-box">
<span class="captcha-q" id="captcha-question"></span>
<input type="text" id="captcha-answer" class="captcha-input" placeholder="?">
<span style="font-size:.65rem;color:#8a8a8a">(Spam-Schutz)</span>
</div>
<button class="btn" onclick="sendContact()">Nachricht senden</button>
<div class="msg" id="cf-msg"></div>
</div>
<div class="footer-note">
<p><a href="datenschutz.html">Datenschutz</a> · <a href="barrierefreiheit.html">Barrierefreiheit</a> · <a href="index.html">geograsim.at</a></p>
</div>
</div>
<script>
var BASE = (window.__GGS__?.baseUrl) || '';
if (!BASE) { var p = location.pathname, i = p.indexOf('/geograsim'); if (i !== -1) { var rest = p.substring(i + '/geograsim'.length); BASE = rest.indexOf('/App/') === 0 ? p.substring(0, i) + '/geograsim/App' : p.substring(0, i) + '/geograsim'; } }
// Eigenes Captcha: einfache Rechenaufgabe
var captchaA, captchaB, captchaOp, captchaResult;
function newCaptcha() {
captchaA = 2 + Math.floor(Math.random() * 8);
captchaB = 1 + Math.floor(Math.random() * 9);
captchaOp = Math.random() < 0.5 ? '+' : '×';
captchaResult = captchaOp === '+' ? captchaA + captchaB : captchaA * captchaB;
document.getElementById('captcha-question').textContent = 'Was ist ' + captchaA + ' ' + captchaOp + ' ' + captchaB + '?';
document.getElementById('captcha-answer').value = '';
}
newCaptcha();
async function sendContact() {
var name = document.getElementById('cf-name').value.trim();
var email = document.getElementById('cf-email').value.trim();
var subject = document.getElementById('cf-subject').value;
var message = document.getElementById('cf-message').value.trim();
var answer = parseInt(document.getElementById('captcha-answer').value);
var msgEl = document.getElementById('cf-msg');
if (!name || !email || !message) { msgEl.textContent = 'Bitte alle Felder ausfüllen.'; msgEl.className = 'msg err'; return; }
if (answer !== captchaResult) { msgEl.textContent = 'Rechenaufgabe falsch. Bitte nochmal versuchen.'; msgEl.className = 'msg err'; newCaptcha(); return; }
try {
var r = await fetch(BASE + '/api/auth', {
method: 'POST', headers: {'Content-Type':'application/json'},
body: JSON.stringify({action:'contact', name:name, email:email, subject:subject, message:message})
});
var d = await r.json();
if (d.error) { msgEl.textContent = d.error; msgEl.className = 'msg err'; return; }
msgEl.textContent = 'Nachricht gesendet! Wir melden uns zeitnah.'; msgEl.className = 'msg ok';
document.getElementById('cf-name').value = '';
document.getElementById('cf-email').value = '';
document.getElementById('cf-message').value = '';
newCaptcha();
} catch(e) {
msgEl.textContent = 'Fehler beim Senden. Bitte versuchen Sie es per E-Mail.'; msgEl.className = 'msg err';
}
}
</script>
</body>
</html>