Tareas (tasks)
La tareas nos van a especificar un proceso que es realizado en respuesta a un evento como la finalización de una temporización, entrar en una carta, o activar una ancla (veremos las anclas en el siguiente capítulo).
En este capítulo vamos a estudiar las tareas aplicándolas a un uso concreto: navegar entre cartas y barajas. Para ello, comenzamos exponiendo la etiqueta <do>. Esta etiqueta va a ser la que nos permita programar las acciones que puede hacer el usuario en una carta. La representación de este elemento depende del navegador; lo que debe saberse es que será mostrado como un único elemento que el usuario podrá activar. Esta representación puede ser un botón, una tecla de función, ... es decir, cualquier interfaz que disponga de una operación sencilla de "activar". Cuando el usuario activa el <do>, la tarea asociada es ejecutada.
La etiqueta <do> puede aparecer tanto a nivel de carta como a nivel de baraja. A nivel de carta significa que puede ponerse dentro de la etiqueta pareada <card> ... </card>, y a nivel de baraja significa que puede ponerse dentro de una plantilla (template), aunque el punto de las plantillas lo trataremos en otro capítulo. Lo veremos más adelante, pero hay que decir ahora que si tenemos un <do> en una plantilla, y en una carta concreta ponemos un <do>, este será el que se tenga en cuenta, "sobreescribiendo", digamos, al de la plantilla, en el caso de que tengan el mismo nombre.
Veamos los parámetros que tiene esta etiqueta:
- type: Nos dice qué acción deberá ejecutarse, siendo estas:
- accept: Aceptará la cción que se asigna dentro del <do> y se ejecuta
- prev: Ir hacia atrás en el historial del navegador
- help: Petición de ayuda
- reset: Limpia o resetea el estado
- options: Petición de opciones u operaciones adicionales
- delete: Borra un elemento o una elección
- unknown: Se trata de un <do> genérico. Es esquivalente a poner una cadena vacía, ""
- name: El nombre que le demos será el identificador del <do>. No debemos dar el mismo name a dos <do> distintos dentro de la misma carta.
- label: Se trata de un texto que aparece en la representación que haga el navegador de la etiqueta <do>. Por ejemplo, si es un botón se tratará de su título.
Dentro de la etiqueta <do>, podemos poner las siguientes tareas:
*
<go/>
*
<prev/>
*
<noop/>
*
<refresh/>
Tras estudiarlas vamos a ver un ejemplo que nos aclare su uso. Comenzamos con la etiqueta . Con ella, declaramos una tarea de tipo go, indicando que hay que navegar hacia una URL. Podemos especificar dos parámetros, href y method.
El primero es obligatorio, y nos dice la URL que vamos a visitar. Si se trata de una carta dentro de la baraja en la que estamos, escribiremos el nombre de esa carta precedido de #.
Por ejemplo, si queremos ir a la carta cuyo id (véase aquí la importancia de este parámetro) es carta7, escribiremos <go href="#carta7"/>. Si se trata de otra baraja, escribiremos su URL, relativa o total, dependiendo de si está en el mismo servidor o en otro (para una explicación exhaustiva de estos detalles, consulta el punto sobre qué es un URL y cómo referenciarlo en el capítulo 4 del curso de HTML). Al cargarse la baraja, irá automáticamente a la primera carta. Si queremos que en vez de a la primera vaya a otra carta, escribiremos <go href="URL_baraja.wml#idcarta"/>
El segundo parámetro (method) puede tomar los valores GET o POST, y se usa para enviar datos al servidor. Esto lo veremos más adelante, cuando hablemos de formularios.
Ahora veamos las otras tres tareas, que son mucho más breves. En primer lugar, tenemos <prev/>. Esto nos declara una tarea de tipo prev, que indica al navegador que tiene que ir a la página anterior en el historial. En segundo lugar, tenemos <refresh/>. Esto nos declara una tarea de tipo refresh, indicando al navegador una actualización del contexto tal y como viene especificado por los elementos setvar (también serán tratados más adelante). Por último, tenemos <noop/>, cuyo propio nombre indica que la tarea a realizar es "nada" (noop viene de "no operation").
Vamos ya a ver un ejemplo en el que se muestra de forma clara (espero) cómo trabajar con tareas. El ejemplo consta de tres barajas, para ilustrar el uso de URL relativas, que acceden a una carta concreta de otra baraja:
Ej_naveg1.wml
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="c1" title="Carta 1">
<p> En este ejemplo, vamos a ver como navegar entre
distintas cartas y barajas. Esta es la primera
carta de esta baraja. Para acceder a la segunda,
tenemos esta opcion:
<do type="accept" label="Ir a c2">
<go href="#c2"/>
</do>
</p>
</card>
<card id="c2" title="Carta 2">
<p> Ahora estamos en la segunda carta. Podemos
volver a la primera, o podemos visitar la
tercera, segun lo que elijas:
<do type="accept" label="Ir a c1" name="c1">
<go href="#c1"/>
</do>
<do type="accept" label="Ir a c3" name="c3">
<go href="#c3"/>
</do>
</p>
</card>
<card id="c3" title="Carta 3">
<p> Y ahora estamos en la tercera carta.
Podemos regresar a la anterior,
o puedes ir a la segunda baraja, para
ver como moverte entre barajas.
<do type="prev">
<prev/>
</do>
<do type="accept" label="Baraja 2">
<go href="Ej_naveg2.wml"/>
</do>
</p>
</card>
</wml>
Ej_naveg2.wml
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="c1" title="Carta 1">
<p> Esta es la segunda baraja. Y esta es la
primera carta de la segunda baraja.
Si quieres volver a la baraja anterior,
segunda carta, pulsa la primera opcion.
Si prefieres ir a la siguiente carta, pulsa
la segunda.
<do type="accept" label="Baraja 1, c2" name="b1c2">
<go href="Ej_naveg1.wml#c2"/>
</do>
<do type="accept" label="Baraja 2, c2" name="b2c2">
<go href="#c2"/>
</do>
</p>
</card>
<card id="c2" title="Carta 2">
<p> Ya estamos en la segunda carta de la segunda
baraja. No ha sido tan dificil, eh? Ah, pulsa
por si quieres ir a la carta anterior:
<do type="prev">
<prev/>
</do>
<do type="help">
<go href="ayuda.wml"/>
</do>
</p>
</card>
</wml>
ayuda.wml
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="c1" title="Ayuda">
<p> Esta seria la ayuda solicitada. Aunque
en este caso concreto no sirva de mucha
ayuda, por tratarse de un ejemplo
con fines educativos :-)
<br/>Ah, y no te olvides de permitir
volver atras ;-)
<do type="prev">
<prev/>
</do>
</p>
</card>
</wml>
Con esto finaliza el capítulo dedicado a tareas. En el próximo tratamos el tema de enlaces y anclas.