tesis de grado ingeniero en sistemas...

219
1 UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS CARRERA DE INGENIERIA EN SISTEMAS COMPUTACIONALES “ENCICLOPEDIA WEB INFORMATICA SOBRE FUNCIONES Y PROCEDIMIENTOS DE LENGUAJES DE PROGRAMACION ORIENTADA A LA IMPLEMENTACION DE E-LEARNING” Proyecto #17 TESIS DE GRADO Previa a la obtención del Título de: INGENIERO EN SISTEMAS COMPUTACIONALES AUTOR: CARLOS ANTONIO ZAMBRANO IZQUIERDO TUTOR: ING. XAVIER LOAIZA GUAYAQUIL ECUADOR 2010

Upload: phungkhue

Post on 21-Sep-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

1

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS

CARRERA DE INGENIERIA EN SISTEMAS

COMPUTACIONALES

“ENCICLOPEDIA WEB INFORMATICA SOBRE

FUNCIONES Y PROCEDIMIENTOS DE LENGUAJES DE

PROGRAMACION ORIENTADA A LA IMPLEMENTACION

DE E-LEARNING”

Proyecto #17

TESIS DE GRADO

Previa a la obtención del Título de:

INGENIERO EN SISTEMAS COMPUTACIONALES

AUTOR: CARLOS ANTONIO ZAMBRANO IZQUIERDO

TUTOR: ING. XAVIER LOAIZA

GUAYAQUIL – ECUADOR

2010

Page 2: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

2

Guayaquil, 11 de octubre del 2010

APROBACION DEL TUTOR

En mi calidad de Tutor del trabajo de investigación, “Enciclopedia Web Informática

Sobre Funciones y Procedimientos de Lenguajes de Programación Orientada a la

Implementación de E-Learning” elaborado por el Sr. Carlos Antonio Zambrano

Izquierdo, egresado de la Carrera de Ingeniería en Sistemas Computacionales,

Facultad de Ciencias Matemáticas y Físicas de la Universidad de Guayaquil, previo a la

obtención del Título de Ingeniero en Sistemas, me permito declarar que luego de haber

orientado, estudiado y revisado, la Apruebo en todas sus partes.

Atentamente

………………………………….

Ing. XAVIER LOAIZA

TUTOR

Page 3: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

3

DEDICATORIA

Todo esfuerzo tiene su recompensa, cuando

uno cae se levanta y sigue, por eso, mi trabajo

es dedicado a todas las personas quienes su

vida se base en la perseverancia y actitud.

Page 4: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

4

AGRADECIMIENTO

Agradezco a Dios sobre todas las cosas, a mis

padres y hermanos quienes son mi ejemplo de

superación y agradezco también a mis

compañeros de tesis que supieron trabajar en

equipo para alcanzar la meta planteada.

Page 5: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

5

TRIBUNAL DE GRADO

Ing. Frenando Abad Montero Ing. Juan Chanabá Alcócer

DECANO DE LA FACULTAD DIRECTOR

CIENCIAS MATEMATICAS Y FISICAS

Ing. Xavier Loaiza Ing.

TUTOR PROFESOR DEL ÁREA - TRIBUNAL

AB. Juan Chávez A.

SECRETARIO

Page 6: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

6

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS

CARRERA DE INGENIERIA EN SISTEMAS

COMPUTACIONALES

“ENCICLOPEDIA WEB INFORMATICA SOBRE

FUNCIONES Y PROCEDIMIENTOS DE LENGUAJES DE

PROGRAMACION ORIENTADA A LA IMPLEMENTACION

DE E-LEARNING”

RESUMEN

El internet es una gran herramienta para la búsqueda de información, todo al

instante y todo detallado, pero a su vez todo un poco desorganizado, el estudiante

que está aprendiendo a programar, empieza conociendo lo básico de cualquiera

que sea el lenguaje que esté usando, con el tiempo tendrá que ir perfeccionando

su técnica de desarrollo y dependiendo de los procesos que esté desarrollando ,

tendrá que utilizar un sin número de funciones o procedimientos que dicho lenguaje

de programación le facilite para su uso.

El estudiante tendrá que aprender a usar esas funciones o procedimientos, pero,

¿qué ocurre cuando no las conoce o no las sabe utilizar?, hay muchos libros de

programación en las bibliotecas, pero muy pocos “manuales de bolsillo” que le

indiquen las funciones, su sintaxis, su formato o tal vez ejemplos de su uso. Es ahí

cuando el estudiante o profesional pierde un tiempo valioso en la búsqueda de

información cuando ese tiempo lo puede utilizar en implementar la misma.

Autor: Carlos A. Zambrano Izquierdo

Tutor: Ing. Xavier Loaiza

Page 7: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

7

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS

CARRERA DE INGENIERIA EN SISTEMAS

COMPUTACIONALES

ENCICLOPEDIA WEB INFORMATICA SOBRE FUNCIONES

Y PROCEDIMIENTOS DE LENGUAJES DE

PROGRAMACION ORIENTADA A LA IMPLEMENTACION

DE E-LEARNING

Proyecto de trabajo de grado que se presenta como requisito para optar por el título de

INGENIERO EN SISTEMAS COMPUTACIONALES

Auto: Carlos Antonio Zambrano Izquierdo

C.I.: 0916634264

Tutor: Ing. Xavier Loaiza

Guayaquil, octubre de 2010

Page 8: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

8

CERTIFICADO DE ACEPTACIÓN DEL TUTOR

En mi calidad de Tutor del Primer Curso de Fin de Carrera, nombrado por el

Departamento de Graduación y la Dirección de la Carrera de Ingeniería en Sistemas

Computacionales de la Universidad de Guayaquil,

CERTIFICO:

Que he analizado el Proyecto de Grado presentado por el egresado Carlos

Antonio Zambrano Izquierdo, como requisito previo para optar por el título de

Ingeniero cuyo problema es:

Enciclopedia Web Informática Sobre Funciones y Procedimientos de Lenguajes de

Programación Orientada a la Implementación de E-Learning.

Considero aprobado el trabajo en su totalidad.

Presentado por:

Carlos Antonio Zambrano Izquierdo _____0916634264_____

Apellidos y Nombres completos Cédula de ciudadanía N°

Tutor: __Ing. Xavier Loaiza________

Guayaquil, octubre de 2010

Page 9: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

9

INDICE GENERAL

Caratula. 1

Aprobación del tutor. 2

Dedicatoria. 3

Agradecimiento. 4

Firmas del Tribunal de Grado. 5

Resumen. 6

Certificado de aceptación del tutor. 8

Indice General. 9

Indice de gráficos. 11

Introducción. 12

CAPITULO I. “EL PROBLEMA”. 13

1.1. Ubicación del problema en un contexto. 13

1.2. Situación conflicto, nudos críticos. 14

1.3. Causas del problema, Consecuencias. 14

1.4. Delimitación del problema. 15

1.5. Formulación del problema. 15

1.6. Evaluación del problema. 15

1.7. Objetivos de la investigación 17

1.7.1. Objetivos Generales. 17

1.7.2. Objetivos Especificos. 17

1.8. Alcances de la investigación. 18

1.9. Justificación e Importancia de la investigación. 19

Page 10: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

10

CAPITULO II. “MARCO TEORICO”. 20

2.1. Antecedentes del estudio. 20

2.2. Fundamentación Teorica. 20

2.2.1. Conceptos Utilizados. 20

2.2.2. Arquitectura del Proyecto. 21

2.2.3. Estudio de Factibilidad. 24

2.2.3.1. Factibilidad Operacional 24

2.2.3.2. Factibilidad Teorica. 25

2.2.3.3. Factibilidad Económica. 25

2.3. Fundaenteción legal. 26

2.4. Hipotesis, preguntas a contestarse. 27

2.5. Variables de la investigación. 28

2.6. Definiciones conceptuales. 28

CAPITULO III. “METODOLOGIA” 30

3.1. Modalidad de la investigación. 30

3.2. Tipo de investigación. 30

3.3. Instrumentos de recolección de datos. 31

3.4. Procesamientos de la investigación. 31

3.5. Recolección de la inforación. 33

CAPITULO IV. “MARCO ADMINISTRATIVO”. 34

4.1. Cronograma. 34

4.2. Presupuesto. 39

Referencias Bibliográficas. 40

Page 11: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

11

INDICE DE GRAFICOS

Pág.

GRAFICO 1.

Arquitectura n Capas 22

GRAFICO 2.

Arquitectura AJAX 23

GRAFICO 3.

Arquitectura AJAX Tiempos 23

GRAFICO 4.

Arquitectura Elearning 24

Page 12: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

12

INTRODUCCIÓN

En la actualidad las personas por debido al desarrollo de sus actividades laborales

disponen de muy poco tiempo para dedicarse al enriquecimiento profesional por ese

motivo optamos por el uso del modelo de estudios a distancia E-Learning, el cual

enfoca muchos aspectos funcionales que se pueden desarrollar de una manera

progresiva a tal punto de llegar a ser una herramienta eficiente, fuerte y estable para

el alumnado de la carrera, ayudado por documentación en línea y apoyado con

tutores o profesores que estarán siempre respondiendo a cualquier inquietud del

mismo.

Mi proyecto a platearse es solucionar una necesidad específica al sistema,

enfocado a problemas que todo estudiante de Sistemas tiene al momento de aprender

una nueva plataforma o herramienta de programación.

Mi proyecto o propuesta de tesis la denominaré en el transcurso del desarrollo del

mismo como: “WikiFunciones”.

Con la flexibilidad que ofrece e-Learning, su Facilidad de acceso, sus bajos costos

y la reducción en tiempos de aprendizaje, hacen de este la mejor solución en para el

estudio no presencial.

Durante el desarrollo de este documento explicare como el modulo Wikifunciones

ayudara al estudiante en el aprendizaje y manejo de los diferentes lenguajes de

programación, sin la necesidad de navegar por un sin número de sitios web

desordenadamente hasta encontrar soluciones.

Page 13: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

13

CAPÍTULO I

EL PROBLEMA

“Enciclopedia Web Informática Sobre Funciones y Procedimientos de

Lenguajes de Programación Orientada a la Implementación de E-Learning"

1.1. UBICACIÓN DEL PROBLEMA EN UN CONTEXTO

El internet es una gran herramienta para la búsqueda de información, todo al instante

y todo detallado, pero a su vez todo un poco desorganizado, el estudiante que está

aprendiendo a programar, empieza conociendo lo básico de cualquiera que sea el

lenguaje que esté usando, con el tiempo tendrá que ir perfeccionando su técnica de

desarrollo y dependiendo de los procesos que esté desarrollando , tendrá que utilizar

un sin número de funciones o procedimientos que dicho lenguaje de programación le

facilite para su uso.

El estudiante tendrá que aprender a usar esas funciones o procedimientos, pero, ¿qué

ocurre cuando no las conoce o no las sabe utilizar?, hay muchos libros de

programación en las bibliotecas, pero muy pocos “manuales de bolsillo” que le

indiquen las funciones, su sintaxis, su formato o tal vez ejemplos de su uso. Es ahí

cuando el estudiante o profesional pierde un tiempo valioso en la búsqueda de

información cuando ese tiempo lo puede utilizar en implementar la misma.

Page 14: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

14

1.2. SITUACIÓN CONFLICTO NUDOS CRÍTICOS

El problema es no obtener de manera rápida en un mismo lugar y al alcance del

usuario que está conectado, toda la gama de información de funciones y

procedimientos de los lenguajes de programación actuales, con información

suficiente que satisfaga las necesidades de los programadores y que al mismo

tiempo permita consultar a más personas en una gran comunidad de

desarrolladores sobre el uso de las mismas.

Herramientas como .NET, IIS, son exclusivas de su fabricante lo cual nos limita

en parte el acceso a sus manuales en línea.

Otras herramientas como PHP, JAVA. Son en ocasiones más difícil de encontrar

ejercicios y notas sobre sus funciones y procedimientos. Y lo mas critico es no

poder encontrar en un mismo sitio toda esa información.

1.3. CAUSAS Y CONSECUENCIAS DEL PROBLEMA

Las consecuencias más notorias:

El alumno no cumple con sus tareas.

Perdida del interés por el lenguaje.

Poca importancia por la programación.

Pérdida de tiempo valioso en la búsqueda de un lugar a otro por una

función de un tema especifico.

Page 15: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

15

1.4. DELIMITACIÓN DEL PROBLEMA

Este sitio Web tendrá el acceso de los estudiantes pertenecientes a la Carrera de

Ingeniería en Sistemas de la Universidad de Guayaquil, los cuales formarán una

comunidad que apoyara al incremento de información a “Wikifunciones”.

Se busca con esto alcanzar un mayor grado de aprendizaje por parte del estudiante,

obteniendo mejoras en el desarrollo de sistemas y crear un sentido de colaboración

entre ellos. Agregar o editar datos dentro de la Wiki ayudara a incrementar

conocimientos al sistema y que el alumnado pueda interactuar con un tutor o sus

compañeros para entregar ayudas o soluciones en los códigos que aquí en la Wiki

pudieran encontrar.

1.5. FORMULACIÓN DEL PROBLEMA

El problema es no obtener de manera rápida, en un mismo lugar, clasificado y

ordenado, toda la gama de información de funciones y procedimientos de los

distintos lenguajes de programación actuales, tanto que se le dificulte al estudiante

realizar investigaciones eficientes para solucionar problemas lógicos o estructurales

en códigos de programación en lenguajes algo confusos.

1.6. EVALUACIÓN DEL PROBLEMA

Los aspectos generales de evaluación son:

Delimitado: El sitio web será montado en una plataforma e-learning el cual será

accedido por los alumnos de la Carrera de Ingeniería de Sistemas y contemplará los

lenguajes más comunes. La base de datos tendrá lenguajes actuales como: AJAX,

JAVA, JAVASCRIPT, HTML, PHP, ORACLE, SQL, VISUAL BASIC .NET, etc.

Page 16: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

16

y otros más antiguos como: C++, COBOL, FOXPRO/VISUAL FOXPRO, VISUAL

BASIC, etc.

Claro: desarrollar una solución web, que permita incorporar en un mismo sitio, de

forma ordenada y clasificada, toda una enciclopedia de funciones y procedimientos

de programación que abarque los lenguajes que actualmente están en el mercado

informático y que el estudiante este utilizando para sus clases universitarias.

Relevante: Mantener ordenada la información en la plataforma e-learning hace más

fácil, flexible, rápida y eficiente la manera de ejecutar sistemas que requieran de

códigos difíciles, los alumnos son los propios ejecutores de una buena información.

Como ejemplo tenemos la Wikipedia, el cual se basa en publicaciones de los

mismos lectores que cumpliendo una serie de simples configuraciones han

mantenido un portal de buena calidad de información.

Factible: El sistema se basa en lenguaje PHP lo cual lo hace flexible en desarrollo y

de acceso gratuito, los alumnos pueden leer la información y al mismo tiempo

pueden retroalimentar la base de funciones agregando nuevas o editando las ya

existentes.

Variables: Ias variables identificadas en el desarrollo son: los alumnos de CISC, las

materias que hagan referencia a lenguajes de programación y el internet.

Page 17: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

17

1.7. OBJETIVOS

1.7.1. Objetivo General

Desarrollo de un Sitio Web que permita obtener de manera ordenada y

clasificada, toda información referente a funciones y procedimientos de los

distintos lenguajes de programación y además deberá permitir el ingreso, edición

o eliminación de los textos compartidos por los múltiples usuarios registrados.

1.7.2. Objetivos específicos

Para cumplir con el objetivo general se plantea lo siguiente:

1. Permitir el acceso al sitio web por registro de usuario.

2. Establecer distintos métodos de búsqueda.

3. Diseñar una interface para el ingreso y edición de textos que permitan

adicionar información al sitio web.

4. Elaborar un control del historial de cambios en la información y

seguridad administrativa sobre los usuarios.

5. Ofrecer una interface que permita compartir preguntas y respuestas sobre

los datos mostrados por el sitio web.

Page 18: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

18

1.8. ALCANCES

Para cumplir con los objetivos específicos se plantean los siguientes alcances por

cada uno:

Los perfiles de usuario identificarán los accesos a la aplicación,

todos los accesos seran para vizualización y edición pero solo el

acceso de profesores serán de tipo administrativo.

Se integrará una opción de búsqueda de información, clasificada

por: nombres de los lenguajes de programación, iniciales

alfanuméricas y un casillero de búsqueda por cualquier tipo de

texto ingresado.

Los usuarios que quieran colaborar con más información para el

sitio, tendrán una interface que les ayudara muy fácilmente a

ingresar datos que podrán ser editados por otros usuarios.

La información mostrada tendrá contenido como: Lenguaje de

programación al que pertenecen, nombre del objeto, nombre de la

función o método, descripción, sintaxis, variables, descripción de

variables y ejemplos de uso.

Para mantener un control sobre la información que entra al sitio, el

usuario que ingrese o edite textos, podrá mantener un historial

sobre los cambios y ediciones previas a la misma.

Page 19: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

19

El administrador podrá bloquear a usuarios que no cumplan con las

normas y reglamentos o que hayan sido denunciados por otros

usuarios, todo bajo una revisión del historial.

Cada función que se muestre en el sitio web tendrá un pequeño

espacio donde ingresar comentarios, notas o preguntas.

1.9. JUSTIFICACION E lMPORTANCIA

La aplicación Web tiene el propósito de brindarle al estudiante una herramienta de

información clasificada y ordenada, en la cual poder encontrar una extensa gama de

funciones y procedimientos de lenguajes de programación actuales y que estén

siendo usados como herramientas de aprendizaje en su nivel de estudio.

Los Estudiantes tendrán acceso desde el aula virtual y de los demás módulos de E-

learning, facilitara la enseñanza del profesor y ayudara al estudiante a tener

respuestas a sus inquietudes.

La terminología WIKI es utilizada para sitios web cuyas páginas pueden ser

editadas por múltiples voluntarios a través del navegador web. Los usuarios pueden

crear, modificar o borrar un mismo texto que comparten.

WIKIFUNCIONES es parte de proyecto E-Learning para la Carrera de Ingeniería en

Sistemas Computacionales de La Universidad de Guayaquil y será desarrollado

como una aplicación WEB 2.0, utilizando herramientas de desarrollo web y

tecnología AJAX.

Page 20: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

20

CAPÍTULO II

MARCO TEÓRICO

2.1. ANTECEDENTES DEL ESTUDIO

Proyectos similares podemos encontrar en la web, por ejemplo:

http://php.net/manual/es/ (manuales de php), y la más conocida http://es.wikipedia.org

(enciclopedia mundial), pero se quiere juntar todo esto en un solo sitio, crear una

enciclopedia de funciones no solo de php, sino de c++, .net, etc. Un lugar donde se

encuentren todos los lenguajes y que obtenga las funcionalidades básicas de una wiki.

Para delimitar un poco se planeo aplicarlo en el modelo de estudios e-learning de la

carrera de Ing. De sistemas y así limitar el acceso solo a los estudiantes y profesores que

por medio de un logoneo puedan acceder a la información.

2.2. FUNDAMENTACIÓN TEÓRICA

2.2.1 Conceptos Utilizados

Wiki: Es una forma de sitio Web en donde se acepta que usuarios creen, editen,

borren o modifiquen el contenido de una página web, de una forma interactiva,

fácil y rápida. Dichas facilidades hacen de una wiki una herramienta efectiva

para la escritura colaborativa” (wikipedia) La utilización más conocida de los

wiki es wikipedia, la gran enciclopedia libre de Internet. [1]

____________

[1] Fuente: Pedro Cuesta Morales “Aplicaciones Educativas de la Web 2.0”

desde http://www.slideshare.net/pedrocuesta/wikis-70922

Page 21: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

21

eLearning: El eLearning es la utilización de las nuevas tecnologías y de Internet

para mejorar la calidad del aprendizaje y facilitar el acceso a la educación y la

formación. “En la sociedad del conocimiento las nuevas Tecnologías de la

Información y la Comunicación (TIC) desempeñan un papel esencial. Como

resultado de la aplicación de esas nuevas tecnologías al ámbito de la educación y

de la formación surge el e-learning, que según definición de la Comisión

Europea es “la utilización de las nuevas tecnologías multimediales y de Internet

para mejorar la calidad del aprendizaje facilitando el acceso a recursos y

servicios, así como los intercambios y la colaboración a distancia”.[2]

2.2.2 Arquitectura del Proyecto

Aunque existen muchas variaciones posibles, una aplicación web está

normalmente estructurada como una aplicación de n-capas. En su forma más

común, el navegador web ofrece la primera capa y un motor capaz de usar

alguna tecnología web dinámica (ejemplo: PHP, Java Servlets o ASP) constituye

la capa intermedia. Por último, una base de datos constituye la última capa.

El navegador web manda peticiones a la capa de en medio que ofrece servicios

valiéndose de consultas y actualizaciones a la base de datos y a su vez

proporciona una interfaz de usuario Internet.

Se procederán a crear las capas necesarias y cada una realizara los

____________

[2] Fuente: Aula 10 en Español

desde http://www.auladiez.com/didactica/e-learning-01.html

Page 22: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

22

procedimientos para los cuales han sido creadas. En la capa externa los

componentes sirven a las operaciones de interfaz del cliente. En la capa interna,

los componentes realizan operaciones de interfaz del sistema. Las capas

intermedias proporcionan servicios de utilidad y funciones del software de

aplicaciones.

Gráfico.1 Arquitectura N Capas

Fuente: http://www.google.com

Apache PHP,

Tomcat

Page 23: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

23

Gráfico.2 Arquitectura Modelo AJAX

Fuente: http://www.google.com

Gráfico.3 Arquitectura Modelo Ajax “Tiempos”

Fuente: http://www.google.com

Page 24: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

24

Gráfico.4 Modelo E-Learning

Fuente: http://escuela.med.puc.cl/publ/arsmedica/ArsMedica15/EducacionMedicaDistancia.html

2.2.3 Estudio de Factibilidad

2.2.3.1 Factibilidad operacional

El módulo WikiFunciones, será desarrollado en una interfaz sencilla,

de fácil uso, de tal forma que su utilidad sea fácil de aprender y de

manejar. De esta forma evitaríamos que los alumnos se sientan

incómodos con el sistema y no muestren interés alguno por utilizarlo.

Todos los módulos del sistema eLearning estarán interconectados,

dando mayor interactividad con el usuario como si se tratase de una

aplicación de escritorio.

Page 25: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

25

2.2.3.2 Factibilidad Técnica.

Para el desarrollo de WikiFunciones se investigaron varias

herramientas para aplicaciones RIA, y Open Source.

Una herramienta que nos ayudará en desarrollar aplicaciones es

AJAX (JavaScript Asíncrono y XML), debido a que los códigos de

Ajax son completamente transparentes para los desarrolladores de

aplicaciones web. Por lo tanto, los usuarios finales obtienen una

interacción y respuesta similar a las de una aplicación de escritorio,

mientras que la complejidad del desarrollo es similar a la que tendría

la codificación de aplicaciones de escritorio.

En cuanto a las otras herramientas se emplearán tales como

Dreamweaver para el desarrollo del sistema, APACHE como servidor

de aplicaciones, el lenguaje PHP del lado del servidor y My SQL

como motor de base de datos.

Cabe indicar que los componentes y herramientas mencionada son

compatibles con los diferentes navegadores del mercado, entre los

principales: Internet Explorer, Firefox y Chrome entre otros.

2.2.3.3 Factibilidad Económica.

Como resultado del análisis costo/beneficio del sistema eLearning

modulo WikiFunciones, concluimos que el análisis, diseño y

desarrollo no representará costo alguno.

Los beneficios son de satisfacción ya que lograr implementar el

modulo en la carrera de Sistemas es el primera meta y lograr la

aceptación total de los alumnos es lo primordial.

Page 26: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

26

Para realizar un control de marketing aplicaremos 4 características de

control:

a. Flujo: Estado de interactividad y valor añadido que espera ver el usuario

al entrar a nuestra página.

b. Funcionalidad: Se refiere a una web atractiva, con navegación clara y

útil para el usuario.

c. Feedback: Es construir una relación con el cliente basada en sus

necesidades para personalizar en función de esto la página después de

cada contacto.

d. Fidelización: Establecer un diálogo personalizado con los alumnos, el

tutor es el responsable de mantener buena comunicación interna en el y

su alumnado.

2.3. FUNDAMENTACIÓN LEGAL

El desarrollo total del sistema se ampara bajo las leyes de desarrollo de Software Libre

“Open Source” debido a que todas las herramientas utilizadas para su desarrollo se

basan en dicha ley.

“La palabra "libre" en nuestro nombre no se refiere al precio; se refiere a la libertad.

Primero, a la libertad de copiar y redistribuir un programa a tus vecinos, para que ellos

al igual que tu, lo puedan usar también. Segundo, a la libertad de cambiar un programa,

así podrás controlarlo en lugar que el programa te controle a ti; para esto, el código

fuente tiene que estar disponible para ti.”[3]

____________

[3] Fuente: Free Software Foundation, 1986

Desde Volumen 1, numero 1, pagina 8 : http://www.gnu.org/bulletins/bull1.txt

Page 27: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

27

En referencia a la utilización de “Código Libre”, tenemos en el Ecuador la siguiente ley:

Decreto NO

1014 firmado el 10 de abril del 2008 por el Presidente del Ecuador Rafael

Correa Delgado decreta:

Art1. Establecer como política publica para las Entidades de la Administración

Publica Central la utilización de Software Libre en sus sistemas y equipamientos

informáticos.

Art2. Se entiende por Software Libre, a los programas de computación que se

pueden utilizar y distribuir sin restricción alguna, que permitan su acceso a los

códigos fuentes y que sus aplicaciones puedan ser mejoradas.

Estos programas de computación tienen las siguientes libertades:

a) Utilización del programa con cualquier propósito de uso común

b) Distribución de copias sin restricción alguna.

c) Estudio y modificación del programa (Requisito: código fuente disponible)

d) Publicación del programa mejorado (Requisito: código fuente disponible).

2.4. HIPÓTESIS PREGUNTAS A CONTESTARSE

La hipótesis a demostrar es la siguiente: ”Puede el estudiante mejorar su aprendizaje

con el ahorro de tiempo, teniendo toda las características y funciones de programación

organizadas en un solo sitio.”

Con esto quiero demostrar que montar una herramienta de este tipo en un sitio web es

una alivio al estudiante cuando le llega la hora de buscar y buscar en la Red la

información que puede encontrar en muchos sitios distintos. Ademas, demostrar que

Page 28: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

28

esto forma parte del la flexibilidad de aprendizaje que nos brinda la plataforma

eLearning.

2.5. VARIABLES DE LA INVESTIGACIÓN

Aprendizaje. Acto de aprender algo.

Tiempo. Medida convencional del desarrollo de algo, como los segundos, las

horas, los años, los siglos, etc.

Organización. Acto de organizar u organizarse.

Eficacia. Capacidad para producir un efecto o resultado deseado.

2.6. DEFINICIONES CONCEPTUALES

Sobre el Aprendizaje:

El conocimiento se desarrolla (crece, se incrementa) con el apoyo de la

investigación. Por tal motivo necesita apoyo el cual lo recibirá con el sistema,

dándole la facilidad de búsqueda, aumentando su tiempo de desarrollo.

Sobre el Tiempo:

Unos de los factores en la navegación web es el tiempo, el cual se puede medir por

velocidad de transmisión de datos, procesador, memoria, etc. Además de estos

factores tenemos el acceso a la información puntual, el cual no siempre se encuentra

muy fácilmente.

Page 29: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

29

Sobre la Organización.

Es muy importante para lograr mejores resultados. Obtener información organizada

permite ser más ágiles en la clasificación de lo que se necesita utilizar.

Sobre la Eficacia.

La eficacia es la capacidad de alcanzar el efecto que espera o se desea tras la

realización de una acción. Además es el resultado que queremos alcanzar con el

desarrollo del proyecto.

Sobre eLearning.

El eLearning es la utilización de las nuevas tecnologías y de Internet para mejorar la

calidad del aprendizaje y facilitar el acceso a la educación y la formación. “En la

sociedad del conocimiento las nuevas Tecnologías de la Información y la

Comunicación (TIC) desempeñan un papel esencial. Como resultado de la

aplicación de esas nuevas tecnologías al ámbito de la educación y de la formación

surge el e-learning, que según definición de la Comisión Europea es “la utilización

de las nuevas tecnologías multimediales y de Internet para mejorar la calidad del

aprendizaje facilitando el acceso a recursos y servicios, así como los intercambios y

la colaboración a distancia”.

Sobre Lenguajes de Programación.

Lenguaje artificial que puede ser usado para controlar el comportamiento de una

máquina, especialmente una computadora. Estos se componen de un conjunto de

reglas sintácticas y semánticas que permiten expresar instrucciones que luego serán

interpretadas.

Page 30: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

30

CAPÍTULO III

METODOLOGÍA

DISEÑO DE LA INVESTIGACIÓN

3.1. MODALIDAD DE LA INVESTIGACION

Este proyecto tiene modalidad de campo. En la investigación de campo los datos

son recogidos de primera mano por el propio investigador, lo hace en la propia

realidad donde ocurre el fenómeno, fuera del espacio del laboratorio donde tiene

poco o casi ningún control sobre las variables.

3.2. TIPO DE INVESTIGACION

El tipo de investigación será por la Factibilidad, ya que el proyecto permitirá

solucionar un problema que se ha ido dando durante mucho tiempo, aunque este

problema sea invisible, está presente en el trabajo diario de un programador o un

estudiante de sistemas. Como característica:

Actividades y recursos necesarios para su ejecución.

Se cuenta con el personal que ejecutara el sistema, estos serán los alumnos, se

cuenta con la tecnología necesaria y entre las actividades tenemos la continua

alimentación de información por parte de los propios alumnos.

Page 31: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

31

3.3. INSTRUMENTOS DE RECOLECCIÓN DE DATOS

Las técnicas de recolección de datos aplicadas en la investigación de este proyecto

fueron:

El internet: Es la herramienta numero uno para la obtención de información relevante

en el desarrollo del proyecto, de aquí obtendremos ideas, conversaciones, ayudas, y

herramientas para la elaboración.

La encuesta: la encuesta cuyo objeto es de interactuar de forma directa con el recurso

humano, para obtener opiniones importantes. La utilización de esta técnica se realizó a

través de un foro electrónico montado en Facebook

(http://www.facebook.com/group.php?gid=167849896562971&v=app_2373072738#!/t

opic.php?uid=167849896562971&topic=202) elaborado a fin de recoger las ideas,

comentarios o sugerencias de un número de integrantes que perteneces a la misma

carrera e interés, en este caso la población es incontable porque puede ir creciendo

como no.

3.4. PROCEDIMIENTOS DE LA INVESTIGACIÓN

En el estudio total para la implementación de una Biblioteca virtual de programación

que será parte de la plataforma eLearning, se fijo los siguientes pasos:

El problema:

Ubicación del problema en un contexto

Situación conflicto nudos críticos

Page 32: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

32

Causas y consecuencias del problema

Delimitación del problema

Formulación del problema

Evaluación del problema

Objetivos de la Investigación

Justificación o importancia de la investigación

Marco teórico:

Antecedentes del estudio.

Fundamentación teórica.

Arquitectura del proyecto

Estudio de Factibilidad.

Fundamentación legal.

Hipótesis.

Variables de la investigación.

Módulos disponibles en Opendomo.

Metodología:

Diseño de Investigación (Tipo de Investigación)

Instrumentos de recolección de datos

Procedimiento de la Investigación

Page 33: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

33

3.5. RECOLECCIÓN DE LA INFORMACIÓN

Para la recolección de información se utilizo las técnicas de:

La Encuesta. La cual se realizo de forma electrónica, creado foros de discusión en el

portal de Facebook, agregando solo a alumnos de la Carrera de Sistemas.

La Observación. Esta técnica nos permita analizar a los actores, los lugares, las

herramientas que existen en la actualidad y la manera en que se están utilizando.

Page 34: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

34

CAPÍTULO IV

MARCO ADMINISTRATIVO

4.1. CRONOGRAMA

Page 35: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

35

Page 36: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

36

Page 37: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

37

Page 38: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

38

Page 39: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

39

4.2. PRESUPUESTO

El presupuesto estimado de gastos en el desarrollo del proyecto podemos describir los

siguientes:

Cuadro No. 1

Detalle de egreso del proyecto

Equipos de Computación $0

Herramientas de desarrollo $0

Internet $115 / $23 mensuales

Licencias de software $0

Servidores de Aplicación $0

Transporte a tutorías y reuniones $50

Total $165

Horas de desarrollo 720 h

Impresión, anillado, empastado de

documentación

$100

Elaboración: Carlos A. Zambrano Izquierdo

Fuente: Grupo de Desarrollo del Proyecto eLearning.

Ingresos: La elaboración del proyecto no tuvo ningún financiamiento externo por tal

motivo todos los gastos fueron dinero propio.

Egresos: En el cuadro No. 1 observamos el desgloce de los egresos en la elaboración

del proyecto, como podemos observar, en software es cero dólares, esto debido a la

utilización del Código Libre.

Page 40: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

40

REFERENCIAS BIBLIOGRÁFICAS

C++ manual de bolsillo, Alan C. Plantz, Mexico, editorial: ADDISON-

WESLEY.

Programacion Basica de FoxPro, Ramon M.Chordá, editorial: ADDISON-

WESLEY.

Pedro Cuesta Morales “Aplicaciones Educativas de la Web 2.0”, desde

http://www.slideshare.net/pedrocuesta/wikis-70922

Aula 10 en Español, desde http://www.auladiez.com/didactica/e-learning-

01.html

Concepto elearning, desde http://www.maestrosdelweb.com/editorial/elearning/

Concepto de WIKI, desde http://es.wikipedia.org/wiki/Wiki

Decreto 1014. Decreto de la ley de la Republica del Ecuador, desde

http://www.drwsoluciones.net/2008/04/11/decreto-1014-software-libre-en-

ecuador

Page 41: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

41

ANEXOS

Page 42: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

42

Panel

Principal en

modo

Usuario

Repositorio de FuncionesUltimas Funciones

Ingresadas

Consulta de

existencia de

funcionP1. Consultas de

Datos

Busqueda de Funcion

Por metodo de busqueda

Repositorio de

Lenguajes

De Programación

Detalles para

Control de

nombres de

lenguajes

Repositorio de Preguntas y Repuestas

Detalle de funcion para

La busqqueda

Registros de

Preguntas y

respuestas encontradas

por funcion

DFD – Nivel 0 – [ WK2 ] – Entrada al Sistema en Modo Administrador

Resultado de

Busqueda

individual

Busqueda de Funcion

individual

P2. Ingreso o

Edicion de

Funciones

Peticion de

Ingreso Nuevo

Denuncias

Ingreso de

Pregunta

Escritura de Preguntas

Segun registro de

Funcion presentada

Almacenaje de

nueva Pregunta

Peticion de

Edicion

Aplica

Denuncia

Envio de

Datos

Editados

Detalles para el Control de

nombres de lenguajes

Revision de

Denuncias

Registros de

funciones

encontradas

Aplicación o

negación de

Denuncias

Devuelve

Denuncias

P3. Mantenimiento

De Datos

Mostrar

Modulo

edita

Muestra

Envio de

Datos

Editados

Envio de

Datos

para Editar

Page 43: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

43

Panel

Principal en

modo

Usuario

Repositorio de FuncionesUltimas Funciones

Ingresadas

Consulta de

existencia de

funcionP1. Consultas de

Datos

Busqueda de Funcion

Por metodo de busqueda

Repositorio de

Lenguajes

De Programación

Detalles para

Control de

nombres de

lenguajes

Repositorio de Preguntas y Repuestas

Detalle de funcion para

La busqqueda

Registros de

Preguntas y

respuestas encontradas

por funcion

DFD – Nivel 1 – [ WK2 ] – Entrada al Sistema en Modo Administrador

Resultado de

Busqueda

individual

Busqueda de Funcion

individual

Peticion de

Ingreso Nuevo

Denuncias

Ingreso de

Pregunta

Escritura de Preguntas

Segun registro de

Funcion presentada

Almacenaje de

nueva Pregunta

Peticion de

Edicion

Aplica

Denuncia

Envio de

Datos

Editados

Detalles para el Control de

nombres de lenguajes

Revision de

Denuncias

Registros de

funciones

encontradas

Aplicación o

negación de

Denuncias

Devuelve

Denuncias

Mostrar

Modulo

edita

Muestra

Envio de

Datos

Editados

Envio de

Datos

para Editar

Mantener

Lenguajes y

DatosMantenimiento

Historial de

Cargas

Mantenimiento

de Lenguajes

orden

orden

Ingreso o

Edicion de

Datos

Revisar WK3 – NIVEL 1

Page 44: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

44

Panel

Principal en

modo

Usuario

Repositorio de FuncionesUltimas Funciones

Ingresadas

Consulta de

existencia de

funcionP1. Consultas de

Datos

Busqueda de Funcion

Por metodo de busqueda

Repositorio de

Lenguajes

De Programación

Detalles para

Control de

nombres de

lenguajes

Registros de

funciones

encontradas

Repositorio de Preguntas y Repuestas

Detalle de funcion para

La busqqueda

Registros de

Preguntas y

