MediaWiki:Gadget-appendix.js

Uit Wikipedia, de vrije encyclopedie

Opmerking: nadat u de wijzigingen hebt gepubliceerd is het wellicht nodig uw browsercache te legen.

  • Firefox / Safari: houd Shift ingedrukt terwijl u op Vernieuwen klikt of druk op Ctrl-F5 of Ctrl-R (⌘-Shift-R op een Mac)
  • Google Chrome: druk op Ctrl-Shift-R (⌘-Shift-R op een Mac)
  • Internet Explorer / Edge: houd Ctrl ingedrukt terwijl u op Vernieuwen klikt of druk op Ctrl-F5
  • Opera: druk op Ctrl-F5.
/**
 * Geef appendixsecties onderaan een artikel een achtergrondkleur, ter onderscheiding
 * van de reguliere artikeltekst.
 * 
 * Appendixsecties zijn secties die een kopje ala 'Bronnen', 'Noten' of 'Referenties'
 * hebben, dat direct gevolgd wordt door een ongeordende lijst of notenlijst.
 */
$(function () {

if (
	// Hoofdpagina overslaan.
	mw.config.get( 'wgIsMainPage' ) ||
	// Niet-artikelen overslaan.
	$.inArray( mw.config.get('wgNamespaceNumber'), mw.config.get('wgContentNamespaces') ) === -1 ||
	// Appendixsjabloon aanwezig overslaan.
	$( '.appendix' ).length > 0 ||
	// Minerva-skin overslaan.
	mw.config.get('skin') === 'minerva'
) {
	return;
}

// Mogelijke appendixkopjes.
var appendixHeadingSelectors = [
	'[id^=Bronnen]',
	'[id^=Noten]',
	'[id^=Voetnoten]',
	'[id^=Referentie]',
	'[id^=Verwijzing]',
	'[id^=Bronvermelding]',
	'[id^=Verder_lezen]',
	'[id^=Literatuur]',
	'[id^=Geraadpleegde_literatuur]',
	'[id^=Naslagwerk]',
	'[id^=Externe_link]',
	'[id^=Weblink]',
	'[id=Appendix]',
	'[id=Bron]',
	'[id=Voetnoot]',
	'[id=Bibliografie]',
	'[id$=_bronnen]',
	'[id$=_noten]',
	'[id$=_referenties]',
	'[id$=_literatuur]',
];

// Alle h2-kopjes.
var $h2s = $( 'h2' );

// Appendixkopjes.
var $appendixHs = $( appendixHeadingSelectors.join(', '), $h2s ).parent( 'h2' ).filter(function() {

	// Filter op kopjes die direct gevolgd worden door een lijst (ul, .reflist of .references).
	return $( this ).nextUntil(
		'h2, ul, .reflist, .references',
		':not(h3, style, .interProject, .interProject-klein)'
	).length === 0;
});

if ( $appendixHs.length === 0 ) {
	return;
}

$appendixHs = $( $appendixHs.get().reverse() );
$appendixEnd = $appendixHs
	.first()
	.nextUntil( 'h2, table, div:not(.reflist, .interProject, .interProject-klein)' )
	.last()
	.next();

// Loop door appendixkopjes, van onder naar boven.
$appendixHs.each(function( i ) {

	// Volgende h2-kopje.
	h2Next = $h2s.get( $h2s.index( this ) + 1 );
	// Volgende appendixkopje.
	aHeadingNext = $appendixHs[ i - 1 ];

	// Als appendixkopje niet meer aansluit, dan stoppen.
	if ( aHeadingNext && aHeadingNext !== h2Next ) {

		$appendixHs = $appendixHs.slice(0, i);

		return false;
	}
});

// Eerste appendixkopje mag niet 'Bibliografie' zijn.
if ( $( ':first-child', $appendixHs.last()[ 0 ] ).prop('id') === 'Bibliografie' ) {
	$appendixHs = $appendixHs.slice( 0, -1 );
}

// Wrap appendixsecties in een div.
$appendixHs.last().prev().nextUntil($appendixEnd).wrapAll('<div id="appendix" class="toccolours" />');

}());