Usuario:Ciencia Al Poder/buscador.js
Nota: Después de guardar, debes refrescar la caché de tu navegador para ver los cambios. Internet Explorer: mantén presionada Ctrl mientras pulsas Actualizar. Firefox: mientras presionas Mayús pulsas el botón Actualizar, (o presiona Ctrl-Shift-R). Los usuarios de Google Chrome y Safari pueden simplemente pulsar el botón Recargar. Para más detalles e instrucciones acerca de otros exploradores, véase Ayuda:Cómo limpiar la caché.
/* Referencias:
* [[Usuario:Ciencia Al Poder/Notas#Funci.C3.B3n_addOnloadHook|Función addOnloadHook]]
* [[Usuario:Ciencia Al Poder/Notas#A.C3.B1adir_nuevas_p.C3.A1ginas_de_javascript|Añadir nuevas páginas de javascript]] (para añadirlo en vuestra página)
* [[Usuario:Ciencia Al Poder/monobook.js|monobook.js]]
* [[Usuario:Ciencia Al Poder/monobook.css|monobook.css]]
<pre><nowiki> */
/* *********
Módulo de búsqueda modificado.
Programado por [[Usuario:Ciencia Al Poder]]
Para consultas, quejas y demás contacten conmigo en mi discusión.
Si usáis esto enlazado desde mi javascript (no lo copiáis y pegáis
en una página vuestra) por favor, poned arriba de todo de
vuestro javascript personal (antes incluso que un <nowiki>)
la siguiente línea para saber quién me lo enlaza y avisarle si
hago cambios raros:
[[Usuario:Ciencia Al Poder/buscador.js]]
Disfrutad!
Se puede mejorar la presentación modificando vuestra hoja de
estilos personal, por ejemplo, añadiendo:
#selecBusqueda {
width: 11.1em;
margin: 0.5em 0 0.5em;
font-size: 95%;
}
label img {
margin: -0.5em 0 0;
padding: 0;
font-size: xx-small;
}
******** */
// Este array es bidimensional, y contendrá una lista
// de (etiqueta, acción, nombre_campo_busca, parámetro_opcional1[], parámetro_opcional2[])
var arrayBuscador = new Array();
////////////////////////
// Para añadir buscadores llamar a la función addFrmBusquedaActions()
// pasándole los campos necesarios y una llamada para cada buscador.
// Para saber cómo añadir más, podéis consultar mi monobook.js para
// ver cómo lo he hecho, o si copiáis esto en un archivo vuestro,
// seguid el ejemplo del final de todo.
// addFrmBusquedaActions(etiqueta a mostrar, action, nombre del parámetro de búsqueda[, parámetro opcional 1, valor 1[, parámetro opcional 2, valor 2]]);
function addFrmBusquedaActions(label, action, nombreCampo, param1, value1, param2, value2){
var arrayParam1 = new Array(param1, value1);
var arrayParam2 = new Array(param2, value2);
if (param1 && value1){
if (param2 && value2){
var frmBusActions = new Array(label, action, nombreCampo, arrayParam1, arrayParam2);
}else{
var frmBusActions = new Array(label, action, nombreCampo, arrayParam1);
}
}else{
var frmBusActions = new Array(label, action, nombreCampo);
}
arrayBuscador[arrayBuscador.length] = frmBusActions;
}
////////////////////////
// Añade los buscadores del array
function addOptionsToSelectBusqueda(nItem){
for (var i = 0; i < arrayBuscador.length; i++){
var newOption = document.createElement('option');
newOption.setAttribute('value', i);
newOption.setAttribute('id', 'bus-opt-' + i);
var tdText = document.createTextNode(arrayBuscador[i][0]);
newOption.appendChild(tdText);
var select = document.getElementById('selecBusqueda');
select.appendChild(newOption);
}
}
////////////////////////////////////
// Actualiza los parámetros del formulario para que concuerden
// con la opción que hemos seleccionado. Se llama justo al hacer el submit
function actualizaFormBusca(){
var formBusca = document.getElementById('searchform');
var selDonde = document.getElementById('selecBusqueda');
var cajaBusca = document.getElementById('searchInput');
if (document.getElementById('newwindowchk').checked){
formBusca.setAttribute('_target', '_self');
}else{
formBusca.removeAttribute('_target');
}
var nItem = parseInt(selDonde.value);
formBusca.action = arrayBuscador[nItem][1];
cajaBusca.setAttribute('name', arrayBuscador[nItem][2]);
var hidInput1 = document.getElementById('hidInput1');
if (arrayBuscador[nItem][3]){
hidInput1.setAttribute('name', arrayBuscador[nItem][3][0]);
hidInput1.setAttribute('value', arrayBuscador[nItem][3][1]);
}else{
hidInput1.removeAttribute('name');
hidInput1.removeAttribute('value');
}
var hidInput2 = document.getElementById('hidInput2');
if (arrayBuscador[nItem][4]){
hidInput2.setAttribute('name', arrayBuscador[nItem][4][0]);
hidInput2.setAttribute('value', arrayBuscador[nItem][4][1]);
}else{
hidInput2.removeAttribute('name');
hidInput2.removeAttribute('value');
}
}
//////////////////////////
// Modifica el módulo de búsqueda. Función principal
function moduloBusqueda(){
var formBusca = document.getElementById('searchform');
formBusca.setAttribute('_target', '_self');
if (formBusca.addEventListener){
formBusca.addEventListener('submit', actualizaFormBusca, false);
}else if (formBusca.attachEvent){
formBusca.attachEvent('onsubmit', actualizaFormBusca);
}
formBusca.setAttribute('onsubmit', 'actualizaFormBusca();');
var childDiv = formBusca.childNodes.item(0);
var selDonde = document.createElement('select');
selDonde.setAttribute('id', 'selecBusqueda');
var bnIr = document.getElementById('searchGoButton');
childDiv.insertBefore(selDonde, bnIr);
var hidInput1 = document.createElement('input');
hidInput1.setAttribute('type', 'hidden');
hidInput1.setAttribute('id', 'hidInput1');
childDiv.insertBefore(hidInput1, selDonde);
var hidInput2 = document.createElement('input');
hidInput2.setAttribute('type', 'hidden');
hidInput2.setAttribute('id', 'hidInput2');
childDiv.insertBefore(hidInput2, selDonde);
addOptionsToSelectBusqueda();
var lblNw = document.createElement('label');
lblNw.setAttribute('id', 'busnewwindow');
childDiv.appendChild(lblNw);
var newWin = document.createElement('input');
newWin.setAttribute('type', 'checkbox');
newWin.setAttribute('id', 'newwindowchk');
newWin.setAttribute('value', 'true');
newWin.setAttribute('checked', 'checked');
lblNw.appendChild(newWin);
var contlbl = document.createElement('img');
contlbl.setAttribute('src', '/skins-1.5/monobook/external.png');
contlbl.setAttribute('width', '10');
contlbl.setAttribute('height', '10');
contlbl.setAttribute('alt', 'N');
contlbl.setAttribute('title', 'Nueva ventana');
lblNw.appendChild(contlbl);
}
// Añade por defecto el buscador de Wikipedia (faltaba más :D)
addFrmBusquedaActions('Wikipedia:es', 'http://es.wikipedia.org/wiki/Special:Search', 'search');
// Añade la función que modifica el módulo de búsqueda a la cola de funciones
// que se cargarán al inicio de la página.
$(moduloBusqueda);
// </nowiki></pre>