respuestas encontradas

por funcion

DFD – Nivel 0 – [ WK3 ] – Entrada al Sistema en Modo Usuario

Resultado de

Busqueda

individual

Busqueda de Funcion

individual

P2. Ingreso o

Edicion de

Funciones

Peticion de

Ingreso Nuevo

Denuncias

Ingreso de

Pregunta

Escritura de Preguntas

Segun registro de

Funcion presentada

Almacenaje de

nueva Pregunta

Peticion de

Edicion

Envio de denuncia

Envio de

Datos

Editados

Detalles para el Control de

nombres de lenguajes

HistorialRegistro de

Historial

Denuncias

Devuelve

Denuncia

Page 45: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

45

Panel

Principal en

modo

Visitante

Repositorio de FuncionesUltimas Funciones

Ingresadas

Consulta de

existencia de

funcion

Busqueda de Funcion

por metodo de busqueda

Registros de

funciones

encontradas

Repositorio de Preguntas y Repuestas

Detalle de funcion para

La busqqueda

Registros de

Preguntas y

respuestas encontradas

por funcion

DFD – Nivel 1 – [ WK3 ] – Entrada al Sistema en Modo Usuario

Revisar

Resultados

Revision de

Funcion y

FAQ

Registro de

funcion

individual

Busqueda de Funcion

individual

Resultado de busqueda

Individual

Ingreso de

Pregunta

Escritura de Preguntas

Segun registro de

Funcion presentada

Almacenaje de

nueva Pregunta

Peticion de

Ingreso Nuevo

Denuncias

Peticion de

Edicion

Envio de denuncia

Envio de

Datos

Editados

Detalles para el

Control de

nombres de lenguajes

Repositorio de

Lenguajes

De Programación

Detalles para

Control de

nombres de

lenguajes

Ingreso o

Edicion de

Datos

P2.1.

Seguimiento de

ediciones y

Denuncias

Peticion de Seguimiento

HistorialRegistro de

Historial

Denuncias

Devuelve

Denuncia

Page 46: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

46

DFD – Nivel 2 – [ WK3 ] – P2.1: Seguimiento de ediciones y Denuncias

DenunciasEnvio de denuncia

Ingreso o

Edicion de

Datos

Peticion de Seguimiento

Historial

Registro de

Historial

Proceso de

seguimiento

y control de

usuarios

editores

Ingreso de

denunciado,

detalle

Denuncia

Recepcion de Registro de

Historial

Lecturas de

historiales

Envio de Registro de

Historial

Page 47: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

47

Datos de

Acceso

Examen Online

Datos del perfil

Solicitar

creación de

examen

Seleccionar

tipo de

Examen

Tipo de

examen

Asignación

de curso al

examen

Ingreso de

preguntas y

alternativas de

Examen Datos del

examen Real

Examen

Examen

Preguntas y

alternativas

Datos del examen

Orden de

asignación

Activar examen

al alumno o

grupo

Alumno

Orden de

activacion

Totalizar

respuestas

Orden de

creación

Orden de

activacion

Calificaciones

Calificación

examen

Mostrar

Calificaciones

examen Real

Obtener

resultado

s

Totales

Datos del

examen

Examen

Preguntas y

opciones

Alternativas

seleccionadas

Datos del examen No

Real

Clases

Online.com

ContraseñaModulo

Estudiante

Cargar las

Opciones del

Alumno

Selección de Tipo

de examen

Iniciar el

Examen Real

Crear Curso y

asignar a los

alumnos de ese

Curso

Registrarse

si es nuevo

Base1

Modulo

Profesor

Iniciar el examen

no Real

Examen

Preguntas y

opciones

Examen

Online

Aula Virtual

Repositorio Virtual

de Alumno

Calificaciones

Orden de

acceso

Orden de

acceso

Cargar las

Opciones del

Profesor

Llego la Hora de la

clase. Y comienza la

video Conferencia Podemos ver al

Profesor y su video

Explicativo

Se habilita la

Opción de hacer

la pregunta

Hacemos la

Pregunta por

chat Después de eso el

Profesor Responde

la Pregunta

Si no esta

habilitada la

opción de Hacer

Preguntas

Esperamos que

termine de preguntar

nuestro compañero

Termino la clase y se

Profesor se desconecta

Si no se

hacen

preguntas

Elegir

Profesor

Ver

Publicaciones

Revisar

Descargar

archivo

Cns Profesor

Elegir Semestre/

Materia

Cns Semestre/Materia

Administración de

Publicaciones

Subir

Informacion

Actualizar Registro y

Estados de Información

Publicada

Cns Información

Publicada

Eliminación de

Información

Publicada

Registrar Base de

DatosRepositorio Virtual

de Docente

Aula Virtual

Prendemos nuestra

Web Cam y

comenzamos la video

conferencia a la hora

fijada

Reproducimos nuestro

video y manejamos el

“Pausa” y el “Continuar”

dependiendo la

explicación

Si termina la clase el

Profesor se desconecta y

termina el Video explicativo

Salir

Salir

Si estamos en modo

de Pregunta, cualquier

estudiante puede

preguntar

El profesor cambia a

modo ocupado

mientras responde por

Medio del chat

Cuando Termina de

Responder pasa otra

vez de modo ocupado

a modo Pregunta

Si no

PreguntanSi Nadie

Mas

Pregunta

Si hay

otra

pregunta

Si

alguien

Pregunta

Si

No

Si desea seguir

descargando

Si desea

Salir

1

Si desea

Salir

1

Si desea Salir1

1

Si desea Salir2

Si desea Salir2

Si desea Salir2

2

Panel

Principal en

modo

Visitante

Repositirio

de

funciones

Consulta de

existencia de

funcion

P1. Consultas de

Datos

Panel

Principal en

modo

Usuario

Repositorio

de

funciones

Consulta de

existencia de

funcion

P1. Consultas de

Datos

P2. Ingreso o

Edicion de

Funciones

Peticion de

Ingreso Nuevo

Ingreso de

Pregunta

Escritura de Preguntas

Segun registro de

Funcion presentada

Peticion de

Edicion

Panel

Principal en

modo

Usuario

Consulta de

existencia de

funcion

P1. Consultas de

Datos

P2. Ingreso o

Edicion de

Funciones

Peticion de

Ingreso Nuevo

Ingreso de

Pregunta

Escritura de Preguntas

Segun registro de

Funcion presentada

Peticion de

Edicion

Revision de

Denuncias

Aplicación o

negación de

Denuncias

P3. Mantenimiento

De Datos

Mostrar

Modulo

Generar opciones de

búsqueda, descarga y

sugerencias

Consulta

y

descarga

Validar consulta y

descarga

Visualizar y

Descargar

Requerim

iento

validado

Cargar opciones de

Administrador

Adm

inis

trad

or

regi

stra

do

Actualizar base de

Documentos

Actualización

Almacenamiento de

Documentos

Adición o

Eliminación de

Documentos

Restringir

visualización y

descarga

Restricción

SALIR

Libro solicitado

Almacén de Links

Detalle

Links

Almacén de

opiniones y

sugerencias

Libros más

consultados

Registrar

automáticamente

Numero de visitas y

descargas

Reg

istr

o

auto

mát

ico

Descargas

Información restringida

Registrar opiniones y

sugerencias

sug

eren

cias

regi

stra

das

Petición Consulta

Administrador

bibliotecario

Registrar

AdministradorDatos

Administrador

Base

Administradores

Detalle

AdministradorBibliotecas

externas

Busqueda externa

Des

crip

ción

de

suge

renc

ias

Detalle de libros

Con

sulta

y

Des

carg

a N

o

Per

miti

da

Almacén

Restringido.

Det

alle

rest

ringi

do

Detalle

consultado

Gen

erac

ión

de

Link

s m

ás

usad

os

Procesar información

estadística

Req

uerim

ient

o

Est

adís

tico

Visualizar Estadístico

Estadístico

Salir

Biblioteca virtual

Datos de usuario

Consultar

Sugerencias

Visualizar

sugerenciasDetalle

sugerencias

Consulta

Sugerencia

Revisión de sugerencias

Salida y retorno

Salir

Salida y retorno

SALIR

SalirDetalle

estadístico

1

Gestionar

Digitalización de

documentos

Documento

Digitalizado

Datos del

documento

Biblioteca Física

Entrada al sistema de biblioteca

Page 48: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

48

Diagrama Entidad Relacion del Módulo “WikiFunciones”.

Page 49: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

49

Anexo B (librerías)

Cuadro 2.

Coneccion a la Base de Datos <?php class DB_mysql { /* variables de conexión */ var $BaseDatos; var $Servidor; var $Usuario; var $Clave; /* identificador de conexión y consulta */ var $Conexion_ID = 0; var $Consulta_ID = 0; var $Guardado_ID = 0; /* número de error y texto error */ var $Errno = 0; var $Error = ""; /* Método Constructor: Cada vez que creemos una variable de esta clase, se ejecutará esta función */ function DB_mysql(){ //$bd = , $host = , $user = , $pass = ) { include_once("config_ecisc.php"); $this->BaseDatos = $entorno["base"]; //$bd; $this->Servidor = $entorno["servidor"]; //$host; $this->Usuario = $entorno["usuario"]; //$user; $this->Clave = $entorno["contrasena"]; //$pass; } /*Conexión a la base de datos*/ //function conectar($bd, $host, $user, $pass){ function conectar(){ //if ($bd != "") $this->BaseDatos = $bd; //if ($host != "") $this->Servidor = $host; //if ($user != "") $this->Usuario = $user; //if ($pass != "") $this->Clave = $pass; // Conectamos al servidor $this->Conexion_ID = mysql_connect($this->Servidor, $this->Usuario, $this->Clave); if (!$this->Conexion_ID) { $this->Error = "Ha fallado la conexión."; return 0; } //seleccionamos la base de datos if (!@mysql_select_db($this->BaseDatos, $this->Conexion_ID)) { $this->Error = "Imposible abrir ".$this->BaseDatos ; return 0; } /* Si hemos tenido éxito conectando devuelve el identificador de la conexión, sino devuelve 0 */ return $this->Conexion_ID; } /* Ejecuta un consulta */ function consulta($sql = ""){ if ($sql == "") { $this->Error = "No ha especificado una consulta SQL"; return 0; } //ejecutamos la consulta $this->Consulta_ID = @mysql_query($sql, $this->Conexion_ID); if (!$this->Consulta_ID) { $this->Errno = mysql_errno(); $this->Error = mysql_error(); } /* Si hemos tenido éxito en la consulta devuelve el identificador de la conexión, sino devuelve 0 */ return $this->Consulta_ID;

Page 50: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

50

} /* Ejecuta un guardado de datos */ function guardar($sql = ""){ if ($sql == "") { $this->Error = "No ha especificado una consulta SQL"; return 0; } $this->Guardado_ID = @mysql_query($sql); if (!$this->Guardado_ID) { $this->Errno = mysql_errno(); $this->Error = mysql_error(); } return $this->Guardado_ID; } /* Ejecuta una actualización de datos */ function actualizar($sql = ""){ if ($sql == "") { $this->Error = "No ha especificado una consulta SQL"; return 0; } $this->Actualizar_ID = @mysql_query($sql); if (!$this->Actualizar_ID) { $this->Errno = mysql_errno(); $this->Error = mysql_error(); } return $this->Actualizar_ID; } /* este guarda*/ function eliminar($sql = ""){ if ($sql == "") { $this->Error = "No ha especificado una consulta SQL"; return 0; } $this->Eliminar_ID = @mysql_query($sql); if (!$this->Eliminar_ID) { $this->Errno = mysql_errno(); $this->Error = mysql_error(); } return $this->Eliminar_ID; } /* Devuelve el número de campos de una consulta */ function numcampos() { return mysql_num_fields($this->Consulta_ID); } /* Devuelve el número de registros de una consulta */ function numregistros(){ return mysql_num_rows($this->Consulta_ID); } /* Devuelve el nombre de un campo de una consulta */ function nombrecampo($numcampo) { return mysql_field_name($this->Consulta_ID, $numcampo); } /* Devuelve el un arreglo asociativo de datos */ function fetch_array(){ return mysql_fetch_array($this->Consulta_ID); } /* Devuelve currentnext de secuencia segun tabla especificada*/ //function getSecuencia($tabla){ // $consulta = $this->consulta("SELECT currentnext FROM ad_sequence where name = '".$tabla."'"); // while($resultados = $this->fetch_array()) // { return $resultados['currentnext'];} //} /* actualiza currentnext de secuencia segun tabla especificada*/ //function setSecuencia($tabla){

Page 51: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

51

// $consulta1 = $this->consulta("SELECT incrementno FROM ad_sequence where name = '".$tabla."'"); // while($resultados1 = $this->fetch_array()){ $num= $resultados1['incrementno'];} // $newCurrentNext = $this->getSecuencia($tabla) + $num ; // return $this->guardar("UPDATE ad_sequence set currentnext= ". $newCurrentNext." where name = '".$tabla."'"); //} /* Muestra los datos de una consulta */ function setCampos() { $arr=array(); for ($i = 0; $i < $this->numcampos(); $i++){ $arr[] = array("campos" => $this->nombrecampo($i)); } echo json_encode($arr); } function getRegistro() { $arr=array(); while ($row = mysql_fetch_row($this->Consulta_ID)) { $arr[] = array("de" => $row[0],"iva" => $row[1],"sc" => $row[2],"sb" => $row[3] ); } echo json_encode($arr); } /////////////////////////////////////////////////////////// function combos($sql) { $consulta1 = $this->consulta($sql); echo " <select name='cmbConces' id='comboConces' size='' style='width:100%' class='txtOrg'>"; while ($row = mysql_fetch_row($this->Consulta_ID)) { echo "<option value='".$row[1]."'>".$row[1]."</option>"; } echo "</select>"; } /////////////////////////////////////////////////////////// function comboImgs($sql,$id) { $consulta1 = $this->consulta($sql); echo " <select class='imagenes' id='combimg'".$id." size='' style='width:200px' onclick='muestraImg(this.value,$id)'>"; while ($row = mysql_fetch_row($this->Consulta_ID)) { echo "<option

value='".$row[1]."@".$row[0]."'>".$row[1]."</option>"; } echo "</select>"; } ////////////////////////////////////////////////////////////////////// function unDato($sql) { $consulta1 = $this->consulta($sql); while ($row = mysql_fetch_row($this->Consulta_ID)) { return $row[0]; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// function verconsulta($sql) { $consulta1 = $this->consulta($sql); $salida=""; while ($row = mysql_fetch_array($this->Consulta_ID)) { for ($i = 0; $i < $this->numcampos(); $i++){ $salida .= $row[$i].","; } $arre[] = array("regs" => $salida); $salida=""; } if($this->numregistros()!=0){ echo json_encode($arre); } else { $arre[] = array("regs" => "0"); return

json_encode($arre);} } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// function consultas_2($sql) { $consulta1 = $this->consulta($sql); $salida=""; while ($row = mysql_fetch_array($this->Consulta_ID)) { for ($i = 0; $i < $this->numcampos(); $i++){ $salida .= $row[$i]."¬"; } $arre[] = array("regs" => $salida); $salida=""; } if($this->numregistros()!=0){ echo json_encode($arre); } else { $arre[] = array("regs" => "0"); echo json_encode($arre);} } } //fin de la Clse DB_mysql ?>

Archivo: Clase_Mysql.inc.php

Elaboración: Carlos A. Zambrano I.

Page 52: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

52

Cuadro 3

Login al Sistema, Carga de Cookies <?php //esto es para decirle al cache de procesos del navegador que se desactive header("Cache-Control: no-store, no-cache, must-revalidate"); require ("clase_MySql.inc.php"); $miconexion = new DB_mysql ; $miconexion->conectar(); function quitar($mensaje) { $mensaje = str_replace("<","&lt;",$mensaje); $mensaje = str_replace(">","&gt;",$mensaje); $mensaje = str_replace("\'","'",$mensaje); $mensaje = str_replace('\"',"&quot;",$mensaje); $mensaje = str_replace("\\\\","\\",$mensaje); return $mensaje; } if(trim($_POST["nick"]) != "" && trim($_POST["password"]) != "" && trim($_POST["tipoUsuario"]) != ""){ $nickN = quitar($_POST["nick"]); $passN = md5($_POST["password"]); //quitar($_POST["password"]); $tipoN = quitar($_POST["tipoUsuario"]); $result; if ( $tipoN == "profesor" ){ $result = $miconexion->consulta("SELECT

password,nombres,apellidos FROM exa_profesor WHERE pro_identificacion='$nickN'"); }else if ( $tipoN == "alumno" ) { $result = $miconexion->consulta("SELECT

password,nombres,apellidos FROM exa_alumno WHERE alu_identificacion='$nickN'"); } else { $result = $miconexion->consulta("SELECT admin_password,admin_nombre,admin_apellido FROM bib_admin_bibliotecario WHERE bib_identificacion ='$nickN'"); }

if($row = mysql_fetch_array($result)){ if($row["password"] == $passN){ session_start(); $_SESSION["usNick"] = $nickN; $_SESSION["usPass"] = $passN; $_SESSION["usTipo"] = $tipoN; $_SESSION["usNoms"] = $row["nombres"]; $_SESSION["usApes"] = $row["apellidos"]; if($tipoN == "alumno") echo 1 ; else echo 2; header( 'Location: ../index.html' ); }else if($row["admin_password"] == $passN){ session_start(); $_SESSION["usNick"] = $nickN; $_SESSION["usPass"] = $passN; $_SESSION["usTipo"] = $tipoN; $_SESSION["usNoms"] = $row["admin_nombre"]; $_SESSION["usApes"] = $row["admin_apellido"]; if($tipoN == "alumno") echo 1 ; else echo 2; header( 'Location: ../index.html' ); }else { header( 'Location: login/login.php?error=La Contraseña es Incorrecta. !!!' ); mysql_free_result($result);} }else{ header( 'Location: login/login.php?error=El Número de Cédula Ingresado NO Existe. !!!' ); mysql_free_result($result); } }else{ header( 'Location: login/login.php?error=Los Datos están Incompletos para Autenticar. !!!' );} //mysql_close(); ?>

Archivo: ingresar.php

Elaboración: Carlos A. Zambrano I.

Cuadro 3

JavaScript del Sistema <script type="text/javascript" language="javascript"> function abrirMenu(){

Page 53: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

53

$("LstMenuVar").style.height='300px'; $("LstMenuVar").style.overflow='auto'; $("MenuFuncionesVariante").style.display='inline'; /*$("MenuFuncionesVariante").style.overflow='auto'; */ } //////////////////////////////////////////////////////////////////// function denunciar(id,tipo){ var url='../seguimientos/denunciar.php'; var param= "id="+id+"&tipo="+tipo; // "nick="+ $F("nick") +"&password="+$F("password"); //alert(param); return; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, //var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true, onSuccess: function(transport) {

$("menuDenuncias").innerHTML=transport.responseText; alert("Denuncia enviada."); }} ); } /*////////////////////////////////////////////////////////////////////////////////////////////////////*/ function portada(){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("LstMenuVar").style.display="none"; var url='buscador.php'; var param= ""; // "nick="+ $F("nick") +"&password="+$F("password"); //var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true, onSuccess: function(transport) { $('ladoDer').innerHTML = transport.responseText; }} ); } ////////////////////////////////////////////////////////////////////////////////////////////////////////// function contribucion(opEd,var0,var1,var2){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("LstMenuVar").style.display="none"; var idFunc; try { idFunc = $('idFunc').value; } catch(e) { idFunc = '0';} var url='../editor/editor.php'; var param= "opEd="+opEd+"&idFunc="+idFunc+"&var0="+var0+"&var1="+var1+"&var2="+var2 ; //alert(param); var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { $('ladoDer').innerHTML = transport.responseText; agregap(); }} ); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// function seguimientos(){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("LstMenuVar").style.display="none"; var url='../seguimientos/seguimientos.php'; var param= ""; // "nick="+ $F("nick") +"&password="+$F("password"); //var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true, onSuccess: function(transport) { $('ladoDer').innerHTML = transport.responseText; }} ); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// function historial(id){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("LstMenuVar").style.display="none"; var url='../seguimientos/historial.php';

Page 54: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

54

var param= "id="+id; // "nick="+ $F("nick") +"&password="+$F("password"); var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, //var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true, onSuccess: function(transport) { $('ladoDer').innerHTML = transport.responseText; }} ); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// function importante(){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("LstMenuVar").style.display="none"; var url='../importante/importante.php'; var param= ""; // "nick="+ $F("nick") +"&password="+$F("password"); //var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true, onSuccess: function(transport) { $('ladoDer').innerHTML = transport.responseText; }} ); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// function denuncias(){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("LstMenuVar").style.display="none"; var url='../seguimientos/denuncias.php'; var param= ""; // "nick="+ $F("nick") +"&password="+$F("password"); //var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true, onSuccess: function(transport) { $('ladoDer').innerHTML = transport.responseText; }} ); } ////////////////////////////////////////////////////////////////////////////////////////////////////////// function loading(letra){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='block'; $("capaLista").align='left'; $("capaLista").innerHTML="&nbsp;&nbsp;<img src='../../../../images/5.gif' width='58' height='16' alt='loading' />"; setTimeout("buscarDatos('"+letra+"')",600); } ////////////////////////////////////////////////////////////////////////////////////////////////////////// //function loading2(idLeng){ // setTimeout("buscarDatosFunciones('"+idLeng+"')",980); // } //function loading2_2(idLeng){ // setTimeout("buscarTodasFunciones('"+idLeng+"')",980); // } ///////////////////////////////////////////////////////////////////////////////////////////////////////// function loading3(text){ //if($("cmbTipo").value==0) {alert("Escoja una opcion del listado [Buscar en?]..");return;} //$("capaLista").align='left'; textoLimpio = text.replace(/^\s*|\s*$/g,""); if(textoLimpio==""){$("capaBusc").style.display="none";return;} $("capaLista").innerHTML=""; $("capaLista").style.display="none"; $("capaBusc").style.display="inline"; $("imagenBuscar").innerHTML="<img src='../../../../images/14.gif' width='15' height='15' alt='loading' />"; //if(text.length <=40 ) {$("capaBusc").innerHTML=text;} setTimeout("buscarDatosCB('1"+text+"')",600); //buscarDatosCB(text); } // buscarDatos() //*****************************************************************************************************************/ // activa y muestra busquedas de el buscador alfabetico function buscarDatos(letra){ url='buscar.php'; param="letra="+letra; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true,

Page 55: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

55

onSuccess: function(transport) { arrayRoles = transport.responseText.evalJSON(); $("capaLista").innerHTML=""; //$("capaLista").align='left'; var table = document.createElement('Table'); table.width='99%'; table.style.font="11px sans-serif"; table.border='0'; table.cellspacing="0"; table.cellpadding="0";

table.id="ListaDeLenguajes"; var tabBody = document.createElement('tbody'); var tabBody1 = document.createElement('tbody'); var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.setAttribute("colspan","2"); td1.innerHTML="<div style='float:left; color:#B1B1B1'>Lenguajes de

Programaci&oacute;n con inicial <b>"+letra+"</b>..</div><div style='float:right; cursor:pointer;'></div>"; tr.appendChild(td1); tabBody1.appendChild(tr); table.appendChild(tabBody1); var hayL=0; var hayF=0; /****************************************/ var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.width="600px"; var str =""; for(i=0;i<arrayRoles.length;i++) { if(arrayRoles[i].q3 == "L"){ str+="&nbsp;<a href='#'

onclick='javascript:buscarTodasFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'><b>"+ arrayRoles[i].q1+"</b></a>&nbsp;&nbsp;<b>-&nbsp;</b>";

//var td2 = document.createElement('TD'); //td1.innerHTML ="&nbsp;<a href='javascript:loading2_2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+

arrayRoles[i].q1+"</a>"; hayL++; } // fin de L } // fin FOR td1.innerHTML = str.substring(0,str.length-11); //td2.innerHTML ="&nbsp;&nbsp;<img src='../../../../images/5.gif' width='58' height='16' alt='loading'

style='display:none' id='"+arrayRoles[i].q2+"' />"; tr.appendChild(td1); //tr.appendChild(td2); tabBody.appendChild(tr); /****************************************************/ table.appendChild(tabBody); $("capaLista").appendChild(table); if( hayL == 0 ){ var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.innerHTML ="&nbsp;No hay Resultados...";

tr.appendChild(td1); var tBody1 = document.createElement('tbody'); tBody1.appendChild(tr); table.appendChild(tBody1); } //***************************************** F var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.setAttribute("colspan","2"); var tBody2 = document.createElement('tbody'); td1.innerHTML="<div style='float:left; color:#B1B1B1'>Funciones de

programaci&oacute;n con inicial <b>"+letra+"</b>..</div>"; tr.appendChild(td1); tBody2.appendChild(tr); table.appendChild(tBody2); str="<div style='width:800px; display:inline-block; overflow:visible'>"; var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.width="600px"; //var td2 = document.createElement('TD'); var tBody3 = document.createElement('tbody'); for(i=0;i<arrayRoles.length;i++) { if(arrayRoles[i].q3 == "F"){ //td1.innerHTML ="&nbsp;<a href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+

arrayRoles[i].q1+"</a>";

Page 56: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

56

str+= "&nbsp;<a href='#' onclick='javascript:buscarDatosFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'><b>"+ arrayRoles[i].q1+"</b></a>&nbsp;&nbsp;<b>-&nbsp;</b>";

//td2.innerHTML ="&nbsp;&nbsp;<img src='../../../../images/5.gif' width='58' height='16' alt='loading' style='display:none' id='"+arrayRoles[i].q2+"' />";

if (i%9 == 0) str +="<br />"; hayF++; } // fin de L } // fin FOR str+="</div>" td1.innerHTML = str; //.substring(0,str.length-11); ;

tr.appendChild(td1); //tr.appendChild(td2); tBody3.appendChild(tr); table.appendChild(tBody3); $("capaLista").appendChild(table); if( hayF == 0){ var tr = document.createElement('TR'); var td1 = document.createElement('TD'); var tBody4 = document.createElement('tbody'); td1.innerHTML ="&nbsp;No hay Resultados...";

tr.appendChild(td1); tBody4.appendChild(tr); table.appendChild(tBody4); } } } ); } // buscarDatos() Caja de busqueda //*****************************************************************************************************************/ // activa y busca desde la caja de busqueda function buscarDatosCB(texto){ url='buscarCB.php'; var letra = texto.substring(1,texto.length); var op = texto.substring(0,1); var pal=""; param="letra="+letra+"&op="+op; $("imagenBuscar").innerHTML="<img src='../../../../images/ico6.png' alt='search' width='15' height='15' />"; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { arrayRoles = transport.responseText.evalJSON(); $("capaBusc").innerHTML=""; $("capaBusc").align='center'; var table = document.createElement('TABLE'); table.width='100%'; table.style.font="9px Verdana, Arial, Helvetica, sans-serif"; table.border='0'; table.cellspacing="0"; table.cellpadding="0";

table.id="cajabuscar"; var hayL=0; var hayF=0; for(i=0;i<arrayRoles.length;i++) { if(arrayRoles[i].q3 == "F"){ var tb = document.createElement('TBODY'); tb.align='left'; var tr = document.createElement('TR'); var td1 = document.createElement('TD'); pal = arrayRoles[i].q2; //td1.setAttribute("onclick","buscarDatosFunciones("+arrayRoles[i].q2+")"); td1.onclick = function() { buscarDatosFunciones(pal); } var url1 = arrayRoles[i].q1.replace(letra,"<b>"+letra+"</b>"); //td1.innerHTML ="<a

href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+ url1.substring(0,10)+"<b>..</b></a>"; td1.innerHTML ="<span style='color:#3B5998;font-size:10px'><b>&nbsp;"+

url1+"</b></span><br /><span style='color:#666; font-size:9px'>&nbsp;"+arrayRoles[i].q4.substring(0,60)+"..</span>";

//td2.innerHTML =arrayRoles[i].q4.substring(0,30)+"<b>..</b>"; tr.title = arrayRoles[i].q1+"... "+arrayRoles[i].q4.substring(0,100); tr.style.cursor="pointer"; tr.appendChild(td1); tb.appendChild(tr); table.appendChild(tb); hayL++; } // fin de L } // fin FOR $("capaBusc").appendChild(table); //***************************************** F

Page 57: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

57

for(i=0;i<arrayRoles.length;i++) { if(arrayRoles[i].q3 == "D"){ var tb = document.createElement('TBODY'); tb.align='left'; var tr = document.createElement('TR'); var td1 = document.createElement('TD'); pal = arrayRoles[i].q2; //td1.setAttribute("onclick","buscarDatosFunciones("+arrayRoles[i].q2+")"); td1.onclick = function() { buscarDatosFunciones(pal); } //td1.innerHTML ="<a

href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+ arrayRoles[i].q1.substring(0,10)+"<b>..</b></a>"; var res = arrayRoles[i].q4.replace(letra,"<b>"+letra+"</b>"); td1.innerHTML ="<span style='color:#3B5998;font-

size:10px'><b>&nbsp;"+arrayRoles[i].q1+"</b></span><br /><span style='color:#666; font-size:9px'>&nbsp;"+res.substring(0,70)+"..</span>";

tr.title = arrayRoles[i].q1+"... "+arrayRoles[i].q4.substring(0,100); tr.style.cursor="pointer"; tr.appendChild(td1); tb.appendChild(tr); table.appendChild(tb); hayF++; } // fin de L } // fin FOR $("capaBusc").appendChild(table); if( hayF == 0 && hayL == 0){ var tb = document.createElement('TBODY'); //tb.align='left'; var tr = document.createElement('TR'); var td1 =

document.createElement('TD');td1.setAttribute("colspan","2"); td1.innerHTML ="No hay Resultados...";

tr.appendChild(td1); tb.appendChild(tr); table.appendChild(tb);} else { var tb = document.createElement('TBODY');

var tr = document.createElement('TR');

tr.style.cursor="pointer"; var td1 = document.createElement('TD'); td1.setAttribute("colspan","2");

td1.innerHTML ="<div align='center' style='border-top:1px dashed #000'><br /><b>Ver

todos los resultados para: </b><span style='color:#006600'>"+letra+"</span></div><br />" ; td1.onclick = function() {

buscarTodo(letra); } tr.appendChild(td1); tb.appendChild(tr); table.appendChild(tb); } } } ); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // muestra todos los resultados que arroja la caja de busqueda function buscarTodo(letra){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; url='buscarCB.php'; var op = 2; param="letra="+letra+"&op="+op; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { arrayRoles = transport.responseText.evalJSON(); $("ladoDer").innerHTML=""; var table = document.createElement('TABLE'); table.width='98%'; table.style.font="11px Verdana, Arial, Helvetica, sans-serif"; table.border='0'; table.cellspacing="0"; table.cellpadding="0"; table.setAttribute("class","bloquesPreview"); table.aling='left'; var tbody = document.createElement('TBODY'); var tr = document.createElement('TR');

Page 58: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

58

var td1 = document.createElement('TD'); td1.align="left"; td1.style.color="#B1B1B1"; td1.setAttribute("colspan","2");

//td1.innerHTML="<h3 style='border-bottom:1px solid #666'>Resultados de la b&uacute;squeda</h3><i>Resultados para <b>"+letra+"</b></i><br>";

td1.innerHTML="<div style='float:left; margin-right:8px;'><img src='../../images/find.ico' alt='ico1' /></div><div style=' text-align:left'><h3>Resultados de la b&uacute;squeda</h3></div><div class='small' style='margin-bottom:7px;'>Resultados para <b>"+letra+"</b></div><br />";

tr.appendChild(td1); tbody.appendChild(tr); table.appendChild(tbody); for(i=0;i<arrayRoles.length;i++) { if(arrayRoles[i].q3 == "F"){ var tbody = document.createElement('TBODY'); tbody.align='left'; var tr = document.createElement('TR'); //if( i%2 ==

0){tr.style.background="#E0EAF7";} var tr2 = document.createElement('TR'); var tr3 = document.createElement('TR'); var td1 = document.createElement('TD'); var td2 = document.createElement('TD'); var td3 = document.createElement('TD'); //td1.innerHTML ="<a

href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+arrayRoles[i].q1+"</a>"; td1.innerHTML ="<a

href='javascript:buscarDatosFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'><b>"+arrayRoles[i].q1+"</b></a>"; var textoAlt = arrayRoles[i].q4.replace(letra,"<b>"+letra+"</b>"); td2.innerHTML =textoAlt.substring(0,200)+" <b>...</b>"; td3.innerHTML ="<b>"+arrayRoles[i].q6 +"</b> // <b>"+arrayRoles[i].q5+"</b><br><hr />";

td3.style.color="#006600"; tr.appendChild(td1); tr2.appendChild(td2); tr3.appendChild(td3); tbody.appendChild(tr); tbody.appendChild(tr2); tbody.appendChild(tr3); table.appendChild(tbody); //table.appendChild(tr2); //table.appendChild(tr3); } // fin de L } // fin FOR $("ladoDer").appendChild(table); //***************************************** F for(i=0;i<arrayRoles.length;i++) { if(arrayRoles[i].q3 == "D"){ var tbody = document.createElement('TBODY'); tbody.align='left'; var tr = document.createElement('TR'); //if( i%2 ==

0){tr.style.background="#E0EAF7";} var tr2 = document.createElement('TR'); var tr3 = document.createElement('TR'); var td1 = document.createElement('TD'); var td2 = document.createElement('TD'); var td3 = document.createElement('TD'); //td1.innerHTML ="<a href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+

arrayRoles[i].q1+"</a>"; td1.innerHTML ="<a

href='javascript:buscarDatosFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'><b>"+arrayRoles[i].q1+"<b></a>"; var textoAlt2 = arrayRoles[i].q4.replace(letra,"<b>"+letra+"</b>"); td2.innerHTML = textoAlt2.substring(0,200)+" <b>...</b>"; td3.innerHTML = "<b>"+arrayRoles[i].q6 +"</b> // <b>"+arrayRoles[i].q5+"</b><br><hr />";

td3.style.color="#006600"; tr.appendChild(td1); tr2.appendChild(td2); tr3.appendChild(td3); tbody.appendChild(tr); tbody.appendChild(tr2); tbody.appendChild(tr3); table.appendChild(tbody); //table.appendChild(tr2); //table.appendChild(tr3); } // fin de L } // fin FOR $("ladoDer").appendChild(table); } } );

Page 59: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

59

} /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // muestra todas las funciones cuando se elige un lenguaje en el buscador alfabetico function buscarTodasFunciones(letra){ //alert('entro'); $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("MenuFuncionesVariante").innerHTML=""; url='buscarFuncionesTodas.php'; param="letra="+letra; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { arrayRoles = transport.responseText.evalJSON(); $("ladoDer").innerHTML=""; var table = document.createElement('TABLE'); table.width='98%'; table.style.font="11px Verdana, Arial, Helvetica, sans-serif"; table.border='0'; table.cellspacing="0"; table.cellpadding="0"; table.setAttribute("class","bloquesPreview"); if(arrayRoles.length == 0) { var tbody = document.createElement('TBODY'); var tr = document.createElement('TR'); var td1 = document.createElement('TD');td1.setAttribute("colspan","2");

td1.style.background="#FFFFFF"; td1.innerHTML ="<div style='float:left; margin-right:8px;'><img

src='../../images/find.ico' alt='ico1' /></div><div style=' text-align:left'><h3>Resultados de la b&uacute;squeda</h3></div><div class='small' style='margin-bottom:7px'><b>No hay Resultados...</b></div>";

$("LstMenuVar").style.display="none"; tr.appendChild(td1); tbody.appendChild(tr); table.appendChild(tbody); $("ladoDer").appendChild(table); return; } var tbody = document.createElement('TBODY'); var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.align="left";

td1.style.color="#B1B1B1"; td1.setAttribute("colspan","2"); td1.innerHTML=" <div style='float:left; margin-right:8px;'><img src='../../images/find.ico'

alt='ico1' /></div><div style=' text-align:left'><h3>Resultados de la b&uacute;squeda</h3></div><div class='small' style='margin-bottom:7px;'>Resultados para <b>"+arrayRoles[0].q5+"</b></div><br />";

tr.appendChild(td1); tbody.appendChild(tr); table.appendChild(tbody); var menuizq ="<ul class='menu' style='background-color:#FFF' >"; $("LstMenuVar").style.display="inline"; $("tituloMenuVariante").innerHTML = '<img src="../../../../images/up.gif" width="14" height="8" alt="up"

/>&nbsp;&nbsp;&nbsp;Funciones de '+arrayRoles[0].q5.substring(0,13)+'...' ; for(i=0;i<arrayRoles.length;i++) { menuizq +="<li><a

href='javascript:buscarDatosFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'>"+arrayRoles[i].q1+"</a></li>"; var tbody = document.createElement('TBODY'); tbody.align='left'; var tr = document.createElement('TR'); //if( i%2 ==

0){tr.style.background="#E0EAF7";} var tr2 = document.createElement('TR'); var tr3 = document.createElement('TR'); var td1 = document.createElement('TD'); var td2 = document.createElement('TD'); var td3 = document.createElement('TD'); //td1.innerHTML ="<a

href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+arrayRoles[i].q1+"</a>"; td1.innerHTML ="<a

