{"id":20516,"date":"2019-11-01T10:56:42","date_gmt":"2019-11-01T15:56:42","guid":{"rendered":"https:\/\/uninavarra.edu.co\/?page_id=20516"},"modified":"2026-02-11T14:20:29","modified_gmt":"2026-02-11T19:20:29","slug":"convenios-practicas-o-pasantias","status":"publish","type":"page","link":"https:\/\/uninavarra.edu.co\/en\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/","title":{"rendered":"National Student Internship Agreements"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><div class=\"wpb-container \"><div class=\"container\"><div class=\"vc_row wpb_row vc_row-fluid row \"><div class=\"col-sm-8  vc_\">\n\t\t<div class=\"wpb_wrapper \">\n\t\t\t\n\t<div class=\"wpb_raw_code wpb_raw_html wpb_content_element\" >\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<div id=\"convenios-bilaterales-app\" class=\"convenios-container\">\n    <!-- Loader -->\n    <div id=\"loader-bilateral\" class=\"loading\" style=\"display:none;\">\n        <div class=\"loading-spinner\"><\/div>\n        <p>Cargando convenios...<\/p>\n    <\/div>\n    \n    <!-- Filtros -->\n    <div id=\"filtros-section\" class=\"filtros-container\" style=\"display:none;\">\n        <!-- Barra de b\u00fasqueda - Primera fila -->\n        <div class=\"search-row\">\n            <div class=\"search-wrapper\">\n                <input type=\"text\" id=\"search-input\" class=\"search-input\" placeholder=\"Buscar convenios...\">\n                <button id=\"search-button\" class=\"search-button\">\n                    <i class=\"fas fa-search\"><\/i>\n                <\/button>\n            <\/div>\n        <\/div>\n        \n        <!-- Filtros - Segunda fila -->\n        <div class=\"filters-row\">\n            <div class=\"filter-group\">\n                <label for=\"filtro-ciudad\">Ciudad:<\/label>\n                <select id=\"filtro-ciudad\" class=\"form-control\">\n                    <option value=\"\">Todas las ciudades<\/option>\n                <\/select>\n            <\/div>\n            \n            <div class=\"filter-group\">\n                <label for=\"filtro-programa\">Programa Acad\u00e9mico:<\/label>\n                <select id=\"filtro-programa\" class=\"form-control\">\n                    <option value=\"\">Todos los programas<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n    <\/div>\n    \n    <!-- Contenedor de tarjetas -->\n    <div id=\"tarjetas-bilaterales-container\" class=\"tarjetas-grid\"><\/div>\n    \n    <!-- Controles de paginaci\u00f3n -->\n    <div id=\"paginacion-bilaterales-container\" class=\"paginacion-container\" style=\"display:none;\">\n        <button id=\"btn-bilateral-anterior\" class=\"btn-paginacion\">\u2190 Anterior<\/button>\n        <span id=\"info-pagina-bilateral\" class=\"info-pagina\"><\/span>\n        <button id=\"btn-bilateral-siguiente\" class=\"btn-paginacion\">Siguiente \u2192<\/button>\n    <\/div>\n    \n    <!-- Mensaje de no resultados -->\n    <div id=\"no-results-bilateral\" class=\"no-results\" style=\"display:none;\">\n        <h3>No hay convenios disponibles<\/h3>\n        <p>Intenta ajustar los filtros de b\u00fasqueda<\/p>\n    <\/div>\n<\/div>\n\n<!-- Popup overlay -->\n<div id=\"popup-overlay\" class=\"popup-overlay\">\n    <div class=\"popup-container\">\n        <div class=\"popup-header\">\n            <h2 id=\"popup-title\" class=\"popup-title\"><\/h2>\n            <button id=\"popup-close\" class=\"popup-close\">\n                <i class=\"fas fa-times\"><\/i>\n            <\/button>\n        <\/div>\n        <div class=\"popup-body\"><\/div>\n    <\/div>\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t\t<\/div> \n\t<\/div><div class=\"col-sm-4  vc_\">\n\t\t<div class=\"wpb_wrapper \">\n\t\t\t\n\t<div class=\"wpb_raw_code wpb_raw_html wpb_content_element\" >\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css\" \/>\n<script src=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js\"><\/script>\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet.markercluster@1.5.3\/dist\/MarkerCluster.css\" \/>\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet.markercluster@1.5.3\/dist\/MarkerCluster.Default.css\" \/>\n<script src=\"https:\/\/unpkg.com\/leaflet.markercluster@1.5.3\/dist\/leaflet.markercluster.js\"><\/script>\n\n<!-- Secci\u00f3n del Mapa Leaflet -->\n<div class=\"seccion-mapa-convenios\">\n    <div class=\"header-mapa-convenios\">\n        <h2 class=\"titulo-mapa-convenios\">\n            <i class=\"fas fa-map-marked-alt\"><\/i> Ubicaci\u00f3n Geogr\u00e1fica de Instituciones\n        <\/h2>\n        <span class=\"contador-mapa-convenios\" id=\"contadorMapaConvenios\">0 instituciones<\/span>\n    <\/div>\n    <div id=\"mapa-convenios-leaflet\" class=\"contenedor-mapa-convenios\"><\/div>\n    \n    <!-- Leyenda del mapa -->\n    <div class=\"leyenda-mapa-convenios\">\n        <div class=\"item-leyenda-mapa-convenios\">\n            <span class=\"punto-leyenda-convenios punto-vigente-convenios\"><\/span>\n            <span>Convenios Vigentes<\/span>\n        <\/div>\n    <\/div>\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t\t<\/div> \n\t<\/div><\/div><\/div><\/div><div class=\"wpb-container \"><div class=\"container\"><div class=\"vc_row wpb_row vc_row-fluid row \"><div class=\"col-sm-12  vc_\">\n\t\t<div class=\"wpb_wrapper \">\n\t\t\t\n\t<div class=\"wpb_raw_code wpb_raw_js\" >\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<script>\n\/\/ Variables globales para convenios bilaterales\nconst API_KEY = 'AIzaSyBnk4I7IbLq1GV4wVuIypF6lAXijdVknSw';\nconst SPREADSHEET_ID = '1yHt6UCf9JSIhJ3uStlQlWeApkRZeAqC42FllDOYz3zk';\nlet webDataBilateral = [];\nlet webDataBilateralFiltrado = [];\nlet paginaActualBilateral = 1;\nconst tarjetasPorPaginaBilateral = 2; \/\/ 2 tarjetas \u00d7 2 filas = 4 tarjetas por p\u00e1gina\n\n\/\/ Variables para el mapa Leaflet\nlet mapaConvenios;\nlet marcadoresConvenios = [];\n\n\/\/ Imagen por defecto\nconst IMAGEN_POR_DEFECTO = 'https:\/\/uninavarra.edu.co\/wp-content\/uploads\/2024\/07\/news-01-1-1.jpg';\n\n\/\/ Al cargar el documento\n$(document).ready(function() {\n    cargarDatosBilaterales();\n    \n    \/\/ Eventos de paginaci\u00f3n bilaterales\n    $(\"#btn-bilateral-anterior\").click(function() {\n        mostrarPaginaBilateral(paginaActualBilateral - 1);\n    });\n\n    $(\"#btn-bilateral-siguiente\").click(function() {\n        mostrarPaginaBilateral(paginaActualBilateral + 1);\n    });\n    \n    \/\/ Eventos de filtros\n    $(\"#filtro-ciudad, #filtro-programa\").change(function() {\n        aplicarFiltros();\n    });\n    \n    \/\/ B\u00fasqueda en tiempo real\n    $(\"#search-input\").on('input', function() {\n        aplicarFiltros();\n    });\n    \n    \/\/ Cerrar popup\n    $(\"#popup-close\").click(function() {\n        $(\"#popup-overlay\").fadeOut(300);\n        $(\"body\").removeClass(\"popup-open\");\n    });\n    \n    \/\/ Cerrar popup al hacer clic fuera\n    $(document).on('click', '.popup-overlay', function(e) {\n        if ($(e.target).closest('.popup-container').length === 0) {\n            $(\"#popup-overlay\").fadeOut(300);\n            $(\"body\").removeClass(\"popup-open\");\n        }\n    });\n    \n    \/\/ Cerrar popup con ESC\n    $(document).keydown(function(e) {\n        if (e.keyCode === 27) {\n            $(\"#popup-overlay\").fadeOut(300);\n            $(\"body\").removeClass(\"popup-open\");\n        }\n    });\n});\n\n\/\/ ================================\n\/\/ INICIALIZACI\u00d3N DEL MAPA LEAFLET\n\/\/ ================================\n\nfunction inicializarMapaConvenios() {\n    \/\/ Verificar que el contenedor exista\n    if (!document.getElementById('mapa-convenios-leaflet')) {\n        console.error('\u274c Contenedor del mapa no encontrado');\n        return;\n    }\n\n    \/\/ \u2705 Crear mapa INTERACTIVO\n    mapaConvenios = L.map('mapa-convenios-leaflet', {\n        center: [4.5709, -74.2973],\n        zoom: 5,\n        dragging: true,\n        touchZoom: true,\n        doubleClickZoom: true,\n        scrollWheelZoom: true,\n        boxZoom: true,\n        keyboard: true,\n        zoomControl: true\n    });\n\n    \/\/ Capa de mapa pol\u00edtico\n    L.tileLayer('https:\/\/server.arcgisonline.com\/ArcGIS\/rest\/services\/World_Street_Map\/MapServer\/tile\/{z}\/{y}\/{x}', {\n        attribution: 'Tiles &copy; Esri',\n        maxZoom: 18,\n        minZoom: 2\n    }).addTo(mapaConvenios);\n\n    \/\/ Capa de etiquetas\n    L.tileLayer('https:\/\/stamen-tiles-{s}.a.ssl.fastly.net\/terrain-labels\/{z}\/{x}\/{y}.png', {\n        attribution: 'Map tiles by Stamen Design',\n        maxZoom: 18,\n        opacity: 0.7\n    }).addTo(mapaConvenios);\n\n    console.log('\u2705 Mapa de convenios inicializado');\n}\n\n\/\/ ================================\n\/\/ AGREGAR MARCADORES AL MAPA\n\/\/ ================================\n\nfunction agregarMarcadoresConvenios(tarjetasData) {\n    \/\/ \u2705 Limpiar grupo de clusters anterior si existe\n    if (window.grupoCluster) {\n        mapaConvenios.removeLayer(window.grupoCluster);\n    }\n    \n    \/\/ \u2705 Crear nuevo grupo de clusters\n    window.grupoCluster = L.markerClusterGroup({\n        maxClusterRadius: 50,  \/\/ Radio de agrupaci\u00f3n (ajusta seg\u00fan necesites)\n        spiderfyOnMaxZoom: true,\n        showCoverageOnHover: false,\n        zoomToBoundsOnClick: true,\n        iconCreateFunction: function(cluster) {\n            let count = cluster.getChildCount();\n            let className = 'marker-cluster-custom';\n            \n            \/\/ Tama\u00f1o seg\u00fan cantidad\n            if (count > 10) {\n                className += ' marker-cluster-large';\n            } else if (count > 5) {\n                className += ' marker-cluster-medium';\n            } else {\n                className += ' marker-cluster-small';\n            }\n            \n            return L.divIcon({\n                html: `<div><span>${count}<\/span><\/div>`,\n                className: className,\n                iconSize: L.point(40, 40)\n            });\n        }\n    });\n    \n    marcadoresConvenios = [];\n    let institucionesConMapa = 0;\n\n    \/\/ \ud83d\udd0d DEBUG\n    console.log('\ud83d\udcca Total de instituciones:', tarjetasData.length);\n    let conCoordenadas = 0;\n    let sinCoordenadas = 0;\n\n    tarjetasData.forEach((tarjeta, index) => {\n        let coordenadas = obtenerCoordenadasInstitucion(tarjeta.institucion);\n        \n        if (coordenadas && coordenadas.lat && coordenadas.lng) {\n            institucionesConMapa++;\n            conCoordenadas++;\n            console.log(`\u2705 ${tarjeta.institucion}: [${coordenadas.lat}, ${coordenadas.lng}]`);\n            \n            \/\/ Marcador simple\n            const iconoHTML = `\n    <div class=\"marcador-convenio-simple\" data-index=\"${index}\"><\/div>\n`;\n\n            const icono = L.divIcon({\n                html: iconoHTML,\n                className: '',\n                iconSize: [32, 32],\n                iconAnchor: [16, 16]\n            });\n\n            \/\/ Crear marcador\n            const marcador = L.marker([coordenadas.lat, coordenadas.lng], { icon: icono });\n\n            \/\/ Popup\n            const popupContent = `\n                <div class=\"popup-mapa-convenios\">\n                    <div class=\"popup-mapa-titulo\">${tarjeta.institucion}<\/div>\n                    <div class=\"popup-mapa-ubicacion\">\n                        \ud83d\udccd ${tarjeta.ciudadPrincipal || 'Sin ciudad'}, ${tarjeta.pais || 'Sin pa\u00eds'}\n                    <\/div>\n                    ${tarjeta.programasUninavarra && tarjeta.programasUninavarra.length > 0 ? \n                        `<div class=\"popup-mapa-programas\">\n                            <strong>Programas:<\/strong> ${tarjeta.programasUninavarra.slice(0, 2).join(', ')}\n                            ${tarjeta.programasUninavarra.length > 2 ? ` (+${tarjeta.programasUninavarra.length - 2} m\u00e1s)` : ''}\n                        <\/div>` : ''}\n                    <div class=\"popup-mapa-botones\">\n                        <button class=\"popup-mapa-btn popup-mapa-btn-detalles\" onclick=\"mostrarPopupDesdeMapa(${index})\">\n                            Ver detalles completos\n                        <\/button>\n                        <button class=\"popup-mapa-btn popup-mapa-btn-volver\" onclick=\"volverMapaColombia()\">\n                            \u2190 Volver al mapa\n                        <\/button>\n                    <\/div>\n                <\/div>\n            `;\n\n            marcador.bindPopup(popupContent, {\n                maxWidth: 300,\n                className: 'popup-mapa-custom'\n            });\n\n            \/\/ \u2705 Agregar al grupo de clusters en lugar de directamente al mapa\n            window.grupoCluster.addLayer(marcador);\n            marcadoresConvenios.push(marcador);\n        } else {\n            sinCoordenadas++;\n            console.log(`\u274c ${tarjeta.institucion}: SIN COORDENADAS`);\n        }\n    });\n    \n    \/\/ \u2705 Agregar el grupo de clusters al mapa\n    mapaConvenios.addLayer(window.grupoCluster);\n    \n    \/\/ Actualizar contador\n    $(\"#contadorMapaConvenios\").text(`${institucionesConMapa} instituciones`);\n    \n    console.log(`\ud83d\udccd Con coordenadas: ${conCoordenadas} | Sin coordenadas: ${sinCoordenadas}`);\n    console.log(`\u2705 ${institucionesConMapa} marcadores agregados al mapa`);\n}\n\n\/\/ ================================\n\/\/ VOLVER AL MAPA DE COLOMBIA\n\/\/ ================================\n\nwindow.volverMapaColombia = function() {\n    if (mapaConvenios) {\n        \/\/ Cerrar todos los popups\n        mapaConvenios.closePopup();\n        \n        \/\/ Volver a la vista inicial de Colombia\n        mapaConvenios.setView([4.5709, -74.2973], 6, {\n            animate: true,\n            duration: 0.8\n        });\n        \n        console.log('\ud83d\udd19 Regresando a vista de Colombia');\n    }\n};\n\n\/\/ ================================\n\/\/ OBTENER COORDENADAS (VERSION DEBUG)\n\/\/ ================================\n\nfunction obtenerCoordenadasInstitucion(nombreInstitucion) {\n    \/\/ Buscar en los datos filtrados actuales\n    let institucion = webDataBilateralFiltrado.find(fila => fila.INSTITUCI\u00d3N === nombreInstitucion);\n    \n    if (!institucion) {\n        console.log(`\u274c No se encontr\u00f3 la instituci\u00f3n: ${nombreInstitucion}`);\n        return null;\n    }\n    \n    \/\/ \ud83d\udd0d DEBUG: Ver TODAS las columnas disponibles (solo para la primera instituci\u00f3n)\n    if (nombreInstitucion === webDataBilateralFiltrado[0].INSTITUCI\u00d3N) {\n        console.log('\ud83d\udd0d COLUMNAS DISPONIBLES EN LOS DATOS:');\n        console.log(Object.keys(institucion));\n        console.log('\ud83d\udccb DATOS COMPLETOS DE LA PRIMERA INSTITUCI\u00d3N:');\n        console.log(institucion);\n    }\n    \n    \/\/ Intentar con diferentes variaciones del nombre de columna\n    let lat = null;\n    let lng = null;\n    \n    \/\/ Buscar LATITUD (con diferentes variaciones)\n    if (institucion.LATITUD) {\n        lat = parseFloat(institucion.LATITUD);\n    } else if (institucion.Latitud) {\n        lat = parseFloat(institucion.Latitud);\n    } else if (institucion.latitud) {\n        lat = parseFloat(institucion.latitud);\n    } else if (institucion['LATITUD ']) { \/\/ Con espacio al final\n        lat = parseFloat(institucion['LATITUD ']);\n    }\n    \n    \/\/ Buscar LONGITUD (con diferentes variaciones)\n    if (institucion.LONGITUD) {\n        lng = parseFloat(institucion.LONGITUD);\n    } else if (institucion.Longitud) {\n        lng = parseFloat(institucion.Longitud);\n    } else if (institucion.longitud) {\n        lng = parseFloat(institucion.longitud);\n    } else if (institucion['LONGITUD ']) { \/\/ Con espacio al final\n        lng = parseFloat(institucion['LONGITUD ']);\n    }\n    \n    \/\/ \ud83d\udd0d DEBUG: Mostrar qu\u00e9 valores se encontraron\n    console.log(`\ud83d\udd0d ${nombreInstitucion}:`);\n    console.log(`   - Latitud encontrada: ${lat} (v\u00e1lida: ${!isNaN(lat) && lat !== 0})`);\n    console.log(`   - Longitud encontrada: ${lng} (v\u00e1lida: ${!isNaN(lng) && lng !== 0})`);\n    \n    \/\/ Validar que sean n\u00fameros v\u00e1lidos\n    if (!isNaN(lat) && !isNaN(lng) && lat !== 0 && lng !== 0) {\n        return { lat: lat, lng: lng };\n    }\n    \n    return null;\n}\n\n\/\/ ================================\n\/\/ FUNCI\u00d3N GLOBAL PARA POPUP DESDE MAPA\n\/\/ ================================\n\nwindow.mostrarPopupDesdeMapa = function(index) {\n    let tarjetasData = obtenerTarjetasActuales();\n    if (tarjetasData[index]) {\n        mostrarPopup(tarjetasData[index]);\n    }\n};\n\n\/\/ Funci\u00f3n auxiliar para obtener las tarjetas actuales\nfunction obtenerTarjetasActuales() {\n    let tarjetasAgrupadas = {};\n    \n    webDataBilateralFiltrado.forEach(fila => {\n        let institucion = fila.INSTITUCI\u00d3N;\n        let grupoConvenio = fila[\"GRUPO DE CONVENIO\"] || '';\n        let tipoAcuerdo = fila[\"TIPO DE ACUERDO\"] || '';\n        let claveConvenio = `${tipoAcuerdo}-${grupoConvenio}`;\n        \n        if (!tarjetasAgrupadas[institucion]) {\n            let ciudadPrincipal = fila[\"CIUDAD PRINCIPAL DE LA INSTITUCI\u00d3N\"] ? fila[\"CIUDAD PRINCIPAL DE LA INSTITUCI\u00d3N\"].trim() : '';\n            \n            tarjetasAgrupadas[institucion] = {\n                institucion: institucion,\n                pais: fila[\"PA\u00cdS DE LA INSTITUCI\u00d3N\"] || '',\n                departamento: fila[\"DEPARTAMENTO\/ESTADO DE LA INSTITUCI\u00d3N\"] || '',\n                ciudadPrincipal: ciudadPrincipal,\n                imagenUrl: fila[\"LINK IMAGEN INSTITUCI\u00d3N\"] || '',\n                enlaceInstitucion: fila[\"LINK P\u00c1GINA WEB INSTITUCI\u00d3N\"] || '',\n                tiposMovilidad: fila[\"TIPOS MOVILIDAD\"] ? fila[\"TIPOS MOVILIDAD\"].split(',').map(t => t.trim()).filter(t => t !== '') : [],\n                anotaciones: fila[\"ANOTACIONES\"] || '',\n                convenios: {},\n                programasUninavarra: []\n            };\n        }\n        \n        if (!tarjetasAgrupadas[institucion].convenios[claveConvenio]) {\n            tarjetasAgrupadas[institucion].convenios[claveConvenio] = {\n                tipoAcuerdo: tipoAcuerdo,\n                grupoConvenio: grupoConvenio,\n                objeto: fila[\"OBJETO DEL ACUERDO\"] || '',\n                observacion: fila[\"OBSERVACI\u00d3N\"] || '',\n                estado: fila.ESTADO || '',\n                fechaInicio: fila[\"FECHA DE INICIO\"] || '',\n                fechaVencimiento: fila[\"FECHA DE VENCIMIENTO\"] || ''\n            };\n        }\n        \n        let programasArray = procesarProgramasAcademicos(fila[\"PROGRAMAS ACAD\u00c9MICOS AFINES UNINAVARRA\"]);\n        programasArray.forEach(programa => {\n            if (programa && !tarjetasAgrupadas[institucion].programasUninavarra.includes(programa)) {\n                tarjetasAgrupadas[institucion].programasUninavarra.push(programa);\n            }\n        });\n    });\n    \n    return Object.values(tarjetasAgrupadas);\n}\n\n\/\/ ================================\n\/\/ FUNCI\u00d3N PARA CARGAR DATOS\n\/\/ ================================\n\nfunction cargarDatosBilaterales() {\n    \/\/ Mostrar loader\n    $(\"#loader-bilateral\").show();\n    $(\"#filtros-section\").hide();\n    $(\"#tarjetas-bilaterales-container\").hide();\n    $(\"#paginacion-bilaterales-container\").hide();\n    $(\"#no-results-bilateral\").hide();\n    $(\".seccion-mapa-convenios\").hide();\n    \n    getSheetData(SPREADSHEET_ID, 'WEB!A:AZ', API_KEY)\n        .then(response => {\n            webDataBilateral = procesarDatosWeb(response);\n            \n            \/\/ CR\u00cdTICO: Aplicar filtros base desde el inicio\n            webDataBilateralFiltrado = webDataBilateral.filter(fila => cumpleFiltrosBase(fila));\n            \n            generarOpcionesFiltros();\n            \n            \/\/ \u2705 NO generar tarjetas todav\u00eda - primero inicializar el mapa\n            \n            \/\/ Ocultar loader y mostrar contenido\n            $(\"#loader-bilateral\").hide();\n            $(\"#filtros-section\").fadeIn(300);\n            \n            \/\/ \u2705 MOSTRAR MAPA Y LUEGO INICIALIZARLO\n            $(\".seccion-mapa-convenios\").fadeIn(300, function() {\n                \/\/ Inicializar mapa DESPU\u00c9S de que sea visible\n                inicializarMapaConvenios();\n                \n                \/\/ Peque\u00f1o delay para asegurar que el DOM est\u00e9 listo\n                setTimeout(function() {\n                    if (mapaConvenios) {\n                        mapaConvenios.invalidateSize(); \/\/ \u2705 Forzar rec\u00e1lculo de dimensiones\n                        console.log('\u2705 Mapa redimensionado correctamente');\n                        \n                        \/\/ \u2705 AHORA S\u00cd generar tarjetas Y agregar marcadores\n                        generarTarjetasBilaterales();\n                        $(\"#tarjetas-bilaterales-container\").fadeIn(300);\n                    }\n                }, 100);\n            });\n        })\n        .catch(error => {\n            console.error('Error al cargar datos:', error);\n            $(\"#loader-bilateral\").hide();\n            $(\"#no-results-bilateral\").html('<h3>Error al cargar los datos. Intente recargar la p\u00e1gina.<\/h3>').show();\n        });\n}\n\n\/\/ Funci\u00f3n para obtener datos de una hoja de Google Sheets\nasync function getSheetData(id, rango, key) {\n    let url = `https:\/\/sheets.googleapis.com\/v4\/spreadsheets\/${id}\/values\/${rango}?key=${key}`;\n    const response = await fetch(url);\n    return response.json();\n}\n\n\/\/ Funci\u00f3n para procesar los datos de la hoja WEB\nfunction procesarDatosWeb(infoJson) {\n    let entries = infoJson.values;\n    if (!entries || entries.length === 0) {\n        return [];\n    }\n    \n    let campos = entries[0];\n    let datos = [];\n    \n    for (let f = 1; f < entries.length; f++) {\n        let fila = entries[f];\n        let obj = {};\n        \n        for (let c = 0; c < fila.length; c++) {\n            let celda = fila[c];\n            if (c < campos.length) {\n                obj[campos[c]] = celda || '';\n            }\n        }\n        \n        if (obj.INSTITUCI\u00d3N) {\n            datos.push(obj);\n        }\n    }\n    \n    return datos;\n}\n\n\/\/ Funci\u00f3n para procesar programas acad\u00e9micos (maneja \"Todos\", uno solo, o varios con saltos de l\u00ednea)\nfunction procesarProgramasAcademicos(programasTexto) {\n    if (!programasTexto || programasTexto.trim() === '') {\n        return [];\n    }\n    \n    \n    \/\/ Dividir por saltos de l\u00ednea, comas, o punto y coma\n    let programas = programasTexto.split(\/[\\n,;]+\/).map(p => p.trim()).filter(p => p !== '');\n    \n    return programas;\n}\n\n\/\/ Funci\u00f3n para generar opciones de filtros\nfunction generarOpcionesFiltros() {\n    let ciudades = new Set();\n    let programas = new Set();\n    \n    \/\/ Usar solo datos que pasan los filtros base\n    webDataBilateralFiltrado.forEach(fila => {\n        if (fila[\"CIUDAD PRINCIPAL DE LA INSTITUCI\u00d3N\"]) {\n            ciudades.add(fila[\"CIUDAD PRINCIPAL DE LA INSTITUCI\u00d3N\"]);\n        }\n        \n        \/\/ Procesar programas acad\u00e9micos\n        let programasArray = procesarProgramasAcademicos(fila[\"PROGRAMAS ACAD\u00c9MICOS AFINES UNINAVARRA\"]);\n        programasArray.forEach(prog => {\n            \/\/ \u2705 FILTRAR \"Todos\" para que no se agregue como opci\u00f3n\n            if (prog && prog.toLowerCase() !== 'todos') {\n                programas.add(prog);\n            }\n        });\n    });\n    \n    \/\/ Llenar select de ciudades\n    let optsCiudad = '<option value=\"\">Todas las ciudades<\/option>';\n    Array.from(ciudades).sort().forEach(ciudad => {\n        optsCiudad += `<option value=\"${ciudad}\">${ciudad}<\/option>`;\n    });\n    $(\"#filtro-ciudad\").html(optsCiudad);\n    \n    \/\/ Llenar select de programas\n    let optsProg = '<option value=\"\">Todos los programas<\/option>';\n    Array.from(programas).sort().forEach(prog => {\n        optsProg += `<option value=\"${prog}\">${prog}<\/option>`;\n    });\n    $(\"#filtro-programa\").html(optsProg);\n}\n\n\/\/ ================================\n\/\/ \u2705 NUEVA FUNCI\u00d3N DE FILTROS BASE\n\/\/ ================================\n\nfunction cumpleFiltrosBase(fila) {\n    \/\/ Filtro 1: ESTADO debe ser vigente\n    if (!fila.ESTADO || fila.ESTADO.toLowerCase() !== 'vigente') {\n        return false;\n    }\n    \n    \/\/ \u2705 Filtro 2: La columna \"Pr\u00e1cticas estudiantiles\" debe tener una \"X\"\n    let practicasEstudiantiles = (fila[\"Pr\u00e1cticas estudiantiles\"] || '').trim().toUpperCase();\n    \n    if (practicasEstudiantiles !== 'X') {\n        return false;\n    }\n    \n    \/\/ Filtro 3: TIPO DE INSTITUCI\u00d3N NO debe ser \"Instituci\u00f3n de Educaci\u00f3n Superior\"\n    let tipoInstitucion = fila[\"TIPO DE INSTITUCI\u00d3N\"] || '';\n    if (tipoInstitucion === \"Instituci\u00f3n de Educaci\u00f3n Superior\") {\n        return false;\n    }\n    \n    return true;\n}\n\n\/\/ Funci\u00f3n para aplicar filtros\nfunction aplicarFiltros() {\n    let filtroCiudad = $(\"#filtro-ciudad\").val();\n    let filtroProg = $(\"#filtro-programa\").val();\n    let busqueda = $(\"#search-input\").val().toLowerCase().trim();\n    \n    \/\/ Partir de los datos que ya pasaron los filtros base\n    let datosFiltrados = webDataBilateral.filter(fila => {\n        \/\/ Filtros base (SIEMPRE aplicados)\n        if (!cumpleFiltrosBase(fila)) return false;\n        \n        \/\/ Filtro ciudad\n        if (filtroCiudad && fila[\"CIUDAD PRINCIPAL DE LA INSTITUCI\u00d3N\"] !== filtroCiudad) {\n            return false;\n        }\n        \n        \/\/ Filtro programa\n        if (filtroProg) {\n            let programasArray = procesarProgramasAcademicos(fila[\"PROGRAMAS ACAD\u00c9MICOS AFINES UNINAVARRA\"]);\n            let programasTexto = programasArray.join(' ').toLowerCase();\n            \n            if (!programasTexto.includes(filtroProg.toLowerCase())) {\n                return false;\n            }\n        }\n        \n        \/\/ B\u00fasqueda en tiempo real\n        if (busqueda) {\n            let programasArray = procesarProgramasAcademicos(fila[\"PROGRAMAS ACAD\u00c9MICOS AFINES UNINAVARRA\"]);\n            \n            let textoCompleto = `\n                ${fila.INSTITUCI\u00d3N || ''} \n                ${fila[\"PA\u00cdS DE LA INSTITUCI\u00d3N\"] || ''} \n                ${fila[\"DEPARTAMENTO\/ESTADO DE LA INSTITUCI\u00d3N\"] || ''} \n                ${fila[\"CIUDAD PRINCIPAL DE LA INSTITUCI\u00d3N\"] || ''} \n                ${programasArray.join(' ')}\n            `.toLowerCase();\n            \n            if (!textoCompleto.includes(busqueda)) {\n                return false;\n            }\n        }\n        \n        return true;\n    });\n    \n    webDataBilateralFiltrado = datosFiltrados;\n    generarTarjetasBilaterales();\n}\n\n\/\/ Funci\u00f3n para generar tarjetas bilaterales\nfunction generarTarjetasBilaterales() {\n    let tarjetasAgrupadas = {};\n    \n    webDataBilateralFiltrado.forEach(fila => {\n        let institucion = fila.INSTITUCI\u00d3N;\n        let grupoConvenio = fila[\"GRUPO DE CONVENIO\"] || '';\n        let tipoAcuerdo = fila[\"TIPO DE ACUERDO\"] || '';\n        let claveConvenio = `${tipoAcuerdo}-${grupoConvenio}`;\n        \n        if (!tarjetasAgrupadas[institucion]) {\n            let ciudadPrincipal = fila[\"CIUDAD PRINCIPAL DE LA INSTITUCI\u00d3N\"] ? fila[\"CIUDAD PRINCIPAL DE LA INSTITUCI\u00d3N\"].trim() : '';\n            \n            tarjetasAgrupadas[institucion] = {\n                institucion: institucion,\n                pais: fila[\"PA\u00cdS DE LA INSTITUCI\u00d3N\"] || '',\n                departamento: fila[\"DEPARTAMENTO\/ESTADO DE LA INSTITUCI\u00d3N\"] || '',\n                ciudadPrincipal: ciudadPrincipal,\n                imagenUrl: fila[\"LINK IMAGEN INSTITUCI\u00d3N\"] || '',\n                enlaceInstitucion: fila[\"LINK P\u00c1GINA WEB INSTITUCI\u00d3N\"] || '',\n                tiposMovilidad: fila[\"TIPOS MOVILIDAD\"] ? fila[\"TIPOS MOVILIDAD\"].split(',').map(t => t.trim()).filter(t => t !== '') : [],\n                anotaciones: fila[\"ANOTACIONES\"] || '',\n                convenios: {},\n                programasUninavarra: []\n            };\n        }\n        \n        if (!tarjetasAgrupadas[institucion].convenios[claveConvenio]) {\n            tarjetasAgrupadas[institucion].convenios[claveConvenio] = {\n                tipoAcuerdo: tipoAcuerdo,\n                grupoConvenio: grupoConvenio,\n                objeto: fila[\"OBJETO DEL ACUERDO\"] || '',\n                observacion: fila[\"OBSERVACI\u00d3N\"] || '',\n                estado: fila.ESTADO || '',\n                fechaInicio: fila[\"FECHA DE INICIO\"] || '',\n                fechaVencimiento: fila[\"FECHA DE VENCIMIENTO\"] || ''\n            };\n        }\n        \n        \/\/ Agregar programas UNINAVARRA (sin duplicados) - Maneja saltos de l\u00ednea\n        let programasArray = procesarProgramasAcademicos(fila[\"PROGRAMAS ACAD\u00c9MICOS AFINES UNINAVARRA\"]);\n        programasArray.forEach(programa => {\n            if (programa && !tarjetasAgrupadas[institucion].programasUninavarra.includes(programa)) {\n                tarjetasAgrupadas[institucion].programasUninavarra.push(programa);\n            }\n        });\n    });\n    \n    let tarjetasArray = Object.values(tarjetasAgrupadas);\n    \n    \/\/ \u2705 Actualizar mapa con los datos filtrados\n    if (mapaConvenios) {\n        agregarMarcadoresConvenios(tarjetasArray);\n    }\n    \n    generarTarjetasBilateralesHTML(tarjetasArray);\n}\n\n\/\/ Funci\u00f3n para generar el HTML de las tarjetas bilaterales\nfunction generarTarjetasBilateralesHTML(tarjetasData) {\n    let contenedor = $(\"#tarjetas-bilaterales-container\");\n    contenedor.empty();\n    \n    if (tarjetasData.length === 0) {\n        $(\"#no-results-bilateral\").show();\n        $(\"#paginacion-bilaterales-container\").hide();\n        return;\n    }\n    \n    tarjetasData.forEach((tarjeta, index) => {\n        let tarjetaId = `tarjeta-bilateral-${index}`;\n        \n        \/\/ Usar imagen por defecto si no hay imagen\n        let imagenUrl = (tarjeta.imagenUrl && tarjeta.imagenUrl.trim() !== '') ? tarjeta.imagenUrl : IMAGEN_POR_DEFECTO;\n        \n        let tarjetaHTML = `\n            <div id=\"${tarjetaId}\" class=\"tarjeta tarjeta-bilateral\" style=\"display:none;\">\n                <div class=\"tarjeta-img\">\n                    <img decoding=\"async\" src=\"${imagenUrl}\" alt=\"${tarjeta.institucion}\">\n                    <div class=\"tarjeta-overlay\"><\/div>\n                    <h3 class=\"tarjeta-titulo\">${tarjeta.institucion}<\/h3>\n                    ${tarjeta.enlaceInstitucion ? \n                      `<a href=\"${tarjeta.enlaceInstitucion}\" target=\"_blank\" class=\"tarjeta-web-link\" title=\"Visitar sitio web\">\n                        <i class=\"fas fa-globe\"><\/i>\n                       <\/a>` : ''}\n                <\/div>\n                <div class=\"tarjeta-content\">\n                    <div class=\"tarjeta-datos\">\n                        ${tarjeta.pais ? `\n                        <div class=\"uninavarra-card-info-item\">\n                            <div class=\"uninavarra-card-info-label\">Pa\u00eds:<\/div>\n                            <div class=\"uninavarra-card-info-value\">${tarjeta.pais}<\/div>\n                        <\/div>` : ''}\n                        ${tarjeta.departamento ? `\n                        <div class=\"uninavarra-card-info-item\">\n                            <div class=\"uninavarra-card-info-label\">Dep.\/Estado:<\/div>\n                            <div class=\"uninavarra-card-info-value\">${tarjeta.departamento}<\/div>\n                        <\/div>` : ''}\n                        ${tarjeta.ciudadPrincipal ? `\n                        <div class=\"uninavarra-card-info-item\">\n                            <div class=\"uninavarra-card-info-label\">Ciudad:<\/div>\n                            <div class=\"uninavarra-card-info-value\">${tarjeta.ciudadPrincipal}<\/div>\n                        <\/div>` : ''}\n                        ${tarjeta.anotaciones && tarjeta.anotaciones.trim() !== '' ? `\n                        <div class=\"uninavarra-card-info-item\">\n                            <div class=\"uninavarra-card-info-label\">Anotaciones:<\/div>\n                            <div class=\"uninavarra-card-info-value\">${tarjeta.anotaciones}<\/div>\n                        <\/div>` : ''}\n                    <\/div>\n                <\/div>\n                <div class=\"tarjeta-footer\">\n                    <a href=\"javascript:void(0);\" class=\"conoce-mas-btn\">Conoce m\u00e1s<\/a>\n                <\/div>\n            <\/div>\n        `;\n        \n        contenedor.append(tarjetaHTML);\n        \n        \/\/ Configurar eventos\n        $(`#${tarjetaId}`).on('click', function(e) {\n            e.preventDefault();\n            e.stopPropagation();\n            \n            if ($(e.target).closest('.tarjeta-web-link').length) {\n                return;\n            }\n            \n            if ($(e.target).closest('.conoce-mas-btn').length) {\n                return;\n            }\n            \n            mostrarPopup(tarjeta);\n        });\n        \n        $(`#${tarjetaId} .tarjeta-web-link`).on('click', function(e) {\n            e.preventDefault();\n            e.stopPropagation();\n            window.open($(this).attr('href'), '_blank');\n        });\n        \n        $(`#${tarjetaId} .conoce-mas-btn`).on('click', function(e) {\n            e.preventDefault();\n            e.stopPropagation();\n            mostrarPopup(tarjeta);\n        });\n    });\n    \n    $(\"#no-results-bilateral\").hide();\n    paginaActualBilateral = 1;\n    mostrarPaginaBilateral(1);\n}\n\n\/\/ Funci\u00f3n de paginaci\u00f3n para bilaterales\nfunction mostrarPaginaBilateral(pagina) {\n    let todasTarjetas = $(\"#tarjetas-bilaterales-container .tarjeta\");\n    const totalTarjetas = todasTarjetas.length;\n    const totalPaginas = Math.ceil(totalTarjetas \/ tarjetasPorPaginaBilateral);\n    \n    if (pagina < 1) pagina = 1;\n    if (pagina > totalPaginas && totalPaginas > 0) pagina = totalPaginas;\n    if (totalPaginas === 0) pagina = 0;\n    \n    paginaActualBilateral = pagina;\n    \n    const inicio = (pagina - 1) * tarjetasPorPaginaBilateral;\n    const fin = inicio + tarjetasPorPaginaBilateral;\n    \n    todasTarjetas.css('display', 'none');\n    todasTarjetas.slice(inicio, fin).css('display', 'flex');\n    \n    $(\"#info-pagina-bilateral\").text(`P\u00e1gina ${pagina} de ${totalPaginas}`);\n    \n    $(\"#btn-bilateral-anterior\").prop('disabled', pagina === 1 || totalPaginas === 0);\n    $(\"#btn-bilateral-siguiente\").prop('disabled', pagina === totalPaginas || totalPaginas === 0);\n    \n    if (totalPaginas > 1) {\n        $(\"#paginacion-bilaterales-container\").show();\n    } else {\n        $(\"#paginacion-bilaterales-container\").hide();\n    }\n}\n\n\/\/ Funci\u00f3n para mostrar el popup con detalles\nfunction mostrarPopup(tarjeta) {\n    $(\"#popup-title\").text(tarjeta.institucion);\n    \n    let conveniosHTML = '';\n    \n    if (tarjeta.enlaceInstitucion && tarjeta.enlaceInstitucion.trim() !== '') {\n        conveniosHTML += `\n            <div class=\"popup-website-button-container\">\n                <a href=\"${tarjeta.enlaceInstitucion}\" target=\"_blank\" class=\"popup-website-button\">\n                    <i class=\"fas fa-globe\"><\/i> Visitar sitio web\n                <\/a>\n            <\/div>\n        `;\n    }\n    \n    for (let claveConvenio in tarjeta.convenios) {\n        let convenio = tarjeta.convenios[claveConvenio];\n        \n        conveniosHTML += `\n            <div class=\"popup-section convenio-section\">\n                <h3 class=\"popup-section-title\">${convenio.tipoAcuerdo}<\/h3>\n                <div class=\"popup-info-item\">\n                    <div class=\"popup-info-label\">Grupo de Convenio:<\/div>\n                    <div class=\"popup-info-value\">${convenio.grupoConvenio}<\/div>\n                <\/div>\n                <div class=\"popup-info-item\">\n                    <div class=\"popup-info-label\">Objeto del Acuerdo:<\/div>\n                    <div class=\"popup-info-value\">${convenio.objeto}<\/div>\n                <\/div>\n        `;\n        \n        if (convenio.observacion && convenio.observacion.trim() !== '') {\n            conveniosHTML += `\n                <div class=\"popup-info-item\">\n                    <div class=\"popup-info-label\">Observaci\u00f3n:<\/div>\n                    <div class=\"popup-info-value\">${convenio.observacion}<\/div>\n                <\/div>\n            `;\n        }\n        \n        conveniosHTML += `<\/div>`;\n    }\n    \n    \/\/ Lista de programas UNINAVARRA\n    let programasHTML = '';\n    if (tarjeta.programasUninavarra && tarjeta.programasUninavarra.length > 0) {\n        programasHTML = `\n            <div class=\"popup-section\">\n                <h3 class=\"popup-section-title\">Programas Acad\u00e9micos UNINAVARRA<\/h3>\n                <ul class=\"programas-lista\">\n        `;\n        \n        tarjeta.programasUninavarra.forEach(programa => {\n            programasHTML += `<li>${programa}<\/li>`;\n        });\n        \n        programasHTML += `\n                <\/ul>\n            <\/div>\n        `;\n    }\n    \n    let popupBodyHTML = conveniosHTML + programasHTML;\n    $(\".popup-body\").html(popupBodyHTML);\n    $(\"#popup-overlay\").fadeIn(300);\n    $(\"body\").addClass(\"popup-open\");\n}\n<\/script>\n\t\t<\/div>\n\t<\/div>\n\n\t\t<\/div> \n\t<\/div><\/div><\/div><\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"Cargando convenios... Ciudad: Todas las ciudades Programa Acad\u00e9mico: Todos los programas \u2190 Anterior Siguiente \u2192 No hay convenios disponibles Intenta ajustar los filtros de b\u00fasqueda Ubicaci\u00f3n Geogr\u00e1fica de Instituciones 0 [...]","protected":false},"author":7,"featured_media":55458,"parent":20511,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-20516","page","type-page","status-publish","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Convenios de Pr\u00e1cticas Estudiantiles Nacionales - Uninavarra<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/uninavarra.edu.co\/en\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Convenios de Pr\u00e1cticas Estudiantiles Nacionales - Uninavarra\" \/>\n<meta property=\"og:url\" content=\"https:\/\/uninavarra.edu.co\/en\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/\" \/>\n<meta property=\"og:site_name\" content=\"Uninavarra\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/UninavarraEduca\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-11T19:20:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/uninavarra.edu.co\/wp-content\/uploads\/2022\/12\/sistema-de-gestio\u0301n-banner.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2480\" \/>\n\t<meta property=\"og:image:height\" content=\"276\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@uninavarraeduca\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/estudiantes\\\/conveniosdepracticas\\\/convenios-practicas-o-pasantias\\\/\",\"url\":\"https:\\\/\\\/uninavarra.edu.co\\\/estudiantes\\\/conveniosdepracticas\\\/convenios-practicas-o-pasantias\\\/\",\"name\":\"Convenios de Pr\u00e1cticas Estudiantiles Nacionales - Uninavarra\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/estudiantes\\\/conveniosdepracticas\\\/convenios-practicas-o-pasantias\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/estudiantes\\\/conveniosdepracticas\\\/convenios-practicas-o-pasantias\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/uninavarra.edu.co\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/sistema-de-gestio\u0301n-banner.jpg\",\"datePublished\":\"2019-11-01T15:56:42+00:00\",\"dateModified\":\"2026-02-11T19:20:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/estudiantes\\\/conveniosdepracticas\\\/convenios-practicas-o-pasantias\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/uninavarra.edu.co\\\/estudiantes\\\/conveniosdepracticas\\\/convenios-practicas-o-pasantias\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/estudiantes\\\/conveniosdepracticas\\\/convenios-practicas-o-pasantias\\\/#primaryimage\",\"url\":\"https:\\\/\\\/uninavarra.edu.co\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/sistema-de-gestio\u0301n-banner.jpg\",\"contentUrl\":\"https:\\\/\\\/uninavarra.edu.co\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/sistema-de-gestio\u0301n-banner.jpg\",\"width\":2480,\"height\":276,\"caption\":\"sistema-de-gestio\u0301n-banner\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/estudiantes\\\/conveniosdepracticas\\\/convenios-practicas-o-pasantias\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/uninavarra.edu.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Estudiantes\",\"item\":\"https:\\\/\\\/uninavarra.edu.co\\\/estudiantes\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Convenios de Pr\u00e1cticas\",\"item\":\"https:\\\/\\\/uninavarra.edu.co\\\/estudiantes\\\/conveniosdepracticas\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Convenios de Pr\u00e1cticas Estudiantiles Nacionales\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/#website\",\"url\":\"https:\\\/\\\/uninavarra.edu.co\\\/\",\"name\":\"UNINAVARRA\",\"description\":\"Haz realidad tu deseo de aprender\",\"publisher\":{\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/uninavarra.edu.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/#organization\",\"name\":\"Fundaci\u00f3n Universitaria Navarra - UNINAVARRA\",\"url\":\"https:\\\/\\\/uninavarra.edu.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/uninavarra.edu.co\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Escudo-uninavarra-Solo.png\",\"contentUrl\":\"https:\\\/\\\/uninavarra.edu.co\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Escudo-uninavarra-Solo.png\",\"width\":1500,\"height\":1401,\"caption\":\"Fundaci\u00f3n Universitaria Navarra - UNINAVARRA\"},\"image\":{\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/UninavarraEduca\",\"https:\\\/\\\/x.com\\\/uninavarraeduca\",\"https:\\\/\\\/www.instagram.com\\\/uninavarra\\\/?hl=es\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/fundacin-universitaria-navarra-uninavarra-b41225222\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Convenios de Pr\u00e1cticas Estudiantiles Nacionales - Uninavarra","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/uninavarra.edu.co\/en\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/","og_locale":"en_US","og_type":"article","og_title":"Convenios de Pr\u00e1cticas Estudiantiles Nacionales - Uninavarra","og_url":"https:\/\/uninavarra.edu.co\/en\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/","og_site_name":"Uninavarra","article_publisher":"https:\/\/www.facebook.com\/UninavarraEduca","article_modified_time":"2026-02-11T19:20:29+00:00","og_image":[{"width":2480,"height":276,"url":"https:\/\/uninavarra.edu.co\/wp-content\/uploads\/2022\/12\/sistema-de-gestio\u0301n-banner.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@uninavarraeduca","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/uninavarra.edu.co\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/","url":"https:\/\/uninavarra.edu.co\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/","name":"Convenios de Pr\u00e1cticas Estudiantiles Nacionales - Uninavarra","isPartOf":{"@id":"https:\/\/uninavarra.edu.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/uninavarra.edu.co\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/#primaryimage"},"image":{"@id":"https:\/\/uninavarra.edu.co\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/#primaryimage"},"thumbnailUrl":"https:\/\/uninavarra.edu.co\/wp-content\/uploads\/2022\/12\/sistema-de-gestio\u0301n-banner.jpg","datePublished":"2019-11-01T15:56:42+00:00","dateModified":"2026-02-11T19:20:29+00:00","breadcrumb":{"@id":"https:\/\/uninavarra.edu.co\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/uninavarra.edu.co\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uninavarra.edu.co\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/#primaryimage","url":"https:\/\/uninavarra.edu.co\/wp-content\/uploads\/2022\/12\/sistema-de-gestio\u0301n-banner.jpg","contentUrl":"https:\/\/uninavarra.edu.co\/wp-content\/uploads\/2022\/12\/sistema-de-gestio\u0301n-banner.jpg","width":2480,"height":276,"caption":"sistema-de-gestio\u0301n-banner"},{"@type":"BreadcrumbList","@id":"https:\/\/uninavarra.edu.co\/estudiantes\/conveniosdepracticas\/convenios-practicas-o-pasantias\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/uninavarra.edu.co\/"},{"@type":"ListItem","position":2,"name":"Estudiantes","item":"https:\/\/uninavarra.edu.co\/estudiantes\/"},{"@type":"ListItem","position":3,"name":"Convenios de Pr\u00e1cticas","item":"https:\/\/uninavarra.edu.co\/estudiantes\/conveniosdepracticas\/"},{"@type":"ListItem","position":4,"name":"Convenios de Pr\u00e1cticas Estudiantiles Nacionales"}]},{"@type":"WebSite","@id":"https:\/\/uninavarra.edu.co\/#website","url":"https:\/\/uninavarra.edu.co\/","name":"UNINAVARRA","description":"Make your desire to learn a reality","publisher":{"@id":"https:\/\/uninavarra.edu.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/uninavarra.edu.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/uninavarra.edu.co\/#organization","name":"Navarre University Foundation - UNINAVARRA","url":"https:\/\/uninavarra.edu.co\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uninavarra.edu.co\/#\/schema\/logo\/image\/","url":"https:\/\/uninavarra.edu.co\/wp-content\/uploads\/2024\/06\/Escudo-uninavarra-Solo.png","contentUrl":"https:\/\/uninavarra.edu.co\/wp-content\/uploads\/2024\/06\/Escudo-uninavarra-Solo.png","width":1500,"height":1401,"caption":"Fundaci\u00f3n Universitaria Navarra - UNINAVARRA"},"image":{"@id":"https:\/\/uninavarra.edu.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/UninavarraEduca","https:\/\/x.com\/uninavarraeduca","https:\/\/www.instagram.com\/uninavarra\/?hl=es","https:\/\/www.linkedin.com\/in\/fundacin-universitaria-navarra-uninavarra-b41225222\/"]}]}},"_links":{"self":[{"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/pages\/20516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/comments?post=20516"}],"version-history":[{"count":0,"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/pages\/20516\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/pages\/20511"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/media\/55458"}],"wp:attachment":[{"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/media?parent=20516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/categories?post=20516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/tags?post=20516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}