MediaWiki:Gadget-AdvancedResearch.js
Apparence
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./*********************************/
/* Recherche avancée multilingue */
/* Auteur : Seb35 */
/*********************************/
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="" accesskey="c" style="font-size:95%;" /><br />'
+ '<input type="radio" />all<input type="radio" checked />fr'
+ '<input type="radio" />en<input type="radio" />de'
+ '<input type="radio" onFocus="if(!document.adsearch.adotherlang.value) document.adsearch.adotherlang.focus();" style="vertical-align:top;" />'
+ '<input type="text" name="adotherlang" value="" size="2" maxlength="12" onBlur="if(document.adsearch[5].checked && !document.adsearch.adotherlang.value) document.adsearch[2].checked = true;" onChange="if(document.adsearch.adotherlang) document.adsearch[5].checked = true;" style="font-size:95%;" />'
+ '<input type="checkbox" name="mode" style="vertical-align:top;" /><br />'
+ '<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="r" onClick="document.adsearch.adinput.value = \'\'; document.adsearch.adinput.focus();" style="font-size:95%;" />'
+ '<input type="button" value="c" onClick="go(11);" style="font-size:95%;" />'
+ '</form>';
}
addLoadEvent(advancedResearch_main);
/************************************/
/* Fonction auxiliaire de recherche */
/* Auteur : Seb35 */
/************************************/
function go(motor)
{
var raccourcis = new Array(
/^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',
/^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',
/^u:(.*)/i, 'User:$1', 'Utilisateur:$1',
/^w:(.*)/i, 'Project:$1', 'Wikipédia:$1',
/(.*)--$/i, 'Special:Recentchangeslinked/$1', 'Special:Recentchangeslinked/$1',
/(.*)-$/i, 'Special:Whatlinkshere/$1', 'Special:Whatlinkshere/$1',
/(.*)\/(css|js)$/i, 'User:$1/monobook.$2', 'Utilisateur:$1/monobook.$2',
/(.*)\/c$/i, 'Special:Contributions/$1', 'Special:Contributions/$1',
/(.*)\/i[aà]s/i, '$1', 'Wikipédia:Images_à_supprimer/$1',
/(.*)\/lann/i, '$1', 'Wikipédia:Liste_des_articles_non_neutres/$1',
/(.*)\/p[aà]s/i, '$1', 'Wikipédia:Pages_à_supprimer/$1',
/(.*)\/p[aà]v/i, '$1', 'Wikipédia:Pages_à_vérifier/$1',
/(.*)\/pcp/i, '$1', 'Wikipédia:Pages_soupçonnées_de_violation_de_copyright/$1'
);
//Serveurs Wikimedia
var serveurs = new Array(
/^c(?:ommons)?$/i, '', 'commons.wikimedia.org',
/^f(?:ou?ndation)?$/i, '', 'wikimediafoundation.org',
/^m(?:eta)?$/i, '', 'meta.wikimedia.org',
/^s(?:pecies)?$/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;
//Serveur
urlmotor = '';
nom = document.adsearch.adinput.value;
var pseudorac = new Array(/^g:(.*)/i, 12, /^gg:(.*)/i, 10, /^imdb:(.*)/i, 14, /^l:(.*)/i, 13, /^h:(.*)/i, 4, /^e:(.*)/i, 3, /^lp:(.*)/i, 5, /^lu:(.*)/i, 6);
for(i = 0; i<(pseudorac.length)/2; i++)
{
if(pseudorac[2*i].test(nom))
{
nom = nom.replace(pseudorac[2*i], '$1');
motor = pseudorac[2*i+1];
}
}
//Langue
urlserver = 'wikipedia.org';
urllanguage = 'fr';
if(document.adsearch[1].checked) urllanguage = '';
else if(document.adsearch[3].checked) urllanguage = 'en';
else if(document.adsearch[4].checked) urllanguage = 'de';
else if(document.adsearch[5].checked)
{
urllanguage = document.adsearch.adotherlang.value;
if(!urllanguage) return;
if(urllanguage == '639') { motor = 0; urlmotor = '/wiki/Utilisateur:Hégésippe_Cormier/préfixes_et_noms_de_langues'; }
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) motor = 1;
}
//Requête
if(nom == '#') if(motor == 1) nom = 'Special:Random'; else return;
nom_simple = nom;
for(i = 0; i<(raccourcis.length)/3; i++)
{
if(raccourcis[3*i].test(nom))
{
nom_simple = nom_simple.replace(raccourcis[3*i], '$1');
if(urllanguage == 'fr') nom = nom.replace(raccourcis[3*i], raccourcis[3*i+2]);
else nom = nom.replace(raccourcis[3*i], raccourcis[3*i+1]);
}
}
title = TitreDePage;
if(nom_simple == '__') nom = nom.replace(/__/, TitreDePageSansNamespace);
if(nom_simple == '_')
{
if(urllanguage != 'fr')
{
for(i = 0; i<(raccourcis.length)/3; i++)
{
tmp = new RegExp(raccourcis[3*i+2].replace('$1', '(.*)'), 'i');
if(tmp.test(title)) title = title.replace(tmp, raccourcis[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(prefix == 'http://fr.wikipedia.org') prefix = '';
if(!urllanguage && !nom && motor < 10) { motor = 0; urlmotor = prefix; }
switch(motor)
{
case 0: open(urlmotor, '_blank', 'location=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; 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;
}
//Sortie
if(document.adsearch[7].checked) window.location = urlmotor;
else open(urlmotor, '_blank', 'location=yes');
}