MediaWiki:Monobook.js: Difference between revisions

From Halopedia, the Halo wiki

No edit summary
mNo edit summary
Line 60: Line 60:
'Halo Interactive Strategy Game|Halo Interactive Strategy Game',
'Halo Interactive Strategy Game|Halo Interactive Strategy Game',
'Risk|Halo Risk',
'Risk|Halo Risk',
'Monopoly: Halo Collector\'s Edition|Halo Monopoly',
"Monopoly: Halo Collector's Edition|Halo Monopoly",
]},
]},
{'Category:Deleted material|Canceled projects': [
{'Category:Deleted material|Canceled projects': [
Line 101: Line 101:
'Halo: New Blood|New Blood',
'Halo: New Blood|New Blood',
'Halo: Hunters in the Dark|Hunters in the Dark',
'Halo: Hunters in the Dark|Hunters in the Dark',
'Halo: Saint\'s Testimony|Saint\'s Testimony',
"Halo: Saint's Testimony|Saint's Testimony",
'Halo: Last Light|Last Light',
'Halo: Last Light|Last Light',
'Halo: Shadow of Intent|Shadow of Intent',
'Halo: Shadow of Intent|Shadow of Intent',
Line 217: Line 217:
'Avery Johnson',
'Avery Johnson',
'343 Guilty Spark',
'343 Guilty Spark',
'Thel \'Vadam',
"Thel 'Vadam",
'Terrence Hood',
'Terrence Hood',
'Miranda Keyes',
'Miranda Keyes',
'Rtas \'Vadum',
"Rtas 'Vadum",
'Gravemind',
'Gravemind',
'James Cutter',
'James Cutter',
Line 228: Line 228:
'IsoDidact',
'IsoDidact',
'Ur-Didact',
'Ur-Didact',
'Jul \'Mdama',
"Jul 'Mdama",
'Thomas Lasky',
'Thomas Lasky',
'Sarah Palmer',
'Sarah Palmer',
Line 250: Line 250:
{'Category:Sapient species|Species': [
{'Category:Sapient species|Species': [
'Human',
'Human',
'San\'Shyuum',
"San'Shyuum",
'Sangheili',
'Sangheili',
'Kig-Yar',
'Kig-Yar',
Line 256: Line 256:
'Huragok',
'Huragok',
'Lekgolo',
'Lekgolo',
'Yanme\'e',
"Yanme'e",
'Unggoy',
'Unggoy',
'Forerunner',
'Forerunner',
Line 282: Line 282:
'Unified Earth Government',
'Unified Earth Government',
'Swords of Sanghelios',
'Swords of Sanghelios',
'Jul \'Mdama\'s Covenant',
"Jul 'Mdama's Covenant",
'Ecumene|Forerunner ecumene',
'Ecumene|Forerunner ecumene',
'Ancient humanity',
'Ancient humanity',
Line 311: Line 311:
'UNSC Spirit of Fire',
'UNSC Spirit of Fire',
'UNSC Infinity',
'UNSC Infinity',
'Mantle\'s Approach',
"Mantle's Approach",
'Enduring Conviction',
'Enduring Conviction',
]},
]},
Line 324: Line 324:
'Human-Forerunner wars',
'Human-Forerunner wars',
'Forerunner-Flood war',
'Forerunner-Flood war',
'Great Purification|The Halos\' firing',
"Great Purification|The Halos' firing",
'War of Beginnings',
'War of Beginnings',
'Interplanetary War',
'Interplanetary War',

Revision as of 17:47, October 10, 2021

/* Any JavaScript here will be loaded for users using the MonoBook skin */

/* MONOBOOK SIDEBAR v2.3 */
window.wgSidebar = ( window.wgSidebar || {} );

wgSidebar['Navigation'] = [
	'Special:RecentChanges|Recent changes',
	'Special:Random|Random page',
];

wgSidebar['Games'] = [
	{'Category:Video games|Original trilogy': [
		'Halo: Combat Evolved|Halo: Combat Evolved',
		'Halo: Combat Evolved Anniversary|Halo: Combat Evolved Anniversary',
		'Halo 2|Halo 2',
		'Halo 2: Anniversary|Halo 2: Anniversary',
		'Halo 3|Halo 3',
	]},
	{'Category:Video games|Mainline 343i games': [
		'Halo 4|Halo 4',
		'Halo 5: Guardians|Halo 5: Guardians',
		'Halo Infinite|Halo Infinite',
	]},
	{'Category:Video games|Halo: Spartan series': [
		'Halo: Spartan Assault|Halo: Spartan Assault',
		'Halo: Spartan Strike|Halo: Spartan Strike',
	]},
	{'Category:Video games|Halo Wars series': [
		'Halo Wars|Halo Wars',
		'Halo Wars 2|Halo Wars 2',
	]},
	{'Category:Video games|Other games': [
		'Halo 3: ODST|Halo 3: ODST',
		'Halo: Reach|Halo: Reach',
		'Halo: Fireteam Raven|Halo: Fireteam Raven',
	]},
	{'Category:Video games|Ports and expansions': [
		'Halo: Combat Evolved (PC port)|Halo PC',
		'Halo Custom Edition',
		'Halo 2 Multiplayer Map Pack|Halo 2 Multiplayer Map Pack',
		'Halo 2 (Windows Vista)|Halo 2 Vista',
		'Halo 3 Mythic|Halo 3 Mythic',
		'Halo: The Master Chief Collection|The Master Chief Collection',
		'Halo 5: Forge|Halo 5: Forge',
	]},
	{'Category:Applications|Applications': [
		'Halo Waypoint|Halo Waypoint',
		'Halo 4: King of the Hill Fueled by Mountain Dew|Halo 4: King of the Hill',
		'Halo Channel|Halo Channel',
		'Halo (Windows 10 app)|Halo App',
		'Halo Stickers|Halo Stickers',
		'Halo Recruit|Halo Recruit',
	]},
	{'Category:Tabletop games|Table top': [
		{'Category:Tabletop games|Spartan Games': [
			'Halo: Fleet Battles|Halo: Fleet Battles',
			'Halo: Ground Command|Halo: Ground Command',
		]},
		'Halo 4: King of the Hill Fueled by Mountain Dew|Halo 4: King of the Hill',
		'Halo Interactive Strategy Game|Halo Interactive Strategy Game',
		'Risk|Halo Risk',
		"Monopoly: Halo Collector's Edition|Halo Monopoly",
	]},
	{'Category:Deleted material|Canceled projects': [
		'Halo: Chronicles|Halo: Chronicles',
		'Titan (canceled game)|Titan',
		'Haggar|Haggar',
		'Halo Online|Halo Online',
	]},
];

wgSidebar['Other media'] = [
	{'Category:Novels|Novels': [
		{'The Forerunner Saga|The Forerunner Saga': [
			'Halo: Cryptum|Cryptum',
			'Halo: Primordium|Primordium',
			'Halo: Silentium|Silentium',
		]},
		{'Kilo-Five Trilogy|Kilo-Five Trilogy': [
			'Halo: Glasslands|Glasslands',
			'Halo: The Thursday War|The Thursday War',
			'Halo: Mortal Dictata|Mortal Dictata',
		]},
		{'A Master Chief Story|A Master Chief Story': [
			'Halo: Silent Storm|Silent Storm',
			'Halo: Oblivion|Oblivion',
			'Halo: Shadows of Reach|Shadows of Reach',
		]},
		{'Battle Born: A Halo Young Adult Novel Series|Battle Born': [
			'Halo: Battle Born|Battle Born',
			'Halo: Meridian Divide|Meridian Divide',
		]},
		'Halo: The Fall of Reach|The Fall of Reach',
		'Halo: The Flood|The Flood',
		'Halo: First Strike|First Strike',
		'Halo: Ghosts of Onyx|Ghosts of Onyx',
		'Halo: Contact Harvest|Contact Harvest',
		'Halo: The Cole Protocol|The Cole Protocol',
		'Halo: Evolutions|Evolutions',
		'Halo: Broken Circle|Broken Circle',
		'Halo: New Blood|New Blood',
		'Halo: Hunters in the Dark|Hunters in the Dark',
		"Halo: Saint's Testimony|Saint's Testimony",
		'Halo: Last Light|Last Light',
		'Halo: Shadow of Intent|Shadow of Intent',
		'Halo: Fractures|Fractures',
		'Halo: Smoke and Shadow|Smoke and Shadow',
		'Halo: Envoy|Envoy',
		'Halo: Retribution|Retribution',
		'Halo: Legacy of Onyx|Legacy of Onyx',
		'Halo: Bad Blood|Bad Blood',
		'Halo: Renegades|Renegades',
	]},
	{'Category:Comics|Comics': [
		'Halo Graphic Novel|Graphic Novel',
		'Halo 3: The Cradle of Life|The Cradle of Life',
		'Halo: Uprising|Uprising',
		'Halo: Helljumper|Helljumper',
		'Halo: Blood Line|Blood Line',
		'Halo: Fall of Reach|Fall of Reach',
		'Halo Wars: Genesis|Genesis',
		'Halo: Initiation|Initiation',
		'Halo: Escalation|Escalation',
		'Halo: Tales from Slipspace|Tales from Slipspace',
		'Halo: Rise of Atriox|Rise of Atriox',
		'Halo: Collateral Damage|Collateral Damage',
		'Halo: Lone Wolf|Lone Wolf',
	]},
	{'Category:Art books|Art books': [
		'The Art of Halo: Creating a Virtual World|The Art of Halo',
		'The Art of Halo 3|The Art of Halo 3',
		'Halo: The Great Journey - The Art of Building Worlds|Halo: The Great Journey',
		'Awakening: The Art of Halo 4|The Art of Halo 4',
		'The Art of Halo 5: Guardians|The Art of Halo 5: Guardians',
		'The Art of Halo Infinite|The Art of Halo Infinite',
	]},
	{'Category:Reference books|Reference': [
		'Halo Encyclopedia: The Definitive Guide to the Halo Universe|Halo Encyclopedia  ',
		'Halo: The Essential Visual Guide|Halo: The Essential Visual Guide',
		'Halo 4: The Essential Visual Guide|Halo 4: The Essential Visual Guide',
		'Halo Mythos: A Guide to the Story of Halo‎|Halo Mythos',
		'Halo: Warfleet – An Illustrated Guide to the Spacecraft of Halo|Halo: Warfleet',
		'Halo: Official Spartan Field Manual|Halo: Official Spartan Field Manual',
	]},
	{'Category:Strategy guides|Strategy guides': [
		'Halo: Combat Evolved: Sybex Official Strategies & Secrets|Halo: Combat Evolved',
		'Halo 2: The Official Strategy Guide|Halo 2',
		'Halo 3: The Official Strategy Guide|Halo 3',
		'Halo Wars: Official Strategy Guide|Halo Wars',
		'Halo 3: ODST Official Strategy Guide|Halo 3: ODST',
		'Halo: Reach Official Strategy Guide|Halo: Reach',
		'Halo 4: Official Game Guide|Halo 4',
		'Halo 5: Guardians Official Game Guide|Halo 5: Guardians',
	]},
	{'Category:Animated films|Animation': [
		'Halo Legends|Halo Legends',
		'Halo: The Fall of Reach - The Animated Series|Halo: The Fall of Reach',
	]},
	{'Category:Live action|Live action': [
		'Halo: Landfall|Landfall',
		'The Life|The Life',
		'Birth of a Spartan|Birth of a Spartan',
		'Remember Reach|Remember Reach',
		'Halo 4: Forward Unto Dawn|Halo 4: Forward Unto Dawn',
		'Halo film|Halo movie',
		'Halo: Nightfall|Nightfall',
		'Halo: The Television Series|The Television Series',
	]},
];

wgSidebar['Gameplay'] = [
	'Halo Waypoint|Waypoint',
	'Equipment|Equipment',
	'Weapons (gameplay)|Weapons',
	'Category:Vehicles|Vehicles',
	'Armor customizations|Armor customizations',
	'Category:Levels|Walkthroughs',
	'Multiplayer|Multiplayer',
];

wgSidebar['The universe'] = [
	{'Category:Characters|Characters': [
		{'Blue Team': [
			'John-117',
			'Linda-058',
			'Kelly-087',
			'Frederic-104',
		]},
		{'Red Team': [
			'Jerome-092',
			'Douglas-042',
			'Alice-130',
		]},
		{'Alpha-Nine': [
			'Rookie',
			'Michael Crespo|Michael "Mickey" Crespo',
			'Taylor Miles|Taylor "Dutch" Miles',
			'Kojo Agu|Kojo "Romeo" Agu',
		]},
		{'NOBLE Team': [
			'SPARTAN-B312',
			'Carter-A259',
			'Jun-A266',
			'Emile-A239',
			'Kat-B320',
			'Jorge-052',
		]},
		{'Fireteam Osiris': [
			'Jameson Locke',
			'Edward Buck',
			'Olympia Vale',
			'Holly Tanaka',
		]},
		'Catherine Halsey',
		'Jacob Keyes',
		'Cortana',
		'Avery Johnson',
		'343 Guilty Spark',
		"Thel 'Vadam",
		'Terrence Hood',
		'Miranda Keyes',
		"Rtas 'Vadum",
		'Gravemind',
		'James Cutter',
		'John Forge',
		'Ellen Anders',
		'Librarian',
		'IsoDidact',
		'Ur-Didact',
		"Jul 'Mdama",
		'Thomas Lasky',
		'Sarah Palmer',
		'Roland',
		'Atriox',
		'Isabel',
	]},
	{'Category:Locations|Locations': [
		'Earth',
		'Reach',
		'Harvest',
		'Sanghelios',
		'High Charity',
		'Mombasa',
		'Installation 04|Alpha Halo',
		'Installation 05|Delta Halo',
		'Installation 00|The Ark',
		'Requiem',
		'Maethrillian',
	]},
	{'Category:Sapient species|Species': [
		'Human',
		"San'Shyuum",
		'Sangheili',
		'Kig-Yar',
		'Jiralhanae',
		'Huragok',
		'Lekgolo',
		"Yanme'e",
		'Unggoy',
		'Forerunner',
		'Flood',
	]},
	{'Category:Factions|Factions': [
		{'United Nations Space Command|United Nations Space Command': [
			'UNSC Army',
			'UNSC Air Force',
			'UNSC Marine Corps',
			'Orbital Drop Shock Troopers',
			'UNSC Navy',
			'Office of Naval Intelligence',
			'Spartan|SPARTAN programs',
		]},
		{'Covenant|Covenant': [
			'Covenant military',
			'Covenant Honor Guard',
			'High Council',
		]},
		{'Insurrectionist|Insurrectionists': [
			'United Rebel Front',
			'New Colonial Alliance',
		]},
		'Unified Earth Government',
		'Swords of Sanghelios',
		"Jul 'Mdama's Covenant",
		'Ecumene|Forerunner ecumene',
		'Ancient humanity',
		'Precursor|Precursors',
	]},
	{'Category:Technology|Technology': [
		'Technological Achievement Tiers',
		'Active camouflage',
		'Artificial intelligence',
		'Biological augmentation',
		'Cryonics',
		'Energy shielding',
		'Holography',
		'Slipstream space',
		'Powered exoskeleton',
		'Category:Propulsion|Propulsion',
		'Category:Communications technology|Communications',
		'Category:Medicine|Medicine',
		'Category:Vehicles|Vehicles',
		'Category:Weapons|Weapons',
	]},
	{'Category:Ships|Ships': [
		'UNSC Pillar of Autumn',
		'Truth and Reconciliation',
		'UNSC In Amber Clad',
		'UNSC Forward Unto Dawn',
		'Shadow of Intent',
		'UNSC Spirit of Fire',
		'UNSC Infinity',
		"Mantle's Approach",
		'Enduring Conviction',
	]},
	{'Category:Society and culture|Society and culture': [
		'Category:Languages|Languages',
		'Religion',
		'Mantle',
		'List of food and drinks|Food and drink',
		'Category:Terms and phrases|Terms and phrases',
	]},
	{'Halopedia:Projects/Timeline/Eras|Timeline': [
		'Human-Forerunner wars',
		'Forerunner-Flood war',
		"Great Purification|The Halos' firing",
		'War of Beginnings',
		'Interplanetary War',
		'Insurrection',
		'Human-Covenant War',
		'Post-Covenant War conflicts',
	]},
];

wgSidebar['Halopedia Archive'] = [
	'Archive:Text archives|Text archives',
	'Archive:Website archives|Website archives',
	'https://www.youtube.com/channel/UCMeCf0KFYzOHw2lp2GRtgWA|Video archives',
];

wgSidebar['Halopedia'] = [
	{'Halopedia:Social media|Social media': [
		'https://twitter.com/Halopedia|Twitter',
		'https://www.facebook.com/HalopediaWiki|Facebook',
	]},
	'Halopedia:Discord server|Discord server',
	'Special:WikiForum|Halopedia forums',
	'News:Main|Halo News Network',
	'Halopedia:Projects/Improvement|Article improvement',
	'Halopedia:Featured/Article|Featured articles',
	'Halopedia:Staff|Halopedia staff',
];

wgSidebar['Wiki help'] = [
	{'Category:Policies|Policies': [
		'Halopedia:Manual of Style|Manual of Style',
		'Halopedia:Blocking policy|Blocking policy',
		'Halopedia:Canon policy|Canon policy',
		'Halopedia:Layout guide|Layout guide',
		'Halopedia:Media policy|Media policy',
		'Halopedia:Notability policy|Notability policy',
		'Halopedia:Personal Image policy|Personal Image policy',
		'Halopedia:Protected Page policy|Protected Page policy',
		'Halopedia:Signature policy|Signature policy',
		'Halopedia:Spoiler policy|Spoiler policy',
		'Halopedia:Voting policy|Voting policy',
	]},
	{'Category:Help|Help pages': [
		'Help:Disambiguation|Disambiguation',
		'Help:Editing|Editing',
		'Help:Images|Images',
		'Help:Links|Links',
		'Help:References|References',
		'Help:Signatures|Signatures',
		'Help:Tables|Tables',
		'Help:Templates|Templates',
		'Help:Videos|Videos',
		'Help:Walkthroughs|Walkthroughs',
	]},
	'Halopedia:General disclaimer|General disclaimer',
	'Halopedia:What Halopedia is|What Halopedia is',
];

wgSidebar['Related sites'] = [
	{'Halopedia:Related sites and affiliates|Affiliates': [
		'destinypedia:|Destinypedia',
		'https://www.youtube.com/user/HaloCanon|Halo Canon',
		'https://niwanetwork.org|NIWA',
	]},
	{'Halopedia:Related sites and affiliates|Community': [
		'https://halo.bungie.org|halo.bungie.org',
		'https://www.readyuplive.com|Ready Up Live',
		'http://www.forwarduntodawn.com|Forward Unto Dawn',
		'https://www.reddit.com/r/halo|/r/halo',
		'https://www.reddit.com/r/HaloStory|/r/HaloStory',
		'https://www.forgehub.com|ForgeHub',
		'http://haloterms.bungie.org|Terminal Hub',
		'https://roosterteeth.com|Rooster Teeth',
		'https://405th.com|405th',
	]},
	{'Halopedia:Related sites and affiliates|Podcasts': [
		'https://www.podtacular.com|Podtacular',
		'https://www.halopodcastevolved.com/podcast-evolved|Podcast Evolved',
	]},
	{'Halopedia:Related sites and affiliates|Wikis': [
		{'Halopedia:Related sites and affiliates|International': [
			'de:|Deutsch (German)',
			'el:|Ελληνικά (Greek)',
			'it:|Italiano (Italian)',
			'ja:|日本語 (Japanese)',
			'ko:|한국어 (Korean)',
			'pl:|Polski (Polish)',
			'ru:|Русские (Russian)',
			'es:|Español (Spanish)',
		]},
		'halofanon:|Halo Fanon',
		'unhalo:|Gruntipedia',
		'halomachinima:|Halo Machinima',
		'wikihalo:|Halo.fr',
		'rvb:|Red vs. Blue',
	]},
];

/**
 * 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 a;
			var li = document.createElement( 'li' );
			if ( typeof arr[i] == 'string' ) {
				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 )
			.on( 'mouseover', MonobookSidebar.mouseover )
			.on( '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, '_' );
		var a = document.createElement( 'a' );
		if ( article.length > 4 && article.substr( 0, 4 ) == 'http' ) {
			a.setAttribute( 'href', article );
		} else {
			article = article.replace( MonobookSidebar.re_s, '_' );
			// Replace encoded colons with normal colons
			article = article.replace( '%3A', ':' );
			a.setAttribute( 'href', mw.config.get( 'wgArticlePath' ).replace( '$1', article ) );
		}
		a.appendChild( document.createTextNode( caption ) );
		return a;
	},
	getId: function( name ) {
		return 'n-' + name.replace( MonobookSidebar.re_s, '-' ).replace( MonobookSidebar.re_p, '.' );
	}
};

/* Calling this code to initialize */
$( MonobookSidebar.init );