Utilisateur:Wart Dark/advanced search.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./***************************************/
/* 12 : 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 id="ad-search" name="adsearch">'
+ '<input type="textbox" id="ad-input" name="adinput" value="" style="font-size:95%;" />'
+ '<br />'
+ '<input type="radio" id="ad-all" name="adlang" />all'
+ '<input type="radio" id="ad-fr" name="adlang" checked />fr'
+ '<input type="radio" id="ad-en" name="adlang" />en'
+ '<input type="radio" id="ad-de" name="adlang" />de'
+ '<span id="ad-other">'
+ '<input type="radio" name="adlang" onFocus="if(document.adsearch.adotherlang.value == \'\') document.adsearch.adotherlang.focus();" style="vertical-align:top;" />'
+ '<input type="textbox" name="adotherlang" value="" size="2" maxlength="12" onBlur="if(document.adsearch[5].checked && document.adsearch.adotherlang.value == \'\') document.adsearch[2].checked = true;" style="font-size:95%;" />'
+ '</span>'
+ '<input type="checkbox" name="mode" id="ad-mode" style="vertical-align:top;" />'
+ '<br />'
+ '<input type="button" id="ad-lire" value="l" onClick="go(1)" style="font-size:95%;" />'
+ '<input type="button" id="ad-wiki" value="w" onClick="go(2)" style="font-size:95%;" />'
+ '<input type="button" id="ad-google" value="g" onClick="go(3)" style="font-size:95%;" />'
+ '<input type="button" id="ad-reset" value="r" onClick="if(document.adsearch.adinput.value == \'\') { if(document.adsearch[2].checked == true) document.adsearch.adotherlang.value = \'\'; document.adsearch[2].checked = true; } document.adsearch.adinput.value=\'\'; document.adsearch.adinput.focus();" style="font-size:95%;" />'
+ '<input type="button" id="ad-cpr" value="c" onClick="go(4)" style="font-size:95%;" />'
+ '</form>';
}
/****************************************/
/* 13 Fonction auxiliaire de recherche */
/* Auteur : Seb35 */
/*************************************/
function go(motor)
{
var nbresultats = 100; //Nombre de résultats sur Google
var raccourcis = new Array( //Attention à l'ordre, le tableau est parcouru dans l'ordre donc il faut mettre /css avec /c :O
/(.*)\/js$/i, 'User:$1/monobook.js', 'Utilisateur:$1/monobook.js',
/(.*)\/css$/i, 'User:$1/monobook.css', 'Utilisateur:$1/monobook.css',
/(.*)\/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',
/^d:(.*)/i, 'Talk:$1', 'Discuter:$1',
/^dc(?:at)?:(.*)/i, 'Category_talk:$1', 'Discussion_Catégorie:$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',
/^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'
);
var serveurs = new Array( //Les noms de raccourcis doivent être disjoints dans leur ensemble, y compris avec les noms de langue ISO
/^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',
/^(.*)\.wikt\.$/i, '$1' + '.', 'wiktionary.org'
);
//Déclaration des variables
nom = new String();
urllanguage = new String();
urlserver = new String();
urlmotor = new String();
//Récupération de la requête
nom = document.adsearch.adinput.value;
//Pseudo-raccourcis
var pseudoraccourcis = new Array( //Ne pas modifier
/^h:(.*)/i, 6,
/^e:(.*)/i, 7,
/^g:(.*)/i, 3,
/^go:(.*)/i, 5,
/^h:(.*)/i, 6,
/^e:(.*)/i, 7
);
for(i = 0; i<(pseudoraccourcis.length)/2; i++)
{
if(pseudoraccourcis[2*i].test(nom))
{
nom = nom.replace(pseudoraccourcis[2*i], '$1');
motor = pseudoraccourcis[2*i+1];
if(motor == 6 || motor == 7) break;
}
}
//Page au hasard
if(nom == '#' && motor < 6)
{
nom = 'Special:Random';
motor = 1;
}
//Vérifie les incompatibilités
if(document.adsearch[1].checked && (motor == 1 || motor == 2 || motor == 6 || motor == 7)) return;
//Raccourcis de recherche
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(document.adsearch[2].checked) nom = nom.replace(raccourcis[3*i], raccourcis[3*i+2]);
else nom = nom.replace(raccourcis[3*i], raccourcis[3*i+1]);
}
}
if(!/Spe[cz]ial(?::|%3A)/i.test(window.location)) TitreDePage = document.title.replace(/^(?:modification de )?(.+) -(?:.*)/i, '$1').replace(/^(.*) -(?:.*)/i, '$1').replace(/^(.*) \((?:.*)\)/i, '$1');
else TitreDePage = 'Special:' + window.location.toString().replace(/(?:.*)Spe[cz]ial(?::|%3A)(.+)/i, '$1').replace(/(.+)&(?:.*)/i, '$1').replace(/(.+)&(?:.*)/i, '$1').replace(/(.+)&(?:.*)/i, '$1').replace(/(.+)&(?:.*)/i, '$1').replace(/(.+)\/(?:.*)/i, '$1');
//Pseudo-raccourci '_' pour le nom de la page courante
if(nom_simple == '_')
{
tmp = TitreDePage;
if(!document.adsearch[2].checked)
{
for(i = 0; i<(raccourcis.length)/3; i++)
{
tmp2 = new RegExp(raccourcis[3*i+2].replace('$1', '(.*)'), 'i');
if(tmp2.test(tmp)) tmp = tmp.replace(tmp2, raccourcis[3*i+1]);
}
}
nom = nom.replace(/_/i, tmp);
}
//Pseudo-raccourci '__' pour le nom de la page courante sans le namespace
if(nom_simple == '__') nom = nom.replace(/__/i, TitreDePage.replace(/^(?:(?:Media|Discuter|Utilisateur|Discussion Utilisateur|Wikipédia|Discussion Wikipédia|Image|Discussion Image|MediaWiki|Discussion MediaWiki|Modèle|Discussion Modèle|Aide|Discussion Aide|Catégorie|Discussion Catégorie|Portail|Discussion Portail|Référence|Discussion Référence):)?(.+)/i, '$1'));
//Aller à la page principale de google ou quitter s'il n'y a pas de recherche
if(!nom)
{
if(motor >= 3 && motor <= 5) open('http://www.google.com', '_blank', 'location=yes');
if(motor != 1) return;
}
//Récupération de la langue
urlserver = 'wikipedia.org';
urllanguage = 'fr.';
if(document.adsearch[1].checked) urllanguage = 'all';
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 == '.' && (motor == 1 || motor == 2 || motor == 6 || motor ==7)) return;
if(urllanguage == '639.') { open('http://fr.wikipedia.org/wiki/Utilisateur:Hégésippe_Cormier/préfixes_et_noms_de_langues', '_blank', 'location=yes'); return; }
if(urllanguage == 'liste.') { open('/wiki/Special:SiteMatrix', '_blank', 'location=yes'); return; }
for(i = 0; i<(serveurs.length)/3; i++)
{
if(serveurs[3*i].test(urllanguage))
{
urllanguage = urllanguage.replace(serveurs[3*i], serveurs[3*i+1]);
urlserver = serveurs[3*i+2];
break;
}
}
}
//Entrée de l'url
if(motor == 1) urlmotor = 'http://' + urllanguage + urlserver + '/wiki/' + nom;
else if(motor == 2) urlmotor = 'http://' + urllanguage + urlserver + '/w/index.php?title=Special%3ASearch&search=' + nom + '&fulltext=Recherche';
else if(motor == 3 && urllanguage == 'all') urlmotor = 'http://www.google.com/search?num=' + nbresultats + '&q=' + nom + '+site:' + urlserver;
else if(motor == 3) urlmotor = 'http://www.google.com/search?num=' + nbresultats + '&q=' + nom + '+site:' + urllanguage + urlserver;
else if(motor == 4) urlmotor = 'http://www.google.com/search?num=' + nbresultats + '&q=%22' + nom + '%22';
else if(motor == 5) urlmotor = 'http://www.google.com/search?num=' + nbresultats + '&q=' + nom;
else if(motor == 6) urlmotor = 'http://' + urllanguage + urlserver + '/w/index.php?title=' + nom + '&action=history';
else if(motor == 7) urlmotor = 'http://' + urllanguage + urlserver + '/w/index.php?title=' + nom + '&action=edit';
//Ouverture
if(document.adsearch[7].checked) window.location = urlmotor;
else open(urlmotor, '_blank', 'location=yes');
}
$(advancedResearch_main);