Weiter gebaut
Some checks failed
Host-Based Deploy (Java 21 Fix) / build-and-run (push) Has been cancelled

This commit is contained in:
2026-04-25 16:56:35 +02:00
parent e4b762f905
commit 4f2048bdc8
242 changed files with 14108 additions and 1770 deletions

View File

@@ -119,15 +119,16 @@ document.addEventListener('click', e => {
});
// ── Bild-Karussell (Lightbox/Detail-Ansicht) ─────────────────────────────────
function bilderCarousel(bilder) {
function bilderCarousel(bilder, initialIdx = 0) {
if (!bilder || bilder.length === 0) return '';
const idx = Math.max(0, Math.min(initialIdx, bilder.length - 1));
const slides = bilder.map((b, i) =>
`<div class="car-slide${i === 0 ? ' active' : ''}"><img class="post-bild" src="data:image/jpeg;base64,${b}" alt=""></div>`
`<div class="car-slide${i === idx ? ' active' : ''}"><img class="post-bild" src="data:image/jpeg;base64,${b}" alt=""></div>`
).join('');
const nav = bilder.length > 1
? `<button class="car-btn car-prev" onclick="event.stopPropagation();carNav(this,-1)">&#8249;</button>
<button class="car-btn car-next" onclick="event.stopPropagation();carNav(this,1)">&#8250;</button>
<div class="car-indicator"><span class="car-cur">1</span>&#8202;/&#8202;${bilder.length}</div>`
<div class="car-indicator"><span class="car-cur">${idx + 1}</span>&#8202;/&#8202;${bilder.length}</div>`
: '';
return `<div class="post-carousel">${slides}${nav}</div>`;
}
@@ -138,6 +139,8 @@ function bilderCarousel(bilder) {
* Post-Text bekommt scrollbare Höhenbegrenzung
*/
function _lbSetupContent(postId, prefix, bilder) {
const initialIdx = window.__pigNextIdx != null ? window.__pigNextIdx : 0;
window.__pigNextIdx = null;
const body = document.getElementById('lbPostBody');
const va = body.querySelector(`#${prefix}va-${postId}`);
if (va) va.classList.add('lb-va');
@@ -146,7 +149,7 @@ function _lbSetupContent(postId, prefix, bilder) {
if (pbi) {
if (hasImages) {
pbi.classList.add('lb-ic');
pbi.innerHTML = bilderCarousel(bilder);
pbi.innerHTML = bilderCarousel(bilder, initialIdx);
} else {
pbi.style.display = 'none';
}
@@ -229,6 +232,16 @@ function _pigInit(id, probe) {
`<div class="pig-item"><img src="data:image/jpeg;base64,${bilder[2]}" alt="">${moreHtml}</div>`);
}
}
// Click-Listener: angeklicktes Bild als Startindex für die Lightbox merken
grid.querySelectorAll('.pig-item').forEach((item, idx) => {
item.style.cursor = 'pointer';
item.addEventListener('click', e => {
e.stopPropagation();
window.__pigNextIdx = idx;
item.closest('.post-card')?.click();
});
});
}
function carNav(btn, dir) {