href='javascript:buscarDatosFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'><b>"+arrayRoles[i].q1+"</b></a>";

td2.innerHTML = arrayRoles[i].q3.substring(0,200)+" <b>...</b>"; td3.innerHTML = "<b>"+arrayRoles[i].q5 +"</b> // <b>"+arrayRoles[i].q4+"</b><br><hr>";

td3.style.color="#006600"; tr.appendChild(td1); tr2.appendChild(td2); tr3.appendChild(td3); tbody.appendChild(tr); tbody.appendChild(tr2);

Page 60: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

60

tbody.appendChild(tr3); table.setAttribute("class","bloquesPreview"); table.appendChild(tbody); //table.appendChild(tr2); //table.appendChild(tr3); } // fin FOR menuizq +="</ul>"; $("MenuFuncionesVariante").innerHTML=menuizq; $("ladoDer").appendChild(table);

} } ); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function comments(id){ url='comentarios.php'; param="id="+id; // alert(id); data2=""; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { arrayRoles = transport.responseText.evalJSON(); $('capaComment').innerHTML = ""; for (e=0 ; e < arrayRoles.length; e++){ registro = arrayRoles[e].regs; campos = registro.split(","); //alert(campos); var div1 = document.createElement('DIV'); div1.id="vistaComment"; if(campos[0]=='0' || campos[1]=='Undefined') { data2='No hay Comentarios...'; div1.innerHTML = data2; $('capaComment').appendChild(div1); return; } data2+="<table width='97%' border='0' cellspacing='0' cellpadding='0' style='margin-

bottom:10px'><tr><td width='30%' align='left' valing='top' style='font-size:10px '><img src='../../../../images/male.gif' width='12' height='10' alt='msg' /><span style='color:#006600'><b>"+campos[4]+"</b></span> // <img src='../../../../images/img.gif' width='12' height='10' alt='cal' />&nbsp;<b>"+campos[5]+"&nbsp;&nbsp;<span style='color:#006600'>Dice:</span></b></td></tr><tr><td width='70%' valing='top' class='bloqueEjemplos' ><div style='font-weight:normal; line-height:18px; text-align:justify; font-size:13px '>"+campos[1]+"</div></td></tr></table>";

} div1.innerHTML = data2; $('capaComment').appendChild(div1); }}); } ///////////////////////////////////////////////////////////// function argumentos(arreglo){ arreglo = arreglo.substring(0,arreglo.length-1); var campos = arreglo.split("@"); var data=""; // var table = document.createElement('Table'); table.width='100%'; // table.border='0'; table.cellspacing="0"; table.cellpadding="0"; table.id="tArgumentos"; // var tabBody = document.createElement('tbody'); // var tr1 = document.createElement('TR'); // var tr2 = document.createElement('TR'); // var td1 = document.createElement('TD'); // var td2 = document.createElement('TD'); data+="<table id='tArgumentos' width='100%' border='0' cellspacing='0' cellpadding='0'>"; for (p=0; p<campos.length; p+=2){ // td1.innerHTML="<p><i class='lstargumentos'>"+campos[p]+"</i></p>"; // td2.innerHTML="<blockquote><div class='bloqueEjemplos'>"+campos[p+1]+"</div></blockquote>"; data+="<tr><td><p><i class='lstargumentos'>"+campos[p]+"</i></p></td></tr>"; data+="<tr><td align='center'><div align='left'

class='bloqueDescrParam'>"+campos[p+1]+"</div></td></tr>"; // tr1.appendChild(td1); // tr2.appendChild(td2); // tabBody.appendChild(tr1); // tabBody.appendChild(tr2); } // table.appendChild(tabBody); data+="</table>"; return data; //$('aquiArgumentos').appendChild(table); //return table; } //////////////////////////////////////////////////////////////////////// function reversaParametros(datos){

Page 61: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

61

var campos = datos.split("@"); var texto=""; for (y=0 ; y < campos.length ; y++){ if( y%2 == 0 ) { texto += campos[y].replace(campos[y],"<<"+campos[y]+">>") ; } else { texto += campos[y].replace(campos[y],"--"+campos[y]+"--") ; } } return texto; } //***************************************************************************************************************************************

***********88 // muestra el modulo de vista completa, incluidos los FQS function buscarDatosFunciones(id){ //alert(''); //alert(id); $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; url='buscarDatos.php'; /*dat_nombre_funcion, leng_nombre, dat_descripcion, dat_sintaxys, dat_parametros,

dat_ejemplo, wik_datos_id */ /* 0 1 2 3 4 5 6 */ param="id="+id; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { arrayRoles = transport.responseText.evalJSON(); $("capaLista").innerHTML=""; $("capaLista").align='center'; $("ladoDer").innerHTML=''; var registro = arrayRoles[0].regs var campos = registro.split("¬"); var divpr = document.createElement('DIV'); divpr.id="vistaFuncion"; var total = campos[2]; //var p = campos[2].length; //alert(p); //for (i=0 ; i < p; i++){ // total = total.replace('[[','<b>'); // total = total.replace(']]','</b>'); // } var data="<div class='bloquesPreview'> <div style='float:right; margin-right:15px; '><a

href='javascript:aWord(&quot;"+campos[6]+"&quot;)'><img src='/elearning_cisc/contenido/wikikey/images/word.ico' width='20' height='20' alt='word' style='cursor:pointer' title='Descargar a Word..' /> Exportar</a> <b>|</b> <a href='javascript:historial(&quot;"+campos[6]+"&quot;)'><img src='/elearning_cisc/contenido/wikikey/images/historial.ico' width='20' height='20' alt='word' style='cursor:pointer' title='Historial de Cambios.' /> Historial</a></div><input name='idFunc' id='idFunc' type='hidden' value='"+campos[6]+"' /><div style='float:left; margin-right:10px;'><img src='/elearning_cisc/contenido/wikikey/images/documento.ico' alt='ico1' /></div> <div style='text-align:left'><h3>"+campos[0]+"</h3></div> <div style='margin-bottom:7px; margin_top:2px; font-size:14px'><span style='font-size:10px'>Origen:</span> <b>"+campos[1]+"</b></div><br />";

data+="<div align='center'><div align='left' style='width:98%;'><div

class='tituloBloque'>Descripci&oacute;n<div class='editar'>[<a href='#' onclick='contribucion(1,&quot;"+campos[0]+"&quot;,&quot;"+campos[3]+"&quot;,&quot;"+total+"&quot;)'>editar</a>]</div></div> <div class='bloqueDescr'>"+total+"</div><br />";

data+="<div class='tituloBloque'>Sintaxis<div class='editar'>[<a href='#'

onclick='contribucion(11,&quot;"+campos[0]+"&quot;,&quot;"+campos[3]+"&quot;,&quot;"+total+"&quot;)'>editar</a>]</div></div> <div class='bloqueSintaxis' style='display:block' >"+campos[3]+"</div><br />";

var var3= reversaParametros(campos[4]); data+="<div class='tituloBloque'>Par&aacute;metros<div class='editar'>[<a href='#'

onclick='contribucion(2,&quot;"+campos[0]+"&quot;,&quot;&quot;,&quot;"+var3+"&quot;)'>editar</a>]</div></div>"; data+="<div id='aquiArgumentos'

class='bloquelight'>"+argumentos(campos[4])+"</div><br />"; data+="<div class='tituloBloque'>Ejemplos<div class='editar'>[<a href='#'

onclick='contribucion(3,&quot;"+campos[0]+"&quot;,&quot;&quot;,&quot;"+campos[6]+"&quot;)'>editar</a>]</div></div><div class='bloqueEjemplos'><div id='ejemplosArchivo'></div></div></div> </div></div><br />" ; buscDescrip(campos[6]);

data+="<div id='notaultimamod'>Ultima modificacion</div> <br />";

ultimaModificacion(campos[6]); data+="<div class='tituloComentarios'>Comentarios</div><br />";

Page 62: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

62

data+="<div class='bloquesPreviewComent' align='center'><div id='capaComment'>"+comments(id)+"</div></div><br/>" ;

data+="<div style='border-bottom:1px solid #0668B3;font:12px Arial;font-

weight:bold;color:#0668B3;'>D&eacute;janos tu comentario</div><div class='bloquesPreviewComent' align='center'> <table width='90%' height='130px' border='0' cellspacing='0' cellpadding='0'><tr><td><textarea name='comment' id='comment' type='text' style='width:100%; height:80px; border:1px inset #000; background:white;' /></textarea></td></tr><tr><td align='right'><input name='comentar' type='button' value='Comentar' onclick = 'guardaComment("+id+")' /></td></tr></table> </div>" ;

divpr.innerHTML = data; $("ladoDer").appendChild(divpr); }}); } //************************* fecha que se hizo la ultima modificacion *********************** function ultimaModificacion(id){ url='ultimaModificacion.php'; param="id="+id; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { $('notaultimamod').innerHTML = transport.responseText;

}}); } //****************** buscar descripciones ****************************************** function buscDescrip(id){ url='buscarDescripcion.php'; param="id="+id; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { $('ejemplosArchivo').innerHTML =

transport.responseText; }}); } //***************************************************************************************************************************************

*************** function guardaComment(id){ //$_SESSION["usNoms"] $_SESSION["usApes"] param="comm="+$('comment').value+"&id="+id ; url='guardarComment.php'; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { result = transport.responseText; alert(result); $('comment').value=""; comments(id); }}); } //////////////////////////////////////////////////////////////////////////////////////////////////////// function reglas(){ $("capaLista").style.display='block'; $("capaLista").innerHTML="<img src='../../images/tabla1.jpg' width='100%' height='100%' alt='tabla' />"; } //////////////////////////////////////////////////////////////////////////////////////////////////////// function siVa(id){ url='../editor/YNaportaciones.php'; var param = "id="+id+"&op=Y"; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { $(id).innerHTML="<b style='color:red;

font-size:9px'>Aprobada</b>"; }} ); } function noVa(id){ url='../editor/YNaportaciones.php'; var param = "id="+id+"&op=N"; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { $(id).innerHTML="<b style='color:red;

font-size:9px'>Eliminada</b>"; }} ); } function aWord(id){ var url="aWord.php?id="+id; var ventana = window.open(url,"Wiki

Cisc","toolbar=0,scrollbars=1,directories=0,location=0,Menubar=0,Status=0,Titlebar=0,Toolbar=0,width=1000, height=700,resizable=1");

Page 63: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

63

} /*---------------------------------------------------------------------*/ function bajarVentanas(){ $("capaBusc").innerHTML="" ; $("capaBusc").style.display="none"; $("LstMenuVar").style.height='15px'; $("MenuFuncionesVariante").style.display='none'; $("capaLista").innerHTML = ""; $("capaLista").style.display = "none"; } </script>

Archivo: portada.php

Elaboración: Carlos A. Zambrano I.

Cuadro 4.

Java Script del Sistema parte 2 function guardaEjemplo(){ txtEjemplos(); var url='../editor/guardarDesc.php'; var param= "desc="+$("nEjemplo").value+"&func="+$("nFuncion").value; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { $('divEjemplo').innerHTML= transport.responseText; }} ); } function max(txarea) { total = 500; tam = txarea.value.length; str=""; str=str+tam; //Digitado.innerHTML = str; document.getElementById('totalletras').innerHTML= total - str; if (tam > total){ aux = txarea.value; txarea.value = aux.substring(0,total); //Digitado.innerHTML = total document.getElementById('totalletras').innerHTML= 0 } } function timerPreview(id,func){ $(id).innerHTML='<img src="../../../../images/5.gif" alt="loading"/>'; setTimeout (func, 1000); } function transParametros(){ var value = $("nParametros").value; value = value.replace(/<</gi,"@"); value = value.replace(/>>/gi,"@"); value = value.replace(/--/gi,""); value = value.substring(1,value.length); return value; } function retParam(){ var value=transParametros(); var table = value.split("@"); var rows = table.length; var data=""; for (p=0; p<rows; p+=2){ data+="<p><i style='border-bottom:1px solid #CCCCCC'>"+table[p]+"</i></p>"; data+="<blockquote><div class='bloqueEjemplos'>"+table[p+1]+"</div></blockquote>"; } return data; } //****************************** preview ******************************************* //**************************

Page 64: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

64

function preview (opEd) { var opaco = document.createElement('DIV'); opaco.setAttribute("class","opaco"); opaco.id="win"; opaco.align="center"; document.body.appendChild(opaco); //document.documentElement.appendChild(opaco); //alert('1'); var blanco = document.createElement('DIV'); blanco.setAttribute("class","blanco"); blanco.id="winblanco"; document.body.appendChild(blanco); //return; $("divPrev").innerHTML=''; var divpr = document.createElement('DIV'); var adver = document.createElement('div'); adver.align='center'; adver.innerHTML='<a href="#" onclick="borraWin()" style="float:right;margin-right:8px; margin-top:5px; "><h2><img

src="../../../../images/cancel_12x12.png" width="12" height="12" alt="close" style="margin-right:5px;" />Cerrar</h2></a><div id="advertencia" class="advertencia"><div style="float:left; margin-right:8px;"><img src="../../images/contribuciones.ico" alt="ico1" /></div><div style=" text-align:left"><h3>Previsualizaci&oacute;n</h3></div><div class="small" style="color:#000">&iexcl;Recuerda que esto es s&oacute;lo una <b>previsualizaci&oacute;n</b> y no ha sido guardada todav&iacute;a!</div></div><br />';

divpr.id="preview"; var total=""; //var sintax=""; var data=""; if(opEd==0 || opEd==1){ var total = $("nDescripcion").value var p = $("nDescripcion").value.length; for (i=0 ; i < p; i++){ total = total.replace('[[','<b>'); total = total.replace(']]','</b>'); } } if(opEd==0){ var opLenguaje= $('cmbLenguaje') ; var nLenguaje = opLenguaje.options[opLenguaje.selectedIndex].text ; data+="<div style='float:left; margin-right:10px;'><img src='/elearning_cisc/contenido/wikikey/images/documento.ico'

alt='ico1' /></div> <div style=' text-align:left'><h3>"+$("nFuncion").value+"</h3></div> <div style='margin-bottom:7px;font-size:14px'>Origen: <b>"+nLenguaje+"</b></div>";

} if(opEd==0 || opEd==1){ data+="<div class='bloquesPreview'><div class='tituloBloque'>Descripci&oacute;n</div><br /><div

class='bloqueSintaxis' style='display:block' >"+$('nSintaxis').value+"</div><p class='bloqueDescr'>"+total+"</p></div><br />";

} if(opEd==0 || opEd==2){ data+="<div class='bloquesPreview'><div class='tituloBloque'>Par&aacute;metros o Argumentos de la

Funci&oacute;n</div><br />"; data+="<div class='bloquelight'>"+retParam()+"</div></div><br />"; } if(opEd==0 || opEd==3){ data+="<div class='bloquesPreview'><div class='tituloBloque'>Ejemplos</div><br /><div class='bloqueEjemplos'><div

id='divEjemplo'></div></div></div>" ; } data+='<br /><a href="#" onclick="borraWin()"><h2><img src="../../../../images/cancel_12x12.png" width="12"

height="12" alt="close" style="margin-right:5px;" />Cerrar</h2></a>'; divpr.innerHTML = data; //$("divPrev").appendChild(adver); //$("divPrev").appendChild(divpr); $("winblanco").appendChild(adver); $("winblanco").appendChild(divpr); if(opEd==0 || opEd==3){ guardaEjemplo(); } } //************************************************************************************************* //************************************************************************************************* function borraWin(){ var del = document.getElementById("win"); del.parentNode.removeChild(del); del = document.getElementById("winblanco");

Page 65: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

65

del.parentNode.removeChild(del); } /*---------------------------------------------------*/ function txtEjemplos(){ var total = $("nEjemplo").value //var p = $("nEjemplo").value.length; //for (i=0 ; i < p; i++){ //total = total.replace(/--/g,'<br />'); total = total.replace(/[<]/gi,'1'); total = total.replace(/[?]/gi,'2'); total = total.replace(/php/gi,'p*h*p'); //total = total.replace(/ ?>/g,'*?*>*'); //total = total.replace('; ',';<br>'); //} $("nEjemplo").value = total; } function agregap(){ var table = $('tParam'); //document.getElementsByTagName("TBODY")[4]; table.width="100%";// var tbody1 = document.createElement('TBODY'); var tr = document.createElement('TR'); var td1 = document.createElement('TD'); var td2 = document.createElement('TD'); td2.width="68%"; var td3 = document.createElement('TD'); td3.align="center"; var td4 = document.createElement('TD'); //var ico1 = document.createElement('img'); var ico2 = document.createElement('img'); ico2.title='Eliminar la Fila'; ico2.style.cursor='pointer'; ico2.setAttribute('src', '../../../../images/ico3.png'); ico2.onclick = function() { //var table = table;//document.getElementsByTagName("TBODY")[0]; var table =

$('tParam'); var tdPadre = ico2.parentNode; var trPadre = tdPadre.parentNode; var tbx = trPadre.parentNode; if(table.childNodes.length > 3 ){table.removeChild(tbx);} else{

tbx.childNodes[0].childNodes[0].firstChild.value='';

tbx.childNodes[0].childNodes[1].firstChild.value=''; } } td1.innerHTML="<textarea style='width:99%; height:30px' type='text' size='26'></textarea>"; td2.innerHTML="<textarea style='width:99%; height:30px' type='text' size='26'></textarea>"; td3.innerHTML="<img src='../../../../images/ico2.png' alt='ok' width='24' height='24' style='cursor:pointer'

onclick='agregap()' title='Agregar Nueva Fila'/>"; td4.appendChild(ico2); tr.appendChild(td1); tr.appendChild(td2); tr.appendChild(td3); tr.appendChild(td4); tbody1.appendChild(tr) table.appendChild(tbody1); } function guardar(edit,id){ //alert(id); if(confirm('Confirme Guardar ?')){ //if($("tipo_pregunta").value!="0" && $("pregunta").value != "" && $("cantidad_op").value != "0" &&

$("pre_puntaje").value != "0" ){ url='../../contenido/editor/guardar.php'; var param=""; if(edit==0){ param =

"cmbLenguaje="+$("cmbLenguaje").value+"&nFuncion="+$("nFuncion").value+"&nSintaxis="+$("nSintaxis").value+"&nDescripcion="+$("nDescripcion").value+"&nParametros="+transParametros()+"&nEjemplo="+$("nEjemplo").value+"&seguimiento="+$("seguimiento").checked ;

} else if(edit == 1){ param =

"nDescripcion="+$("nDescripcion").value+"&seguimiento="+$("seguimiento").checked ;

}else if(edit == 11){ param =

"nSintaxis="+$("nSintaxis").value+"&seguimiento="+$("seguimiento").checked ;

Page 66: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

66

}else if(edit == 2){ param =

"nParametros="+transParametros()+"&seguimiento="+$("seguimiento").checked ;

} else if(edit == 3){

param = "nEjemplo="+$("nEjemplo").value+"&seguimiento="+$("seguimiento").checked ;

} param += "&edit="+edit+"&idUpdate="+id;

// alert(param); return; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { alert(transport.responseText); $("menuImportante").innerHTML='| <a

href="javascript:importante()" title="Existen Contribuciones Nuevas Esperando ser Aceptadas..."><span style="color:red;">Importante!</span></a>';

portada();

//window.location="contenido_examen.php"; }} );

} } function revertir(idDat){ //alert(idDat); //alert(itemMod); var elementos = document.getElementsByTagName("INPUT"); var edit; var valor; for(u=0 ; u < elementos.length ; u++){ if(elementos[u].type=="radio" && elementos[u].checked==true){ valor= elementos[u].value; edit = elementos[u].id; if(confirm('Confirme Revertir Datos ?')){ url='../../contenido/editor/guardar.php'; var param=""; if(edit == 1){ param = "nDescripcion="+valor+"&seguimiento=false" ; }else if(edit == 11){ param =

"nSintaxis="+valor+"&seguimiento=false"; }else if(edit == 2){ param =

"nParametros="+valor+"&seguimiento=false";

} else if(edit == 3){

param = "nEjemplo="+valor+"&seguimiento=false";

} param += "&edit="+edit+"&idUpdate="+idDat;

// alert(param); return; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { alert(transport.responseText); //portada();

//window.location="contenido_examen.php"; }} );

} }//if }//for } function retornaPostparametros(claseTxt){ var l=document.getElementsByClassName(claseTxt); var f=0; var param=''; for(f=0;f<l.length;f++ ){ if(l[f].type == "radio") { if(l[f].checked == true) param += ""+l[f].id+"=Y&" ; else param += ""+l[f].id+"=N&" ;

Page 67: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

67

} else param += ""+l[f].id+"="+l[f].value+"&" ; } var porcion = param.substring(0,param.length-1); return porcion; } function borraDen(id){ url='../seguimientos/YNdenuncias.php'; var param = "id="+id+"&op=N"; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { $(id).innerHTML="<b style='color:red;

font-size:9px'><img src='/elearning_cisc/images/16.gif' width='35' height='35' alt='load' />"+transport.responseText+"</b>";

setTimeout('denuncias()',2000); }} ); } function acepDen(id,text){ url='../seguimientos/YNdenuncias.php'; var param = "id="+id+"&op=Y&descrip="+$(text).value; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { $(id).innerHTML="<b style='color:red;

font-size:9px'><img src='/elearning_cisc/images/16.gif' width='35' height='35' alt='load' />"+transport.responseText+"</b>";

setTimeout('denuncias()',2000);

}} ); } function validar_enter(e, valor) { var key; if(window.event) // IE { key = e.keyCode; } else if(e.which) // Netscape/Firefox/Opera { key = e.which; } if (key == 13) { buscarTodo(valor); return true; } return false; };

Archivo: funciones.js

Elaboración: Carlos A. Zambrano I.

Cuadro 5.

API de AJAX /* Prototype JavaScript framework, version 1.6.1_rc2 * (c) 2005-2009 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.6.1_rc2', Browser: {

Page 68: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

68

IE: !!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1), Opera: navigator.userAgent.indexOf('Opera') > -1, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') === -1, MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) }, BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { if (window.HTMLElement && window.HTMLElement.prototype) return true; if (window.Element && window.Element.prototype) return true; })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'); if (div['__proto__'] && div['__proto__'] !== document.createElement('form')['__proto__']) { return true; } return false; })() }, ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods);

Page 69: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

69

klass.superclass = parent; klass.subclasses = []; if (parent) { var subclass = function() {}; subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0; i < properties.length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype; var properties = Object.keys(source); if (!Object.keys({ toString: true }).length) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames().first() == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { function getClass(object) { return Object.prototype.toString.call(object) .match(/^\[object\s(.*)\]$/)[1]; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) {

Page 70: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

70

if (e instanceof RangeError) return '...'; throw e; } } function toJSON(object) { var type = typeof object; switch (type) { case 'undefined': case 'function': case 'unknown': return; case 'boolean': return object.toString(); } if (object === null) return 'null'; if (object.toJSON) return object.toJSON(); if (isElement(object)) return; var results = []; for (var property in object) { var value = toJSON(object[property]); if (!isUndefined(value)) results.push(property.toJSON() + ': ' + value); } return '{' + results.join(', ') + '}'; } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { var results = []; for (var property in object) results.push(property); return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return getClass(object) === "Array"; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return typeof object === "function"; } function isString(object) { return getClass(object) === "String"; }

Page 71: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

71

function isNumber(object) { return getClass(object) === "Number"; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: toJSON, toQueryString: toQueryString, toHTML: toHTML, keys: keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1);

Page 72: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

72

timeout = timeout * 1000 return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize } })()); Date.prototype.toJSON = function() { return '"' + this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z"'; }; RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return;

Page 73: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

73

clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); } catch(e) { /* empty catch for clients that don't support try/finally */ } finally { this.currentlyExecuting = false; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) {

Page 74: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

74

this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\/?[^>]+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script) }); } function escapeHTML() { escapeHTML.text.data = this; return escapeHTML.div.innerHTML; } function unescapeHTML() { var div = document.createElement('div'); div.innerHTML = this.stripTags(); return div.childNodes[0] ? (div.childNodes.length > 1 ? $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : div.childNodes[0].nodeValue) : ''; } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()); var value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1);

Page 75: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

75

} function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { var parts = this.split('-'), len = parts.length; if (len == 1) return parts[0]; var camelized = this.charAt(0) == '-' ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) : parts[0]; for (var i = 1; i < len; i++) camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); return camelized; } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-

/,'_').toLowerCase(); } function dasherize() { return this.gsub(/_/,'-'); } function inspect(useDoubleQuotes) { var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { var character = String.specialChar[match[0]]; return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function toJSON() { return this.inspect(true); } function unfilterJSON(filter) { return this.sub(filter || Prototype.JSONFilter, '#{1}'); } function isJSON() { var str = this; if (str.blank()) return false; str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(); try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.indexOf(pattern) === 0; } function endsWith(pattern) { var d = this.length - pattern.length;

Page 76: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

76

return d >= 0 && this.lastIndexOf(pattern) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, toJSON: toJSON, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); Object.extend(String.prototype.escapeHTML, { div: document.createElement('div'), text: document.createTextNode('') }); String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text); if ('<\n>'.escapeHTML() !== '&lt;\n&gt;') { String.prototype.escapeHTML = function() { return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); } } if ('&lt;\n&gt;'.unescapeHTML() !== '<\n>') { String.prototype.unescapeHTML = function() { return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&'); } } var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) {

Page 77: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

77

if (Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return ''; var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3]; var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) {

Page 78: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

78

results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); }

Page 79: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

79

function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); }

Page 80: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

80

function size() { return this.toArray().length; } function inspect() { return '#<Enumerable:' + this.toArray().inspect() + '>'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in iterable) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator) { for (var i = 0, length = this.length; i < length; i++) iterator(this[i]);

Page 81: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

81

} if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline !== false ? this : this.toArray())._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function toJSON() { var results = []; this.each(function(object) { var value = Object.toJSON(object); if (!Object.isUndefined(value)) results.push(value); });

Page 82: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

82

return '[' + results.join(', ') + ']'; } function indexOf(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; } function lastIndexOf(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array = slice.call(this, 0), item; for (var i = 0, length = arguments.length; i < length; i++) { item = arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect, toJSON: toJSON }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator) { for (var key in this._object) {

Page 83: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

83

var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) return results.concat(values.map(toQueryPair.curry(key))); } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#<Hash:{' + this.map(function(pair) { return pair.map(Object.inspect).join(': '); }).join(', ') + '}>'; }

Page 84: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

84

function toJSON() { return Object.toJSON(this.toObject()); } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toJSON, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function toJSON() { return isFinite(this) ? this.toString() : 'null'; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, toJSON: toJSON, abs: abs,

Page 85: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

85

round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]);

Page 86: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

86

} catch (e) { } } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isString(this.options.parameters)) this.options.parameters = this.options.parameters.toQueryParams(); else if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.clone(this.options.parameters); if (!['get', 'post'].include(this.method)) { params['_method'] = this.method; this.method = 'post'; } this.parameters = params; if (params = Object.toQueryString(params)) { if (this.method == 'get') this.url += (this.url.include('?') ? '&' : '?') + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='; } try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null;

Page 87: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

87

this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300); }, getStatus: function() { try { return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); }

Page 88: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

88

var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if(readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml;

Page 89: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

89

this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); },

Page 90: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

90

updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) {

Page 91: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

91

document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!window.Node) var Node = { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { var SETATTRIBUTE_IGNORES_NAME = (function(){ var elForm = document.createElement("form"); var elInput = document.createElement("input"); var root = document.documentElement; elInput.setAttribute("name", "test"); elForm.appendChild(elInput); root.appendChild(elForm); var isBuggy = elForm.elements ? (typeof elForm.elements.test == "undefined") : null; root.removeChild(elForm); elForm = elInput = null; return isBuggy; })(); var element = global.Element; global.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (SETATTRIBUTE_IGNORES_NAME && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype = element.prototype; })(this); Element.cache = { }; Element.idCounter = 1; Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) {

Page 92: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

92

element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, remove: function(element) { element = $(element); element.parentNode.removeChild(element); return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = "<option value=\"test\">test</option>"; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content);

Page 93: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

93

var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { $A(element.childNodes).each(function(node) { element.removeChild(node); }); Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } return update; })(), replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse();

Page 94: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

94

childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(); var value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) elements.push(Element.extend(element)); return elements; }, ancestors: function(element) { return $(element).recursivelyCollect('parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).nextSiblings()); return []; }, previousSiblings: function(element) { return $(element).recursivelyCollect('previousSibling'); }, nextSiblings: function(element) { return $(element).recursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return element.previousSiblings().reverse().concat(element.nextSiblings()); }, match: function(element, selector) {

Page 95: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

95

if (Object.isString(selector)) selector = new Selector(selector); return selector.match($(element)); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = element.ancestors(); return Object.isNumber(expression) ? ancestors[expression] : Selector.findElement(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? element.descendants()[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); var previousSiblings = element.previousSiblings(); return Object.isNumber(expression) ? previousSiblings[expression] : Selector.findElement(previousSiblings, expression, index); }, next: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); var nextSiblings = element.nextSiblings(); return Object.isNumber(expression) ? nextSiblings[expression] : Selector.findElement(nextSiblings, expression, index); }, select: function() { var args = $A(arguments), element = $(args.shift()); return Selector.findChildElements(element, args); }, adjacent: function() { var args = $A(arguments), element = $(args.shift()); return Selector.findChildElements(element.parentNode, args).without(element); }, identify: function(element) { element = $(element); var id = element.readAttribute('id'); if (id) return id; do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); element.writeAttribute('id', id); return id; }, readAttribute: (function(){ var iframeGetAttributeThrowsError = (function(){ var el = document.createElement('iframe'), isBuggy = false; document.documentElement.appendChild(el); try { el.getAttribute('type', 2); } catch(e) { isBuggy = true; } document.documentElement.removeChild(el); el = null; return isBuggy; })(); return function(element, name) { element = $(element);

Page 96: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

96

if (iframeGetAttributeThrowsError && name === 'type' && element.tagName.toUpperCase() == 'IFRAME') { return element.getAttribute('type'); } if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); } })(), writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return $(element).getDimensions().height; }, getWidth: function(element) { return $(element).getDimensions().width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!element.hasClassName(className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return element[element.hasClassName(className) ? 'removeClassName' : 'addClassName'](className);

Page 97: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

97

}, cleanWhitespace: function(element) { element = $(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = element.cumulativeOffset(); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) {

Page 98: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

98

element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, getDimensions: function(element) { element = $(element); var display = element.getStyle('display'); if (display != 'none' && display != null) // Safari bug return {width: element.offsetWidth, height: element.offsetHeight}; var els = element.style; var originalVisibility = els.visibility; var originalPosition = els.position; var originalDisplay = els.display; els.visibility = 'hidden'; if (originalPosition != 'fixed') // Switching fixed to absolute causes issues in Safari els.position = 'absolute'; els.display = 'block'; var originalWidth = element.clientWidth; var originalHeight = element.clientHeight; els.display = originalDisplay; els.position = originalPosition; els.visibility = originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element = $(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, cumulativeOffset: function(element) { var valueT = 0, valueL = 0; do {

Page 99: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

99

valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }, positionedOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (element.tagName.toUpperCase() == 'BODY') break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); return Element._returnOffset(valueL, valueT); }, absolutize: function(element) { element = $(element); if (element.getStyle('position') == 'absolute') return element; var offsets = element.positionedOffset(); var top = offsets[1]; var left = offsets[0]; var width = element.clientWidth; var height = element.clientHeight; element._originalLeft = left - parseFloat(element.style.left || 0); element._originalTop = top - parseFloat(element.style.top || 0); element._originalWidth = element.style.width; element._originalHeight = element.style.height; element.style.position = 'absolute'; element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.width = width + 'px'; element.style.height = height + 'px'; return element; }, relativize: function(element) { element = $(element); if (element.getStyle('position') == 'relative') return element; element.style.position = 'relative'; var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.height = element._originalHeight; element.style.width = element._originalWidth; return element; }, cumulativeScrollOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return Element._returnOffset(valueL, valueT); }, getOffsetParent: function(element) { if (element.offsetParent) return $(element.offsetParent); if (element == document.body) return $(element); while ((element = element.parentNode) && element != document.body)

Page 100: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

100

if (Element.getStyle(element, 'position') != 'static') return $(element); return $(document.body); }, viewportOffset: function(forElement) { var valueT = 0, valueL = 0; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (!Prototype.Browser.Opera || (element.tagName && (element.tagName.toUpperCase() == 'BODY'))) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return Element._returnOffset(valueL, valueT); }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source = $(source); var p = source.viewportOffset(); element = $(element); var delta = [0, 0]; var parent = null; if (Element.getStyle(element, 'position') == 'absolute') { parent = element.getOffsetParent(); delta = parent.viewportOffset(); } if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for'

Page 101: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

101

}, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'left': case 'top': case 'right': case 'bottom': if (proceed(element, 'position') === 'static') return null; case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap( function(proceed, element) { element = $(element); try { element.offsetParent } catch(e) { return $(document.body) } var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); $w('positionedOffset viewportOffset').each(function(method) { Element.Methods[method] = Element.Methods[method].wrap( function(proceed, element) { element = $(element); try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') offsetParent.setStyle({ zoom: 1 }); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value;

Page 102: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

102

} ); }); Element.Methods.cumulativeOffset = Element.Methods.cumulativeOffset.wrap( function(proceed, element) { try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } return proceed(element); } ); Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = (function(){ var classProp = 'className'; var forProp = 'for'; var el = document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !== 'x') { el.setAttribute('class', 'x'); if (el.className === 'x') { classProp = 'class'; } } el = null; el = document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !== 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor === 'x') {

Page 103: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

103

forProp = 'htmlFor'; } } el = null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el = document.createElement('div'); el.onclick = Prototype.emptyFunction; var value = el.getAttribute('onclick'); var f; if (String(value).indexOf('{') > -1) { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; attribute = attribute.toString(); attribute = attribute.split('{')[1]; attribute = attribute.split('}')[0]; return attribute.strip(); } } else if (value === '') { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); } } el = null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; }

Page 104: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

104

} }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr, src: v._getAttr, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes = element.getElementsByTagName('*'), results = []; for (var i = 0, node; node = nodes[i]; i++) if (node.tagName !== "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down = function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element);

Page 105: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

105

element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if(element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; Element.Methods.cumulativeOffset = function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(); var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; if (t) { div.innerHTML = t[0] + html + t[1]; t[2].times(function() { div = div.firstChild }); } else div.innerHTML = html; return $A(div.childNodes); };

Page 106: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

106

Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['<table>', '</table>', 1], TBODY: ['<table><tbody>', '</tbody></table>', 2], TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3], TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4], SELECT: ['<select>', '</select>', 1] } }; (function() { Object.extend(this.tags, { THEAD: this.tags.TBODY, TFOOT: this.tags.TBODY, TH: this.tags.TD }); }).call(Element._insertionTranslations); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = div['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } div = null; })(document.createElement('div')) Element.extend = (function() { function checkDeficiency(tagName) { if (typeof window.Element != 'undefined') { var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random()+'').slice(2); var el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property];

Page 107: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

107

if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); var HTMLAPPLETELEMENT_PROTOTYPE_BUGGY = checkDeficiency('applet'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY && HTMLAPPLETELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && element.tagName) { var tagName = element.tagName.toUpperCase(); if (tagName === 'OBJECT' || tagName === 'APPLET') { extendElementWith(element, Element.Methods); if (tagName === 'OBJECT') { extendElementWith(element, Element.Methods.ByTag.OBJECT) } else if (tagName === 'APPLET') { extendElementWith(element, Element.Methods.ByTag.APPLET) } } } return element; } } return Prototype.K; } var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || typeof element._extendedByPrototype != 'undefined' || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); Element.hasAttribute = function(element, attribute) { if (element.hasAttribute) return element.hasAttribute(attribute); return Element.Methods.Simulated.hasAttribute(element, attribute); }; Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods)

Page 108: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

108

}); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName); var proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } var elementPrototype = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag;

Page 109: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

109

