Aller au contenu

Utilisateur:Wart Dark/advanced search.js

Une page de Wikipédia, l'encyclopédie libre.
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);