Utilisateur:Mah3110/Gadget-ExternalSearch.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.// {{Catégorisation JS|ExternalSearch}}
//Jqueryfication + Ajout du moteur Qwant + Ouverture dans une nouvel onglet -- Mah3110
/* globals mw, $ */
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search' ) {
$( function ( $ ) {
'use strict';
function externalSearchEngines() {
var $choices = $( '<div>' );
$choices.attr( 'id', 'searchengineChoices' );
$choices.css( {
'clear': 'left',
'padding-top': '0.3em'
} );
var space = '';
$.each( searchEngines, function ( id, engine ) {
if ( space ) {
$choices.append( space );
}
space = ' ';
var $optionButton = $( '<input type="radio">' );
$optionButton.attr( 'name', 'searchengineselect' );
$optionButton.attr( 'value', id );
$optionButton.attr( 'id', 'searchengineRadio-' + id );
if ( id === 'mediawiki' ) {
$optionButton.attr( 'checked', 'checked' );
}
$optionButton.change( function () { changeSearchEngine( this.value ); } );
$choices.append( $optionButton );
var $label = $( '<label>' );
$label.attr( 'for', 'searchengineRadio-' + id );
if ( engine.Template.indexOf( 'http' ) === 0 ) {
var $lienMoteur = $( '<a>' );
var hrefMoteur = engine.Template.replace( '{searchTerms}', '' ).replace( '{language}', 'fr' );
$lienMoteur.attr( 'href', hrefMoteur );
$lienMoteur.text( engine.ShortName );
$label.append( $lienMoteur );
$lienMoteur.data( 'searchengine', id );
$lienMoteur.click( function ( e ) {
e.preventDefault();
externalSearchRun( $( this ).data( 'searchengine' ) );
} );
} else {
$label.text( engine.ShortName );
}
$choices.append( $label );
} );
$choices.insertAfter( '#mw-search-top-table' );
}
function changeSearchEngine( selectedId ) {
var $form = $( '#search' );
if ( !$form.length ) {
$form = $( '#powersearch' );
}
$form.off( 'submit.externalSearch' );
if ( selectedId !== 'mediawiki' ) {
$form.on( 'submit.externalSearch', function ( e ) {
e.preventDefault();
externalSearchRun( selectedId.split( 'searchengineRadio-' ).join( '' ) );
} );
}
}
function externalSearchRun( id ) {
// OOUI
var $lsearchbox = $( '#searchText input' );
if ( !$lsearchbox.length ) {
// fallback, markup before OOUI
$lsearchbox = $( 'input#searchText' );
if ( !$lsearchbox.length ) {
return;
}
}
var engine = searchEngines[ id ];
if ( !engine ) {
return;
}
var searchTerms = $lsearchbox.val();
if ( !searchTerms ) {
return;
}
var template = engine.Template;
template = template.split( '{searchTerms}' ).join( searchTerms );
template = template.split( '{language}' ).join( 'fr' );
// opening search in a new tab
window.open( template, '_blank', 'noopener' );
}
var domain = mw.config.get( 'wgServer' ).replace( /^.*?\/\//, '' );
var searchEngines = {
mediawiki: {
ShortName: 'Recherche interne',
Template: mw.config.get( 'wgScript' ) + '?search={searchTerms}'
},
exalead: {
ShortName: 'Exalead',
Template: 'http://www.exalead.com/search/wikipedia/results/?q={searchTerms}&language=fr'
},
qwant: {
ShortName: 'Qwant',
Template: 'https://www.qwant.com/?q={searchTerms}&t=all'
},
google: {
ShortName: 'Google',
Template: 'https://www.google.fr/search?as_sitesearch=' + domain + '&hl={language}&q={searchTerms}'
},
wikiwix: {
ShortName: 'Wikiwix',
Template: 'http://fr.wikiwix.com/index.php?action={searchTerms}&lang={language}'
},
wlive: {
ShortName: 'Bing',
Template: 'https://www.bing.com/search?q={searchTerms}&q1=site:' + domain
},
yahoo: {
ShortName: 'Yahoo!',
Template: 'https://fr.search.yahoo.com/search?p={searchTerms}&vs=' + domain
},
globalwpsearch: {
ShortName: 'Global WP',
Template: 'http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?timeout=120&search={searchTerms}'
}
};
externalSearchEngines();
} );
}