MediaWiki:Gadget-collapserefs.js

Վիքիպեդիայից՝ ազատ հանրագիտարանից

Ծանուցում. Հիշելուց հետո կատարված փոփոխությունները տեսնելու համար մաքրեք ձեր զննարկիչի հիշապահեստը. Mozilla / Firefox / Safari՝ Ctrl+Shift+R (Cmd+Shift+R Mac OS X-ում) Konqueror՝ F5 Opera՝ Tools→Preferences ընտրացանկից։ Internet Explorer՝ Ctrl+F5

mw.hook('wikipage.content').add(function() {

if (!(mw.config.get('wgIsArticle') ||
		mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit') ||
	/MSIE [1-6]\./.test(navigator.userAgent) ||  // makes no sense (max-height)
	/(\?|&)printable=yes/.test(document.URL))
{
	return;
}

var cookie = document.cookie.match(/(?:^|; )refcoll=(.*?)(?:;|$)/);
var collapseState = cookie && unescape(cookie[1]) == 'min' ? 'min' : 'max';

var foundReflist;
$('#mw-content-text').find('.references-small').each(function (i, el) {
	if (el.clientHeight <= (
			el.style.maxHeight && el.style.maxHeight.replace(/[^0-9]+/g, '') ||
			el.style.height.replace(/[^0-9]+/g, '') ||  // clientHeight меньше height, если есть
			                                            // горизонтальная полоса прокрутки
			300) ||
		el.clientHeight > el.parentNode.clientHeight)  // когда примечания уже обёрнуты в меньший
		                                               // по высоте блок (хотя такое оформление спорно)
	{
		return;
	}
	foundReflist = true;
	
	if (collapseState == 'min') {
		$(el).addClass('references-compact');
	}
	$('<p class="collapse-refs" />')
		.append(
			$('<a href="#" class="collapse-refs-link" title="Большие блоки с примечаниями можно уменьшать" />')
				.text(collapseState == 'max' ? '↑ Ցուցադրել հավաքված' : '↓ Ցուցադրել ամբողջությամբ')
				.click(changeState)
		)
		.insertBefore(el);
});
if (!foundReflist) return;

function changeState(e) {
	e.preventDefault();
	
	collapseState = collapseState == 'max' ? 'min' : 'max';
	if (collapseState == 'max') {  // when maximized
		$('.collapse-refs-link')
			.text('↑ Ցուցադրել հավաքված')
			.parent().next().removeClass('references-compact');
	} else {                       // when minimized
		$('.collapse-refs-link')
			.text('↓ Ցուցադրել ամբողջությամբ')
			.parent().next().addClass('references-compact');
	}
	
	var cookieDate = new Date($.now() + 1000 * 60 * 60 * 24 * 90).toGMTString();
	document.cookie = 'refcoll=' + collapseState + '; expires=' + cookieDate + '; path=/';
}

});