Öffentliche Avatar-Uploads vor dem Absenden verkleinern (1,1 MB -> ~40 KB)
Der Performance-Check (pruef-tempo.mjs, neu) fand als größte Einzel- ressource ein 1,1-MB-Profilbild, ausgeliefert an jeden Besucher der Startseite und von stimmen.html -- angezeigt wird es handgroß. Ursache: Das öffentliche Stimmen-Formular (stimmen.js) lud Profilbilder ROH hoch. Die Bildaufbereitung vom 27.08. bekam nur die Verwaltung, nicht das öffentliche Formular. So landete das Kamera-Foto in voller Auflösung auf dem Server. - bild-vorbereiten.js (neu): die Verkleinerungs-Funktion, jetzt einmal und parametrisierbar (maxBreite). Verwaltung nutzt weiter 1600px, Avatare 512px. Test pruef-bild-vorbereiten.mjs: 8/8, u.a. 512er-Avatar ~40 KB statt >1 MB. - stimmen.js: verkleinert vor dem Upload (window.bildVorbereiten mit maxBreite 512); fällt die Funktion aus, wird das Original genommen -- kein Upload darf daran scheitern. - stimmen.html: lädt bild-vorbereiten.js; veralteten Kommentar richtiggestellt (behauptete "kein Upload", obwohl es seit 21.08. einen gibt -- mit Bremse, Typ-/Größenlimit, Freigabe-Pflicht). Zwei neue Checks als bleibende Absicherung mit committet: pruef-links.mjs (41 interne Ziele, 0 kaputt) und pruef-assets.mjs (67 Ressourcen, 0 fehlen). NOCH OFFEN: verwaltung.html hat noch eine eigene, identische Inline-Kopie der Funktion -- die Zusammenführung ist ein eigener, testbarer Schritt (das Inline-Skript dort ist groß und die Verwaltung hinter dem Gate schwer live zu testen). Das bestehende 1,1-MB-Bild auf dem Server bleibt, bis es neu hochgeladen/ersetzt wird. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -18,10 +18,10 @@
|
|||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
<meta name="robots" content="noindex" />
|
<meta name="robots" content="noindex" />
|
||||||
<title>Seite nicht gefunden — DOGFATHER UNIVERSE</title>
|
<title>Seite nicht gefunden — DOGFATHER UNIVERSE</title>
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-404.js?v=20260828b"></script>
|
<script src="assets/js/i18n-404.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+7
-7
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Unterstütze Dogfather dauerhaft mit der DogiCrew 🩵 und sammle exklusive Treueprämien — die Teddy-Kollektion entsteht in Kooperation mit VanVan." />
|
<meta name="twitter:description" content="Unterstütze Dogfather dauerhaft mit der DogiCrew 🩵 und sammle exklusive Treueprämien — die Teddy-Kollektion entsteht in Kooperation mit VanVan." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
<style>
|
<style>
|
||||||
/* =====================================================================
|
/* =====================================================================
|
||||||
Preis-/Anmelde-Kiste — komplett neu gestaltet (Nutzer-Feedback
|
Preis-/Anmelde-Kiste — komplett neu gestaltet (Nutzer-Feedback
|
||||||
@@ -603,9 +603,9 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-abonnieren.js?v=20260828b"></script>
|
<script src="assets/js/i18n-abonnieren.js?v=20260828c"></script>
|
||||||
<script src="assets/js/supporter.js?v=20260828b"></script>
|
<script src="assets/js/supporter.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script>
|
<script>
|
||||||
(function () {
|
(function () {
|
||||||
const S = window.DogiSupporter;
|
const S = window.DogiSupporter;
|
||||||
|
|||||||
@@ -20,10 +20,10 @@
|
|||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
<meta name="robots" content="noindex" />
|
<meta name="robots" content="noindex" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -134,6 +134,6 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+7
-7
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Detailansicht einer Aktion oder eines Projekts von Team Dogi." />
|
<meta name="twitter:description" content="Detailansicht einer Aktion oder eines Projekts von Team Dogi." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -51,9 +51,9 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/data-aktionen.js?v=20260828b"></script>
|
<script src="assets/js/data-aktionen.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-aktion-detail.js?v=20260828b"></script>
|
<script src="assets/js/i18n-aktion-detail.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
const params = new URLSearchParams(location.search);
|
const params = new URLSearchParams(location.search);
|
||||||
|
|||||||
@@ -0,0 +1,113 @@
|
|||||||
|
/* =====================================================================
|
||||||
|
bild-vorbereiten.js — ein Bild im Browser verkleinern, BEVOR es hochlädt
|
||||||
|
|
||||||
|
WOZU
|
||||||
|
|
||||||
|
Serverseitig bräuchte es eine Bildbibliothek (sharp o.ä.) -- eine neue
|
||||||
|
Abhängigkeit mit nativem Code, installiert in einem Verzeichnis, an das
|
||||||
|
Claudian nicht herankommt. Der Browser kann das ohnehin: Canvas skaliert
|
||||||
|
und kodiert seit jeher. Nebeneffekt: schon der Upload wird kleiner -- wer
|
||||||
|
vom Handy ein 8-MB-Foto schickt, wartet sonst am Mobilfunknetz.
|
||||||
|
|
||||||
|
Bis 28.08.2026 lag diese Funktion NUR inline in der Verwaltung
|
||||||
|
(verwaltung.html). Das öffentliche Stimmen-Formular (stimmen.js) lud
|
||||||
|
Profilbilder dagegen ROH hoch -- so landete ein 1,1-MB-Avatar auf dem
|
||||||
|
Server und wurde jedem Besucher der Startseite ausgeliefert. Deshalb
|
||||||
|
liegt die Funktion jetzt hier, EINMAL, und wird von beiden benutzt.
|
||||||
|
|
||||||
|
MASS PRO EINSATZORT
|
||||||
|
|
||||||
|
Die größte Breite ist ein Parameter, kein fester Wert: Die Verwaltung
|
||||||
|
zeigt Event-/Teambilder groß (1600 reicht für jede Anzeige dort), ein
|
||||||
|
Profil-Avatar erscheint dagegen nur handgroß -- 512 ist da schon
|
||||||
|
großzügig und spart gegenüber 1600 ein Vielfaches.
|
||||||
|
|
||||||
|
WAS BEWUSST NICHT ANGETASTET WIRD
|
||||||
|
|
||||||
|
Kleine PNGs bleiben PNG. Ein Logo mit durchsichtigem Hintergrund würde
|
||||||
|
als JPEG einen schwarzen Kasten bekommen -- JPEG kennt keine Transparenz.
|
||||||
|
Die Grenze liegt bei 400 KB: Darunter ist es wahrscheinlich eine Grafik,
|
||||||
|
darüber praktisch immer ein Foto.
|
||||||
|
===================================================================== */
|
||||||
|
(function () {
|
||||||
|
const STANDARD = {
|
||||||
|
maxBreite: 1600, // reicht für die großen Anzeigen in der Verwaltung
|
||||||
|
qualitaet: 0.86,
|
||||||
|
pngGrenze: 400 * 1024, // kleine PNGs (Grafiken/Logos) unangetastet lassen
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {File} datei die vom Nutzer gewählte Datei
|
||||||
|
* @param {object} [opt] {maxBreite, qualitaet, pngGrenze}
|
||||||
|
* @returns {Promise<File>} verkleinerte Datei -- oder das Original, wenn
|
||||||
|
* sich Verkleinern nicht lohnt oder etwas schiefgeht.
|
||||||
|
*/
|
||||||
|
async function bildVorbereiten(datei, opt) {
|
||||||
|
const maxBreite = opt?.maxBreite ?? STANDARD.maxBreite;
|
||||||
|
const qualitaet = opt?.qualitaet ?? STANDARD.qualitaet;
|
||||||
|
const pngGrenze = opt?.pngGrenze ?? STANDARD.pngGrenze;
|
||||||
|
try {
|
||||||
|
if (!datei || !datei.type.startsWith("image/")) return datei;
|
||||||
|
|
||||||
|
const istPng = datei.type === "image/png";
|
||||||
|
const bild = await new Promise((fertig, schief) => {
|
||||||
|
const b = new Image();
|
||||||
|
b.onload = () => fertig(b);
|
||||||
|
b.onerror = schief;
|
||||||
|
b.src = URL.createObjectURL(datei);
|
||||||
|
});
|
||||||
|
|
||||||
|
const zuBreit = bild.naturalWidth > maxBreite;
|
||||||
|
const grossesPng = istPng && datei.size > pngGrenze;
|
||||||
|
|
||||||
|
/* Nichts zu tun: kleines Bild, richtiges Format. Dann bleibt die
|
||||||
|
Datei unverändert -- kein Qualitätsverlust ohne Gegenwert. */
|
||||||
|
if (!zuBreit && !grossesPng) {
|
||||||
|
URL.revokeObjectURL(bild.src);
|
||||||
|
return datei;
|
||||||
|
}
|
||||||
|
|
||||||
|
const breite = Math.min(bild.naturalWidth, maxBreite);
|
||||||
|
const hoehe = Math.round((bild.naturalHeight / bild.naturalWidth) * breite);
|
||||||
|
|
||||||
|
const flaeche = document.createElement("canvas");
|
||||||
|
flaeche.width = breite;
|
||||||
|
flaeche.height = hoehe;
|
||||||
|
const stift = flaeche.getContext("2d");
|
||||||
|
/* Ohne diese beiden Zeilen skaliert der Browser hart und die Kanten
|
||||||
|
fransen aus. */
|
||||||
|
stift.imageSmoothingEnabled = true;
|
||||||
|
stift.imageSmoothingQuality = "high";
|
||||||
|
|
||||||
|
/* Große PNGs werden zu JPEG -- die haben keinen durchsichtigen
|
||||||
|
Hintergrund, sonst wären sie nicht so groß. Sicherheitshalber wird
|
||||||
|
trotzdem weiß unterlegt, damit aus einer eventuellen Transparenz
|
||||||
|
kein schwarzer Kasten wird. */
|
||||||
|
if (grossesPng) {
|
||||||
|
stift.fillStyle = "#ffffff";
|
||||||
|
stift.fillRect(0, 0, breite, hoehe);
|
||||||
|
}
|
||||||
|
stift.drawImage(bild, 0, 0, breite, hoehe);
|
||||||
|
URL.revokeObjectURL(bild.src);
|
||||||
|
|
||||||
|
const typ = (grossesPng || datei.type === "image/jpeg") ? "image/jpeg" : datei.type;
|
||||||
|
const klotz = await new Promise((fertig) =>
|
||||||
|
flaeche.toBlob(fertig, typ, qualitaet));
|
||||||
|
|
||||||
|
/* Wurde es NICHT kleiner, bleibt das Original. Bei bereits gut
|
||||||
|
komprimierten Dateien kann erneutes Kodieren sonst sogar zulegen --
|
||||||
|
und Qualität kosten für nichts. */
|
||||||
|
if (!klotz || klotz.size >= datei.size) return datei;
|
||||||
|
|
||||||
|
const name = datei.name.replace(/\.[^.]+$/, "") +
|
||||||
|
(typ === "image/jpeg" ? ".jpg" : datei.name.slice(datei.name.lastIndexOf(".")));
|
||||||
|
return new File([klotz], name, { type: typ, lastModified: Date.now() });
|
||||||
|
} catch (e) {
|
||||||
|
/* Geht irgendetwas schief, wird das Original hochgeladen. Ein
|
||||||
|
fehlgeschlagenes Verkleinern darf niemals einen Upload verhindern. */
|
||||||
|
return datei;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.bildVorbereiten = bildVorbereiten;
|
||||||
|
})();
|
||||||
+11
-1
@@ -69,7 +69,17 @@
|
|||||||
eigenesBtn.classList.add("laedt");
|
eigenesBtn.classList.add("laedt");
|
||||||
try {
|
try {
|
||||||
const form = new FormData();
|
const form = new FormData();
|
||||||
form.append("image", datei);
|
/* Vor dem Upload verkleinern (bild-vorbereiten.js). Ein Profilbild
|
||||||
|
erscheint nur handgroß -- 512px sind großzügig und machen aus
|
||||||
|
einem Handy-Foto von mehreren MB rund 30-50 KB. Ohne diesen
|
||||||
|
Schritt landete bis 28.08.2026 z.B. ein 1,1-MB-Avatar auf dem
|
||||||
|
Server und wurde jedem Startseiten-Besucher ausgeliefert.
|
||||||
|
Fällt window.bildVorbereiten aus (Skript nicht geladen), wird
|
||||||
|
die Originaldatei genommen -- kein Upload darf daran scheitern. */
|
||||||
|
const fertig = window.bildVorbereiten
|
||||||
|
? await window.bildVorbereiten(datei, { maxBreite: 512 })
|
||||||
|
: datei;
|
||||||
|
form.append("image", fertig);
|
||||||
const res = await fetch(`${API_BASE_URL}/testimonials/upload-avatar`, { method: "POST", body: form });
|
const res = await fetch(`${API_BASE_URL}/testimonials/upload-avatar`, { method: "POST", body: form });
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
if (!data.ok) {
|
if (!data.ok) {
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Du bist Streamer und suchst einen Manager? Bewirb dich als Creator bei Spicy Media." />
|
<meta name="twitter:description" content="Du bist Streamer und suchst einen Manager? Bewirb dich als Creator bei Spicy Media." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund bewerben-seite" style="--page-bg:url('/assets/img/bg-bewerben-creator.jpg');--page-bg-mobile:url('/assets/img/bg-bewerben-creator-mobile.jpg');">
|
<body class="mit-hintergrund bewerben-seite" style="--page-bg:url('/assets/img/bg-bewerben-creator.jpg');--page-bg-mobile:url('/assets/img/bg-bewerben-creator-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -70,8 +70,8 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/forms.js?v=20260828b"></script>
|
<script src="assets/js/forms.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-bewerben-creator.js?v=20260828b"></script>
|
<script src="assets/js/i18n-bewerben-creator.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -22,10 +22,10 @@
|
|||||||
<meta name="twitter:description" content="Kooperationsanfrage an Manager DogFather / Spicy Media." />
|
<meta name="twitter:description" content="Kooperationsanfrage an Manager DogFather / Spicy Media." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund bewerben-seite" style="--page-bg:url('/assets/img/bg-bewerben.jpg');--page-bg-mobile:url('/assets/img/bg-bewerben-mobile.jpg');">
|
<body class="mit-hintergrund bewerben-seite" style="--page-bg:url('/assets/img/bg-bewerben.jpg');--page-bg-mobile:url('/assets/img/bg-bewerben-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -68,8 +68,8 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/forms.js?v=20260828b"></script>
|
<script src="assets/js/forms.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-bewerben-kooperation.js?v=20260828b"></script>
|
<script src="assets/js/i18n-bewerben-kooperation.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+7
-7
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Werde Modi bei Team Dogi — DogFathers persönliches Community-Team." />
|
<meta name="twitter:description" content="Werde Modi bei Team Dogi — DogFathers persönliches Community-Team." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund bewerben-seite" style="--page-bg:url('/assets/img/bg-bewerben-modi.jpg');--page-bg-mobile:url('/assets/img/bg-bewerben-modi-mobile.jpg');">
|
<body class="mit-hintergrund bewerben-seite" style="--page-bg:url('/assets/img/bg-bewerben-modi.jpg');--page-bg-mobile:url('/assets/img/bg-bewerben-modi-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -79,8 +79,8 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/forms.js?v=20260828b"></script>
|
<script src="assets/js/forms.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-bewerben-modi.js?v=20260828b"></script>
|
<script src="assets/js/i18n-bewerben-modi.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+7
-7
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Werde Scout für DogFather bei der Spicy Media Agentur — finde neue Talente." />
|
<meta name="twitter:description" content="Werde Scout für DogFather bei der Spicy Media Agentur — finde neue Talente." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund bewerben-seite" style="--page-bg:url('/assets/img/bg-bewerben-scout.jpg');--page-bg-mobile:url('/assets/img/bg-bewerben-scout-mobile.jpg');">
|
<body class="mit-hintergrund bewerben-seite" style="--page-bg:url('/assets/img/bg-bewerben-scout.jpg');--page-bg-mobile:url('/assets/img/bg-bewerben-scout-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -71,8 +71,8 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/forms.js?v=20260828b"></script>
|
<script src="assets/js/forms.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-bewerben-scout.js?v=20260828b"></script>
|
<script src="assets/js/i18n-bewerben-scout.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Werde Teil vom Team: Modi bei Team Dogi, Scout oder Creator bei Spicy Media, oder Kooperation anfragen." />
|
<meta name="twitter:description" content="Werde Teil vom Team: Modi bei Team Dogi, Scout oder Creator bei Spicy Media, oder Kooperation anfragen." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund bewerben-seite" style="--page-bg:url('/assets/img/bg-bewerben-split.jpg');--page-bg-mobile:url('/assets/img/bg-bewerben-split-mobile.jpg');">
|
<body class="mit-hintergrund bewerben-seite" style="--page-bg:url('/assets/img/bg-bewerben-split.jpg');--page-bg-mobile:url('/assets/img/bg-bewerben-split-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-bewerben.js?v=20260828b"></script>
|
<script src="assets/js/i18n-bewerben.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Der Husky an DogFathers Seite — das tierische Gesicht der HasiDog-Welt." />
|
<meta name="twitter:description" content="Der Husky an DogFathers Seite — das tierische Gesicht der HasiDog-Welt." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-casper.jpg');--page-bg-mobile:url('/assets/img/bg-casper-mobile.jpg');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-casper.jpg');--page-bg-mobile:url('/assets/img/bg-casper-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-casper.js?v=20260828b"></script>
|
<script src="assets/js/i18n-casper.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Team Dogi ist Familie — die Community rund um DogFather und HasiDog." />
|
<meta name="twitter:description" content="Team Dogi ist Familie — die Community rund um DogFather und HasiDog." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-community.jpg');--page-bg-mobile:url('/assets/img/bg-community-mobile.jpg');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-community.jpg');--page-bg-mobile:url('/assets/img/bg-community-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-community.js?v=20260828b"></script>
|
<script src="assets/js/i18n-community.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+7
-7
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Content Creator, die Teil von DogFather / Spicy Media sind." />
|
<meta name="twitter:description" content="Content Creator, die Teil von DogFather / Spicy Media sind." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-creator.jpg');--page-bg-mobile:url('/assets/img/bg-creator-mobile.jpg');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-creator.jpg');--page-bg-mobile:url('/assets/img/bg-creator-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -60,9 +60,9 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/data-creator.js?v=20260828b"></script>
|
<script src="assets/js/data-creator.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-creator.js?v=20260828b"></script>
|
<script src="assets/js/i18n-creator.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener("DOMContentLoaded", async () => {
|
document.addEventListener("DOMContentLoaded", async () => {
|
||||||
const grid = document.getElementById("creator-grid");
|
const grid = document.getElementById("creator-grid");
|
||||||
|
|||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Wer ist DogFather wirklich? Persönlichkeit, Werte und die Geschichte hinter dem Content." />
|
<meta name="twitter:description" content="Wer ist DogFather wirklich? Persönlichkeit, Werte und die Geschichte hinter dem Content." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-dogfather-person.jpg');--page-bg-mobile:url('/assets/img/bg-dogfather-person-mobile.jpg');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-dogfather-person.jpg');--page-bg-mobile:url('/assets/img/bg-dogfather-person-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-dogfather.js?v=20260828b"></script>
|
<script src="assets/js/i18n-dogfather.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -26,8 +26,8 @@
|
|||||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||||
<meta name="apple-mobile-web-app-title" content="DogFather" />
|
<meta name="apple-mobile-web-app-title" content="DogFather" />
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<style>
|
<style>
|
||||||
/* =====================================================================
|
/* =====================================================================
|
||||||
Zugangsseite — bewusst kein braves Standard-Login-Formular, sondern
|
Zugangsseite — bewusst kein braves Standard-Login-Formular, sondern
|
||||||
|
|||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="HasiDog: Maskottchen, Musikprojekt und die verspielte, familiäre Seite von Team Dogi." />
|
<meta name="twitter:description" content="HasiDog: Maskottchen, Musikprojekt und die verspielte, familiäre Seite von Team Dogi." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-hasidog.jpg');--page-bg-mobile:url('/assets/img/bg-hasidog-mobile.jpg');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-hasidog.jpg');--page-bg-mobile:url('/assets/img/bg-hasidog-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -186,7 +186,7 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-hasidog.js?v=20260828b"></script>
|
<script src="assets/js/i18n-hasidog.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+8
-8
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="DOGFATHER UNIVERSE: die Heimat von DogFather als Streamer, der HasiDog-Community und Manager DogFather bei Spicy Media." />
|
<meta name="twitter:description" content="DOGFATHER UNIVERSE: die Heimat von DogFather als Streamer, der HasiDog-Community und Manager DogFather bei Spicy Media." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="start-seite">
|
<body class="start-seite">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -290,10 +290,10 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/data-modis.js?v=20260828b"></script>
|
<script src="assets/js/data-modis.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-scouts.js?v=20260828b"></script>
|
<script src="assets/js/data-scouts.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-index.js?v=20260828b"></script>
|
<script src="assets/js/i18n-index.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script>
|
<script>
|
||||||
// Gleiche URL wie in assets/js/forms.js / postfach.html — läuft seit
|
// Gleiche URL wie in assets/js/forms.js / postfach.html — läuft seit
|
||||||
// 05.08.2026 auf dem eigenen Server statt auf Cloudflare Workers.
|
// 05.08.2026 auf dem eigenen Server statt auf Cloudflare Workers.
|
||||||
|
|||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Kontakt, Impressum und Datenschutz von DOGFATHER UNIVERSE." />
|
<meta name="twitter:description" content="Kontakt, Impressum und Datenschutz von DOGFATHER UNIVERSE." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-kontakt.js?v=20260828b"></script>
|
<script src="assets/js/i18n-kontakt.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Alle Social-Media- und Musik-Links von DogFather an einem Ort — plus QR-Codes." />
|
<meta name="twitter:description" content="Alle Social-Media- und Musik-Links von DogFather an einem Ort — plus QR-Codes." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
<style>
|
<style>
|
||||||
/* Rabattcodes: an das Supporter-Abo gekoppelt (Nutzer-Feedback
|
/* Rabattcodes: an das Supporter-Abo gekoppelt (Nutzer-Feedback
|
||||||
03.08.2026: "verbinde es mit dem Abo... wenn die Leute drauf drücken
|
03.08.2026: "verbinde es mit dem Abo... wenn die Leute drauf drücken
|
||||||
@@ -145,8 +145,8 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-links.js?v=20260828b"></script>
|
<script src="assets/js/i18n-links.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script>
|
<script>
|
||||||
(function () {
|
(function () {
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
|||||||
+7
-7
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="DogFather als Manager bei der Spicy Media Agency: Scouts, Creator und faire Zusammenarbeit." />
|
<meta name="twitter:description" content="DogFather als Manager bei der Spicy Media Agency: Scouts, Creator und faire Zusammenarbeit." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-manager.jpg');--page-bg-mobile:url('/assets/img/bg-manager-mobile.jpg');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-manager.jpg');--page-bg-mobile:url('/assets/img/bg-manager-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -139,9 +139,9 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/data-manager.js?v=20260828b"></script>
|
<script src="assets/js/data-manager.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-manager.js?v=20260828b"></script>
|
<script src="assets/js/i18n-manager.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script>
|
<script>
|
||||||
// "Weitere Manager" (21.08.2026) -- siehe Kommentar bei #weitere-manager-root
|
// "Weitere Manager" (21.08.2026) -- siehe Kommentar bei #weitere-manager-root
|
||||||
// oben. Aktuell IMMER window.MANAGERS === [] (siehe data-manager.js), Inhalt
|
// oben. Aktuell IMMER window.MANAGERS === [] (siehe data-manager.js), Inhalt
|
||||||
|
|||||||
+9
-9
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Fotos und Videos rund um Husky Casper an einem Ort." />
|
<meta name="twitter:description" content="Fotos und Videos rund um Husky Casper an einem Ort." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" data-welt="casper" style="--page-bg:url('/assets/img/bg-medien-casper.jpg');--page-bg-mobile:url('/assets/img/bg-medien-casper-mobile.jpg');">
|
<body class="mit-hintergrund" data-welt="casper" style="--page-bg:url('/assets/img/bg-medien-casper.jpg');--page-bg-mobile:url('/assets/img/bg-medien-casper-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -59,10 +59,10 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/data-media.js?v=20260828b"></script>
|
<script src="assets/js/data-media.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-videos.js?v=20260828b"></script>
|
<script src="assets/js/data-videos.js?v=20260828c"></script>
|
||||||
<script src="assets/js/medien-welt.js?v=20260828b"></script>
|
<script src="assets/js/medien-welt.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-medien-casper.js?v=20260828b"></script>
|
<script src="assets/js/i18n-medien-casper.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+10
-10
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Fotos, Videos und Events aus DogFathers Welt an einem Ort." />
|
<meta name="twitter:description" content="Fotos, Videos und Events aus DogFathers Welt an einem Ort." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" data-welt="dogfather" style="--page-bg:url('/assets/img/bg-dogfather.jpg');--page-bg-mobile:url('/assets/img/bg-dogfather-mobile.jpg');">
|
<body class="mit-hintergrund" data-welt="dogfather" style="--page-bg:url('/assets/img/bg-dogfather.jpg');--page-bg-mobile:url('/assets/img/bg-dogfather-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -65,11 +65,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/data-media.js?v=20260828b"></script>
|
<script src="assets/js/data-media.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-videos.js?v=20260828b"></script>
|
<script src="assets/js/data-videos.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-aktionen.js?v=20260828b"></script>
|
<script src="assets/js/data-aktionen.js?v=20260828c"></script>
|
||||||
<script src="assets/js/medien-welt.js?v=20260828b"></script>
|
<script src="assets/js/medien-welt.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-medien-dogfather.js?v=20260828b"></script>
|
<script src="assets/js/i18n-medien-dogfather.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+10
-10
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Fotos, Videos und Events aus der HasiDog-Welt an einem Ort." />
|
<meta name="twitter:description" content="Fotos, Videos und Events aus der HasiDog-Welt an einem Ort." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" data-welt="hasidog" style="--page-bg:url('/assets/img/bg-medien-hasidog.jpg');--page-bg-mobile:url('/assets/img/bg-medien-hasidog-mobile.jpg');">
|
<body class="mit-hintergrund" data-welt="hasidog" style="--page-bg:url('/assets/img/bg-medien-hasidog.jpg');--page-bg-mobile:url('/assets/img/bg-medien-hasidog-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -65,11 +65,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/data-media.js?v=20260828b"></script>
|
<script src="assets/js/data-media.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-videos.js?v=20260828b"></script>
|
<script src="assets/js/data-videos.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-aktionen.js?v=20260828b"></script>
|
<script src="assets/js/data-aktionen.js?v=20260828c"></script>
|
||||||
<script src="assets/js/medien-welt.js?v=20260828b"></script>
|
<script src="assets/js/medien-welt.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-medien-hasidog.js?v=20260828b"></script>
|
<script src="assets/js/i18n-medien-hasidog.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+10
-10
@@ -16,10 +16,10 @@
|
|||||||
<meta name="twitter:card" content="summary_large_image" />
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
<meta name="robots" content="noindex" /> <!-- generische URL, echte Team-Seiten verlinken hierher -->
|
<meta name="robots" content="noindex" /> <!-- generische URL, echte Team-Seiten verlinken hierher -->
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
<style>
|
<style>
|
||||||
.profil-photo { aspect-ratio: 4/5; max-width: 420px; margin: 0 auto; }
|
.profil-photo { aspect-ratio: 4/5; max-width: 420px; margin: 0 auto; }
|
||||||
.profil-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
|
.profil-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
|
||||||
@@ -130,12 +130,12 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/data-modis.js?v=20260828b"></script>
|
<script src="assets/js/data-modis.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-scouts.js?v=20260828b"></script>
|
<script src="assets/js/data-scouts.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-creator.js?v=20260828b"></script>
|
<script src="assets/js/data-creator.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-manager.js?v=20260828b"></script>
|
<script src="assets/js/data-manager.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-profil.js?v=20260828b"></script>
|
<script src="assets/js/i18n-profil.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener("DOMContentLoaded", async () => {
|
document.addEventListener("DOMContentLoaded", async () => {
|
||||||
const slug = new URLSearchParams(location.search).get("p") || "";
|
const slug = new URLSearchParams(location.search).get("p") || "";
|
||||||
|
|||||||
@@ -0,0 +1,91 @@
|
|||||||
|
/* =====================================================================
|
||||||
|
Verkleinert bild-vorbereiten.js richtig?
|
||||||
|
|
||||||
|
Läuft in einem echten Browser (Canvas/Image gibt es nur dort). Erzeugt
|
||||||
|
Testbilder verschiedener Größe/Format und prüft das Verhalten, auf das
|
||||||
|
es ankommt: große Bilder werden auf die vorgegebene Breite gebracht,
|
||||||
|
kleine bleiben unangetastet, große PNGs werden zu JPEG, und die
|
||||||
|
Avatar-Grenze (512) macht ein Foto deutlich kleiner als die
|
||||||
|
Verwaltungs-Grenze (1600).
|
||||||
|
===================================================================== */
|
||||||
|
import { chromium } from "playwright";
|
||||||
|
import { readFileSync } from "node:fs";
|
||||||
|
|
||||||
|
const quelle = readFileSync("assets/js/bild-vorbereiten.js", "utf8");
|
||||||
|
const browser = await chromium.launch();
|
||||||
|
const seite = await browser.newPage();
|
||||||
|
await seite.setContent("<!doctype html><html><body></body></html>");
|
||||||
|
await seite.addScriptTag({ content: quelle });
|
||||||
|
|
||||||
|
let ok = 0, fehl = 0;
|
||||||
|
const pruefe = (name, gut, info) => {
|
||||||
|
if (gut) { ok++; console.log(" ok " + name + (info ? " -> " + info : "")); }
|
||||||
|
else { fehl++; console.log(" FEHL " + name + (info ? " -> " + info : "")); }
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Hilfsfunktion im Browser: erzeugt ein Testbild als File, jagt es durch
|
||||||
|
bildVorbereiten und meldet Maße/Größe/Typ vorher und nachher. */
|
||||||
|
const test = (breite, hoehe, typ, opt) => seite.evaluate(async ([breite, hoehe, typ, opt]) => {
|
||||||
|
const c = document.createElement("canvas");
|
||||||
|
c.width = breite; c.height = hoehe;
|
||||||
|
const ctx = c.getContext("2d");
|
||||||
|
/* Echtes Zufallsrauschen, damit die Testbilder realistisch groß werden
|
||||||
|
(ein Muster oder eine Fläche würde PNG so stark komprimieren, dass die
|
||||||
|
"großes PNG"-Grenze von 400 KB nie erreicht wird -- dann bliebe der
|
||||||
|
PNG->JPEG-Pfad ungetestet). */
|
||||||
|
const img = ctx.createImageData(breite, hoehe);
|
||||||
|
for (let i = 0; i < img.data.length; i += 4) {
|
||||||
|
img.data[i] = Math.random() * 256; img.data[i+1] = Math.random() * 256;
|
||||||
|
img.data[i+2] = Math.random() * 256; img.data[i+3] = 255;
|
||||||
|
}
|
||||||
|
ctx.putImageData(img, 0, 0);
|
||||||
|
const blob = await new Promise((f) => c.toBlob(f, typ, 0.95));
|
||||||
|
const datei = new File([blob], "test." + (typ === "image/png" ? "png" : "jpg"), { type: typ });
|
||||||
|
|
||||||
|
const raus = await window.bildVorbereiten(datei, opt);
|
||||||
|
/* Maße des Ergebnisses auslesen. */
|
||||||
|
const masse = await new Promise((f) => {
|
||||||
|
const b = new Image();
|
||||||
|
b.onload = () => f({ w: b.naturalWidth, h: b.naturalHeight });
|
||||||
|
b.src = URL.createObjectURL(raus);
|
||||||
|
});
|
||||||
|
return { vorherBytes: datei.size, nachherBytes: raus.size, w: masse.w, h: masse.h, typ: raus.type };
|
||||||
|
}, [breite, hoehe, typ, opt]);
|
||||||
|
|
||||||
|
console.log("\n=== Großes Foto, Verwaltungs-Grenze (1600) ===");
|
||||||
|
{
|
||||||
|
const r = await test(2400, 1350, "image/jpeg", { maxBreite: 1600 });
|
||||||
|
pruefe("wird auf 1600 Breite gebracht", r.w === 1600, `${r.w}px breit`);
|
||||||
|
pruefe("wird kleiner", r.nachherBytes < r.vorherBytes, `${Math.round(r.vorherBytes/1024)} -> ${Math.round(r.nachherBytes/1024)} KB`);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("\n=== Großes Foto, Avatar-Grenze (512) ===");
|
||||||
|
{
|
||||||
|
const r = await test(2400, 1350, "image/jpeg", { maxBreite: 512 });
|
||||||
|
pruefe("wird auf 512 Breite gebracht", r.w === 512, `${r.w}px breit`);
|
||||||
|
pruefe("Avatar ist DEUTLICH kleiner als 1600er", r.nachherBytes < 80 * 1024, `${Math.round(r.nachherBytes/1024)} KB`);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("\n=== Kleines Bild bleibt unangetastet ===");
|
||||||
|
{
|
||||||
|
const r = await test(300, 300, "image/jpeg", { maxBreite: 512 });
|
||||||
|
pruefe("300px-Bild behält 300px", r.w === 300, `${r.w}px`);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("\n=== Großes PNG wird zu JPEG ===");
|
||||||
|
{
|
||||||
|
const r = await test(2000, 1200, "image/png", { maxBreite: 1600 });
|
||||||
|
pruefe("Format wird JPEG", r.typ === "image/jpeg", r.typ);
|
||||||
|
pruefe("auf 1600 gebracht", r.w === 1600, `${r.w}px`);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("\n=== Seitenverhältnis bleibt erhalten ===");
|
||||||
|
{
|
||||||
|
const r = await test(1600, 900, "image/jpeg", { maxBreite: 800 });
|
||||||
|
const verh = (r.w / r.h).toFixed(2);
|
||||||
|
pruefe("16:9 bleibt 16:9", verh === "1.78", `${r.w}x${r.h} (${verh})`);
|
||||||
|
}
|
||||||
|
|
||||||
|
await browser.close();
|
||||||
|
console.log(`\n===== ${ok} bestanden, ${fehl} fehlgeschlagen =====`);
|
||||||
|
process.exitCode = fehl ? 1 : 0;
|
||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Rabattcodes von Dogis Partnern für Team Dogi — spar bares Geld bei ausgewählten Marken." />
|
<meta name="twitter:description" content="Rabattcodes von Dogis Partnern für Team Dogi — spar bares Geld bei ausgewählten Marken." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
<style>
|
<style>
|
||||||
/* Leere-Zustand-Kachel im "Gutschein"-Look: gestrichelter Rand wie ein
|
/* Leere-Zustand-Kachel im "Gutschein"-Look: gestrichelter Rand wie ein
|
||||||
ausgeschnittener Coupon, damit auch OHNE echte Codes schon klar ist,
|
ausgeschnittener Coupon, damit auch OHNE echte Codes schon klar ist,
|
||||||
@@ -131,8 +131,8 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-rabattcodes.js?v=20260828b"></script>
|
<script src="assets/js/i18n-rabattcodes.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script>
|
<script>
|
||||||
(function () {
|
(function () {
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
|||||||
+20
-15
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Was die Community und das Team über DogFather sagen." />
|
<meta name="twitter:description" content="Was die Community und das Team über DogFather sagen." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-stimmen.jpg');--page-bg-mobile:url('/assets/img/bg-stimmen-mobile.jpg');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-stimmen.jpg');--page-bg-mobile:url('/assets/img/bg-stimmen-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -70,13 +70,17 @@
|
|||||||
<!-- Profilbild-Auswahl (21.08.2026, Nutzer-Wunsch: "ich soll auch
|
<!-- Profilbild-Auswahl (21.08.2026, Nutzer-Wunsch: "ich soll auch
|
||||||
paar geile bilder zum aussuchen haben als profilbild falls die
|
paar geile bilder zum aussuchen haben als profilbild falls die
|
||||||
leute kein bild mit schicken, das soll denen auch als
|
leute kein bild mit schicken, das soll denen auch als
|
||||||
möglichkeit gegeben sein"). Bewusst OHNE Datei-Upload: das
|
möglichkeit gegeben sein"). Die festen Kacheln kommen aus
|
||||||
Formular ist öffentlich und ohne Anmeldung erreichbar, ein
|
data-stimmen-avatare.js, damit Seite und Verwaltung dieselbe
|
||||||
offener Upload wäre eine Einladung für beliebiges Material.
|
Auswahl zeigen.
|
||||||
Wer ein eigenes Foto möchte, schickt es Dogi direkt — er kann
|
Dazu eine "eigenes Bild"-Kachel mit echtem Datei-Upload (auch
|
||||||
es in der Verwaltung hinterlegen. Die Kacheln werden aus
|
21.08.2026 ergänzt; ein früherer Kommentar hier behauptete noch
|
||||||
data-stimmen-avatare.js aufgebaut, damit Seite und Verwaltung
|
"kein Upload" -- das stimmte nicht mehr und ist am 28.08.2026
|
||||||
garantiert dieselbe Auswahl zeigen. -->
|
richtiggestellt). Der Upload ist mehrfach abgesichert: nur
|
||||||
|
Bildtypen, max. 5 MB, Bremse pro IP gegen Massen-Uploads, vor
|
||||||
|
dem Absenden im Browser auf 512px verkleinert (bild-vorbereiten.js),
|
||||||
|
und NICHTS wird veröffentlicht, bevor Dogi die Stimme freigibt --
|
||||||
|
jede Einreichung landet zuerst in der Warteschlange. -->
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<span class="stimmen-avatar-titel" data-i18n="st_form_avatar_label">Dein Profilbild (optional)</span>
|
<span class="stimmen-avatar-titel" data-i18n="st_form_avatar_label">Dein Profilbild (optional)</span>
|
||||||
<p class="small muted stimmen-avatar-hinweis" data-i18n="st_form_avatar_hinweis">Ohne Auswahl erscheint einfach der erste Buchstabe deines Namens.</p>
|
<p class="small muted stimmen-avatar-hinweis" data-i18n="st_form_avatar_hinweis">Ohne Auswahl erscheint einfach der erste Buchstabe deines Namens.</p>
|
||||||
@@ -102,9 +106,10 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/data-stimmen-avatare.js?v=20260828b"></script>
|
<script src="assets/js/data-stimmen-avatare.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-stimmen.js?v=20260828b"></script>
|
<script src="assets/js/i18n-stimmen.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script src="assets/js/stimmen.js?v=20260828b"></script>
|
<script src="assets/js/bild-vorbereiten.js?v=20260828c"></script>
|
||||||
|
<script src="assets/js/stimmen.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Die persönliche Geschichte hinter DogFather — Filipe, Streamer, Manager bei Spicy Media und Hundepapa von Husky Casper." />
|
<meta name="twitter:description" content="Die persönliche Geschichte hinter DogFather — Filipe, Streamer, Manager bei Spicy Media und Hundepapa von Husky Casper." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-streamer.jpg');--page-bg-mobile:url('/assets/img/bg-streamer-mobile.jpg');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-streamer.jpg');--page-bg-mobile:url('/assets/img/bg-streamer-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-streamer.js?v=20260828b"></script>
|
<script src="assets/js/i18n-streamer.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+9
-9
@@ -19,17 +19,17 @@
|
|||||||
<meta name="twitter:description" content="Wann geht DogFather live? Streamplan und Livebereich." />
|
<meta name="twitter:description" content="Wann geht DogFather live? Streamplan und Livebereich." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-streamplan.jpg?v=20260828b');--page-bg-mobile:url('/assets/img/bg-streamplan-mobile.jpg?v=20260828b');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-streamplan.jpg?v=20260828c');--page-bg-mobile:url('/assets/img/bg-streamplan-mobile.jpg?v=20260828c');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
|
|
||||||
<main>
|
<main>
|
||||||
<section class="hero page-bg">
|
<section class="hero page-bg">
|
||||||
<div class="hero-banner"><img src="/assets/img/bg-streamplan.jpg?v=20260828b" alt="" loading="eager" /></div>
|
<div class="hero-banner"><img src="/assets/img/bg-streamplan.jpg?v=20260828c" alt="" loading="eager" /></div>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<span class="eyebrow" data-i18n="sp_eyebrow">Welt 1 — DogFather</span>
|
<span class="eyebrow" data-i18n="sp_eyebrow">Welt 1 — DogFather</span>
|
||||||
<h1 data-i18n="sp_h1">Streamplan & Livebereich</h1>
|
<h1 data-i18n="sp_h1">Streamplan & Livebereich</h1>
|
||||||
@@ -126,8 +126,8 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-streamplan.js?v=20260828b"></script>
|
<script src="assets/js/i18n-streamplan.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script src="assets/js/streamplan.js?v=20260828b"></script>
|
<script src="assets/js/streamplan.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+7
-7
@@ -9,10 +9,10 @@
|
|||||||
<link rel="manifest" href="/manifest.json" />
|
<link rel="manifest" href="/manifest.json" />
|
||||||
<meta name="theme-color" content="#0b0d10" />
|
<meta name="theme-color" content="#0b0d10" />
|
||||||
<meta name="robots" content="noindex" />
|
<meta name="robots" content="noindex" />
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
<style>
|
<style>
|
||||||
/* =====================================================================
|
/* =====================================================================
|
||||||
Supporter-Bereich — komplett neu gestaltet (Nutzer-Feedback
|
Supporter-Bereich — komplett neu gestaltet (Nutzer-Feedback
|
||||||
@@ -515,9 +515,9 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-supporter.js?v=20260828b"></script>
|
<script src="assets/js/i18n-supporter.js?v=20260828c"></script>
|
||||||
<script src="assets/js/supporter.js?v=20260828b"></script>
|
<script src="assets/js/supporter.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script>
|
<script>
|
||||||
(function () {
|
(function () {
|
||||||
const S = window.DogiSupporter;
|
const S = window.DogiSupporter;
|
||||||
|
|||||||
+7
-7
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="VanVan, Diene, Funny, Miss und Marina — das Modi-/Core-Team von Team Dogi." />
|
<meta name="twitter:description" content="VanVan, Diene, Funny, Miss und Marina — das Modi-/Core-Team von Team Dogi." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-modis.jpg');--page-bg-mobile:url('/assets/img/bg-modis.jpg');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-modis.jpg');--page-bg-mobile:url('/assets/img/bg-modis.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -72,9 +72,9 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/data-modis.js?v=20260828b"></script>
|
<script src="assets/js/data-modis.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-team-modis.js?v=20260828b"></script>
|
<script src="assets/js/i18n-team-modis.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
const grid = document.getElementById("modis-grid");
|
const grid = document.getElementById("modis-grid");
|
||||||
|
|||||||
+7
-7
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Die Scouts von Team Dogi bei Spicy Media." />
|
<meta name="twitter:description" content="Die Scouts von Team Dogi bei Spicy Media." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-scouts.jpg');--page-bg-mobile:url('/assets/img/bg-scouts-mobile.jpg');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-scouts.jpg');--page-bg-mobile:url('/assets/img/bg-scouts-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -49,9 +49,9 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/data-scouts.js?v=20260828b"></script>
|
<script src="assets/js/data-scouts.js?v=20260828c"></script>
|
||||||
<script src="assets/js/i18n-team-scouts.js?v=20260828b"></script>
|
<script src="assets/js/i18n-team-scouts.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
const grid = document.getElementById("scouts-grid");
|
const grid = document.getElementById("scouts-grid");
|
||||||
|
|||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Eine persönliche Widmung von Dogi an Tili — seine TikTok-Muddi, die erste und bis heute einzige Streamerin, die ihm all die Zeit treu geblieben ist." />
|
<meta name="twitter:description" content="Eine persönliche Widmung von Dogi an Tili — seine TikTok-Muddi, die erste und bis heute einzige Streamerin, die ihm all die Zeit treu geblieben ist." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
<style>
|
<style>
|
||||||
/* Gleiche Anpassung wie vanvan.html: der site-weit etwas größere
|
/* Gleiche Anpassung wie vanvan.html: der site-weit etwas größere
|
||||||
Fließtext wirkt bei einem so langen persönlichen Brief zu wuchtig —
|
Fließtext wirkt bei einem so langen persönlichen Brief zu wuchtig —
|
||||||
@@ -153,7 +153,7 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-tt-muddi.js?v=20260828b"></script>
|
<script src="assets/js/i18n-tt-muddi.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="VanVan erzählt ihre Geschichte: wie sie zu Team Dogi kam, wer sie ist und was DogFather und Team Dogi ihr bedeuten." />
|
<meta name="twitter:description" content="VanVan erzählt ihre Geschichte: wie sie zu Team Dogi kam, wer sie ist und was DogFather und Team Dogi ihr bedeuten." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
<style>
|
<style>
|
||||||
/* Auf Wunsch: der site-weit vergrößerte Fließtext wirkte auf VanVans
|
/* Auf Wunsch: der site-weit vergrößerte Fließtext wirkte auf VanVans
|
||||||
eigener Seite zu groß (viel Text am Stück) — hier gezielt wieder
|
eigener Seite zu groß (viel Text am Stück) — hier gezielt wieder
|
||||||
@@ -175,7 +175,7 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-vanvan.js?v=20260828b"></script>
|
<script src="assets/js/i18n-vanvan.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+10
-10
@@ -19,10 +19,10 @@
|
|||||||
<link rel="apple-touch-icon" href="assets/img/apple-touch-icon-admin.png" />
|
<link rel="apple-touch-icon" href="assets/img/apple-touch-icon-admin.png" />
|
||||||
<meta name="apple-mobile-web-app-title" content="DogiCrew-Verwaltung" />
|
<meta name="apple-mobile-web-app-title" content="DogiCrew-Verwaltung" />
|
||||||
<meta name="theme-color" content="#0e0a16" />
|
<meta name="theme-color" content="#0e0a16" />
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
<style>
|
<style>
|
||||||
/* =====================================================================
|
/* =====================================================================
|
||||||
verwaltung.html — Dogis privater Command-Center-Bereich.
|
verwaltung.html — Dogis privater Command-Center-Bereich.
|
||||||
@@ -1285,12 +1285,12 @@
|
|||||||
<!-- 21.08.2026: für den "Bestehende Mitglieder importieren"-Knopf in der
|
<!-- 21.08.2026: für den "Bestehende Mitglieder importieren"-Knopf in der
|
||||||
Team-Verwaltung -- liest die von Hand gepflegten Profile aus diesen
|
Team-Verwaltung -- liest die von Hand gepflegten Profile aus diesen
|
||||||
Dateien aus und bietet an, sie 1:1 in die Datenbank zu übernehmen. -->
|
Dateien aus und bietet an, sie 1:1 in die Datenbank zu übernehmen. -->
|
||||||
<script src="assets/js/data-modis.js?v=20260828b"></script>
|
<script src="assets/js/data-modis.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-scouts.js?v=20260828b"></script>
|
<script src="assets/js/data-scouts.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-creator.js?v=20260828b"></script>
|
<script src="assets/js/data-creator.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-manager.js?v=20260828b"></script>
|
<script src="assets/js/data-manager.js?v=20260828c"></script>
|
||||||
<script src="assets/js/data-stimmen-avatare.js?v=20260828b"></script>
|
<script src="assets/js/data-stimmen-avatare.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<!-- Versionsnummer bewusst hochgesetzt (27.08.2026): Caddy liefert Assets mit
|
<!-- Versionsnummer bewusst hochgesetzt (27.08.2026): Caddy liefert Assets mit
|
||||||
max-age=14400, ein Browser hätte die alte Anmelde-Logik sonst bis zu vier
|
max-age=14400, ein Browser hätte die alte Anmelde-Logik sonst bis zu vier
|
||||||
Stunden weiterbenutzt und Dogi wäre trotz Umstellung weiter ohne Code
|
Stunden weiterbenutzt und Dogi wäre trotz Umstellung weiter ohne Code
|
||||||
|
|||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Die Werte, nach denen DogFather als Manager bei Spicy Media arbeitet." />
|
<meta name="twitter:description" content="Die Werte, nach denen DogFather als Manager bei Spicy Media arbeitet." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-werte.jpg');--page-bg-mobile:url('/assets/img/bg-werte-mobile.jpg');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-werte.jpg');--page-bg-mobile:url('/assets/img/bg-werte-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-werte.js?v=20260828b"></script>
|
<script src="assets/js/i18n-werte.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+6
-6
@@ -19,10 +19,10 @@
|
|||||||
<meta name="twitter:description" content="Die Geschichte von DogFather in einer interaktiven Zeitleiste." />
|
<meta name="twitter:description" content="Die Geschichte von DogFather in einer interaktiven Zeitleiste." />
|
||||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828b" />
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||||
</head>
|
</head>
|
||||||
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-zeitreise.jpg');--page-bg-mobile:url('/assets/img/bg-zeitreise-mobile.jpg');">
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-zeitreise.jpg');--page-bg-mobile:url('/assets/img/bg-zeitreise-mobile.jpg');">
|
||||||
<div id="site-header"></div>
|
<div id="site-header"></div>
|
||||||
@@ -237,8 +237,8 @@
|
|||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div id="site-footer"></div>
|
<div id="site-footer"></div>
|
||||||
<script src="assets/js/i18n-zeitreise.js?v=20260828b"></script>
|
<script src="assets/js/i18n-zeitreise.js?v=20260828c"></script>
|
||||||
<script src="assets/js/main.js?v=20260828b"></script>
|
<script src="assets/js/main.js?v=20260828c"></script>
|
||||||
<script>
|
<script>
|
||||||
/* Wachstums-Reveal: Äste blenden sich beim Scrollen sanft ein — passt
|
/* Wachstums-Reveal: Äste blenden sich beim Scrollen sanft ein — passt
|
||||||
zum "wachsenden Baum"-Konzept dieser Seite. Rein page-lokal, betrifft
|
zum "wachsenden Baum"-Konzept dieser Seite. Rein page-lokal, betrifft
|
||||||
|
|||||||
Reference in New Issue
Block a user