MediaWiki:Gadget-collapserefs.js

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.

  • Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
  • Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
  • Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5.
$(function() {

    if( /MSIE [1-6]\./.test(navigator.userAgent) ) return; // makes no sense (max-height)
    if( /(\?|&)printable=yes/.test(document.URL) ) return;

    var foundReflist;
    mw.util.$content.find('div').each( function(i, div){
        if( ! /\bref(list\d?|erences-(small|scroll))\b/.test(div.className) ) return;
        if( div.clientHeight < ((div.style.maxHeight && div.style.maxHeight.replace(/[^0-9]+/g, '')) ||
            div.style.height.replace(/[^0-9]+/g, '') || 300)) return;
        foundReflist = true; 
        
        $(div).wrap('<div class="reflist-collapsible"><div class="reflist-collapsible-wrapper"></div></div>');
        $('<p class="reflist-collapsible-p" />')
            .append(
                $('<a href=# class="reflist-collapsible-link" title="Великі блоки приміток можна зменшувати" />')
                .click(changeState)
            )
            .insertBefore($(div).parent());
    });
    
    if (!foundReflist) return;
    
    var cookie = $.cookie('refcoll');
    collapseState = cookie == 'max' ? 'min' : 'max';
    
     
    mw.util.addCSS('.reflist-collapsible-p { font-size: 80%; width: 30%; margin: 1em 2em }\
                    * html .reflist, * html .references-scroll, * html .references-small \
                    { display: inline-block /* for clientHeight in IE */ }');
    var collapseCSS = mw.util.addCSS('@media screen { \
        div.reflist-collapsible-wrapper { \
            overflow-x: hidden; \
            overflow-y: auto; \
            padding-right: 0.5em; \
            max-height: 320px; \
        } \
    }');

    changeState();

    function changeState() {
        collapseState = collapseState == 'min' ? 'max' : 'min';
        $.cookie('refcoll', collapseState);
   
        if (collapseState == 'min'){
            collapseCSS.disabled = false;
            text = '↓ Показувати повністю'; // when minimized
        } else {
            collapseCSS.disabled = true;
            text = '↑ Згорнути список'; // when maximized
        }
        
        $('.reflist-collapsible-link').text(text);
        return false;
    }
});