MediaWiki:Gadget-Search.js
Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.
- Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
- Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
- Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
- Opera: натисніть Ctrl-F5
function searchListInit(){
if (!window.searchListNS)
searchListNS = [
['','знайти у…'],
[-5,'у цьому вікні', 'перемикач, чи показувати результат в новому вікні'],
['','Зовнішній пошук'],
['https://www.google.com/custom?hl=uk&domains=wikipedia.org&sitesearch=wikipedia.org&q=', 'Google wp', 'Google.uk по Вікіпедії'],
['https://www.google.com/custom?hl=uk&domains=uk.wikipedia.org&sitesearch=uk.wikipedia.org&q=', 'Google uk.wp', 'Google.uk по УкрВікі'],
['https://www.yandex.ua/yandsearch?site=https://uk.wikipedia.org&site_manually=true&ras=1&text=','Yandex uk.wp', 'Yandex.ru по УкрВікі'],
['','MediaWiki'],
[-1,'Звичайно'],
[0,'Статті'],
[1,'Статті (обг)'],
[2,'Користувач'],
[3,'Користувач (обг)'],
[4,'Вікіпедія'],
[5,'Вікіпедія (обг)'],
[6,'Зображення'],
[7,'Зобр. (обг)'],
[8,'Mediawiki'],
[9,'Mediawiki (обг)'],
[10,'Шаблон'],
[11,'Шаблон (обг)'],
[100,'Портал'],
[101,'Портал (обг)']
]
if (!window.searchListShortNS)
searchListShortNS = {
'u':'User',
'i':'Image',
't':'Template',
'c':'Category',
'mw':'MediaWiki',
'в':'Вікіпедія',
'к':'Користувач',
'з':'Зображення',
'к':'Категорія',
'ш':'Шаблон',
'кор':'Користувач',
'кат':'Категорія',
'д':'Довідка',
'о':'Обговорення',
'об':'Обговорення',
'с':'Спеціальна',
'п':'Портал'
}
}
function shortNS(searchForm){ //expands 'u:test' into 'User:test'
var txt = searchForm.search.value, k
if ((k=txt.indexOf(':'))==-1 || txt.substring(0,1) == ' ') return
var pref = txt.substring(0,k).toLowerCase()
if (searchListShortNS[pref])
searchForm.search.value = searchListShortNS[pref] + txt.substring(k)
return true
}
function searchList(){
if (!window.searchListInNewWin) searchListInNewWin = false
var newWinOption
var msgThisWin, msgNewWin = 'у НОВОМУ вікні', msgSelectTitle = 'виберіть простір для пошуку'
searchListInit();
var searchForm = document.getElementById('searchform')
if (!searchForm) return
//create namespace selector hidden input
var searchHidden = document.createElement('input')
searchHidden.type = 'hidden'
searchHidden.value = '1'
searchForm.fulltext.parentNode.appendChild(searchHidden)
//create select
var select = document.createElement('select'), item, opt, text
for (var i=0; i<searchListNS.length; i++){
item = searchListNS[i]
opt = new Option(item[1], item[0])
opt.title = item[2] || ''
if (i == 0)
opt.style.color = '#222222'
else if (opt.value == -5){
newWinOption = opt
msgThisWin = opt.text
}else if (opt.value == ''){
opt.disabled = true
opt.style.color = 'gray'
opt.style.paddingLeft = '10px'
}else
opt.txt = ' ' + opt.txt
select.options[select.options.length] = opt
}
//select.selectedIndex = 0
with (select.style){ margin = '0'; marginTop = '2px'; fontSize = '90%'}
setTarget()
searchForm.fulltext.parentNode.insertBefore(select, searchHidden)
//hide standard Search button if not IE //if (is_opera || is_gecko){
if (navigator.userAgent.indexOf('MSIE') == -1){
searchForm.fulltext.style.display = 'none'
searchForm.go.title = searchForm.go.value
searchForm.go.value = ' → '
searchForm.go.style.width = '30px'
select.style.width = '90px'
}
select.title = msgSelectTitle
searchForm.go.title += ' (' + ($.client.profile().layout == 'gecko' ||$.client.profile().name == 'safari'?'Ctrl':'Shift') + ': ' + msgNewWin + ')'
//events
addHandler(searchForm.search, 'keydown', detectShift) //if Enter pressed
addHandler(searchForm.go, 'mouseup', detectShift) //Go clicked
select.onchange = onSelect
//addHandler(select, 'click', detectShift)
$(searchForm).submit(function(e){shortNS(searchForm)});
return
function detectShift(e){ //open in new win if shift is pressed
e = e || window.event
searchForm.target = (searchListInNewWin || e.shiftKey
|| ($.client.profile().layout == 'gecko'||$.client.profile().name== 'safari') && e.ctrlKey) ? '_blank' : ''
}
function onSelect(e){
if (this.selectedIndex == 0 || this.options[this.selectedIndex].disabled){
this.selectedIndex = 0
return
}
var val = this.options[this.selectedIndex].value
this.selectedIndex = 0
if (! /^-?\d+$/.test(val)){ //not a number => external search engine
var url = val + encodeURIComponent(searchForm.search.value)
if (searchListInNewWin) window.open(url)
else window.location = url
}else if (val == -5){ //new window switch
searchListInNewWin = !searchListInNewWin
setTarget()
}else if (searchForm.search.value == ''){
searchForm.search.value = '?'
}else { //MediaWiki search
searchHidden.name = (val == -1) ? '' : 'ns' + val
detectShift(e) //doesn't work in FF/Safari anyway
searchForm.fulltext.click()
}
}
function setTarget(){
searchForm.target = searchListInNewWin ? '_blank' : ''
select.style.backgroundColor = searchListInNewWin ? '#F5F5FF' : ''
newWinOption.text = ' (' + (searchListInNewWin ? msgNewWin : msgThisWin) + ')'
}
}//searchList func
if (mw.config.get('skin') == "vector"){
searchListInit();
$(document).ready(function(){
var sf = document.getElementById('searchform');
$(sf).submit(function(e){shortNS(sf)});
})
}
else
$(document).ready(searchList);