MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
CryptoUser (talk | contribs) No edit summary |
CryptoUser (talk | contribs) No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. | /* Any JavaScript here will be loaded for all users on every page load | ||
mw.loader.load('/wiki/en/User:CryptoUser/yoficator.js&action=raw&ctype=text/javascript'); // linkback [[User:CryptoUser/yoficator.js]] | |||
// Edit Summary buttons | // Edit Summary buttons | ||
Line 198: | Line 200: | ||
} | } | ||
importScript( | importScript('MediaWiki:LanguageSelection.js'); | ||
importScript('MediaWiki:Input.js'); |
Latest revision as of 08:54, 3 September 2024
/* Any JavaScript here will be loaded for all users on every page load
mw.loader.load('/wiki/en/User:CryptoUser/yoficator.js&action=raw&ctype=text/javascript'); // linkback [[User:CryptoUser/yoficator.js]]
// Edit Summary buttons
function SummaryButtons(){
var wpSummary = document.getElementById('wpSummary')
if (!wpSummary) return
wpSummaryBtn = document.createElement('span') //global var
wpSummaryBtn.id = 'userSummaryButtonsA'
wpSummary.parentNode.insertBefore(wpSummaryBtn, wpSummary.nextSibling)
addSumButton('викиф.', 'викификация', 'Произведена викификация')
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.querySelector("input[name='wpSummary']");
if (wpSummary.value.indexOf(text) != -1) return
if (wpSummary.value.match(/[^,; \/]$/)) wpSummary.value += ','
if (wpSummary.value.match(/[^ ]$/)) wpSummary.value += ' '
wpSummary.value += text
}
/*Добавляем кнопку викификатора*/
if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) {
mw.loader.load( '//ru.wikipedia.org/w/index.php?title=MediaWiki:Gadget-wikificator.js&action=raw&ctype=text/javascript' );
}
var customizeToolbar = function() {
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'advanced',
'group': 'format',
'tools': {
'wikify': {
label: 'Викификатор',
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/0/06/Wikify-toolbutton.png',
action: {
type: 'callback',
execute: function(context){
Wikify();
}
}
}
}
} );
};
if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) {
mw.loader.using( 'user.options', function () {
if ( mw.user.options.get('usebetatoolbar') ) {
mw.loader.using( 'ext.wikiEditor.toolbar', function () {
$(document).ready( customizeToolbar );
} );
}
} );
}
//Collapsiblе:
var NavigationBarShowDefault = 2
var NavigationBarHide = '[hide]'
var NavigationBarShow = '[show]'
function collapsibleTables(){
var Table, HRow, HCell, btn, a, tblIdx = 0, colTables = []
var allTables = document.getElementsByTagName('table')
for (var i=0; Table = allTables[i]; i++){
if (!$(Table).hasClass('collapsible')) continue
if (!(HRow=Table.rows[0])) continue
if (!(HCell=HRow.getElementsByTagName('th')[0])) continue
Table.id = 'collapsibleTable' + tblIdx
btn = document.createElement('span')
btn.style.cssText = 'float:right; font-weight:normal; font-size:smaller'
a = document.createElement('a')
a.id = 'collapseButton' + tblIdx
a.href = 'javascript:collapseTable(' + tblIdx + ');'
a.style.color = HCell.style.color
a.appendChild(document.createTextNode(NavigationBarHide))
btn.appendChild(a)
HCell.insertBefore(btn, HCell.childNodes[0])
colTables[tblIdx++] = Table
}
for (var i=0; i < tblIdx; i++)
if ((tblIdx > NavigationBarShowDefault && $(colTables[i]).hasClass('autocollapse')) || $(colTables[i]).hasClass('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 == NavigationBarHide)
btn.firstChild.data = isShown ? NavigationBarShow : NavigationBarHide
var disp = isShown ? 'none' : Rows[0].style.display
for (var i=1; i < Rows.length; i++)
Rows[i].style.display = disp
}
function collapsibleDivs(){
var navIdx = 0, colNavs = [], i, NavFrame
var divs = document.getElementById('content').getElementsByTagName('div')
for (i=0; NavFrame = divs[i]; i++) {
if (!$(NavFrame).hasClass('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))
for (var j=0; j < NavFrame.childNodes.length; j++)
if ($(NavFrame.childNodes[j]).hasClass('NavHead'))
NavFrame.childNodes[j].appendChild(a)
colNavs[navIdx++] = NavFrame
}
for (i=0; i < navIdx; i++)
if ((navIdx > NavigationBarShowDefault && !$(colNavs[i]).hasClass('expanded')) || $(colNavs[i]).hasClass('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 ($(child).hasClass('NavPic') || $(child).hasClass('NavContent'))
child.style.display = disp
}
function newSectionLink(){
var plus = document.getElementById('ca-addsection')
if (!plus) return
var custom = document.getElementById('add-custom-section')
if (!custom) return
plus.firstChild.setAttribute('href', custom.getElementsByTagName('a')[0].href)
}
function editZeroSection(){
var body = document.getElementById('bodyContent')
if (!body) return
var h2s = body.getElementsByTagName('H2')
var h2 = h2s[0]
if (!h2) return
if (h2.parentNode.id == 'toctitle') h2 = h2s[1]
if (!h2) return
var span = h2.firstChild
if (!span || span.className != 'editsection') return
var zero = span.cloneNode(true)
body.insertBefore(zero, body.firstChild)
var a = zero.getElementsByTagName('a')[0]
if (a.href.indexOf('§ion=T') == -1 ) a.title = a.title.replace(/:.*$/,': 0')
else a.title = 'Править секцию: 0'
a.href = mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&action=edit§ion=0';
}
//Execution
if (mw.config.get('wgCanonicalNamespace') == 'Special') {
switch (mw.config.get('wgCanonicalSpecialPageName')) {
case 'Upload': importScript('MediaWiki:Upload.js'); break
}
} else if (mw.config.get('wgAction') != 'history') {
$(editZeroSection)
$(collapsibleDivs)
$(collapsibleTables)
if (navigator.appName=='Microsoft Internet Explorer' && document.createStyleSheet) {
document.createStyleSheet().addRule('.IPA', 'font-family: "Doulos SIL", "Charis SIL", Gentium, "DejaVu Sans", Code2000, "TITUS Cyberbit Basic", "Arial Unicode MS", "Lucida Sans Unicode", "Chrysanthi Unicode";')
}
if (mw.config.get('wgNamespaceNumber') != 0) {
$(newSectionLink)
}
if (mw.config.get('wgAction')=='edit' || mw.config.get('wgAction')=='submit') importScript('MediaWiki:Editpage.js')
}
importScript('MediaWiki:LanguageSelection.js');
importScript('MediaWiki:Input.js');