Utilisateur:Elemiah/advancedResearch.js
Un article de Wikipédia, l'encyclopédie libre.
Note : Après avoir publié la page, vous devrez forcer son rechargement pour voir les changements : Mozilla / Konqueror / Firefox : Shift-Ctrl-R, Internet Explorer / Opera : Ctrl-F5, Safari : Cmd-R.
/*********************************/ /* Recherche avancée multilingue */ /* Auteur : Seb35 */ /*********************************/ var urlproject, lang0, lang0project, lang0name, lang1, lang1project, lang1name, lang2, lang2project, lang2name, pseudoshortcuts, shortcuts; function isset(va, dv) { if(va) return (va == 'null' ? '' : va); else return dv; } function advancedResearch_main() { document.getElementById('searchform').style.display = 'none'; a = document.getElementById('p-search').getElementsByTagName('div')[0]; a.innerHTML = a.innerHTML + '<form name="adsearch">' + '<input type="text" name="adinput" value="" onkeypress="check(false, event );" accesskey="c" style="font-size:95%;" /><br />' + '<input type="radio" name="langselect" />a<input type="radio" name="langselect" checked="checked" name="langselect" />' + isset(lang0name, 'f') + '<input type="radio" name="langselect" />' + isset(lang1name, 'e') + '<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[4].checked && !document.adsearch.adotherlang.value) document.adsearch[2].checked = true;" style="font-size:95%;" />' + '<br />' + '<input type="checkbox" name="mode" style="vertical-align:top;" />' + '<input type="button" value="l" onclick="go(1);" style="font-size:95%;" />' + '<input type="button" value="w" onclick="go(2);" style="font-size:95%;" />' + '<input type="button" value="g" onclick="go(12);" style="font-size:95%;" />' + '<input type="button" value="c" onclick="go(11);" style="font-size:95%;" />' + '</form>'; } addOnloadHook(advancedResearch_main); /*************************/ /* Fonctions auxiliaires */ /* Auteur : Seb35 */ /*************************/ function check(frombarlang, e) { if(e.keyCode == 13) { event.returnValue = false; if(document.adsearch[4].checked && !document.adsearch.adotherlang.value) document.adsearch[2].checked = true; go(1); } else if(frombarlang && !document.adsearch[4].checked && e.keyCode != 9) document.adsearch[4].checked = true; } function theTitle(withnamespace) { if(wgNamespaceNumber != -1 || wgTitle != 'Movepage') { if(withnamespace) return wgPageName.replace(/_/, ' '); else return wgTitle; } else return document.getElementById('movepage').wgOldTitle.value; } function go(motor) { var raccourcis = new Array( /^sp:(.*)/i, 'Special:$1', 'Special:$1', /^d:(.*)/i, 'Talk:$1', 'Discuter:$1', /^dc(?:at)?:(.*)/i, 'Category talk:$1', 'Discussion Catégorie:$1', /^di:(.*)/i, 'Image talk:$1', 'Discussion Image:$1', /^dm:(.*)/i, 'Template talk:$1', 'Discussion Modèle:$1', /^dp:(.*)/i, 'Portal talk:$1', 'Discussion Portail:$1', /^dpj:(.*)/i, 'Wikipedia talk:WikiProject $1', 'Discussion Projet:$1', /^du:(.*)/i, 'User talk:$1', 'Discussion Utilisateur:$1', /^dw:(.*)/i, 'Project talk:$1', 'Discussion Wikipédia:$1', /^c(?:at)?:(.*)/i, 'Category:$1', 'Catégorie:$1', /^i:(.*)/i, 'Image:$1', 'Image:$1', /^m:(.*)/i, 'Template:$1', 'Modèle:$1', /^mw:(.*)/i, 'MediaWiki:$1', 'MediaWiki:$1', /^p:(.*)/i, 'Portal:$1', 'Portail:$1', /^pj:(.*)/i, 'Wikipedia:WikiProject $1', 'Projet:$1', /^u:(.*)/i, 'User:$1', 'Utilisateur:$1', /^w:(.*)/i, 'Project:$1', 'Wikipédia:$1', /(.*)--$/, 'Special:Recentchangeslinked/$1', 'Special:Recentchangeslinked/$1', /(.*)-$/, 'Special:Whatlinkshere/$1', 'Special:Whatlinkshere/$1', /(.*)\/c$/, 'Special:Contributions/$1', 'Special:Contributions/$1', /(.*)\/u$/, 'Special:Undelete/$1', 'Special:Undelete/$1', /(.*)\/(css|js)$/, 'User:$1/monobook.$2', 'Utilisateur:$1/monobook.$2', /(.*)\/i[aà]s$/, 'Wikipedia:Images and media for deletion', 'Wikipédia:Images à supprimer/$1', /(.*)\/lann$/, '$1', 'Wikipédia:Liste des articles non neutres/$1', /(.*)\/p[aà]s$/, 'Wikipedia:Articles for deletion/$1', 'Wikipédia:Pages à supprimer/$1', /(.*)\/p[aà]v$/, '$1', 'Wikipédia:Pages à vérifier/$1', /(.*)\/pcp$/, 'Wikipedia:Copyright problems', 'Wikipédia:Pages soupçonnées de violation de copyright/$1' ); //Serveurs Wikimedia var serveurs = new Array( /^(?:c|commons)$/i, '', 'commons.wikimedia.org', /^(?:f|fou?ndation)$/i, '', 'wikimediafoundation.org', /^(?:m|meta)$/i, '', 'meta.wikimedia.org', /^(?:mw|mediawiki)$/i, '', 'www.mediawiki.org', /^(?:s|species)$/i, '', 'species.wikipedia.org', /^(.*)\.b$/i, '$1', 'wikibooks.org', /^(.*)\.n$/i, '$1', 'wikinews.org', /^(.*)\.q$/i, '$1', 'wikiquote.org', /^(.*)\.s$/i, '$1', 'wikisource.org', /^(.*)\.w(?:ikt)?$/i, '$1', 'wiktionary.org', /^(.*)\.wp$/i, '$1', 'wikipedia.org' ); var lumrix = /^(?:da|de|en|es|fi|fr|hu|it|ja|nl|no|pl|pt|ru|sv|tr|zh)$/i; var pseudorac = new Array(/^g:(.*)/i, 12, /^gg:(.*)/i, 10, /^imdb:(.*)/i, 14, /^allo:(.*)/i, 15 , /^l:(.*)/i, 13, /^h:(.*)/i, 4, /^e:(.*)/i, 3, /^pi:(.*)/i, 7, /^lp:(.*)/i, 5, /^lu:(.*)/i, 6); //Serveur urlmotor = ''; nom = document.adsearch.adinput.value; pr = isset(pseudoshortcuts, pseudorac); for(i = 0; i<(pr.length)/2; i++) { if(pr[2*i].test(nom)) { nom = nom.replace(pr[2*i], '$1'); motor = pr[2*i+1]; } } //Langue urllanguage = ''; urlserver = isset(urlproject, isset(lang0project, 'wikipedia.org')); if(document.adsearch[2].checked) { urllanguage = isset(lang0, 'fr'); urlserver = isset(lang0project, isset(urlproject, 'wikipedia.org')); } else if(document.adsearch[3].checked) { urllanguage = isset(lang1, 'en'); urlserver = isset(lang1project, isset(urlproject, 'wikipedia.org')); } else if(document.adsearch[4].checked) { urllanguage = document.adsearch.adotherlang.value; if(!urllanguage) return; if(urllanguage == '639') { motor = 0; urlmotor = 'http://www.loc.gov/standards/iso639-2/langcodes.html'; } if(urllanguage == 'liste') { motor = 0; urlmotor = '/wiki/Special:SiteMatrix'; } for(i = 0; i<(serveurs.length)/3; i++) { if(serveurs[3*i].test(urllanguage)) { urllanguage = urllanguage.replace(serveurs[3*i], serveurs[3*i+1]); if(urllanguage == '*') urllanguage = ''; urlserver = serveurs[3*i+2]; break; } } } //Vérifications if(motor == 13 && !lumrix.test(urllanguage)) return; if(!nom) { if(motor >= 10 && motor <= 12) { motor = 0; urlmotor = 'http://www.google.com/'; } else if(motor == 13) { motor = 0; urlmotor = 'http://wiki.lumrix.net/' + urllanguage + '/'; } else if(motor == 14) { motor = 0; urlmotor = 'http://french.imdb.com/'; } else if(motor == 15) { motor = 0; urlmotor = 'http://www.allocine.fr/'; } else if(motor) motor = 1; } //Requête rac = isset(shortcuts, raccourcis); if(/^#(\/.*)?/.test(nom)) if(motor == 1) nom = nom.replace(/^#(\/.*)?/, 'Special:Random$1'); else return; if(/^Special:Random\/Redirect$/i.test(nom)) nom = 'Special:Randomredirect'; nom_simple = nom; for(i = 0; i<(rac.length)/3; i++) { if(rac[3*i].test(nom)) { nom_simple = nom_simple.replace(rac[3*i], '$1'); if(urllanguage == 'fr') nom = nom.replace(rac[3*i], rac[3*i+2]); else nom = nom.replace(rac[3*i], rac[3*i+1]); } } if(nom_simple == '__') nom = nom.replace(/__/, theTitle(false)); if(nom_simple == '_') { 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]); } } nom = nom.replace(/_/, title); if(!/:/.test(nom) && urlserver == 'wiktionary.org') nom = nom.substring(0, 1).toLowerCase() + nom.substring(1, nom.length); } //Préparation de l'URL if(urllanguage && motor != 13) urllanguage = urllanguage + '.'; prefix = 'http://' + urllanguage + urlserver; if(!urllanguage && !nom && motor < 10) { motor = 0; urlmotor = prefix; } switch(motor) { case 0: open(urlmotor, '_blank', 'menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes'); return; case 1: urlmotor = prefix + '/wiki/' + nom; break; case 2: urlmotor = prefix + '/w/index.php?title=Special%3ASearch&search=' + nom + '&fulltext=Recherche'; break; case 3: urlmotor = prefix + '/w/index.php?title=' + nom + '&action=edit'; break; case 4: urlmotor = prefix + '/w/index.php?title=' + nom + '&action=history'; break; case 5: urlmotor = prefix + '/w/index.php?title=Special%3ALog&page=' + nom; break; case 6: urlmotor = prefix + '/w/index.php?title=Special%3ALog&user=' + nom.charAt(0).toUpperCase() + nom.substr(1); break; case 7: urlmotor = prefix + '/wiki/Special:Prefixindex/' + nom; break; case 10: urlmotor = 'http://www.google.com/search?num=100&q=' + nom; break; case 11: urlmotor = 'http://www.google.com/search?num=100&q=%22' + nom + '%22'; break; case 12: urlmotor = 'http://www.google.com/search?num=100&q=' + nom + '+site:' + urllanguage + urlserver; break; case 13: urlmotor = 'http://wiki.lumrix.net/' + urllanguage + '/search.php?f=lumrix-search&k=' + nom; break; case 14: urlmotor = 'http://french.imdb.com/find?s=all&q=' + nom; break; case 15: urlmotor = 'http://www.allocine.fr/recherche/?motcle=' + nom; break; } //Sortie if(document.adsearch[6].checked) window.location = urlmotor; else open(urlmotor, '_blank', 'menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes'); }