martes, 4 de octubre de 2011

Alinear el texto y el avatar en los comentarios

El avatar de los comentarios es algo sobre lo que siempre hay preguntas ¿cómo moverrlo? ¿cómo separarlo del nombre del autor? ¿cómo alinear ese nombre verticalmente?

El problema básico es que para mostrar los comentarios, Blogger utiliza etiquetas que usualmente no usamos (DL DT DD) y además, establece una serie de propiedades por defecto para cada una de ellas y sus contenidos. Ese codigo, lo podemos ver si expandimos la plantilla y buscamos el includable llamado comments; allí dentro, nos encontraremos con muchas cosas pero, si vamos hacia abajo, veremos los tres sectores en que están divididos; esto, es similar en cualquier plantilla, sea normal o de nuevo estilo:
<dl expr:class='data:post.avatarIndentClass' id='comments-block'>
  .......
  <dt expr:class='&quot;comment-author &quot; + data:comment.authorClass' expr:id='data:comment.anchorName'>
    ....... el avatar y el nombre del autor .......
  </dt>
  <dd class='comment-body' expr:id='data:widget.instanceId + data:comment.cmtBodyIdPostfix'>
    ....... el texto del comentario .......
    
  <dd class='comment-footer'>
    ....... la fecha del comentario y los íconos de edición .......
  </dd>
  .......
</dl>
Y estas son las propiedades por defecto que añade Blogger:
#comments-block .avatar-image-container img {border: 1px solid #CCC;float: right;}
#comments-block .avatar-image-container.avatar-stock img {border-width: 0;padding: 1px;}
#comments-block .avatar-image-container {height: 37px;left: -45px;position: absolute;width: 37px;}
#comments-block.avatar-comment-indent {margin-left: 45px;position: relative;}
#comments-block.avatar-comment-indent dd {margin-left: 0;}
Esto genera que los comentarios se vean parecidos a esto:
JMiur dijo...
Nullam sed vulputate diam. Suspendisse cursus ligula non ligula euismod adipiscing. In id erat nec elit bibendum adipiscing? Nullam vel mi quis est hendrerit convallis? Etiam feugiat sodales malesuada. Aenean non ipsum leo.
Para poder personalizarlo, una alternativa simple es sobrescribir algunas de esas reglas de estilo por defecto que son las que hacen que se vea como si tuviera dos columnas, una a la izquierda con el avatar y otra a la derecha con el resto. Por ejemplo, podemos agregar esto:
<style>
  #comments-block {margin-left: 0;}
  #comments-block .avatar-image-container {position: static;}
  #comments-block .avatar-image-container img {float: left;}
  #comments-block .comment-body {clear: both; padding-top: 5px;}
</style>
Y el resultado será algo así:
 
Ahora, debemos entender qué dice el código y porqué debemos seguir agregando cosas para posicionar el texto del autor. Esa parte es la que está en la etiqueta DT:
<dt expr:class='&quot;comment-author &quot; + data:comment.authorClass' expr:id='data:comment.anchorName'>
  <!-- por defecto, la imagen será un icóno que dependerá de la forma del ingreso (Blogger, OpenId, Anónimo) -->
  <b:if cond='data:comment.favicon'>
    <img expr:src='data:comment.favicon' height='16px' style='margin-bottom:-2px;' width='16px'/>
  </b:if>
  <a expr:name='data:comment.anchorName'/>
  <!-- sólo se muestra el avatares si están habilitados -->
  <b:if cond='data:blog.enabledCommentProfileImages'>
    <!-- esta es la imagen del avatar -->
    <!-- Blogger agregará un DIV con la clase avatar-image-container -->
    <data:comment.authorAvatarImage/>
  </b:if>
  <!-- dependiendo del acceso, el nombre es un enlace o no -->
  <b:if cond='data:comment.authorUrl'>
    <!-- el nombre es un enlace -->
    <a expr:href='data:comment.authorUrl' rel='nofollow'><data:comment.author/></a>
  <b:else/>
    <!-- el nombre no es un enlace -->
    <data:comment.author/>
  </b:if>
  <!-- el texto que sigue al nombre (dijo ...) -->
  <data:commentPostedByMsg/>
</dt>
Para centrar el texto verticalmente, podemos establecer las propiedades de DT, dándole a height y a line-height, la misma altura que la imagen (en este caso 35 pixeles más dos porque tiene un borde):
 

miércoles, 21 de septiembre de 2011

Eliminar el nuevo LightBox de Blogger

Desde ayer, Blogger ha estado insertando nuevo código a la fuerza en todos los blogs. Como siempre, lo hace sin informar nada, sin explicaciones y de prepo, olvidándose que del otro lado hay usuarios a los que les gustaría poder decidir qué quieren hacer con su sitio.

Obviamente, cualquier servicio, pago o gratuito, tiene derecho a modificar su sistema o incluso cerrarlo. Lo que no tiene derecho es a hacer las cosas a escondidas, provocando problemas en sus clientes que son quienes le dan de comer todos los días.

