tesis eSISC - Repositorio CISC

Transcripción

tesis eSISC - Repositorio CISC
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
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
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.
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.
TRIBUNAL DE GRADO
Ing. Frenando Abad Montero
DECANO DE LA FACULTAD
CIENCIAS MATEMATICAS Y FISICAS
Ing. Xavier Loaiza
TUTOR
Ing. Juan Chanabá Alcócer
DIRECTOR
Ing.
PROFESOR DEL ÁREA - TRIBUNAL
AB. Juan Chávez A.
SECRETARIO
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”
Autor: Carlos A. Zambrano Izquierdo
Tutor: Ing. Xavier Loaiza
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.
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
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
Apellidos y Nombres completos
_____0916634264_____
Cédula de ciudadanía N°
Tutor: __Ing. Xavier Loaiza________
Guayaquil, octubre de 2010
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
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
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
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.
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.
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.
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.
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.
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.
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.
•
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 Elearning, 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.
CAPÍTULO II
MARCO TEÓRICO
2.1.
Proyectos
similares
ANTECEDENTES DEL ESTUDIO
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
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
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
Apache
PHP,
Tomcat
Fuente: http://www.google.com
Gráfico.2 Arquitectura Modelo AJAX
Fuente: http://www.google.com
Gráfico.3 Arquitectura Modelo Ajax “Tiempos”
Fuente: http://www.google.com
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.
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.
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
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
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.
•
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.
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.
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
• 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
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.
CAPÍTULO IV
MARCO ADMINISTRATIVO
4.1. CRONOGRAMA
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
Herramientas de desarrollo
Internet
Licencias de software
Servidores de Aplicación
Transporte a tutorías y reuniones
Total
Horas de desarrollo
Impresión, anillado, empastado de
documentación
$0
$0
$115 / $23 mensuales
$0
$0
$50
$165
720 h
$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.
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-learning01.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-enecuador
ANEXOS
Diagrama Entidad Relacion del Módulo “WikiFunciones”.
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 ([email protected]_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;
}
/* 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){
// $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.
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(){
$("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';
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,
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
programaci&oacute;n con inicial <b>"+letra+"</b>..</div>";
tr.appendChild(td1);
tBody2.appendChild(tr);
table.appendChild(tBody2);
de
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
arrayRoles[i].q1+"</a>";
="&nbsp;<a
href='javascript:loading2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+
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;
fontsize: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;fontsize:10px'><b>&nbsp;"+arrayRoles[i].q1+"</b></span><br
/><span
style='color:#666;
fontsize: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');
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);
}
} );
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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);
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='marginbottom: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;
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='textalign: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>
ultimaModificacion(campos[6]);
data+="<div class='tituloComentarios'>Comentarios</div><br />";
<br
/>";
data+="<div
class='bloquesPreviewComent'
id='capaComment'>"+comments(id)+"</div></div><br/>" ;
align='center'><div
data+="<div style='border-bottom:1px solid #0668B3;font:12px Arial;fontweight: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");
}
/*---------------------------------------------------------------------*/
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 *******************************************
//**************************
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="
textalign: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='marginbottom: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");
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];
$('tParam');
var tdPadre = ico2.parentNode;
var trPadre = tdPadre.parentNode;
var tbx = trPadre.parentNode;
if(table.childNodes.length > 3 ){table.removeChild(tbx);} else{
var table =
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").val
ue+"&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 ;
=
}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&" ;
=
=
} 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: {
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);
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) {
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";
}
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);
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;
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) {
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);
}
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(/::/,
/,'_').toLowerCase();
}
'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-
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;
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) {
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) {
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);
});
}
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));
});
}
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]);
}
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);
});
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) {
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(', ') + '}>';
}
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,
round:
ceil:
floor:
};
})());
round,
ceil,
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]);
} 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;
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);
}
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;
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);
},
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) {
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) {
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);
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();
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) {
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);
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);
},
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) {
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 {
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)
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'
},
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;
}
);
});
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') {
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 : '';
}
}
};
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);
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);
};
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];
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)
});
}
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;
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) {
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() {
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)) {
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;
},
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;
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*/ },
{ 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|-oftype)|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));
}
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];
}
}
}
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);
}
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);
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];
},
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++) {
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);
}
};
/*--------------------------------------------------------------------------*/
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;
}
};
/*--------------------------------------------------------------------------*/
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, {
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);
}
});
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());
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;
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);
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) {
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,
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) {
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) {
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) {
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
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;
align='left'
}
.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
eCISC</b></span>
</td></tr></table>
</body>
Archivo: aWord.php
Elaboracion: Carlos A. Zambrano I.
Cuadro 7
Wiki-Funciones
de
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/xhtml1transitional.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'>
<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/Workgroup8.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; fontweight: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">
<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
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.
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
foro_creado_el) VALUES (";
INTO
wik_foro
(foro_texto,
wik_datos_id,
$sql .= "'".quitar($_POST['comm'])."'";
foro_estado,
foro_creado_por,
$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/xhtml1transitional.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) {
$('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";
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
onclick='javascript:buscarTodasFunciones(&quot;"+arrayRoles[i].q2+"&quot;)'><b>"+
arrayRoles[i].q1+"</b></a>&nbsp;&nbsp;<b>-&nbsp;</b>";
//var td2 = document.createElement('TD');
href='#'
//td1.innerHTML
arrayRoles[i].q1+"</a>";
="&nbsp;<a
href='javascript:loading2_2(&quot;"+arrayRoles[i].q2+"&quot;)'>"+
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
programaci&oacute;n con inicial <b>"+letra+"</b>..</div>";
tr.appendChild(td1);
tBody2.appendChild(tr);
table.appendChild(tBody2);
de
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);
}
}
}
} );
//
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;
fontsize: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;fontsize:10px'><b>&nbsp;"+arrayRoles[i].q1+"</b></span><br
/><span
style='color:#666;
fontsize: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');
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
td3.style.color="#006600";
="<b>"+arrayRoles[i].q6
+"</b>
//
<b>"+arrayRoles[i].q5+"</b><br><hr
/>";
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";
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";
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='marginbottom: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;
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='textalign: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;fontweight: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");
}
/*---------------------------------------------------------------------*/
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
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;">
left;
<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; marginleft: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'
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>
style="margin-
</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; -mozborder-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>
<?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:
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>
url(../../images/header_bg2.jpg)
repeat;
</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.
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 ';}
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>
<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>
<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;">
<input name="grabar" type="button" value="" style="background: #F2F3D8 url(/elearning_cisc/images/disco.png) norepeat 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) norepeat 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."'";
$sql .= ")";
$guardado2 = $miconexion->guardar($sql); // devuelve true o false
$archivo
=
$miconexion->unDato("select
MAX(wik_datos_id)
from
wik_datos
dat_creado_por=".$guardo);
$nDesc = $_POST["nEjemplo"];
$ar =fopen("../descripciones/".$archivo.".wik","a") or die("Problemas en la creacion");
fputs($ar,$nDesc);
fclose($ar);
where
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_vigila
do) 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_vigila
do) 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_vigila
do) VALUES (";
$sql .= "".$id."";
$sql .= ",".$guardo."";
$sql .= ",'".$_SESSION["usTipo"]."'";
$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>";
}} );
}
</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; fontsize: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" ){
$denuncianteId = $miconexion->unDato('select exa_alumno_id
alu_identificacion ='.$_SESSION["usNick"]) ;
}else{
$denuncianteId = $miconexion->unDato('select exa_profesor_id
pro_identificacion ='.$_SESSION["usNick"]) ;
}
if( $_POST["tipo"] == "alumno" ){
$denunciadoId = $_POST["id"] ;
}else{
$denunciadoId = $_POST["id"] ;
}
from
exa_alumno
where
from
exa_profesor
where
$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))
{
if($registro[3] == "profesor"){
$ado = $miconexion->unDato("select CONCAT(nombres,' ',apellidos) from exa_profesor
exa_profesor_id = ".$registro[0]);
} else {
$ado = $miconexion->unDato("select CONCAT(nombres,' ',apellidos) from exa_alumno
exa_alumno_id = ".$registro[0]);
}
if($registro[4] == "profesor"){
$ante = $miconexion->unDato("select CONCAT(nombres,' ',apellidos) from exa_profesor
exa_profesor_id = ".$registro[1]);
} else {
$ante = $miconexion->unDato("select CONCAT(nombres,' ',apellidos) from exa_alumno
exa_alumno_id = ".$registro[1]);
}
where
where
where
where
?>
<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;?>">
<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){
$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/35pxNuvola_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) norepeat 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 />
</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>
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>
// <b><?php
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;
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;
}
.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;}
.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;
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;
}
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;
}
#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 {
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;
}
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;
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;
}
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;
}
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;
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; }
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;
}
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;
}
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)
/*================================= */
}
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;
}
=================================
/*=================================
no-repeat
center
center;
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 ****** */
#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.

Documentos relacionados