alexbm8_practica3

code format="javascript" // ==UserScript== // @name               AAP Práctica 3 // @namespace          http://geneura.org/projects/greasemonkey // @description        Índice para las secciones y ejercicios de AAP // @include            http://geneura.ugr.es/~jmerelo/asignaturas/* // ==/UserScript==

GM_log('Entrando en práctica 3');

// ****** ÍNDICE DE SECCIONES ******

// Obtenemos un vector con todas las secciones var h2 = document.getElementsByTagName('h2');

// Creamos un array que albergará los títulos de las secciones var nombres = new Array;

// Creamos un div var div = document.createElement('div');

// Atributos del div div.setAttribute('class','nav'); div.setAttribute('style','background-color:#D0EAEF; border:2pt double blue; float: left; width: 90%;');

// Creamos un ancla para que desde cualquier sección podamos ir al índice var ancla_secciones = document.createElement('a'); ancla_secciones.setAttribute('name', 'indice_secciones'); div.appendChild(ancla_secciones);

div.innerHTML += ' ÍNDICE DEL TEMA ';

// Creamos una lista no numerada var ul = document.createElement('ul');

// Recorremos todas las secciones for (secs = 0; secs < h2.length; secs ++ ) {

// Obtenemos todos los anclas contenidos en cada var thisA = h2[secs].getElementsByTagName('a'); // Nos quedamos con el texto mostrado en el navegador, ya que será el que coloquemos en nuestro índice nombres[secs] = thisA[0].innerHTML; // Definimos cada elemento de la lista var li = document.createElement('li'); // Creamos el ancla que albergará el enlace var ahref = document.createElement('a'); // Creamos el enlace en sí, usando el identificador almacenado en el vector "anchors" ahref.setAttribute('href','#'+ thisA[0].getAttribute('name')); // Definimos el texto donde pinchar para ir al enlace var txt=document.createTextNode(nombres[secs]); // Añadimos dicho texto al enlace ahref.appendChild(txt); // Añadimos el enlace al elemento de la lista li.appendChild(ahref); // Añadimos el elemento de la lista a la lista ul.appendChild(li);

// Creamos un enlace desde cualquier sección al índice var span_indice = document.createElement('span'); var enlace_IS = document.createElement('a'); enlace_IS.setAttribute('href','#indice_secciones'); txt = document.createTextNode('Índice'); enlace_IS.appendChild(txt); span_indice.appendChild(enlace_IS); h2[secs].appendChild(span_indice); }

// Insertamos la lista en el div div.appendChild(ul);

// ****** ÍNDICE DE EJERCICIOS ******

var div_ej = document.createElement('div'); div_ej.setAttribute('style','background-color:#D0EAEF; border:2pt double blue; float: right; width: 90%;');

// Creamos un ancla para que desde cualquier sección podamos ir al índice de secciones var ancla_ejercicios = document.createElement('a'); ancla_ejercicios.setAttribute('name', 'indice_ejercicios'); div_ej.appendChild(ancla_ejercicios);

div_ej.innerHTML += ' ÍNDICE DE EJERCICIOS ';

// Obtenemos un vector con todos los ejercicios var h3 = document.getElementsByTagName('h3');

var ul_ej = document.createElement('ul');

// Recorremos todos lo ejercicios for ( var secs = 0; secs < h3.length; secs ++ ) {

var id = h3[secs].parentNode.getAttribute('id'); // Para que no se nos cuelen otros que nos sean ejercicios if (id!=null){ var li_ej = document.createElement('li'); var href_ej = document.createElement('a'); href_ej.setAttribute('href','#' + id); txt = document.createTextNode(h3[secs].innerHTML); href_ej.appendChild(txt); li_ej.appendChild(href_ej); ul_ej.appendChild(li_ej);

// AÑADIMOS UN ENLACE A EJERCICIOS DE AÑOS ANTERIORES EN CADA CONTENEDOR DE EJERCICIOS

// Creamos un span donde insertaremos el texto con los enlaces var span = document.createElement('span'); span.setAttribute('style','background: orange; float: left;'); var enlace = document.createElement('a'); var space = " "; // Nos quedamos sólo con el bloque para forma una URL correcta var bloque = h3[secs].innerHTML.toString.split(space, 2); // Definimos el enlace enlace.setAttribute('href','http://swecai.ugr.es/search/node/Bloque+' + bloque[1]); txt = document.createTextNode('Este ejercicio en años anteriores...'); enlace.appendChild(txt); span.appendChild(enlace); // Obtenemos todos los que hay dentro de cada var spans = h3[secs].parentNode.getElementsByTagName('span'); spans[1].appendChild(span);

// Creamos un enlace desde cualquier sección al índice de ejercicios span_indice = document.createElement('span'); span_indice.setAttribute('style','background: yellow; float: left;'); enlace_IE = document.createElement('a'); enlace_IE.setAttribute('href','#indice_ejercicios'); txt = document.createTextNode('Índice'); enlace_IE.appendChild(txt); span_indice.appendChild(enlace_IE); spans[1].appendChild(span_indice); } } // Añadimos la lista no numerada al contenedor div_ej.appendChild(ul_ej);

// Creamos una tabla con una fila y dos columnas donde insertaremos los dos div creados var tabla=document.createElement('table'); tabla.setAttribute('style', 'width: 100%'); var fila=document.createElement('tr'); fila.setAttribute('style', 'width: 100%'); var celda1=document.createElement('td'); celda1.setAttribute('style', 'width: 50%'); var celda2=document.createElement('td'); celda2.setAttribute('style', 'width: 50%'); celda1.appendChild(div); celda2.appendChild(div_ej); fila.appendChild(celda1); fila.appendChild(celda2); tabla.appendChild(fila);

// Insertamos la tabla justo después del título var h1 = document.getElementsByTagName('h1'); h1[0].appendChild((tabla));

code