Es un problema de sentido común comercial y de respeto humano.

Ahora, se les ha ocurrido que seria maravilloso que todos los blogs dispusieran de una forma de mostrar las imágenes con una especie de LightBox pero claro, eso no lo hacen permitiendo que cada uno decida si lo necesita o si le interesa y encima lo hacen mal, insertando un script de terror que, aún minimizado, tiene unos 400KB y que incluye decenas de funciones que no sé si alguna vez estarán implementadas o son cosas que les han sobrado. Funciones para etiquetar, comentar y enviar (probablemente a Google+)

El código resultante es uno de esos engendros que suele hacer Google en sus sitios donde se ven DIVs por todos lados y lo que hace este regalito es abrir ese coso cada vez que uno hace click en una imagen, mostrando abajo, la miniaturas de todas la imágenes de la página y permitiendo que se muestren en una especie de galería.

Habrá a quien le guste, eso es lo de menos; lo malo es que lo que hace, destruye blogs porque se superpone a otras cosas, impide que ciertas imágenes sean enlaces y sobre todo, afecta a quienes usan ventanas modales de otro tipo.

No hay información oficial sobre este nuevo engendro. Probablemente, los desarrolladores están tan excitados que necesitan tomar una ducha de agua fría antes de decirnos nada. Lo único que se ve es preguntas en los foros e insultos varios.

Desde ayer que vengo siguiendo el hilo de uno de ellos que encontré a través de un tweet de Ariane, y por fin, a última hora de la noche, un usuario dio una solución que puse en práctica porque la cosa ya me estaba perturbando.

El código en cuestión fue publicado por Code from an English Coffee Drinker y hace un rato, vi que Ariane también lo publica en su sitio, Templates Novo Blogger.

Para implementarlo, basta copiar lo siguiente, justo antes de </head>:
<script type='text/javascript'>
//<![CDATA[
  function killLightbox() {
    var images = document.getElementsByTagName('img');
    for (var i = 0 ; i < images.length ; ++i) {
      images[i].onmouseover=function() { 
        var html = this.parentNode.innerHTML;  
        this.parentNode.innerHTML = html;
        this.onmouseover = null;
      }
    }
  }
  if (window.addEventListener) {
    window.addEventListener('load',killLightbox,undefined);
  } else {
    window.attachEvent('onload',killLightbox);
  }
//]]>
</script>
 asta donde he probado y logré verificar, funciona bien y deja todo como estaba por lo que las ventanas modales propias, seguirá funcionando. Soluciona los problemas si se usa LightWindow, PopBox, iBox, Lytebox o Floatbox.

Sin embargo, seguirán los problemas en cualquier otro script que agregue eventos a las imágenes sin importar si estas son o no son enlaces o si están o no están alojadas en Blogger/Picasa.

¿Será posible que alguna vez tengan la cortesía de preguntar? ¿Creerse el ombligo del universo es el destino inevitable de los poderosos? Mientras trato de responder lo que no tiene respuesta sólo puedo gritarles:

Blogger: Get out of my blog!

Borrar un blog es demasiado fácil

No es cuestión de paranoia ni de sentirse el último orejón del tarro pero, lo que dicen en Google Operating System es simplemente un hecho: Borrar un blog es DEMASIADO fácil.

El botón está allí en primer plano, en la primera solapa de CONFIGURACIÓN. Demasiado cerca. Basta un click, superar la primera ventana de advertencia y puff ... adiós posts, adiós comentarios, todo desaparece en un instante y la dirección queda disponible.

Suprimir su blog

¿Desea suprimir su blog?

Suprimirá tu blog de forma permanente, así como todas tus entradas. Puedes crear otro blog en esta dirección con la cuenta de Google con la que has accedido. Sin embargo, no podremos restaurar tus entradas una vez que hayas suprimido tu blog.

Bastante más complicado es eliminar una cuenta de GMail. Para empezar, Google nos pide que ingresemos la contraseña otra vez y la cuenta no se borrar enseguida, los mensajes seguirá llegando y eventualmente, el proceso será reversible.

Obviamente, para Google, borrar un blog es mucho menos importante que eliminar una cuenta de correo. Es un concepto extraño ya que cuando un blog desaparece, sea grande o pequeño, las consecuencias son bastante más amplias: los resultados en los buscadores varían, las estadísticas se deben reacomodar, aparecen enlaces rotos, visitantes frustrados, feeds erróneos; sólo veremos la página de Blogger pidiendo disculpas y, si ya ha pasado un tiempo, nos mostrarán una página levente distinta donde podremos registrar esa dirección como nuestra.

Un comentario del artículo dice: "Realmente no debería preocuparnos si un blog se elimina, a menos que este sea popular". No creo que valga la pena responder semejante cosa, es obvio que hablamos idiomas diferentes.