Evolutivos sobre Agile Mailer
Evolutivos sobre Agile Mailer para orientarlo a un sistema aún más desasistido y robusto.
II Renovación del mantenimiento del portal web del Laboratorio Ocupacional
Renovación del mantenimiento del portal web del Laboratorio Ocupacional. Evolutivos y adaptaciones a medida que no entran en el alcance del proyecto inicial.
I Renovación del mantenimiento del portal web del Laboratorio Ocupacional
Renovación del mantenimiento del portal web del Laboratorio Ocupacional (sin perjuicio de la garantía del producto). Evolutivos y adaptaciones a medida que no entran en el alcance del proyecto inicial.
Medidas contra el spam
Publicado: Sáb, 22/05/2010 - 02:21
Cuando estaba realizando el diseño técnico del portal, pasé bastante tiempo analizando el problema del spam. Por una parte, podía optar por usar CAPTCHA en todos los formularios, pero esta medida es un obstáculo para los usuarios y trato de evitarla siempre que puedo. Por otra parte, podía utilizar algún módulo anti-spam de Drupal, pero consideré que cargaría el sistema innecesariamente, ya que mi parroquia suele ser escasa (eso sí, muy selecta).
Hoy me he topado con mi equivocación materializada en cientos de comentarios anunciando medicamentos de venta online. La situación se ha visto agravada debido a que la notificación de nuevos comentarios no estaba funcionando. Si hubiera pasado una semana sin revisar el portal a fondo, la tarea de eliminar todos los comentarios me hubiera supuesto horas de trabajo inútil. Para colmo, mi amigo Samuel había inaugurado los comentarios hace varios días y no me había enterado hasta ahora.
Para evitar la terrible lacra del correo basura, he instalado el módulo AntiSpam, un cómodo wrapper de servicios tan conocidos como Akismet, TypePad AntiSpam y Defensio. Gracias a una interfaz simplificada, la configuración se convierte en una tarea sumamente sencilla, y la mayor ventaja es que no molesto a mis lectores con pruebas de humanidad innecesarias.
Actualización 22/05/2010, 3:25. Constato que el módulo está funcionando. En el tiempo de escribir esta nota, ya hay trece comentarios basura.
Actualización 22/05/2010, 13:30. En LevelTen hacen una excelente recopilación de módulos anti-spam para Drupal. Sopesando diversos criterios, como no incordiar al usuario y evitar dependencias de terceros, entre otros, he decidido probar Spamicide, un ingenioso método que impide a los spammers llegar siquiera al estado de comentario no aprobado: directamente los detiene antes de entrar. Llevaba desde anoche recibiendo ofertas de Cephalexin (no sé si complex o simplex), y tras la instalación del módulo, la avalancha parece haberse detenido.
Actualización 23/05/2010. El módulo parecía funcionar al principio, pero horas después volví a recibir spam. El problema se resume en dos errores de programación que, por suerte, están documentados y resueltos aquí y aquí. Para la gestión de los comentarios, recomiendo activar las notificaciones del módulo AntiSpam en el perfil de usuario (epígrafe AntiSpam moderator settings), pero activando la opción Only content needing approval. De esta manera, Drupal envía notificaciones por correo para aquellos comentarios que requieren aprobación.
Tweetmeme en Drupal
Publicado: Jue, 22/04/2010 - 03:13Seguro que se han fijado en el botón que aparece a la derecha de los títulos de los posts. Es el contador de retweets de Tweetmeme, que permite, de un vistazo, comprobar el impacto social de un blog.
Drupal cuenta con un módulo que incrusta este contador de manera automática, pero parece que no funciona demasiado bien porque siempre muestra un mensaje de error provocado por timeout. Mientras averiguo si la causa del problema es un error de configuración por mi parte o se trata de un bug en el módulo, recomiendo usar el siguiente workaround para disponer del botón (recomendado por los chicos de Tweetmeme):
En la plantilla donde se desea tener el botón (node.tpl.php, node-blog.tpl.php, etc.), hay que incluir el siguiente fragmento de código:
<?php global $base_url; ?><br /> <script type="text/javascript"><br /> tweetmeme_url = '<?php print $base_url; ?>/<?php print $node_url ?>';<br /> </script><br /> <div class="tweetmeme tweetmeme-button"><br /> <script type="text/javascript" src="http://m.emartos.es/%2526lt%3B?php_print_%24base_url%3B_%3F=>%3B%2Fmisc%2Fbutton_js="></script><br /> </div>
Técnicas de accesibilidad
Publicado: Lun, 19/04/2010 - 20:22
Hoy, en la recta final de los desarrollos evolutivos de la web de las Jornadas Salud Investiga desde Fundación Progreso y Salud, he intentado aproximar las necesidades del cliente al problema de la accesibilidad. Se trata de un proyecto de carácter interno y tenemos un mayor control sobre las decisiones técnicas, o dicho de otro modo, tenemos un control más granular.
La web parte de un antiguo desarrollo manual en PHP, que se ha ido actualizando, año tras año, a nivel de contenidos y estructura. A causa de la escasez de tiempo y de la pobre difusión de los beneficios de usar frameworks de desarrollo, o mejor aún, de los gestores de contenido, el proceso de modificación es todavía manual. Pero dentro de los recursos que se disponen, siempre se puede hacer algo más por los usuarios sin un coste adicional en tiempo ni en esfuerzo.
Pasando a lo concreto, los menús de la aplicación cargaban el contenido en un iframe central que, para colmo, ni siquiera tenía dimensionada la altura, por lo que la página mostraba dos barras de desplazamiento: la del navegador y la del iframe. Este aspecto no era del agrado de los responsables de la web, y por supuesto, tampoco cumplía con unos mínimos criterios de accesibilidad, seguridad y estética. Además, un JavaScript intrusivo se dedicaba a desplegar los submenús en función de la opción seleccionada.
En vista de la situación, he propuesto los siguientes cambios de estructura:
- El iframe desaparece, salvo en tres casos especiales en los que se incrustan formularios alojados en otro servidor.
- En lugar del iframe, un dispatcher implementado en PHP decide, en función de un parámetro HTTP GET, qué contenido debe cargar con un require().
- El JavaScript desaparece en favor de una comprobación, en cada elemento principal de menú, para determinar si dicho elemento o alguno de sus hijos coincide con la opción seleccionada, en cuyo caso se despliega el submenú. No es la mejor opción porque la verificación es redundante, pero no existe otra alternativa dado que la generación del menú no es dinámica, sino totalmente estática.
Sinceramente, hay otros aspectos mejorables en cuanto a accesibilidad, pero con estos cambios mínimos, que de paso mejora usabilidad, seguridad y estética del sitio, la navegación no se ve obstaculizada por un método de programación incorrecto.
Todavía nos queda mucho por avanzar hacia una web totalmente accesible y bien construida, pero cada pequeño paso que se da es importante para alcanzar esa meta.
Desarrollo de Agile Mailer
Análisis y desarrollo de Agile Mailer, un sistema de envío de correo para difusiones y mailing. Implementado en PHP y JQuery, con una arquitectura basada en MVC y apoyándose en SwiftMailer, el sistema permite programar paquetes de envío con tiempos de espera definidos; con ello se reduce la probabilidad de que los envíos sean catalogados como spam. La carga de usuarios se puede realizar manualmente o mediante un fichero CSV, y la redacción del mensaje se facilita gracias a un editor WYSIWYG.
Acción formativa: Drupal de 0 a 100
Acción formativa en Drupal diseñada especialmente para el Laboratorio Ocupacional, que abarca desde los conceptos fundamentales de un gestor de contenidos hasta las técnicas más complejas de esta poderosa plataforma. En total, 35 horas de interacción con Drupal desde una perspectiva didáctica y amena.
Uso de las herramientas más avanzadas para la gestión del conocimiento y la transferencia de contenidos (Moodle, WordPress, VNC, etc.).
Mantenimiento del portal web del Laboratorio Ocupacional
Mantenimiento del portal web del Laboratorio Ocupacional (sin perjuicio de la garantía del producto). Evolutivos y adaptaciones a medida que no entran en el alcance del proyecto inicial.
Desarrollo del portal web del Laboratorio Ocupacional
Desarrollo del portal web del Laboratorio Ocupacional (Universidad de Sevilla):
- Estudio de viabilidad.
- Análisis del sistema.
- Diseño técnico de la solución.
- Implementación de la funcionalidad del portal en Drupal.
- Integración y optimización del diseño gráfico en la plataforma.