if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; (function(viewport) { var B = Prototype.Browser, doc = document, element, property = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element = getRootElement(); property[D] = 'client' + D; viewport['get' + D] = function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth = define.curry('Width'); viewport.getHeight = define.curry('Height'); })(document.viewport); Element.Storage = { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element = $(element))) return; var uid; if (element === window) { uid = 0; } else { if (typeof element._prototypeUID === "undefined") element._prototypeUID = [Element.Storage.UID++]; uid = element._prototypeUID[0]; } if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element = $(element))) return; if (arguments.length === 2) {

Page 110: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

110

element.getStorage().update(key); } else { element.getStorage().set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element = $(element))) return; var hash = Element.getStorage(element), value = hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value = defaultValue; } return value; }, clone: function(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); clone._prototypeUID = void 0; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) { descendants[i]._prototypeUID = void 0; } } return Element.extend(clone); } }); /* Portions of the Selector class are derived from Jack Slocum's DomQuery, * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style * license. Please see http://www.yui-ext.com/ for more information. */ var Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); if (this.shouldUseSelectorsAPI()) { this.mode = 'selectorsAPI'; } else if (this.shouldUseXPath()) { this.mode = 'xpath'; this.compileXPathMatcher(); } else { this.mode = "normal"; this.compileMatcher(); } }, shouldUseXPath: (function() { var IS_DESCENDANT_SELECTOR_BUGGY = (function(){ var isBuggy = false; if (document.evaluate && window.XPathResult) { var el = document.createElement('div'); el.innerHTML = '<ul><li></li></ul><div><ul><li></li></ul></div>'; var xpath = ".//*[local-name()='ul' or local-name()='UL']" + "//*[local-name()='li' or local-name()='LI']"; var result = document.evaluate(xpath, el, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); isBuggy = (result.snapshotLength !== 2); el = null; } return isBuggy; })(); return function() {

Page 111: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

111

if (!Prototype.BrowserFeatures.XPath) return false; var e = this.expression; if (Prototype.Browser.WebKit && (e.include("-of-type") || e.include(":empty"))) return false; if ((/(\[[\w-]*?:|:checked)/).test(e)) return false; if (IS_DESCENDANT_SELECTOR_BUGGY) return false; return true; } })(), shouldUseSelectorsAPI: function() { if (!Prototype.BrowserFeatures.SelectorsAPI) return false; if (Selector.CASE_INSENSITIVE_CLASS_NAMES) return false; if (!Selector._div) Selector._div = new Element('div'); try { Selector._div.querySelector(this.expression); } catch(e) { return false; } return true; }, compileMatcher: function() { var e = this.expression, ps = Selector.patterns, h = Selector.handlers, c = Selector.criteria, le, p, m, len = ps.length, name; if (Selector._cache[e]) { this.matcher = Selector._cache[e]; return; } this.matcher = ["this.matcher = function(root) {", "var r = root, h = Selector.handlers, c = false, n;"]; while (e && le != e && (/\S/).test(e)) { le = e; for (var i = 0; i<len; i++) { p = ps[i].re; name = ps[i].name; if (m = e.match(p)) { this.matcher.push(Object.isFunction(c[name]) ? c[name](m) : new Template(c[name]).evaluate(m)); e = e.replace(m[0], ''); break; } } } this.matcher.push("return h.unique(n);\n}"); eval(this.matcher.join('\n')); Selector._cache[this.expression] = this.matcher; }, compileXPathMatcher: function() { var e = this.expression, ps = Selector.patterns, x = Selector.xpath, le, m, len = ps.length, name; if (Selector._cache[e]) { this.xpath = Selector._cache[e]; return; } this.matcher = ['.//*']; while (e && le != e && (/\S/).test(e)) {

Page 112: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

112

le = e; for (var i = 0; i<len; i++) { name = ps[i].name; if (m = e.match(ps[i].re)) { this.matcher.push(Object.isFunction(x[name]) ? x[name](m) : new Template(x[name]).evaluate(m)); e = e.replace(m[0], ''); break; } } } this.xpath = this.matcher.join(''); Selector._cache[this.expression] = this.xpath; }, findElements: function(root) { root = root || document; var e = this.expression, results; switch (this.mode) { case 'selectorsAPI': if (root !== document) { var oldId = root.id, id = $(root).identify(); id = id.replace(/[\.:]/g, "\\$0"); e = "#" + id + " " + e; } results = $A(root.querySelectorAll(e)).map(Element.extend); root.id = oldId; return results; case 'xpath': return document._getElementsByXPath(this.xpath, root); default: return this.matcher(root); } }, match: function(element) { this.tokens = []; var e = this.expression, ps = Selector.patterns, as = Selector.assertions; var le, p, m, len = ps.length, name; while (e && le !== e && (/\S/).test(e)) { le = e; for (var i = 0; i<len; i++) { p = ps[i].re; name = ps[i].name; if (m = e.match(p)) { if (as[name]) { this.tokens.push([name, Object.clone(m)]); e = e.replace(m[0], ''); } else { return this.findElements(document).include(element); } } } } var match = true, name, matches; for (var i = 0, token; token = this.tokens[i]; i++) { name = token[0], matches = token[1]; if (!Selector.assertions[name](element, matches)) { match = false; break; } } return match; }, toString: function() { return this.expression; },

Page 113: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

113

inspect: function() { return "#<Selector:" + this.expression.inspect() + ">"; } }); if (Prototype.BrowserFeatures.SelectorsAPI && document.compatMode === 'BackCompat') { Selector.CASE_INSENSITIVE_CLASS_NAMES = (function(){ var div = document.createElement('div'), span = document.createElement('span'); div.id = "prototype_test_id"; span.className = 'Test'; div.appendChild(span); var isIgnored = (div.querySelector('#prototype_test_id .test') !== null); div = span = null; return isIgnored; })(); } Object.extend(Selector, { _cache: { }, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: '/following-sibling::*', tagName: function(m) { if (m[1] == '*') return ''; return "[local-name()='" + m[1].toLowerCase() + "' or local-name()='" + m[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id='#{1}']", attrPresence: function(m) { m[1] = m[1].toLowerCase(); return new Template("[@#{1}]").evaluate(m); }, attr: function(m) { m[1] = m[1].toLowerCase(); m[3] = m[5] || m[6]; return new Template(Selector.xpath.operators[m[2]]).evaluate(m); }, pseudo: function(m) { var h = Selector.xpath.pseudos[m[1]]; if (!h) return ''; if (Object.isFunction(h)) return h(m); return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); }, operators: { '=': "[@#{1}='#{3}']", '!=': "[@#{1}!='#{3}']", '^=': "[starts-with(@#{1}, '#{3}')]", '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", '*=': "[contains(@#{1}, '#{3}')]", '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { 'first-child': '[not(preceding-sibling::*)]', 'last-child': '[not(following-sibling::*)]', 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', 'empty': "[count(*) = 0 and (count(text()) = 0)]", 'checked': "[@checked]", 'disabled': "[(@disabled) and (@type!='hidden')]", 'enabled': "[not(@disabled) and (@type!='hidden')]", 'not': function(m) { var e = m[6], p = Selector.patterns, x = Selector.xpath, le, v, len = p.length, name; var exclusion = []; while (e && le != e && (/\S/).test(e)) { le = e;

Page 114: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

114

for (var i = 0; i<len; i++) { name = p[i].name if (m = e.match(p[i].re)) { v = Object.isFunction(x[name]) ? x[name](m) : new Template(x[name]).evaluate(m); exclusion.push("(" + v.substring(1, v.length - 1) + ")"); e = e.replace(m[0], ''); break; } } } return "[not(" + exclusion.join(" and ") + ")]"; }, 'nth-child': function(m) { return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); }, 'nth-last-child': function(m) { return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); }, 'nth-of-type': function(m) { return Selector.xpath.pseudos.nth("position() ", m); }, 'nth-last-of-type': function(m) { return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); }, 'first-of-type': function(m) { m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); }, 'last-of-type': function(m) { m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); }, 'only-of-type': function(m) { var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); }, nth: function(fragment, m) { var mm, formula = m[6], predicate; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; if (mm = formula.match(/^(\d+)$/)) // digit only return '[' + fragment + "= " + mm[1] + ']'; if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (mm[1] == "-") mm[1] = -1; var a = mm[1] ? Number(mm[1]) : 1; var b = mm[2] ? Number(mm[2]) : 0; predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + "((#{fragment} - #{b}) div #{a} >= 0)]"; return new Template(predicate).evaluate({ fragment: fragment, a: a, b: b }); } } } }, criteria: { tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', className: 'n = h.className(n, r, "#{1}", c); c = false;', id: 'n = h.id(n, r, "#{1}", c); c = false;', attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;', attr: function(m) { m[3] = (m[5] || m[6]); return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); }, descendant: 'c = "descendant";', child: 'c = "child";', adjacent: 'c = "adjacent";', laterSibling: 'c = "laterSibling";' }, patterns: [ { name: 'laterSibling', re: /^\s*~\s*/ }, { name: 'child', re: /^\s*>\s*/ }, { name: 'adjacent', re: /^\s*\+\s*/ },

Page 115: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

115

{ name: 'descendant', re: /^\s/ }, { name: 'tagName', re: /^\s*(\*|[\w\-]+)(\b|$)?/ }, { name: 'id', re: /^#([\w\-\*]+)(\b|$)/ }, { name: 'className', re: /^\.([\w\-\*]+)(\b|$)/ }, { name: 'pseudo', re: /^:((first|last|nth|nth-last|only)(-child|-of-

type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/ }, { name: 'attrPresence', re: /^\[((?:[\w-]+:)?[\w-]+)\]/ }, { name: 'attr', re: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ } ], assertions: { tagName: function(element, matches) { return matches[1].toUpperCase() == element.tagName.toUpperCase(); }, className: function(element, matches) { return Element.hasClassName(element, matches[1]); }, id: function(element, matches) { return element.id === matches[1]; }, attrPresence: function(element, matches) { return Element.hasAttribute(element, matches[1]); }, attr: function(element, matches) { var nodeValue = Element.readAttribute(element, matches[1]); return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]); } }, handlers: { concat: function(a, b) { for (var i = 0, node; node = b[i]; i++) a.push(node); return a; }, mark: function(nodes) { var _true = Prototype.emptyFunction; for (var i = 0, node; node = nodes[i]; i++) node._countedByPrototype = _true; return nodes; }, unmark: function(nodes) { for (var i = 0, node; node = nodes[i]; i++) node._countedByPrototype = undefined; return nodes; }, index: function(parentNode, reverse, ofType) { parentNode._countedByPrototype = Prototype.emptyFunction; if (reverse) { for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { var node = nodes[i]; if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; } } else { for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; } }, unique: function(nodes) { if (nodes.length == 0) return nodes; var results = [], n; for (var i = 0, l = nodes.length; i < l; i++) if (typeof (n = nodes[i])._countedByPrototype == 'undefined') { n._countedByPrototype = Prototype.emptyFunction; results.push(Element.extend(n)); }

Page 116: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

116

return Selector.handlers.unmark(results); }, descendant: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) h.concat(results, node.getElementsByTagName('*')); return results; }, child: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) { for (var j = 0, child; child = node.childNodes[j]; j++) if (child.nodeType == 1 && child.tagName != '!') results.push(child); } return results; }, adjacent: function(nodes) { for (var i = 0, results = [], node; node = nodes[i]; i++) { var next = this.nextElementSibling(node); if (next) results.push(next); } return results; }, laterSibling: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) h.concat(results, Element.nextSiblings(node)); return results; }, nextElementSibling: function(node) { while (node = node.nextSibling) if (node.nodeType == 1) return node; return null; }, previousElementSibling: function(node) { while (node = node.previousSibling) if (node.nodeType == 1) return node; return null; }, tagName: function(nodes, root, tagName, combinator) { var uTagName = tagName.toUpperCase(); var results = [], h = Selector.handlers; if (nodes) { if (combinator) { if (combinator == "descendant") { for (var i = 0, node; node = nodes[i]; i++) h.concat(results, node.getElementsByTagName(tagName)); return results; } else nodes = this[combinator](nodes); if (tagName == "*") return nodes; } for (var i = 0, node; node = nodes[i]; i++) if (node.tagName.toUpperCase() === uTagName) results.push(node); return results; } else return root.getElementsByTagName(tagName); }, id: function(nodes, root, id, combinator) { var targetNode = $(id), h = Selector.handlers; if (root == document) { if (!targetNode) return []; if (!nodes) return [targetNode]; } else { if (!root.sourceIndex || root.sourceIndex < 1) { var nodes = root.getElementsByTagName('*'); for (var j = 0, node; node = nodes[j]; j++) { if (node.id === id) return [node];

Page 117: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

117

} } } if (nodes) { if (combinator) { if (combinator == 'child') { for (var i = 0, node; node = nodes[i]; i++) if (targetNode.parentNode == node) return [targetNode]; } else if (combinator == 'descendant') { for (var i = 0, node; node = nodes[i]; i++) if (Element.descendantOf(targetNode, node)) return [targetNode]; } else if (combinator == 'adjacent') { for (var i = 0, node; node = nodes[i]; i++) if (Selector.handlers.previousElementSibling(targetNode) == node) return [targetNode]; } else nodes = h[combinator](nodes); } for (var i = 0, node; node = nodes[i]; i++) if (node == targetNode) return [targetNode]; return []; } return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; }, className: function(nodes, root, className, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); return Selector.handlers.byClassName(nodes, root, className); }, byClassName: function(nodes, root, className) { if (!nodes) nodes = Selector.handlers.descendant([root]); var needle = ' ' + className + ' '; for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { nodeClassName = node.className; if (nodeClassName.length == 0) continue; if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) results.push(node); } return results; }, attrPresence: function(nodes, root, attr, combinator) { if (!nodes) nodes = root.getElementsByTagName("*"); if (nodes && combinator) nodes = this[combinator](nodes); var results = []; for (var i = 0, node; node = nodes[i]; i++) if (Element.hasAttribute(node, attr)) results.push(node); return results; }, attr: function(nodes, root, attr, value, operator, combinator) { if (!nodes) nodes = root.getElementsByTagName("*"); if (nodes && combinator) nodes = this[combinator](nodes); var handler = Selector.operators[operator], results = []; for (var i = 0, node; node = nodes[i]; i++) { var nodeValue = Element.readAttribute(node, attr); if (nodeValue === null) continue; if (handler(nodeValue, value)) results.push(node); } return results; }, pseudo: function(nodes, name, value, root, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); if (!nodes) nodes = root.getElementsByTagName("*"); return Selector.pseudos[name](nodes, value, root); } }, pseudos: { 'first-child': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.previousElementSibling(node)) continue; results.push(node);

Page 118: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

118

} return results; }, 'last-child': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.nextElementSibling(node)) continue; results.push(node); } return results; }, 'only-child': function(nodes, value, root) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) results.push(node); return results; }, 'nth-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root); }, 'nth-last-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true); }, 'nth-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, false, true); }, 'nth-last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true, true); }, 'first-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, false, true); }, 'last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, true, true); }, 'only-of-type': function(nodes, formula, root) { var p = Selector.pseudos; return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); }, getIndices: function(a, b, total) { if (a == 0) return b > 0 ? [b] : []; return $R(1, total).inject([], function(memo, i) { if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); return memo; }); }, nth: function(nodes, formula, root, reverse, ofType) { if (nodes.length == 0) return []; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; var h = Selector.handlers, results = [], indexed = [], m; h.mark(nodes); for (var i = 0, node; node = nodes[i]; i++) { if (!node.parentNode._countedByPrototype) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } } if (formula.match(/^\d+$/)) { // just a number formula = Number(formula); for (var i = 0, node; node = nodes[i]; i++) if (node.nodeIndex == formula) results.push(node); } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (m[1] == "-") m[1] = -1; var a = m[1] ? Number(m[1]) : 1; var b = m[2] ? Number(m[2]) : 0; var indices = Selector.pseudos.getIndices(a, b, nodes.length); for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { for (var j = 0; j < l; j++) if (node.nodeIndex == indices[j]) results.push(node); } } h.unmark(nodes);

Page 119: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

119

h.unmark(indexed); return results; }, 'empty': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (node.tagName == '!' || node.firstChild) continue; results.push(node); } return results; }, 'not': function(nodes, selector, root) { var h = Selector.handlers, selectorType, m; var exclusions = new Selector(selector).findElements(root); h.mark(exclusions); for (var i = 0, results = [], node; node = nodes[i]; i++) if (!node._countedByPrototype) results.push(node); h.unmark(exclusions); return results; }, 'enabled': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (!node.disabled && (!node.type || node.type !== 'hidden')) results.push(node); return results; }, 'disabled': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (node.disabled) results.push(node); return results; }, 'checked': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (node.checked) results.push(node); return results; } }, operators: { '=': function(nv, v) { return nv == v; }, '!=': function(nv, v) { return nv != v; }, '^=': function(nv, v) { return nv == v || nv && nv.startsWith(v); }, '$=': function(nv, v) { return nv == v || nv && nv.endsWith(v); }, '*=': function(nv, v) { return nv == v || nv && nv.include(v); }, '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, '|=': function(nv, v) { return ('-' + (nv || "").toUpperCase() + '-').include('-' + (v || "").toUpperCase() + '-'); } }, split: function(expression) { var expressions = []; expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { expressions.push(m[1].strip()); }); return expressions; }, matchElements: function(elements, expression) { var matches = $$(expression), h = Selector.handlers; h.mark(matches); for (var i = 0, results = [], element; element = elements[i]; i++) if (element._countedByPrototype) results.push(element); h.unmark(matches); return results; }, findElement: function(elements, expression, index) { if (Object.isNumber(expression)) { index = expression; expression = false; } return Selector.matchElements(elements, expression || '*')[index || 0];

Page 120: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

120

}, findChildElements: function(element, expressions) { expressions = Selector.split(expressions.join(',')); var results = [], h = Selector.handlers; for (var i = 0, l = expressions.length, selector; i < l; i++) { selector = new Selector(expressions[i].strip()); h.concat(results, selector.findElements(element)); } return (l > 1) ? h.unique(results) : results; } }); if (Prototype.Browser.IE) { Object.extend(Selector.handlers, { concat: function(a, b) { for (var i = 0, node; node = b[i]; i++) if (node.tagName !== "!") a.push(node); return a; }, unmark: function(nodes) { for (var i = 0, node; node = nodes[i]; i++) node.removeAttribute('_countedByPrototype'); return nodes; } }); } function $$() { return Selector.findChildElements(document, $A(arguments)); } var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit; var data = elements.inject({ }, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; } } return result; }); return options.hash ? data : Object.toQueryString(data); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'), element, arr = [ ], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) {

Page 121: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

121

arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); }); }, focusFirstElement: function(form) { form = $(form); form.findFirstElement().activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } };

Page 122: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

122

/*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !['button', 'reset', 'submit'].include(element.type))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } };

Page 123: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

123

/*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = { input: function(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element, value); default: return Form.Element.Serializers.textarea(element, value); } }, inputSelector: function(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; }, textarea: function(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; }, select: function(element, value) { if (Object.isUndefined(value)) return this[element.type == 'select-one' ? 'selectOne' : 'selectMany'](element); else { var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } }, selectOne: function(element) { var index = element.selectedIndex; return index >= 0 ? this.optionValue(element.options[index]) : null; }, selectMany: function(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(this.optionValue(opt)); } return values; }, optionValue: function(opt) { return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; } }; /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, {

Page 124: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

124

initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } });

Page 125: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

125

Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var _isButton; if (Prototype.Browser.IE) { var buttonMap = { 0: 1, 1: 4, 2: 2 }; _isButton = function(event, code) { return event.button === buttonMap[code]; }; } else if (Prototype.Browser.WebKit) { _isButton = function(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 1 && event.metaKey; default: return false; } }; } else { _isButton = function(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); }; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = Event.element(event); if (!expression) return element; var elements = [element].concat(element.ancestors());

Page 126: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

126

return Selector.findElement(elements, expression, 0); } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (Prototype.Browser.IE) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': element = event.fromElement; break; case 'mouseout': element = event.toElement; break; default: return null; } return Element.extend(element); } Object.extend(methods, { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }); Event.extend = function(event, element) { if (!event) return false; if (event._extendedByPrototype) return event;

Page 127: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

127

event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); return Object.extend(event, methods); }; } else { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); Event.extend = Prototype.K; } function _createResponder(element, eventName, handler) { var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry = Element.retrieve(element, 'prototype_event_registry', $H()); } var respondersForEvent = registry.get(eventName); if (Object.isUndefined()) { respondersForEvent = []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return false; var responder; if (eventName.include(":")) { responder = function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!Prototype.Browser.IE && (eventName === "mouseenter" || eventName === "mouseleave")) { if (eventName === "mouseenter" || eventName === "mouseleave") { responder = function(event) { Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); }; } } else { responder = function(event) { Event.extend(event, element); handler.call(element, event); }; } } responder.handler = handler; respondersForEvent.push(responder);

Page 128: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

128

return responder; } function _destroyCache() { for (var i = 0, length = CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] = null; } } var CACHE = []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName = Prototype.K; if (!Prototype.Browser.IE) { _getDOMEventName = function(eventName) { var translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; return eventName in translations ? translations[eventName] : eventName; }; } function observe(element, eventName, handler) { element = $(element); var responder = _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onfilterchange", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element = $(element); var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) return element; if (eventName && !handler) { var responders = registry.get(eventName); if (Object.isUndefined(responders)) return element; responders.each( function(r) { Element.stopObserving(element, eventName, r.handler); }); return element; } else if (!eventName) { registry.each( function(pair) { var eventName = pair.key, responders = pair.value; responders.each( function(r) {

Page 129: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

129

Element.stopObserving(element, eventName, r.handler); }); }); return element; } var responders = registry.get(eventName); if (!responders) return; var responder = responders.find( function(r) { return r.handler === handler; }); if (!responder) return element; var actualEventName = _getDOMEventName(eventName); if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onfilterchange", responder); } } else { if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element = $(element); if (Object.isUndefined(bubble)) bubble = true; if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', true, true); } else { event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onfilterchange'; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving }); Element.addMethods({ fire: fire,

Page 130: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

130

observe: observe, stopObserving: stopObserving }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event = Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer = pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window == top) timer = pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) {

Page 131: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

131

return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) {

Page 132: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

132

Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return $(parentElement || document.body).getElementsByClassName(className); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) {

Page 133: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

133

if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/

Archivo: prototype.js

Elaboración: Carlos A. Zambrano I.

Cuadro 6

Archivos del Proyecto <?php //session_start(); //if (!isset($_SESSION["usNick"])){header('Location: ../seguridad/entrar.php?xyz=x'); exit();} header("Cache-Control: no-store, no-cache, must-revalidate"); header('Content-type: application/vnd.ms-word'); header("Content-Disposition: attachment; filename=WIKICISC.doc"); header("Pragma: no-cache"); header("Expires: 0"); require ("../../../../lib/clase_MySql.inc.php"); $cnx = new DB_mysql ; $cnx->conectar(); $id = $_GET["id"]; $sql=""; $sql="SELECT dat_nombre_funcion, leng_nombre, dat_descripcion, dat_sintaxys, dat_parametros, dat_ejemplo,

wik_datos_id FROM wik_datos d, wik_lenguajes l where l.wik_lenguajes_id = d.wik_lenguajes_id and wik_datos_id = ".$id; // echo $cnx->consultas_2($sql); $consulta = $cnx->consulta($sql); $campos = mysql_fetch_array($consulta); function argumentos($arreglo){ $arreglo = substr($arreglo,0, strlen($arreglo)-1); $campos = explode("@", $arreglo ); $data=""; $data.="<table width='100%' border='0' cellspacing='0' cellpadding='0'>"; for ($p=0; $p < count($campos); $p+=2){ $data.="<tr><td><p><i class='lstargumentos'>".$campos[$p]."</i></p></td></tr>"; $data.="<tr><td align='center'><div align='left'

class='bloqueDescrParam'>".$campos[$p+1]."</div></td></tr>"; } $data.="</table>"; echo $data; } ?> <script type="text/javascript" src="../../../../js/prototype.js"></script> <style> .tituloBloque{ background:url(/elearning_cisc/images/arrow_show.gif) no-repeat left center; padding-left:12px; font:10px Verdana, Arial, Helvetica, sans-serif; font-weight:bold; border-bottom:1px dashed #CCC8C4; color:#006600; } .bloqueSintaxis{ font:15px Verdana, Arial, Helvetica, sans-serif; color:#000; padding:0.5em;

Page 134: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

134

} .bloqueEjemplos{ font:15px Geneva, Arial, Helvetica, sans-serif; /*background:#FFF url(../../../images/bg_panel_top_right.gif) repeat-y right;*/ background: #DFE6F2; border:1px solid #CCC; padding:0.5em; display:block; margin-top:2px; -moz-border-radius: 4px 4px 4px 4px; width:97%; } h3 { margin: 0; padding: 0; font-weight: bold; font-family: Tahoma,Helvetica,Arial,sans-serif; color:#1b78b7; font-size: 1.4em; } .bloqueDescr{ padding-top:7px; font:14px Verdana, Arial, Helvetica, sans-serif; color:#000000; line-height:12px; padding:0.5em;} </style> <body style="background:#FFF; height:100%"> <table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin:0; padding:0;"> <tr><td> <div style='text-align:left'><h3><?php echo $campos[0]; ?></h3></div> <div style='margin-bottom:7px; margin_top:2px; font-size:14px'><span style='font-size:10px'>Origen:</span> <b><?php

echo $campos[1]; ?></b></div><br /> <div class='tituloBloque'>Descripci&oacute;n</div> <div class='bloqueDescr'><?php echo $campos[2]; ?></div><br /> <div class='tituloBloque'>Sintaxis</div> <div class='bloqueSintaxis' style='display:block' ><?php echo $campos[3]; ?></div><br /> <div class='tituloBloque'>Par&aacute;metros</div> <div id='aquiArgumentos' ><?php argumentos($campos[4]); ?></div><br /> <div class='tituloBloque'>Ejemplos</div> <div class='bloqueEjemplos'> <!--<div id='ejemplosArchivo'></div>--> <?php $nFunc = $id ; $ar = fopen("../descripciones/".$nFunc.".wik","r") or die("No se pudo abrir el archivo"); while (!feof($ar)) { $linea = fgets($ar); $lineasalto = nl2br($linea); echo $lineasalto; } fclose($ar); ?> </div> <br /><br /><br /> <span style="font-size:11px; color:#666"><b>Descargado desde el m&oacute;dulo Wiki-Funciones de

eCISC</b></span> </td></tr></table> </body>

Archivo: aWord.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 7

Page 135: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

135

Archivos del Proyecto <?php //esto es para decirle al cache de procesos del navegador que se desactive //header("Cache-Control: no-store, no-cache, must-revalidate"); require ("../../../../lib/clase_MySql.inc.php"); $cnx = new DB_mysql ; $cnx->conectar(); session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-

transitional.dtd"> <link rel="stylesheet" href="../../css/template.css" type="text/css" /> <script type="text/javascript" src="../../../../js/prototype.js"></script> <script type="text/javascript" src="../../js/funciones.js"></script> <div style="width:98%; height:100%; padding:0px 0px 10px 0px"> <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"> <tr><td width="79%" valign="top" align="center"> <table border="0" cellpadding="4" cellspacing="0" style="width: 100%; border-bottom:1px dashed #0F6FBD;

vertical-align: top; color: rgb(0, 0, 0); -moz-border-radius: 4px 4px 4px 4px;"> <tr> <td colspan="2" valign="middle"> <div style="float:left; margin-right:10px;"><img src="/elearning_cisc/contenido/wikikey/images/istory-27.ico"

alt="ico1" /></div> <div style=" text-align:left"><h3>Bienvenidos a WikiFunciones.</h3></div> <div style="margin-bottom:7px; margin-top:4px; color:#006600;text-align:justify; padding:0px 30px 3px

40px; font-weight:normal; font-size:14px; line-height:14px;">&quot;Utilice la caja de busqueda para localizar las funciones que requiera, puede tambien ingresar palabras que puedan estar en la descripci&oacute;n de alguna funci&oacute;n.&quot;</div>

</td> <td width="50%" valign="middle" align="center"> <div id="buscador" style="width:300px; background:#ffffff url(../../../../images/bg_panel_top_right.gif)

repeat-y right; border:1px solid #0C1589; -moz-border-radius: 4px 4px 4px 4px; padding:7px 7px 7px 7px;">

<table width="100%" border="0"> <tr> <td width="85%"><input name="find" id="find" type="text" style="-moz-border-radius: 4px 4px 4px 4px;

font-size:17px; background:#FFFFFF; border:none; width:100%; border-bottom:1px dashed #666666" title="Ingrese busqueda" value="B&uacute;squeda" onclick="this.value=''" onkeypress="validar_enter(event, this.value)" />

</td> <td width="15%" align="center" id="lupa"><img src="../../../../images/ico6.png" alt="search"

style="cursor:pointer" onclick="buscarTodo($('find').value)" /></td> </tr> </table> </div> <div style="height:5px"></div> <!-- separador --> </td></tr> </table> </td></tr> <tr><td>&nbsp;</td></tr> <tr><td> <table width="100%" height="310px" border="0" cellpadding="4" cellspacing="0" > <tr> <td width="50%" valign="top"> <div id="iUltimos" style="-moz-border-radius: 4px 4px 4px 4px; margin:0px 0px 0px 0px; padding:0px

10px 4px 0px; text-align:justify; font:10px sans-serif;height:260px; border-bottom:1px dashed #0F6FBD; "> <div style="float:left; margin-right:10px;"><img

src="/elearning_cisc/contenido/wikikey/images/Computer-39.ico" alt="ico1" /></div> <div style=" text-align:left"><h3>Ultimas Contribuciones Ingresadas al Sistema</h3></div> <div class="small" style="margin-bottom:7px; color:#000; font-weight:bold">Recuerde que puede

realizar sus comentarios debajo de cada hoja de funciones, ademas editar si lo cree necesario.</div> <div id="contUltimos" style="-moz-border-radius: 4px 4px 4px 4px; padding:0px 0px 8px 35px;

height:200px; overflow:auto;"> <?php $result = $cnx->consulta('SELECT leng_nombre,dat_nombre_funcion,dat_creado_el, dat_descripcion,

wik_datos_id FROM wik_datos w, wik_lenguajes l where l.wik_lenguajes_id = w.wik_lenguajes_id and dat_estado = "Y" order by dat_creado_el desc limit 0,6') ;

?> <table width='100%' border='0' cellspacing='3' cellpadding='3'> <?php while ($row = mysql_fetch_row($result)) { ?> <tr bgcolor="#E1DFFF"> <td style='color:#006600; font-size:12px'>

Page 136: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

136

<a href='#' onclick='buscarDatosFunciones(&quot;<?php echo $row[4];?>&quot;)'><?php echo $row[1];?></a> // <b><?php echo $row[0];?></b> // <?php echo $row[2];?><br /><span style='color:#333; font-size:11px'><?php echo $row[3];?></span></td>

</tr> <?php } if(mysql_num_rows($result) == 0){ ?> <tr bgcolor="#E1DFFF"><td colspan='3'>No hay resultados..</td></tr> <?php } ?>

</table> </div> </div> </td> </tr> <tr> <td width="50%" valign="top" > <div id="Vigilados" style="-moz-border-radius: 4px 4px 4px 4px; margin:0px 0px 0px 0px; padding:0px 10px

4px 0px; text-align:justify; font:10px sans-serif;height:260px; border-bottom:1px dashed #0F6FBD; "> <div style="float:left; margin-right:10px;"><img src="/elearning_cisc/contenido/wikikey/images/Workgroup-

8.ico" alt="vig" /></div> <div style=" text-align:left"><h3>Tus Contribuciones Vigiladas</h3></div> <div class="small" style="margin-bottom:7px; color:#000; font-weight:bold">Aqu&iacute; ver&aacute; si sus

contibuciones vigiladas fueron editadas por otras personas.</div> <div id="contVigilados" style="-moz-border-radius: 4px 4px 4px 4px; padding:0px 0px 8px 40px;

height:200px; overflow:auto"> <?php $idUsuario = ""; if( $_SESSION["usTipo"] == "alumno" ){ $idUsuario = $cnx->unDato('select exa_alumno_id from exa_alumno where

alu_identificacion ='.$_SESSION["usNick"]) ; }else{ $idUsuario = $cnx->unDato('select exa_profesor_id from exa_profesor where

pro_identificacion ='.$_SESSION["usNick"]) ; } $result = $cnx->consulta("SELECT leng_nombre,dat_nombre_funcion,wik_datos_id FROM wik_datos w, wik_lenguajes l where dat_creado_por =".$idUsuario." and l.wik_lenguajes_id = w.wik_lenguajes_id and w.dat_seguido='Y' and w.dat_estado = 'Y' order by dat_creado_el desc"); echo "<table width='100%' border='0' cellspacing='3' cellpadding='3' style='font-size:12px; font-

weight:bold;'>"; //echo "<tr style='background:#3F5F94; color:#FFF'><td>Lenguaje</td><td>Funcion</td><td>Fecha

de Modificaci&oacute;n</td></tr>"; while ($row = mysql_fetch_row($result)) { echo "<tr bgcolor='#E1DFFF'><td style='color:#006600; font-size:12px'> <a

href='javascript:buscarDatosFunciones(&quot;".$row[2]."&quot;)'>".$row[1]."</a> // <b>".$row[0]."</b> // <span style='color:#000'>";

"</span></td></tr>"; } if(mysql_num_rows($result) == 0){ echo "<tr bgcolor='#E1DFFF'><td>No hay resultados..</td></tr>"; } echo "</table>"; ?> </div> </div> </td> </tr> </table> <div style="padding:10px 10px 4px 10px; text-align:justify;height:190px; width:98%"> <div style="float:left; margin-right:10px;"><img src="../../../../images/m_wiki.png" width="32" height="32"

alt="wiki_" /></div> <div style=" text-align:left"><h3>Reglas para el buen usuario.</h3></div> <div class="small" style="margin-bottom:7px; color:#000; font-weight:bold">Recuerde que este sitio

esta hecho para ayudar a los estudiantes en el desarrollo de sus estudios academicos, por favor ayudenos tener una informaci&oacute;n correcta y efectiva.</div>

<div align="left" style="padding:5px; padding-left:40px;line-height:19px; font: 14px 'Lucida Sans Unicode', 'Lucida Grande', sans-serif">

Page 137: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

137

<b>Como alumno colaborador en la edicion de la informaci&oacute;n debera cumplir las siguientes normas del sitio:</b>

<br> a) No borrar contenido importante, <br> b) No introducir errores, <br> c) No agregar contenido inapropiado u ofensivo, <br> d) En los comentarios ingresados, respetar las opiniones o publicaciones de los demas, <br> e) No olvide citar el origen bibliogr&aacute;fico o web de la infromaci&oacute;n que esta

publicando. </div> </div> </td> </tr> </table> </div>

Archivo: Buscador.php

Eleboración: Carlos A. Zambrano Izquierdo

Cuadro 8.

Archivos del Proyecto <?php //session_start(); //if (!isset($_SESSION["usNick"])){header('Location: ../seguridad/entrar.php?xyz=x'); exit();} require ("../../../../lib/clase_MySql.inc.php"); $cnx = new DB_mysql ; $cnx->conectar(); $letra = $_POST["letra"]; $sql="SELECT leng_nombre,wik_lenguajes_id,'L' as tpl FROM wik_lenguajes where leng_nombre like '".$letra."%' union all SELECT dat_nombre_funcion,wik_datos_id,'F' as tpl FROM wik_datos where dat_estado = 'Y' and

dat_nombre_funcion like '".$letra."%'"; $result = $cnx->consulta($sql); $arr = array(); while ($row = mysql_fetch_row($result) ) { $arr[] = array("q1" => $row[0],"q2" => $row[1],"q3" => $row[2]); } echo json_encode($arr); ?>

Archivo: buscarr.php

Eleboración: Carlos A. Zambrano Izquierdo

Cuadro 9.

Archivos del Proyecto <?php //session_start(); //if (!isset($_SESSION["usNick"])){header('Location: ../seguridad/entrar.php?xyz=x'); exit();} require ("../../../../lib/clase_MySql.inc.php"); $cnx = new DB_mysql ; $cnx->conectar(); //$tipo = $_POST["tipo"]; $letra = $_POST["letra"]; $op = $_POST["op"]; $sql=""; if($op == 1){ $sql="SELECT d.dat_nombre_funcion,d.wik_datos_id,'F' as tpl, d.dat_descripcion, d.dat_creado_el, l.leng_nombre FROM wik_datos d inner join wik_lenguajes l on l.wik_lenguajes_id = d.wik_lenguajes_id where d.dat_estado='Y' and dat_nombre_funcion like '%".$letra."%' limit 0,15 union all SELECT d.dat_nombre_funcion,d.wik_datos_id,'D' as tpl, d.dat_descripcion, d.dat_creado_el , l.leng_nombre FROM wik_datos d

Page 138: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

138

inner join wik_lenguajes l on l.wik_lenguajes_id = d.wik_lenguajes_id where d.dat_estado='Y' and dat_descripcion like '%".$letra."%' limit 0,15"; } else {$sql="SELECT d.dat_nombre_funcion,d.wik_datos_id,'F' as tpl, d.dat_descripcion, d.dat_creado_el, l.leng_nombre FROM wik_datos d inner join wik_lenguajes l on l.wik_lenguajes_id = d.wik_lenguajes_id where d.dat_estado='Y' and dat_nombre_funcion like '%".$letra."%' union all SELECT d.dat_nombre_funcion,d.wik_datos_id,'D' as tpl, d.dat_descripcion, d.dat_creado_el , l.leng_nombre FROM wik_datos d inner join wik_lenguajes l on l.wik_lenguajes_id = d.wik_lenguajes_id where d.dat_estado='Y' and dat_descripcion like '%".$letra."%'";} $result = $cnx->consulta($sql); $arr = array(); while ($row = mysql_fetch_row($result) ) { $arr[] = array("q1" => $row[0],"q2" => $row[1],"q3" => $row[2],"q4" => $row[3],"q5" => $row[4],"q6" =>

$row[5]);//,"q3" => $row[2],"q4" => $row[3],"q5" => $row[4],"q6" => $row[5],"q7" => $row[6],"q8" => $row[7],"q9" => $row[8]);

} echo json_encode($arr); ?>

Archivo: buscarCB.php

