${nombre}
${puesto}
function onReady(fn){ if(document.readyState !== 'loading') fn(); else document.addEventListener('DOMContentLoaded', fn); } // Función que realiza la transformación visual function formatearItemsMenu() { // Seleccionamos todos los enlaces del menú const links = document.querySelectorAll('.nav-link'); links.forEach(link => { // Obtenemos el HTML actual (para no borrar el div del icono) let htmlContent = link.innerHTML; // Verificamos si ya fue modificado para evitar bucles infinitos if (htmlContent.includes('class="fw-semibold d-block text-center"')) return; // CASO 1: Panorama INTERNACIONAL if (htmlContent.includes('Panorama INTERNACIONAL')) { // Reemplazamos el texto por la versión con salto de línea y estilos link.innerHTML = htmlContent.replace( 'Panorama INTERNACIONAL', 'Panorama INTERNACIONAL' ); } // CASO 2: Panorama NACIONAL else if (htmlContent.includes('Panorama NACIONAL')) { link.innerHTML = htmlContent.replace( 'Panorama NACIONAL', 'Panorama NACIONAL' ); } }); } // Crear el MutationObserver para detectar cambios en el DOM const observer = new MutationObserver((mutations) => { // Verificamos si el menú ya existe en el DOM const menu = document.getElementById('navbarClassicCollapse'); if (menu) { formatearItemsMenu(); // Si el menú carga una sola vez y no cambia más, podrías desconectar el observer: // observer.disconnect(); } }); // Observamos todo el 'body' buscando cambios en los hijos (childList) y subárboles (subtree) observer.observe(document.body, { childList: true, subtree: true }); // Intentamos ejecutarlo una vez al inicio por si el menú ya está cargado document.addEventListener('DOMContentLoaded', formatearItemsMenu); /* =============================== INFORMACIÓN PÁGINA PRINCIPAL ================================= */ (() => { const API_URL = "https://portal.ucol.mx/culturaf/gaceta/ws/all/"; const API_URL_AUTOR = "https://portal.ucol.mx/culturaf/gaceta/ws/authors/"; const $left = document.getElementById("colLeft"); const $center = document.getElementById("colCenter"); const $right = document.getElementById("colRight"); const $list = document.getElementById("authorsList"); if (!$left || !$center || !$right) { console.warn("[newsGrid] Faltan contenedores:", { colLeft: !!$left, colCenter: !!$center, colRight: !!$right }); return; } function esc(s) { return String(s ?? "") .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } function trunc(s, n) { s = String(s ?? "").trim(); if (!s) return ""; return s.length > n ? s.slice(0, n - 3).trimEnd() + "..." : s; } function byline(item) { const tipo = esc(item?.tipo || "Artículo"); const foto = esc(item?.autor?.foto || ""); const autor = esc(item?.autor?.nombre || ""); const puesto = esc(item?.autor?.puesto || ""); return `
${safeText(truncText(item?.descripcion, 220))}
${byline(item)}
${nombre}
${puesto}