Tipos de secciones en los scripts

La salida generada por los scripts puede ser formateada de forma muy diversa por parte de la interfaz (en este caso, odcgi), por lo que deberemos indicar qué clase de interfaz estamos generando: no es lo mismo componer una interfaz visual adaptada para un formulario que para un listado. Para ello emplearemos las secciones.

Existen cuatro tipos de secciones: categories, usage, list y actions. Indicará el inicio de sección la propia palabra clave a principio de línea seguida de ":" (a partir de odcgi v0.5).

  • form: (antiguo "usage") inicio de formulario. Los elementos que le sucedan serán formateados como campos de un formulario, cerrándose al inicio de la próxima sección, o en su defecto al final del script. Si no se ha encontrado una sección "actions", se añadirán automáticamente los botones estándar de formulario web ("Submit" y "Reset"). El envío del formulario se hará al propio script, o aquél indicado en la línea de "usage", después del caracter ":".
  • list: inicio de listado (tipo por defecto). Los elementos que le sucedan serán mostrados como un listado tabulado, siendo enviados como siguiente parámetro al script indicado en la línea de cabecera, después del caracter ":".
  • tabs: (antiguo "categories") caso especial de listado, empleado como cabecera de la interfaz. Los elementos serán mostrados como pestañas (en el tema por defecto) y su clave será empleada como primer parámetro al propio script.
  • actions: los elementos que le sucedan serán mostrados como botones, enviando el contenido de la sección anterior al script indicado en la primera columna.

Las secciones quedarán delimitadas por líneas en blanco. En su defecto, quedarán encadenadas, viendo modificado su funcionamiento del siguiente modo:

  • list + actions: los elementos de la lista que se encuentren seleccionados se pasarán como parámetros al botón de acción pulsado. Esto es especialmente útil en el caso que el botón sea "Borrar", o para modificar alguna característica de tales elementos.
  • form + actions: los datos introducidos por el usuario en el formulario serán enviados al script correspondiente al botón pulsado.
  • list + form: el script del listado prevalecerá, mientras que el formulario se mostrará debajo del mismo. Muy útil para construir filtros sobre los listados.

 

Ejemplos

La siguiente salida generará un sencillo formulario con tres campos:

usage: sendMail.sh
      recipient    Recipient    text
      subject      Subject      text
      message      Message      longtext

No es necesario indicar sección "actions", por lo que al hacer el "Submit", se enviará al propio script "sendMail.sh" como primer, segundo y tercer argumento. Si queremos añadir nuevas funciones al formulario anterior, podemos emplear la versátil sección "actions".

usage: sendMail.sh
      recipient    Recipient    text
      subject      Subject      text
      message      Message      longtext
actions:
      sendMail.sh   Send mail
      saveMail.sh   Save mail to drafts

Obsérvese que es necesario indicar el propio script si queremos que aparezca como una opción más. Los campos serán enviados como primer, segundo y tercer argumentos del mismo modo a ambos scripts.

En el siguiente ejemplo veremos una forma de utilización estándar de los listados, en una típica interfaz de "altas, bajas y modificaciones":

list: viewUsers.sh
      opalenzuela  Oriol Palenzuela    user admin
      dlerch       Daniel Lerch        user admin
      tester       Test user           user
actions:
      addUser.sh    Add new user
      viewUsers.sh  Edit user
      delUSer.sh    Delete user

Tal como podemos ver, el script de cabecera "viewUsers.sh" también aparece como un elemento de la sección "actions". Esto significa que se trata de la acción por defecto, y sucederá lo mismo si seleccionamos un elemento de la lista (en este caso un usuario) y pulsamos el botón "Edit user", como si hacemos click en el propio elemento: se llamará al script "viewUsers.sh" pasando como primer argumento el código del elemento seleccionado (primera columna, por ejemplo "tester").

En algún caso, para reducir el número de enlaces simbólicos creados en "/etc/opendomo/root/" podemos emplear scripts "concentradores". Podemos hacerlo muy fácilmente empleando solamente una sección "actions", de modo que se mostrará una lista de botones con textos descriptivos.

Hay algunos scripts que deberán mostrar mucha información al mismo tiempo. Para estructurarla podemos recurrir a la división de categorías, empleando la sección "categories". Esta sección es la empleada para construir la división de pestañas de la cabecera de la interfaz (Configurar, Control, Seguridad, etc.), pero también puede ser usada en el cuerpo de los scripts. Esta funcionalidad está siendo desarrollada todavía, y por ahora es considerada experimental.