MediaWiki:Common.js: различия между версиями
Перейти к навигации
Перейти к поиску
ЗаяцВолк (обсуждение | вклад) (Содержимое страницы заменено на «→ищу косяк с редиректами: ») Метки: замена отменено |
ЗаяцВолк (обсуждение | вклад) м (Откат правок ЗаяцВолк (обсуждение) к последней версии Fox) Метка: откат |
||
Строка 1: | Строка 1: | ||
/* | /* Размещённый здесь JavaScript код будет загружаться всем пользователям при обращении к каждой странице */ | ||
function includeScript(page, project) { | |||
var url = '/index.php?title=' + encodeURIComponent(page) + '&action=raw&ctype=text/javascript'; | |||
if (project) url = 'http://' + project + url; | |||
mw.loader.load(url); | |||
} | |||
if ((mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit') && mw.config.get('wgCanonicalNamespace') != 'Special') | |||
includeScript('MediaWiki:Editpage.js'); | |||
/*Collapsible stuff. Стырено из википедии */ | |||
var NavigationBarShowDefault = 2 | |||
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 collapsibleTables(){ | |||
var Table, HRow, HCell, 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 | |||
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 && i > 0 && 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 == 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 (!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)) | |||
for (var j=0; j < NavFrame.childNodes.length; j++) { | |||
var nvChild = NavFrame.childNodes[j] | |||
if (hasClass(nvChild, 'NavHead')) { | |||
nvChild.appendChild(a) | |||
} else { | |||
// uglyhack for CollapsedSection | |||
if (nvChild.tagName && (nvChild.tagName.charAt(0) == 'H')) { | |||
var nvSubChildren = nvChild.getElementsByTagName('SPAN') | |||
for (var u=0; u < nvSubChildren.length; u++) { | |||
var nvSubChild = nvSubChildren[u] | |||
if (hasClass(nvSubChild, 'NavHead')) { | |||
nvSubChild.appendChild(a) | |||
} | |||
} | |||
} | |||
} | |||
} | |||
colNavs[navIdx++] = NavFrame | |||
} | |||
for (i=0; i < navIdx; i++) | |||
if ((navIdx > NavigationBarShowDefault && i > 0 && !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 | |||
} | |||
if (mw.config.get('wgAction') != 'history'){ | |||
jQuery(document).ready(collapsibleDivs) | |||
jQuery(document).ready(collapsibleTables) | |||
} | |||
/*WikiEditor/Викификатор*/ | |||
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 ); | |||
} ); | |||
} | |||
} ); | |||
} |
Версия 14:48, 14 октября 2023
/* Размещённый здесь JavaScript код будет загружаться всем пользователям при обращении к каждой странице */ function includeScript(page, project) { var url = '/index.php?title=' + encodeURIComponent(page) + '&action=raw&ctype=text/javascript'; if (project) url = 'http://' + project + url; mw.loader.load(url); } if ((mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit') && mw.config.get('wgCanonicalNamespace') != 'Special') includeScript('MediaWiki:Editpage.js'); /*Collapsible stuff. Стырено из википедии */ var NavigationBarShowDefault = 2 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 collapsibleTables(){ var Table, HRow, HCell, 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 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 && i > 0 && 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 == 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 (!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)) for (var j=0; j < NavFrame.childNodes.length; j++) { var nvChild = NavFrame.childNodes[j] if (hasClass(nvChild, 'NavHead')) { nvChild.appendChild(a) } else { // uglyhack for CollapsedSection if (nvChild.tagName && (nvChild.tagName.charAt(0) == 'H')) { var nvSubChildren = nvChild.getElementsByTagName('SPAN') for (var u=0; u < nvSubChildren.length; u++) { var nvSubChild = nvSubChildren[u] if (hasClass(nvSubChild, 'NavHead')) { nvSubChild.appendChild(a) } } } } } colNavs[navIdx++] = NavFrame } for (i=0; i < navIdx; i++) if ((navIdx > NavigationBarShowDefault && i > 0 && !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 } if (mw.config.get('wgAction') != 'history'){ jQuery(document).ready(collapsibleDivs) jQuery(document).ready(collapsibleTables) } /*WikiEditor/Викификатор*/ 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 ); } ); } } ); }