مدیاویکی:Gadget-SearchEngines.js
پرش به ناوبری
پرش به جستجو
نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-R)
- گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-Shift-R)
- اینترنت اکسپلورر/ Edge: کلید Ctrl را نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید
- اپرا: Ctrl-F5 را بفشارید.
/**
* افزودن موتورهای جستجو بهجستجو پیشرفته
*/
/*jshint curly:false */
/*global mw */
(function () {
if (typeof SpecialSearchEnhanced2Disabled !== 'undefined')
return;
if (mw.config.get('wgCanonicalSpecialPageName') !== 'Search')
return;
var choices, searchEngines;
searchEngines = {
mediawiki: {
ShortName: "جستجو در اینترنت",
Template: mw.config.get('wgScript') + "?search={searchTerms}"
},
google: {
ShortName: "گوگل",
Template: "http://www.google.com/search?as_sitesearch=fa.wikipedia.org&hl={language}&q={searchTerms}"
},
wikiwix: {
ShortName: "ویکیویکس",
Template: "http://fa.wikiwix.com/index.php?action={searchTerms}&lang={language}"
},
wlive: {
ShortName: "بینگ",
Template: "http://www.bing.com/search?q={searchTerms}&q1=site:http://fa.wikipedia.org"
},
yahoo: {
ShortName: "یاهو!",
Template: "http://search.yahoo.com/search?p={searchTerms}&vs=fa.wikipedia.org"
},
globalwpsearch: {
ShortName: "همهٔ پروژههای اسلامیکال",
Template: "http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?timeout=120&search={searchTerms}"
}
};
function changeSearchEngine(selectedId, searchTerms) {
var currentId, radio, engine, p, params, form,
l, idx, pValue, input;
currentId = choices.currentChoice;
if (selectedId == currentId) return;
choices.currentChoice = selectedId;
radio = document.getElementById('searchengineRadio-' + selectedId);
radio.checked = true;
engine = searchEngines[selectedId];
p = engine.Template.indexOf('?');
params = engine.Template.substr(p + 1);
form = document.forms.search || document.getElementById("powersearch");
form.setAttribute("action", engine.Template.substr(0, p));
l = ("" + params).split("&");
for (idx = 0; idx < l.length; idx++) {
p = l[idx].split("=");
pValue = p[1];
if (pValue == "{searchTerms}") {
input = document.getElementById("searchText");
input.name = p[0];
} else if (pValue !== "{language}") {
input = document.getElementById("searchengineextraparam");
input.name = p[0];
input.value = pValue;
}
}
}
function handleRadioChoiseFocus(e) {
changeSearchEngine(this.value);
}
$(function () {
var mainNode, beforeNode, firstEngine;
mainNode = document.getElementById("powersearch");
if (!mainNode)
mainNode = document.getElementById("search");
if (!mainNode)
return;
beforeNode = document.getElementById("mw-search-top-table");
if (!beforeNode)
return;
beforeNode = beforeNode.nextSibling;
if (!beforeNode)
return;
firstEngine = "mediawiki";
choices = document.createElement("div");
choices.style.textAlign = "center";
var lsearchbox = document.getElementById("searchText");
if (!lsearchbox)
return;
var initValue = lsearchbox.value;
var space = "";
for (var id in searchEngines) {
var engine = searchEngines[id];
if (engine.ShortName) {
if (space) {
choices.appendChild(space);
}
space = document.createTextNode(" ");
var span = document.createElement("span");
var $choice = $('<input type="radio" />')
.attr({
name: "searchengineselect",
value: id,
id: "searchengineRadio-" + id
})
.on('focus', handleRadioChoiseFocus);
$(span).append($choice);
choices.appendChild( span );
var label = document.createElement("label");
label.htmlFor = "searchengineRadio-" + id;
if (engine.Template.indexOf('http') === 0) {
var lienMoteur = document.createElement("a");
lienMoteur.href = engine.Template.replace("{searchTerms}", initValue).replace("{language}", "fa");
lienMoteur.appendChild( document.createTextNode( engine.ShortName ) );
label.appendChild(lienMoteur);
} else {
label.appendChild( document.createTextNode( engine.ShortName ) );
}
choices.appendChild( label );
}
}
mainNode.insertBefore(choices, beforeNode);
var input = document.createElement("input");
input.id = "searchengineextraparam";
input.type = "hidden";
mainNode.insertBefore(input, beforeNode);
changeSearchEngine(firstEngine, initValue);
});
}());