MediaWiki:JSScripts/AdvancedResearch
Aparéncia
/* * Recèrca avançada * * Remplaça la boita de recèrca per una amb plan mai de possibilitats * (acorchis, recèrca dins totas las lengas e projèctes, e qualques autres sites) * * Autor inicial : ////////////////////// ZÒNA PERSONALISABLA ////////////////////// adSearchProject = wgServer.replace(/.*\/\/(?:((?:commons|incubator|meta|species|www)\.|wikimediafoundation)|\w*\.)(\w*\.org)/i, '$1$2'); adSearchLang0 = 'oc'; adSearchLang0project = adSearchProject; adSearchLang0name = 'oc'; adSearchLang1 = 'fr'; adSearchLang1project = adSearchProject; adSearchLang1name = 'fr'; adSearchLang2 = 'en'; adSearchLang2project = adSearchProject; adSearchLang2name = 'en'; adSearchInstantTitle = true; adSearchSametab = false; adSearchShowtab = false; adSearchButtons = Array('l', 'w', 'g', 'reset', 'c'); adSearchDefault = 'l'; adSearchAdresses = Array(); var adSearchShortcuts; ///////////////// FIN DE LA ZÒNA PERSONALISABLA /////////////////
// Code :
/*********************************/ /* Recèrca avançada multilinga */ /* Autor : Seb35 */ /*********************************/ function advancedResearch_main() { a = document.getElementById('p-search').getElementsByTagName('div')[0]; texte = '<form name="adsearch">' + '<input type="text" id="adinput" name="adinput" value="" ' + (adSearchInstantTitle ? 'onkeyup="replaceunder();" ' : '') + 'onkeypress="check(false, event);" accesskey="c" style="font-size:95%;" /><br />' + '<span id="adlangall"><input type="radio" name="langselect" id="adlangalli" /><label for="adlangalli">all</label></span>' + '<span id="adlang0"><input type="radio" checked="checked" name="langselect" id="adlang0i" /><label for="adlang0i">' + adSearchLang0name + '</label></span>' + '<span id="adlang1"><input type="radio" name="langselect"' + (adSearchLang1name ? '' : ' style="display:none;"') + ' id="adlang1i" /><label for="adlang1i">' + adSearchLang1name + '</label></span>' + '<span id="adlang2"><input type="radio" name="langselect"' + (adSearchLang2name ? '' : ' style="display:none;"') + ' id="adlang2i" /><label for="adlang2i">' + adSearchLang2name + '</label></span>' + (adSearchLang1name || adSearchLang2name ? '<br id="adbr" />' : '') + '<span id="adlangother"><input type="radio" name="langselect" onfocus="if(!document.adsearch.adotherlang.value) document.adsearch.adotherlang.focus();" style="vertical-align:top;" />' + '<input type="text" name="adotherlang" value="" size="2" maxlength="12" onkeypress="check(true, event);" onblur="if(document.adsearch[5].checked && !document.adsearch.adotherlang.value) document.adsearch[2].checked = true;" style="font-size:95%;" /></span>' + '<input type="checkbox" id="adsametab" name="mode" style="vertical-align:top;" onclick="if(document.adsearch.mode.checked) document.adsearch.thiswindow.style.visibility = \'hidden\'; else document.adsearch.thiswindow.style.visibility = \'visible\';"' + (adSearchSametab ? ' checked="checked"' : '') + ' />' + '<input type="checkbox" id="adshowtab" name="thiswindow" style="vertical-align:top;' + (adSearchSametab ? ' visibility:hidden;' : '') + '"' + (adSearchShowtab ? ' checked="checked"' : '') + ' /><br />'; for(i=0; i<(adSearchButtons.length); i++) { if(adSearchButtons[i] == 'reset') texte = texte + '<input type="button" id="adreset" value="r" onclick="if(document.adsearch.adinput.value) document.adsearch.adinput.value = \'\'; else { document.adsearch.adotherlang.value = \'\'; document.adsearch[2].checked = true; } document.adsearch.adinput.focus();" style="font-size:95%;" />'; else texte = texte + '<input type="button" id="adbutton' + (i+1) + '" value="' + adSearchButtons[i].charAt(0) + '" onclick="go(\'' + adSearchButtons[i] + '\');" style="font-size:95%;" />'; } texte = texte + '</form>'; a.innerHTML = texte; } addOnloadHook(advancedResearch_main); /*************************/ /* Foncions auxiliàrias */ /* Autor : Seb35 */ /*************************/ function check(frombarlang, e) { if(e.keyCode == 13) { if(document.adsearch[5].checked && !document.adsearch.adotherlang.value) document.adsearch[2].checked = true; go(adSearchDefault); } else if(frombarlang && !document.adsearch[5].checked && e.keyCode != 9) document.adsearch[5].checked = true; } var adSearchCompteur; function replaceunder() { clearTimeout(adSearchComptaire); document.adsearch.adinput.value = document.adsearch.adinput.value.replace(/__/, theTitle(false)); if(/_/.test(document.adsearch.adinput.value)) { adSearchCompteur = setTimeout("document.adsearch.adinput.value = document.adsearch.adinput.value.replace(/_/, theTitle(true))", 350); } } function theTitle(withnamespace) { if(wgNamespaceNumber != -1 || wgTitle != 'Movepage') { if(withnamespace) return wgPageName.replace(/_/g, ' '); else return wgTitle; } else return document.getElementById('movepage').wpOldTitle.value; } function go(motor) { var raccourcis = new Array( /^sp:(.*)/i, 'Special:$1', 'Special:$1', /^d:(.*)/i, 'Talk:$1', 'Discutir:$1', /^dc(?:at)?:(.*)/i,'Category talk:$1', 'Discussion Categoria:$1', /^di:(.*)/i, 'Image talk:$1', 'Discussion Imatge:$1', /^dm:(.*)/i, 'Template talk:$1', 'Discussion Modèl:$1', /^dp:(.*)/i, 'Portal talk:$1', 'Discussion Portal:$1', /^dpj:(.*)/i, 'Wikipedia talk:WikiProject $1', 'Discussion Projècte:$1', /^du:(.*)/i, 'User talk:$1', 'Discussion Utilizaire:$1', /^dw:(.*)/i, 'Project talk:$1', 'Discussion Wikipèdia:$1', /^c(?:at)?:(.*)/i, 'Category:$1', 'Categoria:$1', /^i:(.*)/i, 'Image:$1', 'Imatge:$1', /^m:(.*)/i, 'Template:$1', 'Modèl:$1', /^mw:(.*)/i, 'MediaWiki:$1', 'MediaWiki:$1', /^p:(.*)/i, 'Portal:$1', 'Portal:$1', /^pj:(.*)/i, 'Wikipedia:WikiProject $1', 'Projècte:$1', /^u:(.*)/i, 'User:$1', 'Utilizaire:$1', /^w:(.*)/i, 'Project:$1', 'Wikipèdia:$1', /(.*)--$/i, 'Special:Recentchangeslinked/$1','Special:Recentchangeslinked/$1', /(.*)-$/i, 'Special:Whatlinkshere/$1', 'Special:Whatlinkshere/$1', /(.*)\/c$/i, 'Special:Contributions/$1', 'Special:Contributions/$1', /(.*)\/u$/i, 'Special:Undelete/$1', 'Special:Undelete/$1', /(.*)\/(css|js)$/i,'User:$1/monobook.$2', 'Utilizaire:$1/monobook.$2', /(.*)\/i[aà]s$/i, 'Wikipedia:Images and media for deletion', 'Wikipèdia:Imatges de suprimir/$1', /(.*)\/lann$/i, '$1', 'Wikipèdia:Lista dels articles non neutres/$1', /(.*)\/p[aà]s$/i, 'Wikipedia:Articles for deletion/$1', 'Wikipèdia:Paginas de suprimir/$1', /(.*)\/p[aà]v$/i, '$1', 'Wikipèdia:Paginas de verificar/$1', /(.*)\/pcp$/i, 'Wikipedia:Copyright problems', 'Wikipèdia:Paginas sospechadas de violacion de copyright/$1' ); //Serveires Wikimedia var serveurs = new Array( /^(?:c|commons)$/i, '', 'commons.wikimedia.org', /^(?:f|fou?ndation)$/i, '', 'wikimediafoundation.org', /^(?:i|incubator)$/i, '', 'incubator.wikimedia.org', /^(?:m|meta)$/i, '', 'meta.wikimedia.org', /^(?:mw|mediawiki)$/i, '', 'www.mediawiki.org', /^(?:s|species)$/i, '', 'species.wikipedia.org', /^(?:wz|wiktionaryz|ow|omegawiki)$/i,'', 'www.omegawiki.org', /^(.*)\.b$/i, '$1', 'wikibooks.org', /^(.*)\.n$/i, '$1', 'wikinews.org', /^(.*)\.q$/i, '$1', 'wikiquote.org', /^(.*)\.s$/i, '$1', 'wikisource.org', /^(.*)\.v$/i, '$1', 'wikiversity.org', /^(.*)\.w(?:ikt)?$/i, '$1', 'wiktionary.org', /^(.*)\.wp$/i, '$1', 'wikipedia.org' ); var adresses = new Array( 'l', 'http://*prefix*/wiki/$1', 'w', 'http://*prefix*/wiki/Special:Search?fulltext=search&search=$1', 'e', 'http://*prefix*/wiki/$1?action=edit', 'h', 'http://*prefix*/wiki/$1?action=history', 'lp', 'http://*prefix*/wiki/Special:Log?page=$1', 'lu', 'http://*prefix*/wiki/Special:Log?user=$1', 'pi', 'http://*prefix*/wiki/Special:Prefixindex/$1', 'g', 'http://www.google.com/search?num=100&q=$1+site:*prefix*', 'c', 'http://www.google.com/search?num=100&q=%22$1%22', 'gg', 'http://www.google.com/search?num=100&q=$1', 'imdb','http://french.imdb.com/find?s=all&q=$1', 'allo','http://www.allocine.fr/recherche/?motcle=$1', 'lum', 'http://wiki.lumrix.net/*language*/search.php?f=lumrix-search&k=$1' ); //Langue urllanguage = ''; urlserver = adSearchProject; urlmotor = ''; if(document.adsearch[2].checked) { urllanguage = adSearchLang0; urlserver = adSearchLang0project; } else if(document.adsearch[3].checked) { urllanguage = adSearchLang1; urlserver = adSearchLang1project; } else if(document.adsearch[4].checked) { urllanguage = adSearchLang2; urlserver = adSearchLang2project; } else if(document.adsearch[5].checked) { urllanguage = document.adsearch.adotherlang.value; if(!urllanguage) { motor = -1; urlmotor = 'http://www.wikimedia.org/'; } if(urllanguage == '639') { motor = -1; urlmotor = 'http://www.loc.gov/standards/iso639-2/php/code_list.php'; } if(urllanguage == 'lista') { motor = -1; urlmotor = '/wiki/Special:SiteMatrix'; } for(i = 0; i<(serveurs.length)/3; i++) { if(serveurs[3*i].test(urllanguage)) { urllanguage = urllanguage.replace(serveires[3*i], serveires[3*i+1]); if(urllanguage == '*') urllanguage = ''; urlserver = serveires[3*i+2]; break; } } } //Serveire urlnom = document.adsearch.adinput.value; adr = adSearchAdresses.concat(adreças); for(i = 0; i<(adr.length)/2; i++) { if(adr[2*i] == motor) motor = i; tmp = new RegExp('^'+adr[2*i]+';(.*)', 'i'); if(tmp.test(urlnom)) { urlnom = urlnom.replace(tmp, '$1'); motor = i; break; } } if(isNaN(motor)) { document.adsearch.adinput.value = 'erreur de config'; motor = -1; urlmotor = 'http://www.wikimedia.org'; } urlprefix = urlserver; if(urllanguage) urlprefix = urllanguage + '.' + urlserver; if(!urlnom && motor != -1) { motor = -1; urlmotor = 'http://' + urlprefix; } //Requèsta if(adSearchShortcuts) rac = adSearchShortcuts; else rac = acorchis; if(/^#(\/.*)?/.test(urlnom)) urlnom = urlnom.replace(/^#(\/.*)?/, 'Special:Random$1'); if(/^Special:Random\/Redirect$/i.test(urlnom)) urlnom = 'Special:Randomredirect'; for(i = 0; i<(rac.length)/3; i++) { if(rac[3*i].test(urlnom)) { if(urllanguage == 'fr') urlnom = urlnom.replace(rac[3*i], rac[3*i+2]); else urlnom = urlnom.replace(rac[3*i], rac[3*i+1]); } } urlnom = urlnom.replace(/__/, theTitle(false)); if(/_/.test(urlnom)) { title = theTitle(true); if(urllanguage != 'fr') { for(i = 0; i<(rac.length)/3; i++) { tmp = new RegExp(rac[3*i+2].replace('$1', '(.*)'), 'i'); if(tmp.test(title)) title = title.replace(tmp, rac[3*i+1]); } } urlnom = urlnom.replace(/_/, title); if(!/:/.test(urlnom) && urlserver == 'wiktionary.org') urlnom = urlnom.substring(0, 1).toLowerCase() + urlnom.substring(1); } //Preparacion de l'URL if(motor != -1) { urlmotor = adr[2*motor+1]; urlmotor = urlmotor.replace(/\$1/gi, urlnom); urlmotor = urlmotor.replace(/\*prefix\*/gi, urlprefix); urlmotor = urlmotor.replace(/\*language\*/gi, urllanguage); urlmotor = urlmotor.replace(/\*server\*/gi, urlserver); } //Pel WikiccionariZ urlmotor = urlmotor.replace(/^http\:\/\/www\.wiktionaryz\.org\/w(?:iki)?\/(.*)/i, 'http://www.wiktionaryz.org/index.php?title=$1'); //Sortida if(document.adsearch.mode.checked) window.location = urlmotor; else { fenèstra = open(urlmotor, '_blank', 'menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes'); if(!document.adsearch.thiswindow.checked) { fenèstra.blur(); this.focus(); } } return true; } //