Tinder: del amor al botón de pánico
// ------------------------------------------------------------------------------------------------------------------------------- // 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 // ======================================
El conocido refrán podría aplicarse a la unión de fuerzas que recientemente anunció la empresa Match Group para que su aplicación estrella, Tinder, cuente próximamente con un botón de pánico.
Antes de ser detallada en el blog de la compañía, la noticia fue dada a conocer el pasado miércoles por el diario financiero The Wall Street Journal. Lo que no es casual porque implica, de entrada una inversión económica.
Y es que Match Group anunció su alianza con Noonlight, una plataforma que ofrece a sus usuarios la posibilidad de notificar a las autoridades en caso de advertir algún problema de seguridad o peligro.
Lo que Noonlight ofrece cotidianamente como seguridad hogareña, sería trasladado al ámbito de las relaciones románticas. O, como diría la propia nota del WSJ, cuando una mala cita se convierte en una horrible de verdad.
Adiós a las reticencias
En nuestros días, son cotidianas las aplicaciones para buscar pareja, ya sea casual –la propia Tinder– o de más largo plazo –como la antigua Match.com. Pero, cuando surgieron hace ya casi cuarto de siglo, no eran pocos los que desconfiaban.
Siempre había motivo para pensar que del otro lado de la pantalla, detrás de una encantadora personalidad de prosa seductora, se ocultaba algún tipo de sicópata.
Y tal vez porque la vida moderna dejó cada vez menos espacios para conocer personas a la antigüita, la gente dejó a un lado las reticencias y comenzó a confiar en este nuevo tipo de Cupido digital.
Ahora, Tinder cuenta con más de 50 millones de usuarios globales y más de 5 millones de suscriptores de pago, de acuerdo con la nota del WSJ. Tan sólo desde el punto de vista estadístico es imposible una seguridad al 100 por ciento. Y dadas las terribles experiencias de usuarios de otras aplicaciones que al principio parecían infalibles –léase Uber y Airbnb–, la búsqueda de una mayor seguridad es ineludible.
Según la información referida, Tinder planea lanzar la función de forma gratuita para los usuarios de Estados Unidos a fines de enero.
Método discreto
La idea es sencilla y consiste en ofrecer a los usuarios la opción de presionar un botón de pánico que estará dentro de la aplicación Noonlight, en la que habría personal en tiempo real (no robots) responsable de contactar a las autoridades en caso que el usuario reporte alguna amenaza o incomodidad.
"Deberías dirigir un negocio de citas como si fueras una madre", declaró la directora ejecutiva de Match Group, Mandy Ginsberg, quien según el WSJ tiene una hija de 21 años.
“Pienso mucho en la seguridad, especialmente en nuestras plataformas, y en lo que podemos hacer para reducir el mal comportamiento. Hay muchas cosas que les decimos a los usuarios que hagan. Pero si podemos proporcionar herramientas además de eso, también deberíamos hacerlo”, explicó.
Una vez que Tinder se enlace con Noonlight, los usuarios podrán dar cuenta de que la están usando, para ser además un elemento disuasorio para probables atacantes. Aunque el hecho de que funcionen como aplicaciones separadas tiene como finalidad que el posible agresor no se dé cuenta de que está a punto de pedir ayuda para impedirlo.
Asimismo, Noonlight asegura tener un mecanismo para casos de que se oprima el botón por error o de que la presunta amenaza sea una falsa alarma.
Palomita azul
Tinder planea lanzar un sistema de verificación –actualmente en fase de pruebas-- que requeriría que los usuarios demuestren que realmente se parecen a las fotos que envían.
La herramienta pediría a los usuarios que tomen fotos en ciertas poses, como con el pulgar hacia arriba, para luego comparar las fotos con las imágenes de sus perfiles. Tinder les daría a los usuarios insignias de verificación azules, si es que las fotos coinciden.
"Odio responder la pregunta sobre si es suficiente (la seguridad, porque nunca lo será", dijo Ginsberg al WSJ. "Siempre debemos esforzarnos por hacer más".
No exageró. Apenas unos días antes el portal Gizmodo había revelado un supuesto robo de miles de imágenes de usuarios de Tinder, con posibilidad de ser usadas para crear perfiles falsos en otras redes sociales, con fines no del todo nobles, por supuesto.
Se vale hacer todo con tal de un feliz (y seguro) día de San Valentín.
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: