12 de febrero de 2011

Nuevo conocimiento: túneles de Ajax

En la oficina me encargaron un módulo para una promoción de la página web de música grupera de la compañía a nivel nacional. Estos son los requisitos: 1. En el lateral derecho debe haber un recuadro con la promoción. 2. Ese recuadro debe mostrar una foto, e invitar a: a) meter a concursar la propia foto, b) votar a favor de la foto desplegada, c) votar en contra de la foto desplegada, d) ver otra foto. Muy bien, pero hay algunas restricciones:

En el punto (a), al darle clic en meter la propia foto a concursar, debe salir en un lightbox (los lightboxes son lo de hoy) el formulario para dar de alta la foto, una vez que se llenen los campos, el formulario debe validar que se hayan aceptado los términos y condiciones, que todos los campos estén completos, y que no exista ya una foto registrada en la base de datos con el mismo mail que está escrito en el formulario.

Si se cumplen las condiciones anteriores, guarda la foto y los datos del formulario en la base de datos, a continuación manda un correo al mail registrado para que el usuario confirme desde ahí su deseo de participar en el concurso. Una vez confirmado, se añade a un listado que alguien interno revisará y autorizará (porque no vayan a poner una foto porno o un desnudo, ergo debemos censurar). Ya que la foto fue registrada-confirmada-autorizada, entra al concurso y empieza a salir en el lateral derecho del front-end.

Para los puntos (b) y (c), es indispensable que el que va a votar esté firmado con su cuenta de facebook. Entonces registramos los votos relacionados a ese usuario facebookero, de modo que nadie pueda votar dos veces por la misma foto (a menos que tenga varias cuentas de caralibro). Los votos se suman y se hace un ranking, de modo que uno puede saber en qué lugar está cada foto. Por su parte, el botón para ver otra foto (punto (d)) se activa una vez que el usuario opinó respecto de una imagen y ya se actualizaron los campos de número de votos y el lugar en el ranking.

Todo lo anterior debe hacerse sin salir de la página en la que se vota y sin recargar nada, por lo que me vi obligado a usar túneles de ajax. Los cuales ahora forman parte de mi conocimiento, y me gustaron mucho, porque, por un lado mando una petición a un script de php que está corriendo en el fondo, subrepticiamente, y la respuesta la regreso codificada en json, luego manipulo esa respuesta y relleno el html, y hasta ahora todo a funcionado de maravilla y me resultó super fácil.

No hay comentarios.: