MediaWiki:Gadget-minih2.js

Z Wikipedii, wolnej encyklopedii

Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.

  • Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
  • Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
  • Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
  • Opera: Naciśnij klawisze Ctrl+F5.
mw.messages.set({
	'minih2-name': 'Mini H2',
	'minih2-description-page': 'Wikipedia:Mini H2',
	'minih2-max-size': 'Maksymalny rozmiar tekstu w artykule',
	'minih2-max-average': 'Maksymalny średni rozmiar sekcji',
	'minih2-debug': 'debug'
});

mw.loader.using('ext.gadget.gConfig', function(){
	
// settings
gConfig.register('minih2', {name: mw.msg('minih2-name'), descriptionPage: mw.msg('minih2-description-page')}, [
	{
		name: 'maxSize',
		desc: mw.msg('minih2-max-size'),
		type: 'integer',
		deflt: 10000,
		legacy: [window, 'wp_minih2_max_size']
	},
	{
		name: 'maxAverage',
		desc: mw.msg('minih2-max-average'),
		type: 'integer',
		deflt: 2000,
		legacy: [window, 'wp_minih2_max_average']
	},
	{
		name: 'debug',
		desc: mw.msg('minih2-debug'),
		type: 'boolean',
		deflt: false,
		legacy: [window, 'wp_minih2_debug']
	}
]);

// action
$(document).ready(function()
{
	var textSize = $("#bodyContent").text().length;
	var sections = $("body.ns-0 #bodyContent h2, body.ns-2 #bodyContent h2").length;
	var sectionsH3 = $("body.ns-0 #bodyContent h3, body.ns-2 #bodyContent h3").length;
	var average = Math.round(textSize/(sections+1));
	var suggestion = (sectionsH3 === 0) && (sections > 0) && (textSize < gConfig.get('minih2', 'maxSize') && average < gConfig.get('minih2', 'maxAverage'));

	if (suggestion)
	{
		// disable the bottom line in the second level heading sections
		// let know that there is <h2> tag in toc section,
		// but it does not consits of the line so the code does not hurt it
		$("h2").css("border-bottom-width", "0");
		
		// make the font size of the heading text smaller (default is 21px)
		$("h2 span.mw-headline").css("font-size", "18px");
	}

	if (gConfig.get('minih2', 'debug')) {
		var before = document.getElementById( 'pt-userpage' );
		var inside = before.parentNode;
	
		var indicator1 = document.createElement( 'li' );
		indicator1.innerHTML = 'H3: ' + (sectionsH3 ? "YES" : "NO");
		inside.insertBefore( indicator1, before );
	
		var indicator2 = document.createElement( 'li' );
		indicator2.innerHTML = 'text size: ' + textSize + ' limit: ' +  gConfig.get('minih2', 'maxSize');
		inside.insertBefore( indicator2, before );
	
		var indicator3 = document.createElement( 'li' );
		indicator3.innerHTML = 'sections: ' + (1+sections);
		inside.insertBefore( indicator3, before );
	
		var indicator4 = document.createElement( 'li' );
		indicator4.innerHTML = 'average: ' + average + ' limit: ' + gConfig.get('minih2', 'maxAverage');
		inside.insertBefore( indicator4, before );
	
		var indicator5 = document.createElement( 'li' );
		indicator5.innerHTML = 'suggestion: ' + (suggestion ? "<img src=https://upload.wikimedia.org/wikipedia/commons/thumb/6/61/Crystal_Clear_app_clean.svg/15px-Crystal_Clear_app_clean.svg.png>" : "<img src=https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Crystal_Clear_action_button_cancel.svg/10px-Crystal_Clear_action_button_cancel.svg.png>");
		inside.insertBefore( indicator5, before );
	}
});

})