Eleboración: Carlos A. Zambrano Izquierdo

Cuadro 9.

Archivos del Proyecto <?php //session_start(); //if (!isset($_SESSION["usNick"])){header('Location: ../seguridad/entrar.php?xyz=x'); exit();} require ("../../../../lib/clase_MySql.inc.php"); $cnx = new DB_mysql ; $cnx->conectar(); $id = $_POST["id"]; $sql=""; $sql="SELECT dat_nombre_funcion, leng_nombre, dat_descripcion, dat_sintaxys, dat_parametros, dat_ejemplo,

wik_datos_id FROM wik_datos d, wik_lenguajes l where l.wik_lenguajes_id = d.wik_lenguajes_id and wik_datos_id = ".$id; echo $cnx->consultas_2($sql); ?>

Archivo: buscarDatos.php

Elaboracion: Carlos A. Zambrano Izquierdo

Cuadro 10.

Archivos del Proyecto <?php $nFunc = $_POST['id'] ; $ar = fopen("../descripciones/".$nFunc.".wik","r") or die("No se pudo abrir el archivo"); while (!feof($ar)) { $linea = fgets($ar); $lineasalto = nl2br($linea); echo $lineasalto; } fclose($ar); ?>

Archivo: buscarDatos.php

Elaboracion: Carlos A. Zambrano Izquierdo

Cuadro 11.

Page 139: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

139

Archivo del Proyecto. <?php //session_start(); //if (!isset($_SESSION["usNick"])){header('Location: ../seguridad/entrar.php?xyz=x'); exit();} require ("../../../../lib/clase_MySql.inc.php"); $cnx = new DB_mysql ; $cnx->conectar(); $letra = $_POST["letra"]; $sql="SELECT d.dat_nombre_funcion,d.wik_datos_id, d.dat_descripcion, d.dat_creado_el,l.leng_nombre FROM

wik_datos d inner join wik_lenguajes l on l.wik_lenguajes_id = d.wik_lenguajes_id where d.dat_estado = 'Y' and d.wik_lenguajes_id = ".$letra." order by d.dat_nombre_funcion";

$result = $cnx->consulta($sql); $arr = array(); while ($row = mysql_fetch_row($result) ) { $arr[] = array("q1" => $row[0],"q2" => $row[1],"q3" => $row[2],"q4" => $row[3],"q5" => $row[4]); } echo json_encode($arr); ?>

Archivo: buscarfuncionestodas.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 12.

Archivos del proyecto <?php //session_start(); //if (!isset($_SESSION["usNick"])){header('Location: ../seguridad/entrar.php?xyz=x'); exit();} require ("../../../../lib/clase_MySql.inc.php"); $cnx = new DB_mysql ; $cnx->conectar(); $id = $_POST["id"]; $sql=""; $sql="SELECT * FROM wik_foro where wik_datos_id = ".$id.""; echo $cnx->verconsulta($sql); ?>

Archivo: comentarios.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 13.

Archivos del Proyecto <?php session_start(); //if (!isset($_SESSION["usNick"])) //header('Location: ../../../../lib/login/login.php'); ////////////////////////////////////////////////////////////////////////////// //esto es para decirle al cache de procesos del navegador que se desactive header("Cache-Control: no-store, no-cache, must-revalidate"); require ("../../../../lib/clase_MySql.inc.php"); $miconexion = new DB_mysql ; $miconexion->conectar(); function quitar($mensaje) { $mensaje = str_replace("<","&lt;",$mensaje); $mensaje = str_replace(">","&gt;",$mensaje); $mensaje = str_replace("\'","'",$mensaje); $mensaje = str_replace('\"',"&quot;",$mensaje); $mensaje = str_replace("\\\\","\\",$mensaje); return $mensaje; } $guardo=""; $sql = "INSERT INTO wik_foro (foro_texto, wik_datos_id, foro_estado, foro_creado_por,

foro_creado_el) VALUES ("; $sql .= "'".quitar($_POST['comm'])."'";

Page 140: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

140

$sql .= ",".quitar($_POST['id']).""; $sql .= ",'Y'"; $sql .= ",'".$_SESSION["usNoms"]."'"; $sql .= ",now()"; $sql .= ")"; $guardado2 = $miconexion->guardar($sql); // devuelve true o false if(!$guardado2 ) echo "Fallo.."; else echo "Gracias por su comentario.."; ?>

Archivo: guardarComent.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 14.

Archivos del Proyecto <?php // iniciamos session session_start (); header("Cache-Control: no-store, no-cache, must-revalidate"); require ("../../../../lib/clase_MySql.inc.php"); $miconexion = new DB_mysql ; $con=$miconexion->conectar(); $sql="delete from wik_denuncias where den_fecha_fin <= '".date("Y/m/d")."'"; $caducaron=$miconexion->guardar($sql); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-

transitional.dtd"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <link rel="stylesheet" href="../../css/template.css" type="text/css" /> <script type="text/javascript" src="../../../../js/prototype.js"></script> <script type="text/javascript" src="../../js/funciones.js"></script> <script type="text/javascript" src="../../js/textselection.js"></script> <script type="text/javascript" src="../../js/toolbar.js"></script> <!--<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>--> <script type="text/javascript" language="javascript"> function abrirMenu(){ //$("LstMenuVar").style.height='300px'; //$("LstMenuVar").style.overflow='auto'; if($("Lista").style.display=='inline') $("Lista").style.display='none'; else $("Lista").style.display='inline'; //$("MenuFuncionesVariante").style.display='inline'; /*$("MenuFuncionesVariante").style.overflow='auto'; */ } //////////////////////////////////////////////////////////////////// function denunciar(id,tipo){ var url='../seguimientos/denunciar.php'; var param= "id="+id+"&tipo="+tipo; // "nick="+ $F("nick") +"&password="+$F("password"); //alert(param); return; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, //var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true, onSuccess: function(transport) {

$("menuDenuncias").innerHTML=transport.responseText; alert("Denuncia enviada."); }} ); } /*////////////////////////////////////////////////////////////////////////////////////////////////////*/ function portada(){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("LstMenuVar").style.display="none"; var url='buscador.php'; var param= ""; // "nick="+ $F("nick") +"&password="+$F("password"); //var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true, onSuccess: function(transport) {

Page 141: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

141

$('ladoDer').innerHTML = transport.responseText; }} ); } ////////////////////////////////////////////////////////////////////////////////////////////////////////// function contribucion(opEd,var0,var1,var2){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("LstMenuVar").style.display="none"; var idFunc; try { idFunc = $('idFunc').value; } catch(e) { idFunc = '0';} var url='../editor/editor.php'; var param= "opEd="+opEd+"&idFunc="+idFunc+"&var0="+var0+"&var1="+var1+"&var2="+var2 ; //alert(param); var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { $('ladoDer').innerHTML = transport.responseText; agregap(); }} ); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// function seguimientos(){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("LstMenuVar").style.display="none"; var url='../seguimientos/seguimientos.php'; var param= ""; // "nick="+ $F("nick") +"&password="+$F("password"); //var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true, onSuccess: function(transport) { $('ladoDer').innerHTML = transport.responseText; }} ); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// function historial(id){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("LstMenuVar").style.display="none"; var url='../seguimientos/historial.php'; var param= "id="+id; // "nick="+ $F("nick") +"&password="+$F("password"); var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, //var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true, onSuccess: function(transport) { $('ladoDer').innerHTML = transport.responseText; }} ); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// function importante(){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("LstMenuVar").style.display="none"; var url='../importante/importante.php'; var param= ""; // "nick="+ $F("nick") +"&password="+$F("password"); //var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true, onSuccess: function(transport) { $('ladoDer').innerHTML = transport.responseText; }} ); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// function denuncias(){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("LstMenuVar").style.display="none";

Page 142: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

142

var url='../seguimientos/denuncias.php'; var param= ""; // "nick="+ $F("nick") +"&password="+$F("password"); //var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true, onSuccess: function(transport) { $('ladoDer').innerHTML = transport.responseText; }} ); } ////////////////////////////////////////////////////////////////////////////////////////////////////////// function loading(letra){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='block'; $("capaLista").align='left'; $("capaLista").innerHTML="&nbsp;&nbsp;<img src='../../../../images/5.gif' width='58' height='16' alt='loading' />"; setTimeout("buscarDatos('"+letra+"')",600); } ////////////////////////////////////////////////////////////////////////////////////////////////////////// //function loading2(idLeng){ // setTimeout("buscarDatosFunciones('"+idLeng+"')",980); // } //function loading2_2(idLeng){ // setTimeout("buscarTodasFunciones('"+idLeng+"')",980); // } ///////////////////////////////////////////////////////////////////////////////////////////////////////// function loading3(text){ //if($("cmbTipo").value==0) {alert("Escoja una opcion del listado [Buscar en?]..");return;} //$("capaLista").align='left'; textoLimpio = text.replace(/^\s*|\s*$/g,""); if(textoLimpio==""){$("capaBusc").style.display="none";return;} $("capaLista").innerHTML=""; $("capaLista").style.display="none"; $("capaBusc").style.display="inline"; $("imagenBuscar").innerHTML="<img src='../../../../images/14.gif' width='15' height='15' alt='loading' />"; //if(text.length <=40 ) {$("capaBusc").innerHTML=text;} setTimeout("buscarDatosCB('1"+text+"')",600); //buscarDatosCB(text); } // buscarDatos() //*****************************************************************************************************************/ // activa y muestra busquedas de el buscador alfabetico function buscarDatos(letra){ url='buscar.php'; param="letra="+letra; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { arrayRoles = transport.responseText.evalJSON(); $("capaLista").innerHTML=""; //$("capaLista").align='left'; var table = document.createElement('Table'); table.width='99%'; table.style.font="11px sans-serif"; table.border='0'; table.cellspacing="0"; table.cellpadding="0";

table.id="ListaDeLenguajes"; var tabBody = document.createElement('tbody'); var tabBody1 = document.createElement('tbody'); var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.setAttribute("colspan","2"); td1.innerHTML="<div style='float:left; color:#B1B1B1'>Lenguajes de

Programaci&oacute;n con inicial <b>"+letra+"</b>..</div><div style='float:right; cursor:pointer;'></div>"; tr.appendChild(td1); tabBody1.appendChild(tr); table.appendChild(tabBody1); var hayL=0; var hayF=0; /****************************************/ var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.width="600px"; var str =""; for(i=0;i<arrayRoles.length;i++) { if(arrayRoles[i].q3 == "L"){ str+="&nbsp;<a href='#'

onclick='javascript:buscarTodasFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'><b>"+ arrayRoles[i].q1+"</b></a>&nbsp;&nbsp;<b>-&nbsp;</b>";

//var td2 = document.createElement('TD');

Page 143: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

143

//td1.innerHTML ="&nbsp;<a href='javascript:loading2_2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+ arrayRoles[i].q1+"</a>";

hayL++; } // fin de L } // fin FOR td1.innerHTML = str.substring(0,str.length-11); //td2.innerHTML ="&nbsp;&nbsp;<img src='../../../../images/5.gif' width='58' height='16' alt='loading'

style='display:none' id='"+arrayRoles[i].q2+"' />"; tr.appendChild(td1); //tr.appendChild(td2); tabBody.appendChild(tr); /****************************************************/ table.appendChild(tabBody); $("capaLista").appendChild(table); if( hayL == 0 ){ var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.innerHTML ="&nbsp;No hay Resultados...";

tr.appendChild(td1); var tBody1 = document.createElement('tbody'); tBody1.appendChild(tr); table.appendChild(tBody1); } //***************************************** F var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.setAttribute("colspan","2"); var tBody2 = document.createElement('tbody'); td1.innerHTML="<div style='float:left; color:#B1B1B1'>Funciones de

programaci&oacute;n con inicial <b>"+letra+"</b>..</div>"; tr.appendChild(td1); tBody2.appendChild(tr); table.appendChild(tBody2); str="<div style='width:800px; display:inline-block; overflow:visible'>"; var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.width="600px"; //var td2 = document.createElement('TD'); var tBody3 = document.createElement('tbody'); for(i=0;i<arrayRoles.length;i++) { if(arrayRoles[i].q3 == "F"){ //td1.innerHTML ="&nbsp;<a href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+

arrayRoles[i].q1+"</a>"; str+= "&nbsp;<a href='#'

onclick='javascript:buscarDatosFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'><b>"+ arrayRoles[i].q1+"</b></a>&nbsp;&nbsp;<b>-&nbsp;</b>";

//td2.innerHTML ="&nbsp;&nbsp;<img src='../../../../images/5.gif' width='58' height='16' alt='loading' style='display:none' id='"+arrayRoles[i].q2+"' />";

if (i%9 == 0) str +="<br />"; hayF++; } // fin de L } // fin FOR str+="</div>" td1.innerHTML = str; //.substring(0,str.length-11); ;

tr.appendChild(td1); //tr.appendChild(td2); tBody3.appendChild(tr); table.appendChild(tBody3); $("capaLista").appendChild(table); if( hayF == 0){ var tr = document.createElement('TR'); var td1 = document.createElement('TD'); var tBody4 = document.createElement('tbody'); td1.innerHTML ="&nbsp;No hay Resultados...";

tr.appendChild(td1); tBody4.appendChild(tr); table.appendChild(tBody4); } } } ); }

Page 144: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

144

// buscarDatos() Caja de busqueda //*****************************************************************************************************************/ // activa y busca desde la caja de busqueda function buscarDatosCB(texto){ url='buscarCB.php'; var letra = texto.substring(1,texto.length); var op = texto.substring(0,1); var pal=""; param="letra="+letra+"&op="+op; $("imagenBuscar").innerHTML="<img src='../../../../images/ico6.png' alt='search' width='15' height='15' />"; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { arrayRoles = transport.responseText.evalJSON(); $("capaBusc").innerHTML=""; $("capaBusc").align='center'; var table = document.createElement('TABLE'); table.width='100%'; table.style.font="9px Verdana, Arial, Helvetica, sans-serif"; table.border='0'; table.cellspacing="0"; table.cellpadding="0";

table.id="cajabuscar"; var hayL=0; var hayF=0; for(i=0;i<arrayRoles.length;i++) { if(arrayRoles[i].q3 == "F"){ var tb = document.createElement('TBODY'); tb.align='left'; var tr = document.createElement('TR'); var td1 = document.createElement('TD'); pal = arrayRoles[i].q2; //td1.setAttribute("onclick","buscarDatosFunciones("+arrayRoles[i].q2+")"); td1.onclick = function() { buscarDatosFunciones(pal); } var url1 = arrayRoles[i].q1.replace(letra,"<b>"+letra+"</b>"); //td1.innerHTML ="<a

href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+ url1.substring(0,10)+"<b>..</b></a>"; td1.innerHTML ="<span style='color:#3B5998;font-size:10px'><b>&nbsp;"+

url1+"</b></span><br /><span style='color:#666; font-size:9px'>&nbsp;"+arrayRoles[i].q4.substring(0,60)+"..</span>";

//td2.innerHTML =arrayRoles[i].q4.substring(0,30)+"<b>..</b>"; tr.title = arrayRoles[i].q1+"... "+arrayRoles[i].q4.substring(0,100); tr.style.cursor="pointer"; tr.appendChild(td1); tb.appendChild(tr); table.appendChild(tb); hayL++; } // fin de L } // fin FOR $("capaBusc").appendChild(table); //***************************************** F for(i=0;i<arrayRoles.length;i++) { if(arrayRoles[i].q3 == "D"){ var tb = document.createElement('TBODY'); tb.align='left'; var tr = document.createElement('TR'); var td1 = document.createElement('TD'); pal = arrayRoles[i].q2; //td1.setAttribute("onclick","buscarDatosFunciones("+arrayRoles[i].q2+")"); td1.onclick = function() { buscarDatosFunciones(pal); } //td1.innerHTML ="<a

href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+ arrayRoles[i].q1.substring(0,10)+"<b>..</b></a>"; var res = arrayRoles[i].q4.replace(letra,"<b>"+letra+"</b>"); td1.innerHTML ="<span style='color:#3B5998;font-

size:10px'><b>&nbsp;"+arrayRoles[i].q1+"</b></span><br /><span style='color:#666; font-size:9px'>&nbsp;"+res.substring(0,70)+"..</span>";

tr.title = arrayRoles[i].q1+"... "+arrayRoles[i].q4.substring(0,100); tr.style.cursor="pointer"; tr.appendChild(td1); tb.appendChild(tr); table.appendChild(tb); hayF++; } // fin de L } // fin FOR $("capaBusc").appendChild(table); if( hayF == 0 && hayL == 0){ var tb = document.createElement('TBODY'); //tb.align='left'; var tr = document.createElement('TR');

Page 145: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

145

var td1 = document.createElement('TD');td1.setAttribute("colspan","2");

td1.innerHTML ="No hay Resultados...";

tr.appendChild(td1); tb.appendChild(tr); table.appendChild(tb);} else { var tb = document.createElement('TBODY');

var tr = document.createElement('TR');

tr.style.cursor="pointer"; var td1 = document.createElement('TD'); td1.setAttribute("colspan","2");

td1.innerHTML ="<div align='center' style='border-top:1px dashed #000'><br /><b>Ver

todos los resultados para: </b><span style='color:#006600'>"+letra+"</span></div><br />" ; td1.onclick = function() {

buscarTodo(letra); } tr.appendChild(td1); tb.appendChild(tr); table.appendChild(tb); } } } ); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // muestra todos los resultados que arroja la caja de busqueda function buscarTodo(letra){ $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; url='buscarCB.php'; var op = 2; param="letra="+letra+"&op="+op; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { arrayRoles = transport.responseText.evalJSON(); $("ladoDer").innerHTML=""; var table = document.createElement('TABLE'); table.width='98%'; table.style.font="11px Verdana, Arial, Helvetica, sans-serif"; table.border='0'; table.cellspacing="0"; table.cellpadding="0"; table.setAttribute("class","bloquesPreview"); table.aling='left'; var tbody = document.createElement('TBODY'); var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.align="left";

td1.style.color="#B1B1B1"; td1.setAttribute("colspan","2"); //td1.innerHTML="<h3 style='border-bottom:1px solid #666'>Resultados de la

b&uacute;squeda</h3><i>Resultados para <b>"+letra+"</b></i><br>"; td1.innerHTML="<div style='float:left; margin-right:8px;'><img

src='../../images/find.ico' alt='ico1' /></div><div style=' text-align:left'><h3>Resultados de la b&uacute;squeda</h3></div><div class='small' style='margin-bottom:7px;'>Resultados para <b>"+letra+"</b></div><br />";

tr.appendChild(td1); tbody.appendChild(tr); table.appendChild(tbody); for(i=0;i<arrayRoles.length;i++) { if(arrayRoles[i].q3 == "F"){ var tbody = document.createElement('TBODY'); tbody.align='left'; var tr = document.createElement('TR'); //if( i%2 ==

0){tr.style.background="#E0EAF7";} var tr2 = document.createElement('TR'); var tr3 = document.createElement('TR'); var td1 = document.createElement('TD'); var td2 = document.createElement('TD'); var td3 = document.createElement('TD'); //td1.innerHTML ="<a

href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+arrayRoles[i].q1+"</a>"; td1.innerHTML ="<a

href='javascript:buscarDatosFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'><b>"+arrayRoles[i].q1+"</b></a>"; var textoAlt = arrayRoles[i].q4.replace(letra,"<b>"+letra+"</b>"); td2.innerHTML =textoAlt.substring(0,200)+" <b>...</b>";

Page 146: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

146

td3.innerHTML ="<b>"+arrayRoles[i].q6 +"</b> // <b>"+arrayRoles[i].q5+"</b><br><hr />"; td3.style.color="#006600";

tr.appendChild(td1); tr2.appendChild(td2); tr3.appendChild(td3); tbody.appendChild(tr); tbody.appendChild(tr2); tbody.appendChild(tr3); table.appendChild(tbody); //table.appendChild(tr2); //table.appendChild(tr3); } // fin de L } // fin FOR $("ladoDer").appendChild(table); //***************************************** F for(i=0;i<arrayRoles.length;i++) { if(arrayRoles[i].q3 == "D"){ var tbody = document.createElement('TBODY'); tbody.align='left'; var tr = document.createElement('TR'); //if( i%2 ==

0){tr.style.background="#E0EAF7";} var tr2 = document.createElement('TR'); var tr3 = document.createElement('TR'); var td1 = document.createElement('TD'); var td2 = document.createElement('TD'); var td3 = document.createElement('TD'); //td1.innerHTML ="<a href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+

arrayRoles[i].q1+"</a>"; td1.innerHTML ="<a

href='javascript:buscarDatosFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'><b>"+arrayRoles[i].q1+"<b></a>"; var textoAlt2 = arrayRoles[i].q4.replace(letra,"<b>"+letra+"</b>"); td2.innerHTML = textoAlt2.substring(0,200)+" <b>...</b>"; td3.innerHTML = "<b>"+arrayRoles[i].q6 +"</b> // <b>"+arrayRoles[i].q5+"</b><br><hr />";

td3.style.color="#006600"; tr.appendChild(td1); tr2.appendChild(td2); tr3.appendChild(td3); tbody.appendChild(tr); tbody.appendChild(tr2); tbody.appendChild(tr3); table.appendChild(tbody); //table.appendChild(tr2); //table.appendChild(tr3); } // fin de L } // fin FOR $("ladoDer").appendChild(table); } } ); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // muestra todas las funciones cuando se elige un lenguaje en el buscador alfabetico function buscarTodasFunciones(letra){ //alert('entro'); $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; $("MenuFuncionesVariante").innerHTML=""; url='buscarFuncionesTodas.php'; param="letra="+letra; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { arrayRoles = transport.responseText.evalJSON(); $("ladoDer").innerHTML=""; var table = document.createElement('TABLE'); table.width='98%'; table.style.font="11px Verdana, Arial, Helvetica, sans-serif"; table.border='0'; table.cellspacing="0"; table.cellpadding="0"; table.setAttribute("class","bloquesPreview"); if(arrayRoles.length == 0) { var tbody = document.createElement('TBODY'); var tr = document.createElement('TR'); var td1 = document.createElement('TD');td1.setAttribute("colspan","2");

td1.style.background="#FFFFFF";

Page 147: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

147

td1.innerHTML ="<div style='float:left; margin-right:8px;'><img src='../../images/find.ico' alt='ico1' /></div><div style=' text-align:left'><h3>Resultados de la b&uacute;squeda</h3></div><div class='small' style='margin-bottom:7px'><b>No hay Resultados...</b></div>";

$("LstMenuVar").style.display="none"; tr.appendChild(td1); tbody.appendChild(tr); table.appendChild(tbody); $("ladoDer").appendChild(table); return; } var tbody = document.createElement('TBODY'); var tr = document.createElement('TR'); var td1 = document.createElement('TD'); td1.align="left";

td1.style.color="#B1B1B1"; td1.setAttribute("colspan","2"); td1.innerHTML=" <div style='float:left; margin-right:8px;'><img src='../../images/find.ico'

alt='ico1' /></div><div style=' text-align:left'><h3>Resultados de la b&uacute;squeda</h3></div><div class='small' style='margin-bottom:7px;'>Resultados para <b>"+arrayRoles[0].q5+"</b></div><br />";

tr.appendChild(td1); tbody.appendChild(tr); table.appendChild(tbody); var menuizq ="<ul class='menu' style='background-color:#FFF' >"; $("LstMenuVar").style.display="inline"; //$("tituloMenuVariante") $("LstMenuVar").innerHTML = '<img src="../../../../images/up.gif" alt="func_" />&nbsp;&nbsp;&nbsp;Funciones de

'+arrayRoles[0].q5.substring(0,13)+'...' ; for(i=0;i<arrayRoles.length;i++) { menuizq +="<li><a

href='javascript:buscarDatosFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'>"+arrayRoles[i].q1+"</a></li>"; var tbody = document.createElement('TBODY'); tbody.align='left'; var tr = document.createElement('TR'); //if( i%2 ==

0){tr.style.background="#E0EAF7";} var tr2 = document.createElement('TR'); var tr3 = document.createElement('TR'); var td1 = document.createElement('TD'); var td2 = document.createElement('TD'); var td3 = document.createElement('TD'); //td1.innerHTML ="<a

href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+arrayRoles[i].q1+"</a>"; td1.innerHTML ="<a

href='javascript:buscarDatosFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'><b>"+arrayRoles[i].q1+"</b></a>";

td2.innerHTML = arrayRoles[i].q3.substring(0,200)+" <b>...</b>"; td3.innerHTML = "<b>"+arrayRoles[i].q5 +"</b> // <b>"+arrayRoles[i].q4+"</b><br><hr>";

td3.style.color="#006600"; tr.appendChild(td1); tr2.appendChild(td2); tr3.appendChild(td3); tbody.appendChild(tr); tbody.appendChild(tr2); tbody.appendChild(tr3); table.setAttribute("class","bloquesPreview"); table.appendChild(tbody); //table.appendChild(tr2); //table.appendChild(tr3); } // fin FOR menuizq +="</ul>"; $("MenuFuncionesVariante").innerHTML=menuizq; $("ladoDer").appendChild(table);

} } ); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function comments(id){ url='comentarios.php'; param="id="+id; // alert(id); data2=""; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { arrayRoles = transport.responseText.evalJSON(); $('capaComment').innerHTML = ""; for (e=0 ; e < arrayRoles.length; e++){ registro = arrayRoles[e].regs; campos = registro.split(","); //alert(campos); var div1 = document.createElement('DIV'); div1.id="vistaComment";

Page 148: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

148

if(campos[0]=='0' || campos[1]=='Undefined') { data2='No hay Comentarios...'; div1.innerHTML = data2; $('capaComment').appendChild(div1); return; } data2+="<table width='97%' border='0' cellspacing='0' cellpadding='0' style='margin-

bottom:10px'><tr><td width='30%' align='left' valing='top' style='font-size:10px '><img src='../../../../images/male.gif' width='12' height='10' alt='msg' /><span style='color:#006600'><b>"+campos[4]+"</b></span> // <img src='../../../../images/img.gif' width='12' height='10' alt='cal' />&nbsp;<b>"+campos[5]+"&nbsp;&nbsp;<span style='color:#006600'>Dice:</span></b></td></tr><tr><td width='70%' valing='top' class='bloqueEjemplos' ><div style='font-weight:normal; line-height:18px; text-align:justify; font-size:13px '>"+campos[1]+"</div></td></tr></table>";

} div1.innerHTML = data2; $('capaComment').appendChild(div1); }}); } ///////////////////////////////////////////////////////////// function argumentos(arreglo){ arreglo = arreglo.substring(0,arreglo.length-1); var campos = arreglo.split("@"); var data=""; // var table = document.createElement('Table'); table.width='100%'; // table.border='0'; table.cellspacing="0"; table.cellpadding="0"; table.id="tArgumentos"; // var tabBody = document.createElement('tbody'); // var tr1 = document.createElement('TR'); // var tr2 = document.createElement('TR'); // var td1 = document.createElement('TD'); // var td2 = document.createElement('TD'); data+="<table id='tArgumentos' width='100%' border='0' cellspacing='0' cellpadding='0'>"; for (p=0; p<campos.length; p+=2){ // td1.innerHTML="<p><i class='lstargumentos'>"+campos[p]+"</i></p>"; // td2.innerHTML="<blockquote><div class='bloqueEjemplos'>"+campos[p+1]+"</div></blockquote>"; data+="<tr><td><p><i class='lstargumentos'>"+campos[p]+"</i></p></td></tr>"; data+="<tr><td align='center'><div align='left'

class='bloqueDescrParam'>"+campos[p+1]+"</div></td></tr>"; // tr1.appendChild(td1); // tr2.appendChild(td2); // tabBody.appendChild(tr1); // tabBody.appendChild(tr2); } // table.appendChild(tabBody); data+="</table>"; return data; //$('aquiArgumentos').appendChild(table); //return table; } //////////////////////////////////////////////////////////////////////// function reversaParametros(datos){ var campos = datos.split("@"); var texto=""; for (y=0 ; y < campos.length ; y++){ if( y%2 == 0 ) { texto += campos[y].replace(campos[y],"<<"+campos[y]+">>") ; } else { texto += campos[y].replace(campos[y],"--"+campos[y]+"--") ; } } return texto; } //***************************************************************************************************************************************

***********88 // muestra el modulo de vista completa, incluidos los FQS function buscarDatosFunciones(id){ //alert(''); //alert(id); $("capaBusc").innerHTML=""; $("capaBusc").style.display="none"; $("capaLista").style.display='none'; $("capaLista").innerHTML=""; url='buscarDatos.php'; /*dat_nombre_funcion, leng_nombre, dat_descripcion, dat_sintaxys, dat_parametros,

dat_ejemplo, wik_datos_id */ /* 0 1 2 3 4 5 6 */ param="id="+id;

Page 149: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

149

var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { arrayRoles = transport.responseText.evalJSON(); $("capaLista").innerHTML=""; $("capaLista").align='center'; $("ladoDer").innerHTML=''; var registro = arrayRoles[0].regs var campos = registro.split("¬"); var divpr = document.createElement('DIV'); divpr.id="vistaFuncion"; var total = campos[2]; //var p = campos[2].length; //alert(p); //for (i=0 ; i < p; i++){ // total = total.replace('[[','<b>'); // total = total.replace(']]','</b>'); // } var data="<div class='bloquesPreview'> <div style='float:right; margin-right:15px; '><a

href='javascript:aWord(&quot;"+campos[6]+"&quot;)'><img src='/elearning_cisc/contenido/wikikey/images/word.ico' width='20' height='20' alt='word' style='cursor:pointer' title='Descargar a Word..' /> Exportar</a> <b>|</b> <a href='javascript:historial(&quot;"+campos[6]+"&quot;)'><img src='/elearning_cisc/contenido/wikikey/images/historial.ico' width='20' height='20' alt='word' style='cursor:pointer' title='Historial de Cambios.' /> Historial</a></div><input name='idFunc' id='idFunc' type='hidden' value='"+campos[6]+"' /><div style='float:left; margin-right:10px;'><img src='/elearning_cisc/contenido/wikikey/images/documento.ico' alt='ico1' /></div> <div style='text-align:left'><h3>"+campos[0]+"</h3></div> <div style='margin-bottom:7px; margin_top:2px; font-size:14px'><span style='font-size:10px'>Origen:</span> <b>"+campos[1]+"</b></div><br />";

data+="<div align='center'><div align='left' style='width:98%;'><div

class='tituloBloque'>Descripci&oacute;n<div class='editar'>[<a href='#' onclick='contribucion(1,&quot;"+campos[0]+"&quot;,&quot;"+campos[3]+"&quot;,&quot;"+total+"&quot;)'>editar</a>]</div></div> <div class='bloqueDescr'>"+total+"</div><br />";

data+="<div class='tituloBloque'>Sintaxis<div class='editar'>[<a href='#'

onclick='contribucion(11,&quot;"+campos[0]+"&quot;,&quot;"+campos[3]+"&quot;,&quot;"+total+"&quot;)'>editar</a>]</div></div> <div class='bloqueSintaxis' style='display:block' >"+campos[3]+"</div><br />";

var var3= reversaParametros(campos[4]); data+="<div class='tituloBloque'>Par&aacute;metros<div class='editar'>[<a href='#'

onclick='contribucion(2,&quot;"+campos[0]+"&quot;,&quot;&quot;,&quot;"+var3+"&quot;)'>editar</a>]</div></div>"; data+="<div id='aquiArgumentos'

class='bloquelight'>"+argumentos(campos[4])+"</div><br />"; data+="<div class='tituloBloque'>Ejemplos<div class='editar'>[<a href='#'

onclick='contribucion(3,&quot;"+campos[0]+"&quot;,&quot;&quot;,&quot;"+campos[6]+"&quot;)'>editar</a>]</div></div><div class='bloqueEjemplos'><div id='ejemplosArchivo'></div></div></div> </div></div><br />" ; buscDescrip(campos[6]);

data+="<div id='notaultimamod'>Ultima modificacion</div> <br />";

ultimaModificacion(campos[6]); data+="<div class='tituloComentarios'>Comentarios</div><br />"; data+="<div class='bloquesPreviewComent' align='center'><div

id='capaComment'>"+comments(id)+"</div></div><br/>" ; data+="<div style='border-bottom:1px solid #0668B3;font:12px Arial;font-

weight:bold;color:#0668B3;'>D&eacute;janos tu comentario</div><div class='bloquesPreviewComent' align='center'> <table width='90%' height='130px' border='0' cellspacing='0' cellpadding='0'><tr><td><textarea name='comment' id='comment' type='text' style='width:100%; height:80px; border:1px inset #000; background:white;' /></textarea></td></tr><tr><td align='right'><input name='comentar' type='button' value='Comentar' onclick = 'guardaComment("+id+")' /></td></tr></table> </div>" ;

divpr.innerHTML = data; $("ladoDer").appendChild(divpr); }}); } //************************* fecha que se hizo la ultima modificacion *********************** function ultimaModificacion(id){ url='ultimaModificacion.php'; param="id="+id; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { $('notaultimamod').innerHTML = transport.responseText;

}}); } //****************** buscar descripciones ****************************************** function buscDescrip(id){ url='buscarDescripcion.php';

Page 150: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

150

param="id="+id; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { $('ejemplosArchivo').innerHTML =

transport.responseText; }}); } //***************************************************************************************************************************************

*************** function guardaComment(id){ //$_SESSION["usNoms"] $_SESSION["usApes"] param="comm="+$('comment').value+"&id="+id ; url='guardarComment.php'; var ajaxRequest = new Ajax.Request(url,{method: 'POST', parameters: param, asynchronous: true, onSuccess: function(transport) { result = transport.responseText; alert(result); $('comment').value=""; comments(id); }}); } //////////////////////////////////////////////////////////////////////////////////////////////////////// function reglas(){ $("capaLista").style.display='block'; $("capaLista").innerHTML="<img src='../../images/tabla1.jpg' width='100%' height='100%' alt='tabla' />"; } //////////////////////////////////////////////////////////////////////////////////////////////////////// function siVa(id){ url='../editor/YNaportaciones.php'; var param = "id="+id+"&op=Y"; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { $(id).innerHTML="<b style='color:red;

font-size:9px'>Aprobada</b>"; }} ); } function noVa(id){ url='../editor/YNaportaciones.php'; var param = "id="+id+"&op=N"; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { $(id).innerHTML="<b style='color:red;

font-size:9px'>Eliminada</b>"; }} ); } function aWord(id){ var url="aWord.php?id="+id; var ventana = window.open(url,"Wiki

Cisc","toolbar=0,scrollbars=1,directories=0,location=0,Menubar=0,Status=0,Titlebar=0,Toolbar=0,width=1000, height=700,resizable=1");

} /*---------------------------------------------------------------------*/ function bajarVentanas(){ $("capaBusc").innerHTML="" ; $("capaBusc").style.display="none"; //$("LstMenuVar").style.height='15px'; $("Lista").style.display="none"; //$("MenuFuncionesVariante").style.display='none'; $("capaLista").innerHTML = ""; $("capaLista").style.display = "none"; } </script> </head> <body> <div id="wrapper" align="center" style="height:100%; overflow:auto;padding-top:0px;" onclick="bajarVentanas()" > <div style="background:#EBEBEB url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;

width:100%;"> <div style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg) repeat-y right;"> <table width="98%" border="0" cellpadding="0" cellspacing="0" height="100%"> <tr> <td colspan="2" id="cabecera" align="center" valign="top"> <table width="98%" border="0" cellspacing="0" cellpadding="0" style="margin-top:5px;">

Page 151: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

151

<tr style="background:transparent url(../../images/menu_t.jpg) top left repeat; color:#FFF;color:#fefefe; font-weight: bold; font-family: Helvetica,Arial,sans-serif; font-size: 1.1em;" height="26">

<td align="left"> <div style="float:left; margin-top:4px; margin-bottom:4px;"> <div> <div id="buscador" style="width:240px; background:#ffffff; border:1px solid #0C1589; margin-

left:5px;padding:2px 2px 1px 2px;"> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="91%"><input name="input" type="text" style="font-size:11px; background:#FFFFFF;

border:none; width:100%;" title="Ingrese busqueda" value="B&uacute;squeda" onclick="this.value=''" onblur="this.value='B&uacute;squeda'" onkeyup="loading3(this.value)" /></td>

<td width="9%" align="left" id="imagenBuscar"><img src="../../../../images/ico6.png" alt="search" width="15" height="15" /></td>

</tr> </table> </div> </div> <div id="capaBusc"></div> </div> <div id="menuFlotante" style="float:right; color:#006600;text-align:justify; padding-left:23px; margin-right:10px;

margin-top:5px; margin-bottom:5px; font-weight:normal; font-size:14px; line-height:20px; background:url(/elearning_cisc/images/menu_icon.gif) no-repeat left center; height:20px;">

<a href="javascript:portada()">Portada</a> | <a href="javascript:contribucion(0)">Contribuciones</a> <!-- | <a href="javascript:seguimientos()">Seguimientos</a> --> <span id="menuImportante"> <?php $reg = $miconexion->unDato("select count(wik_datos_id) from wik_datos a

where a.dat_estado = 'N'"); if($reg > 0) { if($_SESSION["usTipo"]=='profesor'){ ?> | <a href="javascript:importante()" title="Existen Contribuciones Nuevas Esperando ser Aceptadas..."><span

style="color:red;">Importante!</span></a> <?php } }?> </span> <span id="menuDenuncias"> <?php $reg = $miconexion->unDato("select count(wik_denuncias_id) from wik_denuncias ");if($reg > 0){

if($_SESSION["usTipo"]=='profesor'){ ?> | <a href="javascript:denuncias()" title="Lista de Denunciados...">Denuncias</a> <?php } }?> </span> </div> </td> </tr> <tr> <td colspan="2" align="left" valign="top"><div id="leftcolumn" class='moduletable_menu' style="margin-

