MediaWiki:Monobook.js

From Halopedia, the Halo wiki

Note: After publishing, 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: Press Ctrl-F5.
/* 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 Anniversary",
		"Halo 2",
		"Halo 2: Anniversary",
		"Halo 3",
	]},
	{"Category:Video games|Mainline 343i games": [
		"Halo 4",
		"Halo 5: Guardians",
		"Halo Infinite",
	]},
	{"Category:Video games|Halo: Spartan series": [
		"Halo: Spartan Assault",
		"Halo: Spartan Strike",
	]},
	{"Category:Video games|Halo Wars series": [
		"Halo Wars",
		"Halo Wars 2",
	]},
	{"Category:Video games|Other games": [
		"Halo 3: ODST",
		"Halo: Reach",
		"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 (Windows Vista)|Halo 2 Vista",
		"Halo 3 Mythic",
		"Halo: The Master Chief Collection",
		"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 (Windows 10 app)|Halo app",
		"Halo Stickers",
		"Halo Recruit",
	]},
	{"Category:Tabletop games|Table top": [
		{"Category:Tabletop games|Spartan Games": [
			"Halo: Fleet Battles",
			"Halo: Ground Command",
		]},
		"Halo 4: King of the Hill Fueled by Mountain Dew|Halo 4: King of the Hill",
		"Halo Interactive Strategy Game",
		"Risk|Halo Risk",
		"Monopoly: Halo Collector's Edition|Halo Monopoly",
	]},
	{"Category:Deleted material|Canceled projects": [
		"Halo: Chronicles",
		"Titan (canceled game)|Titan",
		"Haggar",
		"Halo Online",
		"Halo: Starfighter",
	]},
];

wgSidebar["Other media"] = [
	{"Halo novels|Novels": [
		{"The Original Series": [
			"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",
		]},
		{"The Forerunner Saga": [
			"Halo: Cryptum|Cryptum",
			"Halo: Primordium|Primordium",
			{"Halo: Silentium|Silentium": [
				"Rebirth",
			]},
		]},
		{"Kilo-Five Trilogy": [
			"Halo: Glasslands|Glasslands",
			"Halo: The Thursday War|The Thursday War",
			"Halo: Mortal Dictata|Mortal Dictata",
		]},
		{"Alpha-Nine series|Alpha-Nine": [
			"Halo: New Blood|New Blood",
			"Halo: Bad Blood|Bad Blood",
		]},
		{"The Ferrets series|The Ferrets": [
			"Halo: Last Light|Last Light",
			"Halo: Retribution|Retribution",
			"Halo: Divine Wind|Divine Wind",
		]},
		{"Rion Forge & Ace Of Spades series|Rion Forge & Ace of Spaces": [
			"Halo: Smoke and Shadow|Smoke and Shadow",
			"Halo: Renegades|Renegades",
			"Halo: Point of Light|Point of Light",
		]},
		{"A Master Chief Story": [
			"Halo: Silent Storm|Silent Storm",
			"Halo: Oblivion|Oblivion",
			{"Halo: Shadows of Reach|Shadows of Reach": [
				"Sacrifice",
			]},
		]},
		{"Battle Born: A Halo Young Adult Novel Series|Battle Born": [
			"Halo: Battle Born|Battle Born",
			"Halo: Meridian Divide|Meridian Divide",
			"Halo: Silentium|Silentium",
		]},
		{"Halo novels|Individual novels": [
			"Halo: Contact Harvest|Contact Harvest",
			"Halo: Hunters in the Dark|Hunters in the Dark",
			"Halo: Legacy of Onyx|Legacy of Onyx",
			"Halo: The Rubicon Protocol|The Rubicon Protocol",
			"Halo: Outcasts|Outcasts",
		]},
		{"Halo novels|Individual novellas": [
			"Halo: Saint's Testimony|Saint's Testimony",
			"Halo: Shadow of Intent|Shadow of Intent",
		]},
		{"Halo novels|Anthologies": [
			"Halo: Evolutions|Evolutions",
			"Halo: Fractures|Fractures",
		]},
	]},
	{"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 books": [
		{"Halo Encyclopedia|Original encyclopedias": [
			"Halo Encyclopedia (2009 edition)|2009 edition",
			"Halo Encyclopedia (2011 edition)|2011 edition",
		]},
		"Halo: 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 Encyclopedia (2022 edition)",
	]},
	{"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: The Fall of Reach - The Animated Series|Halo: The Fall of Reach",
	]},
	{"Category:Live action|Live action": [
		"Halo: Landfall|Landfall",
		"The Life",
		"Birth of a Spartan",
		"Remember Reach",
		"Halo 4: Forward Unto Dawn",
		"Halo film|Halo movie",
		"Halo: Nightfall|Nightfall",
		"Halo: The Television Series|Halo TV series",
	]},
];

wgSidebar["Gameplay"] = [
	"Halo Waypoint|Waypoint",
	"Equipment",
	"Weapons (gameplay)|Weapons",
	"Category:Vehicles|Vehicles",
	"Armor customizations",
	"Category:Levels|Walkthroughs",
	"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": [
		"https://www.destinypedia.com|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": [
			"https://halo.fandom.com/de|Deutsch (German)",
			"https://halo.fandom.com/el|Ελληνικά (Greek)",
			"https://halo.fandom.com/it|Italiano (Italian)",
			"https://halo.fandom.com/ja|日本語 (Japanese)",
			"https://halo.fandom.com/ko|한국어 (Korean)",
			"https://halo.fandom.com/pl|Polski (Polish)",
			"https://halo.fandom.com/ru|Русские (Russian)",
			"https://halo.fandom.com/es|Español (Spanish)",
		]},
		"https://halofanon.fandom.com|Halo Fanon",
		"https://unhalo.fandom.com|Gruntipedia",
		"https://halomachinima.fandom.com|Halo Machinima",
		"https://wiki.halo.fr|Halo.fr",
		"https://rvb.fandom.com|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 );