Difference between revisions of "MediaWiki:Common.js"

From Australian Traditional Music People
Jump to navigationJump to search
(Add code to allow modification of the tools box in sidebar)
 
(Correct URL error when adding Replace text)
 
(2 intermediate revisions by the same user not shown)
Line 45: Line 45:
 
if (
 
if (
 
listelements[i].getElementsByTagName( 'a' )[0].innerHTML == name ||
 
listelements[i].getElementsByTagName( 'a' )[0].innerHTML == name ||
listelements[i].getElementsByTagName( 'a' )[0].href == link
+
listelements[i].getElementsByTagName( 'a' )[0].href.includes(link) )
)
 
 
{
 
{
 
list.removeChild( listelements[i] );
 
list.removeChild( listelements[i] );
Line 67: Line 66:
 
ModifySidebar( 'remove', 'toolbox', 'Permanent link', 'oldid=' );
 
ModifySidebar( 'remove', 'toolbox', 'Permanent link', 'oldid=' );
 
ModifySidebar( 'remove', 'toolbox', 'Page information', 'action=info' );
 
ModifySidebar( 'remove', 'toolbox', 'Page information', 'action=info' );
 +
if (wgUserName == null ) { // not logged in user
 +
                ModifySidebar( 'remove', 'toolbox', 'Special pages', 'Special:SpecialPages' );
 +
        } else { // additions for logged in users
 +
                ModifySidebar( 'add', 'toolbox', 'Replace text', '/people/index.php?title=Special:ReplaceText' );
 +
        }
 
}
 
}
  
 
jQuery( CustomizeModificationsOfSidebar );
 
jQuery( CustomizeModificationsOfSidebar );

Latest revision as of 10:02, 23 March 2018

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

/* Tools sidebar modification code from: https://www.mediawiki.org/wiki/Manual:Interface/Sidebar */

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.includes(link) )
				{
					list.removeChild( listelements[i] );
				}
			}
		}

	} catch( e ) {
		// let's just ignore what's happened
		return;
	}
}

function CustomizeModificationsOfSidebar() {
	// adds items to toolbox
	// ModifySidebar( 'add', 'toolbox', 'CategoryTree', '/people/index.php?title=Special:CategoryTree' );
	// removes items from toolbox
	ModifySidebar( 'remove', 'toolbox', 'What links here', 'Special:WhatLinksHere/' );
	ModifySidebar( 'remove', 'toolbox', 'Related changes', 'Special:RecentChangesLinked/' );
	ModifySidebar( 'remove', 'toolbox', 'Permanent link', 'oldid=' );
	ModifySidebar( 'remove', 'toolbox', 'Page information', 'action=info' );
	if (wgUserName == null ) { // not logged in user
                ModifySidebar( 'remove', 'toolbox', 'Special pages', 'Special:SpecialPages' );
        } else { // additions for logged in users
                ModifySidebar( 'add', 'toolbox', 'Replace text', '/people/index.php?title=Special:ReplaceText' ); 
        }
}

jQuery( CustomizeModificationsOfSidebar );