Publicado por : Ignacio Cisneros sábado, 19 de septiembre de 2009
COMPARTE →

Un problema habitual que nos encontramos los desarrolladores web que nos basamos en CMS's, es que no siempre todo el frontend se gestiona desde la plantilla, sino que muchas veces se gestiona desde plugins o componentes internos, accesibles únicamente a través de la modificación del código de las funciones que lo generan.


En el caso de Joomla los iconos (pdf, email, imprimir) que incluye por defecto en los artículos NO SON ACCESIBLES, el problema es que son enlaces que se activan con el método onclick, de tal forma que, según el validador de accesibilidad Hera:

Manejadores de evento: Se utilizan eventos dependientes del dispositivo y no existen eventos redundantes.

Instrucciones:
Los eventos deben poder activarse de igual forma con el ratón que con el teclado. Por tanto debe haber manejadores de evento independientes del tipo de dispositivo ("onfocus", "onblur", "onselect") o redundantes para el tipo de dispositivo (si se indica "Onmousedown" debe indicarse también "Onkeydown", si "onmouseup" también "onkeyup", si "onclick" también "onkeypress").

La solución es relativamente sencilla, tan sólo tenemos que modificar el fichero que contiene la función que genera los iconos de Joomla:

  • El fichero que contiene las funciones PHP que generan el icono es:
./components/com_content/helpers/icon.php
  • Debemos editarlo y buscar la función de cada icono, en el caso del pdf:
function pdf($article, $params, $access, $attribs = array())
  • En esta función hay que localizar la línea:
$attribs['onclick'] = "window.open(this.href,'win2','".$status."'); return false;";
  • Lo que vamos a hacer es añadir los parámetros de accesibilidad, onkeypress y acceskey para que el evento sea accesible también desde teclado:
$attribs['onkeypress'] = "window.open(this.href,'win2','".$status."'); return false;";
$attribs['acceskey']="p";

Ahora en el mismo fichero, tenemos que hacer la misma modificación en las funciones de email e imprimir, de esta forma superaremos la traba del validador de accesibilidad.

Además de la función onkeypress debemos añadir el atributo acceskey para que cualquier navegador sea capaz de obtener el foco del enlace, ya que de otra forma, no todos los navegadores serían capaces de obtener el foco en el enlace que activará el evento.

{ 1 comentarios... read them below or add one }

  1. Muchas gracias por tu ayuda, voy a probar esto que me dices a ver si me sale, menuda movida lo de la accesibilidad con Joomla.

    ResponderEliminar

Con la tecnología de Blogger.

- Copyright © Todos contra Google - El blog de Ignacio Cisneros - icisneros - Original design by Johanes Djogan modified by Ignacio Cisneros-