Merge branch 'mai/hermes/issue-3-impressum': Impressum consolidation (#3)
- shared/impressum.js als Single-Source-of-Truth - 3 Owner (msbls/flexsiebels/martinsiebels) × 2 Varianten (minimal/full) - Name-Bug 'Matthias Flexsiebels' → 'Matthias Siebels' korrigiert - 14 Sites final konfiguriert Commits:a4e3773+a5777ff+f85f4b4
This commit is contained in:
15
Caddyfile
15
Caddyfile
@@ -9,6 +9,11 @@
|
||||
root * /srv
|
||||
file_server
|
||||
}
|
||||
@6034_de host 6034.de
|
||||
handle @6034_de {
|
||||
root * /srv/6034.de
|
||||
file_server
|
||||
}
|
||||
@allainallain_de host allainallain.de
|
||||
handle @allainallain_de {
|
||||
root * /srv/allainallain.de
|
||||
@@ -279,6 +284,11 @@
|
||||
root * /srv/sorgenfrai.de
|
||||
file_server
|
||||
}
|
||||
@traihard_de host traihard.de
|
||||
handle @traihard_de {
|
||||
root * /srv/traihard.de
|
||||
file_server
|
||||
}
|
||||
@vonschraitter_de host vonschraitter.de
|
||||
handle @vonschraitter_de {
|
||||
root * /srv/vonschraitter.de
|
||||
@@ -289,6 +299,11 @@
|
||||
root * /srv/wartebitte.de
|
||||
file_server
|
||||
}
|
||||
@zensiebels_de host zensiebels.de
|
||||
handle @zensiebels_de {
|
||||
root * /srv/zensiebels.de
|
||||
file_server
|
||||
}
|
||||
handle {
|
||||
respond "Not Found" 444
|
||||
}
|
||||
|
||||
@@ -1,45 +1,77 @@
|
||||
/**
|
||||
* Modulares Impressum für Onepager-Sites.
|
||||
* Modulares Impressum — Single Source of Truth für alle Onepager-Sites.
|
||||
*
|
||||
* Einbinden: <script src="/shared/impressum.js"></script>
|
||||
* Einbinden:
|
||||
* <script src="/shared/impressum.js"></script>
|
||||
* <script src="/shared/impressum.js" data-owner="flexsiebels"></script>
|
||||
* <script src="/shared/impressum.js" data-owner="flexsiebels" data-variant="full"></script>
|
||||
*
|
||||
* Konfiguration via data-Attribute am Script-Tag:
|
||||
* data-owner="msbls" (default) — Kurzform, msbls.de Satire-Impressum
|
||||
* data-owner="martinsiebels" — Volles Impressum Martin Siebels
|
||||
* data-style="minimal" (default) — Einzeiler
|
||||
* data-style="full" — Komplettes Impressum mit Adresse etc.
|
||||
* data-owner="msbls" (default) — Kurzverweis auf msbls.de
|
||||
* data-owner="flexsiebels" — Kurzverweis auf flexsiebels.de
|
||||
* data-owner="martinsiebels" — volles Impressum Martin Siebels (separate Person, Osnabrück)
|
||||
* data-variant="minimal" (default) — Einzeiler im Footer
|
||||
* data-variant="full" — vollständige Angaben nach § 5 TMG
|
||||
*
|
||||
* Legacy-Alias: data-style (gleiche Werte wie data-variant).
|
||||
*
|
||||
* Render-Ziel: Element mit id="impressum" falls vorhanden, sonst <footer>, sonst body.
|
||||
*/
|
||||
(function () {
|
||||
const script = document.currentScript;
|
||||
const owner = script?.getAttribute('data-owner') || 'msbls';
|
||||
const style = script?.getAttribute('data-style') || 'minimal';
|
||||
const variant = script?.getAttribute('data-variant')
|
||||
|| script?.getAttribute('data-style')
|
||||
|| 'minimal';
|
||||
|
||||
// Gemeinsamer Block für Matthias Siebels (m) — beide Domains, gleiche Anschrift.
|
||||
const matthiasAddress = 'Matthias Siebels<br>'
|
||||
+ 'c/o Online-Impressum.de #5892<br>'
|
||||
+ 'Europaring 90<br>'
|
||||
+ '53757 Sankt Augustin';
|
||||
|
||||
const owners = {
|
||||
msbls: {
|
||||
minimal: 'Ein Projekt von <a href="https://msbls.de" target="_blank" rel="noopener">msbls.de</a>',
|
||||
full: '<strong>Angaben gemäß § 5 TMG:</strong><br>msbls.de — Martin Siebels<br><a href="https://msbls.de/impressum" target="_blank" rel="noopener">Vollständiges Impressum</a>',
|
||||
full: '<strong>Angaben gemäß § 5 TMG:</strong><br>'
|
||||
+ matthiasAddress + '<br>'
|
||||
+ 'E-Mail: <a href="mailto:mail@msbls.de">mail@msbls.de</a>',
|
||||
},
|
||||
flexsiebels: {
|
||||
minimal: 'Ein Projekt von <a href="https://flexsiebels.de" target="_blank" rel="noopener">flexsiebels.de</a>',
|
||||
full: '<strong>Angaben gemäß § 5 TMG:</strong><br>'
|
||||
+ matthiasAddress + '<br>'
|
||||
+ 'E-Mail: <a href="mailto:mail@flexsiebels.de">mail@flexsiebels.de</a>',
|
||||
},
|
||||
martinsiebels: {
|
||||
minimal: 'Ein Projekt von <a href="https://martinsiebels.de" target="_blank" rel="noopener">Martin Siebels</a>',
|
||||
full: '<strong>Angaben gemäß § 5 TMG:</strong><br>'
|
||||
+ 'Martin Siebels<br>'
|
||||
+ 'Leyer Str. 38<br>'
|
||||
+ '49076 Osnabrück<br>'
|
||||
+ 'E-Mail: <a href="mailto:Martin_Siebels@web.de">Martin_Siebels@web.de</a>',
|
||||
},
|
||||
};
|
||||
|
||||
const config = owners[owner] || owners.msbls;
|
||||
const html = config[style] || config.minimal;
|
||||
const html = config[variant] || config.minimal;
|
||||
|
||||
// Impressum-Element erstellen
|
||||
const el = document.createElement('div');
|
||||
el.className = 'onepager-impressum';
|
||||
el.innerHTML = html;
|
||||
|
||||
// Styling — erbt Farben vom footer/body, bleibt dezent
|
||||
el.style.cssText = 'text-align:center;font-size:0.7rem;opacity:0.5;padding:8px 0;margin-top:4px;';
|
||||
el.querySelector('a')?.style && Object.assign(el.querySelector('a').style, {
|
||||
color: 'inherit', textDecoration: 'none'
|
||||
// Dezent, erbt Farben vom Container.
|
||||
el.style.cssText = 'text-align:center;font-size:0.75rem;opacity:0.6;padding:12px 0;margin-top:4px;line-height:1.7;';
|
||||
el.querySelectorAll('a').forEach(a => {
|
||||
a.style.color = 'inherit';
|
||||
a.style.textDecoration = 'underline';
|
||||
a.style.textDecorationThickness = '1px';
|
||||
a.style.textUnderlineOffset = '2px';
|
||||
});
|
||||
|
||||
// Einfügen: in <footer> falls vorhanden, sonst ans body-Ende
|
||||
const footer = document.querySelector('footer .container, footer');
|
||||
if (footer) {
|
||||
footer.appendChild(el);
|
||||
} else {
|
||||
document.body.appendChild(el);
|
||||
}
|
||||
const target = document.getElementById('impressum')
|
||||
|| document.querySelector('footer .container')
|
||||
|| document.querySelector('footer')
|
||||
|| document.body;
|
||||
target.appendChild(el);
|
||||
})();
|
||||
|
||||
@@ -3,129 +3,34 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Clemens Plassmann</title>
|
||||
<title>Clemens Plassmann — Hogan Lovells</title>
|
||||
<meta name="description" content="Clemens Plassmann — Patent Litigation, Hogan Lovells.">
|
||||
<meta http-equiv="refresh" content="0; url=https://www.hoganlovells.com/en/clemens-plassmann">
|
||||
<link rel="canonical" href="https://www.hoganlovells.com/en/clemens-plassmann">
|
||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⚖️</text></svg>">
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: 'Georgia', 'Times New Roman', serif;
|
||||
font-family: Georgia, 'Times New Roman', serif;
|
||||
background: #0a0a0a;
|
||||
color: #e8e6e3;
|
||||
color: #c9a96e;
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.container {
|
||||
text-align: center;
|
||||
padding: 2rem;
|
||||
max-width: 700px;
|
||||
}
|
||||
|
||||
.name {
|
||||
font-size: clamp(2.5rem, 6vw, 4rem);
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.08em;
|
||||
margin-bottom: 0.5rem;
|
||||
background: linear-gradient(135deg, #c9a96e 0%, #f0d89d 50%, #c9a96e 100%);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
|
||||
.divider {
|
||||
width: 60px;
|
||||
height: 1px;
|
||||
background: #c9a96e;
|
||||
margin: 1.5rem auto;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: 400;
|
||||
color: #8a8580;
|
||||
letter-spacing: 0.15em;
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.firm {
|
||||
font-size: 1rem;
|
||||
color: #6a6560;
|
||||
letter-spacing: 0.1em;
|
||||
}
|
||||
|
||||
.links {
|
||||
margin-top: 3rem;
|
||||
display: flex;
|
||||
gap: 2rem;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.links a {
|
||||
color: #c9a96e;
|
||||
text-decoration: none;
|
||||
font-size: 0.85rem;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
padding: 0.6rem 1.5rem;
|
||||
border: 1px solid rgba(201, 169, 110, 0.3);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.links a:hover {
|
||||
border-color: #c9a96e;
|
||||
background: rgba(201, 169, 110, 0.08);
|
||||
}
|
||||
|
||||
.footer {
|
||||
margin-top: 4rem;
|
||||
font-size: 0.75rem;
|
||||
color: #3a3530;
|
||||
letter-spacing: 0.1em;
|
||||
}
|
||||
|
||||
.footer a {
|
||||
color: #3a3530;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.footer a:hover {
|
||||
color: #6a6560;
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
from { opacity: 0; transform: translateY(20px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
.container > * {
|
||||
animation: fadeIn 0.8s ease forwards;
|
||||
opacity: 0;
|
||||
}
|
||||
.container > *:nth-child(1) { animation-delay: 0.1s; }
|
||||
.container > *:nth-child(2) { animation-delay: 0.3s; }
|
||||
.container > *:nth-child(3) { animation-delay: 0.5s; }
|
||||
.container > *:nth-child(4) { animation-delay: 0.7s; }
|
||||
.container > *:nth-child(5) { animation-delay: 0.9s; }
|
||||
.container > *:nth-child(6) { animation-delay: 1.1s; }
|
||||
a { color: #c9a96e; text-decoration: none; border-bottom: 1px solid rgba(201,169,110,0.4); }
|
||||
a:hover { border-bottom-color: #c9a96e; }
|
||||
p { letter-spacing: 0.06em; line-height: 1.8; }
|
||||
</style>
|
||||
<script>window.location.replace('https://www.hoganlovells.com/en/clemens-plassmann');</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1 class="name">Clemens Plassmann</h1>
|
||||
<div class="divider"></div>
|
||||
<p class="title">Patent Litigation</p>
|
||||
<p class="firm">Hogan Lovells</p>
|
||||
<div class="links">
|
||||
<a href="https://www.hoganlovells.com/en/clemens-plassmann" target="_blank">Profile</a>
|
||||
<a href="https://www.linkedin.com/in/clemens-plassmann/" target="_blank">LinkedIn</a>
|
||||
</div>
|
||||
<p class="footer">Built by <a href="https://flexsiebels.de">Otto</a></p>
|
||||
<div>
|
||||
<p>Clemens Plassmann — Patent Litigation, Hogan Lovells.</p>
|
||||
<p>Weiter zu <a href="https://www.hoganlovells.com/en/clemens-plassmann">hoganlovells.com</a>.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -576,8 +576,9 @@
|
||||
<footer>
|
||||
<div class="footer-bear">🧸</div>
|
||||
<p class="footer-text">Hey Goldi! — Dein freundlicher KI-Begleiter.</p>
|
||||
<p class="footer-copy">© 2026 heygoldi.de — ein Projekt von <a href="https://msbls.de">msbls.de</a></p>
|
||||
<p class="footer-copy">© 2026 heygoldi.de</p>
|
||||
</footer>
|
||||
|
||||
<script src="/shared/impressum.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -440,5 +440,6 @@
|
||||
</footer>
|
||||
|
||||
<script src="/shared/i18n.js"></script>
|
||||
<script src="/shared/impressum.js" data-owner="flexsiebels" data-variant="full"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -550,5 +550,6 @@
|
||||
document.querySelectorAll('.fade-in').forEach(el => observer.observe(el));
|
||||
</script>
|
||||
|
||||
<script src="/shared/impressum.js" data-owner="flexsiebels" data-variant="full"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -436,5 +436,6 @@
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="/shared/impressum.js" data-owner="flexsiebels" data-variant="full"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -392,5 +392,6 @@
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="/shared/impressum.js" data-owner="martinsiebels" data-variant="full"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -724,9 +724,10 @@
|
||||
<!-- FOOTER -->
|
||||
<footer>
|
||||
<p class="footer-brand">Paragraphen<span>rAI</span>ter</p>
|
||||
<p class="footer-credit">Ein Projekt von Matthias Flexsiebels</p>
|
||||
<p class="footer-legal">© 2026 · Recht. Aber schlauer.</p>
|
||||
</footer>
|
||||
|
||||
<script src="/shared/impressum.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -650,7 +650,7 @@
|
||||
<footer>
|
||||
<p class="footer-brand">Patentonkel</p>
|
||||
<p class="footer-tagline">Familiär. Kompetent. KI.</p>
|
||||
<p class="footer-legal">© 2026 · Ein Projekt von Matthias Flexsiebels · <a href="#" onclick="window.__impressum&&window.__impressum();return false;">Impressum</a></p>
|
||||
<p class="footer-legal">© 2026 · Familienkompatibel ausgedacht.</p>
|
||||
</footer>
|
||||
|
||||
<script src="/shared/impressum.js"></script>
|
||||
|
||||
@@ -635,22 +635,19 @@
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p><span style="color:var(--text-dim)">s</span><span style="color:var(--orange)">MARTIN</span> <span style="color:var(--blue)">3</span>D — smartin3.de</p>
|
||||
<p style="margin-top: 24px; font-size: 0.65rem; color: var(--text-muted); line-height: 1.8;"><a href="#impressum" style="color: var(--text-muted); text-decoration: none;">Impressum</a></p>
|
||||
<p style="margin-top: 24px; font-size: 0.65rem; color: var(--text-muted); line-height: 1.8;"><a href="#impressum-section" style="color: var(--text-muted); text-decoration: none;">Impressum</a></p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<section id="impressum" style="padding: 60px 0 80px; border-top: 1px solid var(--border);">
|
||||
<section id="impressum-section" style="padding: 60px 0 80px; border-top: 1px solid var(--border);">
|
||||
<div class="container" style="max-width: 540px;">
|
||||
<h2 style="font-size: 1.2rem; margin-bottom: 24px;">Impressum</h2>
|
||||
<p style="font-size: 0.85rem; color: var(--text-dim); line-height: 1.8; font-weight: 300;">
|
||||
Martin Siebels<br>
|
||||
Leyer Str. 38<br>
|
||||
49076 Osnabrück<br><br>
|
||||
E-Mail: <a href="mailto:Martin_Siebels@web.de" style="color: var(--orange); text-decoration: none;">Martin_Siebels@web.de</a>
|
||||
</p>
|
||||
<div id="impressum" style="font-size: 0.85rem; color: var(--text-dim); line-height: 1.8; font-weight: 300;"></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<script src="/shared/impressum.js" data-owner="martinsiebels" data-variant="full"></script>
|
||||
|
||||
<div class="lightbox" id="lightbox" onclick="this.classList.remove('active')">
|
||||
<img id="lightbox-img" src="" alt="">
|
||||
<div class="lightbox-caption" id="lightbox-cap"></div>
|
||||
|
||||
@@ -380,5 +380,6 @@
|
||||
document.querySelectorAll('.wisdom-item').forEach(el => observer.observe(el));
|
||||
</script>
|
||||
|
||||
<script src="/shared/impressum.js" data-owner="flexsiebels"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user