MediaWiki:Monobook.js
Материал из Бронетанковой Энциклопедии — armor.kiev.ua/wiki
Версия от 18:48, 11 декабря 2007; ArmorAdmin (обсуждение | вклад)
Замечание. Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl-F5 или Ctrl-R (⌘-R на Mac)
- Google Chrome: Нажмите Ctrl-Shift-R (⌘-Shift-R на Mac)
- Internet Explorer: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl-F5
- Opera: Выберите очистку кэша в меню Инструменты → Настройки
/* tooltips and access keys */
ta = new Object();
ta['pt-userpage'] = new Array('.','Моя страница пользователя');
ta['pt-anonuserpage'] = new Array('.','Страница пользователя для моего IP');
ta['pt-mytalk'] = new Array('n','Моя страница обсуждений');
ta['pt-anontalk'] = new Array('n','Страница обсуждений для моего IP');
ta['pt-preferences'] = new Array('','Мои настройки');
ta['pt-watchlist'] = new Array('l','Список страниц моего наблюдения');
ta['pt-mycontris'] = new Array('y','Список страниц, которые я редактировал');
ta['pt-login'] = new Array('o','Здесь можно зарегистрироваться в системе, но это необязательно');
ta['pt-anonlogin'] = new Array('o','Здесь можно зарегистрироваться в системе, но это необязательно');
ta['pt-logout'] = new Array('o','Отказаться от регистрации');
ta['ca-talk'] = new Array('t','Обсуждение статьи');
ta['ca-edit'] = new Array('e','Эту статью можно изменять. Перед сохранением изменений, пожалуйста, нажмите кнопку предварительного просмотра для визуальной проверки результата');
ta['ca-addsection'] = new Array('+','Добавить комментарий к обсуждению');
ta['ca-viewsource'] = new Array('e','Эта страница защищена от изменений, но вы можете посмотреть и скопировать её исходный текст');
ta['ca-history'] = new Array('h','Журнал изменений страницы');
ta['ca-protect'] = new Array('=','Защитить страницу от изменений');
ta['ca-delete'] = new Array('d','Удалить эту страницу');
ta['ca-undelete'] = new Array('d','Восстановить исправления страницы, сделанные до того, как она была удалена');
ta['ca-move'] = new Array('m','Переименовать страницу');
ta['ca-watch'] = new Array('w','Добавить эту страницу в ваш список наблюдения');
ta['ca-unwatch'] = new Array('w','Удалить эту страницу из вашего списка наблюдения');
ta['search'] = new Array('f','Искать это слово');
ta['p-logo'] = new Array('','Заглавная страница');
ta['n-mainpage'] = new Array('z','Перейти на заглавную страницу');
ta['n-portal'] = new Array('','О проекте, о том, что вы можете сделать, где что находится');
ta['n-currentevents'] = new Array('','Список текущих событий');
ta['n-recentchanges'] = new Array('r','Список последних изменений');
ta['n-randompage'] = new Array('x','Посмотреть случайную страницу');
ta['n-help'] = new Array('','Справочник по проекту «{{SITENAME}}»');
ta['n-sitesupport'] = new Array('','Поддержите проект');
ta['t-whatlinkshere'] = new Array('j','Список всех страниц, которые ссылаются на эту страницу');
ta['t-recentchangeslinked'] = new Array('k','Последние изменения в страницах, которые ссылаются на эту страницу');
ta['feed-rss'] = new Array('','Трансляция в формате RSS для этой страницы');
ta['feed-atom'] = new Array('','Трансляция в формате Atom для этой страницы');
ta['t-contributions'] = new Array('','Список страниц, которые изменял этот участник');
ta['t-emailuser'] = new Array('','Отправить письмо этому участнику');
ta['t-upload'] = new Array('u','Загрузить изображения или мультимедиа-файлы');
ta['t-specialpages'] = new Array('q','Список служебных страниц');
ta['t-print']=new Array('', 'Версия без кнопок, пригодная для распечатки');
ta['t-permalink'] = new Array('', 'Ссылка на текущую версию этой статьи');
ta['ca-nstab-main'] = new Array('c','Содержание статьи');
ta['ca-nstab-user'] = new Array('c','Персональная страница участника');
ta['ca-nstab-media'] = new Array('c','Мультимедиа-файл');
ta['ca-nstab-special'] = new Array('','Это служебная страница, она недоступна для редактирования');
ta['ca-nstab-wp'] = new Array('a','Страница проекта');
ta['ca-nstab-image'] = new Array('c','Страница изображения');
ta['ca-nstab-mediawiki'] = new Array('c','Страница сообщения MediaWiki');
ta['ca-nstab-template'] = new Array('c','Страница шаблона');
ta['ca-nstab-help'] = new Array('c','Страница справки');
ta['ca-nstab-category'] = new Array('c','Страница категории');
function addLoadEvent(func)
{
if (window.addEventListener)
window.addEventListener("load", func, false);
else if (window.attachEvent)
window.attachEvent("onload", func);
}
//
// Замена неправильного заголовка правильным by SergV
//
// Все неправильные заголовки
title_restr_alerts = ["trestrictions_replace", "trestrictions_alert"];
// Только шаблон title
//title_restr_alerts = ["trestrictions_replace"];
function display_correct_title () {
var title_restr_alert1, a1;
if (document.getElementsByTagName && document.getElementById) {
for(var i=0; i < title_restr_alerts.length; i++) {
title_restr_alert1 = title_restr_alerts[i];
a1 = document.getElementById(title_restr_alert1);
if(a1) {
ct = document.getElementById("trestrictions_correct");
if(ct) {
document.getElementsByTagName("h1")[0].innerHTML = ct.innerHTML;
a1.style.display = "none";
document.getElementById("trestrictions_replaced").style.display = "block";
}
break;
}
}
}
}
addLoadEvent(display_correct_title);
// ============================================================
// BEGIN Dynamic Navigation Bars (experimantal)
// set up the words in your language
var NavigationBarHide = '[ Скрыть ]';
var NavigationBarShow = '[ Показать ]';
// set up max count of Navigation Bars on page,
// if there are more, all will be hidden
// NavigationBarShowDefault = 0; // all bars will be hidden
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
var NavigationBarShowDefault = 1;
// shows and hides content and picture (if available) of navigation bars
// Parameters:
// indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar)
{
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
if (!NavFrame || !NavToggle) {
return false;
}
// if shown now
if (NavToggle.firstChild.data == NavigationBarHide) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'none';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'none';
}
}
NavToggle.firstChild.data = NavigationBarShow;
// if hidden now
} else if (NavToggle.firstChild.data == NavigationBarShow) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'block';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'block';
}
}
NavToggle.firstChild.data = NavigationBarHide;
}
}
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
var indexNavigationBar = 0;
// iterate over all < div >-elements
for(
var i=0;
NavFrame = document.getElementsByTagName("div")[i];
i++
) {
// if found a navigation bar
if (NavFrame.className == "NavFrame") {
indexNavigationBar++;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
var NavToggleText = document.createTextNode(NavigationBarHide);
NavToggle.appendChild(NavToggleText);
// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
for(
var j=0;
j < NavFrame.childNodes.length;
j++
) {
if (NavFrame.childNodes[j].className == "NavHead") {
NavFrame.childNodes[j].appendChild(NavToggle);
}
}
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
// if more Navigation Bars found than Default: hide all
if (NavigationBarShowDefault < indexNavigationBar) {
for(
var i=1;
i<=indexNavigationBar;
i++
) {
toggleNavigationBar(i);
}
}
}
addLoadEvent(createNavigationBarToggleButton);
// END Dynamic Navigation Bars
// ============================================================
/* add menu for selecting subsets of secial characters */
/***** must match MediaWiki:Edittools *****/
function addCharSubsetMenu() {
var specialchars = document.getElementById('specialchars');
if (specialchars) {
var menu = "<select id=\"charsetBox\" style=\"display:inline\" onkeyup=\"chooseCharSubset(selectedIndex)\" onChange=\"chooseCharSubset(selectedIndex)\">";
menu += "<option>Ещё спецсимволы</option>";
menu += "<option>Отметки заготовок</option>";
menu += "<option>Греческий алфавит</option>";
menu += "<option>МФА (IPA)</option>";
menu += "<option>Матем./TeX</option>";
menu += "</select>";
specialchars.innerHTML = menu + specialchars.innerHTML;
/* default subset - try to use a cookie some day */
chooseCharSubset(0);
}
}
/* select subsection of special characters */
function chooseCharSubset(s) {
var l = document.getElementById('specialchars').getElementsByTagName('p');
for (var i = 0; i < l.length ; i++) {
l[i].style.display = i == s ? 'inline' : 'none';
l[i].style.visibility = i == s ? 'visible' : 'hidden';
}
}
addLoadEvent(addCharSubsetMenu);
var mpTitle = "Заглавная страница";
var isMainPage = (document.title.substr(0, document.title.lastIndexOf(" — ")) == mpTitle);
var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1));
if (isMainPage && !isDiff)
{
document.write('<style type="text/css">/*<![CDATA[*/ #siteSub, #contentSub, h1.firstHeading { display: none !important; } /*]]>*/</style>');
}
document.write('<script type="text/javascript" src="'
+ 'http://armor.kiev.ua/wiki/index.php?title=MediaWiki:Wikificator.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
/* Делаем ссылку "править" для нулевой секции */
var disable_zero_section = 0;
function edit_zero_section()
{
if((disable_zero_section !=1 ) && (document.getElementById('bodyContent').innerHTML.match('class=\"editsection\"')) && (!isMainPage))
document.getElementById('bodyContent').innerHTML = "<div class=\"editsection\" id=\"ca-edit-0\" style=\"float: right; margin-left: 5px;\">[<a href=\"http://armor.kiev.ua/wiki/index.php?title=" + document.title.substr(0, document.title.lastIndexOf(" — ")) + "&action=edit§ion=0\">править</a>]</div>" + document.getElementById('bodyContent').innerHTML;
}
addLoadEvent(edit_zero_section);
// Расширенный поиск
// Автор: ru:User:Не А
function SpecialSearchEnhanced()
{
var mainNode = document.getElementsByTagName("form");
if (!mainNode) return;
var searchValue = document.forms[0].search.value
var firstForm = mainNode[0];
var node = document.createElement('div');
var googleSearch = '<form action="http://www.google.com/custom" method="get" name="google" target="_blank" id="google">';
googleSearch += '<input type="hidden" name="hl" value="ru" />';
googleSearch += '<input type="hidden" name="domains" value="armor.kiev.ua" />';
googleSearch += '<input type="hidden" name="q" maxlength="2048" value="' + searchValue + '" />'
googleSearch += '<input type="hidden" name="sitesearch" value="armor.kiev.ua/wiki" />'
googleSearch += '<input type="button" value="Google-поиск" onclick="document.google.q.value = document.forms[0].search.value; this.form.submit();" style="width: 12em;" />'
googleSearch += '</form>'
var yandexSearch = '<form action="http://www.yandex.ru/yandsearch" method="get" name="yandex" target="_blank" id="yandex">';
yandexSearch += '<input type="hidden" name="text" maxlength="300" value="' + searchValue + '" />';
yandexSearch += '<input type="hidden" name="site" value="armor.kiev.ua/wiki" />';
yandexSearch += '<input type="hidden" name="ras" value="1" />'
yandexSearch += '<input type="hidden" name="site_manually" value="true" />'
yandexSearch += '<input type="hidden" name="server_name" value="БТ-энциклопедия" />'
yandexSearch += '<input type="button" value="Искать Яндексом" onclick="document.yandex.text.value = document.forms[0].search.value; this.form.submit();" style="width: 12em;" />'
yandexSearch += '</form>'
node.innerHTML = node.innerHTML + '<table style="margin-left: 75%; padding-left:4px;"><tr><td>' + yandexSearch + '</td></tr><tr><td>' + googleSearch + '</td></tr></table>';
firstForm.parentNode.insertBefore(node, firstForm.nextSibling);
}
if (wgPageName == "Служебная:Search") { addOnloadHook(SpecialSearchEnhanced); }
//============================================================
// Table generator
//============================================================
/**
*
* English: Generate an array using Mediawiki syntax
*
* @author: fr:user:dake (language conversion and new options added by en:user:Voice of All)
* @version: 0.1
*/
function generateTableau(nbCol, nbRow, border, styleHeader, styleLine, exfield, align, padding)
{
var code = "\n";
if (padding==false) padding=0;
else if (padding==true) padding=1;
code += '{| align="' + align + '" class="standard"\n';
code += '|+\n';
for (var i=1;i<nbCol+1;i++) code += '! |Столбец ' + i + '\n';
var items = 0;
for (var j=0;j<nbRow;j++) {
code += '|-----\n'
for (var i=0;i<nbCol;i++) code += '| ячейка\n';
}
code += '|+\n';
code += '|}\n';
insertTags('','', code);
}
/**
*
* English: Open a popup with parameters to generate an array.
* The number of rows/columns can be modified. Some additional
* parameters are related to templates available on :fr
*
* @author: fr:user:dake
* @version: 0.1
*/
function popupTable()
{
var popup = window.open('','name','height=180,width=300,scrollbars=yes');
javaCode = '<script type="text\/javascript">function insertCode(){';
javaCode += 'var row = parseInt(document.paramForm.inputRow.value); '
javaCode += 'var col = parseInt(document.paramForm.inputCol.value); '
javaCode += 'var bord = 0; '
javaCode += 'var styleHeader = false; '
javaCode += 'var styleLine = false; '
javaCode += 'var exfield = false; '
javaCode += 'var align = document.paramForm.inputAlign.value; '
javaCode += 'var padding = false; '
javaCode += 'window.opener.generateTableau(col,row,bord,styleHeader,styleLine,exfield,align,padding); '
javaCode += "alert('Таблица создана!'); "
javaCode += 'window.close(); '
javaCode += '}<\/script>';
popup.document.write('<html><head><title>Создание таблицы</title>');
popup.document.write('<script type="text\/javascript" src="\/skins\/common\/wikibits.js"><!-- wikibits js --><\/script>');
popup.document.write('<style type="text\/css" media="screen,projection">/*<![CDATA[*/ @import "\/skins\/monobook\/main.css?5"; /*]]>*/<\/style>');
popup.document.write(javaCode);
popup.document.write('</head><body>');
popup.document.write('<p>Введите параметры таблицы: </p>');
popup.document.write('<form name="paramForm">');
popup.document.write('Выравнивание: <input type="text" name="inputAlign" value="center" ><p>');
popup.document.write('Количество строк: <input type="text" name="inputRow" value="3" ><p>');
popup.document.write('Количество столбцов: <input type="text" name="inputCol" value="3" ><p>');
popup.document.write('</form">');
popup.document.write('<p><a href="javascript:insertCode()"> Вставить таблицу</a> |');
popup.document.write(' <a href="javascript:self.close()">Отмена (закрыть окно)</a></p>');
popup.document.write('</body></html>');
popup.document.close();
}
//Ressemble à la fonction de /skins-1.5/commons/wikibits.js pour insérer un autre lien que insertTags
function marque_tab()
{
var toolbar = document.getElementById('toolbar');
if (!toolbar) return false;
var textbox = document.getElementById('wpTextbox1');
if (!textbox) return false;
if (!document.selection && textbox.selectionStart == null)
return false;
var image = document.createElement("img");
image.width = 23;
image.height = 22;
image.src = 'http://armor.kiev.ua/wiki/skins/common/images/button_array.png';
image.border = 0;
image.alt = 'Таблица';
image.title = 'Создать таблицу';
image.style.cursor = "pointer";
image.onclick = function() {
popupTable();
return false;
}
toolbar.appendChild(image);
var image2 = document.createElement("img");
image2.width = 69;
image2.height = 22;
image2.src = 'http://armor.kiev.ua/wiki/skins/common/images/button-wikifikator.png';
image2.border = 0;
image2.alt = 'Викификатор';
image2.title = 'Викификатор';
image2.style.cursor = "pointer";
image2.onclick = function() {
Wikify();
return false;
}
toolbar.appendChild(image2);
}
addOnloadHook(marque_tab);
//Collapsible Tables and Divs, [[ВП:СБ]]
var autoCollapse = 2
var collapseCaption = 'скрыть'
var expandCaption = 'показать'
function collapsibleTables(){
var Table, HRow, THs, Header, btn, a, tblIdx = 0, colTables = []
var allTables = document.getElementsByTagName('table')
for (var i=0; Table = allTables[i]; i++){
if (!hasClass(Table, 'collapsible')) continue
if (!(HRow = Table.rows[0])) continue
THs = HRow.getElementsByTagName('th')
if (THs.length == 0) continue
Header = THs[THs.length-1] //last TH, not 1st like in en.wp
Table.id = 'collapsibleTable' + tblIdx
btn = document.createElement('span')
btn.style.styleFloat = btn.style.cssFloat = 'right'
btn.style.fontWeight = 'normal'
a = document.createElement('a')
a.id = 'collapseButton' + tblIdx
a.href = 'javascript:collapseTable(' + tblIdx + ');'
a.appendChild(document.createTextNode(collapseCaption))
btn.appendChild(document.createTextNode('['))
btn.appendChild(a)
btn.appendChild(document.createTextNode(']'))
Header.insertBefore(btn, Header.childNodes[0])
colTables[tblIdx++] = Table
}
for (var i=0; i < tblIdx; i++)
if ((tblIdx > autoCollapse && hasClass(colTables[i], 'autocollapse')) || hasClass(colTables[i], 'collapsed'))
collapseTable(i)
}
function collapseTable (idx){
var Table = document.getElementById('collapsibleTable' + idx)
var btn = document.getElementById('collapseButton' + idx)
if (!Table || !btn) return false
var Rows = Table.rows
var isShown = (btn.firstChild.data == collapseCaption)
btn.firstChild.data = isShown ? expandCaption : collapseCaption
var disp = isShown ? 'none' : Rows[0].style.display
for (var i=1; i < Rows.length; i++)
Rows[i].style.display = disp
}
var NavigationBarHide = '[' + collapseCaption + ']'
var NavigationBarShow = '[' + expandCaption + ']'
var NavigationBarShowDefault = autoCollapse
function collapsibleDivs(){
var navIdx = 0, colNavs = [], i, NavFrame
var divs = document.getElementById('content').getElementsByTagName('div')
for (i=0; NavFrame = divs[i]; i++) {
if (!hasClass(NavFrame, 'NavFrame')) continue
NavFrame.id = 'NavFrame' + navIdx
var a = document.createElement('a')
a.className = 'NavToggle'
a.id = 'NavToggle' + navIdx
a.href = 'javascript:collapseDiv(' + navIdx + ');'
a.appendChild(document.createTextNode(NavigationBarHide))
// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
for (var j=0; j < NavFrame.childNodes.length; j++)
if (hasClass(NavFrame.childNodes[j], 'NavHead'))
NavFrame.childNodes[j].appendChild(a)
colNavs[navIdx++] = NavFrame
}
for (i=0; i < navIdx; i++)
if ((navIdx > NavigationBarShowDefault && !hasClass(colNavs[i], 'expanded')) || hasClass(colNavs[i], 'collapsed'))
collapseDiv(i)
}
function collapseDiv(idx) {
var div = document.getElementById('NavFrame' + idx)
var btn = document.getElementById('NavToggle' + idx)
if (!div || !btn) return false
var isShown = (btn.firstChild.data == NavigationBarHide)
btn.firstChild.data = isShown ? NavigationBarShow : NavigationBarHide
var disp = isShown ? 'none' : 'block'
for (var child = div.firstChild; child != null; child = child.nextSibling)
if (hasClass(child, 'NavPic') || hasClass(child, 'NavContent'))
child.style.display = disp
}