Участник:Afinogenoff/searchlist.js

Материал из свободной русской энциклопедии «Традиция»
Перейти к: навигация, поиск

Замечание: Чтобы после сохранения вступили в силу изменения стилей, перезагрузите файл //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=styles&skin=vector&*, если используете скин Vector, или //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=styles&skin=common&*, если используете скин Common.

Чтобы вступили в силу изменения скриптов, перезагрузите файл //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=scripts&skin=vector&*, если используете скин Vector, или //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=scripts&skin=common&*, если используете скин Common.

Гаджеты и импортируемые скрипты загружаются отдельными файлами.

//Скрипт заменяет кнопку "Найти" на выпадающий список пространств, в которых вы часто ищете
// based on [[:en:User:Ilmari_Karonen/searchnsmenu.js]]
//var searchInNewWindow = true;


if (!window.searchInNewWindow) searchInNewWindow = false;

var searchNS = [
['','найти в…'],
[-5,'(в этом окне)'],
[-1,'По умолчанию'],
[0,'Статьи'],
[1,'Статьи (обс)'],
[2,'Участник'],
[3,'Участник (обс)'],
[4,'Traditio'],
[5,'Traditio (обс)'],
[6,'Изображение'],
[7,'Изобр. (обс)'],
[8,'Mediawiki'],
[9,'Mediawiki (обс)'],
[10,'Шаблон'],
[11,'Шаблон (обс)']
]


addOnloadHook(searchCreateMenu);

function searchCreateMenu() {
 searchForm = document.getElementById('searchform') //global var
 if (!searchForm) return;
 //create hidden input
 searchHidden = document.createElement('input'); //global var
 searchHidden.type = 'hidden';
 searchHidden.value = '1';
 searchForm.fulltext.parentNode.appendChild(searchHidden);
 //create select
 searchSel = document.createElement('select'); //global var
 for (var i in searchNS)
   searchSel.options[searchSel.options.length] =  new Option(searchNS[i][1], searchNS[i][0]);
 searchSetTarget();
 searchSel.style.margin = '0';
 searchSel.style.marginTop = '2px';
 searchSel.style.fontSize = '90%';
 searchSel.onchange = searchOnSelect;
 searchForm.fulltext.parentNode.insertBefore(searchSel, searchHidden);
 //hide normal Search button if not IE
 if (is_opera || is_gecko){
   searchForm.fulltext.style.display = 'none';
   searchSel.style.width = '65px';
 }
}

function searchOnSelect() {
   if (this.selectedIndex == 0) return;
   var ns = this.options[this.selectedIndex].value;
   if (ns == -5) { //new window switch
     searchInNewWindow = !searchInNewWindow;
     searchSetTarget();
   } else { //do search
     if (searchForm.search.value == '')
         searchForm.search.value = '?'; 
     else {
       searchHidden.name = (ns == -1) ? '' : 'ns' + ns;
       searchForm.fulltext.click();
     } 
   }
   this.selectedIndex = 0;
}

function searchSetTarget(){
 if (searchInNewWindow)  {
   searchForm.target = '_blank';
   searchSel.options[1].text =  '(в НОВОМ окне)';
 } else {
   searchForm.target = '';
   searchSel.options[1].text =  '(в этом окне)';
 }
}