Амедиавики:Collapserefs.js
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
var collapseCSSmin, collapseCSSmax, collapseState;
function collapseRefs() {
if ( navigator.userAgent.match( /MSIE [1-6]\./ ) ) {
// makes no sense (max-height)
return;
}
if ( document.URL.match( /(\?|&)printable=yes/ ) ) {
return;
}
function done() {
collapseState = collapseState == 'min' ? 'max' : 'min';
document.cookie = 'refcoll=' + collapseState;
var text;
if ( collapseState == 'min' ) {
collapseCSSmax.disabled = true;
collapseCSSmin.disabled = false;
text = '↓ Показывать полностью'; // when minimized
} else {
collapseCSSmax.disabled = false;
collapseCSSmin.disabled = true;
text = '↑ Показывать компактно'; // when maximized
}
for ( var i = 0; i < links.length; i++ ) {
links[i].innerHTML = text;
}
return false;
}
var divs = document.getElementsByTagName( 'div' );
var reflists = [];
for ( var i = 0; i < divs.length; i++ ) {
if ( divs[i].className.match( /\bref(list\d?|erences-(small|scroll))\b/ ) ) {
if (
divs[i].clientHeight >= ( ( divs[i].style.maxHeight && divs[i].style.maxHeight.replace( /[^0-9]+/g, '' ) ) ||
divs[i].style.height.replace( /[^0-9]+/g, '' ) || 300 )
)
{
reflists[reflists.length] = divs[i];
}
}
}
if ( reflists.length === 0 ) {
return;
}
var cookie = document.cookie.match( /(^|; )refcoll=(.*?)(;|$)/ );
// will be changed later by done()
if ( cookie ) {
collapseState = unescape( cookie[2] ) == 'max' ? 'min' : 'max';
} else {
collapseState = 'min';
}
var links = [];
for ( i = 0; i < reflists.length; i++ ) {
var p = document.createElement( 'p' );
p.className = 'collapse-refs-p';
var a = document.createElement( 'a' );
a.href = '#';
a.onclick = done;
a.className = 'collapse-refs-link';
a.title = 'Большие блоки с примечаниями можно уменьшать';
p.appendChild( a );
reflists[i].parentNode.insertBefore( p, reflists[i] );
links[links.length] = a;
}
mw.util.addCSS(
'.reflist p.collapse-refs-p, .reflist1 p.collapse-refs-p,\
.reflist2 p.collapse-refs-p, .reflist3 p.collapse-refs-p,\
.reflist4 p.collapse-refs-p { display: none }\
.collapse-refs-p { font-size: 80%; width: 30%; margin: 1em 2em }\
* html .reflist, * html .reflist1, * html .reflist2, * html .reflist3, \
* html .reflist4, * html .references-scroll, * html .references-small \
{ display: inline-block /* for clientHeight in IE */ }'
);
collapseCSSmin = mw.util.addCSS(
'.reflist, .reflist1, .reflist2, .reflist3, \
.reflist4, .references-scroll, .references-small \
{ max-height: 300px; overflow: auto; margin: 0 !important; padding: 0 !important }'
);
collapseCSSmax = mw.util.addCSS(
'.reflist, .reflist1, .reflist2, .reflist3, \
.reflist4, .references-scroll \
{ height: auto !important; max-height: none !important; \
overflow: visible !important; margin: 0 !important; padding: 0 !important }'
);
collapseCSSmin.disabled = collapseCSSmax.disabled = true;
done();
}
mw.loader.using( 'mediawiki.util', function () {
$( document ).ready( collapseRefs );
} );