top:0px; width:100%;" align="center"> <div id="menuTutor" class='module_menu'> <ul class='menuAlfa'> <div id="findAlfa" style="width:100%;" > &nbsp;</div> </ul> </div> </div> <div id="capaLista" align="left"></div></td> </tr> </table> </td></tr> <tr> <!-- <td width="181" valign="top" align="center" id="ladoizq"><div id="leftcolumn" class='moduletable_menu' > <div id="menuTutor" class='module_menu'> <img src="../../images/logo.jpg" width="170" height="128" alt="logo" style="border:1px solid #AAB7D7; -moz-

border-radius: 4px 4px 4px 4px; margin-bottom:5px; margin-top:5px;"/> <h3>Men&uacute; Opciones</h3> <ul class='menu' > <li><a href="javascript:portada()">Portada</a></li> <li><a href="javascript:contribucion(0)">Contribuir a la Wiki</a></li> <li><a href="javascript:seguimientos()">Seguimientos</a></li> <?php $reg = $miconexion->unDato("select count(wik_datos_id) from wik_datos a where a.dat_estado =

'N'");if($reg > 0){ ?> <li><a href="javascript:importante()" title="Existen Contribuciones Nuevas Esperando ser Aceptadas..."><span

style="color:red;">Importante!</span></a></li>

Page 152: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

152

<?php } ?> </ul> <div id="MenuFuncionesVariante" align="left"> </div> </div> </div></td> --> <td valign="top" align="center" ><!-- bgcolor="#FFFFFF" style="border-left:1px solid #87A7C7"> --> <div id="ladoDer" style="width:100%; margin-top:5px;" ><br /><br /> <b>CARGANDO ...</b><br /><br /><br /><br /></div> <br /> </td> </tr> </table> </div> </div> </div> <div id="Lista" > <div id="leftcolumn" > <div class="small" style="padding:3px; background: url(../../images/header_bg2.jpg) repeat;

color:#FFF;">&nbsp;Funciones encontradas:</div> <ul><div id="MenuFuncionesVariante" align="left"> </div> </ul> </div> </div> <div id="LstMenuVar" align="left" onclick="abrirMenu()"> <div id="tituloMenuVariante"></div> </div> </body> </html> <script type="text/javascript"> var abc=""; for(s=65; s<91; s++){//alert(String.fromCharCode(s)); var letra = String.fromCharCode(s); abc = abc + "<a href='javascript:loading(&quot;"+letra+"&quot;)' title='Hacer Busqueda

con la letra ["+letra+"].'><b>"+letra+"</b></a>" ; } abc+= "<a href='javascript:loading(&quot;@&quot;)' title='Otros

Caracteres.'><b>@</b></a>"; $("findAlfa").innerHTML= abc ; portada(); </script>

Archivo: portada.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 15.

Archivos del Proyecto <?php header("Cache-Control: no-store, no-cache, must-revalidate"); require ("../../../../lib/clase_MySql.inc.php"); $cnx = new DB_mysql ; $cnx->conectar(); $result = $cnx->unDato("SELECT max(cam_fmodif) FROM wik_cambios ca where wik_datos_id =".$_POST['id']); if($result!= null) echo "&nbsp;&nbsp;&nbsp;&nbsp;Esta p&aacute;gina fue modificada por &uacute;ltima vez el

".$result; else echo "&nbsp;&nbsp;&nbsp;&nbsp;Esta p&aacute;gina no ah sido modificada"; ?>

Archivo: ultimaModificacion.php

Elaboracion: Carlos A. Zambrano I.

Page 153: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

153

Cuadro 16.

Archivos del Proyecto // JavaScript Document function max(txarea) { total = 500; tam = txarea.value.length; str=""; str=str+tam; //Digitado.innerHTML = str; document.getElementById('totalletras').innerHTML= total - str; if (tam > total){ aux = txarea.value; txarea.value = aux.substring(0,total); //Digitado.innerHTML = total document.getElementById('totalletras').innerHTML= 0 } } function cerrarNew(){ $("principal").innerHTML= ""; } function MuestraAccesos(){ $("principal").innerHTML= " <table width= '100% ' border= '0 ' cellspacing= '0 ' cellpadding= '4 '><tr><td><div

id='titulo' style= ' margin-top:10px ' ><div class='componentheading' style= 'float:left '>Ingreso de Nuevas Funciones</div><div id= 'cerrar ' style= 'float:right '><img src= '../img/Cancel.png ' alt= 'cancelar ' style= 'cursor:pointer' onclick='cerrarNew();' title='Cerrar este Modulo'/></div></div></td></tr><tr><td><p>Nombre de la Nueva Función</p></td></tr><tr><td><input style= 'width:50% ' type='text' size='26' name='nDocumento3' id='nDocumento3' /></td></tr><tr><td><p>Descripcion/Detalle/Utilización de la Función</p></td></tr><tr><td><textarea name= 'nDocumento6 ' rows= '10 ' id= 'nDocumento6 ' style= 'width:99% ' onkeypress='max(this);'></textarea></td></tr><tr><td><div style= 'float:left '>Ingrese maximo 500 caracteres, le restan: </div><div id='totalletras' style= ' font-weight:bold; float:left;color: #1b78b7 '>500</div></td> </tr><tr><td><p>Sintaxis</p></td></tr><tr><td><input style= 'width:100% ' type='text' size='26' name='nDocumento' id='nDocumento' /></td></tr><tr><td><p>Argumentos de la Función</p></td></tr><tr><td><table width= '100% ' border= '1 '><tr><td width= '23% ' class= 'sectiontableheader '>Parametros</td><td class= 'sectiontableheader ' colspan= '3 '>Descripción</td></tr><tr><td><input style= 'width:100% ' type='text' size='26' name='nDocumento2' id='nDocumento2' /></td><td width= '71% '><input style= 'width:100% ' type='text' size='26' name='nDocumento4' id='nDocumento4' /></td><td width= '3% '><img src= '../img/Ok.png ' alt= 'ok ' width= '24 ' height= '24 ' /></td> <td width= '3% '><img src= '../img/Cancel.png ' alt= 'cancel ' width= '22 ' height= '22 ' /></td> </tr> <tr> </tr> </table></td> </tr> <tr> <td><p>Ejemplos de Uso de la Función</p></td> </tr> <tr> <td><textarea name= 'nDocumento7 ' rows= '30 ' id= 'nDocumento7 ' style= 'width:99% ' onkeypress= 'max(this); '></textarea></td> </tr> <tr> <td><label><input type='checkbox' name='seguimiento' id= 'seguimiento' />Hacer seguimiento a esta página</label> </td> </tr> <tr> <td><input name= 'guardar' type= 'button' value= 'Guardar esta p&aacute;gina' /> <input name= 'preview' type= 'button' value= 'Previsualizaci&oacute;n ' /> <input name= 'cancelar' type= 'button' value= 'Cancelar' /></td> </tr> </table> ";

/* var table= document.createElement('TABLE'); table.width='100%'; table.border='0'; table.cellspacing='0'; table.cellpadding='4'; var tr1 = document.createElement('TR'); var td1 = document.createElement('TD'); td1.innerHTML= '<div id='titulo' style='margin-top:10px' ><div class='componentheading'

style='float:left'>Ingreso/Edición de Datos</div><div id='cerrar' style='float:right'><img src='../img/Cancel.png' alt='cancelar' style='cursor:pointer' /></div></div><input name='preview' type='button' value='Guardar esta p&aacute;gina' /> <input name='preview' type='button' value='Previsualizaci&oacute;n' /> <input name='preview' type='button' value='Cancelar' /> ';

tr1.appendChild(td1); table.appendChild(tr1); var url='contenido/socios/verAccesos.php'; var json; var lista= ' '; var ajaxRequest = new Ajax.Request(url, {method:'post', asynchronous: true, onSuccess: function(transport){ json = transport.responseText.evalJSON(); for(i=0;i<=json.length;i++) { var tr = document.createElement('TR'); if( i%2 != 0){tr.style.background=

'#E0EAF7 ';}

Page 154: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

154

var td3 = document.createElement('TD'); var chk = document.createElement('INPUT');chk.type= 'checkbox ';

chk.id=json[i].cod; td3.innerHTML = ' ' + json[i].descri; tr.appendChild(chk); tr.appendChild(td3); table.appendChild(tr); } }}); */ // $( 'principal ').appendChild(table); }

Archivo: editor.js

Elaboracion: Carlos A. Zambrano I.

Cuadro 17.

