422
правки
Godville (обсуждение | вклад) Нет описания правки |
Godville (обсуждение | вклад) (Отмена правки 160780, сделанной Godville (обсуждение)) Метка: отмена |
||
| Строка 4: | Строка 4: | ||
if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) { | if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) { | ||
mw.loader.load( ' | mw.loader.load( '/index.php?title=MediaWiki:Gadget-wikificator.js&action=raw&ctype=text/javascript' ); | ||
} | } | ||
| Строка 36: | Строка 36: | ||
} | } | ||
} ); | } ); | ||
} | |||
function addWikifButton() { | |||
var toolbar = document.getElementById('toolbar') | |||
if (!toolbar) return | |||
var i = document.createElement('img') | |||
i.src = '//upload.wikimedia.org/wikisource/ru/d/d1/Button-wikifikator.png' | |||
i.alt = i.title = 'викификатор' | |||
i.onclick = Wikify | |||
i.style.cursor = 'pointer' | |||
toolbar.appendChild(i) | |||
} | |||
//Collapsiblе: [[ВП:СБ]] | |||
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 && hasClass(colTables[i], 'autocollapse')) || hasClass(colTables[i], 'collapsed')) | |||
collapseTable(i) | |||
} | |||
mw.hook( 'wikipage.content' ).add( collapsibleTables ); | |||
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++) | |||
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) | |||
} | |||
mw.hook( 'wikipage.content' ).add( collapsibleDivs ); | |||
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 | |||
} | } | ||