===== Variables de sesión ===== Las variables de sesión son espacios de memoria referenciados mediante un nombre o identificador, a los que se van asignado valores durante la ejecución de un test. Las variables de sesión se crean al iniciar el test, tan pronto como se les asigna el primer valor, y desaparecen una vez que el test ha terminado. Para modificar las variables de sesión el test y las preguntas establecen pequeños programas en [[es:manual:ssl|lenguaje SSL]] que se ejecutan cuando ocurren distintos eventos: * Al inicio del test. * Cada vez que se selecciona una respuesta a una pregunta. * Al final del test. No todas las variables de sesión se tienen que modificar en todos estos puntos. Por ejemplo, supongamos una variable de perfil denominada ''nFallos'', y otra ''nAciertos'', que nos permite medir el número de veces que un alumno ha seleccionado una opción incorrecta o una opción correcta de un test en el que se permite la marcha atrás, y por tanto múltiples cambios en la respuesta a una misma pregunta hasta llegar a una respuesta final. Siette evalúa la respuesta final y lleva cuenta de los cambios, pero supongamos que se quiere realizar algún tipo de adaptación o mensaje al usuario mientras aún no ha concluido el test. En este caso lo primero que se haría será fijar el el script del principio del test el siguiente programa: nFallos = 0; nAciertos = 0; Luego, en cada pregunta del test se configura una acción diferente si la opción es correcta o si no lo es, es decir, en las respuestas correctas se usaría el script nAciertos++; y en las respuestas incorrectas el script: nFallos++; Al finalizar el test estas dos variables tomarán un valor dependiendo del número de veces que se haya seleccionado la opción correcta o incorrecta, y esta información se asociará a la sesión. ==== Variables de sesión predefinidas ==== Inicialmente se definen algunas variables de sesión a partir de los datos del usuario. Las variables están definidas con nombres tanto en inglés como en español, aunque se trata de variables diferentes. El valor de estas variables no debería modificarse (salvo en casos excepcionales): * ''nombre'', contiene el nombre propio del alumno * ''apellidos'', contiene los apellidos del alumno * ''correo'', contiene su dirección de correo electrónico * ''respuesta'', contiene el texto de la respuesta que acaba de seleccionar el alumno. Si la respuesta es múltiple esta variable contendrá un [[es:manual:ssl#arrays|array]] válido en el [[es:manual:ssl#lenguaje ssl]] * ''calificacion'', contiene la estimación actual del nivel de conocimientos del alumno en la escala del test. * ''orden'', contiene el número de la última pregunta, empezando a contar por 1. Los identificadores de estas mismas variables en inglés son: * ''name'' * ''surname'' * ''email'' * ''answer'' ((Esta es la misma variable que se usa para conectar con las [[es:manual:items:externosgeneral|preguntas externas]]. Aunque no se ha dicho, tambien podría usarse la variable ''respuesta'', que es la misma)). * ''score'' * ''order'' ==== Variables de perfil ==== Las [[es:manual:temas:variable_de_perfil|variables de perfil]] son a todos los efectos variables de sesión, con la particularidad de que su valor se conserva entre distintas ejecuciones del mismo o distintos test de una misma asignatura, o incluso entre asignaturas si se trata de variables de perfil globales. Si el uso de las variables de perfil es temporal, es decir, si se van a inicializar cada vez que se entre en un test, no sería necesario definirlas como variables de perfil, sino simplemente como variables de sesión. La diferencia entre unas y otras es simplemente la permanencia entre distintas sesiones. Las variables de sesión se extinguen y las de perfil permanecen. ==== Acceso a las variables de sesión y perfil ==== las variables de sesión y de perfil pueden accederse directamente usando su nombre en los scripts en lenguaje [[es:manual:ssl|lenguaje SSL]] que se incrustan al principio o final del test, y en las preguntas. Estos scripts se editan respectivamente mediante las áreas de texto que aparecen al final de las pestañas de [[es:help_test_evaluation#Script al inicio del test|Evaluación]] en la sección de [[es:help_test|Test]] y de [[es:help_items_content#Variables de sesion|Contenido]] en la sección de [[es:help_items|Preguntas]]. Los scripts se aplican conforme el alumno va avanzando en la realización del test, actualizando el valor de las variables. Tambien es posible mostrar el valor de cualquiera de las variables sesión o de perfil incrustándolas en el anunciado, en las respuestas, las ayudas o los refuerzos. Todas estas secciones contienen textos en HTML. Para incluir una variable simplemente se añade su nombre dentro de un doble paréntesis angular. Por ejemplo, para personalizar el enunciado de una pregunta de la siguiente forma: Hola <>, si este año cumples <> años. ¿Cuántos años cumplirás dentro de cinco años? En este ejemplo suponemos que se usa la variable de sesión ''mombre'' y la variable de sesión ''edad'', que puede calcularse mediante un script al inicio del test a partir de la variable de perfil del año de nacimiento. IMPORTANTE: Nótese que el texto de la respuesta de un alumno a una pregunta no está disponible en la propia pregunta, ya que la pregunta se plantea ANTES que la respuesta, y por consiguiente no se conoce al plantear la pregunta, ni tan siquiera en los refuerzos cuya instanciación se ha realizado previamente, aunque no se haya mostrado. Lo que si puede conocerse es la respuesta a la pregunta anterior, declarando para ello una variable de sesión que se actualiza en el script de la pregunta. ==== Interacción con javascript ==== Las variables de sesión (y por consiguiente las variable de perfil) son variables que residen en el servidor de Siette, que en principio solo podrán modidifcarse a través de programas [[es:manual:ssl|SSL]] que se ejecutan en el servidor. No obstante, existe un mecanismo para que las interacciones del alumno con la página web de Siette donde se plantean las preguntas puedan ser capturadas y enviadas a Siette como variables de sesión. Las páginas que plantean preguntas contienen dos funciones javascript para leer y modificar las variables de sesión: function getVariable(nombre) { ... return valor; } function setVariable(nombre, valor) { ... } Por ejemplo, supongamos una variable de sesión ''nClicks'', que se quiere usar para llevar la cuenta de las veces que el usuario ha abierto un enlace que muestra un texto o una imagen. Para informar a Siette de esta contabilidad, cada vez que se dispara el evento que abre el enlace se añadirá la llamada javascript: setVariable('nClicks', getVariable('nClicks')+1); ==== Preguntas condicionadas ==== Uno de los usos mas frecuentes de las variables de sesión es para la selección de preguntas en las que se establece alguna condición en [[es:manual:ssl|lenguaje SSL]]. Si la condición devuelve ''true'' la pregunta puede seleccionarse, si devuelve ''false'', no. Con las variables del primer ejemplo, la condición de selección de una pregunta puede ser: return nAciertos>5 && nAciertos>nFallos; es decir, que la pregunta solo aparecería en aquellas sesiones en las que el número de aciertos sea superior a 5 y superior al número de fallos hasta el momento. Véasen algunos ejemplos sobre el uso de la página dedicada a las [[es:manual:items:condicionadas#Preguntas condicionadas]] ==== Consejos prácticos ==== Use las variables de sesión con moderación. Normalmente pequeñas adaptaciones