SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. Dedicado a… …mis PADRES, por su inagotable e incondicional apoyo y cariño. Este proyecto es tan vuestro como mío. …INMA, por soportar todos los momentos bajos y estar SIEMPRE ahí. …mi hermana AURORA, por aguantarme tres años numerando folios. …mi hermana ISABEL, por controlarme la tensión. …CARLOS, por resolver todas esas dudas irresolubles y compartir tantas horas de Messenger. …HUGO, porque sin 3 no seríamos un ingeniero. …AURORA, por todo el material educativo proporcionado, y por soportar las repentinas reuniones de consultoría. …mi tutora ISABEL, por las facilidades prestadas pese a la distancia. …mi tía MARY, por tantas meriendas leyendo versiones “beta”. …mi ABUELA, por su incansable y ciega confianza en mí. …RAFALITO, por su servicio de “copistería”. …IVÁN, por acompañarme “estudiando” tantas mañanas desde la ventana. Y, en general, a todos aquellos que, en mayor o menor medida, han colaborado mostrándome su apoyo y confianza. Un pedacito de este proyecto es vuestro. A todos GRACIAS Autor: Antonio Martínez Martínez I SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. Autor: Antonio Martínez Martínez II SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. Índice de Contenidos Dedicado a…............................................................................................................I Índice de Contenidos...........................................................................................III Índice de Figuras .................................................................................................IX 1 Motivación y Objetivos........................................................................................1 1.1 Introducción ..................................................................................................1 1.2 Fases del proyecto........................................................................................ 3 1.3 Estructura del documento........................................................................... 4 2 Introducción Teórica.......................................................................................... 7 2.1 Situación de Partida..................................................................................... 7 2.1.1 Introducción .......................................................................................... 7 2.1.2 Origen del término Web 2.0 ................................................................ 7 2.1.3 Comparación con la Web Semántica...................................................8 2.1.4 Tecnologías............................................................................................ 9 2.1.5 Sindicación de contenido ................................................................... 10 2.1.6 Servicios Web.......................................................................................11 2.1.7 Software de servidor ............................................................................11 2.1.8 Conclusiones ....................................................................................... 12 2.1.8.1 Punto de vista del diseñador....................................................... 12 2.1.8.2 Punto de vista del usuario .......................................................... 13 2.2 Tecnología Empleada................................................................................ 14 2.2.1 XHTML................................................................................................ 14 2.2.1.1 Introducción................................................................................. 14 2.2.1.2 Diferencias entre HTML y XHTML ............................................15 2.2.1.3 Ventajas e Inconvenientes .......................................................... 19 2.2.1.4 XHTML 2.0 .................................................................................. 19 2.2.2 CSS.......................................................................................................22 2.2.2.1 Introducción ................................................................................22 2.2.2.2 Ventajas del uso de CSS..............................................................23 2.2.2.3 Versiones y compatibilidad con navegadores...........................24 2.2.2.4 Maquetado CSS ...........................................................................26 2.2.2.5 CSS3 ............................................................................................. 27 Autor: Antonio Martínez Martínez III SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2.2.3 JavaScript............................................................................................28 2.2.3.1 Introducción ................................................................................28 2.2.3.2 Evolución Histórica ....................................................................28 2.2.3.3 El Modelo de Objetos de Documento (DOM) ...........................30 2.2.3.3.1 Introducción..........................................................................30 2.2.3.3.2 ¿Qué es el DOM? ..................................................................30 2.2.3.3.3 Compatibilidad entre los DOMs.......................................... 31 2.2.3.3.4 Acceso a los elementos del modelo ..................................... 31 2.2.3.4 Características y usos principales ..............................................32 2.2.3.5 ¿Qué NO es JavaScript?..............................................................33 2.2.3.6 Introducción a AJAX (Asynchronous JavaScript and XML) ..34 2.2.4 PHP......................................................................................................36 2.2.4.1 Introducción ................................................................................36 2.2.4.2 Conceptos generales ................................................................... 37 2.2.4.3 Evolución histórica .....................................................................39 2.2.4.4 Ventajas e inconvenientes .......................................................... 41 2.2.4.5 Seguridad en PHP .......................................................................42 2.2.4.6 ¿Cuándo usar PHP? ....................................................................43 2.2.4.7 Resumen ......................................................................................43 2.2.5 MySQL................................................................................................. 45 2.2.5.1 Introducción................................................................................. 45 2.2.5.2 Evolución histórica ..................................................................... 45 2.2.5.3 Conceptos Generales...................................................................46 2.2.5.4 Mejoras Futuras .......................................................................... 52 2.2.5.5 PostgreSQL, ¿la alternativa a MySQL?...................................... 53 2.2.5.5.1 Comparativa final: MySQL vs PostgreSQL ......................... 55 2.2.6 AJAX ...................................................................................................58 2.2.6.1 Introducción ................................................................................58 2.2.6.2 Funcionamiento básico .............................................................. 59 2.2.6.2.1 ¿Por qué es diferente AJAX? ...............................................60 2.2.6.3 Grandes usuarios de AJAX.........................................................62 2.2.6.4 Navegadores que permiten y no permiten AJAX .....................63 2.2.6.5 Solución implementada: XAJAX ...............................................64 Autor: Antonio Martínez Martínez IV SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2.2.6.5.1 Conceptos básicos.................................................................64 2.2.6.5.2 Modo de funcionamiento.....................................................64 2.2.6.5.3 Uso en Sistema SELWA .......................................................66 2.2.6.6 Conclusión ...................................................................................66 3 Diseño e Implementación................................................................................ 67 3.1 Software utilizado ...................................................................................... 67 3.1.1 Herramienta WAMP5 ......................................................................... 67 3.2 Visión global de la aplicación ................................................................... 72 3.2.1 Punto de vista teórico ......................................................................... 72 3.2.2 Punto de vista técnico ........................................................................ 75 3.2.3 Base de datos MySQL......................................................................... 81 3.2.3.1 Estructura..................................................................................... 81 3.2.3.2 Conexión PHP ßàMySQL ........................................................83 3.3 Módulos de registro...................................................................................86 3.3.1 Acceso al sistema ................................................................................86 3.3.1.1 Punto de vista teórico ..................................................................86 3.3.1.2 Punto de vista técnico .................................................................87 3.3.2 Módulo de registro de usuarios.........................................................90 3.3.2.1 Introducción: Perfiles y permisos ..............................................90 3.3.2.2 Modo Administrador ..................................................................90 3.3.2.3 Modo Profesor.............................................................................94 3.3.2.4 Modo Consultor ..........................................................................96 3.3.2.5 Información técnica .................................................................... 97 3.3.3 Módulo de registro de alumnos.........................................................99 3.3.3.1 Funcionamiento básico ...............................................................99 3.3.3.2 Clasificación de datos ...............................................................100 3.3.3.3 Condiciones necesarias..............................................................113 3.3.3.4 Información técnica...................................................................115 3.4 Módulos de gestión ................................................................................. 122 3.4.1 Gestión de usuarios .......................................................................... 122 3.4.1.1 Gestión básica ............................................................................ 122 3.4.1.2 Solución implementada ............................................................ 123 3.4.2 Gestión de alumnos.......................................................................... 124 3.4.2.1 Gestión básica............................................................................ 124 Autor: Antonio Martínez Martínez V SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3.4.2.2 Trabajo diario ............................................................................ 128 3.4.3 Información técnica ..........................................................................131 3.5 Informes ................................................................................................... 138 3.5.1 Introducción...................................................................................... 138 3.5.2 Funcionamiento básico.................................................................... 138 3.5.3 Informes personalizados.................................................................. 143 3.5.4 Informes predefinidos...................................................................... 143 4 Líneas futuras ................................................................................................. 145 4.1 Módulo de gestión personal.................................................................... 145 4.1.1 Agenda................................................................................................ 145 4.1.2 Tablón de anuncios........................................................................... 146 4.1.3 Correo interno................................................................................... 147 4.2 Módulo de gestión de usuarios............................................................... 148 4.2.1 Modificación y eliminación de fichas de usuario ........................... 148 4.3 Módulo de gestión de alumnos .............................................................. 149 4.3.1 Backup de datos de alumnos en repositorio ................................... 149 4.4 Gestión de Informes.................................................................................151 5 Conclusiones ................................................................................................... 153 6 Pliego de condiciones......................................................................................155 6.1 Diagramas base de datos..........................................................................155 6.2 Códigos reseñables .................................................................................. 174 6.2.1 CSS ..................................................................................................... 174 à hoja_gral.css ..................................................................................... 174 à hoja_index.css....................................................................................177 à hoja_res_busq.css ............................................................................ 182 6.2.2 XHTML ............................................................................................. 184 à ficha.php ............................................................................................ 184 6.2.3 PHP.................................................................................................... 195 à inserta_us.php .................................................................................. 195 à find_al.php........................................................................................ 198 àcrea_inf.php ...................................................................................... 200 6.2.4 JavaScript ........................................................................................ 206 à funcs_GestPest.js............................................................................. 206 à funcs_Varias.js..................................................................................211 Autor: Antonio Martínez Martínez VI SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. à funcs_Ayuda.js.................................................................................. 213 à add_obj.php ...................................................................................... 221 6.2.5 AJAX..................................................................................................223 à server.php..........................................................................................223 7 Bibliografía y Referencias ..............................................................................225 7.1 Bibliografía ...............................................................................................225 7.2 Referencias Web ......................................................................................225 7.2.1 CSS .....................................................................................................225 7.2.2 XHTML .............................................................................................226 7.2.3 PHP....................................................................................................226 7.2.4 JavaScript..........................................................................................226 7.2.5 MySQL ...............................................................................................227 7.2.6 AJAX..................................................................................................227 7.2.7 Otros enlaces de interés ...................................................................227 Autor: Antonio Martínez Martínez VII SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. Autor: Antonio Martínez Martínez VIII SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. Índice de Figuras Figura 2.2.4.1 ....................................................................................................... 37 Figura 2.2.6.1 .......................................................................................................60 Figura 2.2.6.2.......................................................................................................62 Figura 3.1.1 ...........................................................................................................70 Figura 3.2.1.1........................................................................................................ 74 Figura 3.2.2.1 ....................................................................................................... 77 Figura 3.3.2.2.1 .................................................................................................... 91 Figura 3.3.2.2.2....................................................................................................92 Figura 3.3.2.3.1 ....................................................................................................94 Figura 3.3.2.3.2.................................................................................................... 95 Figura 3.3.3.1.1.....................................................................................................99 Figura 3.3.3.2.1 ...................................................................................................101 Figura 3.3.3.2.2.................................................................................................. 102 Figura 3.3.3.2.3.................................................................................................. 102 Figura 3.3.3.2.4a................................................................................................ 103 Figura 3.3.3.2.4b................................................................................................ 104 Figura 3.3.3.2.5.................................................................................................. 106 Figura 3.3.3.2.6a................................................................................................ 107 Figura 3.3.3.2.6b................................................................................................108 Figura 3.3.3.2.7.................................................................................................. 109 Figura 3.3.3.2.8...................................................................................................110 Figura 3.3.3.2.9...................................................................................................113 Figura 3.4.2.1.1................................................................................................... 125 Figura 3.5.2.1 ..................................................................................................... 139 Figura 3.5.2.2 ..................................................................................................... 140 Autor: Antonio Martínez Martínez IX SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. Autor: Antonio Martínez Martínez X SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 1 Motivación y Objetivos 1 Motivación y Objetivos 1.1 Introducción El mundo actual en el que vivimos está formado por una sociedad en la que el tiempo es, cada vez con mayor frecuencia, el bien más preciado. No existe tiempo para nada, lo único para lo que estamos obligados a tener tiempo es para trabajar: nada de familia, ni amigos ni vida personal. Consecuencia: estrés. Y en el momento en que tenemos un par de semanas de vacaciones o de días libres, lo empleamos en salir en busca de actividades que nos permitan desconectar de nuestra rutina diaria, y además nos gusta que sean actividades completas, nada de medianías, con todos los detalles. Si vamos al campo, queremos una casa rural con todo tipo de comodidades, queremos dar paseos a caballo, excursiones, senderismo, etc. Debido a este ritmo de vida, apenas si nos queda tiempo para otro tipo de tareas, que en otros tiempos se consideraban prioritarias y ahora ya no nos lo parecen tanto, como por ejemplo, la educación y cuidado de nuestros hijos. Antes, esta tarea siempre era llevada a cabo por uno de los cónyuges (casi siempre la mujer, no nos engañemos). Pero hoy en día esto es casi imposible, pues para mantener el estilo de vida que queremos tener es necesario que ambas partes de la pareja aporten algo a la economía familiar. Entonces, ¿quién se encarga ahora de ir a recoger a los niños al colegio?¿quién se encarga de cuidarlos cuando ambos padres están trabajando? Habitualmente estas labores se han delegado en los abuelos, parientes cercanos e incluso vecinos o amigos, que acaban conociendo mucho mejor a nuestros hijos que nosotros mismos (sus alegrías, sus tristezas, sus temores, sus problemas escolares, etc.). Todos estos avatares se acrecentan si nuestro hijo sufre algún tipo de minusvalía. Este proyecto surge con la idea de ayudar a los padres con hijos con necesidades educativas especiales de cualquier tipo. Autor: Antonio Martínez Martínez 1 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 1 Motivación y Objetivos ¿A qué padre no le gusta saber cómo se comporta su hijo en el colegio? Es más, no sólo eso, sino que además le apetece saber la evolución que, a lo largo del curso, va teniendo su hijo, no simplemente limitarse a ver unas notas cada 3 ó 4 meses. Y cuando nuestro hijo sufre una minusvalía esta información es tanto más importante. El objetivo del presente proyecto es diseñar e implementar una herramienta web que facilite a estos padres el acceso a una información pormenorizada sobre cualquier aspecto de la actividad académica de su hijo en cualquier momento, accediendo a los mismos informes que utilizan los profesores responsables de la educación del niño, teniendo la posibilidad de personalizar dichos informes con la información que estimen más interesante. Al ser niños con necesidades educativas especiales, suelen tener asociados diferentes especialistas que siguen la patología del niño e intentan ayudar a los profesores de la mejor manera posible. Estos especialistas también forman parte importante de la aplicación. Ellos, al igual que los padres, tendrán acceso a toda la información registrada del alumno. Para ello, la única condición es que el trabajo diario del profesor sea constante. A raíz de las anotaciones diarias que el profesor haga acerca del alumno en los diferentes aspectos a tener en cuenta, se generarán los informes. Y puesto que tanto profesores, padres y especialistas comparten la misma información, todos trabajarán en la misma dirección para tratar de conseguir los objetivos marcados a principios de cada curso. La aplicación desarrollada, SELWA (Special Education Laboursaving Web Application), seguirá los estándares del World Wide Web Consortium (W3C) en cuanto a programación web. La aplicación está escrita en XHTML, separando la representación de la información en hojas de estilo gracias a CSS2, complementado con JavaScript para multitud de efectos dinámicos en el lado cliente. Para el tratamiento dinámico de la información en el lado servidor se ha elegido PHP, y como base de datos para registrar y ordenar toda la información hemos optado por MySQL. Por último también reseñar que se han introducido en algunas partes de la interfaz fragmentos generados mediante AJAX, una unión de lenguajes como Javascript y XML que permiten realizar consultas asíncronas al servidor y que dota de una mayor versatilidad y una mejor Autor: Antonio Martínez Martínez 2 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 1 Motivación y Objetivos apariencia a nuestra aplicación. En posteriores apartados justificaremos detenidamente el porqué de la elección de cada uno de estos lenguajes. 1.2 Fases del proyecto A continuación se detallan las distintas fases en las que se ha desarrollado el proyecto, indicando cuánto tiempo ha sido necesario para cada una de las etapas. · Fase de recopilación de información: 1 mes y 15 días Durante esta primera fase, el objetivo fue recopilar la mayor cantidad de información posible acerca de las tecnologías que iban a ser empleadas en la programación de la aplicación, así como recabar datos sobre los colegios de educación especial y las necesidades que plantean para realizar una herramienta útil y versátil. · Estudio de la estructura del sistema: 15 días Esta fase fue determinante, pues se decidió cuál sería la estructura de capas que conformarían la columna vertebral de la aplicación, así como qué información iría en cada una de ellas, procurando en todo momento mantener una correcta proporción entre tamaño e importancia. Asimismo, se determinó cuál sería la estructura de la base de datos, decidiendo qué tablas serían necesarias y cuál sería la interconexión entre ellas. · Programación de la aplicación: 3 meses La programación de las distintas partes que se decidieron implementar en la fase anterior, conllevó, como no podía ser de otra manera, la mayor parte del tiempo invertido en la realización del proyecto. Se fueron programando, Autor: Antonio Martínez Martínez 3 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 1 Motivación y Objetivos intercaladamente, conforme fue siendo necesario, los archivos PHP, JavaScript, CSS y XHTML que componen la herramienta SELWA. · Redacción de la presente memoria: 1 mes La redacción del presente documento se desarrolló durante el último mes de trabajo. 1.3 Estructura del documento La información mostrada en este documento está organizada en los siguientes puntos: Ø Una introducción teórica, donde se abordarán la situación actual de la programación web, así como una breve explicación de todos y cada uno de los lenguajes utilizados en el desarrollo de la aplicación, justificando el porqué de su elección. Ø Explicación detallada de los módulos fundamentales que componen el sistema, distinguiendo entre usuarios y alumnos, partes de gestión e inserción, y, por supuesto, cómo se generan los informes a partir de los datos introducidos. Ø Líneas futuras que permitirían ampliar y mejorar el presente proyecto. Ø Conclusiones extraídas tras la elaboración de la aplicación, intentando dar algunas justificaciones de por qué es realmente útil. Autor: Antonio Martínez Martínez 4 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 1 Motivación y Objetivos Ø Diagramas explicativos de las relaciones de las tablas de la base de datos (mediante el uso de diagramas entidad-relación), así como los códigos fuente de los archivos más significativos que componen el diseño, clasificados por lenguajes de programación. Ø El último punto del documento contiene la bibliografía y referencias web que han servido de apoyo. Autor: Antonio Martínez Martínez 5 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 1 Motivación y Objetivos Autor: Antonio Martínez Martínez 6 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica 2 Introducción Teórica 2.1 Situación de Partida 2.1.1 Introducción El concepto original de la web (en este contexto, llamada Web 1.0) era la publicación de páginas estáticas HTML cuya información era semi-permanente, es decir, apenas se actualizaba su contenido y la interacción del usuario con la página era del todo inexistente, pues no existían mecanismos que hicieran modificar el contenido en función de la actuación del usuario. El éxito de las punto-com dependía de webs más dinámicas (a veces llamadas Web 1.5) donde los sistemas de gestión de contenido (CMS) servían páginas HTML dinámicas creadas al vuelo desde una actualizada base de datos. Tanto conseguir visitas como la estética visual eran considerados unos factores muy importantes. Los impulsores de Web 2.0 creen que el uso de la web está orientado a la interacción y a redes sociales, que pueden servir un contenido que realmente utiliza todo el potencial de las redes, creando o no webs interactivas y visuales. Es decir, los sitios Web 2.0 actúan más como puntos de encuentro, o webs dependientes de usuarios, que como webs tradicionales. 2.1.2 Origen del término Web 2.0 Web 2.0 se refiere a la transición experimentada en Internet desde las webs tradicionales a aplicaciones web destinadas a usuarios. El término fue acuñado por Dale Dougherty de O'Reilly Media en una lluvia de ideas con Craig Cline de MediaLive para desarrollar ideas para una conferencia. Dougherty sugirió que la web estaba en un renacimiento, con reglas que cambiaban y modelos de negocio que evolucionaban. Dougherty puso Autor: Antonio Martínez Martínez 7 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica ejemplos — "DoubleClick era la Web 1.0; Google AdSense es la Web 2.0. Ofoto es Web 1.0; Flickr es Web 2.0." — en vez de definiciones, y reclutó a John Battelle para dar una perspectiva empresarial, y O'Reilly Media, Battelle, y MediaLive lanzaron su primera conferencia sobre la Web 2.0 en Octubre de 2004. La segunda conferencia se celebró en octubre de 2005. En su conferencia, O'Reilly y Battelle resumieron los principios clave que creen que caracterizan a las aplicaciones Web 2.0: la web como plataforma; datos como el "Intel Inside"; efectos de red conducidos por una "arquitectura de participación"; innovación y desarrolladores independientes; pequeños modelos de negocio capaces de sindicar servicios y contenidos; el perpetuo beta; software por encima de un solo aparato. Los propulsores de este pensamiento esperan que los servicios de la Web 2.0 sustituyan a las aplicaciones de escritorio en muchos usos. 2.1.3 Comparación con la Web Semántica En ocasiones se ha utilizado el término Web 2.0 como análogo a Web semántica. Sin embargo ambos conceptos, aun siendo afines, no son iguales, sino más bien complementarios. La combinación de sistemas de redes sociales, como FOAF (Friend Of A Friend), con el desarrollo de etiquetas (o tags), que en su uso social derivan en folcsonomías¹, así como el plasmado de todas estas tendencias a través de blogs y wikis, confieren a la Web 2.0 un aire semántico. Sin embargo, en el sentido más estricto de Web semántica se requiere el uso de ontologías² y no de folcsonomías. De momento, el uso de ontologías como ¹ Las folcsonomías surgen cuando varios usuarios colaboran en la descripción de un mismo material informativo. Se trata de una práctica que se produce en entornos de software social cuyos mejores exponentes son los sitios compartidos como del.icio.us (enlaces favoritos), Flickr (fotos) o Tagzania (lugares). ² El término ontología en informática hace referencia al intento de formular un exhaustivo y riguroso esquema conceptual dentro de un dominio dado, con la finalidad de facilitar la comunicación y la compartición de la información entre diferentes sistemas. Los programas informáticos pueden utilizar así la ontología para una variedad de propósitos, incluyendo el razonamiento inductivo, la clasificación, y una variedad de técnicas de resolución de Autor: Antonio Martínez Martínez 8 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica mecanismo de estructurar la información en los programas de blogs es anecdótico y sólo se aprecia de manera incipiente en algunos wikis. Bien podría hablarse de la Web 3.0 para la Web semántica. Pero una diferencia fundamental entre ambas versiones de web (2.0 y 3.0) es el tipo de participante. La 2.0 tiene como principal protagonista al usuario humano que escribe artículos en su blog o colabora en un wiki. El requisito es que además de publicar en HTML emita parte de sus aportaciones en XML/RDF (RSS, ATOM, etc.). La 3.0, sin embargo, está orientada hacia el protagonismo de procesadores mecánicos que entiendan de lógica descriptiva en OWL, acrónimo del inglés Ontology Web Language, un lenguaje de marcado para publicar y compartir datos usando ontologías en la WWW. OWL tiene como objetivo facilitar un modelo de marcado construido sobre RDF y codificado en XML. La 3.0 está concebida para que las máquinas hagan el trabajo de las personas a la hora de procesar la avalancha de información publicada en la web. 2.1.4 Tecnologías La infraestructura de la Web 2.0 es compleja y evoluciona, e incluye el software de servidor, sindicación de contenidos, protocolos de mensajes, navegadores basados en estándares, y varias aplicaciones para clientes. Una web se puede decir que está construida usando tecnología de la Web 2.0 si se caracteriza por las siguientes técnicas: CSS, marcado XHTML válido semánticamente y Microformatos Técnicas de aplicaciones ricas no intrusivas (como AJAX) Java Web Start XUL problemas. Autor: Antonio Martínez Martínez 9 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Sindicación de datos en RSS/ATOM Agregación de datos en RSS/ATOM URLs sencillas y con significado Soporte para postear en un blog JCC y APIs REST o XML Algunos aspectos de redes sociales y además cumple con ciertas reglas generales, como que la información debe poderse introducir y extraer fácilmente o que los usuarios deben controlar su propia información. De las técnicas anteriormente mencionadas, el presente proyecto cumple con las 2 primeras, así como con la característica de que las URLs usadas son simples y con significado. 2.1.5 Sindicación de contenido La primera y más importante evolución de la Web 2.0 se refiere a la sindicación del contenido de una Web, usando protocolos estandarizados que permitan a los usuarios finales usar el contenido de la web en otro contexto, ya sea en otra web, un plug-in de navegador, o en una aplicación de escritorio (Un ejemplo: EL PAIS exporta determinadas noticias en formato RSS de tal forma que otros sitios pueden, sin esfuerzo, publicar los titulares de EL PAIS). Entre los protocolos que permiten sindicar se encuentran RSS, RDF (conocido también como RSS 1.1), y ATOM, todos ellos variedades de XML. Los protocolos específicos como FOAF y XFN (ambos para redes sociales) amplían la funcionalidad de los sitios y permiten a los usuarios interactuar sin contar con sitios Web centralizados. Autor: Antonio Martínez Martínez 10 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Debido al reciente desarrollo de éstos, muchos son de facto en vez de estándares. 2.1.6 Servicios Web Los protocolos de mensajes bidireccionales son uno de los elementos clave de la infraestuctura de la Web 2.0. Los dos tipos más importantes son los métodos RESTful y SOAP. REST indican un tipo de llamada a un servicio web donde el cliente transfiere el estado de todas las transacciones. SOAP y otros métodos similares dependen del servidor para retener la información de estado. En ambos casos, el servicio es llamado usando una API. A veces, esta API está personalizada en función de las necesidades específicas del sitio web, pero las APIs de los servicios web estándares (como por ejemplo escribir en un blog) están también muy extendidas. Generalmente el lenguaje común de estos servicios web es el XML, si bien puede haber excepciones. Recientemente, una forma híbrida conocida como AJAX ha evolucionado para mejorar la experiencia del usuario en las aplicaciones web basadas en el navegador. Esto puede ser usado en webs propietarias (como en Google Maps) o en formas abiertas utilizando una API de servicios web, una semilla de sindicación. Se hablará más profundamente en el apartado “AJAX”, dentro de “Tecnología Empleada”. 2.1.7 Software de servidor La funcionalidad de la Web 2.0 se basa en la arquitectura existente de servidor web pero con un énfasis mayor en el software dorsal. La sindicación sólo se diferencia nominalmente de los métodos de publicación de la gestión dinámica de contenido, pero los servicios Web requieren normalmente un soporte de bases de datos y flujo de trabajo mucho más robusto, y llegan a parecerse mucho a la funcionalidad de intranet tradicional de un servidor de Autor: Antonio Martínez Martínez 11 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica aplicaciones. El enfoque empleado hasta ahora por los fabricantes suele ser bien un enfoque de servidor universal, el cual agrupa la mayor parte de la funcionalidad necesaria en una única plataforma de servidor, o bien un enfoque plug-in de servidor Web con herramientas de publicación tradicionales mejoradas con interfaces API y otras utilidades. Independientemente del enfoque elegido, no se espera que el camino evolutivo hacia la Web 2.0 se vea alterado de forma importante por estas opciones. 2.1.8 Conclusiones 2.1.8.1 Punto de vista del diseñador Es necesario evitar considerar que Web 2.0 hace referencia a la apariencia de las páginas. Si uno busca en Google encontrará miles de empresas que intentan explotar el concepto de Web 2.0. Ofrecen transformar cualquier web en una Web 2.0. Esto así dicho no tiene excesivo sentido. Si una web es estática, de contenido no renovado, no exporta ni importa noticias (RSS), etc., dicha web no será Web 2.0 por mucho que estéticamente se parezca a Wikipedia o a cualquier otro ejemplo clásico de Web 2.0. Lo que sí es cierto, es que existe una tendencia, una moda, que hace que muchas de las páginas modernas compartan un estilo más o menos parecido. Lo mejor es echar un vistazo a sitios como Flickr , Yahoo, Wikipedia, del.icio.us etc... para ver como sí que tienen aspectos comunes en lo que a diseño “visual” se refiere. Se dice, o se lee, en la web, que los diseñadores deben dejar de diseñar para el usuario (presentaciones en movimiento, música, efectos) y empezar a diseñar para las máquinas. Es decir favoreciendo el acceso de las mismas a la información. Una regla fundamental, y esto viene de más atrás, es separar contenido y estilo. Las Hojas de Estilo en Cascada (CSS) son absolutamente necesarias en la programación web de este siglo. Autor: Antonio Martínez Martínez 12 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Si hasta ahora se había trabajado con un editor web sin preocuparse de cómo, o dónde, se almacenaban los estilos de los elementos HTML de la página, lo primero que hay que hacer ahora es mirar la edición de webs con CSS. No es especialmente difícil, los estilos aplicables se multiplican, y la coherencia de estilos entre todas las páginas del sitio será más simple. Esta descripción encaja a la perfección con la implementación de la herramienta desarrollada, pues la separación entre contenido y estilo es muy clara, utilizando numerosos archivos CSS (con multitud de propiedades distintas) para la diferente representación de las distintas páginas. 2.1.8.2 Punto de vista del usuario El perfil de un posible usuario “2.0” de la red podría ser el de aquel que tiene un blog. Lo más probable es que en su blog además de sus propias noticias, publique noticias de otros blogs de referencia o de blogs de su círculo de amigos (RSS). Un “2.0” comparte sus fotos por la red y permite que otros las comenten. Probablemente se haya tomado alguna vez la molestia de completar algún artículo de la Wikipedia y en su reproductor de mp3 escucha música a la carta (Podcast). Obviamente no es este el perfil del usuario del sistema SELWA, pues es una aplicación más orientada al servicio de un tipo muy concreto de profesional, el profesor, y de usuarios que no tienen por qué ser asiduos visitantes de la web, como los padres, sino que lo que buscan es una herramienta que, además de proporcionarles la información que precisan, les resulte agradable a la vista y sencilla en su uso. Autor: Antonio Martínez Martínez 13 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica 2.2 Tecnología Empleada 2.2.1 XHTML 2.2.1.1 Introducción XHTML, acrónimo inglés de eXtensible Hypertext Markup Language (lenguaje extensible de marcado de hipertexto), es el lenguaje de marcado pensado para sustituir a HTML como estándar para las páginas web. XHTML tiene, básicamente, las mismas funcionalidades que HTML, pero cumple las especificaciones, más estrictas, de XML. Su objetivo es avanzar en el proyecto del World Wide Web Consortium (W3C) de lograr una web semántica, donde la información, y la forma de presentarla estén claramente separadas. En este sentido, XHTML serviría únicamente para transmitir la información que contiene un documento, dejando para hojas de estilo (como las hojas de estilo en cascada, CSS) y JavaScript su aspecto y diseño para distintos terminales (ordenadores, PDAs, teléfonos móviles, impresoras...). XHTML es el sucesor de HTML. Es por eso que muchos lo consideran la “versión actual” de HTML, pero es una recomendación aparte y a la vez paralela; el W3C continúa recomendando el uso de XHTML 1.1, XHTML 1.0, y HTML 4.01 para publicar en la web. XHTML 1.1 fue publicado el 31 de Mayo de 2001 y desde entonces han estado lanzando continuamente borradores del futuro XHTML 2.0. El último borrador es de finales de Julio del 2006 y se empiezan a notar algunas diferencias importantes respecto al XHTML 1.0/1.1, algunas de las cuales se muestran en el apartado 2.2.1.4. La necesidad de una versión más estricta de HTML se sintió principalmente porque el contenido de la World Wide Web ahora puede visualizarse desde numerosos dispositivos (como móviles), aparte de los ordenadores tradicionales, donde no pueden dedicarse recursos suplementarios para afrontar la complejidad añadida de la sintaxis del HTML. Autor: Antonio Martínez Martínez 14 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica La mayoría de las versiones recientes de los navegadores web más populares soportan XHTML, pero algunas versiones más antiguas sólo pueden leer el XHTML como si se tratara de HTML. Asimismo casi todos los navegadores que son compatibles con XHTML también leen HTML correctamente. Algunos argumentan que esta compatibilidad ralentiza el cambio de HTML a XHTML. En octubre de 2005 aproximadamente el 10% de los internautas utilizaban un navegador compatible con el estándar XHTML. El Internet Explorer de Microsoft es incompatible con XHTML hasta su versión 6.0, a pesar de que esta empresa sea miembro del W3C. Sin embargo parece ser que con su nueva versión 7.0, que vio la luz en 2006, la empresa líder en el sector se acerca por fin al cumplimiento de las recomendaciones del W3C. Por tanto, gran parte de los autores de sitios web se ven forzados a elegir entre la escritura de documentos válidos, respetuosos con los estándares, u ofrecer contenido que se visualice correctamente en la mayor parte de los navegadores, lo que provoca o bien un retraso considerable en la programación de un sitio web o bien una incompatibilidad con alguno de los navegadores disponibles. 2.2.1.2 Diferencias entre HTML y XHTML Los cambios de HTML a la primera generación de XHTML (es decir, XHTML 1.x) son menores ya que, principalmente, están destinados a conseguir la conformidad con XML. El cambio más importante es el requisito de que el documento esté bien formado y que todas las etiquetas estén explícitamente cerradas, como se requiere en XML. Como las etiquetas en XML distinguen entre mayúsculas y minúsculas (case-sensitive), la recomendación XHTML ha definido todos los nombres de etiqueta en minúsculas. Lo cual está en contraste directo con las tradiciones extendidas en el tiempo de HTML 2.0, cuando mucha gente prefería las mayúsculas para estos casos, normalmente para mostrar más fácilmente el contraste de éstas con el contenido. En XHTML, los valores de los atributos deben encerrarse entre comillas ('simples' o "dobles", es indiferente). Autor: Antonio Martínez Martínez 15 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Al contrario ocurría en SGML y por consecuencia en HTML, donde las comillas podían omitirse en algunos casos. Todos los elementos han de ser explícitamente cerrados, incluyendo elementos vacíos como pueden ser img o br. Esto puede hacerse añadiendo una barra a la etiqueta: <img … /> y <br />. La minimización de atributos (como <option selected>) está también prohibida, ya que el atributo “selected” no contiene ningún valor explícito; en lugar de eso, se usa <option selected="selected">. Hay más diferencias detalladas en la recomendación XHTML 1.0 de la W3C [1]. La siguiente lista muestra algunas reglas de XHTML 1.0 que lo diferencian de HTML 4.01. Muchas de estas diferencias vienen con el cambio de estar basado en SGML a estarlo en el más estricto XML: Los elementos vacíos deben cerrarse siempre: Ø Incorrecto: <br> Ø Correcto: <br></br> ó <br/> ó <br /> Nota: Cualquiera de las tres formas es válida en XHTML. Se recomienda el cierre <br /> por razones de compatibilidad. Los elementos no vacíos también deben cerrarse siempre: Ø Incorrecto: <p>Primer párrafo<p>Segundo párrafo Ø Correcto: <p>Primer párrafo</p><p>Segundo párrafo</p> Los elementos anidados deben tener un correcto orden de apertura/cierre (el que se abre último, debe cerrarse primero): Ø Incorrecto: <em><strong>Texto</em></strong> Autor: Antonio Martínez Martínez 16 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Ø Correcto: <em><strong>Texto</strong></em> Se debe siempre especificar un texto alternativo para imágenes (atributo "alt" para la etiqueta "img"): Ø Incorrecto: <img src="http://www.unaweb.org/foto.png" /> Ø Correcto: <img src="http://www.unaweb.org/foto.png" alt="Logo" /> Insertar elementos de bloque dentro de elementos de línea: Ø Incorrecto: <em><h2>Título</h2></em> Ø Correcto: <h2><em>Título</em></h2> Los valores de los atributos deben siempre ir encerrados entre comillas (simples o dobles): Ø Incorrecto: <td rowspan=3> Ø Correcto: <td rowspan="3"> ó <td rowspan='3'> El símbolo & (ampersand) debe ser usado únicamente como parte de una entidad: Ø Incorrecto: Cars & houses Ø Incorrecto: <a src="http://www.dom.com/index.php?id=1&cat=2">Cat2</a> Ø Correcto: Cars &amp; houses Ø Correcto: <a src="http://www.dom.com/index.php?id=1&amp;cat=2">Cat2</a> Autor: Antonio Martínez Martínez 17 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Los nombres de elementos y atributos deben ir en minúsculas: Ø Incorrecto: <A HREF="http://www.dom.com">Domname</A> Ø Incorrecto: <a href="http://www.dom.com">Domname</a> No está permitida la minimización de atributos (se usa el nombre del atributo como valor): Ø Incorrecto: <textarea readonly>Solo-lectura</textarea> Ø Correcto: <textarea readonly="readonly">Solo-lectura</textarea> Los atributos desaprobados en HTML 4.01 no forman parte de XHTML: Ø Incorrecto: <font color="#0000FF">Blue text</font> Ø Correcto: <span style="color: #0000FF;">Blue text</span> · Reglas para DTDs estrictos El texto no debe ser insertado directamente en el cuerpo (dentro de la etiqueta "body"). Ø Incorrecto: <body>Texto plano</body> Ø Correcto: <body><span>Texto plano</span></body> Autor: Antonio Martínez Martínez 18 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica 2.2.1.3 Ventajas e Inconvenientes Ventajas de XHTML sobre otros formatos: Ø Compatibilidad parcial con navegadores antiguos: la información se visualiza, aunque sin formato. Cabe apuntar que el XHTML 1.0 fue diseñado expresamente para ser mostrado en navegadores que soportan HTML de base. Ø Un mismo documento puede adoptar diseños radicalmente distintos en diferentes dispositivos, pudiendo incluso escogerse entre varios diseños para un mismo medio. Ø Facilidad de edición directa del código y de mantenimiento. Ø Formato abierto, compatible con los nuevos estándares que actualmente está desarrollando el W3C como recomendación para futuros agentes de usuario o navegadores. Ø Los documentos escritos conforme a XHTML 1.0 pueden potencialmente presentar mejor rendimiento en las actuales herramientas web que aquellos escritos conforme a HTML Inconvenientes: Ø Muchas herramientas de diseño web aún no producen código XHTML correcto. 2.2.1.4 XHTML 2.0 En este apartado se mostrarán algunas de las diferencias más importantes que empieza a haber entre XHTML1.0/1.1 y XHTML 2.0. Simplemente se muestra un breve resumen: Autor: Antonio Martínez Martínez 19 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Compatibilidad hacía atrás: No existe. Con esta ruptura el estándar será mucho más pequeño, conciso y específico, tendrá tendencia a ser más estructurado, como XML, eliminará etiquetas de navegadores y se abstrae de ellos para servir mejor en dispositivos alternativos como PDA’s. Validación XML obligatoria: Esto por un lado es bueno, ya que obliga a que las webs sean en formato estándar y elimina muchas barreras para el acceso a la información. Por otro lado, obliga a tener unos conocimientos un poco más avanzados. Desaparición de los encabezados hx y de div: Serán sustituidos por “section” y “h”. <section> <h>Encabezado de primer nivel</h> <section> <h>Encabezado de segundo nivel</h> </section> </section> “role”, un presunto sustituto de rel: Cuando tengamos una parte de la web que no pertenece al contenido — por ejemplo, una lista de enlaces de navegación — podremos utilizar el atributo “role”. “XFrames”, vuelven los marcos: Vuelven los frames, por lo que parece que esta nueva implementación soluciona el problema de las URLs inconsistentes. En este punto han surgido numerosas críticas, que sólo el tiempo dirá si son acertadas o no. “href” extendido, todo puede ser un enlace: El atributo href ya no forma parte únicamente de la etiqueta <a> por lo que puede usarse en cualquier etiqueta. XML includes: Se puede incluir contenido mediante ficheros XML sin necesidad de usar el include() de PHP, ASP o similares. Puede ser una de Autor: Antonio Martínez Martínez 20 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica las características más útiles del nuevo XHTML 2.0. Un ejemplo es la web de w3future.com, donde se puede ver una web con estructura simple en XHTML 2.0. El código de esa web es muy breve, y en él se ve: <section id="navigation"> <xi:include href="http://w3future.com/w3f/sections.xml" /> </section> Con la segunda línea (xi:include) se pueden añadir “includes” XML sin necesidad de usar un lenguaje de programación del lado servidor. Aparición de “object”: A la hora de presentar en escena distintos contenidos multimedia, ésta será la etiqueta que los defina ahora. <object src="screen.css" srctype="text/css"></object> <object src="foto.jpg" srctype="image/jpeg"></object> <object src="pelicula.avi" srctype="video/x-msvideo"></object> Cambios en “hr” y “br”: El salto de línea <br /> parece que va a desaparecer en favor de <line /> y <hr> en favor de <separator />. Autor: Antonio Martínez Martínez 21 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica 2.2.2 CSS 2.2.2.1 Introducción Las hojas de estilo en cascada (Cascading Style Sheets, CSS) son un lenguaje formal usado para definir la presentación de un documento estructurado escrito en HTML o XML (y por extensión en XHTML). El W3C (World Wide Web Consortium) es el encargado de formular la especificación de las hojas de estilo que servirá de estándar para los agentes de usuario o navegadores. La idea que se encuentra detrás del desarrollo de CSS es separar la estructura de un documento de su presentación. Por ejemplo, el elemento HTML <h1> indica que un bloque de texto es un encabezamiento y que es más importante que un bloque etiquetado como <h2>. Versiones más antiguas de HTML permitían atributos extra dentro de la etiqueta abierta para darle formato (como el color o el tamaño de fuente). No obstante, cada etiqueta <h1> debía disponer de la información si se deseaba un diseño consistente para una página, y además, una persona que lea esa página con un navegador pierde totalmente el control sobre la visualización del texto. Cuando se utiliza CSS, la etiqueta <h1> no debería proporcionar únicamente información acerca de cómo va a ser visualizado un párrafo, sino además marcar la estructura del documento. La información de estilo separada en una hoja CSS, especifica cómo se ha de mostrar <h1>: color, fuente, alineación del texto, tamaño, y otras características no visuales como definir el volumen de un sintetizador de voz, por ejemplo. Y, por otro lado, también deberían usarse estas etiquetas para resaltar información importante, proporcionalmente al número de la cabecera, amén de servir como elemento separador de párrafos de forma consistente. La información de estilo puede ser adjuntada tanto como un documento separado o en el mismo documento HTML. En este último podrían definirse estilos generales en la cabecera del documento o en cada etiqueta particular Autor: Antonio Martínez Martínez 22 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica mediante el atributo “style”. 2.2.2.2 Ventajas del uso de CSS Ø Control centralizado de la presentación de un sitio web completo con lo que se agiliza de forma considerable la actualización del mismo. Ø Los navegadores permiten a los usuarios especificar su propia hoja de estilo local que será aplicada a un sitio web remoto, con lo que aumenta considerablemente la accesibilidad. Por ejemplo, personas con deficiencias visuales pueden configurar su propia hoja de estilo para aumentar el tamaño del texto o remarcar más los enlaces. Ø Una página puede disponer de diferentes hojas de estilo según el dispositivo que la muestre o incluso a elección del usuario. Por ejemplo, para ser impresa, mostrada en un dispositivo móvil, o ser ”leída” por un sintetizador de voz. Ø El documento HTML en sí mismo es más claro de entender y se consigue reducir considerablemente su tamaño. Ø El uso de CSS no sólo beneficia a la página de cara a los usuarios reales. Para los bots¹ que recorren la web con el objetivo de extraer su contenido, es muy importante CSS. Como es sabido, los bots sólo guardan unos ciertos kB de cada página. Al usar CSS lo que se hace de forma indirecta es aumentar el contenido útil que será adquirido por este tipo de bots. En definitiva, aumentará el posicionamiento del sitio web,ya que el buscador será capaz de evaluar mejor el contenido del sitio. ¹ Diminutivo de robot. Programa informático que realiza muy diversas funciones imitando a los humanos. Autor: Antonio Martínez Martínez 23 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica 2.2.2.3 Versiones y compatibilidad con navegadores De la misma manera que con HTML, el W3C se encarga de las normas de CSS. Se trata de un estándar independiente, documentado en forma abierta y de uso libre. Para CSS existe también un grupo de trabajo en el W3C, que se encarga del desarrollo del lenguaje y que se somete a las reglas de trabajo para generar las llamadas “recomendaciones” del Consorcio. Como en HTML, en CSS también existen versiones del lenguaje, que se basan en las nuevas ediciones de las recomendaciones. La versión 1.0 de CSS salió a la luz pública en 1996 y fue revisada nuevamente en 1999. En 1998 CSS 2.0 recibió el estatus de una recomendación. Actualmente se trabaja en CSS 3.0. En ella son consideradas ambas versiones. Los navegadores modernos implementan CSS1 bastante bien, aunque existen pequeñas diferencias de implementación según marcas y versiones de los navegadores. CSS2, sin embargo, está solo parcialmente implementado en los más recientes. Netscape 4.x interpreta muchas propiedades de la versión 1.0 de CSS y una parte de las propiedades de la 2.0. El MS Internet Explorer (IE) conoce más partes de CSS1 a partir de su versión de producto 3.0 del año 1996. El IE 4.0 interpreta una parte de la versión 2.0 de CSS y algunas propiedades especiales que han sido introducidas por Microsoft. Al nivel de la generación cuarta de ambos navegadores, la implementación de CSS está sin embargo un tanto incompleta, es bastante diferente y especialmente en el Netscape 4.0 existen algunos errores bastante graves. A partir de la versión 5.x de IE y de la 6.x de Netscape, la situación ha mejorado un poco. El navegador Opera se encuentra al tanto en cuestiones CSS a partir de su versión 5.x. Una implementación completa de CSS 2.0 no ha sido lograda por ninguno de los navegadores conocidos, aunque está muy próxima su completa compatibilidad. Todo esto no dispensa a un programador web de probar todos los formatos con diferentes navegadores al crear sus páginas. La implementación de CSS de los navegadores no es tan uniforme como para que se pueda confiar en que todo Autor: Antonio Martínez Martínez 24 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica es visualizado en todos los navegadores de la misma manera. Además se debe considerar que el efecto óptico de las páginas web depende también mucho del hardware utilizado. Las páginas web no son exclusivamente vistas en PCs con pantallas de 19 pulgadas y 16,7 millones de colores. También son vistas en portátiles, en ordenadores handheld, en ordenadores antiguos... Las diferentes tecnologías que existen actualmente en el campo de las pantallas, provocan que existan muy diferentes efectos, por ejemplo con los colores. Lo que en un navegador se ve de color amarillo, se puede ver en otro de color rosado. Aunque los monitores se pueden calibrar, no es de esperar que los usuarios lo hagan para poder ver sus páginas. Al menos a partir de CSS 2.0 existe la posibilidad de definir diferentes formatos CSS para diferentes medios de distribución. No obstante no todos los problemas pueden ser resueltos de esta manera. Desgraciadamente, las especificaciones del tamaño de fuente aún no generan resultados uniformes. Mientras que en el campo de impresión una fuente de 10 puntos siempre es del mismo tamaño (ya que sólo es definido una vez qué tamaño tiene un punto), tales especificaciones son convertidas en píxeles en la pantalla. Sin embargo al hacer esto no está fijado qué tamaño debe tener un píxel. Y además ni siquiera los factores de conversión son iguales. Por ejemplo, el sistema operativo Windows calcula las especificaciones de tamaño de fuentes en píxeles de manera diferente a como lo hacen plataformas gráficas bajo Linux o en el sistema operativo de Macintosh. Resumiendo: muchos aspectos en CSS se encuentran exactamente en el archivo, pero los resultados en la pantalla pueden ser muy diferentes, no siendo de extrañar que éstos no sean del todo satisfactorios. Un aspecto muy a tener en cuenta en la creación de estilos para páginas web es el tipo de personas que deben ver tales páginas como visitantes. Hay no pocas personas que pueden percibir los colores sólo en forma limitada por causa de una debilidad visual. Autor: Antonio Martínez Martínez 25 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Lo que una persona considera un diseño “fino”, es considerado por otras personas como “ilegible”. E “ilegible” significa tener un visitante menos en nuestras páginas. Por sus posibilidades, las hojas de estilo incitan al uso de tipos de fuentes y colores poco comunes. Aunque esto se vea “muy bien”, dependiendo de los terminales de visualización y de la capacidad de resolución del usuario, puede ir a expensas de la usabilidad. Por otra parte, se pueden utilizar las hojas de estilo explícitamente para optimizar las páginas para personas con problemas visuales. Contrastes de colores correctos, tipos de fuentes en tamaño normal, espacios comunes entre las fuentes y altura de las líneas, omisión de combinaciones de colores críticas (como rojo/verde en el fondo/primer plano), etc. Éstas son propiedades que páginas web bien diseñadas deberían siempre poseer. 2.2.2.4 Maquetado CSS Aunque desde hace tiempo los diseñadores web han optado por la utilización de tablas HTML para el diseño de páginas web, el uso que les daban era como elementos de estilo, cuando su verdadero cometido es albergar contenido tabulado. La maquetación CSS consiste en utilizar capas (layers) como elemento de marcado, que en HTML se definen con la etiqueta <div></div> (de apertura y cierre, respectivamente) para organizar los datos del documento HTML, como alternativa a las tablas y los marcos (frames). Así, se puede nombrar cada capa con el atributo id de manera que se puedan definir las propiedades de dicha capa en el archivo CSS externo al documento. También es posible incluir el código CSS en la misma página HTML, pero es poco funcional (es conveniente hacer uso de la modularidad para hacer más fácil el mantenimiento). Por ejemplo: · Archivo.html <div id="datos1"> Contenido: imágenes, texto, etc. </div> Autor: Antonio Martínez Martínez 26 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica · Archivo.css div#datos1{position:absolute;top:1in;left:0;width:91%;height:70%} Existen otros aspectos importantes a la hora de maquetar una página web. Según un estudio realizado sobre legibilidad, las fuentes de tipo “serif”, es decir, aquellas que en los finales de las letras tienen remates, como por ejemplo “Times New Roman”, son más fáciles de distinguir por los lectores cuando el material está impreso. Sin embargo, en pantalla, este tipo de letras no son tan “distinguibles” por la pequeña “neblina” que introduce la resolución de la propia pantalla. En este caso lo aconsejable es utilizar tipos de fuente “sans serif”, es decir sin esos remates en los bordes, como es el caso de “Arial”. Respecto al tamaño no existe una norma estricta, pero al menos en la impresión se aconseja 12 px, y muchas web también han adoptado este tamaño como el más adecuado. Si existe mucho contenido de lectura en la web se debe poner un color al fondo (aconsejable casi blanco) y un color de letra (aconsejable muy oscuro) que contrasten mucho. 2.2.2.5 CSS3 CSS 3 apenas está en plena fase de desarrollo, por lo que la mayor parte de las capacidades de CSS3 no son soportadas por la mayoría de los navegadores, razón que no ha impedido que un grupo de desarrolladores haya decidido crear el sitio http://www.css3.info, en el cual es posible adentrarnos en algunas de los nuevos efectos que se podrán utilizar en un futuro no tan lejano. En breve se podrá comprobar si los anuncios de los diferentes navegadores acerca de su compatilibilidad con esta tercera entrega del estándar CSS son ciertos, o una vez más el poder que otorga CSS quedará mermado debido a su no implementación completa por parte de todos los navegadores. Autor: Antonio Martínez Martínez 27 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica 2.2.3 JavaScript 2.2.3.1 Introducción JavaScript es un lenguaje interpretado, es decir, que no requiere compilación, utilizado principalmente en páginas web, con una sintaxis semejante a la del lenguaje Java y el lenguaje C. Se trata de un lenguaje de programación del lado del cliente, porque es el navegador el que soporta la carga de procesamiento. Gracias a su compatibilidad con la mayoría de los navegadores modernos, es el lenguaje de programación del lado del cliente más utilizado, y su uso más común suele ser la creación de pequeños programas encargados de realizar acciones dentro del ámbito de una página web, tales como efectos especiales, o dotar de interactividad a la página. Además, el lenguaje JavaScript es “opensource”, por lo que cualquier persona puede utilizarlo sin comprar una licencia. · JavaScript no es JAVA El lenguaje de programación JavaScript, desarrollado por Netscape, Inc., no forma parte de la plataforma Java; comparte algunos atributos con el lenguaje de programación Java, pero se desarrolló de forma independiente. Al contrario que Java, no es un lenguaje orientado a objetos propiamente ya que no dispone de “Herencia”; es más bien un lenguaje dicho, basado en prototipos, ya que las nuevas clases se generan clonando las clases base (prototipos) y extendiendo su funcionalidad. 2.2.3.2 Evolución Histórica Los navegadores más populares interpretan el código JavaScript integrado dentro de las páginas web. Para interactuar con una página web se provee al lenguaje JavaScript de una implementación del DOM (ver apartado 2.2.3.3). El lenguaje fue inventado por Brendan Eich en la empresa Netscape Autor: Antonio Martínez Martínez 28 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Communications, que es la que fabricó los primeros navegadores web comerciales. Apareció por primera vez en el producto de Netscape llamado Netscape Navigator 2.0. Tradicionalmente, se venía utilizando en páginas web HTML, para realizar tareas y operaciones en el marco de la aplicación cliente, sin acceso a funciones del servidor. JavaScript se ejecuta en el agente de usuario al mismo tiempo que las sentencias van descargándose junto con el código HTML. Los autores inicialmente lo llamaron Mocha y más tarde LiveScript pero fue rebautizado como JavaScript en un anuncio conjunto entre Sun Microsystems y Netscape, el 4 de diciembre de 1995. En 1997 los autores propusieron JavaScript para que fuera adoptado como estándar de la European Computer Manufacturers' Association ECMA, que a pesar de su nombre no es europeo sino internacional, con sede en Ginebra. En junio de 1997 fue adoptado como un estándar ECMA, con el nombre de ECMAScript. Poco después también lo fue como un estándar ISO. JScript es la implementación de ECMAScript de Microsoft, muy similar al JavaScript de Netscape, pero con ciertas diferencias en el modelo de objetos del navegador que hacen a ambas versiones con frecuencia incompatibles. Para evitar estas incompatibilidades, el World Wide Web Consortium (W3C) diseñó el estándar Document Object Model (DOM, ó Modelo de Objetos del Documento en castellano), que incorporan Konqueror, las versiones 6 de Internet Explorer y Netscape Navigator, Opera versión 7, y Mozilla desde su primera versión. Autor: Antonio Martínez Martínez 29 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica 2.2.3.3 El Modelo de Objetos de Documento (DOM) 2.2.3.3.1 Introducción La programación orientada a objetos se ha popularizado enormemente en los últimos tiempos, y ya resulta difícil encontrar lenguajes de programación que no tengan una versión o que no estén basados en esta filosofía. JavaScript no se queda al margen de esta tendencia, y aunque no permite dos de las características clásicas de los lenguajes orientados a objetos (ni la herencia ni el polimorfismo), sí permite la creación y manipulación de objetos sencillos, y la definición de métodos y propiedades para dichos objetos. Sin embargo, lo que verdaderamente interesa conocer de un lenguaje de scripts como JavaScript, es el Modelo de Objetos de Documento (DOM, Document Object Model). El DOM ofrece una API que permite acceder/manipular los elementos del documento. En otras palabras, el DOM es el conjunto de objetos predefinidos que permite acceder a todos los elementos de una página y a ciertas características específicas del navegador. 2.2.3.3.2 ¿Qué es el DOM? El DOM es una jerarquía de objetos predefinidos que describen los elementos de la página web que está mostrando el navegador, así como otras características del proceso de navegación (como son el historial, el tamaño de la ventana de navegación o el contenido de la barra de estado del navegador). Si no se está familiarizado con la programación orientada a objetos, el concepto de objeto puede resultar algo difuso. Un objeto es, en el fondo, un conjunto de variables y funciones que actúa sobre dichas variables, encapsuladas en un mismo paquete. El acceso a las funciones y a las variables se realiza mediante una interfaz bien definida que aísla al programador de la necesidad de conocer cómo están implementadas internamente dichas funciones. De este modo, la programación orientada a objetos resulta muy intuitiva, y más próxima al conocimiento humano. Un ejemplo sencillo de esto es el que se muestra a continuación: Autor: Antonio Martínez Martínez 30 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica window.alert("¡Hola mundo!") Si bien no es conocido el funcionamiento interno de la función alert(), sí que lo es cómo invocarla. La abstracción es tal que basta con saber que se trata de una función del objeto window. A estas funciones se les llama métodos, y a las variables propiedades. 2.2.3.3.3 Compatibilidad entre los DOMs Actualmente no existe una gran diferencia entre el soporte de JavaScript que ofrecen los fabricantes de los navegadores principales, Netscape Navigator, Microsoft Internet Explorer, Mozilla, Opera o Safari. Lo que verdaderamente les diferencia es el Modelo de Objetos de Documento que incorporan. De hecho, el DOM podría considerarse algo independiente del propio lenguaje de scripts. Esta es la idea recogida en el esfuerzo del W3C por obtener un estándar para el Modelo de Objetos de Documento. El estándar se divide en 3 partes: ● DOM Nivel 1 Core (definiciones fundamentales) ● DOM Nivel 1 HTML ● DOM Nivel 1 XML 2.2.3.3.4 Acceso a los elementos del modelo Para acceder a una propiedad de un objeto del modelo se utiliza la siguiente nomenclatura: nombre_objeto.nombre_propiedad Un objeto de JavaScript es básicamente un array. Esto quiere decir que es posible acceder a las propiedades del objeto utilizando también la sintaxis Autor: Antonio Martínez Martínez 31 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica siguiente: nombre_objeto[“nombre_propiedad”] Para acceder a un método, se utiliza una sintaxis similar: nombre_objeto.nombre_metodo() Entre paréntesis se le pasan al método los argumentos necesarios para su ejecución. 2.2.3.4 Características y usos principales JavaScript es el siguiente paso, después de HTML, que puede dar un programador web que decida mejorar sus páginas y la potencia de sus proyectos. Es un lenguaje de programación bastante sencillo y pensado para hacer las cosas con rapidez, a veces con ligereza. Incluso las personas que no tengan una experiencia previa en la programación podrán aprender este lenguaje con facilidad y utilizarlo en toda su potencia con sólo un poco de práctica. Las dos principales características de JavaScript son, por un lado, que es un lenguaje basado en objetos (es decir, similar a la programación orientada a objetos, pero con menos restricciones), y por otro, JavaScript es además un lenguaje orientado a eventos, debido por supuesto al tipo de entornos en los que se utiliza (Windows y sistemas X-Windows). Esto implica que gran parte de la programación en JavaScript se centra en describir objetos (con sus variables de instancia y métodos de “clase”) y escribir funciones que respondan a movimientos del ratón, pulsación de teclas, apertura y cerrado de ventanas o carga de una página, entre otros eventos. Entre las acciones típicas que se pueden realizar en Javascript existen dos vertientes. Por un lado los efectos especiales sobre páginas web, para crear Autor: Antonio Martínez Martínez 32 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica contenidos dinámicos y elementos de la página que tengan movimiento, cambien de color o cualquier otro dinamismo. Por el otro, JavaScript permite ejecutar instrucciones como respuesta a las acciones del usuario, con lo que se pueden crear páginas interactivas con programas como calculadoras, agendas, o tablas de cálculo. JavaScript es un lenguaje con muchas posibilidades, permite la programación de pequeños scripts, pero también de programas más grandes con funciones, estructuras de datos complejas, etc. Además, pone a disposición del programador todos los elementos que forman la página web, para que éste pueda acceder a ellos y modificarlos dinámicamente. Con JavaScript el programador se convierte en el verdadero dueño y controlador de cada evento que ocurre en la página cuando la está visualizando el cliente. 2.2.3.5 ¿Qué NO es JavaScript? Ante todo no es un lenguaje de propósito general. No permite un control absoluto sobre los recursos del ordenador, tal y como sucede al crear un programa (aunque las últimas innovaciones de los navegadores en cuestiones de seguridad le están dando una mayor operatividad) . Cada programa en JavaScript sólo tiene acceso al documento HTML en el que va inmerso y, si acaso, a las ventanas en las que se ejecuta el navegador dentro del cual se está ejecutando el programa en JavaScript. Tampoco es un sustituto de los CGIs. Ciertas cosas no se pueden hacer en JavaScript, especialmente las relacionadas con acceso a ficheros en todos sus sentidos. Sin embargo es muy útil para depurar errores en los datos antes de pasárselos al CGI que los trata, por lo que el uso combinado de JavaScript y CGIs redunda en un mejor tratamiento de datos y un menor número de transacciones en la Web cuando se usan los CGIs. Autor: Antonio Martínez Martínez 33 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Por último, no es un lenguaje orientado a objetos, ya que, por ejemplo, no existe el concepto de clase. Es basado en objetos, de modo que se trabaja directamente con instancias de objetos. 2.2.3.6 Introducción a AJAX (Asynchronous JavaScript and XML) En este apartado simplemente se pretende dar una pequeña visión histórica de los comienzos de lo que hoy se conoce como AJAX, y que no es más que el uso de forma asíncrona de JavaScript y XML. A pesar de que el término “AJAX” fuese creado en 2005, la historia de las tecnologías que permiten AJAX se remonta a una década antes con la iniciativa de Microsoft en el desarrollo de Scripting Remoto. Sin embargo, las técnicas para la carga asíncrona de contenidos en una página existente sin requerir recarga completa se remontan al tiempo del elemento iframe (introducido en Internet Explorer 3 en 1996) y el tipo de elemento layer (introducido en Netscape 4 en 1997, abandonado durante las primeras etapas de desarrollo de Mozilla). Ambos tipos de elemento tenían el atributo “src” que podía tomar cualquier dirección URL externa, y cargando una página que contenga JavaScript que manipule la página paterna, pueden lograrse efectos parecidos al AJAX. El Microsoft's Remote Scripting (o MSRS, introducido en 1998) resultó un sustituto más elegante para estas técnicas, con envío de datos a través de un applet Java, el cual se puede comunicar con el cliente usando JavaScript. Esta técnica funcionó en ambos navegadores, Internet Explorer versión 4 y Netscape Navigator versión 4. Microsoft la utilizó en el Outlook Web Access provisto con la versión 2000 de Microsoft Exchange Server. AJAX es una técnica de desarrollo web para crear aplicaciones interactivas. Éstas se ejecutan en el cliente, es decir, en el navegador del usuario, y mantiene comunicación asíncrona con el servidor en segundo plano. De esta forma es Autor: Antonio Martínez Martínez 34 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica posible realizar cambios sobre la misma página sin necesidad de recargarla. Esto significa aumentar la interactividad, velocidad y usabilidad en la misma. En el apartado 2.2.6 extenderemos más la información sobre esta pseudotecnología. Autor: Antonio Martínez Martínez 35 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica 2.2.4 PHP 2.2.4.1 Introducción PHP es un lenguaje de programación usado generalmente para la creación de contenido para sitios web. PHP es un acrónimo recurrente que significa "PHP Hypertext Pre-processor" (inicialmente PHP Tools o Personal Home Page Tools), y se trata de un lenguaje interpretado usado para la creación de aplicaciones para servidores o creación de contenido dinámico para sitios web. Últimamente también para la creación de otro tipo de programas, incluyendo aplicaciones con interfaz gráfica usando la biblioteca GTK+. Puede combinarse con bases de datos MySQL, ofreciendo resultados muy interesantes para todas aquellas páginas web que pretendan figurar como activas y dinámicas. La creación y desarrollo de PHP ha estado ligada siempre al proyecto GNU, por lo que al igual que en GNU/Linux o MySQL, el desarrollo de este lenguaje depende de millones de programadores de todo el mundo. El lenguaje PHP es un lenguaje de programación de estilo clásico, es decir, es un lenguaje de programación con variables, sentencias condicionales, bucles, funciones.... No es un lenguaje de marcas como podrían ser HTML o XML. Está más cercano a JavaScript o a C. Pero a diferencia de Java o JavaScript (que se ejecutan en el navegador), PHP se ejecuta en el servidor, por eso nos permite acceder a los recursos que tenga el servidor, como por ejemplo podría ser una base de datos. El programa PHP es ejecutado en el servidor y el resultado enviado al navegador. El resultado es normalmente una página HTML pero igualmente podría ser una pagina WML¹. La Figura 2.2.4.1 ilustra este funcionamiento: ¹ Wireless Markup Language: Este lenguaje se utiliza para construir las páginas que aparecen en las pantallas de los teléfonos móviles y los asistentes personales digitales (PDA) dotados de tecnología WAP. Autor: Antonio Martínez Martínez 36 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Figura 2.2.4.1 2.2.4.2 Conceptos generales El fácil uso y la similitud con los lenguajes más comunes de programación estructurada, como C y Perl, permiten a la mayoría de los programadores experimentados crear aplicaciones complejas con una curva de aprendizaje muy suave. También les permite involucrarse en aplicaciones de contenido dinámico sin tener que aprender todo un nuevo grupo de funciones y prácticas. Debido al diseño de PHP, es posible crear aplicaciones con una interfaz gráfica para el usuario (también llamada GUI), utilizando la extensión PHPGTK. También puede ser usado desde la línea de comandos, de la misma manera que Perl o Python. Esta versión de PHP se llama PHP CLI (Command Line Interface). Su interpretación y ejecución se da en el servidor, en el cual se encuentra almacenado el script, y el cliente sólo recibe el resultado de la ejecución. Cuando el cliente hace una petición al servidor para que le envíe una página web, generada por un script PHP, el servidor ejecuta el intérprete de PHP, el cual procesa el script solicitado que generará el contenido de manera dinámica, pudiendo modificar el contenido a enviar, y devuelve el resultado al servidor, que se encarga de reenviarlo al cliente. Además es posible utilizar PHP para Autor: Antonio Martínez Martínez 37 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica generar archivos PDF, Flash, así como imágenes en diferentes formatos, entre otras cosas (la generación de archivos PDF es una de las potentes herramientas que ofrece PHP que han sido utilizadas en este proyecto). Al ser PHP un lenguaje que se ejecuta en el servidor, su funcionalidad es independiente del navegador, pero sin embargo para que las páginas PHP funcionen, el servidor donde están alojadas, obviamente, debe soportar PHP. Permite la conexión a diferentes tipos de servidores de bases de datos tales como MySQL, PostgreSQL, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird y SQLite, lo cual permite la creación de aplicaciones web muy robustas. PHP también tiene la capacidad de ser ejecutado en la mayoría de los sistemas operativos, tales como UNIX (por ejemplo Linux), Windows y Mac OS X, y puede interactuar con los servidores web más populares ya que existe en versión CGI, módulo para Apache, e ISAPI (Internet Server API, es una API para el servidor web IIS de Microsoft). El modelo PHP puede ser visto como una alternativa al sistema de Microsoft que utiliza ASP.NET/C#/VB.NET, a ColdFusion de la compañía Macromedia, a JSP/Java de Sun Microsystems, y al famoso CGI/Perl. Aunque su creación y desarrollo se da en el ámbito de los sistemas libres, bajo la licencia GNU, existe además un Entorno Integrado de Desarrollo (IDE) comercial llamado Zend Optimizer. · Usos de PHP Los principales usos de PHP son los siguientes: Ø Programación de páginas web dinámicas, habitualmente en combinación con el motor de base datos MySQL, aunque cuenta con soporte nativo para otros motores, incluyendo el estándar ODBC, lo que amplía en gran medida sus posibilidades de conexión. Autor: Antonio Martínez Martínez 38 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Ø Programación en consola, al estilo de Perl o Shell scripting. Ø Creación de aplicaciones gráficas independientes del navegador, por medio de la combinación de PHP y GTK (GIMP Tool Kit), lo que permite desarrollar aplicaciones de escritorio en los sistemas operativos en los que está soportado. 2.2.4.3 Evolución histórica PHP fue originalmente diseñado en Perl, seguido por la escritura de un grupo de CGI binarios escritos en lenguaje C por el programador Danés-Canadiense Rasmus Lerdorf en el año 1994 para mostrar su currículum vitae y guardar ciertos datos, como la cantidad de tráfico que su página web recibía. El 8 de junio del 1995 fue publicado "Personal Home Page Tools" después de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI. · PHP 3.2.4.3 Dos programadores israelíes del Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador sintáctico (parser en inglés) en el año 1997 y crearon la base del PHP 3, cambiando el nombre del lenguaje a la forma actual. Inmediatamente comenzaron experimentaciones públicas de PHP 3 y fue lanzado oficialmente en junio del 1998. Para 1999, Suraski y Gutmans reescribieron el código de PHP, produciendo lo que hoy se conoce como Zend Engine o motor Zend. También conformaron Zend Technologies en Ratmat Gan, Israel. · PHP 4 En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine 1.0. La última versión de PHP 4 disponible en Noviembre de 2006 es la 4.4.4. El Autor: Antonio Martínez Martínez 39 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica soporte a PHP 4 continua activo lanzando parches de seguridad para aquellas aplicaciones que lo requieren. · PHP 5 El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend Engine II (o Zend Engine 2). La versión más reciente de PHP 5 (en noviembre de 2006) es la 5.2.0, que incluye todas las ventajas que provee el nuevo Zend Engine 2 como: Ø Soporte sólido para Programación Orientada a Objetos (OOP) con PHP Data Objects Ø Mejoras de rendimiento Ø Mejor soporte para MySQL con extensión de rewrite completa Ø Mejor soporte a XML ( XPath, DOM... ) Ø Soporte nativo para SQLite Ø Soporte integrado para SOAP¹ Ø Iteradores de datos Ø Excepciones de errores ¹ Simple Object Access Protocol: Protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML. Autor: Antonio Martínez Martínez 40 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica · PHP 6 Está previsto el lanzamiento en breve de la rama 6 de PHP. Cuando se lance esta nueva versión, quedarán tres ramas activas en desarrollo (PHP 4, 5 y 6). Las diferencias que encontraremos frente a PHP 5 son: Ø Soportará Unicode Ø Limpieza de funcionalidades obsoletas como register_globals, safe_mode... Ø PECL (PHP Extension Community Library) Ø Mejoras en orientación a objetos 2.2.4.4 Ventajas e inconvenientes Ventajas Ø Es un lenguaje multiplataforma. Ø Capacidad de conexión con la mayoría de los manejadores de base de datos que se utilizan en la actualidad, destaca su conectividad con MySQL Ø Lee y manipula datos desde diversas fuentes, incluyendo datos que pueden ingresar los usuarios desde formularios HTML. Ø Capacidad de expandir su potencial utilizando la enorme cantidad de módulos (llamados exts o extensiones). Ø Posee una amplia documentación en su página oficial, entre la cual se destaca que todas las funciones del sistema están explicadas y Autor: Antonio Martínez Martínez 41 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica ejemplificadas en un único archivo de ayuda. Ø Es libre, por lo que se presenta como una alternativa de fácil acceso para todos. Ø Permite las técnicas de Programación Orientada a Objetos. Ø Permite crear formularios para la web. Ø Biblioteca nativa de funciones sumamente amplia e incluida. Ø No requiere definición de tipos de variables ni manejo detallado del bajo nivel. Ø Lo que hace tiempo era un problema, ahora se ha convertido en una ventaja más, y es el hecho de que a PHP se le achacaba el no contar con una herramienta de depuración. Desde la versión 5, Zend Tech proporciona un “debugger” para depurar los códigos PHP. Inconvenientes Ø El manejo de errores no es tan sofisticado como en ColdFusion o ASP. 2.2.4.5 Seguridad en PHP PHP es un potente lenguaje, y el intérprete, tanto incluido en el servidor Web como módulo o ejecutado como un binario CGI, puede acceder a ficheros, ejecutar comandos y abrir comunicaciones de red en el servidor. Todas estas características hacen que lo que se ejecute en el servidor Web sea seguro por defecto. PHP ha sido diseñado específicamente para ser un lenguaje más seguro a la hora de escribir programas CGI, Perl o C y con la correcta selección de las opciones de configuración, de tiempo de compilación y ejecución se consigue la Autor: Antonio Martínez Martínez 42 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica exacta combinación de libertad y seguridad que se necesita. Ya que existen diferentes modos de utilizar PHP, existen también multitud de opciones de configuración que permiten controlar su funcionamiento. Una gran selección de opciones garantiza que se pueda usar PHP para diferentes aplicaciones, pero también significa que existen combinaciones de estas opciones y configuraciones del servidor que producen instalaciones inseguras. 2.2.4.6 ¿Cuándo usar PHP? Si se está desarrollando bajo una plataforma UNIX o Linux, se debe elegir entre Perl y PHP, ambos excelentes. Para muchos desarrolladores, PHP es más simple a la hora de escribir scripts, haciéndolo más productivo en proyectos no tan grandes. En entornos Windows compite muy de cerca con ASP y Cold Fusion, aquí la elección se basa en asuntos un poco más técnicos y en la política que desee utilizarse para el sitio. ASP junto a IIS es probablemente más estable que PHP con IIS. Pero en términos puramente técnicos, PHP bajo Windows NT es mucho más estable que los otros dos (además de ser más rápido y utilizar menos recursos). De cualquier manera ASP ofrece una mejor integración en este ambiente, si bien siempre contará con la desventaja de no ser un lenguaje libre. 2.2.4.7 Resumen PHP es un lenguaje script procesado en el lado del servidor. Se muestra como código embebido dentro de una página HTML. El modo de operación de PHP es el siguiente: u El Navegador realiza una petición al servidor (se escribe la URL). u Después el servidor ejecuta el código PHP solicitado y retorna el código HTML generado al navegador. Autor: Antonio Martínez Martínez 43 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica u Por último el navegador muestra la respuesta del servidor.. Este tipo de iteración permite algunas operaciones complejas como conexiones a bases de datos o ejecución de programas. PHP además soporta un gran número de bases de datos (INFORMIX, ORACLE, Sybase, Solid, PostgreSQL, etc). También nos ofrece una gran variedad de funciones que nos permiten desarrollar múltiples funcionalidades, tales como enviar un e-mail, subir un archivo, crear una imagen en tiempo de ejecución, interactuar con diversos protocolos de comunicación, interactuar con documentos XML, autenticación, creación dinámica de documentos PDF, etc. Las principales características de PHP son: Ø Su rapidez Ø Su facilidad de aprendizaje Ø Su soporte multiplataforma tanto de diversos Sistemas Operativos, como servidores HTTP y de bases de datos Ø El hecho de que se distribuye de forma gratuita bajo una licencia abierta. Autor: Antonio Martínez Martínez 44 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica 2.2.5 MySQL 2.2.5.1 Introducción MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones. MySQL AB desarrolla MySQL como software libre en un esquema de licenciamiento dual. Por un lado lo ofrece bajo la GNU GPL, pero, empresas que quieran incorporarlo en productos privativos pueden comprar a la empresa una licencia que les permita ese uso. Al contrario que proyectos como Apache, donde el software es desarrollado por una comunidad pública, y el copyright del código está en poder del autor individual, MySQL está poseído y patrocinado por una empresa privada, que posee el copyright de la mayor parte del código. Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias privativas, la compañía ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que colaboran vía Internet. Este gestor de bases de datos es, probablemente, el gestor más usado en el mundo del software libre, debido a su gran rapidez y facilidad de uso. Esta gran aceptación es debida, en parte, a que existen infinidad de librerías y otras herramientas que permiten su uso a través de gran cantidad de lenguajes de programación, además de su fácil instalación y configuración. 2.2.5.2 Evolución histórica SQL (“Structured Query Language”, Lenguaje de Consulta Estructurado) fue comercializado por primera vez en 1981 por IBM, y posteriormente presentado a ANSI. Desde entonces ha sido considerado como un estándar para las bases de datos relacionales. Desde 1986, el estándar SQL ha aparecido en diferentes versiones como por ejemplo: SQL:92, SQL:99, SQL:2003. MySQL es una idea originaria de la empresa opensource MySQL AB establecida inicialmente en Autor: Antonio Martínez Martínez 45 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Suecia en 1995 y cuyos fundadores son David Axmark, Allan Larsson, y Michael "Monty" Widenius. El objetivo que persigue esta empresa consiste en que MySQL cumpla el estándar SQL, pero sin sacrificar velocidad, fiabilidad o usabilidad. Michael Widenius en la década de los 90 trató de usar mSQL para conectar las tablas usando rutinas de bajo nivel ISAM. Sin embargo, mSQL no era rápido y flexible para sus necesidades. Esto lo llevó a crear una API SQL denominada MySQL para bases de datos, muy similar a la de mSQL, pero más portable. La procedencia del nombre de MySQL no es clara. Desde hace más de 10 años, las herramientas han mantenido el prefijo My. También, se cree que tiene relación con el nombre de la hija del cofundador Monty Widenius, que se llama My. 2.2.5.3 Conceptos Generales MySQL es un sistema de administración de bases de datos. Una base de datos es una colección estructurada de datos. Esta puede ir desde una simple lista de la compra a una galería de pinturas o el vasto volumen de información en una red corporativa. Para agregar, acceder a y procesar datos guardados en un ordenador, se necesita un administrador como MySQL Server. Dado que los ordenadores son máquinas capaces de manejar cantidades ingentes de información, los administradores de bases de datos juegan un papel central en computación, como aplicaciones independientes o como parte de otras aplicaciones. MySQL es un sistema de administración relacional de bases de datos. Una base de datos relacional archiva datos en tablas separadas en vez de colocar todos los datos en un gran archivo. Esto permite velocidad y flexibilidad. Las tablas están conectadas por relaciones definidas que hacen posible combinar datos de diferentes tablas para una misma petición. Autor: Antonio Martínez Martínez 46 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Las principales características de este gestor de bases de datos son las siguientes: Ø Aprovecha la potencia de sistemas multiprocesador, gracias a su implementación multihilo. Ø Soporta gran cantidad de tipos de datos para las columnas. Ø Dispone de API's en gran cantidad de lenguajes (C, C++, Java, PHP, etc). Ø Gran portabilidad entre sistemas. Ø Gestión de usuarios y passwords. MySQL es muy utilizado en aplicaciones web como MediaWiki o Drupal, en plataformas (Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por herramientas de seguimiento de errores como Bugzilla. Su popularidad como aplicación web está muy ligada a PHP, que a menudo aparece en combinación con MySQL. Se trata de una base de datos muy rápida en la lectura cuando utiliza el motor no transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta concurrencia en la modificación. En aplicaciones web hay baja concurrencia en la modificación de datos y, en cambio, el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo de aplicaciones. Algunas características avanzadas de MySQL son: ● Usa GNU Automake, Autoconf, y Libtool para portabilidad ● Uso de multihilos mediante hilos del kernel. ● Usa tablas en disco b-tree para búsquedas rápidas con compresión de Autor: Antonio Martínez Martínez 47 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica índice ● Tablas hash en memoria temporales ● El código MySQL se prueba con Purify (un detector de memoria perdida comercial) así como con Valgrind, una herramienta GPL ● Completo soporte para operadores y funciones en cláusulas select y where. ● Completo soporte para cláusulas group by y order by, soporte de funciones de agrupación ● Seguridad: ofrece un sistema de contraseñas y privilegios seguro mediante verificación basada en el host y el tráfico de contraseñas está encriptado al conectarse a un servidor. ● Soporta gran cantidad de datos. MySQL Server tiene bases de datos de hasta 50 millones de registros. ● Se permiten hasta 64 índices por tabla (32 antes de MySQL 4.1.2). Cada índice puede consistir desde 1 hasta 16 columnas o partes de columnas. El máximo ancho de límite son 1000 bytes (500 antes de MySQL 4.1.2). ● Los clientes se conectan al servidor MySQL usando sockets TCP/IP en cualquier plataforma. En sistemas Windows se pueden conectar usando named pipes y en sistemas Unix usando ficheros socket Unix. ● En MySQL 5.0, los clientes y servidores Windows se pueden conectar usando memoria compartida. Autor: Antonio Martínez Martínez 48 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica ● MySQL contiene su propio paquete de pruebas de rendimiento proporcionado con el código fuente de la distribución de MySQL Las siguientes características son implementadas únicamente por MySQL: ● Múltiples motores de almacenamiento (MyISAM, Merge, InnoDB, BDB, Memory/heap, MySQL Cluster, Federated, Archive, CSV, Blackhole y Example en 5.x), permitiendo al usuario escoger la que sea más adecuada para cada tabla de la base de datos. ● Agrupación de transacciones, reuniendo múltiples transacciones de varias conexiones para incrementar el número de transacciones por segundo. Los motores de almacenamiento de MySQL incluyen algunos que tratan con tablas transaccionales y otros que no lo hacen: ● MyISAM trata tablas no transaccionales. Proporciona almacenamiento y recuperación de datos rápida ya que no tiene que hacer comprobaciones de la integridad referencial, ni bloquear las tablas para realizar las operaciones por la ausencia de características de atomicidad. Este tipo de tablas está especialmente indicado para sistemas que no tienen un número elevado de inserciones como pueden ser las páginas web, motivo por el cual se ha escogido este tipo de tablas para la base de datos del presente proyecto. MyISAM se soporta en todas las configuraciones MySQL, y es el motor de almacenamiento por defecto. ● El motor de almacenamiento MEMORY proporciona tablas en memoria. El motor de almacenamiento MERGE permite a una colección de tablas MyISAM idénticas, ser tratadas como una simple tabla. Como MyISAM, los motores de almacenamiento MEMORY y MERGE tratan tablas no transaccionales y ambos se incluyen en MySQL por defecto. Autor: Antonio Martínez Martínez 49 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Nota: El motor de almacenamiento MEMORY anteriormente se conocía como HEAP. ● Los motores de almacenamiento InnoDB y BDB proporcionan tablas transaccionales. BDB se incluye en la distribución binaria MySQL-Max en aquellos sistemas operativos que la soportan. InnoDB también se incluye por defecto en todas las distribuciones binarias de MySQL 5.0 . En distribuciones fuente, puede activar o desactivar estos motores de almacenamiento configurando MySQL a su gusto. Soporta transacciones de tipo ACID y bloqueo de registros e integridad referencial. InnoDB ofrece una fiabilidad y consistencia muy superior a MyISAM, si bien el mejor rendimiento de uno u otro formato dependerá de la aplicación específica. ● El motor de almacenamiento EXAMPLE es un motor de almacenamiento “tonto” que no hace nada. Puede crear tablas con este motor, pero no puede almacenar datos ni recuperarlos. El objetivo es que sirva como ejemplo en el código MySQL para ilustrar cómo escribir un motor de almacenamiento. Como tal, su interés primario es para desarrolladores. ● NDB Cluster es el motor de almacenamiento usado por MySQL Cluster para implementar tablas que se particionan en varias máquinas. Está disponible en distribuciones binarias MySQL-Max 5.0. Este motor de almacenamiento está disponible para Linux, Solaris, y Mac OS X. Se añadirá soporte para este motor de almacenamiento en otras plataformas, incluyendo Windows, en próximas versiones. ● El motor de almacenamiento ARCHIVE se usa para guardar grandes cantidades de datos sin índices con una huella muy pequeña. ● El motor de almacenamiento CSV guarda datos en ficheros de texto usando formato de valores separados por comas. ● El motor de almacenamiento FEDERATED se añadió en MySQL 5.0.3. Autor: Antonio Martínez Martínez 50 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Este motor guarda datos en una base de datos remota. En esta versión sólo funciona con MySQL a través de la API MySQL C Client. En futuras versiones, será capaz de conectar con otras fuentes de datos usando otros drivers o métodos de conexión clientes. Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes de programación, acceder a las bases de datos MySQL, incluyendo C, C++, C#, Pascal, Delphi (via dbExpress), Eiffel, Smalltalk, Java (con una implementación nativa del driver de Java), Lisp, Perl, PHP, Python, Ruby, REALbasic (Mac), FreeBASIC, y Tcl; cada uno de estos utiliza una API específica. También existe un interfaz ODBC, llamado MyODBC que permite a cualquier lenguaje de programación que soporte ODBC comunicarse con las bases de datos MySQL. A continuación se muestran las características principales de una de las últimas versiones, la 5.0.22: Ø Un amplio subconjunto de ANSI SQL 99, y varias extensiones. Ø Soporte a multiplataforma Ø Procedimientos almacenados Ø Disparadores (triggers) Ø Cursores Ø Vistas actualizables Ø Soporte a VARCHAR Ø INFORMATION_SCHEMA Ø Modo Strict (a cualquier columna para la que no se proporcione un Autor: Antonio Martínez Martínez 51 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica valor explícitamente se le asignará su valor por defecto, explícito o implícito) Ø Soporte X/Open XA de transacciones distribuidas; transacción en dos fases como parte de esto, utilizando el motor InnoDB de Oracle Ø Motores de almacenamiento independientes (MyISAM para lecturas rápidas, InnoDB para transacciones e integridad referencial) Ø Transacciones con los motores de almacenamiento InnoDB, BDB Y Cluster; puntos de recuperación(savepoints) con InnoDB Ø Soporte para SSL Ø Query cache (Almacenamiento del texto de una sentencia SELECT junto con el correspondiente resultado que se envió al cliente). Ø Sub-SELECTs (o SELECTs anidados) Ø Indexado y búsqueda de campos de texto completos usando el motor de almacenamiento MyISAM Ø Soporte completo para Unicode Ø Conforme a las reglas ACID usando los motores InnoDB, BDB y Cluster Ø MySQL Cluster 2.2.5.4 Mejoras Futuras El mapa de ruta de MySQL 5.1 indica soporte para: Particionado de la base de datos Backup en línea para todos los motores de almacenamiento Autor: Antonio Martínez Martínez 52 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Replicación segura Restricciones a nivel de columna Planificación de eventos Funciones XML 2.2.5.5 PostgreSQL, ¿la alternativa a MySQL? PostGreSQL es un sistema de gestión de bases de datos objeto-relacional (ORDBMS) basado en el proyecto POSTGRES, de la universidad de Berkeley. El director de este proyecto es el profesor Michael Stonebraker, y fue patrocinado por Defense Advanced Research Projects Agency (DARPA), el Army Research Office (ARO), el National Science Foundation (NSF), y ESL, Inc. PostGreSQL es una derivación libre (OpenSource) de este proyecto, y utiliza el lenguaje SQL92/SQL99, así como otras características que se indican más adelante. Fue el pionero en muchos de los conceptos existentes en el sistema objetorelacional actual, incluido más tarde en otros sistemas de gestión comerciales. PostGreSQL es un sistema objeto-relacional, ya que incluye características de la orientación a objetos, como puede ser la herencia, tipos de datos, funciones, restricciones, disparadores, reglas e integridad transaccional. A pesar de esto, PostGreSQL no es un sistema de gestión de bases de datos puramente orientado a objetos. Algunas de sus principales características son: · Funciones Las funciones consisten en bloques de código que se ejecutan en el servidor. Pueden escribirse en una gran variedad de lenguajes, tales como PL/pgSQL, C, Autor: Antonio Martínez Martínez 53 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica C++, PL/PHP, PL/Python, etc., permitiendo desde las operaciones básicas de programación, tales como bifurcaciones y bucles, hasta las complejidades de la programación orientada a objetos o la programación funcional. Los disparadores (triggers) son funciones enlazadas a operaciones sobre los datos. Puede definirse si las funciones serán ejecutadas con los permisos del llamador o del usuario que definió la función. · Alta concurrencia Mediante un sistema denominado MVCC (Acceso concurrente multiversión) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Esta estrategia es superior al uso de bloqueos por tabla o por filas, común en otras bases, eliminando la necesidad del uso de bloqueos explícitos. · Amplia variedad de tipos nativos PostgreSQL provee nativamente soporte para: o Números de precisión arbitraria. o Texto de largo ilimitado. o Figuras geométricas (con una variedad de funciones asociadas) o Direcciones IP (IPv4 e IPv6). o Bloques de direcciones estilo CIDR (Encaminamiento InterDominios sin Clases, representa la última mejora en el modo en que se interpretan las direcciones IP). o Direcciones MAC. o Arreglos. Autor: Antonio Martínez Martínez 54 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Adicionalmente los usuarios pueden crear sus propios tipos de datos, los que pueden ser por completo indexables gracias a la infraestructura GiST de PostgreSQL. Algunos ejemplos son los tipos de datos GIS creados por el proyecto PostGIS. · Otras características o Claves externas, también denominadas Llaves externas o Llaves Foráneas (foreign keys). o Disparadores (triggers). o Vistas. o Integridad transaccional. o Herencia de tablas. o Tipos de datos y operaciones geométricas. 2.2.5.5.1 Comparativa final: MySQL vs PostgreSQL · Lo mejor de PostgreSQL ... Las características positivas que posee este gestor son: Ø Posee una gran escalabilidad. Es capaz de ajustarse al número de CPUs y a la cantidad de memoria que posee el sistema de forma óptima, haciéndole capaz de soportar una mayor cantidad de peticiones simultáneas de manera correcta (en algunas referencias se dice que ha llegado a soportar el triple de carga de lo que soporta MySQL). Autor: Antonio Martínez Martínez 55 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Ø Implementa el uso de rollback's, subconsultas y transacciones, haciendo su funcionamiento mucho más eficaz, y ofreciendo soluciones en campos en las que MySQL no podría (aunque la diferencia cada vez es menor en este aspecto). Ø Tiene la capacidad de comprobar la integridad referencial, así como también la de almacenar procedimientos en la propia base de datos, equiparándolo con los gestores de bases de datos de alto nivel, como puede ser Oracle. · ... y lo peor Por contra, los mayores inconvenientes que se pueden encontrar a este gestor son: Ø Consume gran cantidad de recursos. Ø Tiene un límite de 8K por fila, aunque se puede aumentar a 32K, con una disminución considerable del rendimiento. Ø Es de 2 a 3 veces más lento que MySQL. · Lo mejor de MySQL … Ø Sin lugar a duda, lo mejor de MySQL es su velocidad a la hora de realizar las operaciones, lo que le hace uno de los gestores que ofrecen mayor rendimiento. Ø Su bajo consumo lo hacen apto para ser ejecutado en una máquina con escasos recursos sin ningún problema. Autor: Antonio Martínez Martínez 56 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Ø Las utilidades de administración de este gestor son envidiables para muchos de los gestores comerciales existentes, debido a su gran facilidad de configuración e instalación. Ø Tiene una probabilidad muy reducida de corromper los datos, incluso en los casos en los que los errores no se produzcan en el propio gestor, sino en el sistema en el que está. Ø El conjunto de aplicaciones Apache-PHP-MySQL es uno de los más utilizados en Internet en servicios de foro (Barrapunto.com) y de buscadores de aplicaciones (Freshmeat.net). · ... y lo peor Ø No es viable en el manejo de grandes bases de datos, a las que se acceda continuamente, ya que no implementa una buena escalabilidad. Tras evaluar los pros y contras de ambos, la decisión final de adoptar MySQL en lugar de PostgreSQL como gestor de la base de datos de este proyecto se fundamenta en la experiencia previa en el primero, así como en que el volumen de información que manejará la aplicación no se considera lo suficientemente importante como para haber optado por un lenguaje del que no se tenía conocimiento previo y para el que, consecuentemente, hubiese sido necesario un período de aprendizaje mucho mayor que para MySQL. Autor: Antonio Martínez Martínez 57 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica 2.2.6 AJAX 2.2.6.1 Introducción Como ya se comentó en el apartado 2.2.3, AJAX, acrónimo de Asynchronous JavaScript And XML (JavaScript y XML asíncronos, donde XML es un acrónimo de eXtensible Markup Language), es una técnica de desarrollo web para crear aplicaciones interactivas. Éstas se ejecutan en el cliente, es decir, en el navegador del usuario, y mantiene comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre la misma página sin necesidad de recargarla. Esto significa aumentar la interactividad, velocidad y usabilidad en la misma. AJAX es una combinación de tres tecnologías ya existentes: ● XHTML (o HTML) y hojas de estilos en cascada (CSS) para el diseño que acompaña a la información. ● Document Object Model (DOM) accedido con un lenguaje de scripting por parte del usuario, especialmente implementaciones ECMAScript como JavaScript y JScript, para mostrar e interactuar dinámicamente con la información presentada. ● El objeto XMLHttpRequest para intercambiar datos asincrónicamente con el servidor web. En algunos frameworks y en algunas situaciones concretas, se usa un objeto iframe en lugar del XMLHttpRequest para realizar dichos intercambios. ● XML es el formato usado comúnmente para la transferencia de vuelta al servidor, aunque cualquier formato puede funcionar, incluyendo HTML preformateado, texto plano, JSON¹ y hasta EBML². ¹ JSON (JavaScript Object Notation): es un subconjunto de la notación literal de objetos de Javascript pero no requiere el uso de Javascript. ² EBML (Extensible Binary Meta Language ): diseñado como una extensión binaria Autor: Antonio Martínez Martínez 58 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Al igual que DHTML o LAMP (equivalente en Linux de WAMP, ver apartado 3.1.1), AJAX no constituye una tecnología en sí, sino que es un término que engloba a un grupo de éstas que trabajan conjuntamente. 2.2.6.2 Funcionamiento básico El modelo clásico de aplicaciones Web funciona de esta forma: La mayoría de las acciones del usuario en la interfaz disparan una petición HTTP al servidor web. El servidor efectúa un proceso (recopila información, procesa números, hablando con varios sistemas propietarios), y le devuelve una pagina HTML al cliente (ver Figura 2.2.6.1). Este es un modelo adaptado del uso original de la Web como un medio hipertextual, pero como es sabido, lo que hace a la Web buena para el hipertexto, no la hace necesariamente buena para las aplicaciones de software. Este acercamiento tiene mucho sentido a nivel técnico, pero no proporciona una buena experiencia de usuario, es decir, un manejo intuitivo durante el proceso de navegación. Mientras el servidor esta haciendo lo suyo, ¿qué esta haciendo el usuario? Esperar. Y en cada paso de la tarea, el usuario espera más. Obviamente, si se estuviera diseñando la Web desde cero para aplicaciones, no se querría hacer esperar a los usuarios. Una vez que la interfaz está cargada, ¿por qué la interacción del usuario debería detenerse cada vez que la aplicación necesita algo del servidor? De hecho, ¿por qué debería el usuario percibir la interacción con el servidor? simplificada de XML, con el propósito de almacenar y manipular datos de forma jerárquica con campos de longitud variable. Autor: Antonio Martínez Martínez 59 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Figura 2.2.6.1 El modelo tradicional para las aplicaciones Web (izq.) comparado con el modelo de AJAX (der.). 2.2.6.2.1 ¿Por qué es diferente AJAX? Una aplicación AJAX elimina la naturaleza arrancar-frenar- arrancar-frenar de la interacción en la Web introduciendo un intermediario -un motor AJAXentre el usuario y el servidor. Parecería que sumar una capa a la aplicación la haría menos reactiva, pero en realidad es justamente al contrario. En vez de cargar un pagina Web, al inicio de la sesión, el navegador carga el motor AJAX (escrito en JavaScript y usualmente sacado en un frame oculto). Este motor es el responsable de renderizar la interfaz que el usuario ve y de comunicarse con el servidor en nombre del usuario. El motor AJAX permite que Autor: Antonio Martínez Martínez 60 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica la interacción del usuario con la aplicación suceda asincrónicamente (independientemente de la comunicación con el servidor). Así, el usuario nunca estará mirando una ventana en blanco del navegador y un icono de reloj de arena esperando a que el servidor haga algo. Cada acción de un usuario, que normalmente generaría una petición HTTP, toma la forma de una llamada JavaScript al motor AJAX en vez de esa petición. Cualquier respuesta a una acción del usuario que no requiera un viaje de vuelta al servidor (como una simple validación de datos, edición de datos en memoria, incluso algo de navegación) es manejado por su cuenta. Si el motor necesita algo del servidor para responder (sea enviando datos para procesar, cargar código adicional, o recuperando nuevos datos) hace las peticiones asincrónicamente, usualmente usando XML, sin frenar la interacción del usuario con la aplicación. La Figura 2.2.6.2 representa este funcionamiento. Autor: Antonio Martínez Martínez 61 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Figura 2.2.6.2 El patrón de interacción síncrona de una aplicación Web tradicional (arriba) comparada con el patrón asíncrono de una aplicación AJAX (abajo). 2.2.6.3 Grandes usuarios de AJAX Google está haciendo una significativa inversión en el acercamiento a AJAX. Todos los grandes productos que Google ha introducido en el ultimo año (Orkut, Gmail, la última versión de Google Groups, Google Suggest, y Google Maps ) son Autor: Antonio Martínez Martínez 62 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica aplicaciones AJAX. Otros están siguiendo la tendencia: muchas de las funciones que los usuarios utilizan con asiduidad en Flickr dependen de AJAX, y el motor de búsqueda de Amazon A9.com aplica tecnologías similares. 2.2.6.4 Navegadores que permiten y no permiten AJAX Navegadores que permiten AJAX Ø Navegadores basados en Gecko como Mozilla, Mozilla Firefox, SeaMonkey, Camino, Flock, Epiphany, Galeon y Netscape versión 7.1 y superiores Ø Microsoft Internet Explorer para Windows versión 5.0 y superiores, y los navegadores basados en él Ø Navegadores con el API KHTML versión 3.2 y superiores implementado, incluyendo Konqueror versión 3.2 y superiores, Apple Safari versión 1.2 y superiores, y el Web Browser for S60 de Nokia tercera generación y posteriores Ø Opera versión 8.0 y superiores, incluyendo Opera Mobile Browser versión 8.0 y superiores Navegadores que no permiten AJAX Ø Opera 7 y anteriores Ø Microsoft Internet Explorer para Windows versión 4.0 y anteriores Ø Microsoft Internet Explorer para Macintosh, todas las versiones Ø Dillo Autor: Antonio Martínez Martínez 63 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica Ø Navegadores basados en texto como Lynx y Links Ø Navegadores para incapacitados visuales (braille) 2.2.6.5 Solución implementada: XAJAX 2.2.6.5.1 Conceptos básicos XAJAX es una biblioteca de código abierto de PHP capaz de generar aplicaciones Web con tecnología AJAX, usando además HTML, CSS, y JavaScript . Utiliza un método de trabajo basado en funciones, designando qué funciones de código PHP se convierten en funciones AJAX. Las aplicaciones desarrolladas con XAJAX pueden comunicarse asincrónicamente con funciones que se encuentran del lado del servidor y así actualizar el contenido de una página sin tener que recargarla nuevamente. Por otro lado, la biblioteca XAJAX es una librería puramente centrada en PHP. Con la introducción de la misma el manejo de AJAX en PHP se hace mucho más sencillo y, sobre todo, sólo se necesita escribir sentencias muy cortas y simples en JavaScript, por lo que es una de las ventajas frente a otras soluciones. 2.2.6.5.2 Modo de funcionamiento Ø Paso 1: Incluir la librería XAJAX de la siguiente manera: require_once("xajax.inc.php"); Ø Paso 2: Creamos una instancia del objeto XAJAX: Autor: Antonio Martínez Martínez 64 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica $xajax = new xajax(); Ø Paso 3: Registramos las funciones PHP que queremos hacer accesibles dede JavaScript: $xajax->registerFunction("miFuncion"); Ø Paso 4: Escribimos las funciones PHP que vamos a registrar. No hay que olvidarse de que debemos devolver el XML: function miFuncion($arg) { ..... $objResponse = new xajaxResponse(); ..... $objResponse->addAssign("Id_de_elemento","innerHTML", $contenido); ...... return $objResponse->getXML(); } Ø Paso 5: Le indicamos a XAJAX que procese las peticiones: $xajax->processRequests(); Ø Paso 6: Debemos incluir el script JavaScript entre las cabeceras HEAD de nuestro código HTML: <?php $xajax->printJavascript(); ?> Ø Paso 7: Llamamos a la función desde un evento cualquiera: <button onmousedown="xajax_miFuncion(args);" /> Autor: Antonio Martínez Martínez 65 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 2 Introducción Teórica 2.2.6.5.3 Uso en Sistema SELWA El uso que se ha hecho de AJAX en el presente proyecto se centra en los botones de ayuda de la aplicación. Allá donde haya un icono de ayuda, o cualquier otro icono que requiera una breve explicación de su acción, si se coloca el ratón sobre él, el sistema lanza una petición AJAX. Para ello, y utilizando la biblioteca XAJAX, se realiza una consulta a la base de datos, pasando un par de valores como parámetros, en función de los cuales, se devuelve el mensaje correspondiente a dicho icono de ayuda. 2.2.6.6 Conclusión A pesar de que el uso de AJAX no es muy extenso en este proyecto, se trata de una herramienta cuyo desarrollo se está extendiendo con una rapidez increíble, bien avalada, por supuesto, por los numerosos “clientes” de renombre que utilizan sus servicios para implementar sus productos estrella. No se trata, sin embargo, de una técnica de la que haya que abusar en una página web, pues su misión es realizar pequeñas consultas en un segundo plano, de modo que el usuario no interrumpa su interacción debido a largos tiempos de espera. Autor: Antonio Martínez Martínez 66 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación 3 Diseño e Implementación 3.1 Software utilizado Solamente se ha utilizado dos tipos de software para la elaboración de este proyecto. Por un lado, nos hemos servido de la herramienta WAMP5 con el fin de tener un servidor web Apache donde poder realizar las pruebas de la aplicación. Y por otro, se ha usado la herramienta Drawing del paquete OpenOffice 2.0 para la edición de los iconos del sistema así como para la creación de los planos de la base de datos y de la estructura de la aplicación. No ha sido necesario usar ninguna aplicación más, pues la programación de las distintas partes, bien sean CSS, XHTML, PHP o JavaScript, se ha realizado sobre simples documentos de texto. A continuación entraremos a detallar cuál es el funcionamiento de la herramienta WAMP5, qué aplicaciones contiene y su manejo básico. 3.1.1 Herramienta WAMP5 Existe una manera de comenzar a utilizar PHP5 en Windows sin tener que sufrir las complicaciones típicas de la instalación de los servidores necesarios para programar en PHP. Se trata de instalar el paquete llamado WAMP, que permite instalar y configurar en un solo proceso el servidor Apache, la base de datos MySQL y el módulo de programación en PHP versión 5. De hecho, WAMP es el acrónimo que define la combinación de Windows, Apache, MySQL y uno o más lenguajes de script que pueden ser PHP, Perl y/o Python. Es un conjunto o paquete de software construido como el ya popular LAMP, que utiliza Linux en lugar de Windows. WAMP es un sistema indicado para los usuarios que no tienen instalado en el sistema ninguno de los programas necesarios para programar en PHP (Apache, Autor: Antonio Martínez Martínez 67 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación PHP y MySQL), ya que realiza una instalación completa y desde cero. Pero también pueden utilizar este programa los usuarios que disponen de Apache, PHP y/o MySQL en su sistema. En cuyo caso, simplemente se realizará otra copia de las aplicaciones en un directorio distinto, que en principio, no tiene por qué interferir con las otras instalaciones alojadas en el equipo. Ø Aplicaciones que contiene WAMP5 El software que se instala con WAMP5 contiene los siguientes servidores y programas: ● Apache 1.4.4. El servidor de páginas web más extendido del mercado. Aunque la última versión de este servidor es Apache 2, se instala una versión anterior que resulta más estable. Existe un Add-on que permite sustituir la versión 1.4.4 de Apache por la última versión. ● PHP5. El motor renovado del lenguaje. ● MySQL. La base de datos más extendida para utilizar con PHP. ● PHPmyadmin. Un software que permite administrar una base de datos a través de una interfaz web. ● SQLitemanager. Un sistema para administrar una base de datos a partir de sentencias SQL. Ø Instalación de WAMP La instalación se realiza a través de un ejecutable Windows donde se pueden introducir muy pocas opciones de configuración, apenas el directorio donde se desea que se instalen los programas y aquel que actuará como raíz a la hora de realizar las llamadas a “localhost”. Después del proceso de instalación se habrán creado un par de servicios con el servidor web y el de bases de datos: ● Servicio wampapache: Relacionado con el servidor Apache. ● Servicio wampmysql: Relacionado con la base de datos MySQL. Autor: Antonio Martínez Martínez 68 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Además, dentro del directorio donde haya sido instalado WAMP5 se habrá creado una carpeta llamada "www", que corresponde con el directorio de publicación, es decir, el lugar donde se deben colocar las páginas web. Durante la instalación también hay que decidir si se desea que WAMP5 se inicie automáticamente al arrancar el equipo o si, por el contrario, que su puesta en marcha se realice manualmente. Ø Puesta en marcha de los servidores Al instalar WAMP5 se crea un grupo de programas llamado WampServer, donde habrá una opción llamada "Start Wampserver", que será necesario ejecutar si no hemos seleccionado que el servidor se inicie automáticamente. Una vez arrancado WampServer se creará un icono en la barra de tareas con una forma similar a la de un marcador de velocidad. Al pulsar sobre ese icono se abrirá un menú con opciones variadas para gestionar los servicios relacionados con el paquete. La Figura 3.1.1 muestra ese menú: Autor: Antonio Martínez Martínez 69 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.1.1 Ø Add ons Existen varios añadidos que se pueden instalar con WAMP, para ampliar las posibilidades del paquete. Por ejemplo, es posible instalar un add-on para permitir que WAMP trabaje con PHP5 o bien PHP4, creando una nueva opción en el menú de WAMP5 que permite cambiar de una versión a otra de PHP. Hay otros añadidos disponibles: Instalar ActiveState Perl en nuestro sistema, para permitir la ejecución de CGI. Actualizar a la versión de Apache 2. Instalar Zend Optimizer, para mejorar el comportamiento en tiempo de ejecución de PHP. Por último, el add-on que instala Webalizer, un sistema para obtener estadísticas de uso del servidor web. Autor: Antonio Martínez Martínez 70 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Se puede obtener más información de este sistema y opciones para la descarga en la página oficial de WAMP. [2] Autor: Antonio Martínez Martínez 71 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación 3.2 Visión global de la aplicación 3.2.1 Punto de vista teórico En este punto se pretende dar una visión general del funcionamiento y estructura del sistema SELWA. Son dos los objetivos fundamentales que persigue la aplicación. En primer lugar, surge como medio de mantener plenamente informados a los padres/tutores de un niño con necesidades educativas especiales, mediante el acceso de los propios padres/tutores a cualesquiera de los datos reflejados en la base de datos relativos a su hijo. Asimismo, permite la integración y distribución de la información de un alumno, entre los distintos “actores” que forman parte de su vida académica, en este caso, profesor, especialista/s, y por supuesto, padres/tutores, de tal forma que TODOS acceden a TODA la información que diariamente se refleja del alumno, y como consecuencia de esto, todos tienen la posibilidad de obtener informes personalizados, reflejando los campos que cada cual considere más relevantes para el seguimiento periódico del alumno. Es en este punto donde enlazamos con el segundo objetivo de SELWA: la automatización de informes. Gracias a la clasificación en áreas y subáreas que se ha realizado a la hora de reflejar un apunte diario en la actividad de un alumno, el sistema es completamente autónomo a la hora de generar un informe de un período determinado y acerca de unos aspectos determinados. Con un simple “click”, y tras haber especificado el período a evaluar sobre un alumno en cuestión, el sistema nos genera un informe en formato “pdf” clasificado por días, áreas, subáreas y asuntos. Estos son los dos grandes objetivos que persigue el presente proyecto. Más adelante, en el apartado “Líneas futuras” se especifica el resto de posibilidades que se le pueden añadir al sistema, para hacerlo una herramienta perfecta para el trabajo diario de un profesor, de un especialista asociado a un alumno o de un Autor: Antonio Martínez Martínez 72 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación padre que no dispone del suficiente tiempo como para ir al colegio de su hijo a saber acerca de la evolución del niño. En cuanto a la estructura, la aplicación se ha dividido en 3 grandes bloques: Creación de fichas/usuarios. Gestión de fichas/usuarios. Informes En el primero se incluyen los archivos que permiten la generación de nuevas altas, tanto de usuarios del sistema (profesores o consultores), como de alumnos. El sistema está diseñado de manera que en primer lugar se realice el alta de los usuarios en el sistema, y una vez hecho esto, se empiecen a generar las fichas de los alumnos. El bloque “Gestión de fichas/usuarios” engloba los archivos que nos permiten mantener actualizado nuestro sistema en cuanto a información relativa a profesores, consultores o alumnos se refiere: modificación de datos, eliminación de fichas, creación de nuevos objetivos, generación diaria de información del alumno... en definitiva, la gestión y mantenimiento de los usuarios de la aplicación. Por último, el bloque “Informes” abarca, como no podía ser de otra manera, todos los archivos relacionados con la generación, modificación, almacenamiento y supresión de informes de los alumnos. En las distintas zonas en que se divide el sistema SELWA, aparecerán una serie de iconos, cada uno representando una información distinta. Al posicionar el ratón encima de algunos de ellos, aparecen mensajes de ayuda que intentan mejorar la experiencia del usuario con la aplicación. A continuación se muestran estos iconos: Autor: Antonio Martínez Martínez 73 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Buscar Copiar Información Ayuda El último de ellos es el que va a mostrar al usuario información extra sobre el funcionamiento del apartado en el que se encuentra, en unos casos, e información acerca del contenido que muestran algunos menús de selección que pueden no ser obvios, en otros. El icono “Información” se usa como mero acompañador del texto explicativo que aparece en diferentes zonas de la aplicación, indicando que ahí se muestra una breve explicación del apartado. Finalmente, los iconos “Buscar” y “Copiar” mostrarán textos de ayuda sobre cómo rellenar los campos a los que acompañan y qué información se rellenará a partir de su pulsación. La figura 3.2.1.1 muestra un ejemplo de consulta de ayuda: Figura 3.2.1.1 Ejemplo de consulta de ayuda al posicionar el ratón sobre el icono En los puntos que siguen, se abordará en detalle cada una de las partes Autor: Antonio Martínez Martínez 74 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación fundamentales que componen el sistema, y se explicará cuál es su funcionamiento interno. 3.2.2 Punto de vista técnico Desde el punto de vista técnico, la aplicación se encuentra dividida en capas (“divs”), que son los elementos XHTML que permiten realizar un maquetado estructurado. Todas las páginas del sistema poseen 8 capas fundamentales: Ø Cabecera (logo, fecha y hora) Ø Jerarquía (en qué punto del sistema de archivos se está) Ø Lateral (abarca todo el margen izquierdo) Ø Lateral1 (usuarios on-line) Ø Lateral2 (accesos directos) Ø Lateral3 (calendario) Ø Principal (en esta se carga la información solicitada en cada momento) Ø Pie (créditos y enlace de contacto) Existen multitud de líneas comunes en la mayoría de los archivos que componen SELWA. En primer lugar, siempre aparecerá una línea que incluye el módulo de funciones (“funcs.php”). Este módulo inicializa las instancias encargadas de las sesiones, de la conexión a la base de datos (sólo en algunos casos, no en todos) y del control de acceso, además de contener la colección de funciones PHP que son llamadas a lo largo de la aplicación. Tras comprobar que el usuario que intenta acceder a la página se ha registrado correctamente desde la página de inicio, se instancia la función que maneja los mensajes AJAX de ayuda y se empieza a cargar la página. Autor: Antonio Martínez Martínez 75 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación En el módulo de carga de hojas de estilo y scripts, se realiza la llamada a distintos archivos, también comunes a todas las páginas. Éstos se clasifican en 3 grupos: Ø Hojas de estilo (archivos CSS necesarios para la correcta visualización de la página en cuestión) Ø Funciones JavaScript (llamada a las funciones JavaScript comunes para el funcionamiento de las pestañas, ayuda, etc.) Ø Biblioteca NiftyCube (conjunto de funciones que hacen posible el redondeo de esquinas de las capas). Esta biblioteca está formada por 3 archivos: niftycube.js, niftyCorners.css y niftyPrint.css, ubicados dentro de la carpeta “css” (ver estructura de carpetas más abajo). A pesar de ser uno de ellos un archivo JavaScript, se han englobado los 3 dentro de la carpeta de hojas de estilo, pues su misión es esa, aplicar un estilo a determinados elementos (por lo general, capas). La biblioteca NiftyCube es un desarrollo de software libre que posibilita, sin necesidad del uso de imágenes, el redondeo de las esquinas de elementos “div” con objeto de dar una apariencia más agradable. Un ejemplo de llamada podría ser: Nifty("ul#nav a","big transparent top"); que realizaría el redondeado de un elemento “a” que se encuentra dentro de otro “ul” con identificador “nav”, sólo de su parte superior (top) y con un radio grande (big). Otras posibilidades de redondeado serían “small” o “normal”, pudiendo aplicarse a cualquier esquina individualmente, por parejas (sólo superior, sólo inferior, sólo izquierda o sólo derecha) o a todas. Desde este punto, se empieza a generar la estructura de capas definida arriba, siendo la capa “principal” la única que varía en función de en qué parte de la aplicación se esté. Autor: Antonio Martínez Martínez 76 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación La estructura de carpetas de la aplicación tiene la forma mostrada en la figura 3.2.2.1: Figura 3.2.2.1 Estructura de directorios de la aplicación SELWA A continuación se detalla el contenido de cada una de las carpetas principales. Ø calendario: contiene un calendario PHP cuyo código es de libre distribución, no ha sido programado para esta aplicación pero, como se indica en el apartado “Líneas futuras”, sí que está pensada su implementación. En este caso simplemente se trata de mostrar dónde iría ubicado. Ø css: aquí se encontrarán todas las hojas de estilo utilizadas. Ø fotos: carpeta que contiene todos los iconos mostrados, así como los fondos que rellenan la aplicación. Autor: Antonio Martínez Martínez 77 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Ø fpdf: librería PHP que posibilita la generación de los informes en formato PDF. Ø imgs: aquí se guardan las fotografías que se asocian en el proceso de creación de fichas, tanto de alumnos como de usuarios. Ø javascript: colección de funciones JavaScript utilizadas en las distintas partes del sistema. Están divididas, por un lado, las referentes a la creación de fichas de alumnos y/o de usuarios (en el primer nivel de la carpeta) y, por otro, las que se usan en la gestión de dichas fichas (subcarpeta “funcs_ficha”). Ø reg: en esta carpeta se incluyen los 4 archivos necesarios para el control del registro de usuarios, conexión a la base de datos (no en todos los casos) y manejo de sesiones. Ø xajax: biblioteca formada por archivos PHP y JavaScript que permite la adición de efectos dinámicos y de consultas rápidas a base de datos (utilizada fundamentalmente para mostrar los mensajes de ayuda allá donde aparezca el icono ). El resto de archivos se encuentran en el primer nivel de la jerarquía (carpeta “SELWA”), y se dará más información acerca de ellos en los apartados en que intervengan, dentro de los puntos “Información técnica”. A continuación se muestra la explicación técnica detallada del mecanismo de ayuda, pues es uno de los elementos que más contribuyen a una correcta experiencia de usuario en el manejo de la aplicación. · Mecanismo de Ayuda Como ya se comentó en el apartado “Punto de vista teórico”, a lo largo de la navegación por el sistema SELWA aparecen determinados Autor: Antonio Martínez Martínez 78 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación iconos al lado de algunos títulos. No en todos los casos, pero sí en la mayoría, posicionar el puntero del ratón sobre ellos muestra información extra acerca del apartado en el que se encuentra el usuario. La programación que se esconde tras ellos está realizada a partir de la biblioteca XAJAX, de libre distribución, de manera que se realizan pequeñas consultas a la base de datos, de forma transparente al usuario, realizando un mapeo entre un código que se envía a la función AJAX y el texto al que corresponde dicho código. Al situar el ratón encima de uno de los iconos se realiza una llamada a “manejador_ayuda”, una función JavaScript que recibe como parámetros el objeto sobre el que se realiza la acción; “tipo”, una variable que indicará a qué categoría pertenece la llamada y “valor”, que indicará qué mensaje de ayuda hay que mostrar dentro la categoría “tipo” seleccionada. Esta función mapeará los códigos “valor” recibidos en valores entendibles por la función PHP “muestra_ayuda”, que será la encargada de desencadenar el mecanismo de consulta AJAX. Justo antes de esto se llama a otra función JavaScript, “ini_wait”, que realiza la carga del elemento que muestra el icono de espera mientras se obtienen los datos procedentes de “muestra_ayuda”. Previo también a la llamada AJAX es la configuración de la posición en la que se mostrará el mensaje de ayuda, pues existen zonas del sistema en las que existen barras de desplazamiento, lo que obligará a tomar la posición relativa del objeto sobre el que se desea mostrar información extra y realizar pequeños desplazamientos para que la capa que contiene la ayuda no oculte el resto de información. Entrando ya de lleno en la función “muestra_ayuda”, decir que se encuentra en el archivo “server.php”, que será el que sirva para instanciar el objeto AJAX mediante la sentencia: Autor: Antonio Martínez Martínez 79 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación $xajax = new xajax("server.php"); para posteriormente realizar el registro de la función mediante: $xajax->registerFunction('muestra_ayuda'); Se va ir explicando el funcionamiento de las distintas zonas que componen la función: 1. Includes: Se requiere la inclusión de 2 archivos: “actualiza_DB.php” y “xajax_inc.php” (perteneciente a la biblioteca XAJAX). 2. Preparación de la respuesta: Se instancia el objeto que servirá para devolver la respuesta, con la directiva: $objResponse = new xajaxResponse(); 3. Obtención mensaje: Conexión con la base de datos y obtención del mensaje de ayuda a mostrar a partir de las variables facilitadas, “tipo” y “valor”: $sql="SELECT * FROM ayuda WHERE asoc='$tipo' AND valor=$valor"; if($result=mysql_query($sql)){ while($row=mysql_fetch_array($result)){ $frase=$row['contenido']; } } 4. Creación y formateo del elemento contenedor: Se crea y se da formato a la capa que mostrará el mensaje, añadiendo distintos estilos mediante CSS a los elementos de la capa de ayuda, gracias al identificador: Autor: Antonio Martínez Martínez 80 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación $frase_out="<div id='capa_help'><strong>Ayuda</strong></div><br />"; $frase_out .= $frase; $objResponse->addAssign("ayuda","innerHTML", $frase_out); 5. Devolución del resultado y solicitud de petición: Se devuelve el elemento creado, con los datos solicitados, y se realiza la petición del proceso de vuelta: return $objResponse->getXML(); $xajax->processRequests(); 3.2.3 Base de datos MySQL 3.2.3.1 Estructura Las tablas empleadas en el sistema son de tipo MyISAM, debido a que existirán muchas más operaciones de lectura que de escritura, para lo que este tipo de tabla es el idóneo. El nombre que se le ha dado a la base de datos es “db_ee”, y consta de 14 tablas. Mediante el nombre de éstas se pretende dar una idea de la información que almacenan. A continuación se muestra una breve explicación del contenido de cada tabla, así como su nombre: Ø al_cons: relación entre los identificadores de alumnos y consultores indicando, además, el tipo de consultor del que se trata. Ø al_diag: información relativa al diagnóstico del alumno. Ø al_info_fam: datos familiares del alumno. Ø al_info_pers: datos personales del alumno. Ø al_prof: relación entre los identificadores de alumnos y profesores. Ø ayuda: tabla que contiene el texto de los mensajes de ayuda, la categoría Autor: Antonio Martínez Martínez 81 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación a la que pertenecen y el valor numérico en el que son mapeados. Ø codigo_error: información referente a los distintos mensajes de error que son mostrados, así como el valor numérico en el que son mapeados. Ø ev_ini: información relativa a la evaluación inicial del alumno. Ø info_diaria: datos introducidos por el profesor, relativos al comportamiento y actividades diarias del alumno. Ø prof_obj: aquí se registran los datos referentes a la programación de los objetivos que el profesor ha seleccionado para el alumno. Ø quest_ncc: cuestiones a listar en la pestaña “N.C.C.”, junto con los valores numéricos en que son mapeadas. Ø res_ncc: contiene los resultados de las competencias seleccionadas para un alumno en la pestaña “N.C.C”, indicando el valor numérico, la respuesta seleccionada y si es objetivo o no. Ø us_info_p: datos personales de los usuarios del sistema (profesores, consultores y administrador). Ø users_control: información acerca del registro de usuarios: identificador de sesión, login registrado, dirección IP, etc. En el apartado 6.1 (“Planos de base de datos”) se encuentran reflejados los diagramas entidad-relación, donde se indican los campos que contiene cada tabla, así como las relaciones entre ellas. Autor: Antonio Martínez Martínez 82 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación 3.2.3.2 Conexión PHP ßàMySQL Como se indicó en los apartados 2.2.4 y 2.2.5, PHP y MySQL están muy interrelacionados. PHP proporciona multitud de métodos para el correcto y completo manejo de bases de datos MySQL. En la implementación del presente proyecto se han empleado dos formas diferentes (pero similares en su ejecución) de utilizar los métodos PHP para el manejo de MySQL. Por un lado se ha utilizado de forma clásica, es decir, mediante programación orientada a procesos. Un ejemplo de inserción de datos mediante este método podría ser: mysql_connect($server, $username, $password); $sql = “INSERT INTO al_prof (id_al, id_prof) VALUES (2, 3)”; mysql_query($sql); Por otro lado, también se ha realizado el manejo de la base de datos mediante programación orientada a objetos (POO). Para ello, se ha programado una clase, “DATABASE”, incluida en el archivo “database.php”, que incluye los métodos necesarios para el tratamiento con MySQL. Esta clase es instanciada desde “init.php”, junto con el tratamiento de sesiones y control de usuarios. A continuación se muestran estos métodos y su funcionamiento: Ø __construct C0nstructor de la clase. Realiza la conexión con la base de datos mediante: $this->connection = mysql_connect($server, $username, $password); Devuelve “true” en caso de éxito y “false” en caso de error. Ø select Método de consulta de datos. Realiza la búsqueda de información en función de los parámetros “$table” (tabla donde buscar), “$where” (campos y patrón a coincidir) y “$type” (tipo de valor devuelto, array o Autor: Antonio Martínez Martínez 83 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación array asociativo). Devuelve el array con los datos en caso de éxito o “false” en caso de fallo. Ø insert Inserta los datos recibidos en “$data” en “$table”, realizando previamente una separación de estos datos mediante el método “implode” y la selección de campos mediante “getFields”. Antes de la inserción se comprueba que no sea código malintencionado, es decir, que no se intenten insertar sentencias SQL, gracias al método “secure”. Devuelve “1” en caso de éxito, “2” en caso de error de inserción por duplicación de registro o “0” en cualquier otro caso de error. Ø update Actualiza los datos en “$table” con los valores registrados en “$update” en los campos indicados por “$where”. Devuelve “true” en caso de éxito y “false” en caso de error. Ø delete Elimina un registro coincidente con “$where” de la tabla “$table”. Devuelve “true” en caso de éxito y “false” en caso de error. Ø getFields Obtiene los campos de la tabla indicada por “$table”. Utilizado en “insert”. Devuelve un array con los campos en cuestión en caso de éxito y “false” en caso de error. Ø secure Comprueba que no se esté intentando realizar una inyección de código SQL en la base de datos. Autor: Antonio Martínez Martínez 84 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Devuelve la cadena pasada como parámetro, pero con los caracteres “escapados”, es decir, sin riesgo de inyección. Ø close Cierra la conexión MySQL. Las funciones PHP utilizadas para generar las peticiones son exactamente igual que en el caso de programación orientada a procesos. El motivo de utilizar ambas formas fue el aprendizaje de la POO durante el proceso de programación de la aplicación. Debido a haber tenido ya programadas algunas de las funciones relativas al tratamiento de información con la base de datos, no se ha querido eliminar dicha programación, sino simplemente completarla con una forma distinta de realizar las mismas operaciones. Autor: Antonio Martínez Martínez 85 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación 3.3 Módulos de registro En este apartado se expondrán las diferentes formas de registro de los diferentes usuarios del sistema. Por un lado, se explicará qué mecanismos se desencadenan en el momento que un usuario de tipo “profesor”, “consultor” o “administrador” intenta acceder al sistema, haciendo hincapié en los distintos privilegios que cada uno de ellos tiene según su perfil. Por otro lado, se verá el funcionamiento del mecanismo de alta de alumnos, exponiendo qué condiciones tienen que darse en determinadas áreas para poder realizar tal registro con éxito. En cada uno de los apartados se realiza una exposición acerca del manejo de la herramienta, para a continuación dar una explicación técnica de cómo se ha realizado la programación. 3.3.1 Acceso al sistema 3.3.1.1 Punto de vista teórico El acceso a la aplicación se produce cuando un usuario introduce correctamente el usuario y la contraseña que le fueron asignados en el proceso de alta de fichas de usuario. Estos parámetros son seleccionados por el administrador de la herramienta, y no pueden tener más de 8 caracteres ninguno de ellos, pudiendo estar formados por cualquier combinación de caracteres alfanuméricos. En el momento en que se produce el correcto registro de un usuario, se inicia una sesión. Ésta permitirá mantener el control sobre los usuarios que, en cada momento, están conectados, para así mostrar una lista de ellos en el lateral superior de la ventana. Para finalizar dicha sesión, basta con pulsar el botón “Logout”, que aparece en la parte inferior de la lista. Autor: Antonio Martínez Martínez 86 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación 3.3.1.2 Punto de vista técnico A continuación se realizará una completa explicación de las clases y métodos que permiten el comportamiento de registro anteriormente citado. Los archivos que intervienen en la comprobación del registro de un usuario se encuentran en la carpeta “reg” de la estructura de directorios del sistema, y son cuatro: “init.php”, “sessions.php”, “control.php” y “database.php”. Se irán explicando uno a uno. Ø init.php Es el archivo encargado de incluir a los otros tres. Se encuentra embebido dentro de “funcs.php”, el cual es requerido en todas y cada una de las páginas del sistema, de modo que todas las funciones de este fichero se encuentran disponibles en cualquier zona de la aplicación, así como la inicialización de los parámetros para la conexión con la base de datos y aquellos que se utilizan en el control de acceso de los usuarios a las distintas zonas. Estas inicializaciones son producidas mediante las siguientes líneas (que componen el archivo “init.php”): require("reg/sessions.php"); require("reg/database.php"); require("reg/control.php"); $GLOBALS['selwa']->session=new SESSIONS(); $GLOBALS['selwa']->database=new DataBase("localhost","root","","db_ee"); $GLOBALS['selwa']->control=new CONTROL(15); Ø sessions.php En este archivo se encuentra la clase “SESSIONS”, encargada de proporcionar la interfaz con las variables de sesión del servidor. Autor: Antonio Martínez Martínez 87 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Contiene una serie de métodos que facilitarán el manejo de estas variables, así como permitir una simple migración de código sin más que modificar la clase, sin afectar a la estructura de la aplicación. Estos métodos son: · setId($id) : Establece el identificador de sesión. · getId() : Recupera el identificador de sesión. · getDataArray() : Recupera el array de variables de sesión. · getData($variable) : Recupera una variable de sesión. · setDataArray($data) : Establece el array de variables de sesión. · setData($variable,$value) : Establece una variable de sesión con valor “$value”. · delete($variable) : Borra una variable de sesión. · deleteAll() : Borra el array completo de variables de sesión. · destroy() : Elimina la sesión en el servidor. Ø control.php La principal misión de la clase “CONTROL” es la de proporcionar una serie de métodos que permitan mantener la supervisión de los accesos al sistema, así como la de la creación de las sesiones, con objeto de tener un correcto control sobre la lista de usuarios que, en cada momento, están conectados. Para ello, las primeras acciones que se realizan (a cargo del constructor) son, en primer lugar, comprobar que se ha enviado el formulario de registro, es decir, el “login” y el “password” del usuario que intenta acceder para, a continuación, detectar dichas variables (enviadas por método POST), y realizar la llamada al método “registerUser” en caso de una correcta recepción. Durante este proceso (generado mediante el método “analyze”) se comprueba si la sesión estaba ya establecida y, en caso de no estarlo, generar los datos necesarios para crearla. Es en este punto donde se Autor: Antonio Martínez Martínez 88 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación registra la información de sesión en la base de datos, mediante la llamada al método “refresh” (actualizando la tabla “users_control”). La llamada a “registerUser” (pasando como parámetros “login” y “password”) provoca la comprobación de que el usuario y contraseña introducidos sean correctos, procediéndose, en caso de éxito, a la preparación y posterior inserción de los datos de sesión de usuario en la base de datos. En caso contrario, se genera un mensaje de información, indicando la causa, pudiendo ser debido a que el usuario ya se encuentra registrado o a que el “login” o “password” son incorrectos. El tiempo asignado a una sesión es de 15 minutos, pudiendo variarse este valor en la configuración del constructor, sin más que modificar el valor de la variable “$time”. En caso de que este tiempo sea superior al valor definido, se borra la entrada. De esta manera, cada vez que un usuario carga una página, actualiza su información de sesión y borra las entradas “caducadas”, manteniendo así el control sobre los usuarios que se encuentran online. Por último, reseñar que la acción de “logout” por parte de un usuario que desea abandonar el sistema, provoca la llamada a “unregisterUser”, donde se actualizan sus variables de sesión a valores que indiquen dicho abandono (login=0 e id_us=-1). Ø database.php La clase “DATABASE” ya fue explicada en el apartado 3.2.3.2 “Conexión PHPßàMySQL”, por lo que no se volverá a incidir sobre su funcionamiento. Autor: Antonio Martínez Martínez 89 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación 3.3.2 Módulo de registro de usuarios 3.3.2.1 Introducción: Perfiles y permisos Como se ha venido mencionando a lo largo del presente documento, en el sistema SELWA intervienen tres tipos de usuario (además, obviamente, de los alumnos): administrador, profesor y consultor. En función del perfil que tenga asignado un usuario, una vez se haya registrado, se le presentará la aplicación con una interfaz u otra. Parece lógico que, por ejemplo, a un usuario con perfil “consultor” no se le presente la opción de modificar las fichas de los usuarios registrados en el sistema. O, por otro lado, que al administrador se le permita el acceso a toda la información del sistema, pues es el encargado de, ante cualquier incidencia o confusión, actuar consecuentemente, eliminando un registro insertado por error o actualizando convenientemente el “Tablón de Anuncios”. A continuación se detallan los tres perfiles definidos, mostrando a qué recursos tiene acceso cada uno de ellos. 3.3.2.2 Modo Administrador El modo “Administrador” es el que disfruta de la implementación de SELWA en su totalidad. Sólo existirá un usuario con tal perfil definido, y tendrá la posibilidad de acceder a todas las zonas del sistema con todo tipo de privilegios para crear, modificar o eliminar registros. En la figura 3.3.2.2.1 se muestra la pantalla asociada a este perfil. Autor: Antonio Martínez Martínez 90 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.3.2.2.1 Pantalla principal del perfil “Administrador” El administrador es el primer registro que se introduce en la base de datos durante la instalación del sistema. Es absolutamente necesario que sea así, debido a que es el único usuario que tiene la posibilidad de dar de alta a nuevos elementos de tipo “profesor” o “consultor”, es decir, el único capaz de añadir otros actores en la aplicación. Ya se indicó en apartados anteriores que la herramienta está diseñada de forma que sean los usuarios con perfil “profesor” y “consultor” los primeros en ser dados de alta en la base de datos, con objeto de que al ir generando las fichas de los alumnos, ya existan dichos usuarios para poder asignarlos. La pantalla mostrada para la creación de estos usuarios se muestra en la figura 3.3.2.2.2: Autor: Antonio Martínez Martínez 91 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.3.2.2.2 Pantalla de “Creación de usuarios” Este usuario es el destinatario de cualquier incidencia que se plantee en el sistema, como pueda ser la eliminación por parte de un profesor de un mensaje recibido de un consultor de tipo “tutor” debido a críticas a su labor docente para con el alumno. En este caso, el mensaje no se elimina de la base de datos, sino que pasa a formar parte de otra tabla a la que sólo el administrador tiene acceso, de forma que puede revisarla periódicamente y comprobar si ha habido algún tipo de incidencia que se ha tratado de ocultar. Es, asimismo, el encargado de realizar las operaciones de mantenimiento lógicas de cualquier base de datos: creación de fichas para nuevas altas, actualización de datos de usuarios, eliminación de bajas, mantenimiento del “Tablón de Anuncios”, etc. De entre las opciones implementadas en la aplicación, el administrador tiene acceso a las siguientes: 1. Gestión de usuarios: · Crear usuario. 2. Gestión de fichas de alumnos: · Crear ficha. · Modificar ficha. Autor: Antonio Martínez Martínez 92 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación · Eliminar ficha. 3. Gestión de informes: · Crear informe. De entre las ampliaciones propuestas en el apartado “Líneas futuras”, el administrador sería el encargado de la gestión de las siguientes: 1. Agenda: · Gestión de la agenda compartida de profesores, fechas y citas comunes. 2. Tablón de Anuncios: · Mantenimiento y filtrado de los mensajes publicados. 3. Correo Interno: · Mantenimiento y eliminación definitiva de mensajes borrados por parte del propietario. Comprobación del contenido de los mensajes. Autor: Antonio Martínez Martínez 93 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación 3.3.2.3 Modo Profesor El usuario “profesor” se diferencia del “administrador” en aquellas tareas que tengan que ver con la gestión de usuarios y con el mantenimiento de la base de datos. La figura 3.3.2.3.1 muestra la pantalla para este usuario. Figura 3.3.2.3.1 Pantalla principal para el perfil “Profesor” El cometido más importante del profesor es la introducción diaria de información relativa al comportamiento de los alumnos. Este menú sólo lo tiene disponible este perfil. Dentro del módulo “Gestión de alumnos”, tras haber buscado la ficha de un alumno y seleccionar la opción “Ver”, aparece una pestaña con etiqueta “Hoy”, en la cual el profesor selecciona el área y subárea a la que corresponden la información que va a introducir. Ver figura 3.3.2.3.2. Autor: Antonio Martínez Martínez 94 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.3.2.3.2 Pantalla de registro de información diaria del profesor En el momento en que se crea la ficha de un alumno (opción que también tiene disponible el profesor, no sólo el administrador), es necesario asociarle un profesor. Desde este instante, un profesor busca la ficha de un alumno para, por ejemplo, modificar un dato o realizar un apunte diario, la lista de alumnos que le es mostrada se compone únicamente de aquellos que han sido asociados a dicho profesor. De este modo, cada usuario sólo tiene acceso a la información de sus alumnos. Respecto a su grupo de alumnos asociado, el profesor puede: 1. Gestión de fichas: · Crear nuevas fichas. · Modificar fichas existentes. Autor: Antonio Martínez Martínez 95 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación · Ver datos de una ficha asociada (aquí es donde además puede añadir los registros de información diaria sobre el alumno). · Eliminar fichas (en este caso el que elimina realmente la ficha de la base de datos sería el administrador. El profesor con la acción de eliminar consigue que no se le muestre más la ficha de ese alumno). 2. Gestión de informes: · Crear informes. En cuanto a las posibilidades ofrecidas al profesor en las mejoras propuestas en “Líneas futuras”, se encuentran: · Registro de apuntes en la agenda: citas, reuniones, entrega de informes pendientes, etc. · Publicación de nuevas entradas en el “Tablón de Anuncios”. · Envío y recepción de mensajes tipo “correo interno”, con otros profesores y consultores. 3.3.2.4 Modo Consultor Dentro de esta categoría habrá una división: consultores tutores y consultores especialistas. Los primeros se corresponderán con los padres/tutores del alumno, mientras que los segundos serán los especialistas que pueda tener asociados un alumno. Este perfil será el que menos privilegios tenga en cuanto a acceso a zonas del sistema. Un usuario con perfil “consultor” simplemente podrá acceder a la información de su/s consultado/s, sin posibilidad ni de modificar datos ni de crearlos. El acceso es únicamente en modo lectura/consulta de datos, salvo en el Autor: Antonio Martínez Martínez 96 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación caso de los informes que, puesto que son personalizados, cada uno decide qué datos desea extraer referentes al alumno en el período especificado. Esta es la única manera de “crear” que tiene este tipo de usuario. Su pantalla principal se diferencia de la del profesor en que no existen accesos en ningún lado para, por ejemplo, crear fichas. Las posibilidades del modo consultor son: 1. Gestión de fichas: · Ver las fichas de sus alumnos asociados. 2. Gestión de informes: · Crear informes. En cuanto a las “Líneas futuras”, estas capacidades se amplían en: · Posibilidad de LEER la agenda común para ver citas importantes. · Mensajería interna con profesores y otros consultores. 3.3.2.5 Información técnica A continuación se van a explicar algunas de las partes que hacen posible la creación de fichas de usuario en el sistema. Fundamentalmente son dos los archivos que posibilitan la creación de usuarios: “crea_us.php” e “inserta_us.php”. El primero de ellos, es el que posee la interfaz mostrada en la figura 3.3.2.2.2. En la capa “principal” existe un formulario que será el encargado de enviar los valores introducidos en los distintos campos hacia “inserta_us.php”. El envío de estos valores se producirá siempre y cuando los datos introducidos cumplan con Autor: Antonio Martínez Martínez 97 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación las expresiones regulares programadas para cada campo en la función “comprueba_datos_us”, que se encuentra en el archivo “funcs_GestPest.js” Una vez en “inserta_us.php”, y con los valores recibidos, el proceso que se desencadena sigue la siguiente secuencia: 1. Subida de la foto: mediante los métodos “move_uploaded_file” y “copy”, proporcionados por PHP, se realiza la subida de la foto seleccionada al servidor, redimensionándola posteriormente (una vez subida) gracias “redimensionar_imagen”, a la haciendo función uso programada del método “imagecopyresampled”. 2. Inserción de datos: si la subida de la foto fue correcta, se procede a la inserción en la base de datos, mediante la llamada: $GLOBALS['selwa']->database->insert("us_info_p",$datos1); donde “$datos1” es un array que contiene los datos enviados desde “crea_us.php”. Si la inserción se realizó con éxito, el navegador es redirigido a una pantalla donde se confirma la inserción (mediante la directiva “url” incluida en la etiqueta “meta” de XHTML). En caso negativo, se redirige a una pantalla de error, donde se indica cuál fue el motivo del fallo (identificado mediante una codificación de errores, pasado al navegador por método GET, y cuya equivalencia se realiza mediante la consulta a la tabla “codigo_error” de la base de datos). La tabla de la base de datos en la que se registran estos datos es “us_info_p”. Esta tabla contiene los campos correspondientes a los datos introducidos en el formulario, con el añadido de un campo “id”, que inserta el sistema Autor: Antonio Martínez Martínez 98 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación automáticamente, y que será un número que identifique unívocamente al usuario en la herramienta (se trata, por ejemplo, del número que aparece cuando se asigna un tutor a un alumno, ver apartado 3.3.2.2). 3.3.3 Módulo de registro de alumnos 3.3.3.1 Funcionamiento básico El mecanismo de registro de alumnos está basado en un sistema de pestañas, cada una de las cuales contiene un tipo de información bien clasificada: Datos personales, datos familiares, nivel de competencia curricular, evaluación inicial y diagnóstico. Ver figura 3.3.3.1.1. Figura 3.3.3.1.1 Pantalla principal al inicio de la creación de una nueva ficha Autor: Antonio Martínez Martínez 99 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación No es posible pasar a la siguiente pestaña sin haber rellenado correctamente la anterior. El sistema es capaz de determinar si, por ejemplo, al introducir la información de estatura de un alumno, el usuario está insertando caracteres numéricos o alfanuméricos. También hay que reseñar que existen ciertos campos que son obligatorios y otros opcionales, de manera que no es posible avanzar en el registro sin haber completado correctamente un campo obligatorio. Desde el momento en que se rellena correctamente una pestaña y se pulsa el botón “Siguiente”, es posible alternar entre la pestaña origen y la destino desde el propio menú. Para completar el registro de una nueva ficha, en la última pestaña (“Diagnóstico”) se pulsa “Finalizar”, momento en el cual es llamado el método de inserción en la base de datos. Puesto que la comprobación de los datos se realiza a medida que se avanza en el proceso de registro, el único problema que puede existir a la hora de insertar los datos es puramente de comunicación o de duplicación de registro, situaciones en las cuales el sistema informaría con un mensaje de error, indicando cuál ha sido la causa que ha impedido el registro. 3.3.3.2 Clasificación de datos En este apartado se detalla la información que contiene cada una de las pestañas que componen el registro de una nueva ficha de alumno en el sistema. 1. Datos Personales Esta pestaña condensa los datos personales más relevantes del alumno, de manera que podamos localizarlo posteriormente en el sistema mediante alguno de ellos, como por ejemplo el identificador del profesor asociado, su nombre o sus apellidos. Destacar en esta pestaña 3 detalles: Ø Asignación de “Maestro Tutor”: Al pulsar sobre este botón, aparecerá la lista de profesores registrados en la base de datos, pudiendo seleccionar de ella SÓLO uno, que se convertirá en el tutor del alumno Autor: Antonio Martínez Martínez 100 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación durante el presente curso. Tras elegirlo, aparece un cuadro de texto donde se indica el código de usuario del profesor. Ver figura 3.3.3.2.1. Figura 3.3.3.2.1 Proceso de selección de profesor tutor Ø Asignación de “Consultores Tutores”: Mediante el mismo mecanismo anteriormente citado, se seleccionan aquellos usuarios registrados en la base de datos con perfil “consultor”, que representan a los padres/tutores legales del alumno y que, por tanto, tendrán acceso a su ficha. En este caso es posible seleccionar hasta un máximo de 4 usuarios. Ver figura 3.3.3.2.2. Autor: Antonio Martínez Martínez 101 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.3.3.2.2 Ventana de selección de tutores asociados Ø Selección de fotografía: Se permite (pero no es condición necesaria) la adición de una fotografía del alumno que será mostrada en el margen superior izquierdo de su ficha. Ver figura 3.3.3.2.3. Figura 3.3.3.2.3 En la selección de la foto hay que tener en cuenta el formato y el tamaño máximo de la foto. Ver apartado 3.3.3.3 “Condiciones necesarias” 2. Datos Familiares Aquí se recogerán datos relevantes de los representantes legales del alumno, tales como teléfonos de contacto, direcciones postales o direcciones Autor: Antonio Martínez Martínez 102 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación electrónicas, así como otros datos de interés que puedan haber afectado al normal desarrollo del alumno, tales como la edad de embarazo de la madre, enfermedades sufridas durante el embarazo o posibles dificultades en el parto. Ver figuras 3.3.3.2.4a y 3.3.3.2.4b. Figura 3.3.3.2.4a Primera parte de la pestaña “Datos Familiares” Autor: Antonio Martínez Martínez 103 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.3.3.2.4b Segunda parte de “Datos Familiares” 3. Niveles de Competencia Curricular (N.C.C.) Los niveles de competencia curricular indican el estado de las capacidades de un alumno en una gran variedad de campos, de forma que permitan al profesor establecer, mediante estos criterios, en qué aspectos es necesario hacer más hincapié durante el curso escolar. Estos niveles están divididos en ciclos, adaptados cada uno de ellos a un intervalo de edades escolares. En colegios de enseñanza ordinaria, lo usual es aplicar cada uno de estos ciclos a los alumnos que se encuentran en la edad correspondiente a dicho ciclo. Sin embargo, en colegios de educación especial esto no siempre es así. Es posible que para alumnos con una edad a la que correspondería aplicar un nivel determinado, se necesite aplicar otro, superior o inferior, debido a sus especiales características. Es por ello que la herramienta SELWA permite seleccionar de entre los 5 ciclos propuestos cualesquiera de Autor: Antonio Martínez Martínez 104 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación las características, pudiendo realizar niveles de competencia híbridos, que indicarán qué tipo de habilidades posee el alumno en los campos que el usuario que lo dé de alta estime necesarios para su desarrollo escolar (en la implementación realizada sólo está presente el N.C.C. del primer ciclo de infantil). Estos niveles están obtenidos del modelo propuesto por la Junta de Andalucía para los centros públicos de esta Comunidad Autónoma. [3] El sistema nos presenta, por cada uno de los niveles, una tabla con las competencias asociadas, y una serie de casillas en las que se debe indicar si el alumno cumple total, parcialmente o no cumple dicha competencia (ver figura 3.3.3.2.5). Sólo aquéllas que sean marcadas como “No” o “AV” (“A Veces”) tendrán relevancia en la ficha del alumno a la hora de marcar como objetivo para el presente curso la mejora de la capacidad en cuestión, es decir, aparecerán en la pestaña “N.C.C” de la ficha del alumno, pudiendo realizar una programación individualizada en tiempo, metodología y secuencia de actividades, indicando en cualquier instante si ha sido alcanzado el objetivo o aún no. El porqué de dar la posibilidad de marcar como objetivo o no, es debido a que existen características que según la complejidad de la carencia pueden llegar a ser imposibles de superar, como por ejemplo una ceguera, una sordera crónica o la falta de algún miembro. Se añade un campo de texto para dotar al sistema de una mayor versatilidad y una mayor exactitud en la información, de forma que el usuario no quede sujeto a las posibilidades rígidas de las plantillas de los distintos ciclos. Autor: Antonio Martínez Martínez 105 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.3.3.2.5 Muestra de la pestaña “Niveles de Competencia Curricular” Como se adelantó anteriormente, las competencias marcadas como “No” o “AV” y que además hayan sido consideradas a tener en cuenta como “Objetivo”, aparecerán en la pestaña “N.C.C.” de la ficha del alumno. Al pulsar sobre una de ellas, aparece una nueva ventana que permite la programación individualizada de dicha competencia. Esta programación se divide en 3 partes: · Evaluación Inicial: Habrá que reflejar el estado del que parte el alumno, para poder comprobar posteriormente si la evolución ha sido positiva o no. · Secuencia y Temporalización: Aquí habrá que indicar cuál será la secuencia de actividades a llevar a cabo por el profesor, con objeto Autor: Antonio Martínez Martínez 106 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación de tratar de superar la carencia, así como el tiempo que se va a dedicar a cada una. · Metodología: Por último, se debe anotar el tipo de habilidades y estrategias que serán llevadas a cabo. En las figuras 3.3.3.2.6a y 3.3.3.2.6b se muestra la ventana de programación de objetivos. Figura 3.3.3.2.6ª Primera parte de la Programación de Objetivos Autor: Antonio Martínez Martínez 107 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.3.3.2.6b Segunda parte de la Programación de Objetivos Una vez el profesor considera que el objetivo ha sido superado, debe indicar esta incidencia marcando la casilla “Sí” de la columna “Cumplido”. Siempre será posible la adición de nuevos objetivos durante el curso. Para ello, una vez buscada la ficha del alumno en cuestión, habrá que pulsar sobre el botón “Modificar”. En este momento se nos presenta el mismo menú de ventanas que contiene la información del alumno, pero en modo editable. Desde la pestaña “N.C.C.” pulsando sobre “Añadir Objetivos”, nos aparecerá una nueva ventana que contiene la lista de todas las competencias (ver figura 3.3.3.2.7), con una casilla de verificación al lado de cada una. Todas aquéllas que sean seleccionadas, se añadirán automáticamente a la lista de objetivos que ya se tenía para el presente curso, siendo necesario pulsar a continuación “Actualizar Objetivos” para hacer efectiva la adición del objetivo. De igual manera, es necesario pulsar dicho botón cuando se cambia el estado de un objetivo, es decir, cuando pasa de no estar cumplido a estarlo, o viceversa, debido, por ejemplo, a que un alumno deja de poseer una capacidad que había logrado obtener. Autor: Antonio Martínez Martínez 108 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.3.3.2.7 Muestra de la ventana que contiene las competencias de los N.C.C. 4. Evaluación Inicial Cuando un alumno es dado de alta en un nuevo centro, es necesario conocer una serie de datos de su vida curricular hasta ese momento. En esta pestaña es donde se recoge esta información, dividida en diferentes apartados, de modo que se refleje la mayor cantidad posible de datos, con objeto de ajustar perfectamente el plan de estudios a la medida de sus necesidades y sus capacidades. Junto con los N.C.C., conforman una información de vital relevancia en este aspecto. La figura 3.3.3.2.8 presenta una muestra de esta pestaña. Autor: Antonio Martínez Martínez 109 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.3.3.2.8 Muestra de la pestaña “Evaluación Inicial” Existen 3 divisiones principales para catalogar la información de evaluación inicial: A. Relativa al alumno En esta categoría se englobará la información que concierne única y estrictamente al alumno, incluyendo su trayectoria curricular, centros en los que ha estado matriculado, resumen del N.C.C. actual, preferencias en el estilo de aprendizaje y desarrollo general. Autor: Antonio Martínez Martínez 110 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación B. Relativa al contexto socio-familiar Resumen del entorno familiar que rodea al alumno, conocimiento por parte del entorno más cercano de la problemática, recursos de que dispone, aficiones, grado de aceptación por parte de la familia, etc. C. Relativa al contexto escolar (aula) Evaluación académica por parte del centro respecto a las capacidades para afrontar la educación del alumno, existencia y adecuación del plan de estudios, recursos, contexto didáctico, clima institucional, etc. 5. Diagnóstico En esta pestaña se identifican la tipología, patología y nivel de la discapacidad que presenta el alumno (figura 3.3.3.2.9). La clasificación es la propuesta por el Centro Nacional de Información y Comunicación Educativa (CNICE), perteneciente al Ministerio de Educación y Ciencia (MEC), siguiendo los criterios de la OMS y del Manual de Diagnóstico y Estadística de los Trastornos Mentales (DSM-III y DSM-IV). Así, una vez seleccionada la tipología (dividida en 8 categorías), en el menú “Patología” se cargan los posibles valores asociados a dicha tipología. De igual forma, cada patología tendrá asociados unos niveles, según la descripción de los organismos en que se basa el MEC para realizar esta clasificación. Nuevamente (al igual que ocurría en la pestaña “N.C.C.”), aparece un cuadro de texto con título “Observaciones”, con objeto de dotar al profesor de un mayor grado de libertad a la hora de especificar la discapacidad del alumno, puesto que es posible que la clasificación proporcionada por el sistema no sea lo suficientemente completa o quede obsoleta en un momento dado, debido a variaciones en las tipologías o patologías, o a la aparición de Autor: Antonio Martínez Martínez 111 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación nuevas de ellas. Al igual que en la pestaña “Datos personales” se seleccionaba el tutor asociado al alumno, aquí se muestra la posibilidad de asignar especialistas, también mediante el uso del identificador. Los especialistas aquí marcados serán los que tengan acceso a la información del alumno a la hora de realizar un seguimiento o de ponerse en contacto con los padres/tutores, o con el profesor asociado. Por último, y para completar el diagnóstico, se ofrece la posibilidad de indicar la necesidad o no de un tratamiento médico, así como un cuadro de texto donde se indiquen las características de dicho tratamiento. Obviamente, este tratamiento debería ser indicado por parte de un especialista médico que se haya asociado al alumno. Es por esto que el objetivo del cuadro “Observaciones Tratamiento Médico” es el de especificar con el máximo nivel de detalle cuál será dicho tratamiento, la posología, los medicamentos, las formas de administración, etc. Autor: Antonio Martínez Martínez 112 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.3.3.2.9 Pestaña “Diagnóstico” 3.3.3.3 Condiciones necesarias En este punto se indicarán las condiciones que han de cumplirse para un correcto registro de una nueva alta de alumno. El motivo de que algunas pestañas no aparezcan reflejadas en este apartado es porque no requieren de ninguna condición para poder pasar al siguiente estado en el proceso de registro. El mecanismo utilizado en la comprobación de la información introducida son las expresiones regulares. Éstas permiten, mediante la definición de una plantilla, el chequeo de una cadena con dicha plantilla, de forma que los datos introducidos deben ajustarse a los tipos de datos y a la estructura definidos en la Autor: Antonio Martínez Martínez 113 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación expresión regular, es decir, en el caso de, por ejemplo, un campo “teléfono”, será necesario que el usuario introduzca 9 caracteres numéricos. I. Datos Personales En el caso de los campos “Nombre”, “Apellidos” y “Localidad” se requiere la introducción de caracteres alfabéticos, en mayúscula o minúscula, así como las vocales con signos de acentuación o el carácter “-“ para el caso de apellidos compuestos. Para la fecha de nacimiento es necesario, aparte de seleccionar alguna opción del desplegable distinta de “Día”, “Mes” y “Año”, que la fecha sea correcta, es decir, que el día seleccionado sea correcto para el mes y año seleccionados. El sistema no permite la introducción de fechas tales como “30/2/2007”, “31/11/2007” ó “29/2/2006”. Los campos “Peso”, “Estatura” y “Teléfono” es necesario rellenarlos, como no podía ser de otra manera, con caracteres numéricos. En el caso del teléfono, se añade además la restricción de que la información debe contener exactamente 9 dígitos. De los restantes, puesto que son elegidos mediante menús desplegables unos, y mediante valores predeterminados otros, no es necesario realizar comprobaciones, salvo en el caso de la fotografía. Aquí se comprueban 2 parámetros: tamaño y formato. Sólo están permitidos archivos con extensión .jpg, .jpeg, .gif, .bmp y .png, y el tamaño máximo es de 600Kb (siendo redimensionada una vez subida al servidor a unas medidas máximas de 100x100 px). Autor: Antonio Martínez Martínez 114 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación II. Datos Familiares Existen 2 comprobaciones adicionales a las del punto anterior, correspondientes a los campos “E-mail” y “Edad embarazo madre”. En el primero, la expresión regular exige que se inserte una cadena de caracteres seguida por una “@” y una extensión formada por una cadena de caracteres, un punto y una nueva cadena con un mínimo de 2 caracteres y un máximo de 6. Para el segundo, el campo debe estar relleno con 2 caracteres numéricos. No se realizan comprobaciones en las 3 últimas pestañas, pues se considera que el objetivo principal en la coherencia de datos durante el proceso de alta de una ficha, debe darse en el registro de los datos principales del alumno. La información relativa a “N.C.C.”, “Evaluación inicial” y “Diagnóstico” puede ser añadida en el discurrir del curso, una vez se haya consultado con especialistas (en el caso del diagnóstico), o sea necesario solicitar información de otros centros (en el caso de evaluación inicial). 3.3.3.4 Información técnica Se va a realizar una explicación de los archivos y funciones principales que hacen posible el funcionamiento comentado en los apartados anteriores. Se abordarán comportamientos tales como el funcionamiento del menú de pestañas, el de creación dinámica del contenido de los menús desplegables o la inserción de la información en la base de datos. Ø Menú de pestañas El funcionamiento del menú de pestañas está basado en programación JavaScript. En todas las pestañas existen 2 capas fundamentales. La primera de ellas contiene a la segunda, y es la que proporciona el fondo blanco. La nomenclatura de estas capas es “datos1”, “datos2”, “datos3”, “datos4” y “datos5”. La segunda es la que Autor: Antonio Martínez Martínez 115 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación realmente contiene la información de la pestaña. En función de ésta, la capa tendrá una longitud concreta o no (definida en la hoja de estilo correspondiente). La nomenclatura de estas capas hace referencia a la información que poseen: “d_pers”, “d_fam”, “inicio_ncc”, “ev_ini” y “diagn”. En el caso de la pestaña “N.C.C.” existe una capa adicional, dado que se la pantalla principal es un nuevo menú que permite elegir el ciclo de N.C.C. que se desea seleccionar. Estas nuevas capas serán “ncc1”, “ncc2”, etc. Mediante esta división en capas es como se consigue el efecto deseado para este menú. La pulsación de una pestaña desencadena la llamada a 3 métodos JavaScript: “no_activo”, “activo” y “no_se_ve”. El primero de ellos, en función de la variable “estado”, llama al método “manejador_pest”, que será el encargado de realizar algunas comprobaciones y activar, en caso de éxito, la pestaña correspondiente. La variable “estado” es un indicador del instante del proceso de creación en el que se encuentra el usuario, es decir, a cuáles de las pestañas ha accedido correctamente mediante la pulsación del botón “Siguiente”, pues se recuerda que no es posible avanzar en el proceso sin haber completado correctamente la pestaña anterior. Por ejemplo, “estado” igual a 1 implica que se ha avanzado correctamente desde la pestaña “Datos personales” a “Datos familiares”, con lo que el usuario podría moverse de una a otra utilizando el menú superior de pestañas. El método “manejador_pest” recibe como parámetros el identificador de la capa de la que se parte y el de la destino. Tras comprobar que los datos en la origen son correctos (mediante la comparación con expresiones regulares), llama a los métodos correspondientes que realizan las acciones de mostrar y ocultar las pestañas y capas correspondientes. La llamada al método “activo” provoca la activación de la pestaña correspondiente (pasada como parámetro al método mediante su Autor: Antonio Martínez Martínez 116 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación identificador), aunque será el “manejador_pest” el que decida finalmente si se dan las condiciones para esta activación. De igual manera, “no_se_ve” provoca la activación/desactivación de la capa “datos-i” correspondiente, siendo en última instancia el método “manejador_pest” el que decida si se produce o no dicho cambio. Todos los procesos de activación comentados son producidos mediante la alteración del atributo “class”, con la directiva JavaScript “document.getElementById(identificador_elemento).className”. En función de la nueva clase a la que se asigne el elemento, según las propiedades definidas en la hoja de estilo, será mostrado o no. Las comprobaciones de datos, tanto si se realizan mediante expresiones regulares como si no, están programadas también en JavaScript. En el caso de las expresiones regulares, la comprobación se realiza tras 3 pasos. En primer lugar se almacena en un array los datos introducidos por el usuario que desean ser comprobados (en este caso, “pest[0][i]”). A continuación se construyen las expresiones regulares que servirán como patrón a cumplir (llamadas “reg[i]”). Por último se realiza la comprobación mediante el método JavaScript “search” de la siguiente forma: pest[0][i].search(reg[i]) Si el resultado es cero, el valor introducido es correcto. En caso contrario, se añade al array de campos erróneos introducidos para mostrar en una ventana “alert” tras la pulsación de “Siguiente”. Autor: Antonio Martínez Martínez 117 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Ø Adición de profesores y/o consultores En las pestañas “Datos personales” y “Diagnóstico” aparece la opción de asignar profesor tutor y consultores tutores, en el caso de la primera, y consultores especialistas, en el caso de la segunda. Al pulsar el botón de buscar, aparece una nueva ventana donde se muestran los usuarios correspondientes que pueden ser seleccionados. El listado de estos usuarios se realiza tras una consulta a la tabla “us_info_p” de la base de datos, especificando como criterio de búsqueda el perfil en cuestión. Tras esta búsqueda, se crea una tabla con los resultados obtenidos, mostrando nombre, apellidos, identificador y especialidad (en el caso de los especialistas). En la búsqueda de profesor asociado, se añade una casilla de verificación excluyente, es decir, sólo se podrá seleccionar un usuario. Al pulsar el botón “Aceptar”, se realiza la llamada al método “devuelve”, que en función del perfil (profesor, consultor tutor o consultor especialista) realiza distintas acciones. Si la búsqueda fue de profesores, se toma el valor de identificador seleccionado y se carga en el cuadro de texto de la ventana origen mediante la llamada a: opener.document.getElementById(identificador).value y posteriormente se cierra la ventana. En el caso de búsqueda de consultores el procedimiento es el mismo, variando únicamente el número de usuarios seleccionados, que puede ser mayor que uno (pero siempre inferior a 4 en el número de consultores tutores y 5 en el de especialistas). Ø Subida de la foto del alumno El proceso de subida al servidor de la foto asignada al alumno es el mismo que el descrito en el apartado 3.3.2.5 para la subida de las fotos de los usuarios. Autor: Antonio Martínez Martínez 118 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Ø Creación dinámica de contenido en menús desplegables El hecho de crear contenido de forma dinámica en menús desplegables se produce en 2 apartados del sistema: en la pestaña “Diagnóstico”, en el momento de seleccionar una tipología o una patología, y en la pestaña “Hoy” cuando se selecciona el área a la que va a quedar asociado un comentario diario. En ambos casos el funcionamiento es similar, y se detalla a continuación. Mediante código JavaScript creamos el contenido de un menú “select” en el momento en que cambia el valor de otro. En el caso del menú “Tipología” de la pestaña “Diagnóstico”, una vez queda seleccionada la tipología en cuestión, se realiza una llamada al método “actualiza_sel”. Aquí, en función del valor seleccionado, se crea un array de datos que contiene la información a cargar en el menú “Patología”. Éste, a su vez, al variar el valor seleccionado originalmente, realiza una llamada al método “actualiza_sel2”, de modo que se cargue en el menú “Nivel” los valores adecuados a la tipología y patología seleccionadas. Una vez creado el array, se generan los elementos “option” necesarios y se dice que pertenecen al menú representado por el identificador que se ha pasado como parámetro de la siguiente manera: var op=document.createElement("option"); op.appendChild(document.createTextNode(datos[i])); op.value=datos[i]; sel_dest.appendChild(op); Ø Inserción de la información en la base de datos El último paso en la creación de una nueva ficha de alumno es, como no podía ser de otra manera, la inserción de la información en la base de datos. En el momento en que se pulsa el botón “Finalizar” en la pestaña “Diagnóstico” se realiza una llamada a “inserta.php”, Autor: Antonio Martínez Martínez 119 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación donde se desencadenan las siguientes acciones: v Subida de la foto Este proceso ya quedó explicado en el apartado 3.3.2.5. v Inserción de datos por pestañas Si el proceso de subida anterior se realizó con éxito, se procede a la inserción de los datos, pestaña a pestaña. Sólo se realiza la inserción de información si la anterior fue correcta. En el caso de que la subida al servidor de la foto se produjese con éxito y, posteriormente, hubiese un error en la inserción de información de cualquier pestaña, al final se elimina del servidor la foto subida, mediante la orden: unlink(ruta_imgs/nombre_img); El caso más complejo durante el proceso de inserción se produce en los datos de la pestaña “N.C.C.”. Puesto que sólo resultarán de interés aquellas competencias marcadas como “Objetivo”, el primer paso es precisamente ese, discriminar cuáles son objetivo. Para ello, se realiza una llamada al método “manejador_res”, que devuelve un array con los identificadores de aquellas competencias que han sido seleccionadas como objetivo. Se produce una llamada a este método para los valores marcados como “No” o como “AV”, por motivos obvios, pues si un alumno cumple con una determinada característica, no tiene mayor sentido que el de pura información para el profesor el reflejarla en la base de datos. Puesto que el funcionamiento deseado es que la inserción de toda la información del alumno se realice de forma atómica (esto es, o se introduce correctamente la información de todas las pestañas, o ninguna), y dado que dicha inserción se realiza de manera secuencial, en el momento en que falle alguno de los pasos intermedios será necesario Autor: Antonio Martínez Martínez 120 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación eliminar de la base de datos la información introducida hasta el momento de ese alumno. Finalmente, si el proceso ha transcurrido con éxito, se redirige el navegador a una página en la que se advierte al usuario de la correcta inserción del nuevo registro (“todook.php”). En caso contrario, y al igual que ocurre con el procedimiento descrito en el apartado 3.3.2.5, se muestra al usuario el motivo por el cual no se completó el alta de la nueva ficha. Autor: Antonio Martínez Martínez 121 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación 3.4 Módulos de gestión En los apartados correspondientes a este punto, se mostrarán cuáles son las posibilidades que la herramienta SELWA aporta al usuario a la hora del manejo diario. En primer lugar se mostrará la gestión básica, es decir, la creación, eliminación, y modificación de datos tanto de usuarios como de alumnos para, posteriormente, centrarse la exposición en la parte de trabajo diario (en el caso de los alumnos) y en la solución implementada (en el caso de los usuarios). 3.4.1 Gestión de usuarios 3.4.1.1 Gestión básica Se entiende como gestión básica el conjunto de funciones que abarcan la creación, modificación y eliminación de información. En el caso de los usuarios del sistema, como ya se ha comentado en apartados anteriores, su creación es prioritaria frente a la creación de las fichas de alumnos. Sólo el alta del usuario “Administrador” es anterior al alta de los profesores o consultores. La información que se requiere para la correcta inserción de una nueva ficha de usuario es la siguiente: · Nombre y apellidos. · Fecha de nacimiento. · Teléfonos (normalmente uno fijo y uno móvil, pero no es condición necesaria). · Domicilio · Localidad Estos 3 datos están referidos a su lugar de residencia. · Provincia · Nacionalidad. · DNI. Autor: Antonio Martínez Martínez 122 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación · Perfil (indicará qué tipo de usuario es, “profesor”, “consultor tutor” o “consultor especialista”). · Especialidad (sólo válido en el caso de que el perfil seleccionado sea “consultor especialista”). · Correo (dirección de correo electrónico). · Login (identificador con el cual accederá al sistema). · Contraseña (asociada al login). · Foto. El número de identificador único asociado a cada usuario lo inserta de forma automática el sistema. Este identificador es el que representa unívocamente al usuario de SELWA, siendo el que aparece cuando, por ejemplo, se asocia un profesor a un alumno durante su proceso de alta. Al igual que se comentó en el apartado “Condiciones necesarias” del punto 3.3.3, antes de realizar la inserción del nuevo usuario se realizan una serie de comprobaciones sobre los datos introducidos mediante expresiones regulares, de forma que éstos se ajusten al patrón definido, con objeto de asegurar la coherencia de datos de usuario. Una vez concluido con éxito el alta del nuevo usuario, las demás operaciones que se pueden realizar sobre su ficha (siempre por parte del administrador) son las normales de cualquier sistema de gestión, es decir, modificación de datos (debido a posibles cambios de domicilio, de número de teléfono o de correo electrónico, entre otros), y eliminación de su ficha (motivado, normalmente, por una baja definitiva en el centro). 3.4.1.2 Solución implementada De las funciones que se engloban en la definición de gestión básica dada en el apartado anterior, sólo la creación de nuevas fichas de usuario ha sido implementada en SELWA, con los campos citados en dicho apartado. Esta funcionalidad es necesaria y suficiente para el correcto funcionamiento del sistema. Se deja propuesta en el apartado “Líneas futuras” la implementación Autor: Antonio Martínez Martínez 123 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación de las otras dos funciones, modificación y eliminación. En cuanto al funcionamiento de la creación de nuevas fichas de usuarios, queda reflejado en el apartado 3.4.1.1. 3.4.2 Gestión de alumnos 3.4.2.1 Gestión básica La gestión básica de alumnos, a diferencia de la de usuarios, sí está implementada en su totalidad. El motivo es obvio, pues para el correcto funcionamiento de la aplicación es necesario dotar a los usuarios de la posibilidad de modificar datos de alumno, registrar apuntes diarios o eliminar fichas. Desde el menú “Gestión de fichas”, se presentan 3 posibilidades: · Crear ficha. · Buscar ficha. · Menú Principal. La primera opción está ampliamente explicada en el apartado 3.3.3 (“Módulo de registro de alumnos”). Para el resto de funciones implementadas, es necesario pasar por la segunda opción, “Buscar ficha”. El primer paso a la hora de modificar una ficha, eliminarla o crear un informe siempre será buscar la ficha del alumno sobre el que se va a realizar la acción. Los resultados de la búsqueda serán aquellos alumnos asociados al identificador del usuario que haya realizado la búsqueda. Estos resultados se pueden ordenar en función de las 4 categorías que se muestran en la tabla: identificador, nombre, apellidos o identificador de tutor, sin más que pulsar sobre el propio título de la columna o sobre la flecha que aparece al lado de cada uno. En la pantalla donde se muestra Autor: Antonio Martínez Martínez 124 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación la lista de resultados (ver figura 3.4.2.1.1) aparecen 3 botones, que nos permitirán realizar las operaciones de gestión. Figura 3.4.2.1.1 A continuación se detallan las posibilidades de gestión de fichas de alumnos, dividas por acciones. 1. Ver La ventana de visión de datos de alumno tiene la misma estructura que la de creación en cuanto a las pestañas de datos (personales y familiares), N.C.C., evaluación inicial y diagnóstico. Además presenta una nueva pestaña, denominada “Hoy”. En esta pestaña el profesor refleja el trabajo diario de cada alumno, clasificando esta información en áreas en primera instancia, y en Autor: Antonio Martínez Martínez 125 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación subáreas dependientes del área seleccionada en segunda. Además, se ofrece la posibilidad de añadir un asunto que identifique de un vistazo el apunte a la hora de realizar informes (ver figura 3.3.2.3.2 del apartado “Modo profesor”). En el apartado siguiente, “Trabajo diario”, se ofrece una información más detallada acerca de esta pestaña. La información representada es accesible sólo en modo lectura salvo, obviamente, la de la pestaña “Hoy”, que es generada por el propio usuario, en el caso de ser profesor. Para los consultores se muestra el último apunte registrado, en modo lectura. 2. Modificar Esta ventana se diferencia en 2 características de la anterior: · No posee la pestaña “Hoy”. · La información es completamente editable. De esta última característica hay que reseñar la parte correspondiente a los N.C.C. El resto de pestañas, como se puede suponer, reflejan la información correspondiente al alumno seleccionado, con la posibilidad de modificar cualquier dato. Los objetivos seleccionados en la creación de la ficha aparecen aquí reflejados. En la parte inferior de la pestaña existen dos botones: “Añadir Objetivo” y “Actualizar Objetivos”. Con el primero se pueden añadir nuevos objetivos en cualquier momento, bien porque se hayan ido cumpliendo otros añadidos al principio, bien porque aparezcan nuevas carencias en el alumno dignas de ser tenidas en cuenta para mejorarlas. El segundo sirve para hacer efectiva en la base de datos cualquier modificación realizada sobre alguno de los objetivos seleccionados en la creación de la ficha del alumno. Estas modificaciones pueden ser, por un lado, haber cumplido con el objetivo, es Autor: Antonio Martínez Martínez 126 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación decir, que el profesor pulse la opción “Sí” de la columna “Cumplido” (o viceversa, que un objetivo que se tenía por cumplido pase a no estarlo). Por otro lado, también puede ser que se haya realizado la adición de un nuevo objetivo que el profesor desea que se añada a la lista, haciéndose efectiva en la base de datos. 3. Eliminar Al pulsar sobre esta opción, no se muestra ninguna ventana nueva. Simplemente se solicita al usuario la confirmación de la eliminación de la ficha. Tras la confirmación, se produce la eliminación definitiva de la ficha en la base de datos. Otra posibilidad, indicada en “Líneas futuras”, es la de eliminar la ficha de la base de datos que se esté usando para el actual curso y realizar una copia de los datos del alumno en un segundo repositorio, de forma que se mantenga un archivo histórico de los alumnos que han pasado por el centro, y de los métodos y resultados obtenidos para la deficiencia que presente. Autor: Antonio Martínez Martínez 127 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación 3.4.2.2 Trabajo diario Como se ha venido comentando en anteriores apartados, una de las labores más importantes del profesor es realizar periódicamente apuntes acerca de la actividad de los alumnos. Estos registros son el pilar fundamental sobre el que se basa la herramienta SELWA. Como se mostrará en el siguiente apartado (“Informes”), una de las misiones prioritarias de la aplicación es posibilitar a sus usuarios un seguimiento pormenorizado del alumno mediante la generación de informes, generados a partir de la información que el profesor refleja en sus apuntes diarios1. La clasificación de esta información se ha hecho en dos partes. Por un lado es necesario seleccionar un área de entre las siguientes: · Cognitiva/Perceptiva · Lingüística · Motórica · Afectivo/Emocional · Adaptación e Inserción social · Matemáticas · Lectoescritura · Estilo de aprendizaje · Hábitos En función del área seleccionada, el cuadro de subáreas carga los valores correspondientes. A continuación se muestran las subáreas asociadas a cada área: 1 En realidad los registros de actividad de los alumnos no tienen por qué producirse diariamente. Ésta sería la periodicidad ideal, con el fin de obtener la mayor información posible de un alumno a la hora de generar un informe, pero no es requisito indispensable. Registros periódicos cada 2, 3 ó 4 días también sería una secuencia aceptable. Autor: Antonio Martínez Martínez 128 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Ø Percepción visual y táctil Ø Percepción Auditiva Cognitiva/Perceptiva Ø Estructura espacio-temporal Ø Otras Lingüística Motórica Articulación Comprensión oral Vocabulario básico Desarrollo morfosintáctico Ø Nivel semántico Ø Memoria verbal inmediata Ø Otras Ø Ø Ø Ø Ø Coordinación vasomotora Ø Habilidades manipulativas pregráficas Ø Iniciación gráfica Ø Esquema y control postural Ø Coordinación visomanual Ø Equilibrio Ø Conductas respiratorias Ø Otras Autor: Antonio Martínez Martínez 129 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Afectivo/Emocional Otros Adaptación e inserción social Otros Ø Numeración Ø Cálculo mental Matemáticas Ø Operaciones Ø Problemas Ø Otros Lectoescritura Estilo de Aprendizaje Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Palabras, frases, textos Tipo de lectura Velocidad Comprensión lectora Caligrafía Copia Dictado Composición Ortografía Otros Ø Ø Ø Ø Ø Ø Ø Ø Atención Seguimiento de instrucciones Modalidad sensorial preferente Preferencias de reforzamiento Motivación Persistencia en ejecución de tareas Necesidad de movilidad Otros Autor: Antonio Martínez Martínez 130 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Ø Alimentación Ø Vestido Hábitos Ø Higiene Ø Control de esfínteres Ø Otros Esta clasificación ha sido extraída a partir de una colección de informes utilizados en el colegio “Virgen del Valle” de la localidad cordobesa de Lucena. No reflejan el contenido exacto de ninguno de ellos, sino que se ha realizado un compendio de características, de modo que la clasificación sea lo más flexible y amplia posible. Otras clasificaciones son igualmente válidas, pues no existe un modelo estándar para ellas. Además de esta clasificación de la información, se añade un campo de texto (“Asunto”) para dotar al apunte de un título que lo identifique en los informes. Al pulsar el botón “Insertar” se llama a la función encargada de añadir el apunte en la base de datos. 3.4.3 Información técnica Como ya se comentó en el apartado 3.4.2.1, para realizar cualquier función que se englobe en la definición de gestión básica dada en el mismo apartado, es necesario hacer, en primer lugar, la búsqueda del alumno sobre el que se desea realizar la acción. Esta búsqueda se puede realizar utilizando como criterio 4 parámetros: identificador del alumno, nombre, apellidos o identificador del Autor: Antonio Martínez Martínez 131 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación profesor asociado. Al pulsar “Buscar”, se realiza la llamada a “res_fich.php”, donde se realizan las siguientes acciones: Ø Recepción de variables y selección de permisos según perfil Mediante el requerimiento del archivo “vars_busca_al.php” se reciben las variables enviadas desde el formulario de búsqueda. Asimismo, en función del perfil del usuario que haya realizado la búsqueda (administrador, profesor o consultor) se establecen los permisos que tiene a la hora de mostrarle unos resultados u otros, es decir, habrá que realizar una consulta a la base de datos para obtener, a partir del identificador del usuario, qué alumnos son a los que tiene acceso. En el caso del administrador el criterio es el menos selectivo de todos, pues tiene acceso a la información de todos los alumnos. Ø Extracción de datos Una vez almacenado el criterio de búsqueda (limitado por el tipo de usuario que lo solicitó) en la variable “$criterio”, se procede al recuento del número de coincidencias encontradas, con objeto de establecer el número de páginas que será necesario crear, dado el parámetro de máximo número de resultados a mostrar por página. En este momento ya es posible realizar la consulta definitiva, insertando en la sentencia MySQL de búsqueda tanto el criterio obtenido en el primer punto como los límites de la búsqueda, así como el orden en el que serán mostrados (por defecto se muestran en orden ascendente en función del identificador de alumno). Con los datos obtenidos se genera la tabla de contenidos mediante un bucle “while”. Autor: Antonio Martínez Martínez 132 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Ø Paginación Se establece un máximo de 5 resultados por página, siendo posible, desde un menú situado en la parte inferior de la tabla de resultados, acceder a las páginas anterior, siguiente, inicial, final o a cualquiera intermedia. Al pulsar sobre cualquiera de estos links, se redirige al navegador a la misma página “res_fich.php”, enviando como parámetros la página a la que se desea acceder, el orden establecido, el sentido (ascendente o descendente) y el criterio que se utilizó. Ø Ordenación Es posible, como ya se comentó en el punto 3.4.2.1, cambiar el orden en el que son mostrados los resultados. Al pulsar sobre el título de la columna (o la flecha que lo acompaña) se realiza la recarga de la página, enviando como parámetros el número de página en el que se está, el orden en el que se van a mostrar los resultados (que será el de la columna sobre la que se pulse), el criterio usado para la búsqueda, el patrón introducido por el usuario y la variable que indica si los resultados se están mostrando en sentido ascendente o descendente. Una vez seleccionado el alumno (mediante la pulsación sobre el botón de radio correspondiente), hay que decidir qué acción se desea realizar (las posibilidades variarán, obviamente, en función del perfil del usuario que lo solicite). A continuación se muestra la información técnica reseñable de cada una de las acciones que, como ya se comentó en el apartado “Gestión básica”, son: “Modificar”, “Ver” y “Eliminar”. Autor: Antonio Martínez Martínez 133 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación v Modificar El primer paso será obtener, a partir del identificador, los datos del alumno seleccionado. Esto se realiza mediante la llamada a “find_al.php”, archivo que se encarga de asignar a variables todos los datos que de ese alumno se tengan en la base de datos. A partir de aquí se genera la misma estructura que para “crea_ficha.php”, rellenando los cuadros de información con los datos almacenados en las variables anteriormente mencionadas. La pestaña que requiere un mayor detenimiento en su estudio es “N.C.C.”. Aquí, para la adición de nuevos objetivos que pasen a formar parte del N.C.C. del alumno, se utiliza el archivo “add_obj.php”. En él se distinguen 2 partes: por un lado, el listado de las competencias que se tienen registradas en la tabla “quest_ncc” de la base de datos. Por otro, el código que genera la nueva entrada en la tabla de objetivos. Este código (JavaScript) es llamado al pulsar el botón “Aceptar” de la ventana que contiene el listado de competencias. Será necesario crear nuevos elementos “tr”, “td”, “span” e “input” para añadir a la estructura que forma el listado de los objetivos del alumno. El código en cuestión puede verse en el capítulo de códigos, apartado 6.2.4 (“JavaScript”), con el título “add_obj.php”. En el caso de que lo que se quiera modificar sea la programación de un objetivo concreto, el archivo que interviene es “progr_obj.php”. En función de una variable (“mod”), se mostrará la información en modo editable o de sólo lectura. En el caso de sólo lectura, en la parte inferior de la ventana no existe el botón “Guardar”, que para el caso editable permite actualizar la información del objetivo. Para ello, se envía el formulario con los datos de los diferentes campos de texto (además del número de objetivo que se está actualizando y el identificador del alumno) a un archivo “res_prog_obj2.php”, que será el encargado de realizar la actualización de la tabla “prof_obj”. En caso de éxito, se muestra en la parte superior de la ventana origen (en la que se pulsó sobre el objetivo) un mensaje informando de la correcta actualización. Por el contrario, Autor: Antonio Martínez Martínez 134 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación si hubiese cualquier problema y no se pudiese completar la actualización se indicaría en el mismo sitio la incidencia. Ambos mensajes son generados mediante una función JavaScript llamada “FX_falloff”, que realiza un efecto de desvanecimiento progresivo del mensaje pasándole como parámetros el identificador del elemento sobre el que se quiere realizar el efecto y el tiempo que se desea dure el desvanecimiento. El último punto a reseñar en la modificación de datos de la pestaña “N.C.C.” es la actualización de objetivos. En el momento en que el usuario añade un objetivo o modifica la situación de uno ya existente (pasa de estar no cumplido a estarlo) no se refleja la variación en la base de datos. Es necesario pulsar el botón “Actualizar Objetivos” para hacer efectivo el cambio. Esta pulsación provoca la llamada a “act_obj.php”. Este archivo es el que contiene las órdenes de actualización de la base de datos donde, entre otras acciones, realiza comprobaciones de no duplicación de objetivos. A partir de la recepción de las variables que contienen el identificador del profesor, del alumno y del objetivo a actualizar se realiza la actualización, que provoca variaciones en las tablas “prof_obj” y “res_ncc”, encargadas de almacenar la información de los objetivos actuales y del estado de los mismos, respectivamente. Una vez realizadas todas las modificaciones oportunas en las distintas pestañas, sólo resta pulsar el botón “Actualizar Datos”, situado en la pestaña “Diagnóstico”. Esta acción provoca la llamada a “actualiza.php”, donde se desencadenan las mismas operaciones que a la hora de crear una ficha, sustituyendo la llamada al método “insert” por la llamada a “update”. Nuevamente, si todo transcurrió con éxito, se redirige el navegador a una página de información donde se indica que todo se ejecutó correctamente o, por el contrario, se muestra un mensaje que refleja cuál fue la causa del posible error. Autor: Antonio Martínez Martínez 135 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación v Ver En el caso de pulsar el botón “Ver” desde la ventana de resultados de búsqueda, las posibilidades son mucho más reducidas que en el caso anterior. El archivo llamado es “ficha.php”, donde se muestra la estructura de “crea_ficha.php” con la adición de la pestaña “Hoy”. La información que contienen las pestañas es extraída de las tablas “al_info_pers”, “al_info_fam”, “al_cons”, “al_diag”, “al_prof”, “ev_ini” y “res_ncc” mediante el requerimiento de “find_al.php”, al igual que en la opción “Modificar”, con la salvedad de que la información no es editable (los campos de texto tienen la propiedad “readonly” activada, y los menús desplegables han pasado a ser elementos “input” de sólo lectura). Lo realmente interesante de esta parte es la inserción de la información diaria. Al igual que sucedía en la pestaña “Diagnóstico” con el comportamiento de los menús “Tipología”, “Patología” y “Nivel”, en los que la selección en el primero de ellos influía en la información mostrada por el segundo y, a su vez, una variación en la selección del segundo, modificaba el contenido del tercero, aquí sucede algo similar con los menús “Área” y “Subárea”. El mecanismo JavaScript que realiza esta actualización es similar al ya explicado en el apartado 3.3.3.4, y por lo tanto no se volverá a repetir. Sí indicar que al pulsar el botón “Insertar”, situado en la parte inferior derecha de la pestaña “Hoy”, se invoca al archivo “inserta_hoy.php” donde, tras recibir las variables enviadas gracias a “recibe_vars_hoy.php”, se realiza la inserción de la información en la tabla “info_diaria”, registrándose, además de la información visible, el identificador del alumno, el del profesor y la fecha de inserción. v Eliminar La única variable que necesita recibir el archivo “del_ficha.php” para poder eliminar correctamente la ficha de un alumno es la que contiene el identificador de dicho alumno. Gracias a ella, y a que este identificador está presente en todas Autor: Antonio Martínez Martínez 136 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación las tablas que contienen algún tipo de información del alumno, se va eliminando cualquier registro cuyo identificador de alumno asociado coincida. Las tablas de las que es necesario realizar la eliminación de información son las mismas que es necesario leer para mostrarla, ya nombradas en el punto anterior, además de la tabla “info_diaria”, que contiene los registros realizados por el profesor acerca del desarrollo del alumno, y la tabla “prof_obj”, donde el profesor refleja la programación individual de los objetivos. Autor: Antonio Martínez Martínez 137 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación 3.5 Informes 3.5.1 Introducción Como ya se avanzó en el apartado “Motivación y Objetivos” del presente documento, uno de los objetivos principales de esta aplicación es permitir a los padres de niños con necesidades educativas especiales un seguimiento continuo y pormenorizado de la actividad de su hijo en el centro. Para ello, se ha desarrollado un sistema de automatización de informes, posible gracias a la clasificación hecha a la hora de catalogar la actividad cotidiana del alumno. De esta forma, todos los actores que toman parte en su vida escolar (profesor, especialistas y padres/tutores) comparten la misma información, teniendo acceso a ella en cualquier momento siempre que se disponga de una conexión a Internet. 3.5.2 Funcionamiento básico Un informe es generado a partir de la selección de 3 componentes: ● El alumno del que se quiere extraer el informe. ● El período a tener en cuenta. ● Los campos de los que desea obtener información. Una vez realizada la búsqueda del alumno en cuestión (mecanismo ya visto en apartados anteriores), la ventana que aparece tiene el aspecto mostrado en la figura 3.5.2.1: Autor: Antonio Martínez Martínez 138 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.5.2.1 Tras elegir el período del que se desea obtener un resumen, el usuario marca las casillas de las áreas y/o subáreas de las que desea extraer información en dicho período. Pulsando sobre las áreas, automáticamente quedan seleccionadas todas las subáreas correspondientes, evitando tener que ir marcando una a una si se desea toda la información relativa a un área. Una vez más, se ha dotado al sistema de un cuadro de texto en el que reflejar cualquier incidencia que se considere oportuna y que no permita ser añadida mediante la selección de las casillas correspondientes. En este caso, el cuadro “Anotación Personal” (Figura 3.5.2.2) permite al usuario realizar una anotación para indicar, por ejemplo, el motivo por el cual se extrae el informe, o para explicar cualquier apunte de los reflejados en la base de datos y que pueda no quedar claro del todo. Autor: Antonio Martínez Martínez 139 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Figura 3.5.2.2 Detalle del recuadro donde se reflejan las anotaciones personales del usuario en el informe Tras la selección de los campos correspondientes, simplemente resta pulsar el botón “Crear Informe”. Aparecerá una ventana de confirmación, y tras aceptar se genera el informe. El formato en el que se crean los informes es PDF. Se ha escogido este tipo de archivo fundamentalmente por 2 motivos: ● Compatibilidad. ● Potente librería PHP para gestión de documentos PDF. El primer punto hace referencia a la compatibilidad que ofrece el formato PDF en distintas máquinas y en distintos sistemas operativos, a diferencia de otros formatos que también hubiesen sido válidos (como, por ejemplo, archivos .doc de Microsoft Word o .odt de Open Office). El segundo punto también fue determinante en la elección de PDF como formato. El lenguaje PHP ofrece una completísima librería de funciones para el manejo de archivos PDF, otorgando al usuario el poder de realizar un maquetado con un amplísimo abanico de posibilidades, tantas como nos pueda ofrecer cualquier editor de textos: justificaciones, fuente de letra, tamaño, negrita, subrayado, rellenado de color, inserción de tablas, imágenes, etc. Dado el carácter docente de estos informes, se ha optado por un estilo sobrio, sencillo Autor: Antonio Martínez Martínez 140 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación y claro, sin grandes alardes de colores, efectos o imágenes. La estructura de un informe cualquiera siempre va a ser de la forma: Datos del alumno Ø Nombre y apellidos Ø Profesor asociado Ø Especialistas asociados Ø Tipología, patología y nivel Período de evaluación Información Ø Área Ø Subárea Ø Asunto Ø Fecha Ø Comentario Si en un área concreta se ha solicitado información de varias subáreas, la información aparecerá anidada de forma jerárquica dentro del área en cuestión. Lo mismo ocurrirá para distintos apuntes de una misma subárea, es decir, la estructura será de la forma: Autor: Antonio Martínez Martínez 141 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación Área1 Subárea1 Asunto1 Fecha1 Comentario1 Asunto2 Fecha2 Comentario2 Subárea2 Asunto3 Fecha3 Comentario3 Subárea3 Asunto4 Fecha4 Comentario4 Área2 Subárea4 Asunto5 Fecha5 Comentario5 . . . Es importante reseñar que cada apunte aparece con la fecha en la que se realizó, de forma que la información sea lo más completa posible. Por último, decir que la anotación personal siempre aparece al final del informe, de modo que pueda servir para matizar cualquier aspecto, o añadir alguna información que sea considerada de relevancia por el usuario que realiza el informe. Autor: Antonio Martínez Martínez 142 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación 3.5.3 Informes personalizados De los 2 tipos de informes propuestos en el sistema SELWA, se ha optado por la implementación de los personalizados. El motivo es que estos informes proporcionan al usuario que lo genera la posibilidad de elegir los campos que desea que aparezcan en dicho informe. Para ello, y como se muestra en la figura 3.5.2.1, basta con marcar las casillas correspondientes a las áreas y subáreas que se desean ver. El procedimiento ya está explicado en el apartado anterior, de modo que no se entrará de nuevo en ello. Otro de los motivos por los que se ha optado por la implementación de informes a medida, es la diferente perspectiva que tienen distintos usuarios de un mismo alumno. La información que un padre desee obtener de la actividad de su hijo en el centro puede no ser la misma (y de hecho casi seguro que no lo será) que la que desee ver un especialista. Por esto, no se quería limitar al sistema en este aspecto, es decir, que sólo hubiese un tipo de informe y que fuese el que todo usuario pudiese obtener. Por otro lado, sí que es cierto que en el trabajo diario (semanal o mensual), los profesores o especialistas suelan trabajar con el mismo tipo de informe. Para que el sistema de informes personalizados no resultase incómodo, se propone un segundo tipo de informe, detallado en el apartado siguiente. 3.5.4 Informes predefinidos El modelo de informes predefinidos (no implementado en SELWA, pero sí propuesto como línea futura) resulta muy conveniente en centros donde periódicamente se solicite una información que contenga unos campos concretos e invariables. En los centros de educación también se produce este hecho. Con cierta frecuencia, los profesores deben emitir unos informes, reflejando distintos aspectos (normalmente siempre los mismos), útiles para las Autor: Antonio Martínez Martínez 143 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 3 Diseño e Implementación distintas personas a quienes puedan ir dirigidos. El modelo de informes personalizados es más completo y versátil que el predefinido, pero puede llegar a resultar tedioso tener que seleccionar siempre los mismos campos para obtener unos informes que siempre tienen la misma estructura. Es por esto por lo que se plantea el uso de informes predefinidos, en los cuales el usuario simplemente selecciona qué modelo de informe predefinido desea obtener (cada modelo tendrá asociados unos contenidos), y el período de tiempo a considerar. Con estos datos, el sistema generaría automáticamente el informe según la definición del modelo. Autor: Antonio Martínez Martínez 144 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 4 Líneas futuras 4 Líneas futuras En los siguientes apartados se muestran algunas de las soluciones propuestas para hacer más completo al sistema SELWA. En algunos casos se trata de cambios no sustanciales en el funcionamiento de la herramienta, mientras que en otros sí que son soluciones que mejorarían considerablemente la aplicación. 4.1 Módulo de gestión personal Dentro del menú principal para el perfil “profesor”, se propone la adición de este módulo. La idea principal es que en este apartado de la aplicación los profesores tengan recogidas las herramientas que les permiten la comunicación con los distintos usuarios con los que interactúan, es decir, padres/tutores, especialistas, otros profesores, administración, etc., así como una agenda automatizada que facilite al profesor recordatorios de citas programadas como, por ejemplo, reuniones, claustros, entrega de notas, etc. Las ampliaciones propuestas dentro de este bloque no resultan fundamentales para el correcto funcionamiento de la aplicación, pero sí le añaden algunos servicios muy interesantes. A continuación se detallan las mejoras propuestas en esta área. 4.1.1 Agenda Se propone la implementación de 2 tipos de agenda independientes entre sí. Por un lado la agenda general o común, accesible para todos los usuarios de SELWA en modo lectura. Consistiría en una agenda controlada por el administrador, donde se publicarían las citas de interés a nivel de centro. En esta agenda estarían incluidas citas tales como recordatorios de reunión con dirección, claustros, entrega de notas y/o informes, etc., en definitiva, cualquier Autor: Antonio Martínez Martínez 145 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 4 Líneas futuras tema que ataña al colectivo de usuarios de la aplicación. Por otro lado, se propone la creación de una agenda personalizada para cada profesor, con objeto de que en todo momento se tengan presentes las citas con otros usuarios o fechas de entrega de informes o notas. En este caso, el profesor registraría apuntes en su agenda particular, clasificando dichos apuntes por temáticas (reunión, cita con padres, entrega informes, cita con especialista, etc.). La agenda dispondría de un mecanismo que realizase recordatorios al profesor de las citas del día actual, así como de las del día siguiente, indicándole también a qué categoría pertenecen esas citas. La apariencia de ambos tipos de agenda sería similar al calendario que se muestra durante el proceso de navegación por SELWA en el margen inferior izquierdo, con la particularidad de poder seleccionar días independientes o semanas, según la planificación que se quiera realizar. En el momento en que se haga un apunte en la agenda, el día o días que abarquen esa cita aparecerían resaltados de alguna manera. 4.1.2 Tablón de anuncios La adición de esta utilidad está pensada para dotar a los profesores de un sitio común, algo similar a un blog, donde poder expresar opiniones o recordatorios en un tono distendido, siempre, por supuesto, moderado por el administrador, pues no debe olvidarse que no deja de ser una herramienta al servicio del trabajo diario. Este servicio resultaría útil, fundamentalmente, en centros con gran volumen de profesores. En este caso, el “Tablón de anuncios” podría usarse para poner anuncios (venta o alquiler de vehículos, inmuebles, etc.), recordatorios comunes, críticas o cualquier otro tema que pueda resultar de interés a la comunidad de profesores. Autor: Antonio Martínez Martínez 146 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 4 Líneas futuras 4.1.3 Correo interno La última solución propuesta dentro del módulo de gestión personal sería un bloque en el que se registrasen los mensajes intercambiados por los distintos usuarios del sistema. No se trata de implementar ningún tipo de servidor de correo, sino simplemente una tabla más en la base de datos, que asocie mensajes con usuarios, de modo que cuando un usuario ingrese en el módulo de correo interno, se le muestre una pequeña tabla con los mensajes que otros usuarios en su dominio (padres/tutores asociados o administrador) han enviado mediante el formulario apropiado. Los posibles usos de este mecanismo están orientados a poner en contacto directo a un profesor con los consultores asociados a un alumno. Así, también los consultores dispondrían de un módulo de gestión de correo interno en su interfaz de la aplicación. Como ya se comentó en el apartado 3.3.2.2 (“Modo administrador”), la eliminación por parte del profesor de un mensaje no supone su borrado de la base de datos, sino la copia a otra tabla en la que se registrará el mensaje eliminado y el usuario al que pertenece. Como ya se comentó en dicho apartado, el objeto de este funcionamiento no es otro que el de evitar la eliminación de críticas o reclamaciones por parte de consultores a la labor docente de un profesor. Será siempre el administrador de la aplicación el que decida si un mensaje se elimina definitivamente de la base de datos o si, por el contrario, debe enviar un mensaje por correo interno al profesor, solicitando alguna explicación acerca del motivo de la eliminación. Autor: Antonio Martínez Martínez 147 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 4 Líneas futuras 4.2 Módulo de gestión de usuarios El módulo de gestión de usuarios se encuentra parcialmente implementado, ante la ausencia de métodos de modificación y eliminación de usuarios. A continuación se sugieren las posibles soluciones que completarían dicho módulo con objeto de hacerlo totalmente operativo. 4.2.1 Modificación y eliminación de fichas de usuario La ampliación propuesta para este módulo sí que resultaría tremendamente útil a la aplicación. Si bien con la parte implementada es suficiente para poder usar la herramienta con total normalidad, la adición de la posibilidad de modificar y eliminar los datos de los usuarios haría que este módulo quedase completamente finalizado, pues poseería las 3 características definidas en el apartado 3.4.1.1 como “Gestión básica”: creación, modificación y eliminación. El uso de estas funciones sería similar al descrito para la modificación y eliminación de fichas de alumnos en el apartado 3.4.2 (“Gestión de alumnos”): búsqueda, en primer lugar, del usuario sobre el que se va realizar la acción, y posterior pulsación sobre la opción deseada, “Modificar” o “Eliminar”. En la primera de las opciones, aparecería la misma pantalla que en “Creación de usuario” (ver figura 3.3.2.2.2), con la información del usuario en modo editable. En la segunda, simplemente se solicitaría la confirmación de la acción elegida, “Eliminar”, para suprimir definitivamente esa ficha. Obviamente, ambas tareas son competencia exclusiva del administrador del sistema. Autor: Antonio Martínez Martínez 148 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 4 Líneas futuras 4.3 Módulo de gestión de alumnos Si bien el módulo de gestión de alumnos está bastante completo, siempre es posible añadir alguna funcionalidad que complemente el exhaustivo seguimiento de los alumnos que se desea obtener con la herramienta SELWA. Es por ello que se propone, a continuación, una pequeña ampliación a este sistema de gestión. 4.3.1 Backup de datos de alumnos en repositorio Como ya se comentaba en el apartado 3.4.2 (“Gestión de alumnos”), el funcionamiento real del sistema a la hora de eliminar la ficha de un alumno es suprimir dicha ficha definitivamente de la base de datos. Pero es cierto que, en lugar hacer esto, sería interesante realizar un backup de los datos e historial del alumno en una base de datos auxiliar, a modo de repositorio de consulta para futuros accesos. De este modo, si en el futuro se presentase un caso similar al de un alumno que fue dado de baja en el centro, y del que se conserva su historial (patología, metodología empleada, objetivos seleccionados en la pestaña N.C.C., etc.), sería posible actuar de una forma más eficiente a tenor de los resultados obtenidos con el anterior alumno. En esta nueva base de datos, haría falta copiar los datos referentes a las siguientes tablas del repositorio actual: · “al_diag”: datos del diagnóstico. · “al_info_fam”: datos familiares. · “al_info_pers”: datos personales. · “ev_ini”: datos de la evaluación inicial. · “info_diaria”: quizá la información más importante, pues son los apuntes registrados por el profesor acerca del desarrollo académico del alumno durante cada curso. Autor: Antonio Martínez Martínez 149 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 4 Líneas futuras · “prof_obj”: programación realizada por el profesor para cada objetivo seleccionado en N.C.C. Autor: Antonio Martínez Martínez 150 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 4 Líneas futuras 4.4 Gestión de Informes El sistema SELWA implementa un completo sistema de generación de informes de seguimiento totalmente configurables a la medida del usuario que lo genera. Pero como ya se comentaba en el apartado 3.5.4 (“Informes predefinidos”), este sistema puede agilizarse en aquellos casos en los que los informes solicitados sigan siempre el mismo esquema, de modo que sería interesante generar unas plantillas con unos campos ya preestablecidos, de manera que el usuario simplemente tuviese que seleccionar el tipo de informe que quiere generar (modelo 1, modelo 2, etc.), y no detenerse en seleccionar uno a uno los campos que desea incluir, en el caso de los personalizados. Podrían generarse patrones en función de las áreas a considerar: cognitiva, lingüística, motórica, etc., o bien generar modelos híbridos de uso común: matemáticolingüístico, hábito-cognitivo, etc. De cualquier manera, es sólo una ampliación leve, no se trata de una funcionalidad que mejorase sustancialmente la aplicación, pues el mecanismo de informes implementado es suficientemente completo. Autor: Antonio Martínez Martínez 151 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 4 Líneas futuras Autor: Antonio Martínez Martínez 152 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 5 Conclusiones 5 Conclusiones El objetivo fundamental del proyecto SELWA, como ya se comentó en el primer apartado, es proporcionar una herramienta tan versátil como de fácil manejo para sus usuarios, capaz de poner en contacto, vía web, a los distintos actores que intervienen en la vida académica de niños con necesidades educativas especiales, especialmente a sus padres/tutores. Se considera cumplido dicho objetivo, pues la aplicación desarrollada proporciona a los usuarios una interfaz agradable, de fácil manejo y con una exhaustiva clasificación de la información, de manera que el seguimiento realizado a cada alumno sea el más completo posible, con unos datos compartidos por los diferentes agentes que siguen e influyen en su desarrollo escolar. La programación estructurada empleada, separando los códigos XHTML, PHP, JavaScript y CSS, permite fáciles retoques y ampliaciones a la aplicación desarrollada, como las propuestas en el apartado “Líneas futuras”. Uno de los mayores obstáculos en el desarrollo del sistema, fue la falta de conocimientos en casi todos los campos que abarca la programación de SELWA. Si a esto se añade la dificultad de cumplir con las recomendaciones Web 2.0, cobra especial importancia el período dedicado a recopilación de información durante el primer mes y medio, así como las fuentes consultadas, tanto bibliográficas, web, como personales. Es por esto que la elaboración de este proyecto ha supuesto una importante recopilación de conocimientos en diversas tecnologías de programación web, así como una puesta al día en cuanto a tendencias futuras. El uso de esta herramienta está orientado, como ya se ha comentado, a alumnos con necesidades educativas especiales, pero, debido a la estructuración Autor: Antonio Martínez Martínez 153 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 5 Conclusiones de la programación anteriormente citada, podría adecuarse fácilmente para el seguimiento de alumnos de cualquier condición y de cualquier centro. Simplemente sería necesario cambiar los campos donde se registra la información de diagnóstico por aquellos campos que el centro estimase oportunos. De igual manera, la pestaña donde se registra la actividad diaria de los alumnos debería ser modificada, de manera que en lugar de las áreas y subáreas que aparecen (particulares para la educación especial), apareciesen otras que cumpliesen con las expectativas del centro que las solicitase. Autor: Antonio Martínez Martínez 154 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones 6 Pliego de condiciones En primer lugar aparecerán los diagramas que representan la base de datos, siguiendo el modelo entidad-relación. A continuación, se adjuntan algunos de los códigos más representativos de cada uno de los lenguajes utilizados, comentados oportunamente. 6.1 Diagramas base de datos A continuación se muestran los diagramas de la base de datos (“db_ee”) utilizada en el proyecto SELWA, utilizando para su elaboración el modelo entidad-relación para bases de datos relacionales. En primer lugar se mostrarán los diagramas correspondientes a las entidades junto con sus atributos para, seguidamente, mostrar las relaciones entre distintas entidades. En cada plano se muestra un número de referencia, una descripción breve del contenido representado y el título y autor del proyecto. Tras esto, para aquellos planos que lo requieran, se muestran una serie de tablas donde se indican los campos y tipos de datos de la tabla representada en el plano correspondiente. Es obvio que existen tablas que no requieren de mayor explicación de sus campos que la mostrada en el diagrama. Autor: Antonio Martínez Martínez 155 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 156 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 157 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 158 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 159 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 160 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 161 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 162 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 163 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 164 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 165 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 166 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 167 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 168 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 169 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones Autor: Antonio Martínez Martínez 170 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones PLANO ENTIDAD1 ENTIDAD2 RELACIÓN DESCRIPCIÓN db010 Alumno Familia N/1 Una entidad “familia” puede poseer datos de N alumnos db011 Alumno Info Objetivos M/N Un alumno puede poseer datos de N objetivos, y un objetivo puede estar asignado a M alumnos db011 Alumno Info Evaluación Inicial M/1 La estructura de datos de la información de Evaluación Inicial es la misma para cualquier alumno db011 Alumno Info Diagnóstico M/1 La información de diagnóstico disponible es la misma para todos los alumnos db011 Alumno Info Diaria M/N Un alumno puede tener distintos apuntes en la tabla “Info Diaria”, y esos apuntes pueden ser los mismos para M alumnos db011 Alumno Info N.C.C. M/N Igual que para el caso anterior db012 Alumno Profesor N/1 Un profesor puede tener asignado un grupo de N alumnos, pero un alumno sólo estará asignado a 1 profesor. El profesor GESTIONA la información del alumno Autor: Antonio Martínez Martínez 171 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones PLANO ENTIDAD1 ENTIDAD2 RELACIÓN DESCRIPCIÓN db012 Alumno Consultor M/N Un alumno puede tener asignados hasta N consultores, mientras que un consultor puede VER información de hasta M alumnos db013 Consultor Info Objetivos M/N Los consultores tienen acceso a ver los N objetivos asignados a un alumno. db013 Consultor Info Evaluación Inicial M/1 Ídem al anterior, pero la información de Evaluación Inicial es sólo una db013 Consultor Info Diagnóstico M/1 Ídem al anterior db014 Profesor Info Objetivos 1/N Un profesor puede crear y modificar la información de los N objetivos asociados a un alumno db014 Profesor Info Diaria 1/M Igual que para el caso anterior, pero la Información Diaria no es modificable db014 Profesor Info Evaluación Inicial 1/1 El profesor es el encargado de generar y modificar la Información de Evaluación Inicial db014 Profesor Info Diagnóstico 1/1 Ídem al anterior Autor: Antonio Martínez Martínez 172 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones PLANO ENTIDAD1 ENTIDAD2 RELACIÓN DESCRIPCIÓN db015 Usuarios Control Usuarios Autor: Antonio Martínez Martínez M/1 Un usuario sólo posee una única información en la entidad “Control Usuarios” 173 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones 6.2 Códigos reseñables 6.2.1 CSS à hoja_gral.css Hoja de la página principal body { color:#000000; background: #fff; font-size: 12px; font-family: Arial, Helvetica, sans-serif; width: 1000px; height: 8.3in; overflow: auto; } #cabecera { position: absolute; width: 1000px; height: 0.55in; top: 0; left: 0; background-image: url(../fotos/back_cab.jpg); border-bottom: 1px solid black; } #jerarquia { position: absolute; width: 1000px; height: 0.35in; top: 0.55in; left: 0; background-image: url(../fotos/back_jerar.jpg); color: #000000; border-bottom: 1px solid #C3D9FF; } #lateral2 { position: absolute; width: 100%; height: 3in; top: 2in; left: 0; background-image: url(../fotos/back_lat2.jpg); border-right: 1px solid #C3D9FF; } Autor: Antonio Martínez Martínez 174 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones #lateral3 { position: absolute; width: 100%; height: 2in; top: 5in; left: 0; background-image: url(../fotos/back_lat3.jpg); border-right: 1px solid #C3D9FF; } #pie { position: absolute; width: 1001px; height: 0.4in; top: 7.9in; left: 0; bottom: 0; background-image: url(../fotos/back_pie.jpg); border-top: 1px solid #C3D9FF; } #principal { position: absolute; width: 748px; height: 7.02in; top: 0.9in; right: 0; bottom: 0.5in; left: 253px; background: #bbd9ee; color:#000000; border-top: 1px solid #C3D9FF; } h2{font: 14pt sans-serif;font-weight: bolder;textalign:center;color: #00c;} h2.clase_error,h2.clase_error2{font: 13pt sans-serif;fontweight: bolder;color: #000; text-align:left; margin-left:55px; margin-top:30px} div#datos{position: absolute;top: 1in;left: 0;width: 91%;height: 70%;margin-left: 50px;background: #fff;color:#000000;} div#d_int{position: relative;margin-left:20px; width: 95%;height: 385px;background: #c3d9ff;color:#000000;} div#capa_texto{display:inline} div#logout{text-align:center; margin-top: 18px} div#foto_logo img{float: left;width: 60px; height:auto; marginleft: 20px; margin-top:5px; margin-right: 13px} div#espli{margin-top:8px;} div#fecha table{position: absolute; left: 750px; top: 5px; font:Georgia, "Times New Roman", Times, serif; font-size: 14px; color: #0C49A5} img#foto{margin-left: 20px; margin-top:20px; marginright:7px;width:30px; height:auto} Autor: Antonio Martínez Martínez 175 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones div#capa_foto{height: 30px;float:left} img.boton_op{border: 0;margin-right: 10px} span.op_titulo1{font:14pt sans-serif} div.op{margin-left: 2in; margin-top:4px} div#barra{text-align:center; margin-bottom:20px} ul.bot_sig,ul.bot_sig li{margin:0;padding:0;list-styletype:none; text-align:center} ul.bot_sig a{display: block;width:7em;margin-bottom: 7px;padding:5px 0;font: bold 100% Helvetica,Arial,sansserif; background: #114DD5;color: #fff; text-decoration:none;text-align:center} ul.bot_sig a:hover{background: #ffa860;color:#fff} div#boton{position: relative; width:90px;text-align:center; margin-left:80px;} form#form_busq{display:inline} span.normal_text{font: 12pt sans serif;font-weight: bolder;} span.jerar1,span.jerar2{margin-left:5px;} span.jerar2{color:#0033CC} span.us{font: 12pt sans serif;font-weight: bolder; color: #925E10;margin-left: 10px} span.acceso{font: 12pt sans serif;font-weight: bolder; color: #925E10;margin-left: 10px} span.esp1{font:Georgia, "Times New Roman", Times, serif; font-size:14px; font-weight:bold;color:#6D6DF8 } span#tit_pie{position: absolute; top: 5px; margin-left: 250px; margin-top: 10px; font:Georgia, "Times New Roman", Times, serif; font-size:10px; fontweight:bold;color:#6D6DF8 } div#logoamm img{width: 30px; height:auto; position:absolute; left: 765px; top: 5px} a#cont{position: absolute; top: 5px; margin-left: 850px; margin-top: 10px; font:Georgia, "Times New Roman", Times, serif; font-size:10px; font-weight:bold;color:#6D6DF8 } Autor: Antonio Martínez Martínez 176 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones à hoja_index.css Hoja de la página donde se crean las fichas de alumno. No se muestra la parte que da formato a las capas que forman la estructura general de la página (cabecera, jerarquía, pie, principal, etc.). Las hojas CSS que proporcionan el estilo a las ventanas de “Ver ficha” o “Modificar ficha” son muy similares a esta. /*CONFIGURACION DE LAS PESTAÑAS*/ div#pest{float: left;width: 100%;paddingtop:20px;background: #bbd9ee;color:#000000;} ul#nav,ul#nav li{list-style-type:none;margintop:15px;padding:0;z-index:1;} ul#nav{margin-left: 60px;width:100%} ul#nav li{float:left;margin-right: 1px;text-align: center;} ul#nav a{float:left;margin-top: 4px;width: 7em;height: 4em;padding: 5px 0;background: #E7F1F8;textdecoration:none;color: #333;font-size: 14px;} ul#nav a:hover{background: #ffa860;color: #fff;font-weight: bold;} ul#nav li.activelink a,ul#nav li.activelink a:hover{background: #fff;color: #003;font-weight: bold;} /*CONFIGURACION DE LA CAPA GRANDE DONDE SE MUESTRA EL CONTENIDO DE LAS PESTAÑAS*/ div#datos1{position: absolute;top: 1in;left: 0;width: 91%;height: 73%;margin-left: 50px;background: #fff;color:#000000;} div#datos2{position: absolute;top: 1in;left: 0;width: 91%;height: 80%;margin-left: 50px;background: #fff;color:#000000;overflow: auto;} div#datos3{position: absolute;top: 1in;left: 0;width: 91%;height: 80%;margin-left: 50px;background: #fff;color:#000000;overflow: auto;} div#datos4{position: absolute;top: 1in;left: 0;width: 91%;height: 80%;margin-left: 50px;background: #fff;color:#000000;overflow: auto;} div#datos5{position: absolute;top: 1in;left: 0;width: 91%;height: 80%;margin-left: 50px;background: #fff;color:#000000;overflow: auto;} .oculto{/*position: relative; top: 1in;left: 1.05in;*/visibility: hidden} .visible{/*position: relative; top: 1in;left: 1.05in;*/visibility: visible} Autor: Antonio Martínez Martínez 177 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones /*CONFIGURACION DE LAS DISTINTAS CAPAS DE LAS DISTINTAS PESTAÑAS*/ div#d_pers{position: relative;/*top: 0.5in;left: 0.2in;*/margin-left:20px;width: 94%;height: 405px;background: #c3d9ff;color:#000000;} div#d_fam{position: relative;/*top: 0.5in;left: 0.2in;*/margin-left:20px;width: 93%;height: auto;background: #c3d9ff;color:#000000;} div#ncc1{position: relative;/*top: 0.5in;left: 0.2in;*/margin-left:20px;width: 93%;height:auto;background: #c3d9ff;color:#000000;} div#ev_ini{position: relative;/*top: 0.5in;left: 0.2in;*/margin-left:20px;width: 93%;height:auto;background: #c3d9ff;color:#000000;} div#diagn{position: relative; /*top: 0.5in;left: 0.2in;*/margin-left:20px;width: 93%;height:auto;background: #c3d9ff;color:#000000;} div#inicio_ncc,div#ncc2,div#ncc3,div#ncc4,div#ncc5{position : relative;/*top: 0.5in;left: 0.2in;*/marginleft:20px;width: 94%;height: 435px;background: #c3d9ff;color:#000000;} /*CONFIGURACION DE LA CAPA DE LA FOTO*/ div#col_foto{position: absolute;margin-left: 20px;top: 5px;left: 0;width: 18%;height: 50%;margin-top: 10px;} img.foto{width: 100px; height: auto;border: 1px solid #5555ff;} /*CONFIGURACION DE LA CAPA DE LOS DATOS PERSONALES*/ div#col_datos{position: absolute;left: 125px;top: 0;marginleft: 20px;width: 70%; height: auto; margin-top: 15px;background: #c3d9ff;color:#000000;} div#col_datos_fam{position: relative; top: 10px; marginleft: 20px;width: 93%} /*CONFIGURACION ENUNCIADOS NCC*/ table#t_ncc{border-collapse: collapse;margin-bottom: 20px;} td.area span{margin-left: 5px} td.subarea span{margin-left: 10px} td.enun span{margin-left: 15px} span#marcas1{margin-left: 1.5em;} span#marcas2{margin-left: 0.5em;} span#marcas3{margin-left: 0.4em;} span#marcas4{margin-left: 0.2em;} Autor: Antonio Martínez Martínez 178 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones span#marca1{margin-left: 1.2em;} span#marca2{margin-left: 0.1em;} span#marca3{margin-left: 0.1em;} span#marca4{margin-left: 0.1em;} td.area, span.area{font-size: 14pt;font-weight: bold;background: #fff;background-image: url(/fotos/backtable.jpg);color: #003366;width: 75%} span.subarea,span.area{margin-left: 7px} td.subarea, span.subarea{font-size: 12pt;background: #8fbaf8;color: #003333;width: 75%} td.enun{width: 75%} td.marcas{width: 25%} td.marca{width:25%} tr.par{background: #bfd8fb;color:#000000;} tr.impar{background: #dfecfd;color:#000000;} td.barra{background: white;color: #fff} td.hid{background: none;visibility: hidden} /*CONFIGURACION 4ª PESTAÑA*/ .sangrado{margin-left: 1in} /*OTRAS CAPAS*/ /*div#cons_tut{display: inline}*/ div#contenedor{display: inline} div#ayuda_estatica{ border: solid #ff77a0 1px; width: 200px; height: auto; z-index: 99; display:none; position:absolute; left:0px; top:0px; background-color: #f8dccb; color: #000000; padding: 5px; } div#capa_help{background: #F8F7A0;color:#000000;border: solid #ff77a0 1px;text-align: center;} .no_muestra{display:none} .muestra{display:block} div.capa_ncc{position:relative; text-align:center;margintop: 10px;margin-bottom: 10px;margin-right: 7px} Autor: Antonio Martínez Martínez 179 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones /*OTRAS CONFIGURACIONES*/ span{font-weight: bold} p span{margin-left: 2px} span.d{margin-left: 12px} span input{margin-left: 4px;margin-right: 6px} h2.titulo1{font: 14pt sans-serif;font-weight: bolder;textalign: center;color: #00c;background: #fff;} h2.titulo2{font: 14pt sans-serif;;font-weight: bolder;textalign: left;margin-left: 6px;color: #003399;background: #c3d9ff;} span input.texto:focus{border: 1px solid #5555ff /*#cc9966*/} /*span select:focus{border: 2px solid #cc9966}*/ textarea.texto_g{margin-left: 12px;background: #dfecfd;color:#000000;} img.ayuda, img.busca{width: 25px;height: auto;} img.ayuda:hover{cursor: help} img.busca{border: 0} img.boton_ncc{border: 0;margin-right: 25px} select#espe{margin-left: 12px} span.load_ayuda{margin-left: 6px;} input.espec{margin-left: 12px} a#nivel1{position:absolute;left: 180px;top: 63px;} a#nivel1_boton{position:absolute;left: 150px;top: 62px;} a#nivel2{position:absolute;left: 180px;top: 103px;} a#nivel2_boton{position:absolute;left: 150px;top: 102px;} a#nivel3{position:absolute;left: 180px;top: 143px;} a#nivel3_boton{position:absolute;left: 150px;top: 142px;} a#nivel4{position:absolute;left: 180px;top: 183px;} a#nivel4_boton{position:absolute;left: 150px;top: 182px;} a#nivel5{position:absolute;left: 180px;top: 223px;} a#nivel5_boton{position:absolute;left: 150px;top: 222px;} span.titulo_ncc{font: 14pt sans-serif;font-weight: bolder; text-decoration:underline; text-align:center} span.ncc_titulo1{font:14pt sans-serif} img#volver1{position:absolute; left: 410px; border: 0;} img#volver2{position:absolute; left: 420px; border: 0;} img#volver3{position:absolute; left: 423px; border: 0;} img#volver4{position:absolute; left: 432px; border: 0;} img#volver5{position:absolute; left: 418px; border: 0;} span.jerar1,span.jerar2{margin-left:5px; } span.jerar2{color:#0033CC} div#logout{text-align:center; margin-top: 18px} span.us{font: 12pt sans serif;font-weight: bolder; color: #925E10;margin-left: 10px} span.acceso{font: 12pt sans serif;font-weight: bolder; color: #925E10;margin-left: 10px} /*CONFIGURACION BOTONES SIGUIENTE*/ ul.bot_sig,ul.bot_sig li{margin:0;padding:0;list-styletype:none} ul.bot_sig#uno li{position: relative;/*top: 365px;left: 530px;*/margin-top: 25px;margin-left:545px;width: 6em;fontsize:12pt} Autor: Antonio Martínez Martínez 180 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones ul.bot_sig#dos li{position: relative;/*top: 970px; left: 525px;*/margin-top: 10px;margin-left:525px;width: 6em;fontsize:12pt} ul.bot_sig#tres li{position: relative;/*top: 2350px; left: 520px;*/margin-top: 10px;margin-left:520px;width: 6em;fontsize:12pt} ul.bot_sig#cuatro li{position: relative;/*top: 1475px; left: 520px;*/margin-top: 10px;margin-left:520px;width: 6em;font-size:12pt} ul.bot_sig#cinco li{position: relative;/*top: 520px;left: 520px;*/margin-top: 10px;margin-left:520px;width: 6em;fontsize:12pt} ul.bot_sig a{display: block;width:7em;margin-bottom: 7px;padding:5px 0;font: bold 100% Helvetica,Arial,sansserif; background: #cce1ff;color: #000; text-decoration:none;text-align:center} ul.bot_sig a:hover{background: #ffa860;color:#fff} div#foto_logo img{float: left;width: 20px; height:auto; margin-left: 20px; margin-top:5px; margin-right: 13px} div#espli{margin-top:8px;} div#fecha table{position: absolute; left: 750px; top: 5px; font:Georgia, "Times New Roman", Times, serif; font-size: 14px; color: #0C49A5} span.esp1{font:Georgia, "Times New Roman", Times, serif; font-size:14px; font-weight:bold;color:#6D6DF8 } span#tit_pie{position: absolute; top: 5px; margin-left: 250px; margin-top: 10px; font:Georgia, "Times New Roman", Times, serif; font-size:10px; fontweight:bold;color:#6D6DF8 } div#logoamm img{width: 30px; height:auto; position:absolute; left: 765px; top: 5px} a#cont{position: absolute; top: 5px; margin-left: 850px; margin-top: 10px; font:Georgia, "Times New Roman", Times, serif; font-size:10px; font-weight:bold;color:#6D6DF8 } Autor: Antonio Martínez Martínez 181 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones à hoja_res_busq.css Esta hoja da formato a la página que muestra los resultados de búsqueda de alumnos. a.p:link { color: #0066FF; text-decoration: } a.p:visited { color: #0066FF; text-decoration: } a.p:active { color: #0066FF; text-decoration: } a.p:hover { color: #0066FF; text-decoration: } a.ord:link { color: #000000; text-decoration: } a.ord:visited { color: #000000; text-decoration: } a.ord:active { color: #000000; text-decoration: } a.ord:hover { color: #000000; text-decoration: } none; none; none; underline; none; none; none; underline; h2{font: 14pt sans-serif;font-weight: bolder;textalign:center;color: #00c;} h2.clase_error{font: 13pt sans-serif;font-weight: bolder;color: #000; margin-top:30px; text-align:left; margin-left:55px} div#datos{position: absolute;top: 1in;left: 0;width: 91%;height: 80%;margin-left: 50px;background: #fff;color:#000000;} div#d_int{position: relative;margin-left:20px; width: 95%;height: 410px;background: #c3d9ff;color:#000000;} div#capa_texto{display:inline} img#foto{margin-left: 20px; margin-right:7px;width:30px; height:auto} div#capa_foto{height: 30px;float:left;} img{border: 0} img.boton_op{margin-right: 10px} img.orden_foto{border: 0;vertical-align:bottom} Autor: Antonio Martínez Martínez 182 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones span.op_titulo1{font:14pt sans-serif} div.op{margin-left: 2in; margin-top:4px} div#barra{text-align:center; margin-bottom:20px} ul.bot_sig,ul.bot_sig li{margin:0;padding:0;list-styletype:none; text-align:center} ul.bot_sig a{display: block;width:7em;margin-bottom: 7px;padding:5px 0;font: bold 100% Helvetica,Arial,sansserif; background: #cce1ff;color: #000; text-decoration:none;text-align:center} ul.bot_sig a:hover{background: #ffa860;color:#fff} ul#boton_subm{position: relative; margin-left:100px; margin-top:15px} form#form_busq{display:inline} span.normal_text{font: 12pt sans serif;font-weight: bolder;} div#tabla_res{ position:relative;margintop:8px;height:auto;} /*div#boton{position: relative; width:80px; marginleft:470px;}*/ span.jerar1,span.jerar2{margin-left:5px;} span.jerar2{color:#0033CC} div#logout{text-align:center; margin-top: 18px} span.us{font: 12pt sans serif;font-weight: bolder; color: #925E10;margin-left: 10px} span.acceso{font: 12pt sans serif;font-weight: bolder; color: #925E10;margin-left: 10px} ul.bot_tres{margin:0;padding:0;list-style-type:none; margin-left:80px} ul.bot_tres li{margin:0;padding:0;list-styletype:none;float:left;width: 4em;font-size:12pt;marginright: 5px;margin-top: 5px} ul.bot_tres li#uno{margin-left: 90px;} ul.bot_tres li#dos{margin-left: 50px;} ul.bot_tres li#tres{margin-left: 50px;} ul.bot_tres li#cuatro{margin-left: 200px;} ul.bot_tres li#ver_cons{margin-left: 200px} ul.bot_tres a{display: block;width:7em;margin-bottom: 7px;padding:5px 0;font: bold 100% Helvetica,Arial,sansserif; background: #cce1ff;color: #000; text-decoration:none;text-align:center} ul.bot_tres a:hover{background: #ffa860;color:#fff} div#foto_logo img{float: left;width: 100px; height:auto; margin-left: 20px; margin-top:5px; margin-right: 13px} div#espli{margin-top:8px;} div#fecha table{position: absolute; left: 750px; top: 5px; font:Georgia, "Times New Roman", Times, serif; font-size: 14px; color: #0C49A5} span.esp1{font:Georgia, "Times New Roman", Times, serif; font-size:14px; font-weight:bold;color:#6D6DF8 } span#tit_pie{position: absolute; top: 5px; margin-left: 250px; margin-top: 10px; font:Georgia, "Times New Roman", Times, serif; font-size:10px; fontweight:bold;color:#6D6DF8 } div#logoamm img{width: 30px; height:auto; position:absolute; left: 765px; top: 5px} Autor: Antonio Martínez Martínez 183 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones 6.2.2 XHTML à ficha.php Se muestra uno de los códigos más completos de los que componen el conjunto de páginas. En él se puede apreciar tanto la estructura de la página, como las llamadas a las funciones JavaScript, como pequeño código PHP insertado en el XHTML. <?php require("funcs.php"); if($GLOBALS['selwa']->session->getData('login')=='0') header("Location:index.php"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <!--*****INCLUSION ARCHIVOS PHP NECESARIOS PARA EL PROCESADO DE LA INFORMACION***** --> <?php if(isset($_POST['mod'])) $mod=$_POST['mod']; else $mod=""; require("find_al.php"); require_once ("./xajax/xajax.inc.php"); /*REGISTRO DE LA FUNCION QUE SE ENCARGARA DE MOSTRAR LOS MENSAJES DE AYUDA*/ $xajax = new xajax("server.php"); $xajax->registerFunction('muestra_ayuda'); ?> <html> <head> <title>SELWA - - - Sistema Automatizado de Gestión y Seguimiento para la Educación Especial</title> <?php $xajax->printJavascript('./xajax/');?> <!--*****INCLUSION ARCHIVOS JS Y CSS NECESARIOS PARA LA CORRECTA REPRESENTACION DE LA INFORMACION***** --> <link rel="stylesheet" href="./css/hoja_ficha.css" type="text/css"> <link rel="stylesheet" type="text/css" href="./css/niftyCorners.css"> <link rel="stylesheet" type="text/css" href="./css/niftyPrint.css" media="print"> <script type="text/javascript" src="./css/niftycube.js"></script> <script type="text/javascript" src="./javascript/funcs_ficha/funcs_Varias.js"></script> <script type="text/javascript" src="./javascript/funcs_ficha/funcs_ComprDatosPest.js"></script> <script type="text/javascript" src="./javascript/funcs_ficha/funcs_GestPest.js"></script> Autor: Antonio Martínez Martínez 184 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones <script type="text/javascript" src="./javascript/funcs_ficha/funcs_Ayuda.js"></script> <!--*****LLAMADA A FUNCIONES DE REDONDEADO DE ESQUINAS E INDICADOR DE AYUDA EN CARGA*****--> <script type="text/javascript"> redondea_esquinas(); function envia_form(){ if(document.getElementById("area").value!=0){ if(document.getElementById("refer").value!=0) if(document.getElementById("comen").value!="") document.getElementById("form_hoy").submit(); else alert("No puede insertar un comentario en blanco."); else alert("Por favor, seleccione un valor \"Referido a\""); } else alert("Por favor, seleccione un área"); } <!-function iniwait(){ xajax.$('ayuda').innerHTML='<img src="xajax-loader.gif" /><span class="load_ayuda">Cargando...</span>'; xajax.$('ayuda2').innerHTML='<img src="xajax-loader.gif" /><span class="load_ayuda">Cargando...</span>'; xajax.$('ayuda_estatica').innerHTML='<img src="xajaxloader.gif" /><span class="load_ayuda">Cargando...</span>'; } window.status='Processing...'; --> </script> <!--*****VARIABLES JS GLOBALES PARA EL FUNCIONAMIENTO DEL MECANISMO DE PESTAÑAS Y COMPROBACION DE CAMPOS*****--> <script language="javascript1.4" type="text/javascript"> var pest=new Array(); var flag_pest=0; var res_comprueba=0; pest[0]=new Array(15); pest[1]=new Array(26); pest[2]=new Array(26); var estado=0; </script> </head> Autor: Antonio Martínez Martínez 185 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones <!--***** COMIENZO ELEMENTOS HTML QUE COMPONEN LA PAGINA*****--> <body> <div id="cabecera"><div id="foto_logo"><img src="fotos/logo.png" title="logo" alt="logo" /></div> <div id="espli"><span class="esp1">Sistema Automatizado de Gestión y Seguimiento</span><br /><span class="esp1">para la Educación Especial</span></div> <div id="fecha"><table><tr><td id="Fecha_Reloj"></td></tr></table> </div> </div> <div id="jerarquia"><div><img style="margin-top: 4px; marginleft:4px; float:left" src="fotos/home.jpg" alt="Home" title="Home" /></div><span>........</span><span class="jerar1"><a href="./principal.php">Principal</a></span><span class="jerar2"> >> </span><span class="jerar1"><a href="./gestion_fichas.php">Gestión Fichas</a></span><span class="jerar2"> >> </span><span class="jerar1"><a href="./buscar_ficha.php">Buscar Ficha</a></span><span class="jerar2"> >> </span><span class="jerar1"><a href="./res_fich.php">Resultado Búsqueda</a></span><span class="jerar2"><strong> >> Ver Ficha</strong></div> <div id="lateral"> <div id="lateral1"> <p style="text-align:center; font:Arial, Helvetica, sans-serif; fontsize:12px; text-decoration:underline; font-weight:bold; color:#0033CC">Usuarios online</p> <form action="index.php" method="POST"> <input type="hidden" name="do" value="unregister" /> <?php $GLOBALS['selwa']->session->getData('login'); $users=extrae_users(); $cont=count($users); $i=0; while($cont>0){ echo "<span class='us'>".$users[$i]."</span><br />"; $i++; $cont--; } ?> <div id="logout"><input class="button" type="submit" value="Logout" /></div> </form> <img src="fotos/barra_fina.jpg" style="text-align:center; width: 190px; margin-left: 10px; margin-top: 40px" /> </div> <div id="lateral2"> <p style="text-align:center; font:Arial, Helvetica, sans-serif; fontsize:12px; text-decoration:underline; font-weight:bold; color:#0033CC">Accesos directos</p> <?php if((strcmp($GLOBALS['selwa']->session>getData('login'),"admin")==0)||(strcmp($GLOBALS['selwa']->session>getData('perf_us'),"prof")==0)) echo '<a href="crea_ficha.php"><span class="acceso">Crear Ficha</span></a><br /><br />';?> <?php if(strcmp($GLOBALS['selwa']->session>getData('login'),"admin")==0) echo '<a href="crea_us.php"><span class="acceso">Crear Usuario</span></a><br /><br />';?> Autor: Antonio Martínez Martínez 186 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones <a href="buscar_ficha.php"><span class="acceso">Buscar Ficha</span></a><br /><br /> <a href="buscar_ficha2.php"><span class="acceso">Crear Informe</span></a><br /><br /> <a href="http://www.google.es"><span class="acceso">Buscar en Google</span></a><br /> <img src="fotos/barra_fina.jpg" style="text-align:center; width: 190px; margin-left: 10px; margin-top: 50px" /> </div> <div id="lateral3"> <?php require("./calendario/index_cal.php");?> </div> </div> <!--*****CAPA PRINCIPAL*****--> <div id="principal"> <!--*****PESTAÑAS*****--> <div id="pest"> <ul id="nav"> <li id="hoy" class="activelink"><a href="javascript:;" onmousedown='activo("datos_pers","datos_fam","nivel_cc","eval_inicial","d iagnostico","hoy");se_ve("datos1","datos2","datos3","datos4","datos5","da tos0");'>HOY</a></li> <li id="datos_pers"><a href="javascript:;" onmousedown='activo("datos_fam","nivel_cc","eval_inicial","diagnostico"," hoy","datos_pers");se_ve("datos2","datos3","datos4","datos5","datos0","da tos1")'>Datos Personales</a></li> <li id="datos_fam"><a href="javascript:;" onmousedown='activo("datos_pers","nivel_cc","eval_inicial","diagnostico", "hoy","datos_fam");se_ve("datos1","datos3","datos4","datos5","datos0","da tos2")'>Datos Familiares</a></li> <li id="nivel_cc"><a href="javascript:;" onmousedown='activo("datos_pers","datos_fam","eval_inicial","diagnostico" ,"hoy","nivel_cc");se_ve("datos1","datos2","datos4","datos5","datos0","da tos3")'>N.C.C.</a></li> <li id="eval_inicial"><a href="javascript:;" onmousedown='activo("datos_pers","datos_fam","nivel_cc","diagnostico","ho y","eval_inicial");se_ve("datos1","datos2","datos3","datos5","datos0","da tos4")'>Evaluación Inicial</a></li> <li id="diagnostico"><a href="javascript:;" onmousedown='activo("datos_pers","datos_fam","nivel_cc","hoy","eval_inici al","diagnostico");se_ve("datos1","datos2","datos3","datos4","datos0","da tos5")'>Diagnóstico</a></li> </ul> </div> <form id="form_hoy" name="form_hoy" action="inserta_hoy.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="id_al" value="<?php echo $id;?>" /> <!--*****CAPA PESTAÑA 1: REGISTRO DIARIO DE INCIDENCIAS*****--> <div id="datos0" class="visible"> <h2 class="titulo1">HOY</h2> <div id="d_hoy"> <div id="fecha2"><?php $hoy=date("d / m / y"); echo $hoy;?></div><input type="hidden" name="hoy" value="<?php echo $hoy;?>" /><br /> Autor: Antonio Martínez Martínez 187 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones <div id="info"> <?php if((strcmp($GLOBALS['selwa']->session>getData('login'),"admin")==0)||(strcmp($GLOBALS['selwa']->session>getData('perf_us'),"prof")==0)){ echo '<p><span>Asunto:</span><span><input type="text" name="asunto" id="asunto" size="15" maxlength="20" /></span></p>'; echo '<p><span>Área:</span><span><select name="area" id="area" onChange="actualiza_ref(\'area\',\'refer\');"><option value="0" selected="selected">--Seleccionar--</option>'; crea_area("area");echo '</select></span></p>'; echo '<p><span>Subárea:</span><span><select name="refer" id="refer"><option value="0" selected="selected">-Seleccionar--</option>'; echo '</select></span></p>'; echo '<p><span>Comentario</span><br />'; echo '<textarea class="texto_g" rows="8" cols="73" name="comen" id="comen"></textarea>'; } else{ $info=array();$info=extrae_hoy($id); echo '<p><span>Asunto:</span><span><input type="text" name="asunto" id="asunto" size="25" maxlength="20" readonly="readonly" value="'.$info[0].'" /></span></p>'; echo '<p><span>Área:</span><span><input type="text" readonly="readonly" value="'.$info[1].'" size="30" /></span></p>'; echo '<p><span>Subárea:</span><span><input type="text" readonly="readonly" value="'.$info[2].'" size="40" /></span></p>'; echo '<p><span>Comentario</span><br />'; echo '<textarea class="texto_g" rows="8" cols="73" name="comen" id="comen">'.$info[3].'</textarea>';}?> </div> </div> <?php if((strcmp($GLOBALS['selwa']->session>getData('login'),"admin")==0)||(strcmp($GLOBALS['selwa']->session>getData('perf_us'),"prof")==0)){ echo '<ul class="bot_sig" id="bot_ins">'; echo '<li><a href="javascript:;" onmousedown=\'envia_form();\'>Insertar</a></li>'; echo '</ul>'; } ?> </div> </form> <!--*****CAPA PESTAÑA 2: DATOS PERSONALES*****--> <div id="datos1" class="oculto"> <h2 class="titulo1">DATOS PERSONALES</h2> <div id="d_pers"> <div id="col_foto"> <img class="foto" src="./imgs/alumnos/<?php echo $foto;?>" alt="Foto alumno" title="Foto alumno" /><br /> </div> <div id="col_datos"> Autor: Antonio Martínez Martínez 188 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones <p><span>Nombre:<input class="texto" id="nombre" type="text" name="nombre" readonly="readonly" size="17" maxlength="17" value="<?php echo $nombre;?>" /></span><span>Apellido 1:<input class="texto" id="apel1" type="text" name="apel1" readonly="readonly" size="17" maxlength="17" value="<?php echo $apel1;?>" /></span></p> <p><span>Apellido 2:<input class="texto" id="apel2" type="text" name="apel2" readonly="readonly" size="9" maxlength="17" value="<?php echo $apel2;?>" /></span><span>F.Nacimiento:</span><span><input type="text" readonly="readonly" size="9" value="<?php echo $dia_nac.' / '.$mes_nac.' / '.$ano_nac;?>" /></span></p><p><span>Peso (Kg):<input class="texto" id="peso" type="text" name="peso" readonly="readonly" size="3" maxlength="3" value="<?php echo $peso;?>" /></span><span>Estatura (cm):<input class="texto" id="estat" type="text" name="estat" readonly="readonly" size="3" maxlength="3" value="<?php echo $estat;?>" /></span><span>Teléfono:<input class="texto" id="tlf" type="text" name="tlf" readonly="readonly" size="9" maxlength="9" value="<?php echo $tlf;?>" /></span></p> <p><span>Domicilio:<input class="texto" id="domic" type="text" name="domic" readonly="readonly" size="20" maxlength="30" value="<?php echo $domic;?>" /></span><span>Localidad:<input class="texto" id="localidad" type="text" name="localidad" readonly="readonly" size="20" maxlength="30" value="<?php echo $localidad;?>" /></span></p> <p><span>Provincia:<span><input type="text" readonly="readonly" value="<?php echo $provincia;?>" /></span></span><span>Nacionalidad:<span><input type="text" readonly="readonly" size="12" value="<?php echo $pais;?>" /></span></span> </p> <p><span>Año Ingreso:<span><input type="text" readonly="readonly" size="6" value="<?php echo $ano_ing;?>" /></span></span><span>Maestro Tutor:<input class="texto" id="tut_asoc" type="text" size="4" name="tut_asoc" readonly="readonly" size="5" value="<?php echo $prof_asoc;?>" /></span></p> <p><span>Consultores Tutores:</span><span><div id="cons_tut"><?php for($i=0;$i<$num_cons;$i++){ echo '<input type="text" readonly="readonly" size="4" value="'.$id_cons[$i].'" />'; }?> </div></span></p> </div> </div> </div> <!--*****FIN CAPA DATOS PERSONALES*****--> <!--*****CAPA PESTAÑA 3: DATOS FAMILIARES*****--> <div id="datos2" class="oculto"> <h2 class="titulo1">DATOS FAMILIARES</h2> <div id="d_fam"> <div id="col_datos_fam"> <h2 class="titulo2"><span class="area">PADRE / TUTOR</span></h2> <p><span>Nombre:<input class="texto" id="nombre_p" type="text" name="nombre_p" readonly="readonly" size="17" maxlength="17" value="<?php echo $nombre_p;?>" /></span><span>Apellidos:<input class="texto" id="apel_p1" type="text" name="apel_p1" readonly="readonly" size="15" maxlength="17" value="<?php echo $apel_p1;?>" /><input class="texto" id="apel_p2" type="text" name="apel_p2" readonly="readonly" size="15" maxlength="17" value="<?php echo $apel_p2;?>" /></span></p> Autor: Antonio Martínez Martínez 189 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones <p><span>Fecha Nacimiento:</span><span><input type="text" readonly="readonly" size="9" value="<?php echo $dia_nac_p.' / '.$mes_nac_p.' / '.$ano_nac_p;?>" /></span><span>Teléfono:</span><span><input class="texto" id="tlf_p" type="text" name="tlf_p" readonly="readonly" size="9" maxlength="9" value="<?php echo $tlf_p;?>" /></span></p> <p><span>Domicilio:<input class="texto" id="domic_p" type="text" name="domic_p" readonly="readonly" size="20" maxlength="30" value="<?php echo $domic_p;?>" /></span><span>Teléfono Móvil:<input class="texto" id="tlf2_p" type="text" name="tlf2_p" readonly="readonly" size="9" maxlength="9" value="<?php echo $tlf2_p;?>"/></span></p> <p><span>Profesión:<input class="texto" id="profesion_p" type="text" name="profesion_p" readonly="readonly" size="20" maxlength="20" value="<?php echo $profesion_p;?>" /></span><span>Email:<input class="texto" id="correo_p" type="text" name="correo_p" readonly="readonly" value="<?php echo $correo_p;?>" /></span></p> <br /> <h2 class="titulo2"><span class="area">MADRE / TUTORA</span></h2> <p><span>Nombre:<input class="texto" id="nombre_m" type="text" name="nombre_m" readonly="readonly" size="17" maxlength="17" value="<?php echo $nombre_m;?>" /></span><span>Apellidos:<input class="texto" id="apel_m1" type="text" name="apel_m1" readonly="readonly" size="15" maxlength="17" value="<?php echo $apel_m1;?>" /><input class="texto" id="apel_m2" type="text" name="apel_m2" readonly="readonly" size="15" maxlength="17" value="<?php echo $apel_m2;?>" /></span></p> <p><span>Fecha Nacimiento:</span><span><input type="text" readonly="readonly" size="9" value="<?php echo $dia_nac_m.' / '.$mes_nac_m.' / '.$ano_nac_m;?>" /><span>Teléfono:</span><span><input class="texto" id="tlf_m" type="text" name="tlf_m" readonly="readonly" size="9" maxlength="9" value="<?php echo $tlf_m;?>" /></span></p> <p><span>Domicilio:<input class="texto" id="domic_m" type="text" name="domic_m" readonly="readonly" size="20" maxlength="30" value="<?php echo $domic_m;?>" /></span><span>Teléfono Móvil:<input class="texto" id="tlf2_m" type="text" name="tlf2_m" readonly="readonly" size="9" maxlength="9" value="<?php echo $tlf2_m;?>" /></span></p> <p><span>Profesión:<input class="texto" id="profesion_m" type="text" name="profesion_m" readonly="readonly" size="20" maxlength="20" value="<?php echo $profesion_m;?>" /></span><span>Email:<input class="texto" id="correo_m" type="text" name="correo_m" readonly="readonly" value="<?php echo $correo_m;?>" /></span></p> <br /> <h2 class="titulo2"><span class="area">OTROS</span></h2> <p><span>Nº Hermanos:</span><span><input type="text" size="4" readonly="readonly" value="<?php echo $n_herm;?>" /></span><span>Lugar que ocupa:</span><span><input type="text" size="4" readonly="readonly" value="<?php echo $lugar_herm;?>" /></span><span>Edad embarazo madre:<input class="texto" id="edad_emb" size="4" type="text" name="edad_emb" readonly="readonly" size="2" maxlength="2" value="<?php echo $edad_emb;?>" /></span></p> <p><span>Enfermedades embarazo:</span></p><p><span><textarea class="texto_g" id="enf_emb" name="enf_emb" readonly="readonly" rows="4" cols="50" maxlength="200"><?php echo $enf_emb;?></textarea></span></p> <p><span>Dificultades parto:</span></p><p><span><textarea class="texto_g" id="dif_parto" name="dif_parto" readonly="readonly" rows="4" cols="50" maxlength="200"><?php echo $dif_parto;?></textarea></span></p> Autor: Antonio Martínez Martínez 190 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones <p><span>Otros:</span></p><p><span><textarea class="texto_g" id="otros" name="otros" readonly="readonly" rows="4" cols="50" maxlength="200"><?php echo $otros;?></textarea></span></p> <br /> <br /> </div> </div> <div id="una_capa3" style="visibility:hidden"> <ul class="bot_sig"> <li id="uno"><a href="javascript:;">Añadir Objetivo</a></li> </ul> </div> </div> <!--*****FIN CAPA DATOS FAMILIARES*****--> <!--*****CAPA PESTAÑA 4: NIVELES DE COMPETENCIA CURRICULAR*****--> <div id="datos3" class="oculto"> <h2 class="titulo1">NIVELES DE COMPETENCIA CURRICULAR<span><img src="./fotos/quest2.jpg" title="Ayuda" alt="Ayuda" id="ayuda_obj" class="ayuda" onmouseover='manejador_ayuda(this,"ayuda_obj",1);' onmouseout='quita_ayuda()' /></span></h2> <div id="inicio_ncc"> <div id="resul_ncc"> <div id="actualizacion" style="display:none" class="actualiza"></div> <table id="t_res" align='center' cellspacing='1' cellpadding='0'> <tr class="encabezado"><td><span class="t_plano">Objetivos</span></td><td class="enc1_2" colspan="2"><span class="t_plano">Cumplido</span></td></tr> <tr><td style=" visibility:hidden"></td><td style="textalign:center;font-size: 12pt;font-weight: bold; color: #00c;">Sí</td><td style="text-align:center;font-size: 12pt;font-weight: bold; color: #00c;">No</td></tr> <?php crea_tabla_ncc($id,$mod);?> </table> </div> </div> <div id="una_capa3" style="visibility:hidden"> <ul class="bot_sig"> <li id="uno"><a href="javascript:;">blabla</a></li> </ul> </div> </div> Autor: Antonio Martínez Martínez 191 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones <!--*****FIN CAPA NIVELES COMPETENCIA CURRICULAR*****--> <!--*****CAPA PESTAÑA 5: EVALUACION INICIAL*****--> <div id="datos4" class="oculto"> <!--*****CAPA PARA MOSTRAR LA AYUDA DE LA PESTAÑA 4*****--> <div id="ayuda" style="border: solid #ff77a0 1px;width: 200px;height: auto;z-index: 99;display:none;position:absolute;left:0px;top:0px;background-color: #f8dccb;color: #000000;padding: 5px;"></div> <h2 class="titulo1">EVALUACIÓN INICIAL</h2> <div id="ev_ini"> <p><span class="area">1. RELATIVA AL ALUMNO</span></p> <p><span class="subarea">1.1 HISTORIAL ACADÉMICO</span><span>(Asistencia, Cambios de Centro, Repeticiones,...)</span></p> <p><span><textarea class="texto_g" readonly="readonly" id="hist_acad" name="hist_acad" readonly="readonly" rows="5" cols="65"><?php echo $hist_acad;?></textarea></span></p> <p><span class="subarea">1.2 NCC ACTUAL</span></p> <p><span><textarea class="texto_g" readonly="readonly" id="ncc_act" name="ncc_act" readonly="readonly" rows="5" cols="65"><?php echo $ncc_act;?></textarea></span></p> <p><span class="subarea">1.3 ESTILO DE APRENDIZAJE Y MOTIVACIÓN PARA APRENDER</span></p> <p><span><textarea class="texto_g" readonly="readonly" id="est_apren" name="est_apren" readonly="readonly" rows="5" cols="65"><?php echo $est_apren;?></textarea></span></p> <p><span class="subarea">1.4 DESARROLLO GENERAL</span><span>(Biológico, Psicomotor, Intelectual, Emocional, Social,...)</span></p> <p><span><textarea class="texto_g" readonly="readonly" id="des_gral" name="des_gral" readonly="readonly" rows="5" cols="65"><?php echo $des_gral;?></textarea></span></p> <p><span class="area">2. RELATIVA AL CONTEXTO SOCIOFAMILIAR</span></p> <p><span class="subarea">2.1 RESPECTO AL ALUMNO</span></p> <p><span><textarea class="texto_g" readonly="readonly" id="sf_alumno" name="sf_alumno" readonly="readonly" rows="5" cols="65"><?php echo $sf_alumno;?></textarea></span></p> <p><span class="subarea">2.2 RESPECTO A LA FAMILIA</span></p> <p><span><textarea class="texto_g" readonly="readonly" id="sf_familia" name="sf_familia" readonly="readonly" rows="5" cols="65"><?php echo $sf_familia;?></textarea></span></p> <p><span class="subarea">2.3 RESPECTO AL ENTORNO SOCIAL</span></p> <p><span><textarea class="texto_g" readonly="readonly" id="sf_social" name="sf_social" readonly="readonly" rows="5" cols="65"><?php echo $sf_social;?></textarea></span></p> <p><span class="area">3. RELATIVA AL CONTEXTO ESCOLAR (AULA)</span><br /><span>(Contexto Organizativo, Contexto Didáctico,...)</span></p> <p><span><textarea class="texto_g" readonly="readonly" id="cont_esc" name="cont_esc" readonly="readonly" rows="5" cols="65"><?php echo $cont_esc;?></textarea></span></p> Autor: Antonio Martínez Martínez 192 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones </div> <div id="una_capa" style="visibility:hidden"> <ul class="bot_sig"> <li id="uno"><a href="javascript:;">Añadir Objetivo</a></li> </ul> </div> </div> <!--*****FIN CAPA EVALUACION INICIAL*****--> <!--*****CAPA PESTAÑA 6: DIAGNOSTICO*****--> <div id="datos5" class="oculto"> <h2 class="titulo1">DIAGNÓSTICO</h2> <!--*****CAPA PARA MOSTRAR LA AYUDA DE LA PESTAÑA 5*****--> <div id="ayuda2" style="border: solid #ff77a0 1px;width: 200px;height: auto;z-index: 99;display:none;position:absolute;left:0px;top:0px;background-color: #f8dccb;color: #000000;padding: 5px;"></div> <div id="diagn"> <p><span class="d">Tipología:</span><span><input type="text" name="tipologia" id="tipologia" readonly="readonly" size="23" value="<?php echo $tipo;?>" /></span><span><img src="./fotos/quest.jpg" title="Ayuda" alt="Ayuda" id="ayuda1" class="ayuda" onmouseover='manejador_ayuda(this,"tipo_inv",document.getElementById("tip ologia").value);' onmouseout='quita_ayuda()' /></span> <span class="d">Patología:</span><span><input type="text" name="patologia" id="patologia" readonly="readonly" value="<?php echo $pato;?>" /></span><span><img src="./fotos/quest.jpg" id="ayuda2" title="Ayuda" alt="Ayuda" class="ayuda" onmouseover='manejador_ayuda(this,"pato",document.getElementById("patolog ia").value)' onmouseout='quita_ayuda()' /></span></p> <p><span class="d">Nivel:</span><span><input type="text" name="nivel" id="nivel" readonly="readonly" value="<?php echo $nivel;?>" /></span><span><img src="./fotos/quest.jpg" title="Ayuda" alt="Ayuda" id="ayuda4" class="ayuda" onmouseover='manejador_ayuda(this,"nivel",document.getElementById("nivel" ).value);' onmouseout='quita_ayuda()' /></span></p> <p><span class="d">Observaciones:</span></p><p><span><textarea class="texto_g" id="obs_diag" name="obs_diag" readonly="readonly" rows="4" cols="65"><?php echo $obs;?></textarea></span></p> <p><span class="d">Especialista/s:</span><span><div id="contenedor"><?php for($i=0;$i<$n_esp;$i++){ echo '<input type="text" readonly="readonly" size="4" value="'.$id_esp[$i].'" />'; }?></div></span></p> <p><span class="d">Necesidad Tratamiento Médico:</span><span><input name="tto_med" id="tto_med" readonly="readonly" size="4" value="<?php echo $tratam;?>" /></span></p> <p><span class="d">Observaciones Tratamiento Médico:</span></p><p><span><textarea class="texto_g" id="obs_tto" name="obs_tto" readonly="readonly" rows="4" cols="65"><?php echo $obs_trat;?></textarea></span></p> Autor: Antonio Martínez Martínez 193 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones </div> <div id="una_capa2" style="visibility:hidden"> <ul class="bot_sig"> <li id="uno"><a href="javascript:;">Añadir Objetivo</a></li> </ul> </div> <!--*****FIN CAPA DIAGNOSTICO*****--> </div> <!--*****FIN CAPA PRINCIPAL*****--> </div> <!--*****CAPA PARA MOSTRAR LA AYUDA DE LA PESTAÑA 1*****--> <div id="ayuda_estatica"></div> <!--*****CAPA INFERIOR*****--> <div id="pie"><span id="tit_pie"><img src="fotos/barra_fina_disc.jpg" title="" alt="" />Diseñado y Programado por Antonio Martínez Martínez, 2007 &copy;</span><div id="logoamm"><img src="./fotos/logoamm.png" alt="logoAMM" title="logoAMM" /><form id="form_mail" action="mailto:[email protected]?subject=Comentario SELWA" method="post" enctype="text/plain"><a id="cont" href="javascript:;" onMouseDown="document.getElementById('form_mail').submit()">Contactar</a> </form></div></div> </body> </html> Autor: Antonio Martínez Martínez 194 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones 6.2.3 PHP à inserta_us.php Este código muestra el proceso de inserción de datos durante la creación de una ficha de usuario. La inserción de los datos de alumno sigue un proceso similar, pero dado que el código es sensiblemente más amplio, se muestra este. <?php require("funcs.php"); if($GLOBALS['selwa']->session->getData('login')=='0') header("Location:index.php"); ?> <?php /*INCLUSION ARCHIVOS PHP NECESARIOS PARA EL PROCESADO DE LA INFORMACION*/ require("recibe_vars_us.php"); /*Funcion: manejador_res_ncc **Parametros: $array: array con los valores de la posicion de la pregunta marcada en NCC ** $patron: variable para discriminar que tipo de array estamos tratando, si de ** respuesta o de marcado de objetivos. **Valor devuelto: array con los valores de las casillas que han sido marcadas, bien como ** respuesta bien como marcado de objetivos. */ /*INICIALIZO A "true" LAS VARIABLES CUYOS RESULTADOS PUEDEN SER NULOS*/ $ins_tut=1; $ins4=1; $ins5=1; $ins6=1; $ins8=1; $foto_ok=0; /*ANTES DE INSERTAR NADA INTENTO SUBIR LA FOTO SI PROCEDE*/ if($omitir_foto==-1){ $imagen_red_ok=false; if($_FILES['file_temp']){ $subir=false; /*EXTENSIONES PERMITIDAS*/ $permitidos=array(".gif",".png",".jpg",".jpeg",".bmp",".GIF",".P NG",".JPG",".JPEG",".BMP"); Autor: Antonio Martínez Martínez 195 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones $nombre_file = $_FILES['file_temp']['name']; $tam = $_FILES['file_temp']['size']; $tam_max=600000; // En bytes. Equivalente a 600kb. $ruta_="imgs/usuarios/"; // Ruta donde sera guardado el fichero. $ord_sb=substr($nombre_file,-4); for($i=0;$i<count($permitidos);$i++){ if($ord_sb==$permitidos[$i]){ $subir=true; break; } } if($tam>$tam_max){ $subir=false; } if(!is_uploaded_file($HTTP_POST_FILES['file_temp']['tmp_name'])) { $subir=false; } if($subir===true){ if(move_uploaded_file($_FILES['file_temp']['tmp_name'],$ruta_. $nombre_file)){ //echo "Se subió correctamente el fichero"; $foto_ok=1; } else if(copy($_FILES['file_temp']['tmp_name'],$ruta_.$nombre_file)) { $foto_ok=1; //echo "Se subió correctamente el fichero"; } else { //echo "No se pudo subir el fichero"; $foto_ok=2; } } else { $foto_ok=2; /*echo "<h2>Tamaño o Extensión no permitidos.</h2><br /><h3>Extensiones válidas: </h3>"; foreach($permitidos as $value){ print $value." ";*/ } /*echo "<br /> <h3>Tamaño Máximo permitido (Bytes): </h3>".$tam_max;*/ } //} if($foto_ok==1){ $imagen_red_ok=redimensionar_imagen($ruta_.$nombre_file,$ruta_ .$nombre_file); if(!$imagen_red_ok) $foto_ok=2; } } else $foto_ok=1; /*FIN SUBIR FOTO*/ Autor: Antonio Martínez Martínez 196 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones if($foto_ok==1){ //$db=new DataBase("localhost","root",NULL,"db_ee"); /*PREPARO E INSERTO DATOS */ $datos1=array('id'=>'','perfil'=>$perfil,'especialidad'=>$espe cialidad,'nombre'=>$nombre,'apel1'=>$apel1,'apel2'=>$apel2,'dni' =>$dni,'letra'=>$letra_dni,'dia_nac'=>$dia,'mes_nac'=>$mes,'ano_ nac'=>$ano,'domic'=>$domic,'localidad'=>$localidad,'provincia'=> $provincia,'nacionalidad'=>$nacionalidad,'tlf1'=>$tlf1,'tlf2'=>$ tlf2,'correo'=>$correo,'login'=>$login,'pass'=>$pass,'dir_foto'= >$nombre_file); $ins1=$GLOBALS['selwa']->database>insert("us_info_p",$datos1); /*AQUI VA LA DIRECCION DE LA PAGINA A LA QUE VOY SI TODO HA IDO CORRECTO O SI NO*/ if($ins1==1) echo '<html><head><title></title><meta httpequiv="Refresh" content="0;url=./todook_us.php" /></head><body></body></html>'; else{ //SI HA HABIDO ALGUN ERROR BORRO DE LA BASE DE DATOS LO QUE SE HAYA INTRODUCIDO HASTA EL MOMENTO unlink('./imgs/usuarios/'.$nombre_file); //ELIMINO LA FOTO SUBIDA if($ins1!=2) $frase_out=600; else $frase_out=800; echo '<html><head><title></title><meta httpequiv="Refresh" content="0;url=./notodook.php?error='.$frase_out.'" /></head><body></body></html>'; } } else{ $frase_out=700; echo '<html><head><title></title><meta http-equiv="Refresh" content="0;url=./notodook.php?error='.$frase_out.'" /></head><body></body></html>'; } ?> Autor: Antonio Martínez Martínez 197 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones à find_al.php Este código es utilizado para recibir la información de un alumno. Se ha escogido pues muestra una consulta MySQL algo compleja, donde es necesario anexar distintas tablas para poder obtener una gran cantidad de información en una sola consulta. <?php if($GLOBALS['selwa']->session->getData('login')=='0') header("Location:index.php"); ?> <?php if(isset($_POST['al_sel'])) $id=$_POST['al_sel']; else $id=0; $connect=mysql_connect("localhost","root"); mysql_select_db("db_ee",$connect); $sql="SELECT * FROM al_info_pers a LEFT JOIN al_info_fam b ON a.id = b.id LEFT JOIN al_cons c ON b.id = c.id_al LEFT JOIN ev_ini d ON c.id_al = d.id_al LEFT JOIN al_diag e ON d.id_al = e.id_al WHERE a.id =".$id; $res=mysql_query($sql); $registro=mysql_fetch_array($res); /*ASIGNACION VALORES PESTAÑA DATOS PERSONALES*/ $nombre=$registro["nombre"]; $apel1=$registro["apel1"]; $apel2=$registro["apel2"]; $dia_nac=$registro["dia_nac"]; $mes_nac=$registro["mes_nac"]; $ano_nac=$registro["ano_nac"]; $peso=$registro["peso"]; $estat=$registro["estat"]; $tlf=$registro["tlf"]; $domic=$registro["domic"]; $localidad=$registro["localidad"]; $provincia=$registro["provincia"]; $provincia=convierte_valor_cad($provincia,"prov"); $pais=$registro["nacionalidad"]; $pais=convierte_valor_cad($pais,"pais"); $ano_ing=$registro["ano_ing"]; $prof_asoc=$registro["prof_asoc"]; $num_cons=$registro["num_cons"]; $foto=$registro["foto"]; Autor: Antonio Martínez Martínez 198 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones /*ASIGNACION VALORES PESTAÑA DATOS FAMILIARES*/ $nombre_p=$registro["nombre_p"]; $apel_p1=$registro["apel_p1"]; $apel_p2=$registro["apel_p2"]; $dia_nac_p=$registro["dia_nac_p"]; $mes_nac_p=$registro["mes_nac_p"]; $ano_nac_p=$registro["ano_nac_p"]; $tlf1_p=$registro["tlf1_p"]; $domic_p=$registro["domic_p"]; $tlf2_p=$registro["tlf2_p"]; $profesion_p=$registro["profesion_p"]; $correo_p=$registro["correo_p"]; $nombre_m=$registro["nombre_m"]; $apel_m1=$registro["apel_m1"]; $apel_m2=$registro["apel_m2"]; $dia_nac_m=$registro["dia_nac_m"]; $mes_nac_m=$registro["mes_nac_m"]; $ano_nac_m=$registro["ano_nac_m"]; $tlf1_m=$registro["tlf1_m"]; $domic_m=$registro["domic_m"]; $tlf2_m=$registro["tlf2_m"]; $profesion_m=$registro["profesion_m"]; $correo_m=$registro["correo_m"]; $n_herm=$registro["n_herm"]; $lugar_herm=$registro["lugar_herm"]; $edad_emb=$registro["edad_emb"]; $enf_emb=$registro["enf_emb"]; $dif_parto=$registro["dif_parto"]; $otros=$registro["otros"]; /*ASIGNACION VALORES PESTAÑA EVALUACION INICIAL*/ $hist_acad=$registro["hist_acad"]; $ncc_act=$registro["ncc_act"]; $est_apren=$registro["est_apren"]; $des_gral=$registro["des_gral"]; $sf_alumno=$registro["sf_alumno"]; $sf_familia=$registro["sf_familia"]; $sf_social=$registro["sf_social"]; $cont_esc=$registro["cont_esc"]; /*ASIGNACION VALORES PESTAÑA DIAGNOSTICO*/ $tipo=$registro["tipo"]; $tipo=convierte_valor_cad($tipo,"tipo"); $pato=$registro["pato"]; $nivel=$registro["nivel"]; $obs=$registro["obs"]; $tratam=$registro["tratam"]; $obs_trat=$registro["obs_trat"]; $n_esp=$registro["n_esp"]; Autor: Antonio Martínez Martínez 199 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones $sql="SELECT id_cons FROM al_cons WHERE id_al=".$id; $res=mysql_query($sql); $i=0; while($row=mysql_fetch_array($res)){ $id_cons[$i]=$row['id_cons']; $i++; } $cons_total=$num_cons+$n_esp; $k=0; for($j=$num_cons;$j<$cons_total;$j++){ $id_esp[$k]=$id_cons[$j]; $k++; } ?> àcrea_inf.php Otro de los códigos que se consideran dignos de mostrar es el que genera los informes en formato PDF. <?php require("funcs_inf.php"); if($GLOBALS['selwa']->session->getData('login')=='0') header("Location:index.php"); ?> <?php require('./fpdf/fpdf.php'); if(isset($_POST['al_sel'])) $id_al=$_POST['al_sel']; else $id_al=0; $asuntos=array(); $fechas=array(); $datos_pers=array(); $areas=array(); $subareas=array(); $coments=""; $datos_pers=extrae_dp($id_al); $areas=extrae_areas($campo); $subareas=extrae_subareas($campo); $numSubareas_total=subareas_por_areas($subareas); Autor: Antonio Martínez Martínez 200 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones $i=0; $subareas=convierte_subareas($subareas); $connect=mysql_connect("localhost","root"); mysql_select_db("db_ee",$connect); foreach($subareas as $key=>$value){ $i=0; $sql="SELECT asunto,comentario,fecha FROM info_diaria WHERE id_al=".$id_al." AND "; $sql.="refer='".$value."' AND "; $sql.="fecha_comp>='".$year1."-".$mes1."-".$dia1."' AND fecha_comp<='".$year2."-".$mes2."-".$dia2."'"; } $res=mysql_query($sql); $numComs[$value]=mysql_num_rows($res); while($registro=mysql_fetch_array($res)){ $asuntos[$value][$i]=$registro["asunto"]; $coments[$value][$i]=$registro["comentario"]; $fechas[$value][$i]=$registro["fecha"]; $i++; } $pdf=new FPDF(); $pdf->SetLineWidth(0.5); $pdf->AddPage(); $pdf->SetFont('Arial','BU',18); $pdf->SetLeftMargin(60.3); $pdf->Cell(100,10,'Informe de Seguimiento',1,0,'C',0); $pdf->Ln(18); $pdf->SetX(20); $pdf->SetFont('Times','BU',16); $pdf->Cell(175,70,'',0,1,''); $pdf->SetY(35); $pdf->SetX(20); $pdf->SetFillColor(254,253,222); $pdf->Cell(27,5,'Alumno:',0,0,'C',1); $pdf->SetFont('Times','B',12); $pdf->Write(5,' '); $pdf->Write(5,$datos_pers[0].' '.$datos_pers[1].' '.$datos_pers[2]); $pdf->Ln(15); $pdf->SetFont('Times','BU',16); $pdf->SetY(45); $pdf->SetX(20); $pdf->Cell(27,5,'Período:',0,0,'C',1); $pdf->SetFont('Times','B',12); $pdf->Write(5,' '); $pdf->Write(5,$dia1.' / '.$mes1.' / '.$year1.' --- '.$dia2.' / '.$mes2.' / '.$year2); Autor: Antonio Martínez Martínez 201 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones $pdf->Ln(18); $pdf->SetFont('Times','BU',16); $pdf->SetY(60); $pdf->SetX(20); $pdf->Cell(52,5,'Profesor Asociado:',0,0,'C',1); $pdf->SetFont('Times','B',12); $pdf->Write(5,' '); $pdf->Write(5,$datos_pers[3].' '.$datos_pers[4].' '.$datos_pers[5]); $pdf->Ln(15); $pdf->SetFont('Times','BU',16); $pdf->SetY(70); $pdf->SetX(20); $pdf->Cell(40,5,'Especialista/s:',0,0,'C',1); $pdf->SetFont('Times','B',12); $pdf->Write(5,' '); $i=9; while(strcmp($datos_pers[$i],"")!=0){ $pdf->Write(5,'- '.$datos_pers[$i]); $pdf->Ln(5); $pdf->SetX(62); $i++; } $ult_y=$pdf->GetY(); $y_nueva=$ult_y+10; $pdf->SetY($y_nueva); $pdf->SetFont('Times','BU',16); $pdf->SetX(20); $pdf->Cell(30,5,'Tipología:',0,0,'C',1); $pdf->SetFont('Times','B',12); $pdf->Write(5,' '); $pdf->Write(5,$datos_pers[6]); $pdf->SetFont('Times','BU',16); $pdf->SetX(110); $pdf->Cell(27,5,'Patología:',0,0,'C',1); $pdf->SetFont('Times','B',12); $pdf->Write(5,' '); $pdf->Write(5,$datos_pers[7]); $pdf->Ln(15); $pdf->SetFont('Times','BU',16); $pdf->SetY(110); $pdf->SetX(20); $pdf->Cell(20,5,'Nivel:',0,0,'C',1); $pdf->SetFont('Times','B',12); $pdf->Write(5,' '); $pdf->Write(5,$datos_pers[8]); Autor: Antonio Martínez Martínez 202 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones $pdf->SetLineWidth(0.8); $pdf->Line(15,120,145,120); $pdf->SetY(130); $pdf->SetX(20); $numAreas=count($areas); $flag=0; $j=0; $i=0; $m=0; $n=0; $cont=0; $ult_y=110; $pdf->Ln(15); $areas_txt=convierte_areas($areas); while($numAreas > 0){ $i=$areas[$n]; $nueva_y=$ult_y+20; $pdf->SetY($nueva_y); $pdf->SetLineWidth(0.5); $pdf->SetFont('Times','B',16); $pdf->SetX(20); $pdf->Cell(27,8,'Área:',1,0,'C',0); $pdf->SetFont('Times','BU',16); $x_temp=$pdf->GetX(); $x_temp+=2; $pdf->SetX($x_temp); $y_temp=$pdf->GetY(); $y_temp+=1; $pdf->SetY($y_temp); $pdf->Write(5,$areas_txt[$n]); while($numSubareas_total[$i] > 0){ $cont++; $long_sub=count($subareas); $k=$subareas[$j]; $nueva_y=$pdf->GetY(); $nueva_y+=10; $pdf->SetY($nueva_y); $pdf->SetX(30); $pdf->SetFont('Times','B',14); $pdf->Cell(27,6.5,'* Subárea:',0,0,'C',0); $pdf->SetFont('Times','BU',14); $x_temp=$pdf->GetX(); $x_temp+=4; $pdf->SetX($x_temp); $y_temp=$pdf->GetY(); Autor: Antonio Martínez Martínez 203 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones $y_temp+=1; $pdf->SetY($y_temp); $pdf->Write(5,$subareas[$j]); $m=0; while($numComs[$k] > 0){ $nueva_y=$pdf->GetY(); $nueva_y+=10; $pdf->SetY($nueva_y); $pdf->SetX(35); $pdf->SetFont('Times','BU',10); $pdf->Cell(27,5,'Asunto:',0,0,'C',0); $pdf->SetFont('Times','',10); $x_temp=$pdf->GetX(); $x_temp+=2; $pdf->SetX($x_temp); $pdf->Write(5,$asuntos[$k][$m]); $x_temp=$pdf->GetX(); $x_temp+=18; $pdf->SetX($x_temp); $pdf->Write(5,'Fecha: '.$fechas[$k][$m]); $nueva_y=$pdf->GetY(); $nueva_y+=10; $pdf->SetY($nueva_y); $pdf->SetX(40); $pdf->SetFont('Times','B',10); $pdf->Cell(30,5,'Comentario:',0,0,'C',0); $pdf->SetFont('Times','',10); $pdf->Write(5,' '); $pdf->Write(5,$coments[$k][$m]); $pdf->Ln(15); $m++; $numComs[$k]--; } if($numSubareas_total[$i]!=1){ $y_temp=$pdf->GetY(); $y_temp+=6; $pdf->SetLineWidth(0.1); $pdf->SetDrawColor(230,230,230); $pdf->Line(15,$y_temp,130,$y_temp); } $numSubareas_total[$i]--; } $j++; Autor: Antonio Martínez Martínez 204 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones $y_temp=$pdf->GetY(); $y_temp+=10; $pdf->SetLineWidth(0.4); $pdf->SetDrawColor(0,0,0); $pdf->Line(15,$y_temp,140,$y_temp); $numAreas--; $n++; $ult_y=$pdf->GetY(); } if(strcmp($an_pers,"ok")==0){ $nueva_y=$ult_y+20; $pdf->SetY($nueva_y); $pdf->SetFont('Times','B',16); $pdf->SetX(20); $pdf->Cell(60,8,'Anotación Personal:',1,0,'C',0); $pdf->SetFont('Times','BU',16); $nueva_y=$pdf->GetY(); $nueva_y+=10; $pdf->SetY($nueva_y); $pdf->SetX(30); $pdf->SetFont('Times','BU',12); $pdf->Cell(30,5,'Comentario:',0,0,'C',0); $pdf->SetFont('Times','',10); $pdf->Write(5,$an_pers_txt); } $pdf->Output(); ?> Autor: Antonio Martínez Martínez 205 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones 6.2.4 JavaScript à funcs_GestPest.js Se va a mostrar una de las funciones más importantes realizadas en JavaScript: “manejador_pest”. Esta función es la encargada de controlar el acceso a las distintas pestañas, comprobando si se cumplen las condiciones necesarias y desencadenando la activación de las capas y las pestañas oportunas. /*Funcion: manejador_pest. **Parametros: id_orig: Identificador de la capa correspondiente a la **pestaña en la que estoy actualmente. ** id_dest: Identificador de la capa correspondiente a la ** pestaña que va a pasar a ser la activa. ** Comentario: Es la funcion principal del mecanismo de ** pestañas. Mediante los dos parametros recibidos aciva ** y desactiva las pestañas y las capas correspondientes para ** mostrar la informacion solicitada. Se encarga de guardar los ** valores introducidos en los diferentes campos para su ** posterior tratamiento de comprobacion de validez, no ** permitiendo al usuario avanzar de pestaña hasta que todos ** los datos sean correctos. ** **Valor devuelto: Nada. */ function manejador_pest(id_orig,id_dest){ var i=0; var elem; var num_resp_tut=0; var capas_a_mostrar=new Array(5); var pest_a_mostrar=new Array(5); if(id_orig=="datos1"){ for(i=0;i<4;i++){ elem=document.getElementById("tut"+i); if(elem!=null){ if(elem.checked){ num_resp_tut++; } } } i=0; /*GUARDO LOS VALORES DE LOS REGISTROS*/ pest[0][0]=document.getElementById("nombre").value; pest[0][1]=document.getElementById("apel1").value; pest[0][18]=document.getElementById("apel2").value; pest[0][2]=document.getElementById("dia").value; pest[0][3]=document.getElementById("mes").value; pest[0][4]=document.getElementById("year").value; pest[0][5]=document.getElementById("peso").value; pest[0][6]=document.getElementById("estat").value; Autor: Antonio Martínez Martínez 206 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones pest[0][7]=document.getElementById("domic").value; pest[0][8]=document.getElementById("tlf").value; pest[0][9]=document.getElementById("localidad").value; pest[0][10]=document.getElementById("provincia").value; pest[0][11]=document.getElementById("pais").value; pest[0][12]=document.getElementById("year_ing").value; pest[0][13]=document.getElementById("tut_asoc").value; pest[0][14]=""; pest[0][15]=""; pest[0][16]=""; pest[0][17]=""; for(i=0;i<num_resp_tut;i++) pest[0][14+i]=document.getElementById("tut"+i).value; /*COMPRUEBO QUE LOS VALORES INTRODUCIDOS SON VALIDOS*/ res_comprueba=comprueba_datos(id_orig,pest); /*COMPRUEBO CUALES SON LAS CAPAS Y PESTAÑAS A MOSTRAR Y A OCULTAR*/ capas_a_mostrar=comprueba_capas(id_dest); pest_a_mostrar=comprueba_pest(id_dest); if(res_comprueba!=1){ /*SI TODO ES CORRECTO....*/ if(estado==1&&flag_pest==1) estado=1; if(estado==2&&flag_pest==1) estado=2; if(estado==3&&flag_pest==1) estado=3; if(estado==4&&flag_pest==1) estado=4; if(estado==0&&flag_pest==0&&id_dest!="datos1") estado=1; /*MUESTRO Y OCULTO LAS CAPAS Y PESTAÑAS QUE CORRESPONDAN*/ se_ve_2(capas_a_mostrar[4]); no_se_ve_2(capas_a_mostrar[0],capas_a_mostrar[1],capas_a_mostrar[2],cap as_a_mostrar[3],capas_a_mostrar[4]); activo_2(pest_a_mostrar[4]); no_activo_2(pest_a_mostrar[0],pest_a_mostrar[1],pest_a_mostrar[2],pest_ a_mostrar[3],pest_a_mostrar[4]); } } Autor: Antonio Martínez Martínez 207 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones if(id_orig=="datos2"){ /*GUARDO LOS VALORES DE LOS REGISTROS*/ pest[1][0]=document.getElementById("nombre_p").value; pest[1][1]=document.getElementById("apel_p1").value; pest[1][26]=document.getElementById("apel_p2").value; pest[1][2]=document.getElementById("dia_p").value; pest[1][3]=document.getElementById("mes_p").value; pest[1][4]=document.getElementById("year_p").value; pest[1][5]=document.getElementById("tlf_p").value; pest[1][6]=document.getElementById("domic_p").value; pest[1][7]=document.getElementById("tlf2_p").value; pest[1][8]=document.getElementById("profesion_p").value; pest[1][9]=document.getElementById("correo_p").value; pest[1][10]=document.getElementById("nombre_m").value; pest[1][11]=document.getElementById("apel_m1").value; pest[1][27]=document.getElementById("apel_m2").value; pest[1][12]=document.getElementById("dia_m").value; pest[1][13]=document.getElementById("mes_m").value; pest[1][14]=document.getElementById("year_m").value; pest[1][15]=document.getElementById("tlf_m").value; pest[1][16]=document.getElementById("domic_m").value; pest[1][17]=document.getElementById("tlf2_m").value; pest[1][18]=document.getElementById("profesion_m").value; pest[1][19]=document.getElementById("correo_m").value; pest[1][20]=document.getElementById("n_herm").value; pest[1][21]=document.getElementById("lugar_herm").value; pest[1][22]=document.getElementById("edad_emb").value; pest[1][23]=document.getElementById("enf_emb").value; pest[1][24]=document.getElementById("dif_parto").value; pest[1][25]=document.getElementById("otros").value; /*COMPRUEBO QUE LOS VALORES INTRODUCIDOS SON VALIDOS*/ res_comprueba=comprueba_datos(id_orig,pest); /*COMPRUEBO CUALES SON LAS CAPAS Y PESTAÑAS A MOSTRAR Y A OCULTAR*/ capas_a_mostrar=comprueba_capas(id_dest); pest_a_mostrar=comprueba_pest(id_dest); if(res_comprueba!=1){ /*SI TODO ES CORRECTO....*/ if(estado==1&&flag_pest==1) estado=1; if(estado==2&&flag_pest==1) estado=2; if(estado==3&&flag_pest==1) estado=3; if(estado==4&&flag_pest==1) estado=4; if(estado==1&&flag_pest==0&&id_dest!="datos2") estado=2; Autor: Antonio Martínez Martínez 208 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones /*MUESTRO Y OCULTO LAS CAPAS Y PESTAÑAS QUE CORRESPONDAN*/ se_ve_2(capas_a_mostrar[4]); no_se_ve_2(capas_a_mostrar[0],capas_a_mostrar[1],capas_a_mostrar[2],cap as_a_mostrar[3],capas_a_mostrar[4]); activo_2(pest_a_mostrar[4]); no_activo_2(pest_a_mostrar[0],pest_a_mostrar[1],pest_a_mostrar[2],pest_ a_mostrar[3],pest_a_mostrar[4]); } } if(id_orig=="datos3"){ /*COMPRUEBO CUALES SON LAS CAPAS Y PESTAÑAS A MOSTRAR Y A OCULTAR*/ capas_a_mostrar=comprueba_capas(id_dest); pest_a_mostrar=comprueba_pest(id_dest); if(/*comprobacion ok*/1){ /*NO COMPROBAMOS NADA*/ if(estado==2&&flag_pest==1) estado=2; if(estado==3&&flag_pest==1) estado=3; if(estado==4&&flag_pest==1) estado=4; if(estado==2&&flag_pest==0&&id_dest!="datos3") estado=3; /*MUESTRO Y OCULTO LAS CAPAS Y PESTAÑAS QUE CORRESPONDAN*/ se_ve_2(capas_a_mostrar[4]); no_se_ve_2(capas_a_mostrar[0],capas_a_mostrar[1],capas_a_mostrar[2],cap as_a_mostrar[3],capas_a_mostrar[4]); activo_2(pest_a_mostrar[4]); no_activo_2(pest_a_mostrar[0],pest_a_mostrar[1],pest_a_mostrar[2],pest_ a_mostrar[3],pest_a_mostrar[4]); } } if(id_orig=="datos4"){ /*COMPRUEBO CUALES SON LAS CAPAS Y PESTAÑAS A MOSTRAR Y A OCULTAR*/ capas_a_mostrar=comprueba_capas(id_dest); pest_a_mostrar=comprueba_pest(id_dest); Autor: Antonio Martínez Martínez 209 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones if(/*comprobacion ok*/1){ /*NO COMPROBAMOS NADA*/ if(estado==3&&flag_pest==1) estado=3; if(estado==4&&flag_pest==1) estado=4; if(estado==3&&flag_pest==0&&id_dest!="datos4") estado=4; /*MUESTRO Y OCULTO LAS CAPAS Y PESTAÑAS QUE CORRESPONDAN*/ se_ve_2(capas_a_mostrar[4]); no_se_ve_2(capas_a_mostrar[0],capas_a_mostrar[1],capas_a_mostrar[2],cap as_a_mostrar[3],capas_a_mostrar[4]); activo_2(pest_a_mostrar[4]); no_activo_2(pest_a_mostrar[0],pest_a_mostrar[1],pest_a_mostrar[2],pest_ a_mostrar[3],pest_a_mostrar[4]); } } if(id_orig=="datos5"){ /*COMPRUEBO CUALES SON LAS CAPAS Y PESTAÑAS A MOSTRAR Y A OCULTAR*/ capas_a_mostrar=comprueba_capas(id_dest); pest_a_mostrar=comprueba_pest(id_dest); if(/*comprobacion ok*/1){ /*NO COMPROBAMOS NADA*/ estado=4; /*MUESTRO Y OCULTO LAS CAPAS Y PESTAÑAS QUE CORRESPONDAN*/ se_ve_2(capas_a_mostrar[4]); no_se_ve_2(capas_a_mostrar[0],capas_a_mostrar[1],capas_a_mostrar[2],cap as_a_mostrar[3],capas_a_mostrar[4]); activo_2(pest_a_mostrar[4]); no_activo_2(pest_a_mostrar[0],pest_a_mostrar[1],pest_a_mostrar[2],pest_ a_mostrar[3],pest_a_mostrar[4]); } } } Autor: Antonio Martínez Martínez 210 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones à funcs_Varias.js En este archivo (el que se encuentra en la carpeta “funcs_ficha” dentro de la carpeta “javascript”) encontramos la función que realiza la actualización dinámica del menú desplegable “Tipología” en función del valor seleccionado en “Tipología”. /*Funcion: actualiza_sel. **Parametros: sel_orig: identificador del elemento "select" que provoca ** el cambio. ** sel_dest: identificador del elemento "select" que se va a ** actualizar en funcion del valor seleccionado en "sel_orig". **Comentario: Esta funcion genera los elementos "option" de "sel_dest" ** que tienen que mostrarse, en funcion del elemento ** seleccionado en "sel_orig". ** **Valor devuelto: Nada. */ function actualiza_sel(sel_orig,sel_dest){ var var var var var sel_orig=document.getElementById(sel_orig); sel_dest=document.getElementById(sel_dest); datos=new Array(); longitud=0; i=0; if(sel_orig.value==1){ datos[1]="Parálisis Cerebral"; datos[2]="Espina Bífida"; datos[3]="Distrofias Musculares"; datos[4]="Distrofias Óseo-Artic."; datos[5]="Ataxia de Friedreich"; datos[6]="Atrofia Muscular Espinal"; datos[7]="Polimielitis Ant. Aguda"; datos[8]="Otras"; } if(sel_orig.value==2){ datos[1]="Síndrome de Down"; datos[2]="Síndrome de X-frágil"; datos[3]="Otras"; } if(sel_orig.value==3){ datos[1]="Deficiencia Auditiva"; datos[2]="Deficiencia Visual"; datos[3]="Otras"; } Autor: Antonio Martínez Martínez 211 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones if(sel_orig.value==4){ datos[1]="Otras"; } if(sel_orig.value==5){ datos[1]="Autismo"; datos[2]="Síndrome de Rett"; datos[3]="Síndrome de Asperger"; datos[4]="Otras"; } if(sel_orig.value==6){ datos[1]="T.D.A.H."; datos[2]="Trastorno Disocial"; datos[3]="Otras"; } if(sel_orig.value==7){ datos[1]="Anorexia"; datos[2]="Bulimia"; datos[3]="Vigorexia"; datos[4]="Dismorfia Corporal"; datos[5]="Otras"; } if(sel_orig.value==8){ datos[1]="Trastorno con Tic"; datos[2]="Síndrome de Tourette"; datos[3]="Otras"; } /*BORRO LOS VALORES QUE HUBIERA ANTERIORMENTE CARGADOS*/ sel_dest.length=0; i=1; longitud=datos.length; /*AÑADO LOS NUEVOS VALORES CORRESPONDIENTES*/ for(i=1;i<longitud;i++){ var op=document.createElement("option"); op.appendChild(document.createTextNode(datos[i])); op.value=datos[i]; sel_dest.appendChild(op); } } Autor: Antonio Martínez Martínez 212 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones à funcs_Ayuda.js En este archivo se encuentra la función encargada de gestionar las peticiones de ayuda. En el apartado siguiente 6.2.5 “AJAX“ se muestra la función que finalmente muestra la ventana de ayuda, tras la consulta AJAX a la base de datos. /*Funcion: manejador_ayuda. **Parametros: ob: elemento sobre el cual hay que mostrar ayuda. ** tipo: cadena que servira como discriminador de grupos de ** ayuda. Sus valores pueden ser: "tipo", "pato", "nivel", ** "buscar", "ayuda_esp" o "ev_ini". ** valor: Numero que identificara univocamente en la base de ** datos al elemento del que quiero obtener ayuda. **Comentario: Esta funcion prepara, en funcion del parametro "tipo", el ** valor que hay que pasarle a la funcion "muestra_ayuda" en ** xajax, para que muestre la ayuda correcta del elemento ** seleccionado. Así mismo, prepara las coordenadas donde se ** mostrara la ventana de ayuda para su correcta ** visualizacion. ** **Valor devuelto: Nada. */ function manejador_ayuda(ob,tipo,valor){ if(tipo!="progr_obj") var valor1=document.getElementById("tipologia").value; else var valor1=0; if(valor1=="Déficit Físico") valor1=1; if(valor1=="Déficit Psíquico") valor1=2; if(valor1=="Déficit Sensorial") valor1=3; if(valor1=="Sobredotación Intelectual") valor1=4; if(valor1=="Trastorno del Desarrollo") valor1=5; if(valor1=="Trastorno de la Conducta") valor1=6; if(valor1=="Trastorno Alimentarios") valor1=7; if(valor1=="Trastorno con Tic") valor1=8; if(tipo!="progr_obj") var valor2=document.getElementById("patologia").value; else var valor2=0; Autor: Antonio Martínez Martínez 213 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones /*AYUDA PARA ELEMENTOS DE TIPO "TIPOLOGIA"*/ if(tipo=="tipo"){ if(valor==0) valor=31; document.getElementById("ayuda2").style.left=ob.offsetLeft+55+"px"; document.getElementById("ayuda2").style.top=ob.offsetTop+100+"px"; document.getElementById("ayuda2").style.display="block"; } /*AYUDA PARA ELEMENTOS DE TIPO "PATOLOGIA"*/ if(tipo=="pato"){ if(valor=="Parálisis Cerebral") valor=1; if(valor=="Espina Bífida") valor=2; if(valor=="Distrofias Musculares") valor=3; if(valor=="Distrofias Óseo-Artic.") valor=4; if(valor=="Ataxia de Friedreich") valor=5; if(valor=="Atrofia Muscular Espinal") valor=6; if(valor=="Polimielitis Ant. Aguda") valor=7; if(valor=="Síndrome de Down") valor=8; if(valor=="Síndrome de X-frágil") valor=9; if(valor=="Deficiencia Auditiva") valor=10; if(valor=="Deficiencia Visual") valor=11; if(valor=="Autismo") valor=12; if(valor=="Síndrome de Rett") valor=13; if(valor=="Síndrome de Asperger") valor=14; if(valor=="T.D.A.H.") valor=15; if(valor=="Trastorno Disocial") valor=16; if(valor=="Anorexia") valor=17; if(valor=="Bulimia") valor=18; if(valor=="Vigorexia") valor=19; if(valor=="Dismorfia Corporal") valor=20; if(valor=="Trastorno con Tic") valor=21; Autor: Antonio Martínez Martínez 214 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones if(valor=="Síndrome de Tourette") valor=22; if(valor=="Otras") valor=30; if(valor==0) valor=31; document.getElementById("ayuda2").style.left=ob.offsetLeft120+"px"; document.getElementById("ayuda2").style.top=ob.offsetTop+100+"px" ; document.getElementById("ayuda2").style.display="block"; } if(tipo=="tipo_inv"){ if(valor=="Déficit Físico") valor=1; if(valor=="Déficit Psíquico") valor=2; if(valor=="Déficit Sensorial") valor=3; if(valor=="Sobredotación Intelectual") valor=4; if(valor=="Trastorno del Desarrollo") valor=5; if(valor=="Trastorno de la Conducta") valor=6; if(valor=="Trastorno Alimentarios") valor=7; if(valor=="Trastorno con Tic") valor=8; tipo="tipo"; document.getElementById("ayuda2").style.left=ob.offsetLeft+55+"px"; document.getElementById("ayuda2").style.top=ob.offsetTop+100+"px"; document.getElementById("ayuda2").style.display="block"; } /*AYUDA PARA ELEMENTOS DE TIPO "NIVEL"*/ if(tipo=="nivel"){ if(valor1==0) valor=36; if(valor1==1){ if(valor2=="Parálisis Cerebral"){ if(valor=="Parálisis Cerebral Espástica") valor=1; if(valor=="Parálisis Cerebral Atetoide") valor=2; if(valor=="Parálisis Cerebral Atáxica") valor=3; if(valor=="Estados Mixtos") valor=4; } Autor: Antonio Martínez Martínez 215 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones if(valor2=="Espina Bífida"){ if(valor=="Espina Bífida Oculta") valor=5; if(valor=="Lipomeningocele") valor=6; if(valor=="Encefalocele") valor=7; } if(valor2=="Distrofias Musculares"){ valor=8; } if(valor2=="Atrofia Muscular Espinal"){ valor=9; } if(valor2!="Parálisis Cerebral"&&valor2!="Espina Bífida"&&valor2!="Distrofias Musculares"&&valor2!="Atrofia Muscular Espinal") valor=10; } if(valor1==2){ if(valor2!="Otras"){ valor=11; } } if(valor1==3){ if(valor2!="Otras"){ valor=12; } } if(valor1==4){ valor=37; } if(valor1==5){ if(valor2=="Autismo"){ if(valor=="Nivel A") valor=13; if(valor=="Nivel B") valor=14; if(valor=="Nivel C") valor=15; } if(valor2=="Síndrome de Rett"){ if(valor=="Estadio I") valor=16; if(valor=="Estadio II") valor=17; if(valor=="Estadio III") valor=18; if(valor=="Estadio IV") valor=19; } Autor: Antonio Martínez Martínez 216 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones if(valor2=="Síndrome de Asperger"){ if(valor=="Nivel A") valor=20; if(valor=="Nivel B") valor=21; if(valor=="Nivel C") valor=22; if(valor=="Nivel D") valor=23; if(valor=="Nivel E") valor=24; if(valor=="Nivel F") valor=25; } } if(valor1==6){ if(valor2=="T.D.A.H."){ if(valor=="Predominio Déficit Atención") valor=26; if(valor=="Predominio Hiperact.-Impulsivo") valor=27; if(valor=="Combinado") valor=28; } if(valor2=="Trastorno Disocial"){ if(valor=="Trastorno Negativista Desafiante") valor=29; if(valor=="Otros") valor=30; } } if(valor1==7){ if(valor2!="Otras"){ valor=31; } } if(valor1==8){ if(valor2=="Trastorno con Tic"){ if(valor=="Simple") valor=32; if(valor=="Complejo") valor=33; Autor: Antonio Martínez Martínez 217 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones } if(valor2=="Síndrome de Tourette"){ if(valor=="Simple") valor=34; if(valor=="Complejo") valor=35; } } document.getElementById("ayuda2").style.left=ob.offsetLeft+75+"px"; document.getElementById("ayuda2").style.top=ob.offsetTop+55+"px"; document.getElementById("ayuda2").style.display="block"; } /*AYUDA PARA ELEMENTOS DE TIPO "BUSCAR"*/ if(tipo=="buscar"){ if(valor!=3){ document.getElementById("ayuda_estatica").style.left=ob.offsetLeft+520+ "px"; document.getElementById("ayuda_estatica").style.top=ob.offsetTop+235+"p x"; document.getElementById("ayuda_estatica").style.display="block"; } else{ document.getElementById("ayuda").style.left=ob.offsetLeft+375+"px"; document.getElementById("ayuda").style.top=ob.offsetTop+215+"px"; document.getElementById("ayuda").style.display="block"; } } /*AYUDA PARA BOTON BUSCAR DE LA PESTAÑA "DIAGNOSTICO"*/ if(tipo=="ayuda_esp"){ document.getElementById("ayuda2").style.left=ob.offsetLeft+75+"px"; document.getElementById("ayuda2").style.top=ob.offsetTop+45+"px"; document.getElementById("ayuda2").style.display="block"; } /*AYUDA PARA ELEMENTOS DE LA PESTAÑA "EVALUACION INICIAL"*/ if(tipo=="ev_ini"){ if(valor==1){ document.getElementById("ayuda").style.left=ob.offsetLeft45+"px"; Autor: Antonio Martínez Martínez 218 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones document.getElementById("ayuda").style.top=ob.offsetTop+107+"px"; document.getElementById("ayuda").style.display="block"; } if(valor==2){ document.getElementById("ayuda").style.left=ob.offsetLeft+70+"px"; document.getElementById("ayuda").style.top=ob.offsetTop+25+"px"; document.getElementById("ayuda").style.display="block"; } if(valor==3){ document.getElementById("ayuda").style.left=ob.offsetLeft185+"px"; document.getElementById("ayuda").style.top=ob.offsetTop+25+"px"; document.getElementById("ayuda").style.display="block"; } if(valor==4){ document.getElementById("ayuda").style.left=ob.offsetLeft190+"px"; document.getElementById("ayuda").style.top=ob.offsetTop+25+"px"; document.getElementById("ayuda").style.display="block"; } if(valor==5){ document.getElementById("ayuda").style.left=ob.offsetLeft+70+"px"; document.getElementById("ayuda").style.top=ob.offsetTop+25+"px"; document.getElementById("ayuda").style.display="block"; } if(valor==6){ document.getElementById("ayuda").style.left=ob.offsetLeft+65+"px"; document.getElementById("ayuda").style.top=ob.offsetTop+25+"px"; document.getElementById("ayuda").style.display="block"; } if(valor==7){ document.getElementById("ayuda").style.left=ob.offsetLeft195+"px"; document.getElementById("ayuda").style.top=ob.offsetTop+25+"px"; document.getElementById("ayuda").style.display="block"; } if(valor==8){ document.getElementById("ayuda").style.left=ob.offsetLeft200+"px"; document.getElementById("ayuda").style.top=ob.offsetTop+25+"px"; document.getElementById("ayuda").style.display="block"; } } Autor: Antonio Martínez Martínez 219 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones if(tipo=="ayuda_foto"){ document.getElementById("ayuda_estatica").style.left=ob.offsetLeft+525+ "px"; document.getElementById("ayuda_estatica").style.top=ob.offsetTop+255+"p x"; document.getElementById("ayuda_estatica").style.display="block"; } if(tipo=="ayuda_obj"){ document.getElementById("ayuda_estatica").style.left=ob.offsetLeft+90+" px"; document.getElementById("ayuda_estatica").style.top=ob.offsetTop+230+"p x"; document.getElementById("ayuda_estatica").style.display="block"; } if(tipo=="ayuda_act"){ document.getElementById("ayuda_estatica").style.left=ob.offsetLeft+85+" px"; document.getElementById("ayuda_estatica").style.top=ob.offsetTop+230+"p x"; document.getElementById("ayuda_estatica").style.display="block"; } if(tipo=="progr_obj"){ document.getElementById("ayuda2").style.left=ob.offsetLeft+45+"px"; document.getElementById("ayuda2").style.top=ob.offsetTop+20+"px"; document.getElementById("ayuda2").style.display="block"; } /*LLAMADA A LA FUNCION QUE MUESTRA EL ICONO DE ESPERA*/ iniwait(); /*LLAMADA A LA FUNCION XAJAX QUE MUESTRA LA AYUDA*/ xajax_muestra_ayuda(tipo,valor); } Autor: Antonio Martínez Martínez 220 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones à add_obj.php Código JavaScript embebido en el archivo add_obj.php que permite la adición de nuevos objetivos al listado de competencias de los N.C.C. var contenedor=opener.document.getElementById("t_res"); var var var var var var var elem1=opener.document.createElement("tr"); elem2=opener.document.createElement("td"); elem2_1=opener.document.createElement("span"); elem3=opener.document.createElement("td"); elem4=opener.document.createElement("td"); elem5=opener.document.createElement("input"); elem6=opener.document.createElement("input"); newAttr=opener.document.createAttribute("class"); var aux=num_preg%2; if(aux!=0) newAttr.nodeValue="res_par"; else newAttr.nodeValue="res_impar"; elem1.setAttributeNode(newAttr); newAttr=opener.document.createAttribute("onmouseover"); newAttr.nodeValue="this.style.backgroundColor=\'#FF9900\'"; elem1.setAttributeNode(newAttr); newAttr=opener.document.createAttribute("onmouseout"); if(aux!=0) newAttr.nodeValue="this.style.backgroundColor='#ACD0F4'"; else newAttr.nodeValue="this.style.backgroundColor='#dfecfd'"; elem1.setAttributeNode(newAttr); Autor: Antonio Martínez Martínez 221 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones newAttr=opener.document.createAttribute("class"); newAttr.nodeValue="enc2"; elem3.setAttributeNode(newAttr); newAttr=opener.document.createAttribute("type"); newAttr.nodeValue="radio"; elem5.setAttributeNode(newAttr); newAttr=opener.document.createAttribute("name"); newAttr.nodeValue="obje"; newAttr.nodeValue+=num_preg; elem5.setAttributeNode(newAttr); newAttr=opener.document.createAttribute("value"); newAttr.nodeValue="si"; elem5.setAttributeNode(newAttr); newAttr=opener.document.createAttribute("class"); newAttr.nodeValue="enc2"; elem4.setAttributeNode(newAttr); newAttr=opener.document.createAttribute("type"); newAttr.nodeValue="radio"; elem6.setAttributeNode(newAttr); newAttr=opener.document.createAttribute("name"); newAttr.nodeValue="obje"; newAttr.nodeValue+=num_preg; elem6.setAttributeNode(newAttr); newAttr=opener.document.createAttribute("checked"); newAttr.nodeValue="checked"; elem6.setAttributeNode(newAttr); newAttr=opener.document.createAttribute("value"); newAttr.nodeValue="no"; elem6.setAttributeNode(newAttr); elem2_1.innerHTML=num_preg; elem2_1.innerHTML+=" - "; elem2_1.innerHTML+=document.getElementById("preg"+i).value; elem4.appendChild(elem6); elem3.appendChild(elem5); elem2.appendChild(elem2_1); elem1.appendChild(elem2); elem1.appendChild(elem3); elem1.appendChild(elem4); contenedor.appendChild(elem1); num_preg++; Autor: Antonio Martínez Martínez 222 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones 6.2.5 AJAX à server.php Como se ha comentado en distintos apartados del presente documento, AJAX no es una tecnología en sí misma. Por esto, lo que se muestra es el código PHP donde se hace uso de las funciones provistas por la librería XAJAX, encargadas de la consulta a base de datos y posterior envío de información para ser mostrada. <?php /*funcion: muestra ayuda. **parametros: tipo: discriminador que servira para agrupar ** tipos de ayuda. ** valor: valor unico dentro de la base de datos ** para la ayuda asociada a un elemento en ** concreto. **Comentario: Esta funcion es la encargada de mostrar la ** ayuda de cualquier elemento que muestre un ** icono de ayuda en la aplicacion. **Valor devuelto: La frase a mostrar en la capa de ayuda ** correspondiente. */ require_once("actualiza_DB.php"); require_once ("./xajax/xajax.inc.php"); $xajax = new xajax("server.php"); $xajax->registerFunction('muestra_ayuda'); function muestra_ayuda($tipo,$valor) { if(strcmp($tipo,"act_DB")==0){ $objResponse = new xajaxResponse(); $result=act_DB($valor); if(strcmp($result,"1")==0) $frase_act="Pulse Actualizar para confirmar el cambio."; else $frase_act="No se ha producido el cambio. Int&eacute;ntelo de nuevo."; $objResponse->addAssign("actualizacion", "innerHTML", $frase_act); $objResponse->addScriptCall("FX_falloff","actualizacion",2); return $objResponse->getXML(); } else{ Autor: Antonio Martínez Martínez 223 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 6 Pliego de condiciones /*INSTANCIAMOS EL OBJETO "xajaxResponse"*/ $objResponse = new xajaxResponse(); /*REALIZAMOS LA LECTURA DE LA BASE DE DATOS DEL ELEMENTO **CORRESPONDIENTE, DADO POR LOS PARAMETROS "tipo" y "valor". */ $connect=mysql_connect("localhost","root"); mysql_select_db("db_ee",$connect); $sql="SELECT * FROM ayuda WHERE asoc='$tipo' AND valor=$valor"; if($result=mysql_query($sql)){ while($row=mysql_fetch_array($result)){ $frase=$row['contenido']; } } /*PREPARAMOS LA FRASE DE SALIDA*/ $frase_out="<div id='capa_help'><strong>Ayuda</strong></div><br />"; $frase_out .= $frase; /*ESTABLECEMOS EL OBJETO "xajaxResponse" PARA ACTUALIZAR EL OBJETO HTML **CUYO ID PUEDE SER "ayuda", "ayuda2", "ayuda_estatica", "ayuda3" o **"ayuda_otra". */ if(strcmp($tipo,"buscar")!=0) $objResponse->addAssign("ayuda", "innerHTML", $frase_out); else $objResponse->addAssign("ayuda_estatica", "innerHTML", $frase_out); if(strcmp($tipo,"tipo")==0||strcmp($tipo,"pato")==0||strcmp($tipo,"nive l")==0||strcmp($tipo,"ayuda_esp")==0||strcmp($tipo,"progr_obj")==0) $objResponse->addAssign("ayuda2", "innerHTML", $frase_out); else{ if(strcmp($tipo,"copiar")!=0) $objResponse->addAssign("ayuda_estatica", "innerHTML", $frase_out); else{ if(strcmp($tipo,"ayuda_obj")!=0&&strcmp($tipo,"ayuda_foto")!=0) $objResponse->addAssign("ayuda3", "innerHTML", $frase_out); else $objResponse->addAssign("ayuda_estatica", "innerHTML", $frase_out); } } /*DEVOLVEMOS EL RESULTADO*/ return $objResponse->getXML(); }//fin else inicial } $xajax->processRequests(); ?> Autor: Antonio Martínez Martínez 224 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 7 Bibliografía y Referencias 7 Bibliografía y Referencias 7.1 Bibliografía Ø PHP5 and MySQL Bible Tim Converse y Joyce Park. Editorial Wiley Publishing, Inc. 2004. Ø Manual de PHP Stig Sæther Bakken, Alexander Aulbach, Egon Schmid, Jim Winstead, Lars Torben Wilson, Rasmus Lerdorf, Zeev Suraski, Andrei Zmievski y Jouni Ahto. Editado por Rafael Martínez. 2001. Ø JavaScript Bible, Gold Edition Danny Goodman. Editorial Hungry Minds. 2001 7.2 Referencias Web [1] http://www.w3.org/TR/xhtml1/#diffs [2] http://www.en.wampserver.com/ [3] http://www.juntadeandalucia.es/averroes/recursos/index.php3 7.2.1 CSS Ø http://www.sidar.org/recur/desde/traduc/es/css/cover.html Completo manual de uso de hojas de estilo CSS2. Ø http://www.html.it/articoli/nifty/index.html Biblioteca para el redondeo de esquinas sin uso de imágenes. Ø http://es.selfhtml.org/css/intro.html Ø http://www.css3.info/preview Autor: Antonio Martínez Martínez 225 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 7 Bibliografía y Referencias 7.2.2 XHTML Ø http://manual-xhtml.blogspot.com/2006/05/ Manual de uso de las nuevas características de XHTML respecto a HTML. Ø http://www.wikipedia.org Información general sobre XHTML. 7.2.3 PHP Ø http://www.php.net Completo manual catalogado por funciones, con amplias y claras explicaciones. Ø http://www.php-hispano.net Foro por y para desarrolladores PHP. Ø http://www.desarrolloweb.com Ø http://www.webnova.com.ar 7.2.4 JavaScript Ø http://www.desarrolloweb.com Manual práctico JavaScript. Ø http://www.webtaller.com Ø http://www.forosdelweb.com Ø http://www.estadobeta.com Blog de desarrollo y recursos. Ø http://www.elcodigo.net/tutoriales/jsavanzado/jsavanzado7.html Descripción del DOM. Autor: Antonio Martínez Martínez 226 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 7 Bibliografía y Referencias 7.2.5 MySQL Ø http://dev.mysql.com Completo manual de consulta, con función de búsqueda. Ø http://www.mysql-hispano.org Foro de consulta. Ø http://mysql.conclase.net/curso/index.php Ø http://www.mysqlya.com.ar Ø http://www.tejedoresdelweb.com/slides/bases_datos/screen/teo3_m odel_er.pdf Modelo entidad-relación. Ø http://www.dcc.uchile.cl/~ccollazo/cc20a/e-r.html Modelo entidad-relación. Ø http://www.netpecos.org/docs/mysql_postgres Diferencias MySQL/PostgreSQL 7.2.6 AJAX Ø http://www.www.uberbin.net/archivos/internet/ajax-un-nuevoacercamiento-a-aplicaciones-web.php Introducción y teoría sobre AJAX Ø http://www.xajaxproject.org Manual y librería para el uso de XAJAX. 7.2.7 Otros enlaces de interés Ø http://www.es.geocities.com/adaptacionescurriculares/competencia.h tm Documentación sobre competencias en centros escolares Ø http://www.pasoapaso.com.ve/GEMAS/gemas_157.htm#5 Adaptaciones curriculares individuales Ø http://w3.cnice.mec.es/recursos2/atencion_diversidad/01_00.htm Página del ministerio de educación dedicada a la educación especial. Contiene las clasificaciones utilizadas en el presente proyecto, así como gran cantidad de información referente a la Autor: Antonio Martínez Martínez 227 SELWA: Sistema de gestión, seguimiento y automatización de informes para alumnos con necesidades educativas especiales. 7 Bibliografía y Referencias educación especial Ø http://www.scourdesign.com Diseño gráfico de páginas web, tutoriales XHTML, CSS, etc. Ø http://www.fpdf.org Sitio donde descargar la biblioteca para el manejo de archivos PDF desde PHP. Manuales y tutoriales. Ø http://ctrld.blogspot.com/2006/06/wamp.html Blog que trata sobre la herramienta WAMP. Para multitud de definiciones y consultas sobre teoría general de los distintos lenguajes utilizados en esta aplicación, se ha recurrido, fundamentalmente, a la ya mencionada http://www.wikipedia.org. Aquellas referencias web que no tengan descrito el propósito con el que fueron consultadas, bien son enlaces con información muy general, bien su información es meramente orientativa, nunca relevante para la elaboración del presente proyecto. Existen, además, dos personas que han resultado de vital importancia como fuente de información. Por un lado, Carlos Serrano Sánchez, Ingeniero de Telecomunicación por la Universidad de Sevilla, en lo referente a temas técnicos de PHP, JavaScript y MySQL. Por otro lado, Aurora Vega Afán, maestra de pedagogía terapéutica y coordinadora del equipo de orientación y apoyo (EDOA) del Colegio Virgen del Valle, en la localidad cordobesa de Lucena. Toda la información concerniente a la educación especial ha sido contrastada con ella, habiendo proporcionado multitud de informes, clasificaciones e ideas sobre cómo orientar la aplicación. Autor: Antonio Martínez Martínez 228