Archivos del Proyecto <?php session_start(); header("Cache-Control: no-store, no-cache, must-revalidate"); require ("../../../../lib/clase_MySql.inc.php"); $cnx = new DB_mysql ; $cnx->conectar(); $opEd = $_POST['opEd']; $idFunc = $_POST['idFunc']; function quitar($mensaje) { $mensaje = str_replace('<br />',"",$mensaje); return $mensaje; } if($_SESSION["usTipo"]=='profesor'){ $idDenunciado = $cnx->unDato("select exa_profesor_id from exa_profesor where pro_identificacion =

".$_SESSION["usNick"]); } else { $idDenunciado = $cnx->unDato("select exa_alumno_id from exa_alumno where alu_identificacion

= ".$_SESSION["usNick"]); } $estaDenunciado = $cnx->unDato("select count(wik_denuncias_id) from wik_denuncias where

den_denunciado=".$idDenunciado); $descrip = $cnx->unDato("select distinct den_descripcion from wik_denuncias where

den_denunciado=".$idDenunciado); $fechaFin = $cnx->unDato("select distinct den_fecha_fin from wik_denuncias where

den_denunciado=".$idDenunciado); if($estaDenunciado > 0 ){ ?> <br /><br /><br /><br /> <div style="font-size:12px; color:#000; background-color: #fdfdfd;border: 2px solid rgb(240, 201, 31);

width:90%;padding:1em; background:rgb(255, 238, 153); font-weight:normal; display:block; -moz-border-radius: 4px 4px 4px 4px;" align="center" >

<img src="../../../../images/35px-Nuvola_apps_important_yellow.svg.png" width="35" height="29" alt="alert" style="margin-bottom:5px" /><br />

<b>Usuario Bloqueado:&nbsp;&nbsp;</b><?php echo $descrip; ?><br /><b>Fecha Final de Bloqueo:&nbsp;&nbsp;</b><?php echo $fechaFin; ?>

</div> <br /><br /><br /><br /> <?php exit(); } ?> <table width="98%" border="0" cellspacing="0" cellpadding="0" > <tr><td> <?php if($opEd == 0) { ?> <div style="float:left; margin-right:8px;"><img src="../../images/contribuciones.ico" alt="ico1" /></div> <div style=" text-align:left"><h3>Contribuciones a la WikiFunciones</h3></div> <div class="small" style="margin-bottom:7px">Ingrese la funci&oacute;n determinando el Lenguaje de

Programaci&oacute;n origen..</div> <?php } else { ?> <div style="float:left; margin-right:8px;"><img src="../../images/editando.ico" alt="ico1" /></div> <div style=" text-align:left"><h3>Editando secci&oacute;n de &lt;&lt; <?php echo $_POST['var0']; ?>

&gt;&gt;</h3></div>

Page 155: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

155

<div class="small" style="margin-bottom:7px">Los cambios que realize quedar&aacute;n almacenados en el historial de esta secci&oacute;n..</div>

<?php } ?> </td></tr> <tr> <td> <?php if($opEd == 0) { ?> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="50%"> <h2>Elija el Lenguaje:</h2> <div style="width:96%; background:#ffffff url(../../../../images/bg_panel_top_right.gif) repeat-y right; border:1px solid

#0C1589; -moz-border-radius: 4px 4px 4px 4px; padding:2px 2px 2px 2px;"> <?php $consulta1 = $cnx->consulta("select wik_lenguajes_id, leng_nombre from wik_lenguajes where leng_estado='Y' order

by leng_nombre"); echo " <select name='cmbLenguaje' id='cmbLenguaje' style='width:99%;border:none' class='txtWiky'

onclick='$(&quot;lenguaje&quot;).value=this.value'>"; while ($row = mysql_fetch_row($consulta1)) { echo "<option value='".$row[0]."'>".$row[1]."</option>"; } echo "</select>"; ?> <input name="lenguaje" id="lenguaje" type="hidden" value="" /> </div> </td> <td width="50%"> <h2>Nombre de la Funci&oacute;n:</h2> <div style="width:96%; background:#ffffff url(../../../../images/bg_panel_top_right.gif) repeat-y right; border:1px solid

#0C1589; -moz-border-radius: 4px 4px 4px 4px; padding:2px 2px 2px 2px;"> <input style="width:99%;border:none" type='text' name='nFuncion' id='nFuncion' value="" class="txtWiky" /> </div> </td> </tr> </table> <?php } ?> </td> </tr> <tr><td align="left"> <?php if($opEd == 0 || $opEd == 11) { ?> <br /><h2>Ingrese la Sintaxis:</h2> <div style="width:97%; background:#ffffff url(../../../../images/bg_panel_top_right.gif) repeat-y right; border:1px solid

#0C1589; -moz-border-radius: 4px 4px 4px 4px; padding:7px 7px 7px 7px;"> <input name="bold" type="button" value="" onclick="insertTags('nSintaxis','<b>','</b>','inserte nombre de

funci&oacute;n')" style="background:#E7EBCF url(../../images/toolbar/bold.png) no-repeat center center; width:30px; cursor:pointer"/>

<input name="italic" type="button" value="" onclick="insertTags('nSintaxis','<i>','</i>','inserte argumento')" style="background:#E7EBCF url(../../images/toolbar/italic.png) no-repeat center center; width:30px; cursor:pointer"/>

<textarea style="width:100%; border:none; margin-top:3px" type='text' size='26' name='nSintaxis' id='nSintaxis' class="txtWiky"><?php if($opEd == 11) { echo $_POST['var1'];} ?></textarea>

</div> <?php } ?> </td></tr> <tr><td align="left"> <?php if($opEd == 0 || $opEd == 1) { ?> <br /><h2>Ingrese la Descripci&oacute;n:</h2> <div style="width:97%; background:#ffffff url(../../../../images/bg_panel_top_right.gif) repeat-y right; border:1px solid

#0C1589; -moz-border-radius: 4px 4px 4px 4px; padding:7px 7px 2px 7px;"> <input name="bold" type="button" value="" onclick="insertTags('nDescripcion','<b>','</b>','inserte texto')"

style="background:#E7EBCF url(../../images/toolbar/bold.png) no-repeat center center; width:30px;cursor:pointer"/>

<input name="italic" type="button" value="" onclick="insertTags('nDescripcion','<i>','</i>','inserte texto')" style="background:#E7EBCF url(../../images/toolbar/italic.png) no-repeat center center; width:30px;cursor:pointer"/>

<input name="strike" type="button" value="" onclick="insertTags('nDescripcion','<s>','</s>','inserte texto')" style="background:#E7EBCF url(../../images/toolbar/strike.png) no-repeat center center; width:30px;cursor:pointer"/>

<input name="underline" type="button" value="" onclick="insertTags('nDescripcion','<u>','</u>','inserte texto')" style="background:#E7EBCF url(../../images/toolbar/underline.png) no-repeat center center; width:30px;cursor:pointer"/>

<input name="underline" type="button" value="" onclick="insertTags('nDescripcion','<hr>','','')" style="background:#E7EBCF url(../../images/toolbar/hr.png) no-repeat center center; width:30px;cursor:pointer"/>

<textarea name="nDescripcion" rows="10" id="nDescripcion" style="width:100%; border:none; margin-top:3px" onkeypress='max(this);' class="txtWiky"><?php if($opEd == 1) { echo $_POST['var2'];} ?></textarea>

<table width="100%" border="0" cellspacing="0" cellpadding="0" style="border-top:1px solid #6AC4DD"> <tr> <td width="36%" align="left">Ingrese m&aacute;ximo 500 caracteres, le restan:&nbsp;</td>

Page 156: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

156

<td width="64%" align="left"><div id='totalletras' style=" font-weight:bold; float:left;color: #1b78b7">500</div></td> </tr> </table> </div> <?php } ?> </td></tr> <tr><td> <?php if($opEd == 0 || $opEd == 2) { ?> <br /><h2>Ingrese los Parametros o Variables:</h2> <!-- <table id="tParam" width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td align="left" width="23%"><b>Parametro</b></td> <td align="left" colspan="3" ><b>Descripci&oacute;n</b></td> </tr> </table> --> <div align="left" style="width:97%; background:#ffffff url(../../../../images/bg_panel_top_right.gif) repeat-y right;

border:1px solid #0C1589; -moz-border-radius: 4px 4px 4px 4px; padding:7px 7px 7px 7px;"> <input name="bold" type="button" value="" onclick="insertTags('nParametros','<b>','</b>','inserte texto')"

style="background:#E7EBCF url(../../images/toolbar/bold.png) no-repeat center center; width:30px;cursor:pointer"/>

<input name="italic" type="button" value="" onclick="insertTags('nParametros','<i>','</i>','inserte texto')" style="background:#E7EBCF url(../../images/toolbar/italic.png) no-repeat center center; width:30px;cursor:pointer"/>

<input name="strike" type="button" value="" onclick="insertTags('nParametros','<s>','</s>','inserte texto')" style="background:#E7EBCF url(../../images/toolbar/strike.png) no-repeat center center; width:30px;cursor:pointer"/>

<input name="underline" type="button" value="" onclick="insertTags('nParametros','<u>','</u>','inserte texto')" style="background:#E7EBCF url(../../images/toolbar/underline.png) no-repeat center center; width:30px;cursor:pointer"/>

<input name="parametro" type="button" value="Parametro" onclick="insertTags('nParametros','<<','>>','inserte parametro')" style="background:#E7EBCF;cursor:pointer"/>

<input name="descrip" type="button" value="Descripci&oacute;n" onclick="insertTags('nParametros','--','--','inserte descripcion')" style="background:#E7EBCF;cursor:pointer"/>

<textarea name="nParametros" rows="10" id="nParametros" style="width:100%; border:none; margin-top:3px" onkeypress='max(this);' class="txtWiky"><?php if($opEd == 2) { echo $_POST['var2'];} ?></textarea>

</div> <?php } ?> </td> </tr> <tr><td> <?php if($opEd == 0 || $opEd == 3) { ?> <br /><h2>Ejemplos de la Funci&oacute;n:</h2> <div style="width:97%; background:#ffffff url(../../../../images/bg_panel_top_right.gif) repeat-y right; border:1px solid

#0C1589; -moz-border-radius: 4px 4px 4px 4px; padding:7px 7px 2px 7px;"> <textarea name="nEjemplo" rows="15" id="nEjemplo" style="width:100%; border:none"><?php if($opEd == 3) { $nFunc = $_POST['var2'] ; $ar = fopen("../descripciones/".$nFunc.".wik","r") or die("No se pudo abrir el archivo"); while (!feof($ar)) { $linea = fgets($ar); $lineasalto = nl2br($linea); echo quitar($lineasalto); } fclose($ar); } ?></textarea> </div> <?php } ?> </td></tr> <tr><td align="left"> <div style="margin:5px 0px 5px 0px"><h2><input type="checkbox" name="seguimiento" id="seguimiento" />Vigilar

esta p&aacute;gina</h2></div> </td> </tr> </table> <div id="divPrev" align="left" style="width:97%;"> </div> <div align="center" style="color:#FFf; background:#FF2424; border:2px solid #970000; -moz-border-radius: 4px 4px

4px 4px; height:20px;font:11px Helvetica, sans-serif; line-height:20px; width:97%"><b>&iexcl; No utilices sin permiso escritos con derechos de autor y cita siempre tus fuentes de informaci&oacute;n !</b></div>

<br /> <br /> <div align="center" style=" position:fixed; width:50px; height:125px; background:

url(/elearning_cisc/contenido/wikikey/images/menu_t.jpg) repeat; top:0px; right:20px; border-left:1px solid #666;border-right:1px solid #666; border-bottom:1px solid #666; -moz-border-radius: 0px 0px 4px 4px;padding:30px 2px 2px 2px;">

Page 157: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

157

<input name="grabar" type="button" value="" style="background: #F2F3D8 url(/elearning_cisc/images/disco.png) no-repeat center center;-moz-border-radius: 4px 4px 4px 4px; cursor:pointer; width:30px; height:30px;" title="Guardar esta p&aacute;gina" onclick="guardar('<?php echo $opEd; ?>','<?php echo $_POST['idFunc']; ?>','<?php echo $_SESSION["usTipo"];?>')" /> <br />

<input name="vista" type="button" value="" style="background: #F2F3D8 url(/elearning_cisc/images/ico6.png) no-

repeat center center;-moz-border-radius: 4px 4px 4px 4px; cursor:pointer; width:30px; height:30px;" title="Vista Preliminar" onclick="preview('<?php echo $opEd; ?>')"/> <br />

<input name="cancelar" type="button" value="" style="background: #F2F3D8

url(/elearning_cisc/images/cancel_12x12.png) no-repeat center center;-moz-border-radius: 4px 4px 4px 4px; cursor:pointer; width:30px; height:30px;" title="Cancelar" onclick="<?php if($opEd >0) { ?> buscarDatosFunciones('<?php echo $_POST['idFunc']; ?>'); <?php } else {?> portada(); <?php } ?> " /> <br />

</div>

Archivo: editor.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 18

Archivos del Proyecto <?php session_start(); //if (!isset($_SESSION["usNick"])) //header('Location: ../../../../lib/login/login.php'); ////////////////////////////////////////////////////////////////////////////// //esto es para decirle al cache de procesos del navegador que se desactive header("Cache-Control: no-store, no-cache, must-revalidate"); require ("../../../../lib/clase_MySql.inc.php"); $miconexion = new DB_mysql ; $miconexion->conectar(); function quitar($mensaje) { /*$mensaje = str_replace("<","&lt;",$mensaje); $mensaje = str_replace(">","&gt;",$mensaje); $mensaje = str_replace("\'","'",$mensaje); $mensaje = str_replace('\"',"&quot;",$mensaje); $mensaje = str_replace("\\\\","\\",$mensaje); $mensaje = str_replace(".00","",$mensaje); */ //$mensaje = str_replace(",",";",$mensaje); $mensaje = str_replace("¬","",$mensaje); return $mensaje; } $guardo=""; $edit = $_POST["edit"] ; $id = $_POST["idUpdate"] ; if( $_SESSION["usTipo"] == "alumno" ){ $guardo = $miconexion->unDato('select exa_alumno_id from exa_alumno where alu_identificacion

='.$_SESSION["usNick"]) ; }else{ $guardo = $miconexion->unDato('select exa_profesor_id from exa_profesor where

pro_identificacion ='.$_SESSION["usNick"]) ; } $segu=""; if( $_POST["seguimiento"] == 'true' ){ $segu ='Y'; } else { $segu ='N'; } if( $_POST["edit"] == 0 ){ $sql = "INSERT INTO wik_datos (wik_lenguajes_id, dat_nombre_funcion, dat_descripcion,

dat_sintaxys, dat_parametros, dat_ejemplo, dat_creado_por, dat_creado_el, dat_tipo_login, dat_seguido) VALUES (";

$sql .= "".quitar($_POST['cmbLenguaje']).""; $sql .= ",'".quitar($_POST['nFuncion'])."'"; $sql .= ",'".quitar($_POST["nDescripcion"])."'"; $sql .= ",'".quitar($_POST['nSintaxis'])."'"; $sql .= ",'".quitar($_POST['nParametros'])."'"; $sql .= ",'".quitar($_POST["nEjemplo"])."'"; $sql .= ",".$guardo.""; $sql .= ",now()"; $sql .= ",'".$_SESSION["usTipo"]."'"; $sql .= ",'".$segu."'";

Page 158: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

158

$sql .= ")"; $guardado2 = $miconexion->guardar($sql); // devuelve true o false $archivo = $miconexion->unDato("select MAX(wik_datos_id) from wik_datos where

dat_creado_por=".$guardo); $nDesc = $_POST["nEjemplo"]; $ar =fopen("../descripciones/".$archivo.".wik","a") or die("Problemas en la creacion"); fputs($ar,$nDesc); fclose($ar); if(!$guardado2 ) echo $sql; // echo "Fallo.."; else echo "Funcion Almacenada!, Pero solo sera visible despues de

ser aceptada por el Administrador."; } elseif( $edit == 1) { // inserto el cambio al historial $datos = $miconexion->unDato("select dat_descripcion from wik_datos where wik_datos_id

=".$id); $sql = "INSERT INTO wik_cambios

(wik_datos_id,cam_modificado_por,cam_tipo_persona,cam_item,cam_anterior,cam_nuevo,cam_fmodif,cam_vigilado) VALUES (";

$sql .= "".$id.""; $sql .= ",".$guardo.""; $sql .= ",'".$_SESSION["usTipo"]."'"; $sql .= ",'".$edit."'"; $sql .= ",'".$datos."'"; $sql .= ",'".quitar($_POST["nDescripcion"])."'"; $sql .= ",now()"; $sql .= ",'".$segu."'"; $sql .= ")";

$insert1 = $miconexion->guardar($sql); // devuelve true o false // actualizo el cambio $sql = "UPDATE wik_datos SET"; $sql .= " dat_descripcion = '".quitar($_POST["nDescripcion"])."'"; $sql .= " where wik_datos_id = ".$id; $update1 = $miconexion->guardar($sql); if(!$insert1 or !$update1 ) echo "Error.."; // echo "Fallo.."; else echo "Funcion Actualizada."; } elseif( $edit == 11) { // inserto el cambio al historial $datos = $miconexion->unDato("select dat_sintaxys from wik_datos where wik_datos_id

=".$id); $sql = "INSERT INTO wik_cambios

(wik_datos_id,cam_modificado_por,cam_tipo_persona,cam_item,cam_anterior,cam_nuevo,cam_fmodif,cam_vigilado) VALUES (";

$sql .= "".$id.""; $sql .= ",".$guardo.""; $sql .= ",'".$_SESSION["usTipo"]."'"; $sql .= ",'".$edit."'"; $sql .= ",'".$datos."'"; $sql .= ",'".quitar($_POST['nSintaxis'])."'"; $sql .= ",now()"; $sql .= ",'".$segu."'"; $sql .= ")";

$insert1 = $miconexion->guardar($sql); // devuelve true o false // actualizo el cambio $sql = "UPDATE wik_datos SET"; $sql .= " dat_sintaxys = '".quitar($_POST['nSintaxis'])."'"; $sql .= " where wik_datos_id = ".$id; $update1 = $miconexion->guardar($sql); if(!$insert1 or !$update1 ) echo "Error.."; // echo "Fallo.."; else echo "Funcion Actualizada."; } elseif( $edit == 2) { // inserto el cambio al historial $datos = $miconexion->unDato("select dat_parametros from wik_datos where wik_datos_id

=".$id); $sql = "INSERT INTO wik_cambios

(wik_datos_id,cam_modificado_por,cam_tipo_persona,cam_item,cam_anterior,cam_nuevo,cam_fmodif,cam_vigilado) VALUES (";

$sql .= "".$id.""; $sql .= ",".$guardo.""; $sql .= ",'".$_SESSION["usTipo"]."'";

Page 159: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

159

$sql .= ",'".$edit."'"; $sql .= ",'".$datos."'"; $sql .= ",'".quitar($_POST['nParametros'])."'"; $sql .= ",now()"; $sql .= ",'".$segu."'"; $sql .= ")";

$insert1 = $miconexion->guardar($sql); // devuelve true o false // actualizo el cambio $sql = "UPDATE wik_datos SET"; $sql .= " dat_parametros = '".quitar($_POST['nParametros'])."'"; $sql .= " where wik_datos_id = ".$id; $update1 = $miconexion->guardar($sql); if(!$insert1 or !$update1 ) echo "Error.."; // echo "Fallo.."; else echo "Funcion Actualizada."; } ?>

Archivo: guardar.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 19.

Archivos del Proyecto <?php $nFunc = $_POST['func'] ; $nDesc = $_POST['desc']; $ar =fopen($nFunc.".txt","a") or die("Problemas en la creacion"); fputs($ar,$nDesc); // fputs($ar,$_POST[$f]."<br/>"); fclose($ar); $ar = fopen($nFunc.".txt","r") or die("No se pudo abrir el archivo"); while (!feof($ar)) { $linea = fgets($ar); $lineasalto = nl2br($linea); echo $lineasalto; } fclose($ar); unlink($nFunc.".txt"); ?>

Archivo: guardarDesc.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 20.

Archivos del Proyecto <script type="text/javascript"> function siVa(id){ url='../contenido/wikikey/contenido/editor/YNaportaciones.php'; var param = "id="+id+"&op=Y"; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { $(id).innerHTML="<b style='color:red;

font-size:9px'>Aprobada</b>"; }} ); } function noVa(id){ url='../contenido/wikikey/contenido/editor/YNaportaciones.php'; var param = "id="+id+"&op=N"; var ajaxRequest = new Ajax.Request(url,{method: 'post', parameters: param, asynchronous: true, onSuccess: function(transport) { $(id).innerHTML="<b style='color:red;

font-size:9px'>Eliminada</b>";

Page 160: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

160

}} ); } </script> <body style="padding:0; margin:0; height:100%"> <div style="padding:0px 10px 10px 10px; text-align:justify; font:10px sans-serif; height:100%"> <div style="float:left; margin-right:10px;"><img src="/elearning_cisc/images/admin.ico" alt="admin"></div> <div style=" text-align:left"> <h3>Lista de Contribuciones en Espera</h3></div> <div class="small" style="margin-bottom:10px"><span style="color:red; font-size:11px"><b>Importante

!</b></span><span>&nbsp;Revise periodicamente si existen aportaciones nuevas esperando ser aceptadas en la WikiFunciones, en el listado a continuacion utilice <img src="/elearning_cisc/images/button_ok.gif" width="12" height="12" alt="Y" />para Aceptar o <img src="/elearning_cisc/images/cancel_12x12.png" width="12" height="12" alt="N" /> para Eliminar.</span></div>

<div id="marquesina" style="width:100%;"> <?php require ("../../../../lib/clase_MySql.inc.php"); $miconexion = new DB_mysql ; $con=$miconexion->conectar(); $sql="select dat_nombre_funcion, dat_descripcion, dat_creado_el, leng_nombre, wik_datos_id from wik_datos a, wik_lenguajes b where a.wik_lenguajes_id=b.wik_lenguajes_id and a.dat_estado = 'N'"; $res=$miconexion->consulta($sql); ?> <table width="100%" border='0' cellspacing='2' cellpadding='4'> <?php $i=1; while($registro=mysql_fetch_array($res)) { ?> <tbody bgcolor="#FFFFFF" style="border-bottom:1px dashed #2E81BE"> <tr> <td width="94%"><h3 style="font-size:10px"><?php echo $registro[0];?><span style="color:#006600; font-

size:9px"><?php echo " // ".$registro[3]; echo " // ".$registro[2]; ?></span></h3><font size="-1" color="#000000"><?php echo $registro[1]; ?></font><br />

</td> <td width="6%" align="center" id="<?php echo $registro[4];?>"> <img src="/elearning_cisc/images/button_ok.gif" width="14" height="14" alt="Y" style="cursor:pointer"

onClick="siVa(this.parentNode.id)" />&nbsp; <img src="/elearning_cisc/images/cancel_12x12.png" width="14" height="14" alt="N" style="cursor:pointer"

onClick="noVa(this.parentNode.id)"/> </td> </tr> </tbody> <?php }//fin while mysql_free_result($res); ?> </table> </div> </div> </body>

Archivo: importante.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 21.

Archivos del Proyecto <?php session_start(); //if (!isset($_SESSION["usNick"])) //header('Location: ../../../../lib/login/login.php'); ////////////////////////////////////////////////////////////////////////////// //esto es para decirle al cache de procesos del navegador que se desactive header("Cache-Control: no-store, no-cache, must-revalidate"); require ("../../../../lib/clase_MySql.inc.php"); $miconexion = new DB_mysql ; $miconexion->conectar(); $denuncianteId = 0; $denunciadoId = 0; if( $_SESSION["usTipo"] == "alumno" ){

Page 161: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

161

$denuncianteId = $miconexion->unDato('select exa_alumno_id from exa_alumno where alu_identificacion ='.$_SESSION["usNick"]) ;

}else{ $denuncianteId = $miconexion->unDato('select exa_profesor_id from exa_profesor where

pro_identificacion ='.$_SESSION["usNick"]) ; } if( $_POST["tipo"] == "alumno" ){ $denunciadoId = $_POST["id"] ; }else{ $denunciadoId = $_POST["id"] ; }

$sql = "INSERT INTO wik_denuncias (den_denunciado, den_denunciante, den_denunciado_es,

den_denunciante_es) VALUES ("; $sql .= " ".$denunciadoId.""; $sql .= ",".$denuncianteId.""; $sql .= ",'".$_POST["tipo"]."'"; $sql .= ",'".$_SESSION["usTipo"]."'"; $sql .= ")"; $guardado2 = $miconexion->guardar($sql); // devuelve true o false if(!$guardado2 ) echo $sql; //"Fallo.."; else echo '| <a

href="javascript:denuncias()" title="Lista de Denunciados...">Denuncias</a>'; ?>

Archivo: denunciar.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 22.

Archivos del Proyecto <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <link href="/elearning_cisc/contenido/wikikey/css/template.css" rel="stylesheet" type="text/css"> <body style="padding:0; margin:0; height:100%"> <div style="padding:0px 10px 10px 10px; text-align:justify; font:10px sans-serif; height:100%"> <div style="float:left; margin-right:10px;"><img src="/elearning_cisc/images/admin.ico" alt="admin"></div> <div style=" text-align:left"> <h3>Denuncias de Usuarios.</h3></div> <div class="small" style="margin-bottom:10px"><span style="font-size:11px">Usuarios denunciados por mal uso

del sistema o por infringir las normas de publicaci&oacute;n.</div> <div id="listadoDenunciados" style="width:100%;"> <?php require ("../../../../lib/clase_MySql.inc.php"); $miconexion = new DB_mysql ; $con=$miconexion->conectar(); $sql="SELECT distinct den_denunciado, den_denunciante, count(den_denunciado) as veces, den_denunciado_es, den_denunciante_es, wik_denuncias_id FROM wik_denuncias d where den_estado='Y' group by den_denunciante,den_denunciado order by den_denunciado asc"; $res=$miconexion->consulta($sql); $ado=''; $ante=''; $cuenta = $miconexion->unDato("SELECT count(den_denunciado) FROM wik_denuncias where den_estado

='Y' "); // if($cuenta == 0 ) echo '<div align="center" style="color:#006600;font-size:12px;"><b>..No hay mas

Registros..</b></div>'; ?> <table width="100%" border='0' cellspacing='3' cellpadding='0' bgcolor="#FFFFFF" class="bloquesPreview"> <?php $tmp=0; $i=0; $ult1=0; $ult2=0; while($registro=mysql_fetch_array($res)) {

Page 162: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

162

if($registro[3] == "profesor"){ $ado = $miconexion->unDato("select CONCAT(nombres,' ',apellidos) from exa_profesor where

exa_profesor_id = ".$registro[0]); } else { $ado = $miconexion->unDato("select CONCAT(nombres,' ',apellidos) from exa_alumno where

exa_alumno_id = ".$registro[0]); } if($registro[4] == "profesor"){ $ante = $miconexion->unDato("select CONCAT(nombres,' ',apellidos) from exa_profesor where

exa_profesor_id = ".$registro[1]); } else { $ante = $miconexion->unDato("select CONCAT(nombres,' ',apellidos) from exa_alumno where

exa_alumno_id = ".$registro[1]); } ?> <tbody> <tr> <td width="94%" style="font-size:12px;"> <?php if($i==0) { ?> <span style="color:#006600;">El <?php echo $registro[3].":</span> ".$ado.", <span

style='color:#006600;'>fue denunciado:</span> ".$registro[2]." veces"; ?></span> <span style='color:#006600;'> - por el <?php echo $registro[4].":</span> ".$ante; ?>

<?php $tmp = $registro[0]; } else { if($registro[0] == $tmp){ ?> <span style="color:#006600;">El <?php echo $registro[3].":</span> ".$ado.", <span

style='color:#006600;'>fue denunciado:</span> ".$registro[2]." veces"; ?></span> <span style='color:#006600;'> - por el <?php echo $registro[4].":</span> ".$ante; ?>

<?php } else { ?> <div style="font-size:11px; color:#000; font-weight:bold">Notificaci&oacute;n:</div> <input name="noti" id="noti<?php echo $registro[5]; ?>" type="text" style=" width:80%;" value="Usted a sido

bloqueado por infringir las normas de publicaci&oacute;n del sistema, el tiempo de bloqueo ser&aacute; de una semana." onFocus="if(this.value=='Usted a sido bloqueado por infringir las normas de publicaci&oacute;n del sistema, el tiempo de bloqueo ser&aacute; de una semana.')this.value=''" onBlur="if(this.value=='')this.value='Usted a sido bloqueado por infringir las normas de publicaci&oacute;n del sistema, el tiempo de bloqueo ser&aacute; de una semana.'">

<br /><br /><br /> <span style="color:#006600;">El <?php echo $registro[3].":</span> ".$ado.", <span style='color:#006600;'>fue

denunciado:</span> ".$registro[2]." veces"; ?></span> <span style='color:#006600;'> - por el <?php echo $registro[4].":</span> ".$ante; ?>

<?php }} ?> </td> <td width="6%" valign="top" align="center" id="<?php echo $registro[0];?>"> <?php if($i > 0) { if($registro[0] != $tmp){ ?> <img src="/elearning_cisc/images/button_ok.gif" width="14" height="14" alt="Y" style="cursor:pointer"

onClick="acepDen(this.parentNode.id,'noti<?php echo $registro[5]; ?>')" title="Aceptar Denuncia" />&nbsp; <img src="/elearning_cisc/images/cancel_12x12.png" width="14" height="14" alt="N" style="cursor:pointer"

onClick="borraDen(this.parentNode.id)" title="Eliminar Denuncia"/> <?php $tmp = $registro[0]; }}else $i++; ?> </td> </tr> </tbody> <?php //$tmp = $registro[0]; $ult1=$registro[5]; $ult2=$registro[0]; }//fin while mysql_free_result($res); if($cuenta != 0 ) { ?> <tbody> <tr><td width="94%" style="font-size:12px;"> <div style="font-size:11px; color:#000; font-weight:bold">Notificaci&oacute;n:</div> <input name="noti" id="noti<?php echo $ult1; ?>" type="text" style=" width:80%;" value="Usted a sido

bloqueado por infringir las normas de publicaci&oacute;n del sistema, el tiempo de bloqueo ser&aacute; de una semana." onFocus="if(this.value=='Usted a sido bloqueado por infringir las normas de publicaci&oacute;n del sistema, el tiempo de bloqueo ser&aacute; de una semana.')this.value=''" onBlur="if(this.value=='')this.value='Usted a sido bloqueado por infringir las normas de publicaci&oacute;n del sistema, el tiempo de bloqueo ser&aacute; de una semana.'">

</td><td width="6%" valign="top" align="center" id="<?php echo $ult2;?>">

Page 163: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

163

<img src="/elearning_cisc/images/button_ok.gif" width="14" height="14" alt="Y" style="cursor:pointer" onClick="acepDen(this.parentNode.id,'noti<?php echo $ult1; ?>')" title="Aceptar Denuncia" />&nbsp;<img src="/elearning_cisc/images/cancel_12x12.png" width="14" height="14" alt="N" style="cursor:pointer" onClick="borraDen(this.parentNode.id)" title="Eliminar Denuncia"/>

</td></tr> </tbody> </table> <?php } else echo '<div align="center" style="color:#006600;font-size:12px;"><b>..No hay mas Registros..</b></div>'; $sql=" SELECT distinct den_denunciado, den_denunciado_es, den_fecha_fin FROM wik_denuncias where

den_estado ='B' order by den_denunciado asc"; $res=$miconexion->consulta($sql); $ado=''; $ante=''; ?> <br /><br /> <table width="100%" border='0' cellspacing='3' cellpadding='0' bgcolor="#FFFFFF" class="bloquesPreview"> <tbody><tr><td><div style="font-size:11px; color:#000; font-weight:bold">Lista de Usuarios

Bloqueados.</div></td></tr></tbody> <?php while($registro=mysql_fetch_array($res)) { if($registro[0] == "profesor"){ $ado = $miconexion->unDato("select CONCAT(nombres,' ',apellidos) from exa_profesor where

exa_profesor_id = ".$registro[0]); } else { $ado = $miconexion->unDato("select CONCAT(nombres,' ',apellidos) from exa_alumno where

exa_alumno_id = ".$registro[0]); } ?> <tbody> <tr> <td width="94%" style="font-size:12px; border-bottom:1px dashed #CCC"> <span style="color:#006600; font-weight:bold">El <?php echo $registro[1].":</span> ".$ado.", <span

style='color:#006600;'>Esta bloqueado hasta el </span> ".$registro[2]; ?> </td> <td width="6%" valign="top" align="center" id="<?php echo $registro[0];?>"> <img src="/elearning_cisc/images/cancel_12x12.png" width="14" height="14" alt="N" style="cursor:pointer"

onClick="borraDen(this.parentNode.id)" title="Eliminar Denuncia"/> </td> </tr> </tbody> <?php //$tmp = $registro[0]; }//fin while mysql_free_result($res); ?> </table> </div> </div> </body>

Archivo: denuncias.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 23.

Archivos del Proyecto <?php header("Cache-Control: no-store, no-cache, must-revalidate"); require ("../../../../lib/clase_MySql.inc.php"); $cnx = new DB_mysql ; $cnx->conectar(); session_start(); function argumentos($arreglo){ $arreglo = substr($arreglo,0, strlen($arreglo)-1); $campos = explode("@", $arreglo ); $data=""; $data.="<table width='100%' border='0' cellspacing='0' cellpadding='0'>"; for ($p=0; $p < count($campos); $p+=2){

Page 164: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

164

$data.="<tr><td><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$campos[$p].": </b>".$campos[$p+1]."</td></tr>";

} $data.="</table>"; echo $data; } ?> <div style="width:98%" align="center"> <div style="border:1px solid #ccc; -moz-border-radius: 4px 4px 4px 4px; padding:10px 10px 10px 10px;

background:#FFF"> <div style="float:left; margin-right:8px;"><img src="/elearning_cisc/contenido/wikikey/images/historial32.ico" alt="ojo"

/></div> <div style=" text-align:left"><h3>Historial de << <?php $fun=""; $fun = $cnx->unDato('select dat_nombre_funcion from

wik_datos where wik_datos_id ='.$_POST['id']); echo $fun; ?> >></h3></div> <div class="small" style="margin-bottom:7px">Revise todos los cambios realizados a la funci&oacute;n.</div> <hr /> <?php $result = $cnx->consulta("SELECT ca.* , case when cam_tipo_persona = 'alumno' then al.apellidos else

pr.apellidos end as nombre FROM wik_cambios ca left outer join exa_alumno al on al.exa_alumno_id = ca.cam_modificado_por left outer join exa_profesor pr on pr.exa_profesor_id = ca.cam_modificado_por where wik_datos_id =".$_POST['id']." order by cam_fmodif desc"); ?> <table width='95%' border='0' cellspacing='0' cellpadding='0' style='font-size:12px;'> <?php while ($row = mysql_fetch_row($result)) { ?> <tr><td align="left" style='color:#000000;'> <li><span style='color:#006600'>Modificado el:</span> <?php echo $row[7]; ?>&nbsp;&nbsp;-&nbsp;&nbsp;<span

style='color:#006600'>por:</span> <a class='Ntooltip' href="#"> <b><?php echo $row[9]; ?></b>&nbsp;<img src="/elearning_cisc/contenido/wikikey/images/police.jpg" width="10"

height="17" alt="icon"> <span> <div style="padding:10px; text-align:justify;"> <img src="/elearning_cisc/images/35px-

Nuvola_apps_important_yellow.svg.png" width="35" height="29" alt="log" style="float:left; margin-right:7px;"> Denuncie si esta persona infringe las normas de publicaci&oacute;n o está haciendo uso indebido del sistema..</div>

<div style="background:#f6f6f6; height:25px; padding:6px 10px 0px 10px; "><img src="/elearning_cisc/images/down.gif" width="14" height="8" alt="down">

<input name="Denunciar" type="button" value="Denunciar" style="margin-left:5px" onClick="denunciar('<?php echo $row[2]; ?>','<?php echo $row[3]; ?>')"> </div>

</span> </a>&nbsp;&nbsp;-&nbsp;&nbsp;<span style='color:#006600'>Item modificado: </span><?php if($row[4]==1){echo

"Descripci&oacute;n";} elseif($row[4]==11){echo "Sintaxis";} elseif($row[4]==2){echo "Parametros";}else{echo "Ejemplos";} ?></li>

</td></tr> <tr><td align="left" style='color:#000000; padding-left:40px;'> <?php if($row[4]==2){ ?> <input name="reversa" type="radio" value="<?php echo $row[5] ?>" id="<?php echo $row[4] ?>"><span

style='color:#006600; font-weight:bold'>Previo: </span> <?php argumentos($row[5]); ?> <br /> <input name="reversa" type="radio" value="<?php echo $row[6] ?>" id="<?php echo $row[4] ?>"><span

style='color:#006600; font-weight:bold;'>Modificaci&oacute;n: </span> <?php argumentos($row[6]); ?> <?php } else { ?> <input name="reversa" type="radio" value="<?php echo $row[5] ?>" id="<?php echo $row[4] ?>"><span

style='color:#006600; font-weight:bold'>Previo: </span><?php echo $row[5]; ?><br /> <input name="reversa" type="radio" value="<?php echo $row[6] ?>" id="<?php echo $row[4] ?>"><span

style='color:#006600; font-weight:bold;'>Modificaci&oacute;n: </span><?php echo $row[6]; ?> <?php } ?> </td></tr> <tr><td>&nbsp;</td></tr> <div align="center" style=" position:fixed; width:50px; height:95px; background:

url(/elearning_cisc/contenido/wikikey/images/menu_t.jpg) repeat; top:0px; right:20px; border-left:1px solid #666;border-right:1px solid #666; border-bottom:1px solid #666; -moz-border-radius: 0px 0px 4px 4px;padding:30px 2px 2px 2px;">

<input name="grabar" type="button" value="" style="background: #F2F3D8 url(/elearning_cisc/images/disco.png) no-repeat center center;-moz-border-radius: 4px 4px 4px 4px; cursor:pointer; width:30px; height:30px;" title="Revertir Historial Marcado." onclick="revertir('<?php echo $_POST['id']; ?>')" /><br />

<input name="cancelar" type="button" value="" style="background: #F2F3D8 url(/elearning_cisc/images/cancel_12x12.png) no-repeat center center;-moz-border-radius: 4px 4px 4px 4px; cursor:pointer; width:30px; height:30px;" title="Cancelar" onclick="buscarDatosFunciones('<?php echo $_POST['id']; ?>')" /> <br />

Page 165: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

165

</div> <?php } if(mysql_num_rows($result) == 0){ echo "<tr><td>No hay resultados.. <input name='cancelar' type='button' value='' style='background: #F2F3D8

url(/elearning_cisc/images/cancel_12x12.png) no-repeat center center;-moz-border-radius: 4px 4px 4px 4px; cursor:pointer; width:30px; height:30px;' title='Cancelar' onclick='buscarDatosFunciones(&quot;".$_POST['id']."&quot;)' /></td></tr>"; ?>

<?php } ?> </table> </div> <br /><br /> </div>

Archivo: historial.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 24.

Archivos del Proyecto <?php header("Cache-Control: no-store, no-cache, must-revalidate"); require ("../../../../lib/clase_MySql.inc.php"); $cnx = new DB_mysql ; $cnx->conectar(); session_start(); ?> <div style="width:98%"> <div style="float:left; margin-right:8px;"><img src="/elearning_cisc/contenido/wikikey/images/Settings-81.ico" alt="ojo"

/></div> <div style=" text-align:left"><h3>Seguimiento de Funciones Vigiladas</h3></div> <div class="small" style="margin-bottom:7px">Verifique que personas realizaron cambios a sus funciones vigiladas.

Usted puede reversar los datos modificados i/o denunciar a alg&uacute;n usuario si infringe las normas de edici&oacute;n.</div>

<hr /> <div style="border:1px solid #073852; -moz-border-radius: 4px 4px 4px 4px; padding:8px 0px 8px 0px;"> <?php $idUsuario = ""; if( $_SESSION["usTipo"] == "alumno" ){ $idUsuario = $cnx->unDato('select exa_alumno_id from exa_alumno where alu_identificacion

='.$_SESSION["usNick"]) ; }else{ $idUsuario = $cnx->unDato('select exa_profesor_id from exa_profesor where pro_identificacion

='.$_SESSION["usNick"]) ; } $result = $cnx->consulta("SELECT leng_nombre,dat_nombre_funcion,wik_datos_id FROM wik_datos w, wik_lenguajes l where dat_creado_por =".$idUsuario." and l.wik_lenguajes_id = w.wik_lenguajes_id and w.dat_seguido='Y' and w.dat_estado = 'Y' order by dat_creado_el desc"); ?> <table width='100%' border='0' cellspacing='3' cellpadding='0' style='font-size:12px; font-weight:bold;'> <?php while ($row = mysql_fetch_row($result)) { ?> <tr><td style='color:#006600; font-size:11px'> <a href='javascript:buscarDatosFunciones(&quot;".$row[2]."&quot;)'><?php echo $row[1]; ?></a> // <b><?php

echo $row[0]; ?></b> // <span style='color:#000'></span> </td></tr> <?php } if(mysql_num_rows($result) == 0){ echo "<tr><td>No hay resultados..</td></tr>"; } ?> </table> </div> <br /><br /> </div>

Page 166: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

166

Archivo: seguimientos.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 25.

Archivos del Proyecto <?php //if (!isset($_SESSION["usNick"])) //header('Location: ../../../../lib/login/login.php'); ////////////////////////////////////////////////////////////////////////////// //esto es para decirle al cache de procesos del navegador que se desactive header("Cache-Control: no-store, no-cache, must-revalidate"); require ("../../../../lib/clase_MySql.inc.php"); $miconexion = new DB_mysql ; $miconexion->conectar(); function suma_fechas($fecha,$ndias) { if (preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha)) list($año,$mes,$dia) = explode('/', $fecha); if (preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha)) list($año,$mes,$dia)= explode('-',$fecha); $nueva = mktime(0,0,0, $mes,$dia,$año) + $ndias * 24 * 60 * 60; $nuevafecha=date("Y-m-d",$nueva); return ($nuevafecha); } if($_POST['op']=='Y') { $sql = "update wik_denuncias set den_descripcion='".$_POST['descrip']."', den_fecha_inicio = now(),

den_fecha_fin ='".suma_fechas(date('Y-m-d'),7)."', den_estado='B' where den_denunciado=".$_POST['id'];

$guardado2 = $miconexion->guardar($sql); // devuelve true o false echo "Bloqueado."; } else { $sql = "delete from wik_denuncias where den_denunciado=".$_POST['id'];

$guardado2 = $miconexion->guardar($sql); // devuelve true o false echo "Eliminado."; } ?>

Archivo: YNdenuncias.php

Elaboracion: Carlos A. Zambrano I.

Cuadro 26.

Archivos del Proyecto – Hoja de Estilos /*carlos Antonio Zambrano*/ html { height: 100%; margin-bottom: 0px; } form { margin: 0; padding: 0; } img,table { border:none; } body, html { margin:0; padding:0;

Page 167: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

167

height:100%; font-family: Helvetica,Arial,sans-serif; line-height: 1.3em; font-size: 12px; color: #333; background: #e6e6e6 url(../images/bg.jpg) top left repeat-x; overflow:visible; } a:link, a:visited { text-decoration: none; font-weight: normal; } a:hover { text-decoration: underline; font-weight: normal; } input.button { cursor: pointer; background:none; } p { margin-top: 10px; margin-bottom: 0; font-weight:bold; } z { font: 25px Verdana, Arial, Helvetica, sans-serif; font-weight:bold; } .label{ color:#000000; /*background: #FFFFFF url(../../../images/bg_panel_top_right.gif) no-repeat right;*/ background:#FFFFFF url(../../../images/LineFondo2.jpg) repeat-x; font:11px Verdana, Arial, Helvetica, sans-serif; padding-left:5px; height:17px; line-height:16px; border:1px solid #C2CCEF; } .bloquesPreview{ border:1px solid #ccc; /*background: #FFF url(../../../images/bg_panel_top_right.gif) repeat-y right;*/ background:#FFF; -moz-border-radius: 4px 4px 4px 4px; padding:10px 5px 10px 5px; } .bloquesPreviewComent{ border:1px solid #ccc; -moz-border-radius: 4px 4px 4px 4px; padding:10px 5px 10px 5px; } .tituloBloque{ /*background: url(../../../images/method.png) no-repeat left center; */ background:url(/elearning_cisc/images/arrow_show.gif) no-repeat left center; padding-left:12px; font:10px Verdana, Arial, Helvetica, sans-serif; font-weight:bold; border-bottom:1px dashed #CCC8C4; color:#006600; } .tituloComentarios{ background:url(../../../images/Default%20Document-41.ico) no-repeat left center; padding-left:35px; border-bottom:1px solid #0668B3; font:15px Arial; font-weight:bold; color:#0668B3; }

Page 168: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

168

.bloqueSintaxis{ font:15px Verdana, Arial, Helvetica, sans-serif; /*background:#FFF url(../../../images/bg_panel_top_right.gif) repeat-y right;*/ /*border:1px solid #CCC;*/ color:#000; padding:0.5em; /*-moz-border-radius: 4px 4px 4px 4px;*/ } .bloqueEjemplos{ font:15px Geneva, Arial, Helvetica, sans-serif; /*background:#FFF url(../../../images/bg_panel_top_right.gif) repeat-y right;*/ background: #DFE6F2; border:1px solid #CCC; padding:0.5em; display:block; margin-top:2px; -moz-border-radius: 4px 4px 4px 4px; width:97%; } .bloqueDescrParam{ font:15px Geneva, Arial, Helvetica, sans-serif; /*background:#FFF url(../../../images/bg_panel_top_right.gif) repeat-y right;*/ background: #DFE6F2; border:1px solid #CCC; padding:0.5em; display:block; margin-top:5px; -moz-border-radius: 4px 4px 4px 4px; width:97%; } .opaco{ position:absolute; top:0px; left:0px; height: 100%; width:100%; background-color:#000; filter: Alpha(Opacity=0.65); opacity: .65; } .blanco{ position:absolute; top:20px; left:50px; right:50px; bottom:20px; background:#FFF; overflow:auto; padding:10px; border:1px solid #000; -moz-border-radius: 4px 4px 4px 4px; } .lstargumentos{ color:#0668B3; font-size:14px; /*background:url(../../../images/arrow_show.gif) no-repeat left center;*/ padding:0.5em; } .editar{ float:right; font-size:10px; color:#006600; } .bloqueDescr{ padding-top:7px; font:14px Verdana, Arial, Helvetica, sans-serif; color:#000000; line-height:20px; padding:0.5em;}

Page 169: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

169

.bloquelight{ /*border:1px solid #5A77D8; padding:10px 10px 10px 10px; -moz-border-radius: 4px 4px 4px 4px;*/ } .advertencia{ background:#EDD57E; border:2px solid #C9A31D; padding:5px 5px 5px 5px; -moz-border-radius: 4px 4px 4px 4px; } #capaLista{ /*position:fixed; */ width:99%; background:#FFF; border:1px solid #dddddd; -moz-border-radius: 0px 0px 4px 4px; border-top:none; display:none; padding:4px 4px 4px 4px; } #capaBusc{ position:fixed; background:#fff; color:#000; text-shadow:none; font-size:12px; font-weight:normal; border:1px solid #0C1589; -moz-border-radius: 0px 0px 4px 4px; border-top:none; width:304px; /*padding-left:4px; padding-right:4px;*/ margin-left:5px; overflow:visible; line-height:20px; display:none; } .txtWiky{} #LstMenuVar:hover{ color:#000; background:#FFF; } #LstMenuVar{ background: url(../images/header_bg2.jpg) repeat-x; /*#F6f6f6 url(../images/menu_t.jpg) repeat;*/ color:#FFF; position:absolute; line-height:20px; font-size:12px; right:20px; width:250px; height:20px; bottom:0px; font-weight:bold; font-family:"lucida grande",tahoma,verdana,arial,sans-serif; border-top:1px solid #999; border-left:1px solid #999; border-right:1px solid #999; cursor:pointer; z-index:999; display:none; } #Lista{ background:#F6f6f6; position:absolute; line-height:15px; font-size:12px; right:20px;

Page 170: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

170

width:250px; /*height:300px;*/ top:10px; bottom:20px; font-weight:bold; font-family:Verdana, Geneva, sans-serif; border-top:1px solid #999; border-left:1px solid #999; border-right:1px solid #999; -moz-border-radius: 4px 4px 0px 0px; overflow:auto; cursor:pointer; z-index:1000; display:none; } /*-------------------------------------------------------------*/ #menuFlotante a, #menuFlotante a:link { font-weight: normal; font-family:Verdana, Geneva, sans-serif; font-size: 12px; padding:0px; margin:0; color:#FFFFFF; text-decoration:none; font-weight:bold; text-shadow:#333 1px 0px; } #menuFlotante a:hover { background:#fff; color:#39F; text-shadow:none; } /*****************************************/ /*** Template specific layout elements ***/ /*****************************************/ #page_bg { padding: 0; margin-bottom: 1px; } #top { width:100%; margin:0 auto; } div.center { /*background: transparent url(../images/top_bg.jpg) top center no-repeat; */ /* modificado */ } div#wrapper { /*margin-left: auto; margin-right: auto;*/ width:100%; } #logo { padding:26px 0 0 0; height:37px; text-align:center; } #logo a, #logo a:link, #logo a:hover { font-weight: normal; font-family : "Trebuchet MS", Arial, Helvetica, sans-serif; font-size: 22px; padding:0px; margin:0; line-height:1.4em; letter-spacing:1px; color:#fefefe; text-decoration:none; }

Page 171: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

171

div#newsflash { width: auto; margin-left: 350px; margin-right: 30px; border: 1px solid #00f; } div#tabarea { margin: 0 auto; /*background: transparent url(../images/tabarea_bg.jpg) bottom center no-repeat;*/ width:100%; height:32px; text-align:left; background: transparent url(../images/header_bg.jpg) repeat-x center top; } div#footer_r { padding-top: 10px; height: 47px; overflow: hidden; } div#footer_r div { text-align: center; font-size: .90em; color: #aaa; } div#footer_r a:link, div#footer_r a:visited { color: #999; } #pathway { padding: 0px 10px 8px; width: auto; margin-right: 250px; text-align: left; } #search { float: right; width:320px; margin-top: -20px; margin-right: 20px; height: 40px; overflow: hidden; text-align:right; } #area { padding: 0; width:100%; } #whitebox { margin: 0; width: auto; } #whitebox div { text-align: left; } #whitebox_t { background: #ebebeb url(../images/header_top_middle.jpg) 0 0 repeat-x; } #whitebox_tl { background: url(../images/header_top_left.jpg) 0 0 no-repeat; } #whitebox_tr { height: 16px; overflow: hidden; background: url(../images/header_top_right.jpg) 100% 0 no-repeat;

Page 172: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

172

} #whitebox_m { width: auto; padding: 0px 8px; margin:0px; } #whitebox_br { height: 13px; background: url(../images/mw_content_b_r.png) 100% 100% no-repeat; } /* horizontal pill menu */ .pill { /* margin:0 auto; */ } td.pill_m { padding: 0; margin: 0 30px; width: auto; text-align:center; } #pillmenu { white-space: nowrap; height: 30px; float: left; } #pillmenu ul { margin: 0; padding: 0; list-style:none; } #pillmenu li { float: left; margin: 0 1px 0 0; padding: 0; background: url(../images/top_menu_right_bg.jpg) top right no-repeat; } #pillmenu a { font-family: Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; float:left; display:block; height: 26px; line-height: 24px; padding: 4px 10px 0 10px; color: #fefefe; text-decoration: none; background: url(../images/top_menu_left_bg.jpg) top left no-repeat; } #pillmenu a:hover { color: #666666; } #pillmenu a#active_menu-nav { height: 30px; line-height: 21px; } #leftcolumn ,#rightcolumn { margin: 0; width: 100%; /*float:left;*/ } div#maincolumn {

Page 173: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

173

background: url(../images/wrapper_bg.jpg) 0 0 repeat-y; padding:17px 5px; float: right; width: 750px; } div.nopad { padding: 0; text-align:left; } td.middle_pad { width: 20px; } /*****************************************/ /*** Joomla! specific content elements ***/ /*****************************************/ div.offline { background: #fffebb; width: 100%; position: absolute; top: 0; left: 0; font-size: 1.2em; padding: 5px; } span.pathway { display: block; margin: 0 20px; height: 16px; line-height: 16px; overflow: hidden; } /* headers */ div.componentheading { padding-left: 0px; } h1 { padding: 0; font-family:Helvetica ,Arial,sans-serif; font-size: 1.3em; font-weight: bold; vertical-align: bottom; color: #666; text-align: left; width: 100%; } h2, .contentheading { padding: 0; margin: 0; margin-bottom:2px; font-family: Tahoma, Helvetica,sans-serif; font-size: 12px; font-weight: bold; /*vertical-align: bottom;*/ color: #1b78b7; text-align: left; width: 100%; } table.contentpaneopen h3 { margin-top: 25px; } h4 { font-family: Arial, Helvetica, sans-serif; color: #333; }

Page 174: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

174

h3, .componentheading, table.moduletable th, legend { margin: 0; padding: 0; font-weight: bold; font-family: Tahoma,Helvetica,Arial,sans-serif; color:#1b78b7; font-size: 1.4em; /*padding-left: 0px; margin-bottom: 10px; text-align: left; */ } /* small text */ .small { font-size: .90em; color: #666; font-weight: normal; text-align: left; } .modifydate { height: 20px; vertical-align: bottom; font-size: .90em; color: #999; font-weight: normal; text-align: left; } .createdate { height: 20px; vertical-align: top; font-size: .90em; color: #999; font-weight: normal; vertical-align: top; padding-bottom: 5px; padding-top: 0px; } a.readon { margin-top: 10px; display: block; float: left; background: url(../images/mw_readon.png) top right no-repeat; padding-right: 20px; line-height: 14px; height: 16px; } /* form validation */ .invalid { border-color: #ff0000; } label.invalid { color: #ff0000; } /** overlib **/ .ol-foreground { background-color: #f6f6f6; } .ol-background { background-color: #666; } .ol-textfont { font-family: Arial, Helvetica, sans-serif; font-size: 10px; } .ol-captionfont { font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #f6f6f6;

Page 175: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

175

font-weight: bold; } .ol-captionfont a { color: #0B55C4; text-decoration: none; font-size: 12px; } .ol-closefont {} /* menu links */ a.mainlevel:link, a.mainlevel:visited { padding-left: 5px; } a.mainlevel:hover { } /* spacers */ span.article_separator { display: block; height: 20px; } .article_column { padding-right: 5px; } .column_separator { border-left: 1px dashed #e0e0e0; padding-left: 10px; } td.buttonheading { } .clr { clear: both; } div#maindivider { border-top: 1px solid #ddd; margin-bottom: 10px; overflow: hidden; height: 1px; } table.blog span.article_separator { display: block; height: 20px; } /* table of contents */ table.contenttoc { margin: 5px; border: 1px solid #ccc; padding: 5px; } table.contenttoc td { padding: 0 5px; } /* content tables */ td.sectiontableheader { background: #dcdcdc; color: #333; font-weight: bold; padding: 4px; border-right: 1px solid #fff; }

Page 176: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

176

tr.sectiontableentry0 td, tr.sectiontableentry1 td, tr.sectiontableentry2 td { padding: 4px; } td.sectiontableentry0, td.sectiontableentry1, td.sectiontableentry2 { padding: 3px; } /* content styles */ table.contentpaneopen, table.contentpane { margin: 0; padding: 0; width: auto; } table.contentpaneopen li { margin-bottom: 5px; } table.contentpaneopen fieldset { border: 0; border-top: 1px solid #ddd; } table.contentpaneopen h3 { margin-top: 25px; } table.contentpaneopen h4 { font-family: Arial, Helvetica, sans-serif; color: #333; } .highlight { background-color: #fffebb; } /* module control elements */ table.user1user2 div.moduletable { margin-bottom: 0px; } div.moduletable, div.module { margin-bottom: 25px; } div.module_menu { margin: 0; padding: 0; margin-bottom: 0px; } div.module_menu div div div { padding: 0px; padding-top: 30px; padding-bottom: 10px; width: auto; } div.module_menu div div div div { background: none; padding: 0; } div.module_menu ul { margin: 10px 0; padding-left: 10px; list-style:none; }

Page 177: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

177

div.module_menu ul li { margin: 0; padding: 0; } div.module_menu ul li a:link, div.module_menu ul li a:visited { font-weight: bold; background:transparent url(../images/blue/bullet2.jpg) top left no-repeat; padding:2px 0 2px 25px; line-height:24px; } #leftcolumn div.module table ,#rightcolumn div.module table { width: auto; } #leftcolumn h3, #rightcolumn h3 { margin: 0; color:#fefefe; font-weight: bold; font-family: Helvetica,Arial,sans-serif; font-size: 1.1em; background:#eeeeee; padding:2px 0 2px 10px; line-height:20px; text-align: left; background:transparent url(../images/menu_t.jpg) top left repeat; } #leftcolumn .moduletable_menu, #leftcolumn .moduletable, #leftcolumn .moduletable_text, #leftcolumn .c, #rightcolumn .moduletable_menu, #rightcolumn .moduletable, #rightcolumn .moduletable_text, #rightcolumn .c { margin:0 0 20px 0; padding: 3px; text-align:left; } #leftcolumn ul.menu, #leftcolumn ul.menuAlfa, #rightcolumn ul.menu { margin:0; padding:0; list-style:none; border:1px solid #ccc; border-top:none; } #leftcolumn ul.menu li,#leftcolumn ul.menuAlfa, #rightcolumn ul.menu li { margin:0; padding:0; background:#f5f5f5; } #leftcolumn ul.menu li a, #leftcolumn ul.menu li a:link, #rightcolumn ul.menu li a, #rightcolumn ul.menu li a:link { display:block; line-height:24px; background:#f5f5f5 url(../images/menu_link_bg.gif) left no-repeat; padding:2px 20px 0 20px; border-top:1px solid #dddddd; text-decoration:none; color:#1b78b7; /*8888888888888888888888888888888888888888888888888888888888888888888*/ } #leftcolumn ul.menu li a:hover, #rightcolumn ul.menu li a:hover { background:#eeeeee url(../images/menu_link_bg.gif) left no-repeat; color:#666666; } /* ****** left col current menu ****** */ #leftcolumn ul.menu li#current a, #leftcolumn ul.menu li#current a:link, #rightcolumn ul.menu li#current a, #rightcolumn ul.menu li#current a:link { display:block; line-height:20px;

Page 178: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

178

background:#f5f5f5 url(../images/menu_curren_link_bg.gif) left no-repeat; padding:2px 20px; border-top:1px solid #dddddd; text-decoration:none; color:#639ace; } #leftcolumn ul.menu li#current a:hover, #rightcolumn ul.menu li#current a:hover { background:#eeeeee url(../images/menu_curren_link_bg.gif) left no-repeat; color:#666666; } /* ****** left col sub menu ****** */ #leftcolumn ul.menu li ul, #rightcolumn ul.menu li ul { margin:0; padding:0 0 0 0px; list-style:none; } #leftcolumn ul{ padding:0 !important; margin:0 !important; /*background:#FFF !important;*/ } #leftcolumn ul.menu li#current ul li a, #leftcolumn ul.menu li#current ul li a:link, #rightcolumn ul.menu li#current ul li a, #rightcolumn ul.menu li#current ul li a:link { background:#f5f5f5 url(../images/menu_sub_link_bg.gif) left no-repeat; text-decoration:none; color:#1b78b7; padding:2px 25px; } #leftcolumn ul.menu li#current ul li a:hover, #rightcolumn ul.menu li#current ul li a:hover { background:#f5f5f5 url(../images/menu_sub_link_bg.gif) left no-repeat; color:#666666; } /* forms */ #leftcolumn .moduletable ul, #rightcolumn .moduletable ul { margin:6px 0; padding:0; list-style:none; } #leftcolumn .moduletable ul li, #rightcolumn .moduletable ul li { margin:0; padding:0 2px; } table.adminform textarea { width: 540px; height: 400px; font-size: 1em; color: #000099; } div.search input { width: 145px; border: 1px solid #ccc; margin: 15px 0 10px 0; } form#form-login fieldset { border: 0 none; margin: 0em; padding: 0.2em;} form#form-login ul { padding-left: 20px; } /* thumbnails */ div.mosimage { margin: 5px; } div.mosimage_caption { font-size: .90em; color: #666; } div.caption { padding: 0 10px 0 10px; } div.caption img { border: 1px solid #CCC; }

Page 179: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

179

div.caption p { font-size: .90em; color: #666; text-align: center; } /* Parameter Table */ table.paramlist { margin-top: 5px; } table.paramlist td.paramlist_key { width: 128px; text-align: left; height: 30px; } table.paramlist td.paramlist_value { } div.message { font-family : "Trebuchet MS", Arial, Helvetica, sans-serif; font-weight: bold; font-size : 14px; color : #c30; text-align: center; width: auto; background-color: #f9f9f9; border: solid 1px #d5d5d5; margin: 3px 0px 10px; padding: 3px 20px; } /* Banners module */ /* Default skyscraper style */ .bannergroup { } .banneritem { } /* Text advert style */ .banneritem_text { padding: 4px; font-size: 11px; } .bannerfooter_text { padding: 4px; font-size: 11px; background-color: #F7F7F7; text-align: right; } /* System Messages */ /* see system general.css */ .pagination span { padding: 2px; } .pagination a { padding: 2px; } /* Polls */ .pollstableborder td { text-align: left; } /* Frontend Editing*/ fieldset { border: 1px solid #ccc; margin-top: 15px; padding: 15px; } legend { margin: 0; padding: 0 10px; }

Page 180: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

180

td.key { border-bottom:1px solid #eee; color: #666; } /* Tooltips */ .tool-tip { float: left; background: #ffc; border: 1px solid #D4D5AA; padding: 5px; max-width: 200px; } .tool-title { padding: 0; margin: 0; font-size: 100%; font-weight: bold; margin-top: -15px; padding-top: 15px; padding-bottom: 5px; background: url(../../system/images/selector-arrow.png) no-repeat; } .tool-text { font-size: 100%; margin: 0; } /* System Standard Messages */ #system-message dd.message ul { background: #C3D2E5 url(../../images/notice-info.png) 4px center no-repeat;} /* System Error Messages */ #system-message dd.error ul { color: #c00; background: #E6C0C0 url(../../system/images/notice-alert.png) 4px center

no-repeat; border-top: 3px solid #DE7A7B; border-bottom: 3px solid #DE7A7B;} /* System Notice Messages */ #system-message dd.notice ul { color: #c00; background: #EFE7B8 url(../../system/images/notice-note.png) 4px center

no-repeat; border-top: 3px solid #F0DC7E; border-bottom: 3px solid #F0DC7E;} /* ****************************************************************************** */ /* blue */ input,select { border:1px solid #23a3db; background: #FFFFFF url(../../../images/bg_panel_top_right.gif) repeat-y right; } textarea { border:1px solid #23a3db; /*#dcdcdc;*/ background: url(../images/text-bg.gif) repeat-x scroll 0 0; background: #FFFFFF url(../../../images/bg_panel_top_right.gif) repeat-y right center ; } /* blue */ a:link, a:visited { color: #1b78b7; } a:hover { color: #23a3db; } #pillmenu a#active_menu-nav { color: #fff; } #pillmenu a#active_menu-nav:hover { color: #fff; } h3, .componentheading, table.moduletable th { color: #1b78b7;

Page 181: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

181

} div.module_menu { background: url(../images/blue/module_mright_bg.jpg) 100% 100% no-repeat; } div.module_menu div { background: url(../images/blue/module_mleft_bg.jpg) 0 100% no-repeat; } div.module_menu div div { background: url(../images/blue/module_right_bg.jpg) 100% 0 no-repeat; } div.module_menu div div div { background: url(../images/blue/module_left_bg.jpg) 0 0 no-repeat; } /* ********************************************************************************* */ /* blue */ #page_bg { margin:0px auto; } div#wrapper { padding-top:5px; /*background: url(../images/wrapper_bg.jpg) repeat-y center center; =================================

*/ } .wrap { padding-top:5px; background: url(../images/wrapper_bg.jpg) repeat-y center center; /*=================================

*/ } div#wrapper_r { /* background: url(../images/wrapper_r_bg.jpg) no-repeat center center;

/*================================= */ } div#header { margin:0 6px; } div#header_r { } div#footer { width:912px; background: url(../images/footer_m_bg.jpg) 0 100% repeat-x; } div#footer_l { background: url(../images/footer_l_bg.jpg) 0 0 no-repeat; } div#footer_r { background: url(../images/footer_r_bg.jpg) 100% 0 no-repeat; } /* ********************************************************************** */ input[type="checkbox"], input[type="radio"]{ background: transparent; border: none; } /* -------------------------- */ a.sgfooter:link, a.sgfooter:visited { color : #1b78b7; font-family: Arial,sans-serif; text-decoration:none; }

Page 182: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

182

a.sgfooter:hover { color: #1b78b7; font-family: Arial,sans-serif; text-decoration:none; } #sgf { font-size: 11px; text-align:center; width:100%; margin:0px auto; color: #1b78b7; font-family: Arial,sans-serif; } .sgf { text-align:right; font-size: 11px; font-family: Arial,sans-serif; color: #1b78b7; text-decoration:none; } .sgf1 { font-size: 11px; font-family: Arial,sans-serif; color: #1b78b7; text-align:left; } a.sglink:link, a.sglink:visited { color : #1b78b7; font-size : 11px; font-family: Arial,sans-serif; text-decoration:none; } a.sglink:hover { color : #1b78b7; font-family: Arial,sans-serif; text-decoration:none; } #vistaFuncion{ width:98%; text-align:justify; /*border:1px solid #114A84; background:#fff url(/elearning_cisc/images/bg_panel_top_right.gif) repeat-y right; -moz-border-radius: 4px 4px 4px 4px; margin:0px 0px 0px 0px;*/ /*padding:10px 10px 4px 10px; */ /*font:10px sans-serif;*/ } /*************************************************************************************88 agregados mios *********************************************/ #leftcolumn ul.menuAlfa a, #leftcolumn ul.menuAlfa a:link { /*display:block;*/ display:inline-block; line-height:24px; /*background:#f5f5f5 url(../images/menu_link_bg.gif) left no-repeat; padding:5px 20px 5px 20px; margin-bottom:3px;*/ border:1px solid #dddddd; text-decoration:none; color:#1b78b7; /*8888888888888888888888888888888888888888888888888888888888888888888*/ width:21px; margin-right:2px; margin-top:5px; margin-bottom:5px; -moz-border-radius: 4px 4px 4px 4px; } #leftcolumn ul.menuAlfa a:hover { background:#eeeeee ; /*url(../images/menu_link_bg.gif) left no-repeat;*/ color:#666666; } /* ****** left col current menu ****** */

Page 183: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

183

#leftcolumn ul.menuAlfa li#current a, #leftcolumn ul.menuAlfa li#current a:link { display:block; line-height:20px; background:#f5f5f5 url(../images/menu_curren_link_bg.gif) left no-repeat; padding:2px 20px; border-top:1px solid #dddddd; text-decoration:none; color:#639ace; } #leftcolumn ul.menuAlfa li#current a:hover { background:#eeeeee url(../images/menu_curren_link_bg.gif) left no-repeat; color:#666666; } #cajabuscar tr:hover{ background: #C4D2EA; } /*------- tool tip----------------*/ a.Ntooltip { position: relative; /* es la posición normal */ text-decoration: none !important; /* forzar sin subrayado */ color:#0080C0 !important; /* forzar color del texto */ /*font-weight:bold !important; */ /* forzar negritas */ border-bottom:1px dashed #0080C0; } a.Ntooltip:hover { z-index:999; /* va a estar por encima de todo */ } a.Ntooltip span { display: none; /* el elemento va a estar oculto */ } a.Ntooltip:hover span { display: block; /* se fuerza a mostrar el bloque */ position: absolute; /* se fuerza a que se ubique en un lugar de la pantalla */ /*top:2em; left:2em;*/ /* donde va a estar */ top:-100px; left:0px; width:270px; /*padding:10px;*/ color: #000; border:1px solid #000; border-bottom:2px solid #000; -moz-border-radius: 4px 4px 4px 4px; background:#Fff ; /*url(/elearning_cisc/images/down.gif) no-repeat left bottom;*/ }

Archivo: template.css

Elaboracion: Carlos A. Zambrano I.

Page 184: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS

CARRERA DE INGENIERIA EN SISTEMAS

COMPUTACIONALES

―ENCICLOPEDIA WEB INFORMATICA SOBRE

FUNCIONES Y PROCEDIMIENTOS DE LENGUAJES DE

PROGRAMACION ORIENTADA A LA IMPLEMENTACION

DE E-LEARNING‖

Proyecto #17

TESIS DE GRADO

Previa a la obtención del Título de:

INGENIERO EN SISTEMAS COMPUTACIONALES

AUTOR: CARLOS ANTONIO ZAMBRANO IZQUIERDO

TUTOR: ING. XAVIER LOAIZA

GUAYAQUIL – ECUADOR

2010

Page 185: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

2

MANUAL DE

USUARIO

Page 186: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

3

INDICE GENERAL

Índice general 3

Índice de gráficos 4

Introducción 5

Análisis y requerimientos del sistema 6

Explicación del funcionamiento 7

1. Entrar al sistema 7

2. Entrar a WikiFunciones 7

3. Estructura de la pantalla principal de eCISC 8

4. Estructura de la pantalla principal del modulo

WikiFunciones 9

5. Buscadores 9

5.1 Buscador alfabético 9

5.2 Buscador general siempre visible 10

5.3 Buscador general por nombres o descripción 11

6. Ventanas de resultados 11

7. Vista de información de las funciones 12

8. Historial 13

9. Menú para estudiantes y profesores 15

9.1 Portada 16

9.2 Contribuciones 16

9.3 Importante! 21

9.4 Denuncias 23

10. Salir de la wikifunciones 25

Page 187: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

4

INDICE DE GRAFICOS

Pág.

GRAFICO 1.

Ingreso al Sistema 7

GRAFICO 2.

Ubicación del modulo wikifunciones en el menú principal 8

GRAFICO 3.

Estructura del sitio web eCISC 8

GRAFICO 4.

Estructura del modulo wikifunciones 9

GRAFICO 5.

Buscador alfabético 10

GRAFICO 6.

Buscador general siempre visible 10

GRAFICO 7.

Buscador general 11

GRAFICO 8.

Ventana de resultados 11

GRAFICO 9.

Ventana de vista de información de funciones 12

GRAFICO 10.

Link historial 13

GRAFICO 11.

Contenido del historial 14

GRAFICO 12.

Denunciar al usuario 14

GRAFICO 13.

Menú para estudiantes 15

GRAFICO 14.

Menú para profesores 15

GRAFICO 15.

Pagina para el ingreso de funciones 16

GRAFICO 16.

Botones para estilo html 17

GRAFICO 17.

Botones para estilo html, casillero descripción 18

GRAFICO 18.

Botones para estilo html, casillero parámetros 19

GRAFICO 19.

Pre visualización de funciones 21

GRAFICO 20.

Pagina de aprobación de funciones 22

GRAFICO 21.

Modulo de aprobación de funciones, página de inicio de eCISC 22

GRAFICO 22.

Modulo de denuncias 23

GRAFICO 23.

Bloque de denunciados 24

GRAFICO 23.

Bloqueo del denunciado 25

Page 188: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

5

INTRODUCCIÓN

Con este documento el usuario aprenderá a utilizar correctamente el modulo Wiki-

Funciones del sitio Web eCISC de la Carrera de Ingeniería de Sistemas

Computacionales de la Universidad de Guayaquil.

El manual a continuación, explica paso a paso desde como ingresar su clave de

usuario hasta como compartir información con el resto de estudiantes registrados

dentro del sistema.

Con este manual no abran dudas para reconocer las distintas opciones al momento de

realizar una aportación de información al sitio, y así mismo no abran dudas para

saber que alcances hay para corregir información que el usuario crea conveniente

dentro del sistema.

Al finalizar este documento, se asegura que el estudiante conocerá el uso debido del

sitio Web y que podrá sin ningún problema hacer un buen uso de él.

Page 189: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

6

ANALISIS Y REQUERIMIENTOS DEL SISTEMA

Para un buen manejo del sistema los requerimientos más importantes son los siguientes:

1. Conexión a internet, se recomienda utilizar una Banda Ancha minino de 250

Kbps. para obtener mejores tiempos de respuesta desde el equipo servidor del

sitio Web.

2. Utilizar exploradores de internet actualizados, los más recomendables son:

Mozilla Firefox, Google Chrome, Apple Safari. No es recomendable usar

Internet Explorer ya que este no se ajusta completamente a los estándares de

diseño y podría traer inconvenientes en la utilización del sistema.

Al momento del desarrollo se utilizaron las siguientes versiones:

Mozilla Firefox 3.6.12

Google Chrome 7.0.517.44

Apple Safari 5.0.2

Internet Explorer 7

3. Monitor de alta resolución, como mínimo se recomienda 1024x768, el sistema

no funcionara en pantallas de 800x600. Al momento del desarrollo se utilizo una

resolución de 1024x768 pixeles.

Page 190: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

7

EXPLICACION DEL FUNCIONAMIENTO

Para el buen funcionamiento del sistema siga los siguientes pasos:

1. Entrar al Sistema.

En la pantalla de inicio se localiza el espacio para ingresar el usuario y la contraseña del

sistema.

El usuario será el numero de cedula del alumno y la contraseña será adquirida

desde el Sistema Académico.

Grafico 1. Ingreso al Sistema

Para Ingresar debe teclear Enter después de ingresar la contraseña o hacer un clic sobre

el icono a la derecha de las cajas de texto.

En la parte inferior hay dos enlaces: el primero conecta al usuario con la dirección de

twitter del programador, y el segundo conecta al usuario con Facebook publicándole en

su muro que al usuario le gusta la aplicación eCISC.

2. Entrar a WikiFunciones

Después de ingresar al sistema, aparecerá la pantalla de inicio del sitio Web eCISC, para

proceder a ingresar al modulo WikiFunciones, localice en el menú principal ubicado a la

izquierda en la pantalla, la siguiente opción:

Page 191: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

8

Grafico 2. Ubicación del Modulo WikiFunciones en el Menú Principal

3. Estructura de la Pantalla Principal de eCISC.

La pantalla de eCISC está estructurada de la siguiente manera:

Grafico 3. Estructura del Sitio Web eCISC

Menú Principal

eCISC

1-Nombre del Alumno

2-Cerrar Sesión

Títulos del Sitio

Pestañas separadoras

de módulos

Contenido de cada

modulo

Hora de ingreso

Page 192: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

9

4. Estructura de la Pantalla Principal del Modulo WikiFunciones.

La pantalla del modulo WikiFunciones está estructurada de la siguiente manera:

Grafico 4. Estructura del Modulo WikiFunciones.

5. Buscadores

La wiki tiene 3 buscadores los cuales se explican a continuación:

5.1 Buscador Alfabético.

Para activarlo, de un clic sobre cualquier letra del abecedario, por debajo del

menú alfabético se desplegará una marquesina que muestra dos filas: la

primera el nombre de los Lenguajes de Programación que están ingresados al

Buscador por Nombres y

Descripción, se encuentra

solo en la portada

Buscador Alfabético

Buscador por Nombres y

Descripción, se encuentra

siempre visible

Menú solo de acceso

a Estudiantes

Reglas de la Wiki

Contribuciones Vigiladas por estudiante

Listado de las últimas contribuciones

Page 193: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

10

sistema y en la segunda fila, el nombre de todos los lenguajes de

programación que empiecen con la Letra que se haya seleccionado (ítem 6).

Grafico 5. Buscador Alfabético

Cada nombre es un acceso o Link a la pantalla de VISTAS de las funciones.

5.2 Buscador General Siempre Visible

El buscador general se ubica sobre el buscador alfabético, y este sirve para

realizar una búsqueda más detallada, aquí puede ingresar un nombre

completo o en partes o palabras que formen parte del detalle de la función, el

buscador interpretara el texto y lo buscará en la base de información,

mostrando todos los resultados obtenidos por estos criterios de busqueda ya

mencionados. Además este solo mostrará las primaras dieciséis respuestas, al

final del cuadro de la vista, el usuario encontrara el enlace para ver todos los

resultados de la búsqueda.

Grafico 6. Buscador General Siempre Visible

Cada nombre es un link a la función, para ver

todos los resultados de la búsqueda, dar clic en

la parte inferior de la vista …

Page 194: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

11

5.3 Buscador General por Nombres o Descripción.

Este buscador cumple la misma función que el buscador general, con la

diferencia que este sólo esta visible en la portada de la wiki, y no despliega

una marquesina. Para que funcione el usuario debe ingresar: el nombre o

detalle de la función que quiera encontrar, y para que entre en

funcionamiento, dar un clic sobre el icono de la lupa o dar un Enter en la caja

de texto.

Grafico 7. Buscador General.

6. Ventanas de Resultados

En la ventana de resultados se muestra todas las funciones encontradas según el nombre

de un Lenguaje de Programación, es decir, es el resultado de dar clic en el nombre de

Lenguaje encontrado en el buscador alfabético.

Para manejar mejor la búsqueda el sistema activa una pequeña persiana donde se

muestran las funciones según un lenguaje, y cada nombre es un link diferente.

Grafico 8. Ventana de resultados.

Persiana que muestra las funciones encontradas

por un lenguaje determinado en la búsqueda

Page 195: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

12

Cuando se utiliza el Buscador General los resultados se muestran de la misma manera

(ver grafico 8), con la diferencia que los resultados son de varios lenguajes de

programación.

7. Vista de información de las funciones

Como ya se explicó anteriormente, cada nombre de función es un LINK y estos

muestran la ventana de información, la cual está formada de la siguiente manera:

Grafico 9. Ventana de Vista de Información de Funciones

1. Nombre de la Funcion

2. Lenguaje al que pertenece

Descripción de la Función

Sintaxis de la Función

Parametros de la Función

Ejemplos de la Función

1. Comentarios ingresados

2. Sección para el ingreso de

Comentarios

Link para Editar Secciones

1. Exportar esta página a

Word

2. Ver el historial de

Cambios de las secciones

Page 196: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

13

a) Nombre de la Función: pueden existir funciones con el mismo nombre, pero de

diferentes lenguajes

b) Origen o nombre del Lenguaje: es el lenguaje de programación al que

pertenece la función.

c) Descripción de la función: descripción del funcionamiento y otros detalles de

la función.

d) Sintaxis de la función: es la estructura de la función, como se debe escribir con

sus respectivos parámetros.

e) Parámetros: es la descripción de cada parámetro, su función y otros detalles de

importancia.

f) Ejemplos: aquí se escribirá el código que sirva de ejemplos para los estudiantes,

es muy importante que incluya bien claro la función que se menciona en la

página.

g) Comentarios: esta sección es de libre ingreso, en la cual el alumno podrá

comentar con los demás usuarios del sitio.

h) Link de Edición: estos links hacen la parte más importante de una WIKI aquí se

podrá editar cada una de las secciones de la wiki y es de acceso libre a los

estudiantes que utilizan el eCISC.

i) Exportar: permite al estudiante poder descargar la información en formato de

Ms Word.

j) Historial: activa la ventana del historial y aquí se podrá chequear todos los

cambios realizados en las distintas secciones y así mismo permitirá hacer re

versaciones a las mismas. (ver cap. 8)

8. Historial

El historial lo encontramos en cada una de las Vistas de Información de Funciones, y

aquí se podrá chequear todos los cambios realizados en las distintas secciones y así

mismo permitirá hacer re versaciones a las mismas.

Grafico 10. LINK Historial

Page 197: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

14

Grafico 11. Contenido del Historial

a) Función: Es la función de la cual se está revisando el historial.

b) Selector: Opción para seleccionar que ítem se desea reversar, lo cual cambia la

información actual por una anterior.

c) Fecha: Fecha que se realizo la modificación.

