Cookie-Einstellungen in Footer aufnehmen

This commit is contained in:
2026-08-27 12:51:02 +02:00
parent da7132d4ce
commit 2179744ddf
13 changed files with 95 additions and 14 deletions
+25
View File
@@ -74,6 +74,9 @@ $assert('Matomo selbst ist im HTML nicht vorab eingebunden',
&& !str_contains($body, '"siteId"'));
$assert('Cookie-Einstellungen bleiben nach der Entscheidung erreichbar',
str_contains($body, 'analytics-consent-settings'));
$assert('Footer-Schalter wird bei aktiver Analyse ausgegeben',
str_contains(app_analytics_footer_settings_button_html(), 'data-analytics-settings')
&& str_contains(app_public_legal_footer(), 'Cookie-Einstellungen'));
$assert('Browser nutzt den lokalen First-Party-Endpunkt',
str_contains($body, '"trackingEndpoint":"nutzungsanalyse.php"')
&& str_contains($body, 'assets/js/privacy-settings.js'));
@@ -94,6 +97,9 @@ $assert('Keine Kaffeeliste-Benutzerkennung wird gelesen',
$assert('Widerruf stoppt Tracking und löscht Analyse-Cookies',
str_contains($javascript, 'removeAnalysisCookies()')
&& str_contains($javascript, "name !== visitorCookieName"));
$assert('Alle Cookie-Einstellungs-Schalter öffnen denselben Dialog',
str_contains($javascript, "querySelectorAll('[data-analytics-settings]')")
&& str_contains($javascript, 'settingsButtons.forEach'));
$relay = file_get_contents(APP_ROOT . '/app/analytics-relay.php') ?: '';
$assert('Relay übernimmt keine Client-IP',
@@ -130,6 +136,25 @@ foreach ($publicTemplates as $template) {
$assert('App-Layout bindet Head und Body zentral ein',
str_contains(file_get_contents(APP_ROOT . '/header.php') ?: '', 'app_analytics_head_html')
&& str_contains(file_get_contents(APP_ROOT . '/footer.php') ?: '', 'app_analytics_body_html'));
$appFooter = file_get_contents(APP_ROOT . '/footer.php') ?: '';
$assert('App-Footer enthält Cookie-Einstellungen ohne Copyright- und Designlink',
str_contains($appFooter, 'app_analytics_footer_settings_button_html')
&& !str_contains($appFooter, '© Clemens Creutzburg')
&& !str_contains($appFooter, 'html5up.net'));
foreach ([
'email-verifizieren.php',
'landing.php',
'login.php',
'passwort-vergessen.php',
'passwort-zuruecksetzen.php',
'register.php',
'zwei-faktor.php',
] as $manualFooterTemplate) {
$contents = file_get_contents(APP_ROOT . '/' . $manualFooterTemplate) ?: '';
$assert("{$manualFooterTemplate} bietet Cookie-Einstellungen im Footer an",
str_contains($contents, 'app_analytics_footer_settings_button_html'));
}
$privacy = app_legal_document_text('privacy_notice');
$assert('Aktuelle Datenschutzerklärung beschreibt Matomo und Widerruf',