feat: add modular impressum.js, replace martinsiebels.de with msbls.de
- shared/impressum.js: configurable via data-owner and data-style attrs - Default: minimal msbls.de attribution for satire sites - Build now copies shared/ to build output - Caddyfile serves /shared/* globally across all domains - Removed martinsiebels.de references from 7 KI-satire sites
This commit is contained in:
@@ -4,6 +4,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
:80 {
|
:80 {
|
||||||
|
# Shared assets available on all domains under /shared/
|
||||||
|
handle /shared/* {
|
||||||
|
root * /srv
|
||||||
|
file_server
|
||||||
|
}
|
||||||
@allaisonme_com host allaisonme.com
|
@allaisonme_com host allaisonme.com
|
||||||
handle @allaisonme_com {
|
handle @allaisonme_com {
|
||||||
root * /srv/allaisonme.com
|
root * /srv/allaisonme.com
|
||||||
|
|||||||
9
build.sh
9
build.sh
@@ -45,6 +45,11 @@ for site_dir in "$SCRIPT_DIR/sites"/*/; do
|
|||||||
done
|
done
|
||||||
echo " -> $count sites built"
|
echo " -> $count sites built"
|
||||||
|
|
||||||
# 3. Report
|
# 3. Copy shared assets
|
||||||
echo "[3/3] Build complete"
|
echo "[3/3] Copying shared assets..."
|
||||||
|
cp -r "$SCRIPT_DIR/shared" "$BUILD_DIR/shared"
|
||||||
|
echo " -> shared/ copied"
|
||||||
|
|
||||||
|
# 4. Report
|
||||||
|
echo "[4/4] Build complete"
|
||||||
echo "=== Build complete: $count sites ==="
|
echo "=== Build complete: $count sites ==="
|
||||||
|
|||||||
8
generate-caddyfile.sh
Normal file → Executable file
8
generate-caddyfile.sh
Normal file → Executable file
@@ -14,6 +14,14 @@ cat <<'HEADER'
|
|||||||
:80 {
|
:80 {
|
||||||
HEADER
|
HEADER
|
||||||
|
|
||||||
|
cat <<'SHARED'
|
||||||
|
# Shared assets available on all domains under /shared/
|
||||||
|
handle /shared/* {
|
||||||
|
root * /srv
|
||||||
|
file_server
|
||||||
|
}
|
||||||
|
SHARED
|
||||||
|
|
||||||
for site_dir in "$SITES_DIR"/*/; do
|
for site_dir in "$SITES_DIR"/*/; do
|
||||||
[ -f "$site_dir/site.yaml" ] || continue
|
[ -f "$site_dir/site.yaml" ] || continue
|
||||||
domain=$(basename "$site_dir")
|
domain=$(basename "$site_dir")
|
||||||
|
|||||||
45
shared/impressum.js
Normal file
45
shared/impressum.js
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/**
|
||||||
|
* Modulares Impressum für Onepager-Sites.
|
||||||
|
*
|
||||||
|
* Einbinden: <script src="/shared/impressum.js"></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.
|
||||||
|
*/
|
||||||
|
(function () {
|
||||||
|
const script = document.currentScript;
|
||||||
|
const owner = script?.getAttribute('data-owner') || 'msbls';
|
||||||
|
const style = script?.getAttribute('data-style') || 'minimal';
|
||||||
|
|
||||||
|
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>',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const config = owners[owner] || owners.msbls;
|
||||||
|
const html = config[style] || 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'
|
||||||
|
});
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
})();
|
||||||
@@ -267,8 +267,9 @@
|
|||||||
<footer>
|
<footer>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p>🐦 <span class="ki">KI</span>libri — Klein, schnell, bunt. Die <span class="ki">KI</span> für dein Nest.</p>
|
<p>🐦 <span class="ki">KI</span>libri — Klein, schnell, bunt. Die <span class="ki">KI</span> für dein Nest.</p>
|
||||||
<p style="margin-top: 8px;">Ein Projekt von <a href="https://martinsiebels.de" style="color: var(--teal); text-decoration: none;">martinsiebels.de</a></p>
|
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
<script src="/shared/impressum.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -288,8 +288,9 @@
|
|||||||
<footer>
|
<footer>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p>★ <span class="ki">KI</span>litär — <span class="ki">KI</span> im Einsatz. Strategisch. Taktisch. Sinnlos. ★</p>
|
<p>★ <span class="ki">KI</span>litär — <span class="ki">KI</span> im Einsatz. Strategisch. Taktisch. Sinnlos. ★</p>
|
||||||
<p style="margin-top: 8px;">Ein Projekt von <a href="https://martinsiebels.de" style="color: var(--olive-light); text-decoration: none;">martinsiebels.de</a></p>
|
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
<script src="/shared/impressum.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -296,8 +296,9 @@
|
|||||||
<footer>
|
<footer>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p>🚧 <span class="ki">KI</span>llegal — Diese <span class="ki">KI</span> ist nicht erlaubt. Aber sie existiert trotzdem.</p>
|
<p>🚧 <span class="ki">KI</span>llegal — Diese <span class="ki">KI</span> ist nicht erlaubt. Aber sie existiert trotzdem.</p>
|
||||||
<p style="margin-top: 8px;">Ein Projekt von <a href="https://martinsiebels.de" style="color: var(--yellow); text-decoration: none;">martinsiebels.de</a></p>
|
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
<script src="/shared/impressum.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -297,8 +297,9 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<p><span class="ki">KI</span>llionär — Making <span class="ki">KI</span>llions seit gestern.</p>
|
<p><span class="ki">KI</span>llionär — Making <span class="ki">KI</span>llions seit gestern.</p>
|
||||||
<p style="margin-top: 8px;">* Alle Testimonials sind frei erfunden. Wie die meisten KI-Versprechen.</p>
|
<p style="margin-top: 8px;">* Alle Testimonials sind frei erfunden. Wie die meisten KI-Versprechen.</p>
|
||||||
<p style="margin-top: 4px;">Ein Projekt von <a href="https://martinsiebels.de" style="color: var(--gold); text-decoration: none;">martinsiebels.de</a></p>
|
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
<script src="/shared/impressum.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -287,8 +287,9 @@
|
|||||||
<footer>
|
<footer>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p><span class="ki">KI</span>llions — 1 <span class="ki">KI</span>llion = ∞ Möglichkeiten = 0 Euro</p>
|
<p><span class="ki">KI</span>llions — 1 <span class="ki">KI</span>llion = ∞ Möglichkeiten = 0 Euro</p>
|
||||||
<p style="margin-top: 8px;">Ein Projekt von <a href="https://martinsiebels.de" style="color: var(--accent-light); text-decoration: none;">martinsiebels.de</a></p>
|
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
<script src="/shared/impressum.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -287,8 +287,8 @@
|
|||||||
<footer>
|
<footer>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p><span class="ki">KI</span>lluminati — Novus Ordo Algorithmorum</p>
|
<p><span class="ki">KI</span>lluminati — Novus Ordo Algorithmorum</p>
|
||||||
<p style="margin-top: 8px; letter-spacing: 0.05em;">Ein Projekt von <a href="https://martinsiebels.de" style="color: var(--accent-light); text-decoration: none;">martinsiebels.de</a></p>
|
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
<script src="/shared/impressum.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -277,8 +277,9 @@
|
|||||||
<footer>
|
<footer>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p><span class="ki">KI</span>llusion — Nichts ist echt. Alles ist <span class="ki">KI</span>.</p>
|
<p><span class="ki">KI</span>llusion — Nichts ist echt. Alles ist <span class="ki">KI</span>.</p>
|
||||||
<p style="margin-top: 8px;">Ein Projekt von <a href="https://martinsiebels.de" style="color: var(--pink); text-decoration: none;">martinsiebels.de</a></p>
|
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
<script src="/shared/impressum.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user