Difference between revisions of "MediaWiki:Common.js"

From Medical Billing Wiki - Medical Billing and Coding Dictionary
Jump to: navigation, search
Line 62: Line 62:
 
   
 
   
 
addOnloadHook( CustomizeModificationsOfSidebar );
 
addOnloadHook( CustomizeModificationsOfSidebar );
 +
 +
// -------------------------------------------------------------------------------
 +
//  Force Preview  JavaScript code - Start
 +
//
 +
//  To allow any group to bypass being forced to preview,
 +
//  enter the group name in the permittedGroups array.
 +
//  E.g.
 +
//    var permittedGroups = [];                      // force everyone
 +
//    var permittedGroups = [ "user"];                // permit logged-in users
 +
//    var permittedGroups = [ "sysop", "bureaucrat"]; // permit sysop, bureaucrat
 +
// -------------------------------------------------------------------------------
 +
var permittedGroups = [];
 +
 +
Array.prototype.intersects = function() {
 +
// --------------------------------------------------------
 +
//  Returns true if any element in the argument array
 +
//  is the same as an element in this array
 +
// --------------------------------------------------------
 +
if ( !arguments.length ) return false;
 +
 +
var array2 = arguments[0];
 +
 +
var len1 = this.length;
 +
var len2 = array2.length;
 +
if ( len2 == 0 ) return false;
 +
 +
for ( var i = 0; i < len1; i++ ) {
 +
for ( var j = 0; j < len2; j++ ) {
 +
if ( this[i] === array2[j] ) return true;
 +
}
 +
}
 +
return false;
 +
};
 +
 +
function forcePreview() {
 +
if ( mw.config.get( "wgAction" ) != "edit" ) return;
 +
if ( mw.config.get( "wgUserGroups" ).intersects( permittedGroups ) ) return;
 +
var saveButton = document.getElementById( "wpSave" );
 +
if ( !saveButton ) return;
 +
saveButton.disabled = true;
 +
saveButton.value = "Save page (use preview first)";
 +
saveButton.style.fontWeight = "normal";
 +
document.getElementById("wpPreview").style.fontWeight = "bold";
 +
}
 +
 +
jQuery(document).ready( forcePreview );
 +
// -----------------------------------------------------
 +
//  Force Preview  JavaScript code - End
 +
// -----------------------------------------------------

Revision as of 09:33, 3 December 2014

/* Any JavaScript here will be loaded for all users on every page load. */

function ModifySidebar( action, section, name, link ) {
	try {
		switch ( section ) {
			case 'languages':
				var target = 'p-lang';
				break;
			case 'toolbox':
				var target = 'p-tb';
				break;
			case 'navigation':
				var target = 'p-navigation';
				break;
			default:
				var target = 'p-' + section;
				break;
		}
 
		if ( action == 'add' ) {
			var node = document.getElementById( target )
							   .getElementsByTagName( 'div' )[0]
							   .getElementsByTagName( 'ul' )[0];
 
			var aNode = document.createElement( 'a' );
			var liNode = document.createElement( 'li' );
 
			aNode.appendChild( document.createTextNode( name ) );
			aNode.setAttribute( 'href', link );
			liNode.appendChild( aNode );
			liNode.className = 'plainlinks';
			node.appendChild( liNode );
		}
 
		if ( action == 'remove' ) {
			var list = document.getElementById( target )
							   .getElementsByTagName( 'div' )[0]
							   .getElementsByTagName( 'ul' )[0];
 
			var listelements = list.getElementsByTagName( 'li' );
 
			for ( var i = 0; i < listelements.length; i++ ) {
				if (
					listelements[i].getElementsByTagName( 'a' )[0].innerHTML == name ||
					listelements[i].getElementsByTagName( 'a' )[0].href == link
				)
				{
					list.removeChild( listelements[i] );
				}
			}
		}
 
	} catch( e ) {
		// let's just ignore what's happened
		return;
	}
}
 
function CustomizeModificationsOfSidebar() {
	ModifySidebar( 'remove', 'toolbox', 'Special pages', 'http://medicalbilling.wiki/index.php?title=Special:SpecialPages' );
}
 
addOnloadHook( CustomizeModificationsOfSidebar );

// -------------------------------------------------------------------------------
//  Force Preview  JavaScript code - Start
//
//  To allow any group to bypass being forced to preview, 
//  enter the group name in the permittedGroups array.
//  E.g.
//    var permittedGroups = [];                       // force everyone
//    var permittedGroups = [ "user"];                // permit logged-in users 
//    var permittedGroups = [ "sysop", "bureaucrat"]; // permit sysop, bureaucrat 
// -------------------------------------------------------------------------------
var permittedGroups = [];
 
Array.prototype.intersects = function() {
	// --------------------------------------------------------
	//  Returns true if any element in the argument array
	//  is the same as an element in this array
	// --------------------------------------------------------
	if ( !arguments.length ) return false;
 
	var array2 = arguments[0];
 
	var len1 = this.length;
	var len2 = array2.length;
	if ( len2 == 0 ) return false;
 
	for ( var i = 0; i < len1; i++ ) {
		for ( var j = 0; j < len2; j++ ) {
			if ( this[i] === array2[j] ) return true;
		}
	}
	return false;
};
 
function forcePreview() {
	if ( mw.config.get( "wgAction" ) != "edit" ) return;
	if ( mw.config.get( "wgUserGroups" ).intersects( permittedGroups ) ) return;
	var saveButton = document.getElementById( "wpSave" );
	if ( !saveButton ) return;
	saveButton.disabled = true;
	saveButton.value = "Save page (use preview first)";
	saveButton.style.fontWeight = "normal";
	document.getElementById("wpPreview").style.fontWeight = "bold";
}
 
jQuery(document).ready( forcePreview );
// -----------------------------------------------------
//  Force Preview  JavaScript code - End
// -----------------------------------------------------