MediaWiki:Common.js: различия между версиями
Перейти к навигации
Перейти к поиску
Fritz (обсуждение | вклад) (Новая страница: «/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой ст…») |
Fritz (обсуждение | вклад) Нет описания правки |
||
Строка 16: | Строка 16: | ||
document.write('<script type="text/javascript" src="http://ru.wikipedia.org/w/index.php?title=MediaWiki:Wikificator.js&action=raw&ctype=text/javascript"><\/script>') | document.write('<script type="text/javascript" src="http://ru.wikipedia.org/w/index.php?title=MediaWiki:Wikificator.js&action=raw&ctype=text/javascript"><\/script>') | ||
addOnloadHook(addWikifButton) | addOnloadHook(addWikifButton) | ||
} | |||
/* Таблификатор */ | |||
//Форматирует таблицу, скопированную из 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"; | |||
} | |||
} | |||
} | |||
} | } |
Версия от 19:30, 18 марта 2013
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */ /* Викификатор */ function addWikifButton(){ 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/wikisource/ru/d/d1/Button-wikifikator.png' i.alt = i.title = 'Викификатор' i.onclick = Wikify i.style.cursor = 'pointer' toolbar.appendChild(i) } if (document.URL.indexOf('action=edit') > 0 || document.URL.indexOf('action=submit') > 0) { document.write('<script type="text/javascript" src="http://ru.wikipedia.org/w/index.php?title=MediaWiki:Wikificator.js&action=raw&ctype=text/javascript"><\/script>') addOnloadHook(addWikifButton) } /* Таблификатор */ //Форматирует таблицу, скопированную из 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"; } } } }