MediaWiki:Monobook.js

From Fiat Mods DB
Jump to: navigation, search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/* Any JavaScript here will be loaded for users using the MonoBook skin */
/* Any JavaScript here will be loaded for users using the MonoBook skin */
 
/* Based off of http://www.halopedia.org/MediaWiki:Monobook.js */
 
/* Any JavaScript here will be loaded for users using the MonoBook skin */
 
/* MONOBOOK SIDEBAR v2.3 */
window.wgSidebar = ( window.wgSidebar || {} );
 
wgSidebar['Navigation'] = [
	'Main Page|Home',
        'TechInfoDepot:Community portal|Community portal',
        'TechInfoDepot:Current events|Current events',
	'Special:RecentChanges|Recent Changes',
	'Special:Random|Random Page'
];
 
wgSidebar['Start'] = [
        'Linux|Linux',
        'Software|Software',
        'Microsoft Windows|Windows'
        ];
 
wgSidebar['Computers'] = [
	'Computers:Hardware Specific|Hardware Specific',
	'Computers:Motherboards|Motherboards',
	'Computers:Gear|Personal Gear'
	];
 
wgSidebar['Electronics'] = [
         'Electronics:Hardware Specific|Hardware Specific',
         'Electronics:Home Theater|Home Theater'
	];
 
wgSidebar['JTAG'] = [
         'JTAG:TJTAG|TJTAG',
         'JTAG:pinouts|JTAG Pinouts'
         ];
 
wgSidebar['Network'] = [
         'Network:Bootloader Collection Project|Bootloader Collection Project',
               {'Network:WiFi|Wifi': [
                     'DD-WRT:Main Page|DD-WRT',
                     'Tomato:Main Page|Tomato',
                     'Network:Other Firmware|Other Firmware',
                     ]},
        {'Network:Wired|Wired': [
               'Network:Wired Routers|Wired Routers',
               'Network:Interface Cards|NICs',
               'Network:Hubs|Network Hubs',
               'Network:Switches|Network Switches',
               ]},
        'Network:Hardware Specific|Hardware Specific',
        'Network:Hardware DIY|Hardware DIY',
        'Network:Gear|Personal Gear',
        ];
 
wgSidebar['Support'] = [
	'Help:Contents|User help',
        'TechInfoDepot:FAQ|FAQ',
        'Project:Support desk|Support desk',
	'[{{fullurl:{{FULLPAGENAME}}|action=purge}}]|Reload Page'
];
 
/**
 * MonobookSidebar: Sets sidebar submenus for elements of MonoBook, adding special
 * classes to pass the pointer over to allow the effect on all browsers.
 *
 * Date: 15 October 2010
 * Copyright © 2010 Jesús Martínez Novo ([[User:Ciencia Al Poder]])
 *
 * This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version
 */
MonobookSidebar = {
	re_s: / /g,
	re_p: /%/g,
	loadedMenus: [],
	init: function() {
		if ( !window.wgSidebar ) {
			return;
		}
		for ( var menu in wgSidebar ) {
			var item = document.getElementById( MonobookSidebar.getId( menu ) );
			if ( !item ) {
				continue;
			}
			var menuId = jQuery( item ).parents().get( 2 ).id;
			// Check it's a valid portlet item
			if ( !menuId || menuId == '' ) {
				continue;
			}
			// Generate menu hierarchy
			MonobookSidebar.buildSubmenu( item, wgSidebar[menu] );
			// Set events
			MonobookSidebar.setEvents( menuId );
		}
	},
	buildSubmenu: function( el, arr ) {
		var ul = document.createElement( 'ul' );
		ul.className = 'sub-menu';
		for ( var i = 0; i < arr.length; i++ ) {
			var li = document.createElement( 'li' );
			if ( typeof arr[i] == 'string' ) {
				var a = MonobookSidebar.linkFromText( arr[i] );
				li.appendChild( a );
			} else {
				for ( var menukey in arr[i] ) {
					a = MonobookSidebar.linkFromText( menukey );
					li.appendChild( a );
					MonobookSidebar.buildSubmenu( li, arr[i][menukey] );
				}
			}
			ul.appendChild( li );
		}
		el.appendChild( ul );
		el.className = 'with-sub-menu';
		var em = document.createElement( 'em' );
		em.appendChild( document.createTextNode( '\u203A' ) );
		el.firstChild.appendChild( em );
	},
	setEvents: function( menuId ) {
		for ( var i = 0; i < MonobookSidebar.loadedMenus; i++ ) {
			if ( MonobookSidebar.loadedMenus[i] == menuId ) {
				return;
			}
		}
		jQuery( '#' + menuId ).children().eq( 1 ).children().eq( 0 )
			.bind( 'mouseover', MonobookSidebar.mouseover )
			.bind( 'mouseout', MonobookSidebar.mouseout );
		MonobookSidebar.loadedMenus.push( menuId );
	},
	mouseover: function( e ) {
		var target = e.target;
		while ( target.tagName.toLowerCase() != 'div' ) {
			if ( target.tagName.toLowerCase() == 'a' ) {
				target = target.parentNode;
			}
			if ( target.tagName.toLowerCase() == 'li' ) {
				jQuery( target ).addClass( 'hover' );
			}
			target = target.parentNode;
		}
	},
	mouseout: function( e ) {
		var target = e.target;
		while ( target.tagName.toLowerCase() != 'div' ) {
			if ( target.tagName.toLowerCase() == 'a' ) {
				target = target.parentNode;
			}
			if ( target.tagName.toLowerCase() == 'li' ) {
				jQuery( target ).removeClass( 'hover' );
			}
			target = target.parentNode;
		}
	},
	linkFromText: function( txt ) {
		var article = '', caption = '', sepPos = txt.indexOf( '|' );
		if ( sepPos > 0 ) {
			article = txt.substr( 0, sepPos );
			caption = txt.substr( sepPos + 1 );
		} else {
			article = caption = txt;
		}
		article = article.replace( MonobookSidebar.re_s, '_' ); // removed encodeURIComponent(), it was messing things up --Jack Phoenix
		var a = document.createElement( 'a' );
		if ( article.length > 7 && article.substr( 0, 7 ) == 'http://' ) {
			a.setAttribute( 'href', article );
		} else {
			article = article.replace( MonobookSidebar.re_s, '_' ); // removed encodeURIComponent(), it was messing things up --Jack Phoenix
			// Replace encoded colons with normal colons -- added this. --Jack Phoenix
			article = article.replace( '%3A', ':' ); // added code ends here
			a.setAttribute( 'href', wgArticlePath.replace( '$1', article ) );
		}
		a.appendChild( document.createTextNode( caption ) );
		return a;
	},
	getId: function( name ) {
		return 'n-' + encodeURIComponent( name.replace( MonobookSidebar.re_s, '-' ) ).replace( MonobookSidebar.re_p, '.' );
	}
};
 
/* Calling this code to initialize */
jQuery( MonobookSidebar.init );