MediaWiki:Common.js
Материал из ПокеВики
/* Размещённый здесь 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 = 'Wikificator' i.onclick = Wikify i.style.cursor = 'pointer' toolbar.appendChild(i) } if (wgAction == 'edit' || wgAction == 'submit'){ document.write('<script type="text/javascript" src="/index.php?title=MediaWiki:Wikificator.js&action=raw&ctype=text/javascript"><\/script>') addOnloadHook(addWikifButton) } //Кнопки быстрого описания правки //список кнопок function SummaryButtons(){ var wpSummary = document.getElementById('wpSummary') if (!wpSummary || (wpSummary.form.wpSection && wpSummary.form.wpSection.value == 'new')) return wpSummaryBtn = document.createElement('span') //global var wpSummaryBtn.id = 'userSummaryButtonsA' // +Рекомендация var wpSummaryBtnRec = document.createElement('i') wpSummaryBtnRec.appendChild(document.createTextNode('Пожалуйста, если вы не торопитесь, опишите вашу правку подробно: например, не «дополнение», а «+персонажи».')) wpSummaryBtnRec.appendChild(document.createElement('br')) wpSummaryBtn.appendChild(wpSummaryBtnRec) wpSummary.parentNode.insertBefore(wpSummaryBtn, wpSummary.nextSibling) wpSummary.parentNode.insertBefore(document.createElement('br'), wpSummary.nextSibling) addSumButton('викиф.', 'викификация', 'Произведена викификация') addSumButton('оформл.', 'оформление', 'Оформление') addSumButton('стиль', 'стилевые правки', 'Стилевые правки') addSumButton('орфогр.', 'орфография', 'Поправлена орфография') addSumButton('пункт.', 'пунктуация', 'Изменена пунктуация') // addSumButton('интервики', 'интервики', 'Изменены межъязыковые ссылки (интервики)') addSumButton('кат.', 'правка категорий', 'Изменены категории') addSumButton('шаб.', 'шаблон', 'Добавлен / изменён шаблон') addSumButton('к удал.', 'к удалению', 'Страница предложена к удалению') addSumButton('доп.', 'дополнение', 'Добавлены новые сведения') addSumButton('иллюстрация', 'иллюстрация', 'Размещена иллюстрация') addSumButton('обнов.', 'обновление данных', 'Обновлены устаревшие данные') addSumButton('разметка', 'правка разметки', 'Изменение разметки') } //код вставки кнопок быстрого описания function addSumButton(name, text, title) { var btn = document.createElement('a') btn.appendChild(document.createTextNode(name)) btn.title = title btn.onclick = function(){insertSummary(text)} wpSummaryBtn.appendChild(btn) } //код вставки описания function insertSummary(text) { var wpSummary = document.getElementById('wpSummary') if (wpSummary.value.indexOf(text) != -1) return if (wpSummary.value.match(/[^,; \/]$/)) wpSummary.value += ',' if (wpSummary.value.match(/[^ ]$/)) wpSummary.value += ' ' wpSummary.value += text } //вызов функции вставки кнопок быстрого описания правки при загрузке страницы addOnloadHook(SummaryButtons) //перемещение ссылок "править" влево, к заголовку секции, для борьбы с багом движка addOnloadHook(function() { if (typeof oldEditsectionLinks != 'undefined' && oldEditsectionLinks) return; var spans = document.getElementsByTagName("span"); for (var i=0; i<spans.length; i++) { var span = spans[i]; if (span.className != "editsection") continue; span.style.fontSize = "x-small"; span.style.fontWeight = "normal"; span.style.styleFloat = "none"; // IE-Fix für die folgende Zeile span.style.cssFloat = "none"; span.style.marginLeft = "0px"; span.parentNode.appendChild(document.createTextNode(" ")); span.parentNode.appendChild(span); } }); //Скрываемый текст var NavigationBarHide = '[скрыть]' var NavigationBarShow = '[показать]' var hasClass = (function (){ var reCache = {} return function (element, className){ return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className) } })() 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(NavigationBarShow)) 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 (hasClass(colNavs[i], 'expanded')) 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 } //вызов функций для скрываемого текста addOnloadHook(collapsibleDivs)