Jun 12 2009

Shoutbox en Drupal 5.x

Una de las aplicaciones que resultan útiles en algunos portales es la creación de bloques de minichat o shoutbox. Son mensajes cortos que se envían a fin de debatir temas cortos o dar informaciones rápidas al usuario.

En drupal existe un módulo para implementar un Shoutbox en un sitio web. Es realmente útil y personalizable, sin embargo nosotros hicimos ligeros ajustes al módulo a fin de arreglar dos inconvenientes.

1. El campo de ingreso para el mensaje es de una sola línea, para el usuario es deseable enviar mensajes más largos. Para ello viene bien valerse del artículo publicado dentro de la pagina de parches pendientes del proyecto. Se pueden hacer los siguientes cambios y reemplazar el campo de texto por un área de texto.

//En la línea 525 Cambiar
$form['message'] = array(
    '#type' => 'textfield',
    '#default_value' => $default_msg,
    '#size' => 15,
  );
//Por:
 $form['message'] = array(
    '#type' => 'textarea',   
    '#default_value' => $default_msg,
    '#cols' => 15,
    '#rows' => 4,
  );

2. Para evitar que los usuarios puedan enviar mensajes con cualquier nombre de usuario, deshabilitamos la edición del campo nick, empleando la propiedad enunciada en el API #disabled.

//En la línea 517, agregamos al arreglo ('#disabled' => TRUE,) quedaría de esta forma:
    $form['nick'] = array(
      '#type' => 'textfield',
      '#disabled' => TRUE,
      '#default_value' => ($last_nick) ? $last_nick : $default_nick,
      '#size' => 15,
      '#maxlength' => 30,
    );

Por supuesto siempre se podrán aplicar otro tipo de soluciones, como por ejemplo evitar que el campo de Nick sea renderizado empleando la propiedad #access. El módulo es altamente personalizable, recomendado como buena alternativa para un minichat.


Mar 11 2009

Drupal 5 - Corregir error de validación XHTML por id “edit-submit”

Drupal 5 presenta un error al validar con estandar XHTML dependiendo del template que se emplee. Por defecto drupal no alterna los identificadores de los diversos inputs que puedan haber en una misma página; por lo que se presenta un error de id duplicado en la validación.

Para solucionar dicho inconveniente pueden agregarse las siguientes lineas al archivo template.php ya sea del engine o del theme.

/**
* Arregla la duplicación de id's "edit-sumit".
*/
function phptemplate_submit($element) {
  static $dupe_ids = array();
  if (isset($dupe_ids[$element['#id']])) {
    $dupe_ids[$element['#id']]++;
    $element['#id'] = $element['#id'] .'-'. $dupe_ids[$element['#id']];
  }
  else {
    $dupe_ids[$element['#id']] = 0;
  }
  return theme('button', $element);
}

Ene 8 2009

Drupal Módulo Smileys - Como crear un nuevo pack

Cuando se crean foros resulta bastante útil el proporcionarle al usuario smileys para que pueda personalizar sus comentarios. Drupal cuenta con un módulo para este fin llamado Smileys. El modulo es bastante bueno, sin embargo en su versión para Drupal 5.x nos topamos con bastantes tropiezos.

1. Generalmente los packs que se encuentran para esta versión son demasiado viejos, y aquellos con gráficos más estilizados se encuentran para la versión 6.x.
2. El módulo se hace bastante inconsistente al trabajar con J-Query Update ya que no permite insertar Emoticons directamente desde el fieldset.
3. Los smileys al ser insertados lo hacen sin una clase lo que hace bastante complicado su manejo en las hojas de estilo.

Cómo crear un pack personalizado para Smileys en Drupal 5

Como lo mencionamos, los packs que vienen para esta versión son bastante anticuados. Hay packs muy estilizados y modernos pero para la versión 6 que emplea archivos XML. Entonces elegimos descargar un tema para Smileys en Drupal 6 y hacer uso de un script que generara un archivo de pack para Drupal 5 a fin de portarlo.

EL tema que portamos es uno llamado Facies

Smileys Facies Thumbnail

El script que empleamos para convertir nuestras imágenes en un tema de smileys de Drupal 5, teniendo en cuenta que el nombre del icono queda igual al nombre de archivo es el siguiente:

<?php
//Script que genera un archivo .pak para Smileys Drupal 5 usando PHP.
 
$dh=opendir("/home/yourdir/"); //Directorio con los iconos
while(gettype($file=readdir($dh)) != boolean)
{
if(!is_dir("$file") && strpos($file, ".gif"))
{
$file2 = str_replace(".gif","",$file); //Estensión de archivos.
echo $file. "=+:" .$file2. "=+::" .$file2. ":";
echo "<br>";
}
}
closedir($dh);
 
//Modificación del script posteado por yngens en el foro de Drupal.org http://drupal.org/node/169700
?>

El Pack de emoticons que creamos se puede hallar en nuestra web de descargas:
http://www.terysoftware.com/descargas/smileys-facies_theme-d5

Hacer funcionar Smileys en Drupal 5 con J-Query Update

Dado que revisando los Issues no encontramos aparentemente una solución al tropiezo #2, decidimos desviar al usuario y obligarlo a usar la ventana (Pop Up) con los demás smileys que si funciona con J-Query Update. Lamentablemente todos los smileys se muestran en el fieldset por lo que el usuario no se vería tentado a hacer click en el link “Show All” (Que fue previamente habilitado en la página de configuración del módulo). Para tal fín, tuvimos que ingresar al módulo y realizar los siguientes cambios buscando que el fieldset mostrara solo unos pocos emoticons.

› Continue reading