Add Vorlagen editor, upload portal, onboarding, and participant import command
- Dokument-Vorlagen-Editor: create/edit/reset document templates (admin) - Upload-Portal: public portal for Nachweis uploads via token - Onboarding: invite Destinatäre via email with multi-step wizard - Bestätigungsschreiben: preview and send confirmation letters - Email settings: SMTP configuration UI - Management command: import_veranstaltung_teilnehmer for bulk participant import Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
216
app/templates/portal/einwilligung_onboarding.html
Normal file
216
app/templates/portal/einwilligung_onboarding.html
Normal file
@@ -0,0 +1,216 @@
|
||||
{# Einwilligungserklärung für das Onboarding-Formular (Schritt 1) #}
|
||||
{# Wird eingebettet in das mehrstufige Onboarding-Formular. #}
|
||||
{# Variablen: einladung_token, stiftung_email #}
|
||||
|
||||
<div class="dse-panel card border-0 shadow-sm mb-4">
|
||||
<div class="card-header" style="background: linear-gradient(135deg, #004225 0%, #006837 100%); color: white;">
|
||||
<h5 class="mb-0">
|
||||
<i class="fas fa-shield-alt me-2"></i>
|
||||
Datenschutz & Einwilligung
|
||||
</h5>
|
||||
<small class="opacity-85">Bitte lesen Sie die folgenden Erklärungen sorgfältig und bestätigen Sie diese, um fortzufahren.</small>
|
||||
</div>
|
||||
|
||||
<div class="card-body p-4">
|
||||
|
||||
{# ─── Datenschutzerklärung ─────────────────────────────────────────────── #}
|
||||
<div class="section mb-4">
|
||||
<h6 class="text-uppercase text-muted fw-bold mb-3" style="font-size: 0.78rem; letter-spacing: 0.05em;">
|
||||
<i class="fas fa-file-alt me-1"></i> Datenschutzerklärung
|
||||
</h6>
|
||||
|
||||
<div class="border rounded p-3 bg-light" style="max-height: 280px; overflow-y: auto; font-size: 0.88rem; line-height: 1.6;">
|
||||
|
||||
<p><strong>Verantwortliche Stelle:</strong><br>
|
||||
van Hees-Theyssen-Vogel'sche Stiftung, Raesfelder Str. 3, 46499 Hamminkeln<br>
|
||||
E-Mail: {{ stiftung_email|default:"stiftung@vhtv-stiftung.de" }}</p>
|
||||
|
||||
<p><strong>Zweck der Datenerhebung:</strong><br>
|
||||
Die von Ihnen in diesem Formular eingegebenen personenbezogenen Daten dienen ausschließlich
|
||||
der Prüfung Ihrer Aufnahme als Destinatär (Begünstigter) der Stiftung. Dies umfasst die
|
||||
Feststellung Ihrer Anspruchsberechtigung gemäß § 53 Abgabenordnung (AO) sowie der
|
||||
Stiftungssatzung.</p>
|
||||
|
||||
<p><strong>Erhobene Daten:</strong>
|
||||
Persönliche Identifikationsdaten (Name, Adresse, Geburtsdatum, Kontaktdaten),
|
||||
Identitätsnachweise, Verwandtschaftsnachweis, Ausbildungs-/Studiendaten sowie
|
||||
Angaben zur finanziellen Situation (Einkommen, Vermögen, Haushaltskosten).</p>
|
||||
|
||||
<p><strong>Rechtsgrundlagen:</strong>
|
||||
Art. 6 Abs. 1 lit. b DSGVO (Vertragsanbahnung), Art. 9 Abs. 2 lit. b DSGVO
|
||||
(besondere Datenkategorien im Bereich Sozialrecht) sowie Ihre nachstehende
|
||||
Einwilligung gemäß Art. 6 Abs. 1 lit. a DSGVO.</p>
|
||||
|
||||
<p><strong>Speicherdauer:</strong>
|
||||
Nicht abgeschlossene oder nicht freigegebene Anträge werden spätestens nach 90 Tagen gelöscht.
|
||||
Daten aufgenommener Destinatäre werden für die Dauer des Förderverhältnisses sowie
|
||||
10 Jahre darüber hinaus aufbewahrt (steuerrechtliche Aufbewahrungspflicht gem. § 147 AO).</p>
|
||||
|
||||
<p><strong>Ihre Rechte:</strong>
|
||||
Sie haben das Recht auf Auskunft (Art. 15 DSGVO), Berichtigung (Art. 16 DSGVO),
|
||||
Löschung (Art. 17 DSGVO), Einschränkung der Verarbeitung (Art. 18 DSGVO),
|
||||
Datenübertragbarkeit (Art. 20 DSGVO) und Widerspruch (Art. 21 DSGVO).
|
||||
Weiterhin können Sie eine erteilte Einwilligung jederzeit widerrufen (Art. 7 Abs. 3 DSGVO).
|
||||
Zur Ausübung Ihrer Rechte wenden Sie sich an: stiftung@vhtv-stiftung.de.</p>
|
||||
|
||||
<p><strong>Beschwerderecht:</strong>
|
||||
Sie haben das Recht, sich bei der Landesbeauftragten für Datenschutz und
|
||||
Informationsfreiheit NRW zu beschweren (www.ldi.nrw.de).</p>
|
||||
|
||||
<p class="mb-0">
|
||||
<a href="{% url 'portal:datenschutzerklaerung' %}" target="_blank" class="text-decoration-none">
|
||||
<i class="fas fa-external-link-alt me-1"></i>
|
||||
Vollständige Datenschutzerklärung öffnen
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="form-check mt-3">
|
||||
<input class="form-check-input" type="checkbox" id="zustimmung_dse" name="zustimmung_dse"
|
||||
value="1" required>
|
||||
<label class="form-check-label fw-semibold" for="zustimmung_dse">
|
||||
Ich habe die Datenschutzerklärung gelesen und verstanden und stimme der
|
||||
Verarbeitung meiner personenbezogenen Daten zum genannten Zweck zu.
|
||||
</label>
|
||||
<div class="invalid-feedback">
|
||||
Bitte bestätigen Sie die Datenschutzerklärung, um fortzufahren.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="my-4">
|
||||
|
||||
{# ─── Erklärung des Leistungsempfängers ───────────────────────────────── #}
|
||||
<div class="section mb-4">
|
||||
<h6 class="text-uppercase text-muted fw-bold mb-3" style="font-size: 0.78rem; letter-spacing: 0.05em;">
|
||||
<i class="fas fa-pen-fancy me-1"></i> Erklärung des Antragstellers (gemäß Stiftungsmerkblatt)
|
||||
</h6>
|
||||
|
||||
<div class="border rounded p-3 bg-light" style="font-size: 0.88rem; line-height: 1.7;">
|
||||
<p>
|
||||
Ich erkläre, dass meine Angaben in diesem Formular sowie in allen beigefügten Unterlagen
|
||||
<strong>vollständig und wahrheitsgemäß</strong> sind. Ich bin mir bewusst, dass
|
||||
unvollständige, fehlerhafte oder wissentlich falsche Angaben zum Ausschluss
|
||||
von Leistungen der Stiftung sowie ggf. zur Rückforderung bereits gewährter
|
||||
Unterstützung führen können.
|
||||
</p>
|
||||
<p>
|
||||
Ich verpflichte mich, <strong>Änderungen meiner Einkommens- und Vermögenssituation</strong>
|
||||
sowie meines Ausbildungsstatus unverzüglich der Stiftung mitzuteilen, sobald diese
|
||||
zu einer Änderung der Anspruchsvoraussetzungen führen könnten.
|
||||
</p>
|
||||
<p class="mb-0">
|
||||
Mir ist bekannt, dass die Stiftung ihre Unterstützungsleistungen nach Maßgabe
|
||||
des <strong>§ 53 Abgabenordnung (AO)</strong> erbringt und daher die Einhaltung
|
||||
der dort genannten Einkommens- und Vermögensgrenzen regelmäßig überprüfen muss.
|
||||
</p>
|
||||
|
||||
<div class="mt-3 p-2 rounded" style="background: #fff8e1; border: 1px solid #ffc107; font-size: 0.82rem;">
|
||||
<i class="fas fa-info-circle me-1 text-warning"></i>
|
||||
<strong>Aktuelle Grenzwerte gemäß § 53 Nr. 2 AO (Stand 01/2024):</strong>
|
||||
Bezüge max. 2.245 € monatlich (5× Regelsatz 449 €); Vermögen max. 15.500 €.
|
||||
Bei Haushaltsangehörigen erhöhen sich die Grenzen entsprechend.
|
||||
Maßgeblich sind die jeweils gültigen Werte zum Zeitpunkt der Prüfung.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-check mt-3">
|
||||
<input class="form-check-input" type="checkbox" id="zustimmung_erklaerung" name="zustimmung_erklaerung"
|
||||
value="1" required>
|
||||
<label class="form-check-label fw-semibold" for="zustimmung_erklaerung">
|
||||
Ich bestätige die vorstehende Erklärung und erkenne die Angabepflichten
|
||||
sowie die Folgen unvollständiger oder falscher Angaben an.
|
||||
</label>
|
||||
<div class="invalid-feedback">
|
||||
Bitte bestätigen Sie die Erklärung des Antragstellers, um fortzufahren.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="my-4">
|
||||
|
||||
{# ─── Optionale Einwilligung ───────────────────────────────────────────── #}
|
||||
<div class="section mb-2">
|
||||
<h6 class="text-uppercase text-muted fw-bold mb-3" style="font-size: 0.78rem; letter-spacing: 0.05em;">
|
||||
<i class="fas fa-envelope-open-text me-1"></i> Kommunikation (freiwillig)
|
||||
</h6>
|
||||
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" id="zustimmung_kommunikation"
|
||||
name="zustimmung_kommunikation" value="1">
|
||||
<label class="form-check-label" for="zustimmung_kommunikation">
|
||||
Ich bin damit einverstanden, dass die Stiftung mich per E-Mail über
|
||||
Fristen, Nachweisverpflichtungen und stiftungsbezogene Informationen kontaktiert.
|
||||
</label>
|
||||
<small class="d-block text-muted mt-1">
|
||||
Diese Einwilligung ist freiwillig und kann jederzeit widerrufen werden.
|
||||
Ohne diese Einwilligung ist ggf. nur postalische Kommunikation möglich.
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{# Hidden: Zeitstempel der Einwilligung #}
|
||||
<input type="hidden" name="einwilligung_zeitstempel" id="einwilligung_zeitstempel">
|
||||
|
||||
</div><!-- /card-body -->
|
||||
</div><!-- /dse-panel -->
|
||||
|
||||
{# JavaScript: Zeitstempel bei Seitenaufruf setzen, Pflichtfelder validieren #}
|
||||
<script>
|
||||
(function () {
|
||||
// Zeitstempel der Anzeige setzen (nicht des Absendens, soll als Nachweis dienen)
|
||||
var ts = document.getElementById('einwilligung_zeitstempel');
|
||||
if (ts) {
|
||||
ts.value = new Date().toISOString();
|
||||
}
|
||||
|
||||
// Bootstrap-Validierung für Pflicht-Checkboxen
|
||||
var form = document.querySelector('form');
|
||||
if (form) {
|
||||
form.addEventListener('submit', function (evt) {
|
||||
var dse = document.getElementById('zustimmung_dse');
|
||||
var erkl = document.getElementById('zustimmung_erklaerung');
|
||||
var valid = true;
|
||||
|
||||
if (dse && !dse.checked) {
|
||||
dse.classList.add('is-invalid');
|
||||
valid = false;
|
||||
} else if (dse) {
|
||||
dse.classList.remove('is-invalid');
|
||||
}
|
||||
|
||||
if (erkl && !erkl.checked) {
|
||||
erkl.classList.add('is-invalid');
|
||||
valid = false;
|
||||
} else if (erkl) {
|
||||
erkl.classList.remove('is-invalid');
|
||||
}
|
||||
|
||||
if (!valid) {
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
// Zum ersten Fehler scrollen
|
||||
var firstInvalid = form.querySelector('.is-invalid');
|
||||
if (firstInvalid) {
|
||||
firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||
}
|
||||
}
|
||||
}, true);
|
||||
|
||||
// Live-Feedback bei Checkbox-Änderung
|
||||
['zustimmung_dse', 'zustimmung_erklaerung'].forEach(function (id) {
|
||||
var el = document.getElementById(id);
|
||||
if (el) {
|
||||
el.addEventListener('change', function () {
|
||||
if (this.checked) {
|
||||
this.classList.remove('is-invalid');
|
||||
this.classList.add('is-valid');
|
||||
} else {
|
||||
this.classList.remove('is-valid');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
Reference in New Issue
Block a user