d) Nombre: Es la persona que realizo la modificación, el sistema permite notificar

si esta persona está incumpliendo con las reglas del sistema, lo cual activa la

ventana de denuncias, solo hay que situar el mouse sobre el nombre y dar clic en

el botón de denuncias.

Grafico 12. Denunciar al usuario

1. Guardar Re versación

2. Salir del Historial

Selector para escoger

re versación.

1. Fecha de modificación

2. Nombre de la persona que modificó

3. Sección modificada

4. Previo

5. Modificación

Función

Page 198: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

15

e) Sección: Es la sección modificada, estas pueden ser: Descripción, Sintaxis,

Parámetros o Ejemplos.

f) Previo: Es la Ultima información que tenia la sección

g) Modificado: Es la Última modificación hecha en la sección.

h) Guardar: Guarda en la función los datos seleccionados, crea un nuevo registro

en el historial y actualiza los datos en la Vista de Información de Funciones.

i) Salir: Sale del Historial y vuelve a la página anterior.

9. Menú para estudiantes y profesores

El menú principal para uso de los estudiantes es el siguiente:

Grafico 13a. Menú para Estudiantes

El menú principal para uso de los profesores es el siguiente:

Grafico 14. Menú para Profesores

Como podemos observar en los dos casos existe las opciones Portada y

Contribuciones, esto es porque estas opciones pueden ser usadas por los dos perfiles

tanto alumnos como profesores, y las opciones Importante! y Denuncias son solo

para uso de los profesores, a continuación la descripción de cada una de ellas:

Page 199: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

16

9.1 Portada

Este link re direcciona al usuario a la página principal de la WikiFunciones

(ver grafico 4).

9.2 Contribuciones

Entrando a esta ventana el usuario podrá hacer una contribución a la wiki,

esto significa que aquí pondrá ingresar una nueva función para almacenarla

en la base de datos, las opciones son las siguientes:

Grafico 15. Página para el Ingreso de Funciones.

1. Guardar

2. Pre visualizar

3. Salir

1. Lenguaje

2. Nombre de la Función

Ingreso de Sintaxis

Ingreso de Descripción

Ingreso de Parámetros

Ingreso de Ejemplos

Documento vigilado

Page 200: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

17

a) Lenguaje: lista de nombres de lenguajes de programación. Ejemplo

PHP

b) Nombre de la función: aquí se escribe el nombre sin los parámetros si los

tuviese. Ejemplo:

substr ()

c) Sintaxis: aquí se escribe la función con los parámetros completos ejemplo:

Parámetro 1 Parámetro 2 n Parámetros

string substr ( string $string , int $start [, int $length ] )

En este casillero se encentran dos botones para dar estilo html al texto, estos son:

Grafico 16. Botones para estilo html.

Al dar clic sobre estos botones aparecerá el siguiente código html:

i. <b>inserte nombre de función</b>

ii. <i>inserte argumento</i>

Después de guardar la función, lo que se haya escrito entre los códigos <b> </b>

se verá con NEGRILLAS y lo escrito entre <i></i> se verá CURSIVO.

Por ejemplo el código:

string <b>substr</b> ( <i>string</i> $string , int $start [, int $length ] )

Se vería así:

string substr ( string $string , int $start [, int $length ] )

d) Descripción: en este casillero se escribirá la descripción completa del uso y

estructura de la función, o cualquier otro dato de importancia de la misma.

Ejemplo

Devuelve una parte del string definida por los parámetros start y length.

Page 201: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

18

En este casillero se encentran dos botones para dar estilo html al texto, estos son:

Grafico 17. Botones para estilo html, casillero Descripción.

Al dar clic sobre estos botones aparecerá el siguiente código html:

i. <b>inserte texto</b>

ii. <i>inserte texto</i>

iii. <s>inserte texto</s>

iv. <u>inserte texto</u>

v. <hr>

Después de guardar la función, lo que se haya escrito entre los códigos <b> </b>

se verá con NEGRILLAS, lo escrito entre <i></i> se verá CURSIVO, lo escrito

entre <s> </s> se verá TACHADO, lo escrito entre <u> </u> se verá

SUBRAYADO y el código <hr> mostrará una línea por debajo del párrafo

escrito

Por ejemplo el código:

Devuelve una <b>parte</b> del <i>string</i> definida por los parámetros

<i>start</i> y <i>length</i> <hr>

Se vería así:

Devuelve una parte del string definida por los parámetros start y length

e) Parámetros: en este casillero se especifican cada uno de los parámetros con su

respectiva descripción. Por ejemplo:

Page 202: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

19

string La cadena de entrada.

start

Si start no es negativo, la cadena devuelta comenzará en start al

inicio de la posición de la cadena string, contando desde cero. Por

ejemplo, en la cadena 'abcdef', el caracter en la posición 0 es 'a', el

caracter en la posición 2 es 'c', y así sucesivamente.

En este casillero se encentran dos botones para dar estilo html al texto, estos son:

Grafico 18. Botones para estilo HTML, casillero Parámetros.

Al dar clic sobre estos botones aparecerá el siguiente código html:

i. <b>inserte texto</b> (ver literal e, cap.9.2 Contribuciones)

ii. <i>inserte texto</i> (ver literal e, cap.9.2 Contribuciones)

iii. <s>inserte texto</s> (ver literal e, cap.9.2 Contribuciones)

iv. <u>inserte texto</u> (ver literal e, cap.9.2 Contribuciones)

v. <<inserte parametro>>

vi. --inserte descripcion—

Después de guardar la función, lo que se haya escrito entre los códigos << >> se

verá como el TUTILO DEL PARAMETRO y lo escrito entre los códigos -- -- se

verá como la DESCRIPCION DEL PARAMETRO

Por ejemplo el código:

<< <i>string</i> >>--La cadena de entrada--<< <i>start</i> >>--Si start

no es negativo, la cadena devuelta comenzará en start al inicio de la

posición de la cadena string, contando desde cero. Por ejemplo, en la

cadena 'abcdef', el caracter en la posición 0 es 'a', el caracter en la

posición 2 es 'c', y así sucesivamente—

Page 203: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

20

Se vería así:

f) Ejemplos: en este casillero se escribirá cualquier ejemplo que facilite al

estudiante entender cómo se utiliza la función, este ejemplo debe estar claro y

debería ser probado antes de ser ingresado, así se podrá confiar de que dicho

código funciona sin problemas. Este casillero no consta de botones de código

html.

g) Documento Vigilado: en la parte inferior de la página se encuentra el casillero

para marcar que dicha función será vigilada por el usuario colaborador. Las

funciones vigiladas se muestran en el listado que se encuentra en la Portada de la

WikiFunciones.

h) Guardar: almacena la nueva función ingresada, la cual estará disponible para

los estudiantes después de que algún usuario de perfil Profesor la apruebe, esto

significa que la función nueva pasa a un estado de revisión y aceptación por

parte de los Profesores que tienen la labor de Administrador de datos nuevos de

la wiki. Por ejemplo: (ver Cap. 9.3 Importante!).

i) Pre visualizador: al dar un clic en el icono del pre visualizador, se levantara

una ventana que muestra una pre visualización de el documento tal como se verá

en la vista de información de funciones, pero no olvidar que solo es una pre vista

y no son datos almacenados aun. Con esta herramienta el usuario podrá ver si

está armando bien la información o si se equivoco en algún punto.

Page 204: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

21

Grafico 19. Pre Visualización de Funciones.

j) Salir: el botón X cierra la pagina y vuelve a la página de la portada de la wiki.

9.3 Importante!

Esta opción del menú es solo para el perfil de Profesores, al dar un clic se

abrirá la página de avisos de nuevas funciones, se mostrará un listado de

contribuciones en espera de ser aprobadas, como ya se indico anteriormente,

cualquier profesor podrá aprobarlas.

Esta página se muestra también en la página de Inicio del sistema eCISC,

pero solo en el perfil Profesor, mostrando un bloque de datos en el centro de

la pantalla.

Page 205: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

22

Grafico 20. Pagina de aprobación de funciones.

Grafico 21. Módulo de aprobación de funciones. Página de Inicio de eCISC

Aprobar la Función.

No Aprueba la Función y

elimina los datos.

Aprobar la Función.

No Aprueba la Función y

elimina los datos.

Page 206: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

23

Como se muestra en las imágenes 19 y 20, para aprobar tiene que dar clic en

el icono en forma de VISTO de color verde, y para denegar la función se da

clic en el icono en forma de X de color rojo.

9.4 Denuncias

Esta opción del menú es solo para el perfil de Profesores, al dar un clic se

abrirá la página de avisos de alumnos denunciados, se mostrará un listado de

nombres de alumnos denunciados por otros alumnos, como ya se indico

anteriormente, cualquier profesor podrá aprobarlas.

Cada aprobación hará que el alumno denunciado quede bloqueado por 7 días

a partir de la aprobación del profesor, el bloqueo impide que el alumno haga

cualquier tipo de reversación o contribución al sistema, el alumno solo podrá

leer información.

La ventana consta de las siguientes partes:

Grafico 22. Módulo de Denuncias.

a) Nombre del denunciado: es la persona, alumno o profesor que haya

sido denunciado.

Elimina la denuncia

Aprueba la denuncia

Lista de Alumnos Bloqueados

Lista de Alumnos Denunciados

1. nombre de denunciado

2. número de veces que fue denunciado

3. nombre del denunciante

4. detalle personalizado del porque se bloqueo al estudiante

Page 207: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

24

b) Número de veces: el número de ocasiones que el alumno o profesor fue

denunciado por una persona, el número de veces depende de cada

denunciante.

c) Nombre del denunciante: es la persona, alumno o profesor que

denuncia.

d) Detalle de la denuncia: es un texto no muy extenso que explica al

denunciado la razón porque se lo bloqueo.

e) Lista de denuncias: este bloque muestra solo las denuncias en espera.

f) Lista de denunciados: este bloque muestra la lista de las personas que

ya están bloqueadas. (ver Graf. 22)

g) Cada bloque tiene las opciones eliminar o aprobar denuncia, si se da clic

sobre el visto verde, se aprueba la denuncia y si se da clic sobre la x

roja, se elimina la denuncia.

h) Cada denuncia tiene un máximo de 7 días pasado este tiempo se elimina

automáticamente.

Grafico 23. Bloque de Denunciados.

Si el denunciado intenta editar o ingresar una contribución le aparecerá el

siguiente anuncio:

Elimina la denuncia

Page 208: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

25

Grafico 24. Bloqueo del Denunciado

En la imagen 23, se indica el detalle explicando la razón del bloqueo y la

fecha cuando terminara el mismo.

10. Salir de la wikiFunciones.

Cabe recordar que todos los módulos se activan por pestañas en el sistema eCISC,

por tal motivo para cerrar el modulo wiki basta con cerrar la pestaña, los módulos

del sistema se abren solo una vez por pestaña.

Page 209: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

26

ANEXO

MANUAL DE USUARIO DEL

“SYLLABUS”

Page 210: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

27

INDICE GENERAL

Índice general 27

Índice de gráficos 28

Explicación del funcionamiento 29

1. Entrar al sistema 29

2. Entrar al Syllabus 29

3. Estructura de la pantalla principal del modulo Syllabus 30

4. Pagina de control de cumplimiento 31

5. Resumen de cumplimiento del Syllabus 34

5.1 Estructura del documento exportado a Excel 34

6. Salir del Syllabus 36

Page 211: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

28

INDICE DE GRAFICOS

Pág.

GRAFICO 1.

Ingreso al Sistema 29

GRAFICO 2.

Ubicación del modulo Syllabus en el menú principal 30

GRAFICO 3.

Estructura del modulo Syllabus 30

GRAFICO 4.

Control del cumplimiento del Syllabus 31

GRAFICO 5.

Ventana popup de impresión rápida 33

GRAFICO 6.

Exportación a Word del Syllabus 33

Page 212: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

29

EXPLICACION DEL FUNCIONAMIENTO

Para el buen funcionamiento del sistema siga los siguientes pasos:

1. Entrar al Sistema.

En la pantalla de inicio se localiza el espacio para ingresar el usuario y la contraseña

del sistema.

El usuario será el numero de cedula del alumno y la contraseña será adquirida

desde el Sistema Académico.

Grafico 1. Ingreso al Sistema

Para Ingresar debe teclear Enter después de ingresar la contraseña o hacer un clic sobre

el icono a la derecha de las cajas de texto.

En la parte inferior hay dos enlaces: el primero conecta al usuario con la dirección de

twitter del programador, y el segundo conecta al usuario con Facebook publicándole en

su muro que al usuario le gusta la aplicación eCISC.

2. Entrar al Syllabus

Después de ingresar al sistema, aparecerá la pantalla de inicio del sitio Web eCISC,

para proceder a ingresar al modulo Syllabus, localice en el menú principal ubicado a

la izquierda en la pantalla, la siguiente opción:

Page 213: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

30

Grafico 2. Ubicación del Modulo Syllabus en el Menú Principal

3. Estructura de la Pantalla Principal del Modulo Syllabus.

La pantalla del modulo Syllabus está estructurada de la siguiente manera:

Grafico 3. Estructura del Modulo Syllabus.

a) Curso: en el listado se muestran los cursos a los que está asignado el profesor.

1. Curso

2. Asignatura

3. Año, periodo, descripción.

1. Lista de materias asignadas al

profesor logoneado.

Page 214: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

31

b) Asignatura: en el listado se muestra las asignaturas a los que está asignado el profesor,

el nombre de la asignatura es un LINK al syllabus de esa materia. Para continuar de un

clic sobre el nombre que desee. (ver Cap.4)

c) Año, periodo, descripción: estos son datos esenciales para reconocer en que periodo

esta asignada la materia, puede existir dos periodos por año lectivo.

4. Pagina de Control de Cumplimiento.

Esta página es en donde el Profesor va a anotar el cumplimiento de cada uno de los

temas que conforman la asignatura. La página está estructurada de la siguiente

manera:

Grafico 4. Control de Cumplimiento del Syllabus

1. Guardar

2. Salir

3. Impresión rápida

4. Exportar a Word

Datos referentes a la Asignatura

Estatus de cumplimiento

Contenido del Syllabus

Observaciones

Información para el control del cumplimiento

Page 215: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

32

a) Datos referentes a la asignatura: está formado por el nombre de la asignatura,

metodología, descripción, y periodos de clase que son el número de horas totales de la

asignatura.

b) Contenido del Syllabus: está formado por los títulos y subtítulos que se van a dictar en

la asignatura, cada uno consta con su número de horas clase.

c) Estatus de cumplimiento: cada vez que se termina de dictar una clase y el profesor lo

procesa, se mostrará un visto de color verde que indica que el tema fue concluido en su

totalidad de horas clase.

d) Información para el control del cumplimiento: esta información es muy importante

para controlar que el profesor está cumpliendo con sus clases, los ítems son:

i. Fechas desde/hasta que tiene que ser dictada la clase.

ii. El sistema controla la hora dictada, si la clase tiene más de una hora el

sistema mostrara el tema a dictar tantas horas sean dictadas.

iii. Casilla de texto para que el profesor ingrese la fecha en que dicto el

tema de clase.

iv. Casillero para señalar que va a procesar la clase.

e) Observaciones: casillero de texto donde el profesor puede escribir cualquier

comentario de la clase dictada.

f) Guardar: dar clic en el icono y automáticamente el sistema guarda todos los datos

ingresados. Para que el sistema pueda procesar una o varias clases hay que marcar el

casillero de proceso (ver ítem d, literal. iv ) que tiene cada una de las clases.

g) Salir: al dar clic en el icono X el sistema vuelve a la página principal del Syllabus.

h) Impresión rápida: al dar clic en el icono el sistema despliega una ventana popup con el

resumen del cumplimiento del Syllabus, y a continuación despliega la ventana de

impresión del sistema.

Page 216: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

33

Grafico 5. Ventana popup de impresión rápida.

i) Exportar a Word: al dar clic en el icono de Word, se exportara el resumen del syllabus

a un documento de Microsoft Word, parecido al de impresión rápida.

Grafico 6. Exportación a Word del Syllabus

Page 217: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

34

5. Resumen de Cumplimiento del Syllabus

5.1 Estructura del documento exportado a Excel

Al momento de almacenar o guardar la información del cumplimiento del syllabus, el

sistema procesa internamente todos los datos administrados por el profesor, y calcula si las

clases fueron dictadas a tiempo o si el profesor no cumplió con las fechas establecidas por

cada clase, a continuación un ejemplo del resultado final del reporte de cumplimiento:

Profesor: JOSE LUIS GARZON ALVARADO

Syllabus CALCULO III

Metodología: clases presenciales, 3 examenes, 2 lecciones, 5 tareas y 3 talleres

Descripción: El proposito de la asignatura es desarrollar las habilidades para aplicar el concepto de derivada resolviendo problemas de razon de

cambio, y optimizacion de funciones.

Periodos de Clase: 35

Año: 2010

Ciclo: 1

1. INTEGRALES PARTE 1 - [ Acumulado de Horas Clase: 10 ] 11. INTRODUCCION A INTEGRALES - [ Total de Horas Clase: 3 ] -- Clase # 1

Horario: 2010-08-20 17:30:00 , hasta el: 2010-08-23 17:30:00 Fecha Reg. Profesor: 2010-08-20 00:00:00 Fecha Reg. del Sistema: 2010-08-29 18:38:43 Notas del Profesor: Observaciones... Alertas del Syllabus: Alerta, el tema fue dictado con dias de atrazo a la fecha establecida.

11. INTRODUCCION A INTEGRALES - [ Total de Horas Clase: 3 ] -- Clase # 2 Horario: 2010-08-20 17:30:00 , hasta el: 2010-08-23 17:30:00 Fecha Reg. Profesor: 2010-08-22 00:00:00 Fecha Reg. del Sistema: 2010-08-29 18:55:12 Notas del Profesor: Observaciones... Alertas del Syllabus: 0

11. INTRODUCCION A INTEGRALES - [ Total de Horas Clase: 3 ] -- Clase # 3 Horario: 2010-08-20 17:30:00 , hasta el: 2010-08-23 17:30:00 Fecha Reg. Profesor: 2010-08-23 00:00:00 Fecha Reg. del Sistema: 2010-08-29 18:56:46 Notas del Profesor: Observaciones... Alertas del Syllabus: Alerta: El tema fue registrado con dias de atrazo a la fecha establecida para ser dictada. El profesor registro la materia dictada, dentro de las fechas correctas.

12. INTEGRALES IMPLICITAS - [ Total de Horas Clase: 7 ] -- Clase # 1 Horario: 2010-08-24 17:30:00 , hasta el: 2010-08-28 17:30:00 Fecha Reg. Profesor: 2010-08-24 00:00:00 Fecha Reg. del Sistema: 2010-08-29 19:31:59 Notas del Profesor: Observaciones... Alertas del Syllabus: Alerta: El sistema detecto un atrazo en el registro de la materia dictada. El profesor ingreso la fecha correcta al rango establecido pero no concuerda con la fecha del sistema.

12. INTEGRALES IMPLICITAS - [ Total de Horas Clase: 7 ] -- Clase # 2 Horario: 2010-08-24 17:30:00 , hasta el: 2010-08-28 17:30:00 Fecha Reg. Profesor: 2010-08-25 00:00:00 Fecha Reg. del Sistema: 2010-08-29 19:37:15 Notas del Profesor: Observaciones... Alertas del Syllabus: Alerta: El sistema detecto un atrazo en el registro de la materia dictada. El profesor ingreso la fecha correcta al rango establecido pero no concuerda con la fecha del sistema.

12. INTEGRALES IMPLICITAS - [ Total de Horas Clase: 7 ] -- Clase # 3 Horario: 2010-08-24 17:30:00 , hasta el: 2010-08-28 17:30:00 Fecha Reg. Profesor: 2010-08-25 00:00:00 Fecha Reg. del Sistema: 2010-08-29 20:02:54 Notas del Profesor: Observaciones... Alertas del Syllabus: Alerta: El sistema detecto un atrazo en el registro de la materia dictada. El profesor ingreso la fecha correcta al rango establecido pero no concuerda con la fecha del sistema.

2. INTEGRALES PARTE 2 E INTRODUCCION A SERIES - [ Acumulado de Horas Clase: 20 ] 3. SERIES PARTE 2 - [ Acumulado de Horas Clase: 5 ]

Se muestra solo el detalle del tema 1 porque

es el único que ah sido concluido.

1 registro por

cada hora de

clase

registrada

Información procesada por el sistema

Page 218: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

35

a) Información procesada por el sistema: el sistema procesa los datos ingresados

por el profesor e informa los siguientes ítems:

i. Horario desde/hasta: estas son las fechas en que debió ser

dictada la materia.

ii. Fecha Reg. Profesor: es la fecha que el profesor dicto la materia

según el registro que ingresa manualmente, este dato es ingresado

en el casillero que tiene cada clase.

iii. Fecha Reg. del Sistema: es la fecha que el sistema procesa

automáticamente el momento en que el profesor guarda la

información, esta fecha puede no coincidir con las fechas

desde/hasta o reg. profesor.

iv. Notas del Profesor: son las observaciones ingresadas por el

profesor.

v. Alertas del Syllabus: estas observaciones son procesadas por el

Syllabus y le alertan al supervisor de la asignatura como cumplió

el profesor las clases, las alertas son:

Alerta: El sistema detecto un atraso en el registro de la

materia dictada.

Alerta: El sistema detecto un adelanto en el registro de la

materia dictada.

El profesor ingreso la fecha correcta al rango establecido

pero no concuerda con la fecha del sistema.

El profesor ingreso la fecha correcta al rango establecido

y si concuerda con la fecha del sistema.

Control sin novedad.

Page 219: TESIS DE GRADO INGENIERO EN SISTEMAS …repositorio.ug.edu.ec/bitstream/redug/6782/1/TesisCompleta-319... · 2.6. Definiciones conceptuales. 28 CAPITULO ... Son en ocasiones más

36

Con estas alertas el Supervisor de la asignatura podrá controlar el cumplimiento

del profesor, ya que este le informará si cumplió o no a tiempo en las fechas que

le correspondían a las clases.

6. Salir del Syllabus.

Cabe recordar que todos los módulos se activan por pestañas en el sistema eCISC,

por tal motivo para cerrar el modulo Syllabus basta con cerrar la pestaña, los

módulos del sistema se abren solo una vez por pestaña.