feat(marketing): Cookie-Hinweis & Datenschutz an Laravel-Integration angepasst
Durch die Laravel-Integration setzt die Seite jetzt technisch notwendige Cookies (markemacht-session, XSRF-TOKEN). Der pauschale Hinweis „Keine Cookies" stimmt damit nicht mehr. - mm-wirkung wird nicht mehr als Cookie gespiegelt → nur noch localStorage (JS + Inline-Head-Script); kein Flash, da vor erstem Paint gesetzt - Footer: „Keine Cookies" → „DSGVO-konform · keine Weitergabe" - Datenschutz: neuer Absatz „Technisch notwendige Cookies" (markemacht-session, XSRF-TOKEN; § 25 Abs. 2 TTDSG i.V.m. Art. 6 Abs. 1 lit. f DSGVO, kein Banner nötig) - Feature-Tests für Footer-Hinweis und Datenschutz-Inhalt Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
1f7c0aa430
commit
11a76f034b
5 changed files with 747 additions and 1 deletions
311
resources/js/web/markemacht.js
Normal file
311
resources/js/web/markemacht.js
Normal file
|
|
@ -0,0 +1,311 @@
|
||||||
|
/* markemacht.de — Interaktionen (portiert aus _markemacht.de/assets/js/app.js)
|
||||||
|
* Anpassungen für Laravel/Vite:
|
||||||
|
* - Aktiv-Navigation kommt serverseitig (aria-current/is-active in der Nav-Komponente) → kein JS nötig.
|
||||||
|
* - Fonts sind in theme-markemacht.css gebündelt → keine dynamische Font-Injektion mehr.
|
||||||
|
* - Das Audit-Formular wird von der Livewire-Komponente versendet → hier nur Modal-Chrome.
|
||||||
|
*/
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/* ---------- Wirkung ---------------------------------------------------- */
|
||||||
|
|
||||||
|
const STORAGE_KEY = 'mm-wirkung';
|
||||||
|
const VALID = ['monolith', 'editorial'];
|
||||||
|
const DEFAULT = 'monolith';
|
||||||
|
|
||||||
|
function getStored() {
|
||||||
|
try {
|
||||||
|
const v = localStorage.getItem(STORAGE_KEY);
|
||||||
|
return VALID.includes(v) ? v : null;
|
||||||
|
} catch (_) { return null; }
|
||||||
|
}
|
||||||
|
|
||||||
|
function applyMode(mode) {
|
||||||
|
if (!VALID.includes(mode)) mode = DEFAULT;
|
||||||
|
document.documentElement.setAttribute('data-theme', mode);
|
||||||
|
// Persistenz ausschließlich im localStorage — kein Cookie (Datenschutz, siehe Footer/Datenschutz).
|
||||||
|
try { localStorage.setItem(STORAGE_KEY, mode); } catch (_) {}
|
||||||
|
syncButtons(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
function syncButtons(mode) {
|
||||||
|
document.querySelectorAll('[data-wirkung]').forEach((btn) => {
|
||||||
|
const pressed = btn.getAttribute('data-wirkung') === mode;
|
||||||
|
btn.setAttribute('aria-pressed', pressed ? 'true' : 'false');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function initWirkung() {
|
||||||
|
const initial = getStored() || DEFAULT;
|
||||||
|
applyMode(initial);
|
||||||
|
|
||||||
|
document.querySelectorAll('[data-wirkung]').forEach((btn) => {
|
||||||
|
btn.addEventListener('click', () => {
|
||||||
|
applyMode(btn.getAttribute('data-wirkung'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- Mobile Drawer --------------------------------------------- */
|
||||||
|
|
||||||
|
function initDrawer() {
|
||||||
|
const drawer = document.querySelector('[data-mobile-drawer]');
|
||||||
|
if (!drawer) return;
|
||||||
|
|
||||||
|
const openBtns = document.querySelectorAll('[data-drawer-open]');
|
||||||
|
const closeBtns = document.querySelectorAll('[data-drawer-close]');
|
||||||
|
|
||||||
|
function open() {
|
||||||
|
drawer.classList.add('is-open');
|
||||||
|
document.body.classList.add('drawer-open');
|
||||||
|
drawer.setAttribute('aria-hidden', 'false');
|
||||||
|
openBtns.forEach((btn) => btn.setAttribute('aria-expanded', 'true'));
|
||||||
|
const firstLink = drawer.querySelector('a, button');
|
||||||
|
if (firstLink) firstLink.focus();
|
||||||
|
}
|
||||||
|
function close() {
|
||||||
|
drawer.classList.remove('is-open');
|
||||||
|
document.body.classList.remove('drawer-open');
|
||||||
|
drawer.setAttribute('aria-hidden', 'true');
|
||||||
|
openBtns.forEach((btn) => btn.setAttribute('aria-expanded', 'false'));
|
||||||
|
}
|
||||||
|
|
||||||
|
openBtns.forEach((b) => b.addEventListener('click', open));
|
||||||
|
closeBtns.forEach((b) => b.addEventListener('click', close));
|
||||||
|
drawer.querySelectorAll('a[href]').forEach((a) => a.addEventListener('click', close));
|
||||||
|
|
||||||
|
document.addEventListener('keydown', (e) => {
|
||||||
|
if (e.key === 'Escape' && drawer.classList.contains('is-open')) close();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- Audit Modal (nur Chrome: öffnen/schließen/Fokus) ----------- */
|
||||||
|
|
||||||
|
function initAuditModal() {
|
||||||
|
const modal = document.querySelector('[data-audit-modal]');
|
||||||
|
if (!modal) return;
|
||||||
|
|
||||||
|
const openButtons = document.querySelectorAll('[data-audit-modal-open]');
|
||||||
|
const closeButtons = modal.querySelectorAll('[data-audit-modal-close]');
|
||||||
|
const focusableSelector = 'a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled])';
|
||||||
|
let lastActive = null;
|
||||||
|
|
||||||
|
function getFocusable() {
|
||||||
|
return Array.from(modal.querySelectorAll(focusableSelector))
|
||||||
|
.filter((el) => el.offsetParent !== null && el.tabIndex >= 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
function open() {
|
||||||
|
lastActive = document.activeElement;
|
||||||
|
modal.classList.add('is-open');
|
||||||
|
modal.setAttribute('aria-hidden', 'false');
|
||||||
|
document.body.classList.add('modal-open');
|
||||||
|
const first = getFocusable()[0];
|
||||||
|
if (first) first.focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
function close() {
|
||||||
|
modal.classList.remove('is-open');
|
||||||
|
modal.setAttribute('aria-hidden', 'true');
|
||||||
|
document.body.classList.remove('modal-open');
|
||||||
|
if (lastActive && typeof lastActive.focus === 'function') lastActive.focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
openButtons.forEach((button) => button.addEventListener('click', open));
|
||||||
|
closeButtons.forEach((button) => button.addEventListener('click', close));
|
||||||
|
modal.addEventListener('click', (event) => {
|
||||||
|
if (event.target === modal) close();
|
||||||
|
});
|
||||||
|
document.addEventListener('keydown', (event) => {
|
||||||
|
if (!modal.classList.contains('is-open')) return;
|
||||||
|
if (event.key === 'Escape') { close(); return; }
|
||||||
|
if (event.key !== 'Tab') return;
|
||||||
|
|
||||||
|
const focusable = getFocusable();
|
||||||
|
if (!focusable.length) return;
|
||||||
|
const first = focusable[0];
|
||||||
|
const last = focusable[focusable.length - 1];
|
||||||
|
if (event.shiftKey && document.activeElement === first) {
|
||||||
|
event.preventDefault();
|
||||||
|
last.focus();
|
||||||
|
} else if (!event.shiftKey && document.activeElement === last) {
|
||||||
|
event.preventDefault();
|
||||||
|
first.focus();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Livewire signalisiert erfolgreichen Versand → Modal schließen.
|
||||||
|
window.addEventListener('audit-sent', () => window.setTimeout(close, 2500));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- Hero Keyvisual (Lazy Load) -------------------------------- */
|
||||||
|
|
||||||
|
function initHeroKeyvisual() {
|
||||||
|
const slots = document.querySelectorAll('.monolith');
|
||||||
|
if (!slots.length) return;
|
||||||
|
|
||||||
|
const resolveCssUrl = (value) => {
|
||||||
|
const trimmed = (value || '').trim();
|
||||||
|
if (!trimmed) return null;
|
||||||
|
|
||||||
|
// Manche Browser liefern bereits eine absolute URL ohne url()-Hülle.
|
||||||
|
if (/^https?:\/\//i.test(trimmed)) return trimmed;
|
||||||
|
|
||||||
|
const match = trimmed.match(/url\(\s*["']?([^"')]+)["']?\s*\)/i);
|
||||||
|
if (!match) return null;
|
||||||
|
|
||||||
|
const raw = match[1].trim();
|
||||||
|
if (/^https?:\/\//i.test(raw)) return raw;
|
||||||
|
|
||||||
|
// url(/web/…) wird in Custom Properties teils als //web/… serialisiert.
|
||||||
|
// Das ist kein protocol-relative Host, sondern ein site-root-Pfad.
|
||||||
|
if (raw.startsWith('//')) {
|
||||||
|
return `${window.location.origin}/${raw.replace(/^\/+/, '')}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (raw.startsWith('/')) {
|
||||||
|
return `${window.location.origin}${raw}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const cssLink = document.querySelector('link[rel="stylesheet"][href*="theme-markemacht"]');
|
||||||
|
const base = cssLink ? new URL(cssLink.href) : new URL(window.location.href);
|
||||||
|
|
||||||
|
return new URL(raw, base).href;
|
||||||
|
};
|
||||||
|
|
||||||
|
const preloadImage = (url) => new Promise((resolve, reject) => {
|
||||||
|
const img = new Image();
|
||||||
|
img.onload = () => resolve();
|
||||||
|
img.onerror = () => reject(new Error(`Hero image failed: ${url}`));
|
||||||
|
img.src = url;
|
||||||
|
});
|
||||||
|
|
||||||
|
const editorialActive = () =>
|
||||||
|
document.documentElement.getAttribute('data-theme') === 'editorial';
|
||||||
|
|
||||||
|
slots.forEach((slot) => {
|
||||||
|
const styles = getComputedStyle(slot);
|
||||||
|
const monoUrl = resolveCssUrl(styles.getPropertyValue('--hero-monolith'));
|
||||||
|
const editUrl = resolveCssUrl(styles.getPropertyValue('--hero-editorial'));
|
||||||
|
|
||||||
|
const loadMono = () => {
|
||||||
|
if (slot.classList.contains('is-loaded-mono') || !monoUrl) return Promise.resolve();
|
||||||
|
return preloadImage(monoUrl)
|
||||||
|
.then(() => slot.classList.add('is-loaded-mono'))
|
||||||
|
.catch((err) => console.warn(err));
|
||||||
|
};
|
||||||
|
|
||||||
|
const loadEditorial = () => {
|
||||||
|
if (slot.classList.contains('is-loaded-editorial') || !editUrl) return Promise.resolve();
|
||||||
|
return preloadImage(editUrl)
|
||||||
|
.then(() => slot.classList.add('is-loaded-editorial'))
|
||||||
|
.catch((err) => console.warn(err));
|
||||||
|
};
|
||||||
|
|
||||||
|
const loadForViewport = () => {
|
||||||
|
loadMono().then(() => {
|
||||||
|
if (editorialActive()) loadEditorial();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
document.querySelectorAll('[data-wirkung="editorial"]').forEach((btn) => {
|
||||||
|
btn.addEventListener('mouseenter', loadEditorial, { once: true });
|
||||||
|
btn.addEventListener('focus', loadEditorial, { once: true });
|
||||||
|
});
|
||||||
|
|
||||||
|
const themeObserver = new MutationObserver(() => {
|
||||||
|
if (editorialActive()) loadEditorial();
|
||||||
|
});
|
||||||
|
themeObserver.observe(document.documentElement, {
|
||||||
|
attributes: true,
|
||||||
|
attributeFilter: ['data-theme'],
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!('IntersectionObserver' in window)) {
|
||||||
|
loadForViewport();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const target = slot.closest('.hero-keyvisual') || slot.closest('.split-visual') || slot;
|
||||||
|
const io = new IntersectionObserver((entries) => {
|
||||||
|
entries.forEach((entry) => {
|
||||||
|
if (!entry.isIntersecting) return;
|
||||||
|
loadForViewport();
|
||||||
|
io.unobserve(entry.target);
|
||||||
|
});
|
||||||
|
}, { rootMargin: '120px 0px', threshold: 0.01 });
|
||||||
|
|
||||||
|
io.observe(target);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- Reveal ----------------------------------------------------- */
|
||||||
|
|
||||||
|
function initReveal() {
|
||||||
|
const items = document.querySelectorAll('[data-reveal]');
|
||||||
|
if (!items.length) return;
|
||||||
|
|
||||||
|
const prefersReduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
||||||
|
if (prefersReduced || !('IntersectionObserver' in window)) {
|
||||||
|
items.forEach((el) => el.classList.add('is-revealed'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const io = new IntersectionObserver((entries) => {
|
||||||
|
entries.forEach((entry) => {
|
||||||
|
if (!entry.isIntersecting) return;
|
||||||
|
const el = entry.target;
|
||||||
|
const delay = parseInt(el.getAttribute('data-reveal-delay') || '0', 10);
|
||||||
|
window.setTimeout(() => el.classList.add('is-revealed'), delay);
|
||||||
|
io.unobserve(el);
|
||||||
|
});
|
||||||
|
}, { threshold: 0.08, rootMargin: '0px 0px -5% 0px' });
|
||||||
|
|
||||||
|
items.forEach((el) => io.observe(el));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- Scroll position on navigation ------------------------------ */
|
||||||
|
|
||||||
|
function initScrollPosition() {
|
||||||
|
if ('scrollRestoration' in history) history.scrollRestoration = 'manual';
|
||||||
|
|
||||||
|
function scrollToTargetOrTop() {
|
||||||
|
const hash = location.hash;
|
||||||
|
if (hash.length > 1) {
|
||||||
|
const target = document.getElementById(decodeURIComponent(hash.slice(1)));
|
||||||
|
if (target) { target.scrollIntoView(); return; }
|
||||||
|
}
|
||||||
|
window.scrollTo(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollToTargetOrTop();
|
||||||
|
window.addEventListener('pageshow', (event) => {
|
||||||
|
if (event.persisted) scrollToTargetOrTop();
|
||||||
|
});
|
||||||
|
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
const active = document.activeElement;
|
||||||
|
if (active && active.closest('.site-footer')) {
|
||||||
|
active.blur();
|
||||||
|
scrollToTargetOrTop();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------- Boot ------------------------------------------------------- */
|
||||||
|
|
||||||
|
function boot() {
|
||||||
|
initScrollPosition();
|
||||||
|
initWirkung();
|
||||||
|
initDrawer();
|
||||||
|
initAuditModal();
|
||||||
|
initHeroKeyvisual();
|
||||||
|
initReveal();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState === 'loading') {
|
||||||
|
document.addEventListener('DOMContentLoaded', boot);
|
||||||
|
} else {
|
||||||
|
boot();
|
||||||
|
}
|
||||||
|
})();
|
||||||
323
resources/views/web/datenschutz.blade.php
Normal file
323
resources/views/web/datenschutz.blade.php
Normal file
|
|
@ -0,0 +1,323 @@
|
||||||
|
<x-web::layouts.marketing
|
||||||
|
active="datenschutz"
|
||||||
|
title="Datenschutzerklärung · MARKE MACHT"
|
||||||
|
description="Datenschutzerklärung von MARKE MACHT mit Informationen zu Hosting, Server-Logs, Kontakt und Analyse."
|
||||||
|
ogTitle="Datenschutzerklärung · MARKE MACHT"
|
||||||
|
ogType="website"
|
||||||
|
ogDescription="Datenschutzerklärung von MARKE MACHT mit Informationen zu Hosting, Server-Logs, Kontakt und Analyse.">
|
||||||
|
|
||||||
|
<header class="article-head">
|
||||||
|
<div class="shell grid-12">
|
||||||
|
<div class="col-12 stack-24">
|
||||||
|
<a class="link-arrow" href="{{ route('index') }}">
|
||||||
|
<svg class="icon" aria-hidden="true"><use href="/web/markemacht/icons.svg#arrow-back"></use></svg>
|
||||||
|
Zurück zur Startseite
|
||||||
|
</a>
|
||||||
|
<div class="article-meta">
|
||||||
|
<span class="meta accent">Rechtliches</span>
|
||||||
|
<span class="meta mute">Datenschutz</span>
|
||||||
|
</div>
|
||||||
|
<h1 class="hero-headline" style="max-width: 18ch; font-size: clamp(38px, 5.6vw, 68px);">
|
||||||
|
Datenschutzerklärung
|
||||||
|
</h1>
|
||||||
|
<p class="lead dim max-wide">
|
||||||
|
Informationen dazu, welche personenbezogenen Daten beim Besuch dieser Website verarbeitet werden.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<article class="section section-border-top">
|
||||||
|
<div class="shell grid-12">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="prose">
|
||||||
|
<h2>1. Datenschutz auf einen Blick</h2>
|
||||||
|
<p><strong>Allgemeine Hinweise</strong></p>
|
||||||
|
<p>
|
||||||
|
Die folgenden Hinweise geben einen einfachen Überblick darüber, was mit Ihren personenbezogenen Daten passiert, wenn Sie unsere Website besuchen.
|
||||||
|
Personenbezogene Daten sind alle Daten, mit denen Sie persönlich identifiziert werden können. Ausführliche Informationen zum Thema Datenschutz
|
||||||
|
entnehmen Sie unserer unter diesem Text aufgeführten Datenschutzerklärung.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Datenerfassung auf unserer Website</strong></p>
|
||||||
|
<p><strong>Wer ist verantwortlich für die Datenerfassung auf dieser Website?</strong></p>
|
||||||
|
<p>
|
||||||
|
Die Datenverarbeitung auf dieser Website erfolgt durch den Websitebetreiber. Dessen Kontaktdaten können Sie dem Impressum dieser Website entnehmen.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Wie erfassen wir Ihre Daten?</strong></p>
|
||||||
|
<p>
|
||||||
|
Ihre Daten werden zum einen dadurch erhoben, dass Sie uns diese mitteilen. Hierbei kann es sich z.B. um Daten handeln, die Sie in ein Kontaktformular eingeben.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Andere Daten werden automatisch beim Besuch der Website durch unsere IT-Systeme erfasst. Das sind vor allem technische Daten
|
||||||
|
(z.B. Internetbrowser, Betriebssystem oder Uhrzeit des Seitenaufrufs). Die Erfassung dieser Daten erfolgt automatisch, sobald Sie unsere Website betreten.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Wofür nutzen wir Ihre Daten?</strong></p>
|
||||||
|
<p>
|
||||||
|
Ein Teil der Daten wird erhoben, um eine fehlerfreie Bereitstellung der Website zu gewährleisten.
|
||||||
|
Andere Daten werden zur anonymisierten Analyse Ihres Nutzerverhaltens verwendet.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Welche Rechte haben Sie bezüglich Ihrer Daten?</strong></p>
|
||||||
|
<p>
|
||||||
|
Sie haben jederzeit das Recht unentgeltlich Auskunft über Herkunft, Empfänger und Zweck Ihrer gespeicherten personenbezogenen Daten zu erhalten.
|
||||||
|
Sie haben außerdem ein Recht, die Berichtigung, Sperrung oder Löschung dieser Daten zu verlangen. Hierzu sowie zu weiteren Fragen zum Thema Datenschutz
|
||||||
|
können Sie sich jederzeit unter der im Impressum angegebenen Adresse an uns wenden. Des Weiteren steht Ihnen ein Beschwerderecht bei der zuständigen
|
||||||
|
Aufsichtsbehörde zu.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Außerdem haben Sie das Recht, unter bestimmten Umständen die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.
|
||||||
|
Details hierzu entnehmen Sie der Datenschutzerklärung unter „Recht auf Einschränkung der Verarbeitung“.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>2. Hosting</h2>
|
||||||
|
<p><strong>Externes Hosting</strong></p>
|
||||||
|
<p>
|
||||||
|
Diese Website wird bei einem externen Dienstleister gehostet (Hoster). Die personenbezogenen Daten, die auf dieser Website erfasst werden,
|
||||||
|
werden auf den Servern des Hosters gespeichert. Hierbei kann es sich v. a. um IP-Adressen, Kontaktanfragen, Meta- und Kommunikationsdaten,
|
||||||
|
Vertragsdaten, Kontaktdaten, Namen, Websitezugriffe und sonstige Daten, die über eine Website generiert werden, handeln.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Der Einsatz des Hosters erfolgt zum Zwecke der Vertragserfüllung gegenüber unseren potenziellen und bestehenden Kunden
|
||||||
|
(Art. 6 Abs. 1 lit. b DSGVO) und im Interesse einer sicheren, schnellen und effizienten Bereitstellung unseres Online-Angebots durch einen
|
||||||
|
professionellen Anbieter (Art. 6 Abs. 1 lit. f DSGVO). Unser Hoster wird Ihre Daten nur insoweit verarbeiten, wie dies zur Erfüllung seiner
|
||||||
|
Leistungspflichten erforderlich ist und unsere Weisungen in Bezug auf diese Daten befolgen.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Wir setzen folgenden Hoster ein:<br />
|
||||||
|
ALL-INKL.COM - Neue Medien Münnich<br />
|
||||||
|
Inhaber: René Münnich<br />
|
||||||
|
Hauptstraße 68<br />
|
||||||
|
02742 Friedersdorf
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Abschluss eines Vertrages über Auftragsverarbeitung (AVV)</strong></p>
|
||||||
|
<p>
|
||||||
|
Wir haben einen Vertrag über Auftragsverarbeitung (AVV) mit dem oben genannten Anbieter geschlossen. Hierbei handelt es sich um einen
|
||||||
|
datenschutzrechtlich vorgeschriebenen Vertrag, der gewährleistet, dass dieser die personenbezogenen Daten unserer Websitebesucher nur nach
|
||||||
|
unseren Weisungen und unter Einhaltung der DSGVO verarbeitet.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>3. Allgemeine Hinweise und Pflichtinformationen</h2>
|
||||||
|
<p><strong>Datenschutz</strong></p>
|
||||||
|
<p>
|
||||||
|
Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und
|
||||||
|
entsprechend der gesetzlichen Datenschutzvorschriften sowie dieser Datenschutzerklärung.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Wenn Sie diese Website benutzen, werden verschiedene personenbezogene Daten erhoben. Personenbezogene Daten sind Daten, mit denen Sie persönlich
|
||||||
|
identifiziert werden können. Die vorliegende Datenschutzerklärung erläutert, welche Daten wir erheben und wofür wir sie nutzen. Sie erläutert
|
||||||
|
auch, wie und zu welchem Zweck das geschieht.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann.
|
||||||
|
Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Hinweis zur verantwortlichen Stelle</strong></p>
|
||||||
|
<p>
|
||||||
|
Die verantwortliche Stelle für die Datenverarbeitung auf dieser Website ist:<br />
|
||||||
|
<br />
|
||||||
|
ADAMETZ.MEDIA<br />
|
||||||
|
Kevin Adametz<br />
|
||||||
|
In der Lake 4<br />
|
||||||
|
33739 Bielefeld<br />
|
||||||
|
<br />
|
||||||
|
Tel: +49 5206 7076721<br />
|
||||||
|
E-Mail: <a href="mailto:info@adametz.media">info@adametz.media</a>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Verantwortliche Stelle ist die natürliche oder juristische Person, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der
|
||||||
|
Verarbeitung von personenbezogenen Daten (z.B. Namen, E-Mail-Adressen o. Ä.) entscheidet.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Widerruf Ihrer Einwilligung zur Datenverarbeitung</strong></p>
|
||||||
|
<p>
|
||||||
|
Viele Datenverarbeitungsvorgänge sind nur mit Ihrer ausdrücklichen Einwilligung möglich. Sie können eine bereits erteilte Einwilligung
|
||||||
|
jederzeit widerrufen. Dazu reicht eine formlose Mitteilung per E-Mail an uns. Die Rechtmäßigkeit der bis zum Widerruf erfolgten Datenverarbeitung
|
||||||
|
bleibt vom Widerruf unberührt.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Widerspruchsrecht gegen die Datenerhebung in besonderen Fällen sowie gegen Direktwerbung (Art. 21 DSGVO)</strong></p>
|
||||||
|
<p>
|
||||||
|
Wenn die Datenverarbeitung auf Grundlage von Art. 6 Abs. 1 lit. e oder f DSGVO erfolgt, haben Sie jederzeit das Recht, aus Gründen, die sich aus
|
||||||
|
Ihrer besonderen Situation ergeben, gegen die Verarbeitung Ihrer personenbezogenen Daten Widerspruch einzulegen; dies gilt auch für ein auf diese
|
||||||
|
Bestimmungen gestütztes Profiling. Die jeweilige Rechtsgrundlage, auf denen eine Verarbeitung beruht, entnehmen Sie dieser Datenschutzerklärung.
|
||||||
|
Wenn Sie Widerspruch einlegen, werden wir Ihre betroffenen personenbezogenen Daten nicht mehr verarbeiten, es sei denn, wir können zwingende
|
||||||
|
schutzwürdige Gründe für die Verarbeitung nachweisen, die Ihre Interessen, Rechte und Freiheiten überwiegen oder die Verarbeitung dient der
|
||||||
|
Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen (Widerspruch nach Art. 21 Abs. 1 DSGVO).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Werden Ihre personenbezogenen Daten verarbeitet, um Direktwerbung zu betreiben, so haben Sie das Recht, jederzeit Widerspruch gegen die Verarbeitung
|
||||||
|
Sie betreffender personenbezogener Daten zum Zwecke derartiger Werbung einzulegen; dies gilt auch für das Profiling, soweit es mit solcher
|
||||||
|
Direktwerbung in Verbindung steht. Wenn Sie widersprechen, werden Ihre personenbezogenen Daten anschließend nicht mehr zum Zwecke der Direktwerbung
|
||||||
|
verwendet (Widerspruch nach Art. 21 Abs. 2 DSGVO).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Beschwerderecht bei der zuständigen Aufsichtsbehörde</strong></p>
|
||||||
|
<p>
|
||||||
|
Im Falle von Verstößen gegen die DSGVO steht den Betroffenen ein Beschwerderecht bei einer Aufsichtsbehörde, insbesondere in dem Mitgliedstaat
|
||||||
|
ihres gewöhnlichen Aufenthalts, ihres Arbeitsplatzes oder des Orts des mutmaßlichen Verstoßes zu. Das Beschwerderecht besteht unbeschadet
|
||||||
|
anderweitiger verwaltungsrechtlicher oder gerichtlicher Rechtsbehelfe.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Recht auf Datenübertragbarkeit</strong></p>
|
||||||
|
<p>
|
||||||
|
Sie haben das Recht, Daten, die wir auf Grundlage Ihrer Einwilligung oder in Erfüllung eines Vertrags automatisiert verarbeiten, an sich oder an
|
||||||
|
einen Dritten in einem gängigen, maschinenlesbaren Format aushändigen zu lassen. Sofern Sie die direkte Übertragung der Daten an einen anderen
|
||||||
|
Verantwortlichen verlangen, erfolgt dies nur, soweit es technisch machbar ist.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>SSL- bzw. TLS-Verschlüsselung</strong></p>
|
||||||
|
<p>
|
||||||
|
Diese Seite nutzt aus Sicherheitsgründen und zum Schutz der Übertragung vertraulicher Inhalte, wie zum Beispiel Bestellungen oder Anfragen,
|
||||||
|
die Sie an uns als Seitenbetreiber senden, eine SSL-bzw. TLS-Verschlüsselung. Eine verschlüsselte Verbindung erkennen Sie daran, dass die
|
||||||
|
Adresszeile des Browsers von “http://” auf “https://” wechselt und an dem Schloss-Symbol in Ihrer Browserzeile. Wenn die SSL- bzw.
|
||||||
|
TLS-Verschlüsselung aktiviert ist, können die Daten, die Sie an uns übermitteln, nicht von Dritten mitgelesen werden.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Auskunft, Sperrung, Löschung und Berichtigung</strong></p>
|
||||||
|
<p>
|
||||||
|
Sie haben im Rahmen der geltenden gesetzlichen Bestimmungen jederzeit das Recht auf unentgeltliche Auskunft über Ihre gespeicherten
|
||||||
|
personenbezogenen Daten, deren Herkunft und Empfänger und den Zweck der Datenverarbeitung und ggf. ein Recht auf Berichtigung, Sperrung oder
|
||||||
|
Löschung dieser Daten. Hierzu sowie zu weiteren Fragen zum Thema personenbezogene Daten können Sie sich jederzeit unter der im Impressum
|
||||||
|
angegebenen Adresse an uns wenden.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Recht auf Einschränkung der Verarbeitung</strong></p>
|
||||||
|
<p>
|
||||||
|
Sie haben das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen. Das Recht auf Einschränkung der Verarbeitung
|
||||||
|
besteht in folgenden Fällen:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Wenn Sie die Richtigkeit Ihrer bei uns gespeicherten personenbezogenen Daten bestreiten, benötigen wir in der Regel Zeit, um dies zu überprüfen.
|
||||||
|
Für die Dauer der Prüfung haben Sie das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Wenn die Verarbeitung Ihrer personenbezogenen Daten unrechtmäßig geschah / geschieht, können Sie statt der Löschung die Einschränkung der
|
||||||
|
Datenverarbeitung verlangen.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Wenn wir Ihre personenbezogenen Daten nicht mehr benötigen, Sie sie jedoch zur Ausübung, Verteidigung oder Geltendmachung von Rechtsansprüchen
|
||||||
|
benötigen, haben Sie das Recht, statt der Löschung die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Wenn Sie einen Widerspruch nach Art. 21 Abs. 1 DSGVO eingelegt haben, muss eine Abwägung zwischen Ihren und unseren Interessen vorgenommen werden.
|
||||||
|
Solange noch nicht feststeht, wessen Interessen überwiegen, haben Sie das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten
|
||||||
|
zu verlangen.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Wenn Sie die Verarbeitung Ihrer personenbezogenen Daten eingeschränkt haben, dürfen diese Daten – von ihrer Speicherung abgesehen – nur mit Ihrer
|
||||||
|
Einwilligung oder zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen oder zum Schutz der Rechte einer anderen natürlichen oder
|
||||||
|
juristischen Person oder aus Gründen eines wichtigen öffentlichen Interesses der Europäischen Union oder eines Mitgliedstaats verarbeitet werden.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Widerspruch gegen Werbe-E-Mails</strong></p>
|
||||||
|
<p>
|
||||||
|
Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten zur Übersendung von nicht ausdrücklich angeforderter Werbung und
|
||||||
|
Informationsmaterialien wird hiermit widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der
|
||||||
|
unverlangten Zusendung von Werbeinformationen, etwa durch Spam-E-Mails, vor.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>4. Datenerfassung auf unserer Website</h2>
|
||||||
|
<p><strong>Technisch notwendige Cookies</strong></p>
|
||||||
|
<p>
|
||||||
|
Diese Webseite setzt ausschließlich technisch notwendige Cookies, die für den Betrieb und die Absicherung
|
||||||
|
der Formulare (z. B. des Anfrage-/Kontaktformulars) erforderlich sind:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>markemacht-session</code> — hält Ihre Sitzung, damit eine Formulareingabe dem richtigen Seitenaufruf zugeordnet werden kann.<br />
|
||||||
|
<code>XSRF-TOKEN</code> — schützt Formulare vor websiteübergreifender Anfragefälschung (CSRF).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Diese Cookies werden ausschließlich von uns selbst gesetzt (First-Party), enthalten keine Profil- oder
|
||||||
|
Werbedaten, dienen weder der Analyse noch dem Tracking und werden nicht an Dritte weitergegeben. Rechtsgrundlage
|
||||||
|
ist § 25 Abs. 2 Nr. 2 TTDSG (für den vom Nutzer ausdrücklich gewünschten Dienst unbedingt erforderlich) in
|
||||||
|
Verbindung mit Art. 6 Abs. 1 lit. f DSGVO. Eine Einwilligung ist hierfür nicht erforderlich; ein Cookie-Banner
|
||||||
|
entfällt entsprechend.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Lokaler Speicher (localStorage)</strong></p>
|
||||||
|
<p>
|
||||||
|
Für die Darstellungseinstellung „Wirkung“ (monolithisch / editorial) wird Ihre Auswahl ausschließlich im
|
||||||
|
<code>localStorage</code> Ihres Browsers gespeichert — nicht in Cookies. Es werden dabei keine personenbezogenen Daten
|
||||||
|
übermittelt. Sie können den Eintrag jederzeit über die Browser-Einstellungen löschen.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Server-Log-Dateien</strong></p>
|
||||||
|
<p>
|
||||||
|
Der Provider der Seiten erhebt und speichert automatisch Informationen in so genannten Server-Log-Dateien, die Ihr Browser automatisch an uns
|
||||||
|
übermittelt. Dies sind:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Browsertyp und Browserversion<br />
|
||||||
|
verwendetes Betriebssystem<br />
|
||||||
|
Referrer URL<br />
|
||||||
|
Hostname des zugreifenden Rechners<br />
|
||||||
|
Uhrzeit der Serveranfrage<br />
|
||||||
|
IP-Adresse
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Eine Zusammenführung dieser Daten mit anderen Datenquellen wird nicht vorgenommen. Die Erfassung dieser Daten erfolgt auf Grundlage von
|
||||||
|
Art. 6 Abs. 1 lit. f DSGVO. Der Websitebetreiber hat ein berechtigtes Interesse an der technisch fehlerfreien Darstellung und der Optimierung
|
||||||
|
seiner Website – hierzu müssen die Server-Log-Files erfasst werden.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Kontaktformular & E-Mail-Kontakt</strong></p>
|
||||||
|
<p>
|
||||||
|
Wenn Sie uns per Kontaktformular oder per E-Mail Anfragen zukommen lassen, werden Ihre Angaben (z. B. Name, E-Mail-Adresse und der Text Ihrer
|
||||||
|
Anfrage) zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen bei uns gespeichert. Diese Daten geben wir nicht ohne Ihre
|
||||||
|
Einwilligung weiter.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Die Verarbeitung dieser Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO, sofern Ihre Anfrage mit der Erfüllung eines Vertrags
|
||||||
|
zusammenhängt oder zur Durchführung vorvertraglicher Maßnahmen erforderlich ist. In allen übrigen Fällen beruht die Verarbeitung auf unserem
|
||||||
|
berechtigten Interesse an der effektiven Bearbeitung der an uns gerichteten Anfragen (Art. 6 Abs. 1 lit. f DSGVO) oder auf Ihrer Einwilligung
|
||||||
|
(Art. 6 Abs. 1 lit. a DSGVO), sofern diese abgefragt wurde.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Die von Ihnen an uns übersendeten Daten verbleiben bei uns, bis Sie uns zur Löschung auffordern, Ihre Einwilligung zur Speicherung widerrufen
|
||||||
|
oder der Zweck für die Datenspeicherung entfällt (z.B. nach abgeschlossener Bearbeitung Ihrer Anfrage). Zwingende gesetzliche Bestimmungen –
|
||||||
|
insbesondere Aufbewahrungsfristen – bleiben unberührt.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Verarbeiten von Daten (Kunden- und Vertragsdaten)</strong></p>
|
||||||
|
<p>
|
||||||
|
Wir erheben, verarbeiten und nutzen personenbezogene Daten nur, soweit sie für die Begründung, inhaltliche Ausgestaltung oder Änderung des
|
||||||
|
Rechtsverhältnisses erforderlich sind (Bestandsdaten). Dies erfolgt auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO, der die Verarbeitung von Daten
|
||||||
|
zur Erfüllung eines Vertrags oder vorvertraglicher Maßnahmen gestattet. Personenbezogene Daten über die Inanspruchnahme unserer Internetseiten
|
||||||
|
(Nutzungsdaten) erheben, verarbeiten und nutzen wir nur, soweit dies erforderlich ist, um dem Nutzer die Inanspruchnahme des Dienstes zu
|
||||||
|
ermöglichen oder abzurechnen.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Die erhobenen Kundendaten werden nach Abschluss des Auftrags oder Beendigung der Geschäftsbeziehung gelöscht. Gesetzliche Aufbewahrungsfristen
|
||||||
|
bleiben unberührt.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>5. Analyse-Tools</h2>
|
||||||
|
<p><strong>Umami Analytics (selbst gehostet)</strong></p>
|
||||||
|
<p>
|
||||||
|
Diese Website nutzt das Open-Source-Webanalyse-Tool Umami für interne Auswertungen. Um höchste Datenschutzstandards zu gewährleisten, wird Umami
|
||||||
|
vollständig auf einem eigenen Server gehostet. Dadurch bleiben alle erfassten Daten in unserer alleinigen Kontrolle und werden nicht an Dritte
|
||||||
|
weitergegeben.
|
||||||
|
</p>
|
||||||
|
<p>Umami wurde datenschutzfreundlich konzipiert:</p>
|
||||||
|
<p>
|
||||||
|
Es werden keine Cookies in Ihrem Browser gespeichert.<br />
|
||||||
|
Es findet kein website- oder geräteübergreifendes Tracking (Cross-Site Tracking) statt.<br />
|
||||||
|
Alle IP-Adressen werden unmittelbar bei der Erfassung vollständig anonymisiert, sodass ein Rückschluss auf Ihre Person oder Ihr genaues Gerät ausgeschlossen ist.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Es werden lediglich grundlegende, anonyme Telemetriedaten erfasst (z. B. aufgerufene Seiten, Browsertyp, Betriebssystem, Herkunftsland und
|
||||||
|
Bildschirmauflösung). Die Nutzung von Umami erfolgt auf Grundlage unseres berechtigten Interesses gemäß Art. 6 Abs. 1 lit. f DSGVO. Unser
|
||||||
|
berechtigtes Interesse liegt in der anonymisierten Analyse des Nutzerverhaltens, um unsere Website sowie unser Angebot technisch und inhaltlich
|
||||||
|
fortlaufend zu optimieren.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</x-web::layouts.marketing>
|
||||||
85
resources/views/web/layouts/marketing.blade.php
Normal file
85
resources/views/web/layouts/marketing.blade.php
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
@props([
|
||||||
|
'active' => '',
|
||||||
|
'title' => 'MARKE MACHT · Denkraum für Unternehmer',
|
||||||
|
'description' => 'Wenn Sie Ihr Unternehmen nicht erklären können, haben Sie kein Marketingproblem. Sondern ein Markenproblem. Denkraum für Unternehmer im Mittelstand.',
|
||||||
|
'canonical' => null,
|
||||||
|
'ogTitle' => null,
|
||||||
|
'ogType' => 'website',
|
||||||
|
'ogDescription' => 'Marke ist die Fähigkeit eines Unternehmens, sich selbst eindeutig zu erklären.',
|
||||||
|
'bodyClass' => '',
|
||||||
|
])
|
||||||
|
@php
|
||||||
|
$canonicalUrl = $canonical ?? url()->current();
|
||||||
|
$ogTitle ??= $title;
|
||||||
|
@endphp
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de" data-theme="monolith">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
||||||
|
<title>{{ $title }}</title>
|
||||||
|
<meta name="description" content="{{ $description }}" />
|
||||||
|
|
||||||
|
<meta property="og:type" content="{{ $ogType }}" />
|
||||||
|
<meta property="og:site_name" content="MARKE MACHT" />
|
||||||
|
<meta property="og:title" content="{{ $ogTitle }}" />
|
||||||
|
<meta property="og:description" content="{{ $ogDescription }}" />
|
||||||
|
<meta property="og:url" content="{{ $canonicalUrl }}" />
|
||||||
|
<link rel="canonical" href="{{ $canonicalUrl }}" />
|
||||||
|
<meta property="og:locale" content="de_DE" />
|
||||||
|
<meta property="og:image" content="{{ url('/web/markemacht/img/og-share.webp') }}" />
|
||||||
|
<meta property="og:image:width" content="1200" />
|
||||||
|
<meta property="og:image:height" content="630" />
|
||||||
|
<meta property="og:image:alt" content="MARKE MACHT — Denkraum für Unternehmer" />
|
||||||
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
|
<meta name="twitter:image" content="{{ url('/web/markemacht/img/og-share.webp') }}" />
|
||||||
|
<meta name="theme-color" content="#0A0A0A" media="(prefers-color-scheme: dark)" />
|
||||||
|
<meta name="theme-color" content="#FBFAF2" media="(prefers-color-scheme: light)" />
|
||||||
|
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/web/markemacht/favicon.svg" />
|
||||||
|
<link rel="preconnect" href="https://sys.adametz.media" crossorigin />
|
||||||
|
|
||||||
|
{{-- Wirkung vor dem ersten Paint setzen (kein Flash). Fonts sind in theme-markemacht.css gebündelt. --}}
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
if ('scrollRestoration' in history) history.scrollRestoration = 'manual';
|
||||||
|
if (!location.hash) window.scrollTo(0, 0);
|
||||||
|
|
||||||
|
var v = 'monolith';
|
||||||
|
try {
|
||||||
|
var stored = localStorage.getItem('mm-wirkung');
|
||||||
|
if (stored === 'monolith' || stored === 'editorial') v = stored;
|
||||||
|
} catch (_) {}
|
||||||
|
document.documentElement.setAttribute('data-theme', v);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
@vite(['resources/css/web/theme-markemacht.css', 'resources/js/web/markemacht.js'])
|
||||||
|
<script defer src="https://sys.adametz.media/config.js" data-website-id="40125fcf-49c4-43f3-a9a5-9eec5eb55696"></script>
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "WebSite",
|
||||||
|
"name": "MARKE MACHT",
|
||||||
|
"url": "https://markemacht.de/",
|
||||||
|
"description": "Denkraum für Unternehmer im Mittelstand. Marke ist die Fähigkeit eines Unternehmens, sich selbst eindeutig zu erklären.",
|
||||||
|
"inLanguage": "de-DE"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
@endverbatim
|
||||||
|
</head>
|
||||||
|
<body @class([$bodyClass => $bodyClass])>
|
||||||
|
|
||||||
|
@include('web.partials.nav', ['active' => $active])
|
||||||
|
|
||||||
|
<main id="main">
|
||||||
|
{{ $slot }}
|
||||||
|
</main>
|
||||||
|
|
||||||
|
@include('web.partials.footer')
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="footer-inner">
|
<div class="footer-inner">
|
||||||
<div class="footer-meta">
|
<div class="footer-meta">
|
||||||
<p class="footer-copy">© <strong>Marke macht<span class="accent">.</span></strong> · Denkraum für Unternehmer</p>
|
<p class="footer-copy">© <strong>Marke macht<span class="accent">.</span></strong> · Denkraum für Unternehmer</p>
|
||||||
<p class="footer-note">Keine Cookies</p>
|
<p class="footer-note">DSGVO-konform · keine Weitergabe</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer-links">
|
<div class="footer-links">
|
||||||
<a class="footer-link" href="{{ route('impressum') }}">Impressum</a>
|
<a class="footer-link" href="{{ route('impressum') }}">Impressum</a>
|
||||||
|
|
|
||||||
27
tests/Feature/Web/CookieHinweisTest.php
Normal file
27
tests/Feature/Web/CookieHinweisTest.php
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use function Pest\Laravel\get;
|
||||||
|
|
||||||
|
test('der footer nennt den neuen datenschutz-hinweis statt „keine cookies"', function () {
|
||||||
|
get(route('index'))
|
||||||
|
->assertOk()
|
||||||
|
->assertSee('keine Weitergabe')
|
||||||
|
->assertDontSee('Keine Cookies');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('die datenschutzerklärung deklariert die technisch notwendigen cookies', function () {
|
||||||
|
get(route('datenschutz'))
|
||||||
|
->assertOk()
|
||||||
|
->assertSee('Technisch notwendige Cookies')
|
||||||
|
->assertSee('markemacht-session')
|
||||||
|
->assertSee('XSRF-TOKEN')
|
||||||
|
->assertDontSee('verwendet keine Cookies');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('die wirkungs-präferenz wird nicht mehr als cookie gesetzt', function () {
|
||||||
|
// Der Inline-Head-Script liest die Präferenz nur noch aus localStorage, nicht aus Cookies.
|
||||||
|
get(route('index'))
|
||||||
|
->assertOk()
|
||||||
|
->assertDontSee('document.cookie.match', false)
|
||||||
|
->assertDontSee('mm-wirkung=', false);
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue