// =============================== // CONFIG DINAMICA DAL SERVER // =============================== window.BASE_URL = null; window.PHOTOS_URL = null; window.MEDIA_BASE_ORIGIN = null; window.configReady = false; window.PATH_FULL = false; // Carica /config dal backend (async () => { try { const res = await fetch('/config'); const cfg = await res.json(); window.BASE_URL = cfg.baseUrl; window.PATH_FULL = cfg.pathFull; window.PHOTOS_URL = `${window.BASE_URL}/photos`; window.MEDIA_BASE_ORIGIN = new URL(window.PHOTOS_URL).origin; console.log("[config] BASE_URL:", window.BASE_URL); console.log("[config] PHOTOS_URL:", window.PHOTOS_URL); console.log("[config] MEDIA_BASE_ORIGIN:", window.MEDIA_BASE_ORIGIN); console.log("[config] PATH_FULL:", window.PATH_FULL); window.configReady = true; } catch (err) { console.error("[config] Errore nel caricamento della config:", err); } })(); // =============================== // Utility: normalizza URL dei media // =============================== function toAbsoluteUrl1(pathOrUrl) { if (!pathOrUrl) return ''; if (/^https?:\/\//i.test(pathOrUrl)) return pathOrUrl; const normalized = pathOrUrl.startsWith('/') ? pathOrUrl : `/${pathOrUrl}`; return `${window.MEDIA_BASE_ORIGIN}${normalized}`; } function toAbsoluteUrl(pathOrUrl, name, type, cartella) { const BASE_URL = 'https://prova.patachina.it'; if (!pathOrUrl) return ''; if (!name || !type || !cartella) { throw new Error('name, type e cartella sono obbligatori'); } // Normalizza il path rimuovendo slash iniziali/finali const cleanedPath = String(pathOrUrl).replace(/^\/+|\/+$/g, ''); // Costruzione dell'URL finale return `${BASE_URL}/photos/${encodeURIComponent(name)}/${encodeURIComponent(type)}/${encodeURIComponent(cartella)}/${cleanedPath}`; } window.toAbsoluteUrl = toAbsoluteUrl;