MediaWiki:Common.js

Nederlandse ShoutWiki
Jump to navigation Jump to search

Opmerking: nadat u de wijzigingen hebt opgeslagen 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: houd Ctrl ingedrukt terwijl u op Vernieuwen klikt of druk op Ctrl-F5
  • Opera: ga naar Menu → Instellingen (Opera → Voorkeuren op een Mac) en daarna naar Privacy & beveiliging → Browsegegevens wissen... → Tijdelijk opgeslagen afbeeldingen en bestanden.
/* JavaScript die hier wordt geplaatst heeft invloed op alle pagina's voor alle gebruikers */

importScript( 'MediaWiki:Functions.js' );

// Standard summaries on edit page (?action=edit)
function fillEditSummaries() {
	var label = document.getElementById( 'wpSummaryLabel' );

	if( label === null ) {
		return;
	}

	var comboString = 'Standard summaries: <select id="stdSummaries" onchange="onStdSummaryChange()">';
	comboString += '</select><br />';
	label.innerHTML = comboString + label.innerHTML;

	requestComboFill( 'stdSummaries', 'Sjabloon:Stdsummaries' );
}

function onStdSummaryChange() {
	var combo = document.getElementById( 'stdSummaries' );
	var value = combo.options[combo.selectedIndex].value;

	if( value != '' ) {
		if( skin == 'monaco' ) { // Monaco skin + EditEnhancements extension
			document.getElementById('wpSummaryEnhanced').value = value;
		} else {
			document.getElementById('wpSummary').value = value;
		}
	}
}

function fillPreloads() {
	var div = document.getElementById( 'lf-preload' );

	if( div === null ) {
		return;
	}

	div.style.display = 'block';
	var span = document.getElementById( 'lf-preload-cbox' );

	var comboString = '<select id="stdPreloads" onchange="onPreloadChange()">';
	comboString += '</select>';
	span.innerHTML = comboString;

	span = document.getElementById( 'lf-preload-pagename' );
	span.innerHTML = '<input type="text" class="textbox" />';
	span = document.getElementById( 'lf-preload-button' );
	span.innerHTML = '<input type="button" class="button" value="Insert" onclick="doCustomPreload()" />';

	requestComboFill( 'stdPreloads', 'Template:Stdpreloads' );
}

function doCustomPreload() {
	doPreload( document.getElementById('lf-preload-pagename').getElementsByTagName('input')[0].value );
}

function onPreloadChange() {
	var combo = document.getElementById( 'stdPreloads' );
	var value = combo.options[combo.selectedIndex].value;

	if( value == '' ) {
		return;
	}

	value = 'Template:' + value + '/preload';
	value = value.replace( ' ', '_' );
	doPreload( value );
}

addOnloadHook( fillEditSummaries );

/* Returns h1.firstHeading (the page title element). */
function getFirstHeading() {
	var elements = getElementsByClass( 'firstHeading', document.getElementById( 'content' ), 'h1' );
	return ( elements != null && elements.length > 0 ) ? elements[0] : null;
}
 
/*
	Source: http://www.dustindiaz.com/getelementsbyclass/
	getElementsByClass, which complements getElementById and getElementsByTagName, returns an array of all subelements of ''node'' that are tagged with a specific CSS class (''searchClass'') and are of the tag name ''tag''. If tag is null, it searches for any suitable elements regardless of the tag name.
	Example: getElementsByClass( 'infobox', document.getElementById( 'content' ), 'div' ) selects the same elements as the CSS declaration #content div.infobox
*/
function getElementsByClass( searchClass, node, tag ) {
	var classElements = new Array();
 
	if( node == null ) {
		node = document;
	}
 
	if( tag == null ) {
		tag = '*';
	}
 
	var els = node.getElementsByTagName( tag );
	var elsLen = els.length;
	var tester = new ClassTester( searchClass );
 
	for( i = 0, j = 0; i < elsLen; i++ ) {
		if( tester.isMatch( els[i] ) ) {
			classElements[j] = els[i];
			j++;
		}
	}
 
	return classElements;
}
 
function ClassTester( className ) {
	this.regex = new RegExp( "(^|\\s)" + className + "(\\s|$)" );
}
 
ClassTester.prototype.isMatch = function( element ) {
	return this.regex.test( element.className );
}
/* end getElementsByClass */
 
 
// BEGIN JavaScript title rewrite
function rewriteTitle() {
	if( typeof( window.SKIP_TITLE_REWRITE ) != 'undefined' && window.SKIP_TITLE_REWRITE ) {
		return;
	}
 
	var titleDiv = document.getElementById( 'title-meta' );
 
	if( titleDiv == null ) {
		return;
	}
 
	var cloneNode = titleDiv.cloneNode( true );
	var firstHeading = getFirstHeading();
	var node = firstHeading.childNodes[0];
 
	// new, then old!
	firstHeading.replaceChild( cloneNode, node );
	cloneNode.style.display = 'inline';
 
	var titleAlign = document.getElementById( 'title-align' );
	firstHeading.style.textAlign = titleAlign.childNodes[0].nodeValue;
}
addOnloadHook( rewriteTitle );
// END JavaScript title rewrite