Diseño e implementación de módulos docentes en Joomla
Full text
PROYECTO FINAL DE CARRERA “Diseño e Implementación de Módulos Docentes en Joomla” DISCA-59 Autor: Vicente Reolid Serrano Dirigido por: Dr. Lenin G. Lemus Zúñiga Profesor Titular de la Universidad Politécnica de Valencia
2
3 ÍNDICE RELACIÓN DE FIGURAS. ................................................................................................................. 5 1. INTRODUCCIÓN. ........................................................................................................................ 7 2. OBJETIVO. .................................................................................................................................. 9 3. METODOLOGÍA. ....................................................................................................................... 11 4 EL CMS JOOMLA. ...................................................................................................................... 13 4.1 Introducción. ..................................................................................................................... 13 4.2 El Patrón MVC. .................................................................................................................. 13 4.3 Creación de un Componente. ........................................................................................... 14 5. TECNOLOGÍAS COMPLEMENTARIAS. ...................................................................................... 17 5.1 JQuery................................................................................................................................ 17 5.2 Json. ................................................................................................................................... 17 5.3 JTable. ................................................................................................................................ 18 5.4 Servicios Web. ................................................................................................................... 19 5.4 TCPDF. ............................................................................................................................... 20 6. DESARROLLO DEL COMPONENTE. ........................................................................................... 21 6.1 Estructura del Componente. ............................................................................................. 21 6.2 Descripción de Funciones. ................................................................................................. 22 6.2.1 Controladores. ............................................................................................................ 23 6.2.2 Modelos. ..................................................................................................................... 24 6.2.3 Tablas. ........................................................................................................................ 26 6.2.4 Vistas. ......................................................................................................................... 27 6.2.5 Imágenes. ................................................................................................................... 30 6.2.6 Instalación. ................................................................................................................. 30 6.3 Cambios en los componentes de Cuestionarios. .............................................................. 30 6.4 Módulo de Instalación del Componente. .......................................................................... 33 6.4 Creación de un Servicio Web. ........................................................................................... 35 7. INSTALACION BÁSICA DE JOOMLA. ........................................................................................ 39 7.1 Instalación del Entorno. .................................................................................................... 39 7.2 Instalación y Puesta en Marcha de la Aplicación. ............................................................. 40 7.2.1 Instalación del Componente. ..................................................................................... 40 7.2.2 Creación de los menús de inicio y desconexión. ........................................................ 41
4 7.2.3 Enlazar los menús con el plugin de Conexión. ........................................................... 43 7.3 Incorporación de parámetros adicionales al usuario. ....................................................... 43 7.4 Alta de Usuarios desde el Back-End. ................................................................................. 45 7.5 Selección y adaptación de la plantilla. .............................................................................. 46 8. FUNCIONAMIENTO DE LA APLICACIÓN. .................................................................................. 49 8.1 Punto de Entrada al Aplicativo. ......................................................................................... 49 8.2 Conexión como Profesor/Administrador. ......................................................................... 49 8.2.1 Gestión de Tareas. ...................................................................................................... 50 8.2.2 Gestión de Alumnos. .................................................................................................. 57 8.3 Conexión como Alumno/Usuario. ..................................................................................... 60 8.4 Cambio de Contraseña. ..................................................................................................... 64 9. CONCLUSIONES. ...................................................................................................................... 65 10. TRABAJO FUTURO. ................................................................................................................ 67 11. BIBLIOGRAFÍA. ....................................................................................................................... 69
5 RELACIÓN DE FIGURAS. Figura 1. Estructura de un componente en Joomla. ................................................................... 16 Figura 2. Generar Servicios con .NET. ......................................................................................... 36 Figura 3. Servicios Montados en IIS. ........................................................................................... 37 Figura 4. Detalles de los Servicios. .............................................................................................. 37 Figura 5. Instalación de Extensiones Joomla. .............................................................................. 40 Figura 6. Menú del Componente ya instalado. ........................................................................... 41 Figura 7. Gestor de Entradas del menú. ...................................................................................... 41 Figura 8. Parámetros de la entrada de Inicio. ............................................................................. 42 Figura 9. Parámetros de la entrada de desconectar. .................................................................. 42 Figura 10. Configuración del módulo de conexión. .................................................................... 43 Figura 11. Configuración del plugin UserMeta............................................................................ 45 Figura 12. Alta de usuarios desde el BackEnd. ............................................................................ 45 Figura 13. Ubicación de la conexión a la aplicación. ................................................................... 46 Figura 14. Punto de entrada a la aplicación. ............................................................................... 49 Figura 15. Menú de conexión del Administrador/Profesor. ....................................................... 50 Figura 16. Lista y mantenimiento de Tareas definidas. .............................................................. 51 Figura 17. Formulario de alta de tareas.. .................................................................................... 51 Figura 18. Tipos de Test............................................................................................................... 51 Figura 19. Selección de fecha sobre calendario. ......................................................................... 53 Figura 20. Edición de una tarea. .................................................................................................. 53 Figura 21. Estadísticos de los diferentes cuestionarios. ............................................................. 54 Figura 22. Comentarios de la Encuesta. ...................................................................................... 55 Figura 23. Listado de Resultados de un test. .............................................................................. 55 Figura 24. Pantalla de Gestión de alumnos/usuarios.................................................................. 57 Figura 25. Lista de alumnos obtenida de poliformat. ................................................................ 58 Figura 26. Entrada y selección del fichero de alumnos. .............................................................. 58 Figura 27. Examinar disco para importar archivo de datos. ....................................................... 58 Figura 28. Carga del Fichero de alumnos. ................................................................................... 58 Figura 29. Relación de alumnos leída del fichero de carga. ........................................................ 59 Figura 30. Mantenimiento individualizado de alumnos. ............................................................ 59 Figura 31. Muestra de un alumno.ya registrado. ........................................................................ 59 Figura 32. Alta individualizada de un nuevo alumno. ................................................................. 59 Figura 33. Opción de Listar Alumnos Registrados ....................................................................... 60 Figura 34. Lista de Alumnos registrados en el Sistema. .............................................................. 60 Figura 35. Conexión de un alumno al sistema. ........................................................................... 61 Figura 36. Selección de un test por parte del Alumno. ............................................................... 61 Figura 37. Estado del test de biestables de un alumno. ............................................................. 62 Figura 38. Cuestionario de una pregunta de biestables. ............................................................ 62 Figura 39. Generación del informe de examen por el alumno. ................................................. 63 Figura 40. Visualización de notas por parte de un alumno. ........................................................ 63 Figura 41. Informe de notas de cuestionarios en formato PDF. ................................................. 64 Figura 42. Formulario de Cambio de Contraseña. ...................................................................... 64
6
7 1. INTRODUCCIÓN. En el informe [1] “Experiencias en el uso de las TIC’s para facilitar la impartición de la asignatura de grado Fundamentos de Computadores” se avanzó un nuevo modelo de evaluación en el proceso de implantación de las asignaturas de Grado en la Universidad Politécnica de Valencia. Para la evaluación continuada de los alumnos se creó una herramienta que permite la realización de controles, apoyada en un Servidor Web. El modelo basado en web se ha desarrollado utilizando un Sistema de Gestión de Contenidos basado en Joomla e implementado como extensiones al mismo, extensiones denominadas componentes. Dada la aceptación de la herramienta y sus posibilidades se considera útil la evolución de la misma como continuidad al ciclo iniciado. Con el fin de avanzar en la evolución y mejora de la herramienta de evaluación de los controles realizados por los alumnos de la asignatura de Grado, “Fundamentos de Computadores”, se plantea la posibilidad por un lado, de facilitar al alumno un informe detallado de la evaluación realizada y por otro dar la posibilidad del envío automatizado de las notas obtenidas por los alumnos a la plataforma de la Universidad “Poliformat”. Se considera de utilidad, además, la posibilidad de mantener tanto la Base de Datos de alumnos como el registro de los mismos, para que el acceso a la herramienta lo realicen como usuarios registrados, aprovechando para ello las características de la plataforma. Partiendo de un listado de alumnos extraído de la plataforma de la Universidad, facilitar su importación y registro automatizado.
8
9 2. OBJETIVO. El objetivo de este PFC es desarrollar e implementar un componente que permita gestionar las diferentes tareas que el alumno ha de realizar como parte de la evaluación de la asignatura. El profesor podrá dar de alta la tarea, especificando el tipo de tarea a realizar, un identificador de tarea y la fecha de inicio, finalización y publicación de la misma. Junto a la gestión de tareas se implementará la opción que permita agregar los alumnos a la aplicación, siguiendo un procedimiento automático y dirigido. Se desarrollará además, en cada una de los diferentes cuestionarios ya existentes la utilidad de obtención de un informe en formato PDF que contendrá una relación de aciertos y errores junto con las notas obtenidas por el alumno, una vez alcanzada la fecha de publicación del mismo. Se implementará también una utilidad para la publicación de las notas, donde el profesor introducirá en la tarea, su referencia a la tarea de Poliformat, que obtendrá después de haber creado la misma en la aplicación de la Universidad. Esto permitirá relacionar la tarea del sistema de evaluación con la tarea de Poliformat, utilizando un servicio web para la transferencia de las notas del alumno de la Aplicación de Evaluación a la aplicación de Poliformat.
16 com_prueba index.html prueba.php controller.php models index.html prueba.php tables views pr ueba index.html view.html.php tmpl index.html default.php Figura 1. Estructura de un componente en Joomla.
17 5. TECNOLOGÍAS COMPLEMENTARIAS. Con el fin de facilitar el desarrollo e implementación de código en entornos Web, han ido apareciendo en la red, una serie de tecnologías; herramientas, bibliotecas y utilidades, que de un lado, facilitan tanto el intercambio de objetos, como el acceso a los mismos y de otro han posibilitado la interconexión entre entornos y sistemas diferentes. A continuación se relacionan y describen aquellas que se usan en el desarrollo de nuestra aplicación. 5.1 JQuery. Es una librería de funciones escritas en JavaScript, que posibilita interactuar con los documentos HTML, el árbol del DOM y la tecnología AJAX que implementan los diferentes navegadores web existentes, de manera transparente a las características especificas de cada uno de ellos. Es decir, hace independiente el uso de los recursos de los navegadores Web de la forma en los que el fabricante haya definido como han de ser utilizados estos. [5] [6]. Aunque el estándar W3C ha definido estándares tanto para el uso de HTML como del DOM y de AJAX, la forma de acceso a los recursos de cada agente de usuario (navegador) ha sido establecida por sus creadores y no siempre se corresponde con el estándar. Es por ello que desarrollar código en la parte cliente se hace complejo dadas las peculiaridades y especificidades de cada navegador. Con la finalidad de evitar esta serie de restricciones, JQuery se desarrolla como un conjunto de funciones con una sintaxis propia, que implementa toda la funcionalidad necesaria para acceder a las tecnologías que se utilizan en los clientes de navegación, adaptando su ejecución a la especifica del agente de usuario donde se vaya a utilizar, por lo que la hace ser independiente de donde se utilice y simplificando además la inserción de código JavaScript para el desarrollador. Su finalidad es la de facilitar con una sintaxis sencilla y un conjunto de funciones comunes la forma en gestionar los diferentes eventos y funcionalidades de los agentes de usuario, tanto eventos, estilos, propiedades y características. Las librerías JQuery se obtienen fácilmente de internet en nuestro caso las hemos descargado de la página oficial [7] la versión 1.4.4.2 y se han situado en un directorio auxiliar que parte del directorio público Web /jscripts/jquery/jquery.1.4.4.min.js 5.2 Json. En la actualidad para el intercambio de información entre el cliente y el servidor en entornos Web se utiliza la tecnología AJAX la cual permite que haciendo uso de JavaScript en la parte del Cliente del objeto XMLHTTPRequest permite la transferencia asíncrona de información entre cliente y servidor. Si la información requerida desde el objeto de AJAX está en formato TXT, esta puede ser procesada sin más, sin embargo, si está en formato XML, el objeto XMLHTTPRequest ha de realizar un análisis del documento devuelto y construir con él un árbol DOM en memoria del XML. Una vez construido se pueden utilizar los métodos estándar de acceso al DOM, navegar por el árbol y recuperar los elementos, atributos y el resto
18 de información que contiene el árbol. Esto supone un elevado coste procesamiento en la parte del cliente [7]. A pesar de que XML sea la manera estándar de intercambiar datos, no siempre es la mejor, debido a su descripción excesivamente detallada y la necesidad de un analizador no trivial para su validación (construir el árbol DOM y posteriormente construir los objetos JavaScript). Con el fin de mejorar el rendimiento en la parte del cliente aparece JSON ( JavaScript Object Notation). Su principal importancia proviene del hecho de que es un subconjunto del lenguaje JavaScript en sí mismo. Tiene muchas características en común con XML como el poseer una sintaxis con anidamiento de datos al igual que XML, aunque más ligera. También está basado en texto, al igual que XML. Utiliza UNICODE y es igual de legible como XML, pero a diferencia de este es más claro y menos redundante. Mientras que XML es apropiado para marcar documentos, JSON es ideal para el intercambio de datos. Cada bloque o instancia de JSON describe un objeto con objetos anidados, matrices, cadenas, números, y cualquier otro tipo de datos. Aunque el ahorro en el tamaño del documento no llegue a ser significativo, de hecho en algunos casos, el tamaño de un documento JSON es incluso superior al mismo en XML en casos de tamaños muy pequeños y en formato comprimido, su ventaja está en el análisis. Mientras que para un objeto XML es necesario construir su árbol DOM y posteriormente con llamadas de JavaScript acceder a los elementos para construir el objeto, en el formato de JSON al ser un subconjunto de JavaScript, directamente en una sola llamada es analizado por el compilador realizando una llamada a eval, tras lo cual, automáticamente se obtiene ya un objeto JavaScript al que es más fácil acceder, que el hecho de tener que navegar por el árbol de DOM. Para poder hacer uso de la biblioteca de funciones de json se ha descargado esta las mismas de la página oficial de JSON [8] y se han ubicado en el mismo directorio auxiliar que parte de la raíz directorio público Web /jscripts/json/json.js 5.3 JTable. Se trata de una clase abstracta que forma la base para la construcción de objetos de la clase tabla en Joomla. Para cada tabla que se desee implementar es necesario crear una nueva clase extendiendo JTable. Se trata de la implementación del patrón de diseño de registro activo y permite la construcción de una tabla física en Joomla, con el fin de leer, actualizar y eliminar registros de tabla de base de datos [3] [10]. Al extender la clase se han de tener en cuenta algunas convenciones: Los objetos de tipo table (tablas) que se creen, han de residir en un directorio determinado partiendo de la raíz de administración del componente que la utiliza, este es el directorio tables. El nombre de la clase ha de ser igual al nombre de la tabla a crear prefijada con el prefijo Table.
19 Ha de tener un campo identificador que constituya la clave primaria y este ha de ser numérico y autoincremental. En el momento de la inserción de datos el campo estará a null, y no podrá estar afectado en las operaciones de actualización. Solamente existirá dicha clave, por lo demás, el resto de los campos de la tabla pueden ser de cualquier tipo. Es de gran utilidad cuando se trata de mantener registros en memoria o en una estructura física del servidor que requiera del uso de tablas de trabajo, sin necesidad de hacer uso de ningún gestor de base de datos. 5.4 Servicios Web. Un servicio web es una aplicación web con capacidad para interoperar con otro servicio o usuario en la red. Esta aplicación permite el intercambio de datos entre sí con objeto de ofrecer unos servicios. El proveedor ofrece sus servicios como un procedimiento remoto y el usuario solicita el servicio llamando a este procedimiento a través de la Web. Se utiliza para proporcionar un mecanismo de comunicación entre aplicaciones que interactúan con el fin de presentar información dinámica. Para que esto se pueda realizar es necesario que la tecnología que se utilice sea estándar [11]. Para que dicha intercomunicación se pueda llevar a cabo, es necesario el uso de diferentes tecnologías que lo posibilitan. En primer lugar se encuentra el Protocolo Simple de Acceso a Objetos, SOAP. Basado en XML, permite la interacción entre dispositivos y tiene capacidad para transmitir información compleja. Sirve para especificar el formato de los mensajes; compuestos por un sobre envelope que contiene, una cabecera header y un cuerpo body. Por otro lado se encuentra el lenguaje de Descripción de Servicios Web WSDL, que posibilita el acuerdo entre el cliente y servicio web en lo referente al transporte del mensaje y su contenido. Especifica la sintaxis y los mecanismos de intercambio de mensajes. Existen otras tecnologías complementarias a SOAP que permiten optimizar el rendimiento de los servicios web, agilizando el envío de mensajes y los recursos que se transmiten en esos mensajes. NuSOAP [10] es una biblioteca de clases escritas en PHP que permiten crear y consumir servicios WEB a los desarrolladores que utilizan SOAP con WSDL, con el fin de crear dichos servicios Web y utilizarlos. Para implementar el cliente del Servicio Web en la aplicación utilizaremos la última versión de nuSOAP disponible en SourceForge [13], que permite el uso de SOAP 1.1 y corrige defectos de las versiones anteriores. La versión SOAP para php la incluiremos dentro del componente de tareasfco, en el directorio libs/nusoap.php. Con el fin de probar el correcto funcionamiento del cliente Web, implementaremos un servicio Web con .NET que montaremos sobre IIS.
20 5.4 TCPDF. Se trata de una biblioteca [14] de funciones de Código Abierto, para ser utilizada con PHP que permite la generación dinámica de documentos PDF y donde su potencialidad se encuentra en la facilidad de uso en la generación de documentos y en la posibilidad de interpretar HTML convirtiéndolo a contenido formateado en el documento. La librería se puede ser descargada de su página oficial [15]. En ella se encuentra además de una descripción detallada del cometido de cada una de las funciones que contiene, una amplia gama de ejemplos en los que se nos muestra, cómo aprovechar la potencialidad de la herramienta. Las bibliotecas que permiten la generación de los documentos en formato PDF se encuentran partiendo en el directorio raíz de la aplicación en libraries/tcpdf_5_9_063/config/lang/spa.php y libraries/tcpdf_5_9_063/tcpdf.php.
21 6. DESARROLLO DEL COMPONENTE. En este capítulo se describe tanto la estructura física, es decir, su distribución en el sistema de archivos de la aplicación, como la lógica con el contenido y las funcionalidades implementadas en cada uno de los diferentes ficheros que comprende el componente. Por último se detalla la estructura y contenido del fichero de instalación del componente. 6.1 Estructura del Componente. El componente principal de la aplicación se denomina tareasfco y comprende el siguiente conjunto de directorios y ficheros: com_tareasfco index.html tareasfco.php controller.php controllerajax.php models index.html alumno.php mntoalumnos.php notas.php tareasfco.php tables tareasfco.php views alumno index.html view.html.php view.raw.php tmpl index.html default.php notas index.html view.html.php tmpl index.html default.php mntoalumnos index.html view.html.php tmpl index.html default.php listausuarios.php tareasfco index.html view.html.php
22 tmpl index.html default.php tareas.php chgpassword.php tareasfcoagregar index.html view.html.php tmpl index.html default.php tareasfcoeditar index.html view.html.php tmpl index.html default.php media Ficheros de imágenes admin index.html install.tareasfco.php uninstall.tareasfco.php Destacar la existencia en todos los directorios del fichero index.html con el siguiente contenido: <html><body bgcolor="#FFFFFF"></body></html> Su finalidad es la de evitar que cuando se referencie el directorio, éste pueda mostrar su contenido. Con ello, se trata de mejorar la seguridad del sistema. 6.2 Descripción de Funciones. El siguiente módulo es el de tareasfco.php. Contiene el punto de entrada al componente y en él se selecciona cual es el controlador del componente que se encarga de llevar a cabo las tareas que se especifican. Si no se especifica ninguno, por defecto, será controller.php, en caso de que el parámetro controller que se obtiene de la query string sea AJAX, el controlador que se cargará será controllerajax.php. $clase=JRequest::getVar('controller'); switch($clase){ case 'ajax': require_once (JPATH_COMPONENT.DS.'controllerAjax.php'); $controller = new tareasfcoControllerAjax(); break; default: require_once (JPATH_COMPONENT.DS.'controller.php'); $controller = new tareasfcoController(); break;
23 } $controller->execute( JRequest::getCmd('task')); $controller->redirect(); Además de la entrada del componente, en este directorio se encuentran también los controladores, que se encargan de realizar las tareas que le son requeridas desde la vista. En el caso de controller.php se ejecutarán las siguientes tareas: 6.2.1 Controladores. taskLeerFicheroUsuarios: Se encarga de solicitar al modelo mntoalumnos una relación con los alumnos en función del contenido del fichero especificado y entregar esa lista de alumnos al modelo para poder gestionarla taskupdPassword : Solicita del mo delo mntoalumnos la actualización del password, pasándole como parámetros el usuario joomla y la contraseña especificada para el alumno. Tras ello, se redirecciona la salida a la vista correspondiente en función de si el password modificado es el del administrador o el del usuario. taskaddUsuario : Se comprueban los parámetros con los datos del usuario y a continuación se carga el modelo mntoalumnos y se ejecuta el método del mismo que permite realizar el alta de usuario. taskdelUsuario : Se comprueba el dni que identifica el usuario a suprimir y a continuación se obtiene el modelo mntalumnos que implementa la función de suprimir el alumno. Una vez suprimido se redirecciona la salida a la tarea a la vista de mantenimiento de alumnos de nuestro componente. taskBorrarRegistroTareas : Se carga el modelo de tareasfco donde se implementa las funcionalidades de acceso a datos y se requiere de la función de borrarRegistrodetareas taskAlmacenarRegistroTareas: Esta tarea se encarga de grabar los datos introdu cidos en el formulario de tareas; tanto una nueva tarea y como las modificaciones realizadas a una existente. El controlador de AJAX implementa las funciones requeridas por las vistas y que entrega de manera asíncrona al agente del cliente que le ha solicitado la petición. La tarea no retorna ningún estado devuelve un objeto con contenido, que será utilizado por el agente del cliente, para mostrar el resultado de la acción realizada. taskgetUsuario : Haciendo uso del modelo mntoalumnos , se llama a la fun ción del mismo getusuario que devuelve los datos del usuario si este se encuentra registrado o en blanco si no existiera este. taskRegistroUsuario : Esta tarea obtiene de la llamada, los datos de un alumno que son pasados a través de la query string, junto con el tipo de operación a
24 realizar (1 - >alta, 0 - >baja) y carga el modelo mntoalumnos que implementa la operación a realizar con una llamada a altadeusuario o bajadeusuario en función de la acción, retornando al agente del cliente, un objeto que incorpora una referencia a la función Javascript que implementa la petición de cambio de estado del objeto. taskComentarios : Tarea que hace uso de la función listadecomentarios implementada en el modelo notas y que devuelve al cliente una relación de comentarios introducidos por los alumnos en la encuesta que se les plantea . taskServicioPoliformat : Tarea que es solicitada desde la vista y que se encarga de implementar un cliente web que realiza una petición de servicio a un servidor web externo, con el que se establece una conexión y haciendo uso del servicio montado en el servidor de la Universidad ‘Poliformat’, se le envía a la tarea creada a través del servicio, el alumno y la nota obtenida en el cuestionario. En el caso de que la nota se haya podido entregar al servicio de manera correcta, se marcará en el registro del alumno dentro de la tabla correspondiente a la tarea realizada, como publicada, retornando al cliente el mensaje de true, como indicador de que la operación se ha realizado bien. En caso de que el envío no se haya podido realizar, se devuelve false al usuario como indicador de que el cliente no ha podido enviar la nota junto con el error que lo motivó. Tras la descripción del funcionamiento básico de los controladores, pasamos a describir la funcionalidad implementada en los modelos. 6.2.2 Modelos. El modelo alumno.php solamente incorpora una función, esta es la de getRegistrosTareasAlumno, que permite obtener una relación con las tareas disponibles para el alumno, y que será solicitada directamente desde la vista alumno y será mostrada por defecto en el agente del cliente una vez que el alumno se registre. El modelo mntoalumnosincorpora una serie de funciones interaccionan tanto con los controladores como con la vista e implementan las peticiones de estos sobre los procesos de creación y mantenimiento de alumnos/usuarios del sistema. getListaAlumnos : Devuelve una relación de los alumnos registrados en el sistema para su gestión en el lado del cliente, con la posibilidad de que cada uno pueda ser suprimido del sistema y/o restaurar su contraseña, volviéndolo a registrar. getFicheroDatos : Haciendo uso del fichero pasado al servidor desde el cliente en el proceso de importación de alumnos, se analiza el contenido del fichero, descartando líneas y caracteres no útiles, se genera una tabla con todos los alumnos contenidos en el fichero, separando los apellidos, el nombre y el DNI que será el identificador del usuario para Joomla, y se
25 entrega una lista al cliente, para que pueda realizar el alta de los mismos en el sistema. getUsuario : Dado un usuario/alumno identificado por su DNI , se comprueba su existencia en el sistema y se retorna el mismo si existe y nulo en caso de que no exista. altaUsuario : Cogiendo los valores de DNI , apellidos y no mbre, pasados como parámetros a la función, se registra el alumno en el sistema, dándolo de alta en la tabla de usuarios del sistema con el DNI como identificador de usuario y password. Se inserta además en las tablas necesarias del sistema que permitan al usuario hacer uso del entorno y por último se comprueba su existencia en la tabla alumnosfco, donde se almacena en el caso que no lo estuviera. Dado que el alta del usuario supone la inserción en diferentes tablas de la base de datos consideraremos el conjunto de operaciones como una transacción única para evitar que en el caso de que se produzca un error en la grabación de una de las tablas estas queden en modo inconsistente. updPassword : Permite establecer a un usuario pasado como parámetro el valor de la contraseña introducido en el formulario habilitado para el cambio de contraseña. Este cambio puede ser efectuado tanto por el administrador como por el cliente. bajaUsuario : A diferencia del alta del usuario, para efectuar la baja, solamente es necesario el identificador del usuario, que se corresponde con el dni. La supresión del alumno/usuario supone la baja en diferentes tablas de la BD como: #__user, #__core_acl_aro, #__core_acl_groups_aro_map y #__alumnofco, al igual que ocurre en el alta, éste conjunto de operaciones sobre la base de datos, se realizan integradas en una transacción. El modelo notas, implementa la funcionalidad necesaria para obtener de la base de datos los resultados de los test realizados por los alumnos. genTotales : Función que dado el tipo de test y el identificador de tarea asignado al mismo, se obtiene una relación de las notas medias obtenidas para cada pregunta del cuestionario. El profesor podrá analizar la dificultad de las preguntas en función de los resultados medios obtenidos por los alumnos. Si el resumen se corresponde con el de representación de datos, junto a la relación mostrada, se acompaña un enlace que conduce a la muestra de los resultados de la encuesta de satisfacción que realiza el alumno. listaEncuest a : Función que accede a los datos de una encuesta realizada por los alumnos y muestra el resultado estadístico de la misma. Incorporando un objeto adicional que permite mostrar los comentarios realizados por los alumnos durante la evaluación. listaCome ntarios : Con esta función se obtiene la lista de los comentarios efectuados por los alumnos en la encuesta correspondiente a una tarea. Esta relación se solicita directamente desde el agente de usuario como una petición
32 function gradeQuestion(name,valuations){ var grandTotal=0; for (i=0;i<valuations;i++){ var aux=name+i; grandTotal=grandTotal + grade(aux,i); } grandTotal = grandTotal.toFixed(2); alert( 'nota Eval : ' + grandTotal ); jQuery('#Q1Note').text(grandTotal); jQuery('#notaEval').attr('value',grandTotal); jQuery('#respuesta').attr('value', JSON.stringify(solutionQ1) ); jQuery('#solucion').attr('value', JSON.stringify(solutionQ1Student) ); jQuery('#comentario').attr('value', JSON.stringify(commentsQ1) ); document.formEvaluate.submit(); var divQ = parent.document.getElementById("divQ3"); divQ.innerHTML = '<p style="color:red;">Q3. Latch NAND /S /R =' + grandTotal + '</p>'; cerrarVentana(); } Además de estos errores en el código de las vistas, se han detectado otros errores en las librerías de funciones Javascript que acompañan al Joomla utilizadas para las ventanas modal que se utilizan en la visualización de los test. El primero se localiza en la librería modal.js ubicada en el directorio media/system/js y el error estriba en la definición de los parámetros ancho y alto de la ventana que se carga con la función SqueezeBox, definida en esta librería. El código que a continuación se detalla es el resultante de corregir la función. reposition: function(sizes) { sizes = sizes || window.getSize(); this.overlay.setStyles({ //'left': sizes.scroll.x, 'top': sizes.scroll.y, // FROM: // width: sizes.size.x, // height: sizes.size.y //TO: width: sizes.x, height: sizes.y }); Por otro lado, existe otro error detectado en la visualización de las ventanas modal cuando se realiza su carga. Este error es exclusivo de los navegadores de Microsoft, no así en el resto de navegadores chrome, safari, firefox, etc. En el momento de la carga de las ventanas modal aparece el mensaje; error en la línea 31 en el carácter 1.
33 Este error se debe al intento de asignación de un atributo de estilo que no ha sido definido y dada la incompatibilidad de IExplorer en la ejecución del código JavaScript de la librería, se bloquea la ejecución normal. Aplicando una pequeña corrección al código de la librería se resuelve y la ejecución posterior de JavaScript sobre la ventana modal no sufre ninguna alteración. El código al que se hace referencia y que se encuentra al inicio de la página 31 a corregir es: this.sytle[property]=value; y su versión corregida es: try {this.style[property] = value;}catch(e){} Una vez sustituido el código se nos resolverá los problemas de ejecución en las diferentes versiones del Agente de Usuario de Microsoft Internet Explorer. Se ha incorporado a los módulos la identificación de la tarea por la que ha accedido el alumno, esto permite que puedan existir grupos de alumnos diferentes que hayan realizado un mismo test, diferenciándolos por la tarea y periodo asignado de evaluación. Cuando el alumno ha contestado la encuesta o ha realizado el test, además de mostrarle la nota obtenida, se impedirá que el test pueda ser accedido de nuevo. Al mismo tiempo se controlan los periodos de realización de las tareas y de la posibilidad de visualización de los resultados. Por otra parte se permite que el propio alumno pueda generar, visualizar y descargar su propio informe de notas, una vez abierto el periodo de publicación de las mismas. El directorio PDFAlumnos, se crea de manera dinámica a medida que se van generando los informes de notas en formato PDF de los alumnos. Se crea en la raíz del sitio web y se distribuye en forma de un nodo por alumno/usuario dentro del cual se encontraran los informes de notas de los diferentes test realizado por el alumno en cuestión. El nombre del documento se conforma con el identificador de tipo de tarea, el DNI y el identificador de la tarea. Dentro de las plantillas de los test, se ha introducido una matriz de comentarios para cada test diferente de tal forma que cuando se graba el registro de notas de dicho alumno, también se graban los comentarios a cada una de las cuestiones que se le plantean. Esto permitirá su posterior visualización en el informe, en el caso de que el alumno haya errado la pregunta. 6.4 Módulo de Instalación del Componente. Una vez desarrollado el componente principal y los cambios efectuados a cada uno de los componentes de cuestionario, se procede a generar el instalable del componente para poder ser agregado como extensión desde el back-end de Joomla. Se crean para ello el fichero XML que detalla el procedimiento de instalación del componente y se crea un fichero
34 comprimido que contendrá el conjunto de directorios y ficheros que comprenden el componente. El fichero de especificación de la instalación del componente principal es tareasfco.xml y su contenido: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE install SYSTEM "http://dev.joomla.org/xml/1.5/component-install.dtd"> <!-- http://docs.joomla.org/Components:xml_installfile --> <install type="component" version="1.5.0" method="upgrade"> <name>TareasFCO</name> <!-- Los siguientes elementos son opcionales y no tienen restricción de formato --> <creationDate>Julio 2011</creationDate> <author>Vicente Reolid</author> <authorEmail>vireo[email protected]v.es</authorEmail> <authorUrl>http://www.upv.es</authorUrl> <copyright>Derechos reservados para el autor</copyright> <license>GPL</license> <!-- La cadena con la versión se graba en la tabla de componentes --> <version>version 1.0</version> <!-- La descripción es opcional y por defecto es el contenido de la etiqueta name --> <description>Tareas para Evaluación de Alumnos</description> <!-- Sección de instalación de tablas --> <install type="component"> <sql> <file driver="mysql" charset="utf8">install.tareasfco.sql</file> </sql> </install> <!-- Sección de desinstalación de tablas de la BD --> <uninstall> <sql> <file driver="mysql" charset="utf8">uninstall.tareasfco.sql</file> </sql> </uninstall> <files> <filename component="com_tareasfco">tareasfco.php</filename> <filename>controller.php</filename> <filename>controllerajax.php</filename> <filename>index.html</filename> <filename>tareasfco.xml</filename> <folder>lib</folder> <folder>media</folder> <folder>models</folder> <folder>tables</folder> <folder>views</folder> </files> <administration> <menu>Tareas FCO</menu>
35 <files folder="admin"> <filename>index.html</filename> <filename>install.tareasfco.sql</filename> <filename>uninstall.tareasfco.sql</filename> </files> </administration> </install> Con el proceso de instalación se registrará el componente en el sistema, creando una entrada en el menú de componentes y que posibilitará ser referenciado. En el mismo proceso se crearán las tablas definidas en install.tareasfco.sql, necesarias para el funcionamiento del componente. De igual manera que se ha desarrollado el fichero de instalación del componente que implementa las tareas, se ha generado un paquete de instalación para cada uno de los cuestionarios de evaluación existentes. Uno para el componente de evaluación de Representación de Datos y otro para el de Biestables. Aunque no necesitan gestión en desde el back-end de Joomla, su instalación desde Joomla permite la creación automática de las tablas MySQL que necesitan para almacenar el resultado de las respuestas de los alumnos. Tras la instalación del componente de tareas, se instalaran los componentes correspondientes a cada uno de los cuestionarios planteados. En el proceso de instalación se crearán las tablas necesarias para almacenar los resultados. 6.4 Creación de un Servicio Web. Dado que hemos de implementar un cliente de Web que transmita las notas obtenidas por los alumnos en los diferentes test al servidor de la plataforma Poliformat utilizada por la Universidad, y con la finalidad de comprobar la correcta implementación del cliente, se ha desarrollado un Servicio Web que simula el servicio que suministra poliformat. Esto nos permitirá realizar pruebas de consumo del cliente y de utilización del servicio, sin conocer ni atacar al servicio de Poliformat. Una vez comprobado su funcionamiento solamente será necesario, cambiar la dirección web que nos da el servicio, así como el nombre del servicio en cuestión. En primer lugar se instala el conector .NET de MySQL para poder acceder desde los servicios creados a la base de datos. En Microsoft Visual Studio se crea un nuevo proyecto Web, utilizando para ello, la plantilla de Aplicación de Servicio Web de ASP [14]. Dentro del proyecto web se crean los servicios como funciones de C# tal y como se especifica en la plantilla que crea Visual Estudio, y se agrega la conexión con la Base de Datos de MySQL utilizando los parámetros de conexión necesarios, para crear la cadena de conexión a la BD. Para que los servicios Web que creemos en .NET puedan funcionar, ha de estar instalado IIS, de no estarlo, habrá que agregarlo desde Programas, en el apartado de Activar o desactivar características de Windows. Una vez instalado se accede al Administrador de IIS
36 desde las Herramientas Administrativas del Panel de Control, para poder iniciar el servicio y establecer su configuración. Hay dos posibilidades para montar los servicios sobre el directorio público de IIS: La primera manera es agregando la aplicación en el administrador de IIS. Para ello, se le da un alias sobre el punto de montaje del directorio público raíz de IIS y se indica el directorio donde se encuentra el servicio de nuestro proyecto desarrollado previamente. Figura 2. Generar Servicios con .NET. La otra posibilidad consiste en crear el directorio y desde nuestro proyecto de Visual Studio haciendo uso de las opciones del menú Generar, generamos primero el servicio y posteriormente lo publicamos indicando el directorio de publicación que hemos creado previamente en IIS para alojar nuestro servicio. Bastará dentro del Administrador de IIS situarnos sobre la carpeta creada previamente y que alojará el servicio, y con el botón derecho del ratón nos aparecerán las diferentes acciones que podemos realizar sobre la misma. Entre las opciones disponibles seleccionamos la de convertir en aplicación. Con el fin de que pueda coexistir el IIS con el Servidor Web de Apache montado para la aplicación, es preciso cambiar el puerto desde el que se atienden las peticiones HTTP en uno de los dos servidores, en nuestro caso, cambiaremos el puerto por el que atenderá IIS. Para establecer el puerto en IIS, es necesario abrir el Administrador de IIS, seleccionar la opción de Examinar que se encuentra en el apartado de Acciones y modificar el puerto de escucha del protocolo HTTP al puerto 81. Una vez creado y publicado el servicio, podemos comprobar su funcionamiento, para ello indicamos sobre el navegador la dirección http://localhost:81/servicio/Service1.asmx donde nos debe aparecer una relación de los servicios implementados en el Servicio y que se encuentran disponibles.
37 Figura 3. Servicios Montados en IIS. Si en la petición web le añadimos el parámetro ?WSDL, nos mostrará los diferentes parámetros de entrada y salida que compone cada servicio y que necesitaremos para enlazar desde el cliente que ha de consumirlos. Figura 4. Detalles de los Servicios. Entre los diferentes servicios de ejemplo implementados se encuentran: HelloWorld : No tiene parámetros. La invocación del servicio devuelve un objeto XML con un elemento de tipo string que contiene el resultado de retorno de la función. Sumar : Dados dos parame tros Valor1 y Valor2 los interpreta como numéricos de tipo doble y retorna un objeto XML con el resultado de la suma. actualizarNota : Dados tres parámetros; tarea, dni y nota se actualiza la nota de un alumno en una determinada tarea. Retornando un objeto con un elemento booleano que indicará si la transacción se ha realizado correctamente o nó.
38 getNota : Utilizando dos parametros de entrada que identifican la tarea y el DNI del alumno, retorna la nota obtenida por dicho alumno o un elemento vacío en caso de que no exista nota para el alumno y la tarea especificada. grabaNota : Utiliza tres parámetros para almacenar en una tabla la nota obtenida por el alumno en una determinada tarea. Es el servicio que utilizaremos para comprobar la correcta implementación de nuestro cliente WEB, para ello se utilizan tres parámetros: tarea, que se corresponde con el identificador de tarea de Poliformat como destino de la nota, DNI que identifica al alumno que ha realizado la tarea y nota que contiene la nota obtenida por el alumno que será enviada a Poliformat. Una vez introducidos los parámetros se realiza la grabación en la tabla de Notas para comprobar que esta se realiza correctamente. <?xml version="1.0" encoding="utf-8"?> <grabaNotaResponse xmlns="http://dsic.upv.es/"> <grabaNotaResult>boolean</grabaNotaResult> </grabaNotaResponse> El servicio retorna un objeto que contiene el resultado de la ejecución del servicio indicando en el elemento grabaNotaResult si ha sido correcta true o incorrecta false. A continuación se describe el código que implementa el servicio. [WebMethod] public bool grabaNota(String tarea, String dni, double nota){ if (tarea.Equals("") || dni.Equals("") || nota < 0 || nota > 10) return false; string path = "server=localhost;User Id=root;database=webfco"; try { MySqlConnection con = new MySqlConnection(path); con.Open(); MySqlCommand cm = new MySqlCommand("INSERT INTO NOTAS ( tarea, dni, nota ) VALUES ( '" + tarea + "', '" + dni + "','" + nota + "');"); cm.Connection = con; cm.ExecuteNonQuery(); con.Close(); } catch (Exception) { return false; } return true; }
39 7. INSTALACION BÁSICA DE JOOMLA. El desarrollo de los servicios relacionados se ha realizado tomando como base Joomla como motor de portales dinámicos en su versión 1.5, montado sobre un sistema XAMPP (Servidor Apache/MySQL/PhP/Python) y se han implementado como un complemento. Partiendo de la base ya realizada de dos componentes operativos desde el lado del cliente front-end, que implementan los test de los temas 2, 3 y 4 de la asignatura de Fundamentos de Computadores, se han integrado en el entorno del nuevo complemento y se han completado incorporándoles nuevas funcionalidades como: identificador de tarea, comentarios a respuestas incorrectas, fechas de gestión en uno de los controles (inicio, cierre y publicación) y la generación de informes de resultados de la tarea realizada. Junto a la integración de nuevas funcionalidades y depuración de los componentes que implementan los cuestionarios, se ha desarrollado un nuevo componente. Dicho componente será el eje central sobre el que están integrados tanto los componentes que evalúan los controles ya existentes, como los nuevos que se puedan desarrollar en el futuro y completen el sistema de evaluación. Desde este componente se gestiona tanto la generación y especificación de tareas seleccionadas por el profesor y que estarán disponibles para los alumnos, como la entrada centralizada del alumno, para realizar todos los controles de evaluación que tenga disponible en la lista de tareas abiertas y que le hayan sido propuestos durante el periodo de realización de la asignatura. Así mismo, se le ha añadido la posibilidad de gestionar los alumnos de la asignatura, para que estos puedan realizar los controles. Posibilitando dar de alta, suprimir e importar en bloque los mismos. Para facilitar la administración al profesor de la asignatura, encargado de generar las tareas y acceder a los resultados de las mismas, se le facilita la posibilidad de establecer su contraseña, sin necesidad de acceder al backend de Joomla. Así mismo, dado que tanto para administrar las tareas como para realizar el test se ha de estar registrado, se ha implementado una nueva funcionalidad, la de modificación de contraseña que podrán realizar ambos, alumno y profesor, lo que permite mejorar la confidencialidad en la conexión al sistema. 7.1 Instalación del Entorno. Aunque en la actualidad Joomla tiene disponible la versión 1.6 con cambios importantes sobre la versión 1.5. Se ha considerado conveniente realizar la implementación en la versión 1.5, al tratarse de una versión estable y muy extendida de este CMS ya que a pesar de encontrarese operativa la versión 1.6 desde principios de año, esta supone grandes cambios con respecto a la anterior y no podemos considerar esta versión como definitiva puesto que está prevista su sustitución por la versión 1.7 en fechas próximaspara mediados de Julio del mismo año, lo que le da a la versión 1.6 una gran inestabilidad puesto que dejará de tener servicio en breve.
40 Una vez instalado el CMS la instalación del sistema de control de evaluación de Fundamentos de Computadores puede realizarse de dos maneras diferentes: 1. Sustituir el arbol de directorios del CMS instalado por el que se acompaña en el proyecto e incluir la base de datos con el contenido del backup de mysql que se acompaña junto al proyecto. Lo que dejará una instalación límpia. 2. Instalar el CMS de Joomla en su versión 1.5 y posteriormente haciendo uso del backend de la instalación, instalar los componentes que componen la Aplicación y configurar el entorno. El primer método es quizás el método más sencillo pues no es necesaria una instalación propia de joomla, solamente es necesario tener instalado el XAMPP y acceso a MySQL. Una vez copiado el arbol de directorios e importada la base de datos en MySQL probando la conexión con http://host//webfco estará disponible el Sistema de Control de FCO. En el caso de utilizar el segundo método de instalación, es necesario tener algunos conocimientos de Joomla, para poder instalar los productos ( módulos y complementos ) así como crear las entradas de menú correspondientes y asignar acciones a los módulos. A continuación se describe los pasos a seguir en el caso de que se opte por el segundo método. 7.2 Instalación y Puesta en Marcha de la Aplicación. En este apartado se describen las diferentes tareas que se han de realizar para instalar el componente de tareas desde el back-end de Joomla hasta que este se encuentre disponible para poder ser utilizado desde el front-end. 7.2.1 Instalación del Componente. Para realizar la instalación del componente com_tareasfco es necesario conectar como administrador en el back-end deJoomla y a traves del Gestor de Extensiones se realiza la instalación del componente creado. [15]. Figura 5. Instalación de Extensiones Joomla. Una vez instalado el componente nos aparecerá una nueva entrada en el menu de de componentes disponibles en el sistema, con el nombre dado en el fichero de instalación.
41 Figura 6. Menú del Componente ya instalado. Junto con la instalación del componente se crean las tablas necesarias para su funcionamiento. Las tablas de notas correspondientes a cada cuestionario, se instalan cuando se instale el componente que implementa el test en cuestión. Estos componentes son com_flipflop que implementa los test referentes a los temas de biestables y com_encuesta que contiene tanto el test relativo a la representación de datos como la encuesta de aceptación y valoración de la asignatura. 7.2.2 Creación de los menús de inicio y desconexión. Una vez disponible el componente, creamos dos entradas de menú. [16]. La primera contendrá un enlace a las tareas disponibles para el alumno y que será, la página de entrada una vez el usuario se ha registrado. La segunda será el enlace a la entrada genérica del componente, que será la que estará visible siempre que no se trate de un usuario registrado. Figura 7. Gestor de Entradas del menú. En primer lugar, editamos la entrada inicio para ello dentro de la edición de la entrada inicio del menú, elegiremos la opción cambiar tipo y ahí seleccionaremos la entrada de web FCO donde seleccionamos la entrada de alumno. Esto nos crea el enlace index.php?option=com_tareasfco&view=alumno. Esta es la entrada por defecto al componente cuando el usuario se valida. En caso de que el usuario sea el administrador del
48
49 8. FUNCIONAMIENTO DE LA APLICACIÓN. Con el fin de facilitar el uso de la aplicación desarrollada, a continuación se describe de manera detallada el funcionamiento de la misma, tanto desde la perspectiva del profesor como gestor o administrador de la misma, como desde el alumno como usuario de la aplicación, detallando además aquellas funcionalidades comunes a ambos. 8.1 Punto de Entrada al Aplicativo. Una vez configurado el sistema y situados sobre el agente de usuario deseado; firefox, explorer, chrome, etc. Nos conectaremos a nuestro sistema usando la dirección donde se encuentre instalada la aplicación, p.ej: http://host/webfco el cual nos cargará por defecto la página: Figura 14. Punto de entrada a la aplicación. Donde en función del tipo de usuario (profesor/administrador y alumno) que se conecte aparecerá posteriormente un conjunto u otro diferente de funcionalidades disponibles. 8.2 Conexión como Profesor/Administrador. El responsable de creación de las tareas se ha de validar como administrador. Una vez registrado como administrador, nos aparecerán dos opciones que se corresponden con dos enlaces. Cada uno de ellos representa una funcionalidad distinta para el administrador.
50 Figura 15. Menú de conexión del Administrador/Profesor. A través del Mantenimiento de Tareas y notas, el administrador podrá definir nuevas tareas, mantener las existentes y o suprimirlas. Así mismo podrá tener acceso al tanto estadístico de las notas, como a la relación de notas de cada alumno en la tarea especificada, permitiendo la generación del documento PDF con las notas del alumno, poner el mismo a disposición del alumno y publicar las notas de la tarea en poliformat haciendo uso de un servicio web habilitado a tal efecto. Con el mantenimiento de usuarios, se le facilita al administrador la tarea de la creación de cuentas para los alumnos, de tal forma que quede integrada en Joomla. Esto facilita la confidencialidad en la ejecución de los test por parte del alumno. 8.2.1 Gestión de Tareas. Las tareas son la base de trabajo para los alumnos, para que ellos puedan realizar cualquier cuestionario, este ha de haber sido previamente creado como tarea por parte del profesor/administrador a través del mantenimiento de tareas y habérsele asignado una fecha de inicio de tarea. 8.2.1.1 Mantenimiento de tareas. Una vez conectados como administrador y seleccionada la opción del mantenimiento de tareas nos aparecerá una relación con las tareas que tenemos dadas de alta en el sistema, junto con la opción de Agregar, editar una tarea existente y/o suprimir una tarea.
51 Figura 16. Lista y mantenimiento de Tareas definidas. Para dar de alta una tarea pulsaremos sobre agregar tarea y nos aparecerá una nueva página donde se podrán introducir los datos referentes a la nueva tarea estos son: Figura 17. Formulario de alta de tareas.. Tipo de Test: De un desplegable con los diferentes test existentes, donde cada test se corresponderá con un componente que lo implementa y que servirá de referencia para la extracción de resultados y la edición y publicación de notas. En la actualidad se incorporan dos tests diferentes; uno para la evaluación de conocimientos sobre la representación de datos y otro para la evaluación de los biestables. Figura 18. Tipos de Test. Tarea Poliformat: Puesto que la aplicación no está integrada dentro de Poliformat, sistema de evaluación y seguimiento del alumnado, para la publicación de las notas obtenidas en cada tarea por los alumnos se hace necesario un enlace con el sistema Poliformat. En este atributo se almacenará el identificador de tarea asignado al crear la misma en Poliformat. Su introducción no es obligatoria puesto que no es obligatoria la necesidad de publicar las notas, si lo es en el caso de que se deseara utilizar el servicio de publicación de notas.
52 Descripción: Contiene el texto descriptivo de la tarea, es e l nombre que aparecerá en la lista de tareas disponibles para el alumnado. Fecha Inicio: Contendrá el valor de inicio de la tarea, la tarea solamente aparecerá como disponible en la lista de tareas para el usuario, cuando la fecha del sistema igual o superior a la fecha de inicio de la tarea. Esto permite que se tenga una tarea definida con anterioridad a la realización de la misma y no sea necesario activarla en el momento en que el usuario la vaya a realizar. Fecha Cierre: Ultimo día hasta el que se tiene la posibilidad de realizar el test. Una vez sobrepasada la fecha de cierre, la opción de realizar el examen en la tarea correspondiente no estará disponible para el alumno. Fecha Publicación: Para evitar el uso indebido de las soluciones por parte de los alumnos, no se facilita la publicación de los resultados hasta que no se haya completado la fecha de publicación de la tarea, que en todo caso ha de ser superior o igual a la fecha de cierre de la misma. Una vez introducidos los datos que identifican a una tarea, pulsando sobre agregar tarea, se dará de alta la misma incorporándose a la relación de tareas y volvemos a la lista de tareas donde ya nos aparecerá como disponible. En el formulario de introducción de tareas, para facilitar la introducción de fechas, se ha adjuntado un calendario junto a cada una de las entradas de fecha. Para ello, hemos de incluir el siguiente código en nuestras vistas, tanto de agregar tarea, como la de editar tarea existente. En el fichero de funcionalidades javascript de joomla disponible en ‘includes/js/joomla/ javascript.js’ se encuentra definida la función showCalendar. Para poder hacer uso de dicha función hemos de incluir la librería en la definición del documento donde la queremos incluir. $document= JFactory::getDocument(); $document-> addScript(JURI::base().'/includes/js/joomla.javascript.js'); Otra opción de referenciar el calendario es, utilzando la funcionalidad de joomla: JHTML::_('behavior.calendar'); Una vez incluido en la vista el código de la función que permite utilizar el calendario, en los campos del formulario, incorporaremos la imagen que permitirá seleccionar el formulario, indicándole en la función de javascript que se ejecutará en el cliente y encargada de mostrar el calendario. En los parámetros de la función del calendario se indicará el id del objeto de retorno donde se incluirá la fecha que se selecciona y el formato en el que será devuelta la fecha. <input id="fechaInicio" name="fechaInicio" type="text" /> <img class="calendar" onclick="return showCalendar('fechaInicio', '%d/%m/%Y');" src="templates/system/images/calendar.png" alt="calendar" />
53 Figura 19. Selección de fecha sobre calendario. 8.2.1.2 Modificación de Tareas. Para realizar la modificación de una determinada tarea, en la lista de tareas que aparecen hemos de seleccionar una pulsando sobre tarea deseada en la columna de descripción que en realidad es un enlace al mantenimiento de la tarea. Una vez seleccionada nos aparece la tarea con todos sus valores y la posibilidad de realizar la edición de la misma, asignando código de tarea de Poliformat, cambiando las diferentes fechas, etc. Tras realizar los cambios pertinentes en el formulario de edición, pulsaremos en Modificar datos de la tarea y estos se registraran en la BD regresando de nuevo al Mantenimiento de Tareas. Figura 20. Edición de una tarea. 8.2.1.3 Supresión de Tareas Para suprimir una determinada tarea de la lista de tareas bastará con pulsar en la columna de suprimir, sobre el icono correspondiente a la tarea que deseamos borrar, tras lo cual la tarea desaparecerá de la lista. La supresión de la tarea no implica la supresión de los datos de los test que identifican la tarea. Estos quedan en sus correspondientes tablas como históricos de evaluaciones. 8.2.1.4 Visualización de resultados de una tarea. En la lista de tareas existentes se encuentra la columna de Resultados. En esta columna se puede acceder a los resultados medios obtenidos por los alumnos en cada una de las diferentes tareas creadas. Esta información permite al profesor realizar una estimación de
54 la dificultad de las preguntas y/o de su nivel de comprensión por parte del alumnado. Así mismo, permite obtener una valoración media del test. Cada tarea se corresponde con un tipo de test y dado que este tiene un conjunto de preguntas y una valoración diferente, se genera un listado específico para cada tarea. Figura 21. Estadísticos de los diferentes cuestionarios. En el apartado de visualización del informe de resultados del test de Representación de Datos, los alumnos han tenido la posibilidad de responder a una encuesta de valoración de la docencia en la asignatura de fundamentos de los computadores. Por ello, en los resultados del test aparece un enlace que permite conocer los Resultados de la Encuesta, tal y como aparece en la imagen superior. Una vez visualizados los resultados estadísticos de la encuesta con la valoración media del alumno y tras la visualización del número de horas semanales medio y el número de horas de estudio en caso de exámenes, aparece un botón con la opción de poder mostrar los comentarios realizados por los alumnos sobre la asignatura. Una pulsación del botón nos mostrará los comentarios de los alumnos y una nueva pulsación hará que se oculten los comentarios.
55 Figura 22. Comentarios de la Encuesta. 8.2.1.5 Evaluación de Resultados. Esta operación dentro del mantenimiento de tareas nos permite acceder al resultado individualizado obtenido por cada alumno en la tarea seleccionada. Junto a la nota del alumno aparece la posibilidad de generar un documento PDF en el que se extrae un informe con el resultado del test realizado, en el que aparecen tanto las respuestas correctas como las incorrectas con su corrección pertinente y un comentario sobre la misma. Junto a las respuestas aparece la nota por apartados y la nota general obtenida por el alumno en el test. Dicho informe puede ser generado desde aquí por el profesor como por el propio alumno desde la tarea donde realizó el test, una vez alcanzada la fecha de publicación. En la columna de la izquierda, junto a Generar PDF, seleccionamos todos aquellos alumnos de los cuales queremos generar las notas, pulsando sobre la cabecera seleccionaremos todos o ninguno alternativamente. Una vez determinados aquellos alumnos de los que deseamos generar el PDF pulsaremos sobre . Si se genera desde aquí cuando el alumno accede directamente a la página desde donde realizó el test. El documento estará disponible para su descarga. Figura 23. Listado de Resultados de un test.
56 La generación del PDF se realiza de manera asíncrona en el servidor por lo que el orden de respuesta del servidor es diferente para cada petición, el icono representa la operación en curso sobre el usuario cuyo documento se está generando, mientras que cuando aparece el icono se indica que el documento ya ha sido generado y está disponible para su visualización y/o descarga. De igual forma que se genera el informe del test de cada alumno, el profesor tiene la posibilidad de publicar las notas del alumno en una tarea abierta a tal efecto en poliformat. Para poder publicar las notas primero se ha de introducir dentro del mantenimiento de tareas, en la tarea correspondiente, el identificador de la tarea de poliformat obtenido tras su creación. Tras pulsar el botón se accederá al servicio asíncrono de publicación de notas, donde la aplicación se conecta al servicio web de poliformat habilitado a tal efecto y se le pasan los parámetros correspondientes a la tarea, el alumno y la nota. Durante el proceso de envío de la nota aparecerá el indicador de que el proceso se está realizando. Si ha finalizado de manera correcta aparecerá el icono o un mensaje de error en caso contrario. Al igual que en el servicio de publicación de PDF el servicio de publicación de notas se realiza pulsando el botón de Publicar Notas y se enviarán aquellas que se encuentren seleccionadas en el indicador de la derecha de la publicación de notas. El indicador para cada alumno se activará y desactivará pulsando sobre el mismo en la fila seleccionada y en caso de querer accionarlos todos, pulsaremos sobre el indicador disponible en la cabecera. Una vez la nota ha sido publicada, esta se marca en el test correspondiente al alumno, para que el envío solamente se realice una sola vez. Por ello cada vez que se muestra el listado de notas, solamente se encontrarán activo para su envío aquellas que no se hubieran enviado con anterioridad. No obstante, la selección personaliza sobre la celda de un determinado alumno nos permite el reenvío de una determinada nota. La funcionalidad del servicio de publicación de notas está implementada en la tarea del controlador AJAX denominado taskServicioPoliformat y que establecida así: require_once("lib/nusoap.php"); $wdsl="http://localhost:81/servicioweb/Service1.asmx?wsdl"; $client=new soapclient($wdsl, true); $param=array('tarea'=>$poliformat, 'dni'=>$dni, 'nota'=>$nota); $result= $client->call('grabaNota', $param); Donde: En primer lugar cargamos las bibliotecas correspondientes al consumo de servicios web disponibles para php. $wsdl Identifica al servidor y el servicio montado sobre el que se realizará el envío de las notas.
57 $client: Es el objeto con un enlace al servicio web del servidor. $param: Es un array con los parámetros y sus correspondientes valores que se enviarán al servidor. En la llamada call se efectúa el envío de los parámetros haciendo uso del método que atiende el servicio web configurado en el servidor. En todas las unidades de interacción, aparece un enlace que nos posibilita navegar a la página inicial de administración. Dicho enlace está implementado en el botón . 8.2.2 Gestión de Alumnos. Figura 24. Pantalla de Gestión de alumnos/usuarios. Para que el alumno pueda realizar el test correspondiente, este ha de validarse en el sistema. Y para que esta validación se pueda realizar el administrador ha de dar de alta con antelación al alumno en el sistema. El alta en el sistema puede realizarse de dos formas diferentes, utilizando un fichero que contenga un listado con los datos de los alumnos, o la introducción individualizada de los alumnos. Con posterioridad podremos acceder a la relación de alumnos dados de alta en el sistema, pudiendo suprimir aquellos que deseemos. 8.2.2.1 Importar Alumnos. Para la importación de alumnos, se parte de un fichero de texto, generado desde Poliformat, donde desde la página de la asignatura se puede generar el mismo, el cual contiene los apellidos y el nombre del alumno y su identificador.
64 Figura 41. Informe de notas de cuestionarios en formato PDF. 8.4 Cambio de Contraseña. Con el fin de mejorar el nivel de seguridad de la contraseña en el proceso de validación en el sistema, se ha implementado un formulario disponible tanto para el administrador (profesor) como para el usuario (alumno) para que puedan realizar la modificación de la misma. Figura 42. Formulario de Cambio de Contraseña. Para ello, hay un icono visible en la parte superior derecha disponible tras iniciar la sesión y que da acceso al formulario del cambio de contraseña. Para establecer la nueva contraseña es necesario introducir la misma dos veces, y ha de cumplir los siguientes requisitos; no debe exceder de quince caracteres ni ser inferior a cuatro. Una vez pulsado el botón de Aceptar nos modificará la contraseña y esta será válida para la siguiente conexión al sistema. Si queremos cancelar el proceso bastará con pulsar el botón de regresar.
65 9. CONCLUSIONES. El desarrollo de una aplicación Web exige el conocimiento de varias tecnologías (CMS, PHP, HTML, CSS, JAVASCRIPT, JSON, JQUERY, AJAX, MySQL, APACHE ) que forman un conjunto muy diverso en las que unas en el lado del cliente y otras en el lado del servidor y combinadas de manera adecuada convergen y permiten un amplio abanico de posibilidades en el desarrollo Web. El hecho de tener que utilizar tantas tecnologías nos permite adquirir un amplio conocimiento del espectro de las nuevas tecnologías y herramientas que se utilizan para el desarrollo de webs dinámicas, conocimiento que acompañado del desarrollo continuado, nos permite alcanzar un alto grado de competitividad en la implantación y uso de las nuevas tecnologías y servicios para la Web. La mejora constante en el conocimiento de la herramienta, el API de desarrollo y las diferentes tecnologías que se utilizan, mejoran las posibilidades de elaborar un buen producto y un aprovechamiento adecuado de las mismas. En este Proyecto Final de Carrera, se ha desarrollado un componente con las siguientes características: • Integración los diferentes cuestionarios de evaluación que comprende la asignatura de primero de Grado de “Fundamentos de Computadores”. • Mejora y ampliación de los cuestionarios existentes, agregándoles nuevas funcionalidades; la como la de facilitar al alumno la obtención de un informe del test realizado, que pueda servirle de comprensión y estudio de los temas que comprende el test de evaluación. • Facilitar al profesor las tareas tanto de registrar los alumnos inscritos en la asignatura como la de automatizar el proceso de publicación de las notas obtenidas por los alumnos. • Obtención de resultados estadísticos para cada uno de los test realizados, con el resultado global de cada cuestionario y la visualización de cada cuestionario realizado por un determinado alumno. En el cuestionario de valoración de la docencia, se permite al profesor la posibilidad de observar, en línea, los comentarios al sistema realizados por los alumnos. Tras la implementación de esta aplicación se ha conseguido, que de forma sencilla, el profesor pueda plantear tareas de control y seguimiento del alumnado, automatizando las tareas de alta de los alumnos en el sistema, evaluación, obtención de resultados y publicación automatizada de notas en el sistema poliformat. Así mismo, permite que los alumnos tengan a su disposición una herramienta de fácil uso, que les permite evaluar su progreso, teniendo acceso de forma automatizada a los resultados obtenidos, con las correcciones pertinentes a las respuestas incorrectas y que le servirán para mejorar sus conocimientos en la materia y como soporte adicional para utilizar en sus estudios. Con ello, logramos obtener los objetivos propuestos.
66
67 10. TRABAJO FUTURO. Para el futuro queda por desarrollar e integrar nuevos test que completen la evaluación de todos los temas de la asignatura. Dichos test se podrán ir integrando en el componente de tareas aquí desarrollado. En la actualidad en la tabla de tareas están definidas de manera estática (al haber solamente dos componentes existentes) los tipos de tarea, así como de manera interna se identifican las tablas de la base de datos. Para que esto sea más dinámico, sería conveniente la creación de un mantenimiento nuevo en el que se generalicen los tipos de tareas introduciendo el nombre del componente, la tabla de la base de datos que contiene los resultados del test, etc. Con la finalidad de tener más parametrizada y automatizada la gestión de tareas. Los comentarios referentes a cada una de las cuestiones se encuentran almacenados en el layout del cuestionario correspondiente, por lo que serán los mismos comentarios para todos los profesores que utilicen la herramienta. Para poder personalizar estos comentarios, sería conveniente que estos pudieran ser almacenados en la BD pudiendo ser redefinidos y readaptados para cada instalación de la aplicación. Evaluar la migración de la herramienta de la versión 1.5 de Joomla a la versión 1.7 lo que implicará el conocimiento del nuevo API de Joomla y el posible aprovechamiento y utilización de nuevas funcionalidades.
68
69 11. BIBLIOGRAFÍA. 1. Lemus Zúñiga Lenin G, Benlloch Dualde J. Vicente. Experiencias en el uso de las TICs para facilitar la impartición de la asignatura de grado Fundamentos de Computadores. Valencia 2. http://es.wikipedia.org/wiki/Joomla Definición y descripción de Joomla. 3. http://www.nosolocodigo.com/programacion-de-componentes-bajo-joomla-15 Tutorial en castellano de procedimiento de creación de componentes en Joomla. 4. http://api.joomla.org/. Referencia del API de Joomla 1.5. 5. http://es.wikipedia.org/wiki/JQuery Definición de JQuery. 6. http://www.javascriptya.com.ar/jquery/. Tutorial de Introducción al uso de JQuery. 7. http://jquery.com/ Página oficial de JQuery. 8. http://www.JSON.org Página oficial de JSON. 9.http://tecnologiasjava.blogspot.com/2010/02/json-javascript-object-notation.html. Cómo funciona JSON. 10. http://docs.joomla.org/How_to_use_the_JTable_class. Como utilizar las clases JTable en Joomla. 11. http://www.w3c.es/divulgacion/guiasbreves/ServiciosWeb Guía Breve de Servicios Web. 12. http://www.ferdychristant.com/blog/articles/DOMM-6J2QFF. Ejemplo de instalación y uso de un servicio web en PHP. 13. http://sourceforge.net/projects/nusoap/ Librería de NuSOAP.
70 14. http://msdn.microsoft.com/es-es/library/8wbhsy70%28v=vs.80%29.aspx#Y4560 Tutorial: Crear y usar un servicio Web ASP.NET en Visual Web Developer. 15. Juan Félix Mateos Barardo. Guía Práctica Joomla! 1.5.x .Anaya Multimedia. 16. Rahmel Dam. Profesional Joomla! . Anaya Multimedia.