Hace unos meses, Felipe Calvo desarrolló un sistema de comentarios anidados personalizados para blogger. Es genial, porque en vez de obtenerlos vía javascript, los genera el servidor, permitiendo que sean indexados, etc. Ayer me llegó una petición via email por si podía implementar la posibilidad de cancelar la respuesta (yo lo tenía en mi blog, pero de una manera un poco truculenta). Así que me puse a escribir javascript, y aquí está. Considero que tiene algunas ventajas respecto al anterior, y son las siguientes:
  • No generamos funciones ni variables globales.
  • No usamos el DOM más de lo necesario
  • Fomentamos buenas prácticas a la hora de escribir javascript (no añadir eventos via atributos, etc)
  • Añade la posibilidad de cancelar

Cómo implementarlo:

Eliminar algo de código

Tenemos que eliminar el código cuya funcionalidad vamos a reemplazar. Entrar en edición de HTML, expandir plantillas de artilugios, buscar el código JS de Felipe, y eliminarlo. Deberíais de haberlo puesto justo debajo de <b:includable id='comments' var='post'>.
<b:if cond='data:blog.pageType == &quot;item&quot;'>
 ......................
</b:if>
<b:if cond='data:blog.pageType == &quot;static_page&quot;'>
 ...................
</b:if>
<script type='text/javascript'>
 /* Código bajo Licencia Creative Commons 3.0 (Atribución-No Comercial)
 Felipe @ http://gplus.to/iFelipeCalvo */
...........................
//]]>
</script>

Pequeño cambio en el HTML

Después de esto tenéis que hacer un pequeño cambio en el HTML (agregar un atributo data y eliminar el atributo onclick). Debería ser algo parecido a cambiar:
<a class='reply-action' expr:onclick='&quot;reply(&apos;&quot; + data:comment.id + &quot;&apos;);return false;&quot;' href='#'>Responder</a>
por
<a class='reply-link' expr:data-comment-id='data:comment.id' href='#'>Responder</a>

El Javascript

Ahora sólo hace falta agregarle la funcionalidad con Javascript. Tendremos que buscar el </b:includable> que cierra a <b:includable id='comments' var='post'>, y justo encima insertar el código de este archivo entre etiquetas <script>. Tal que así:
<script type='text/javascript'>
 // ... Contenido del archivo ...
</script>
Sólo deberíais cambiar dos cosas del script, el valor de la variable REPLY_TEXT y el de CANCEL_TEXT, que son los textos que se pondrán cuando se cancela y responde (Responder y Cancelar por defecto). El script está lleno de comentarios, en español y en inglés (el que me lo pidió lo hizo en inglés), para que se vea cómo funciona. Son prescindibles, así que si queréis una versión minificada sin comentarios (ocupa menos espacio), podéis usar este archivo.

Verlo en funcionamiento

En este post podéis verlo funcionando ahora mismo. Y en el resto también .