Contenido
Comunicación y movilidad, temas de ‘Estación verano”
// ------------------------------------------------------------------------------------------------------------------------------- // PHOTOSWIPE
var initPhotoSwipeFromDOM = function(gallerySelector) {
// parse slide data (url, title, size ...) from DOM elements // (children of gallerySelector) var parseThumbnailElements = function(el) { var thumbElements = el.childNodes, numNodes = thumbElements.length, items = [], figureEl, linkEl, size, item;
for(var i = 0; i < numNodes; i++) {
figureEl = thumbElements[i]; //
// include only element nodes if(figureEl.nodeType !== 1) { continue; }
linkEl = figureEl.children[0]; // element
size = linkEl.getAttribute('data-size').split('x');
// create slide object item = { src: linkEl.getAttribute('href'), w: parseInt(size[0], 10), h: parseInt(size[1], 10) };
if(figureEl.children.length > 1) {
//
if(linkEl.children.length > 0) {
// thumbnail element, retrieving thumbnail url
item.msrc = linkEl.children[0].getAttribute('src');
}
item.el = figureEl; // save link to element for getThumbBoundsFn items.push(item); }
return items; };
// find nearest parent element var closest = function closest(el, fn) { return el && ( fn(el) ? el : closest(el.parentNode, fn) ); };
// triggers when user clicks on thumbnail var onThumbnailsClick = function(e) { e = e || window.event; e.preventDefault ? e.preventDefault() : e.returnValue = false;
var eTarget = e.target || e.srcElement;
// find root element of slide var clickedListItem = closest(eTarget, function(el) { return (el.tagName && el.tagName.toUpperCase() === 'FIGURE'); });
if(!clickedListItem) { return; }
// find index of clicked item by looping through all child nodes // alternatively, you may define index via data- attribute var clickedGallery = clickedListItem.parentNode, childNodes = clickedListItem.parentNode.childNodes, numChildNodes = childNodes.length, nodeIndex = 0, index;
for (var i = 0; i < numChildNodes; i++) { if(childNodes[i].nodeType !== 1) { continue; } if(childNodes[i] === clickedListItem) { index = nodeIndex; break; } nodeIndex++; } if(index >= 0) { // open PhotoSwipe if valid index found openPhotoSwipe( index, clickedGallery ); } return false; };
// parse picture index and gallery index from URL (#&pid=1&gid=2) var photoswipeParseHash = function() { var hash = window.location.hash.substring(1), params = {};
if(hash.length < 5) { return params; } var vars = hash.split('&'); for (var i = 0; i < vars.length; i++) { if(!vars[i]) { continue; } var pair = vars[i].split('='); if(pair.length < 2) { continue; } params[pair[0]] = pair[1]; } if(params.gid) { params.gid = parseInt(params.gid, 10); } return params; }; var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) { var pswpElement = document.querySelectorAll('.pswp')[0], gallery, options, items; items = parseThumbnailElements(galleryElement); // define options (if needed) options = { // define gallery index (for URL) galleryUID: galleryElement.getAttribute('data-pswp-uid'), getThumbBoundsFn: function(index) { // See Options -> getThumbBoundsFn section of documentation for more info var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail pageYScroll = window.pageYOffset || document.documentElement.scrollTop, rect = thumbnail.getBoundingClientRect();
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width}; }
};
// PhotoSwipe opened from URL if(fromURL) { if(options.galleryPIDs) { // parse real index when custom PIDs are used // http://photoswipe.com/documentation/faq.html#custom-pid-in-url for(var j = 0; j < items.length; j++) { if(items[j].pid == index) { options.index = j; break; } } } else { // in URL indexes start from 1 options.index = parseInt(index, 10) - 1; } } else { options.index = parseInt(index, 10); } // exit if index not found if( isNaN(options.index) ) { return; } if(disableAnimation) { options.showAnimationDuration = 0; } // Pass data to PhotoSwipe and initialize it gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options); gallery.init(); }; // loop through all gallery elements and bind events var galleryElements = document.querySelectorAll( gallerySelector ); for(var i = 0, l = galleryElements.length; i < l; i++) { galleryElements[i].setAttribute('data-pswp-uid', i+1); galleryElements[i].onclick = onThumbnailsClick; } // Parse URL and open gallery if it contains #&pid=3&gid=1 var hashData = photoswipeParseHash(); if(hashData.pid && hashData.gid) { openPhotoSwipe( hashData.pid , galleryElements[ hashData.gid - 1 ], true, true ); } }; // execute above function initPhotoSwipeFromDOM('.my-gallery'); // ====================================== // FIN SCRIPTS PHOTOSWIPE // ======================================
“Comunicación y movilidad” son los temas de la XII edición de Estación verano. Tren de inventores –que inicia el 14 de julio–, un programa de verano que se imparte en el Centro Nacional para la Preservación Cultural Ferrocarrilero, ubicado en Puebla, como base central, y de ahí a 24 sedes amigas en cinco estados del país.
El programa de este año tendrá talleres con experimentos y actividades lúdico-didácticos para niños, jóvenes y adultos, quienes podrán tener mayor conocimiento sobre la “tecnología del vapor” y su contribución al desarrollo de los medios de transporte a través de trenes, barcos, dirigibles, aerostáticos, e incluso los cohetes espaciales.
Además, también habrá talleres sobre las innovaciones en la comunicación personal, desde la carta y el telégrafo, el teléfono y la radio, hasta la televisión, el cine y, por supuesto, el internet.
“Estación de verano. Tren de inventores” llegará a las siguientes sedes:
El Museo Nacional de Ferrocarriles Mexicano (MNFM), la Casa de Cultura Pedro Ángel Palou, la Hemeroteca Juan N. Troncoso, la Cineteca Luis Buñuel, el Museo Regional de Cholula, el Instituto Municipal de Arte y Cultura, el Tren Turístico Puebla-Cholula, los Centros de Desarrollo Comunitario de la Sedesol, el Mercado de Sabores Poblanos, los municipios de Nealtican, Tianguismanalco y San Nicolás de los Ranchos; los museos ferrocarrileros de Aguascalientes, Cuautla (Morelos), Otumba (Estado de México), Querétaro, Torreón (Coahuila) y Tulancingo (Estado de México), así como el Complejo Cultural Los Pinos, en la Ciudad de México.
Entre las charlas que se tienen programadas destaca Tren: comunicación y movilidad en el estado de Puebla, misma que abordará varios temas: La historia sobre rieles de San Marcos; Oriental, pueblo ferrocarrilero, y Libres, un ramal de vía angosta. Esta actividad se llevará a cabo los días 24 y 26 de julio, y en ella participarán algunos cronistas de Puebla.
En las presentaciones artísticas se programaron El Guardagujas, obra de teatro para títeres y actores, basada en el cuento del mismo nombre del escritor jalisciense Juan José Arreola. Esta obra fue producida por Flor Cecilia Reyes y la dirige Adriana Romero. También se contará con la participación de la compañía Idiotas Teatro, quien presentará Pájaro, una obra premiada por HOLA: Hispanic Organization of Latin Actors (Nueva York, 2012) y ACE: The Association of Latin Entertainmnet Critics (Nueva York, 2013); la compañía Merequentegue y su teatro de títeres, con la puesta en escena Colón agarra viaje a toda costa. La sección musical estará a cargo de Triciclo Circus Band, DJ Pata, la Trova Universitaria, Alambre Dulce y la Orquesta Típica del Estado de Puebla.
En la actual edición Estación verano, el cine tendrá un espacio fundamental con los largometrajes El jardín olvidado: vida y obra de Alice Guy Blaché (Marquise Lepage, Canadá, 1995), Raymundo (Ernesto Ardito y Virna Molina, Argentina, 2003), Miradas múltiples (Emilio Maillé, México, 2013), así como el ciclo de cortometrajes Inventores de los fantástico. Se trata de una selección de la Muestra del Festival Internacional de Cine Silente México.
Otra actividad a destacar es la exposición Los inventos que mueven al tren, que se abrirá al público en el MNFM el 21 de julio.
La programación completa se puede consultar en la página: http://estacionverano2019.blogspot.com/
Comentarios
// Obtener todos los elementos con clase .col-md-12 var colElements = document.querySelectorAll('.col-md-12');
// Iterar sobre cada elemento colElements.forEach(function(element) { // Verificar si tiene un hijo inmediato con clase .titulo-region var tituloRegion = element.querySelector('.titulo-region');
if (tituloRegion) { // Agregar la clase .is-sticky al elemento padre element.classList.add('is-sticky'); } });
// Obtener el elemento article dentro de .fila-especial-v2 .p50 var articleElement = document.querySelector('.home .fila-especial-v2 .p50 article');
// Obtener el texto del elemento .z-foto .bajada p var bajadaText = articleElement.querySelector('.z-foto .bajada p').textContent;
// Crear un nuevo elemento para mostrar el texto obtenido var textoElement = document.createElement('p'); textoElement.textContent = bajadaText;
// Obtener el elemento .z-txt .titulo dentro del article var tituloElement = articleElement.querySelector('.z-txt .titulo');
// Insertar el nuevo elemento al final del article articleElement.appendChild(textoElement);
Cortesía de Proceso.
Dejanos un comentario: