El módulo ODCGI representa la interfaz principal de OpenDomo y su función es la de formatear las entradas y salidas del sistema en un aspecto web, mucho más amigable para el usuario final, al mismo tiempo que proporciona una capa adicional de seguridad para proteger el sistema. Como añadido, la arquitectura de ODCGI ha sido diseñada para ser plenamente funcional incluso en aquellos navegadores que no dispongan de Javascript.
El módulo ODCGI viene incluido de forma predeterminada en la ISO, aunque no es imprescindible instalarlo en aquellos agentes que, por razones de potencia o disponibilidad, no vayan a ser utilizados como interfaz.
Al tratarse de la interfaz principal, el módulo ODCGI contiene también las rutinas de traducción de texto, proporcionando un mecanismo sencillo de soporte multi-idioma.
ODCGI procesa los tipos de dato mostrados para ofrecer la interfaz óptima, con la mayor usabilidad posible. Como parte de la sintaxis empleada por los scripts está la tercera columna que indicará el tipo de información mostrada, organizada de forma jerárquica, donde el primer nivel es más genérico y los sucesivos más concretos.
Actualización: Se ha publicado un manual sobre creación de scripts, además del manual de referencia, con numerosos ejemplos.
Por razones de seguridad, la arquitectura de OpenDomo define que la creación de usuarios dependerá del módulo que actúe de interfaz, de modo que puedan emplearse los mecanismos propios de cada vía de acceso que garanticen una mayor protección al sistema. Es por esta razón que ODCGI controla el alta, baja y modificación de usuarios y la aplicación de los privilegios específicos de cada uno. Del mismo modo que lo deberán hacer el resto de interfaces que se habiliten (por ejemplo la interfaz de línea de comandos, ofrecida a través de Busybox).
Desde la versión 0.7.9 de la distribución, se incluye la librería libcgi en el sistema base. En próximas versiones (antes de alcanzar Beta-1) se procederá a migrar odcgi para hacer uso de esta librería, reemplazando la implementación propia de las funciones CGI. Esto debería proporcionarnos un mayor soporte y robustez (tal librería está siendo mantenida activamente), así como nuevas funcionalidades. También nos permitirá en el futuro centrar nuestros esfuerzos en el desarrollo de OpenDomo, dejando a un lado las implementaciones de protocolos estándar.
Comentarios
Incorporando la potencia de Ajax
En la arquitectura de odcgi se han tenido en cuenta las posibilidades de Ajax para mejorar la usabilidad de la interfaz, aunque por ahora hemos centrado nuestros esfuerzos en garantizar un sistema 100% funcional sin necesidad de Javascript, de modo que se implementarán algunas funcionalidades adicionales en Javascript tan pronto como la estructura DOM de la interfaz se haya estabilizado, lo que previsiblemente sucederá de cara a la versión Beta del sistema. Algunas de las funciones que se implementarán son:
Tipos de script
Del mismo modo que empleamos una columna para designar los tipos de campo al representar un listado o un formulario, soportar una columna para definir el tipo de script, podría proporcionarnos grandes ventajas, especialmente en accesibilidad, ya que podríamos adaptar la representación (así como el comportamiento) a las características del propio script.
Pongo algunos ejemplos:
El ejemplo anterior dibujará el listado empleando un formato de tabla, de modo que no sea necesario usar el scroll para visualizar los 4 elementos. También podrá usarse clases como "collapsed" para que no se muestre el cuerpo del formulario por defecto.
En el caso de los scripts de la sección "actions", la columna "tipo" podría indicar si un cliente con Javascript debe desplegar el contenido de la acción dentro mismo de la barra de herramientas, ahorrando así pasos innecesarios y peticiones HTTP, y facilitando el uso. Por otro lado, la columna "tipo" también podría indicar qué icono usar para representar la acción correspondiente. Esto puede ser de utilidad en cuanto la cantidad de acciones posibles crezca un poco más.