MediaWiki:Gadget-sidebar.js

De la Wikipedia, enciclopedia liberă

Notă: După salvare, trebuie să treceți peste cache-ul browser-ului pentru a vedea modificările.

  • Mozilla, Google Chrome, Safari, Konqueror: țineți apăsat Shift în timp ce apăsați butonul Reload (sau apăsați Ctrl-Shift-R).
  • Internet Explorer: apăsați Ctrl-F5.
  • Opera: apăsați F5.
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' )[1]
							   .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' )[1]
							   .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] );
				}
			}
		}
		if ( action == 'removeall' ) {
			var list = document.getElementById( target )
							   .getElementsByTagName( 'div' )[1]
							   .getElementsByTagName( 'ul' )[0];
			while (list.firstChild) {
			    list.removeChild(list.firstChild);
			}
		}

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

function LoadedConfigPage( pageobj ) {
    if (pageobj.exists()) {
		var content = JSON.parse(pageobj.getPageText());
		for ( var section in content ) {
		   if ( content.hasOwnProperty(section) ) {
				// removes existing entries
				ModifySidebar( 'removeall', section, null, null);	
		   		elems = content[section];
		   		for ( var elem in elems ) {
		   			if ( elems.hasOwnProperty(elem) ) {
		   				try {
		   				var title = new mw.Title(elems[elem]).getUrl();
		   				} catch ( e ) {
		   					title = elems[elem];
		   				}
		   				ModifySidebar( 'add', section, elem, title );
		   			}
		   		}
    		}
		}
    }
}

function CustomizeModificationsOfSidebar() {
    try {
		//mw.loader.load( '/w/index.php?title=MediaWiki:Gadget-morebits.js&action=raw&ctype=text/javascript' );
		var configPage = new Morebits.wiki.page( 'Utilizator:' + mw.config.get('wgUserName') + '/sidebar.js' )
		configPage.load(LoadedConfigPage);
    } catch ( e ) {
         return;
    }
}

$( CustomizeModificationsOfSidebar );