@@ -340,12 +340,16 @@ function renderMediaGrid() {
340340 tile . className = 'media-tile media-tile-loading' ;
341341 const img = document . createElement ( 'img' ) ;
342342 img . dataset . src = _imgUrl ( filename ) ;
343+ img . dataset . fallback = '/public/gallery/' + filename ;
343344 img . alt = 'Pawsitive campus photo' ;
344345 img . onload = ( ) => {
345346 img . classList . add ( 'loaded' ) ;
346347 tile . classList . remove ( 'media-tile-loading' ) ;
347348 } ;
348- img . onerror = ( ) => tile . classList . remove ( 'media-tile-loading' ) ;
349+ img . onerror = ( ) => {
350+ if ( img . dataset . fallback ) { const fb = img . dataset . fallback ; delete img . dataset . fallback ; img . src = fb ; }
351+ else { tile . classList . remove ( 'media-tile-loading' ) ; }
352+ } ;
349353 const overlay = document . createElement ( 'div' ) ;
350354 overlay . className = 'media-tile-overlay' ;
351355 overlay . innerHTML = '<span>🔍</span>' ;
@@ -377,7 +381,9 @@ function openLightbox(i) {
377381 _lbImages = null ;
378382 _lbIndex = i ;
379383 const lb = document . getElementById ( 'imgLightbox' ) ;
380- document . getElementById ( 'lbImg' ) . src = _imgUrl ( mediaImages [ _lbIndex ] ) ;
384+ const lbImg = document . getElementById ( 'lbImg' ) ;
385+ lbImg . dataset . fallback = '/public/gallery/' + mediaImages [ _lbIndex ] ;
386+ lbImg . src = _imgUrl ( mediaImages [ _lbIndex ] ) ;
381387 document . getElementById ( 'lbCounter' ) . textContent = ( _lbIndex + 1 ) + ' / ' + mediaImages . length ;
382388 lb . classList . add ( 'open' ) ;
383389 lockScroll ( ) ;
@@ -408,7 +414,12 @@ function lightboxNav(dir) {
408414 const img = document . getElementById ( 'lbImg' ) ;
409415 img . style . opacity = '0' ;
410416 setTimeout ( ( ) => {
411- img . src = _lbImages ? _lbImages [ _lbIndex ] : _imgUrl ( mediaImages [ _lbIndex ] ) ;
417+ if ( _lbImages ) {
418+ img . src = _lbImages [ _lbIndex ] ;
419+ } else {
420+ img . dataset . fallback = '/public/gallery/' + mediaImages [ _lbIndex ] ;
421+ img . src = _imgUrl ( mediaImages [ _lbIndex ] ) ;
422+ }
412423 document . getElementById ( 'lbCounter' ) . textContent = ( _lbIndex + 1 ) + ' / ' + pool . length ;
413424 img . style . opacity = '1' ;
414425 } , 150 ) ;
0 commit comments