MediaWiki:Gadget-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.
$(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 
   $('<p class=collapse-refs-p />')
   .append(
	 $('<a href=# class=collapse-refs-link title="Большие блоки с примечаниями можно уменьшать" />')
	 .click(changeState)
    )
   .insertBefore(div)
 }) 
 if( !foundReflist ) return 
 
 var cookie = document.cookie.match(/(^|; )refcoll=(.*?)(;|$)/)
 var collapseState = 'min'
 if( cookie ) collapseState = unescape(cookie[2]) == 'max' ? 'min' : 'max'
 
 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 */ }')
 var collapseCSSmin = mw.util.addCSS('.reflist, .reflist1, .reflist2, .reflist3, \
  .reflist4, .references-scroll, .references-small \
  { max-height: 300px; overflow: auto; margin: 0 !important; padding: 0 !important }')
 var 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

 changeState()

 function changeState() {
   collapseState = collapseState == 'min' ? 'max' : 'min'
   document.cookie = 'refcoll=' + collapseState
   if( collapseState == 'min' ){
     collapseCSSmax.disabled = true
     collapseCSSmin.disabled = false
     text = '↓ Показывать полностью' // when minimized
   }else{
     collapseCSSmax.disabled = false
     collapseCSSmin.disabled = true
     text = '↑ Показывать компактно' // when maximized
   }
   $('.collapse-refs-link').text(text)
   return false
 }
 
})