MediaWiki:Monobook.js
[http://www.wikizamki.org/links.htm]
Версия от 11:37, 30 июля 2009; Elden (обсуждение | вклад)
Замечание: Чтобы после сохранения сделанные изменения вступили в силу, очистите кеш своего браузера: Mozilla / Firefox: Ctrl+Shift+R, IE: Ctrl+F5, Safari: Cmd+Shift+R, Konqueror: F5, Opera: через меню Tools→Preferences.
/* Указанный здесь JavaScript будет загружен всем участникам, использующим тему оформления MonoBook */
//Скрипт дополняет форму поиска ссылками на поиск в гугле по различным вики-проектам.
function xRomixSearch(mode){
var el = document.getElementById('xRomix_hidden_search_span');
if (!el) return;
var f1 = document.getElementById('searchInput');
if (!f1) return;
var s="";
if(mode=="google_wikipedia"){
s=" <form id='xRomix_hidden_search_form' action='http://ru.wikipedia.org/wiki/Заглавная страница'>\
<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
<input type='hidden' name='as_sitesearch' value='wikipedia.org'>\
</form>";
}else if(mode=="google_wiktionary"){
s=" <form id='xRomix_hidden_search_form' action='http://ru.wiktionary.org/wiki/Заглавная страница'>\
<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
<input type='hidden' name='as_sitesearch' value='wiktionary.org'>\
</form>";
}else if(mode=="google_wikibooks"){
s=" <form id='xRomix_hidden_search_form' action='http:http://ru.wikibooks.org/wiki/Заглавная страница'>\
<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
<input type='hidden' name='as_sitesearch' value='wikibooks.org'>\
</form>";
}else if(mode=="google_translate"){
var text=f1.value;
//Определим направление перевода
try{
if (text.search(/[А-Яа-я]+/)>=0){
lang="ru|en";
}else{
lang="en|ru";
}
}catch(e){
lang="en|ru";
}
s=" <form id='xRomix_hidden_search_form' action='http://translate.google.com/translate_t'>\
<input id='xRomix_hidden_search_text' type='hidden' name='text' value=''>\
<input type='hidden' name='hl' value='ru'>\
<input type='hidden' name='ie' value='UTF8'>\
<input type='hidden' name='langpair' value='"+lang+"'>\
</form>";
}else if(mode=="yandex_slovari"){
s=" <form id='xRomix_hidden_search_form' action='http://lingvo.yandex.ru/search.xml'>\
<input id='xRomix_hidden_search_text' type='hidden' name='text' value=''>\
</form>";
}else if(mode=="yandex_lingvo"){
s=" <form id='xRomix_hidden_search_form' action='http://lingvo.yandex.ru/en'>\
<input id='xRomix_hidden_search_text' type='hidden' name='text' value=''>\
<input type='hidden' name='st_translate' value='1'>\
</form>";
}
el.innerHTML=s;
var f2 = document.getElementById('xRomix_hidden_search_text');
if (!f2) return;
f2.value=f1.value;
var f = document.getElementById('xRomix_hidden_search_form');
if (!f) return;
try{
var test = extSearchMode; //проверяем наличие переменной
}catch(e){
extSearchMode=1; //по умолчанию - в новом окне
}
if (extSearchMode == 1){
f.target='_blank';
}
f.submit();
}
addOnloadHook(function(){
var el = document.getElementById('searchBody');
if (!el) return;
s="<form action='/wiki/Служебная:Search' id='searchform' target='_blank'><div>\
<input id='searchInput' name='search' type='text' title='Искать это слово [f]' accesskey='f' value='' />\
<input type='submit' name='go' class='searchButton' id='searchGoButton' value='Перейти' title='Перейти к странице, имеющей в точности такое название' /> \
<input type='submit' name='fulltext' class='searchButton' id='mw-searchButton' value='Найти' title='Найти страницы, содержащие указанный текст' /></div></form>\
<span id='xRomix_hidden_search_span'></span>\
<div align='left'><br><ul>\
<li><a href='javascript: xRomixSearch(\"google_wikipedia\");'>Википедия</a></li>\
<li><a href='javascript: xRomixSearch(\"google_wiktionary\");'>Викисловарь</a></li>\
<li><a href='javascript: xRomixSearch(\"google_wikibooks\");'>Викиучебник</a></li>\
<li><a href='javascript: xRomixSearch(\"google_translate\");'>Google→Переводчик</a></li>\
<li><a href='javascript: xRomixSearch(\"yandex_slovari\");'>Яндекс→Словари</a></li>\
<li><a href='javascript: xRomixSearch(\"yandex_lingvo\");'>Яндекс→Lingvo</a></li>\
</ul></div>\
";
try{
var test = extSearchMode; //проверяем наличие переменной
}catch(e){
extSearchMode=1; //по умолчанию - в новом окне
}
if (extSearchMode == 0){
//Убираем target='_blank' - открывание в новом окне, если переменная = 0
var reg = /target\=\'\_blank\'/g
var res = s.replace(reg, "");
s = res;
//Заменяем стрелочку на минус (чтобы было видно, в каком режиме будет поиск)
var reg = /→/g
var res = s.replace(reg, "-");
s = res;
}
el.innerHTML=s;
}//function
);//addOnloadHook
//Форматирует таблицу, скопированную из Excel, по правилам вики-разметки.
//Часть кода позаимствована из http://ru.wikipedia.org/wiki/MediaWiki:Wikificator.js
//Автор: X-romix
var XRomix_Tablify_CantWork1 = 'Таблификатор не может работать в вашем браузере.\n\nTablificator cannot work in your browser' // английский текст для тех, кто не видит русские буквы
var XRomix_Tablify_FullText1 = 'Эта кнопка предназначена для форматирования табличного текста, скопированного из табличного редактора (например, из Excel). Чтобы функция заработала, сначала выделите нужный фрагмент текста в окне редактирования.'
//Добавляет кнопку
function addTablifikatorButton1(){
var toolbar = document.getElementById('toolbar')
var textbox = document.getElementById('wpTextbox1')
if (!textbox || !toolbar) return
var i = document.createElement('img')
i.src = 'http://upload.wikimedia.org/wikipedia/ru/c/c1/Button-tablifikator.PNG'
i.alt = i.title = 'Таблификатор'
i.onclick = XRomix_Tablify1
i.style.cursor = 'pointer'
toolbar.appendChild(i)
}
//Этот код выполняется в начале.
if (wgAction == 'edit' || wgAction == 'submit'){
addOnloadHook(addTablifikatorButton1)
}
//Функция для оформления таблицы
function XRomix_Tablify1(){
//Проверяем, поддерживает ли браузер регулярные выражения (RegExp)
if (('code'.replace(/d/g, 'r') != 'core')
|| (navigator.appName=='Netscape' && navigator.appVersion.substr (0, 1) < 5))
{ alert(XRomix_Tablify_CantWork1); return }
setWpSummary();
var txt, hidden = [], hidIdx = 0, wpTextbox1 = document.editform.wpTextbox1
var winScroll = document.documentElement.scrollTop //remember window scroll
wpTextbox1.focus()
if (typeof wpTextbox1.selectionStart != 'undefined'
&& (navigator.productSub > 20031000 || is_safari)) { //Mozilla/Opera/Safari3
var textScroll = wpTextbox1.scrollTop
var startPos = wpTextbox1.selectionStart
var endPos = wpTextbox1.selectionEnd
txt = wpTextbox1.value.substring(startPos, endPos)
if (txt == '') {alert(XRomix_Tablify_FullText1); return}
else{
processText()
wpTextbox1.value = wpTextbox1.value.substring(0, startPos) + txt + wpTextbox1.value.substring(endPos)
}
wpTextbox1.selectionStart = startPos
wpTextbox1.selectionEnd = startPos + txt.length
wpTextbox1.scrollTop = textScroll
}else if (document.selection && document.selection.createRange) { //IE
var range = document.selection.createRange()
txt = range.text
if (txt == '') {alert(XRomix_Tablify_FullText1); return}
else{
processText()
range.text = txt
//if (!window.opera) txt = txt.replace(/\r/g,'')
if (range.moveStart) range.moveStart('character', - txt.length)
range.select()
}
}else // Для браузеров, которые не умеют возвращать выделенный фрагмент, выдаем ошибку
{ alert(XRomix_Tablify_CantWork1); return }
document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera
//Здесь производим замену в переменной txt - это отразится на выделенном фрагменте текста
function processText(){
var col1hdr=0;
if (confirm('Вы хотите оформить первую колонку как заголовок?')) col1hdr=1;
txt = txt.replace(/^\s+|\s+$/g, '') //Обрезаем пробелы слева и справа
var arr1=txt.split("\n")
txt='\n{| class="standard"\n'
for (var i=0; i<arr1.length; i++){
txt = txt+"|-\n"
s1=arr1[i];
var arr2=s1.split("\t")
for (var j=0; j<arr2.length; j++){
var s2=arr2[j];
if ((col1hdr==1 && j==0)||i==0){
txt = txt+"! "+s2+"\n"
}else{
txt = txt+"| "+s2+"\n"
}
}
}
txt = txt+"|}"
}
function setWpSummary(){
var wpSummary = document.getElementById('wpSummary')
if(wpSummary){
var temp=wpSummary.value;
temp=temp.replace(/\/\*.*?\*\// , ""); //комментарии
temp=temp.replace(/[\s]*/ , ""); //пробелы
if (temp==""){
wpSummary.value=wpSummary.value+" - [[User talk:X-romix/tablifikator.js|tablifikator.js]] - таблица из Excel/Calc";
}
}
}
}