Utilisateur:Elemiah/advancedResearch.js
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) ;
Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./*********************************/
/* 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>';
}
$(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(mw.config.get('wgNamespaceNumber') != -1 || mw.config.get('wgTitle') != 'Movepage')
{
if(withnamespace) return mw.config.get('wgPageName').replace(/_/, ' ');
else return mw.config.get('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');
}