Contenido
Proyecto Chapultepec: incapacidad profesional
// ------------------------------------------------------------------------------------------------------------------------------- // 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 // ======================================
Realizado el pasado domingo 9 de agosto en el Complejo Cultural Los Pinos, con la participación también de la jefa de Gobierno de la Ciudad de México, Claudia Sheinbaum, el evento comprobó, una vez más, la errática situación en la que se encuentra esta administración cultural.
Para empezar, el documento que firma el artista conceptual Gabriel Orozco, como coordinador del proyecto, no puede aceptarse como “un resumen ejecutivo del Plan Maestro para el Bosque Cultural Chapultepec”, porque carece de información esencial en un plan maestro: diagnóstico –una síntesis– del estado y potencial de la oferta cultural del bosque; datos sobre los requerimientos de la comunidad que habita su entorno urbano; prioridades, tiempos y costos aproximados de cada subproyecto; nombres de los responsables de las distintas acciones.
En lo que respecta a las artes visuales, si hubiera un diagnóstico se podría evaluar la pertinencia –o impertinencia– de gastar recursos públicos para construir y operar dos recintos dedicados a prácticas que ya tienen una presencia no sólo en el bosque, sino en la misma sección: el Pabellón Contemporáneo Mexicano y el Cubo Acústico.
Definido como un espacio “libre y democrático” para exhibir diversas expresiones contemporáneas, el Pabellón se sumará al Museo Tamayo Arte Contemporáneo y a la Casa del Lago de la Universidad Nacional Autónoma de México, un espacio que también es libre, democrático y, al igual que el Pabellón, sin colección propia.
En lo que respecta al Cubo, es conveniente recordar que el Centro de Cultura Digital ubicado en la Estela de Luz está dedicado, al igual que lo estará el Cubo, a nuevas tecnologías.
Un aspecto que resalta en el resumen del plan maestro es el silencio en referencia al Museo de Arte Moderno (MAM). Inaugurado en 1964 sin el auditorio y el volumen arquitectónico que debía unir a ambos edificios, el MAM –único museo de la Ciudad de México que cuenta con un jardín de esculturas modernas y contemporáneas nacionales– merecería que se completara antes de iniciar nuevas construcciones.
Y por último, la Bodega Nacional de Arte. Una propuesta que comprueba la urgencia de ordenar las obligaciones que debe tener la Secretaría de Cultura en la administración de colecciones gubernamentales.
Además del riesgo que conlleva centralizar acervos artísticos e históricos de todo el país en un solo recinto –ante cualquier siniestro los daños y pérdidas serían muy grandes–, es indispensable definir las responsabilidades institucionales de su conservación y gestión.
Si ya existe una Secretaría de Cultura, ¿es adecuado que otras secretarías, como la de Relaciones Exteriores y la de Hacienda y Crédito Público, operen museos y gestionen colecciones?
Si el desempeño de Alejandra Frausto tuviera calidad profesional, antes de apoyar la creación de nuevos espacios mejoraría el estado e impacto de los que ya existen. A pesar de la importancia que han tenido el grabado y la fotografía en el arte mexicano, el Museo Nacional de la Estampa carece de instalaciones dignas, y no contamos con un Museo Nacional de la Fotografía.
Si Chapultepec debía ser el espacio artístico cultural más grande e importante del mundo –como señaló el presidente Andrés Manuel López Obrador el 2 de abril de 2019–, el proyecto debió haber sido asignado por concurso. ¿Será que la gestión de la SC se basa en el amiguismo?
Este texto forma parte del número 2285 de la edición impresa de Proceso, publicado el 16 de agosto de 2020 y cuya versión digitalizada puedes adquirir aquí
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: