MediaWiki:Monobook.js: Difference between revisions

From the Kingdom Hearts Wiki, the Kingdom Hearts encyclopedia
Jump to navigationJump to search
No edit summary
No edit summary
Line 187: Line 187:
'Kingdom Hearts HD 1.5 ReMIX Original Soundtrack',
'Kingdom Hearts HD 1.5 ReMIX Original Soundtrack',
'Kingdom Hearts HD 2.5 ReMIX Original Soundtrack',
'Kingdom Hearts HD 2.5 ReMIX Original Soundtrack',
                'Kingdom Hearts Concert -First Breath-',
'Kingdom Hearts - III, II.8, Unchained χ & Union χ [Cross] - Original Soundtrack',
                'Kingdom Hearts Orchestra -World Tour-',
{'Category:Concerts|Concerts': [
                'Kingdom Hearts Orchestra -World of Tres-',
'Kingdom Hearts Concert -First Breath-',
'Kingdom Hearts Orchestra -World Tour-',
'Kingdom Hearts Orchestra -World of Tres-',
]},
]},
]},
];
];

Revision as of 01:36, 8 February 2021

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

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

wgSidebar['Help'] = [
	'KHWiki:About|About',
	'Help:Contents|Help Pages',
	'KHWiki:Manual of Style|Manual of Style',
	'Category:Stubs|Stubs',
	'KHWiki:Sandbox|Sandbox',
];

wgSidebar['Games'] = [
	'Kingdom Hearts (game)|Kingdom Hearts',
	'Kingdom Hearts Chain of Memories|Chain of Memories',
	'Kingdom Hearts II|Kingdom Hearts II',
	'Kingdom Hearts 358/2 Days|358/2 Days',
	'Kingdom Hearts Birth by Sleep|Birth by Sleep',
	'Kingdom Hearts coded|coded',
	'Kingdom Hearts 3D: Dream Drop Distance|Dream Drop Distance',
        'Kingdom Hearts χ|χ[chi]',
        'Kingdom Hearts 0.2 Birth by Sleep -A fragmentary passage-|Kingdom Hearts 0.2',
	'Kingdom Hearts III|Kingdom Hearts III',
        'Kingdom Hearts Dark Road|Dark Road',
        'Kingdom Hearts Melody of Memory|Melody of Memory',
	{'Category:Games|Other titles': [
		'Kingdom Hearts Final Mix|Kingdom Hearts Final Mix',
		'Kingdom Hearts Re:Chain of Memories|Re:Chain of Memories',
		'Kingdom Hearts II Final Mix|Kingdom Hearts II Final Mix',
		'Kingdom Hearts Birth by Sleep Final Mix|Birth by Sleep Final Mix',
		'Kingdom Hearts Re:coded|Re:coded',
                'Kingdom Hearts HD 1.5 ReMIX|HD 1.5 ReMIX',
                'Kingdom Hearts HD 2.5 ReMIX|HD 2.5 ReMIX',
                'Kingdom Hearts Union χ|Union χ[Cross]',
                'Kingdom Hearts HD 2.8 Final Chapter Prologue|HD 2.8 Final Chapter Prologue',
                'Kingdom Hearts III Re Mind|Kingdom Hearts III Re Mind',
		'Kingdom Hearts Mobile|Mobile',
	]},
];

wgSidebar['Universe'] = [
	{'Category:Characters|Protagonists': [
		'Sora|Sora',
		'Riku|Riku',
		'Kairi|Kairi',
		'Mickey Mouse|Mickey Mouse',
		'Donald Duck|Donald Duck',
		'Goofy|Goofy',
		'Naminé|Naminé',
		'Roxas|Roxas',
		'Xion|Xion',
		'Terra|Terra',
		'Ventus|Ventus',
		'Aqua|Aqua',
		'Lea|Lea',
	]},
	{'Category:Antagonists|Antagonists': [
		'Xehanort|Xehanort',
		'Young Xehanort|Young Xehanort',
		'Vanitas|Vanitas',
		'Ansem, Seeker of Darkness|Ansem',
		'Organization XIII|Organization XIII',
		'Real Organization XIII|Real Organization XIII',
		'Maleficent|Maleficent',
		'Pete|Pete',
		'Villains|Villains',
	]},
	'Heartless|Heartless',
	'Nobody|Nobodies',
	'Unversed|Unversed',
	'Dream Eater|Dream Eaters',
	{'Category:Worlds|Worlds introduced in...': [
		{'Category:Kingdom Hearts worlds|Kingdom Hearts': [
			'Dive to the Heart|Dive to the Heart',
			'Destiny Islands|Destiny Islands',
			'Disney Castle|Disney Castle',
			'Traverse Town|Traverse Town',
			'Wonderland|Wonderland',
			'Olympus Coliseum|Olympus Coliseum',
			'Deep Jungle|Deep Jungle',
			'Agrabah|Agrabah',
			'Halloween Town|Halloween Town',
			'Monstro|Monstro',
			'Atlantica|Atlantica',
			'Neverland|Neverland',
			'Hollow Bastion|Hollow Bastion',
			'100 Acre Wood|100 Acre Wood',
			'End of the World|End of the World',
			'Kingdom Hearts|Kingdom Hearts',
			'Realm of Darkness|Realm of Darkness',
		]},
		{'Category:Kingdom Hearts: Chain of Memories worlds|Chain of Memories': [
			'Castle Oblivion|Castle Oblivion',
			'Twilight Town|Twilight Town',
		]},
		{'Category:Kingdom Hearts II worlds|Kingdom Hearts II': [
			'Mysterious Tower|Mysterious Tower',
			'Radiant Garden|Radiant Garden',
			'The Land of Dragons|The Land of Dragons',
			'Beast’s Castle|Beast’s Castle',
			'Timeless River|Timeless River',
			'Port Royal|Port Royal',
			'Pride Lands|Pride Lands',
			'Space Paranoids|Space Paranoids',
			'The World That Never Was|The World That Never Was',
			'Keyblade Graveyard|Keyblade Graveyard',
		]},
		{'Category:Kingdom Hearts Birth by Sleep worlds|Birth by Sleep': [
			'Land of Departure|Land of Departure',
			'Dwarf Woodlands|Dwarf Woodlands',
			'Enchanted Dominion|Enchanted Dominion',
			'Castle of Dreams|Castle of Dreams',
			'Mirage Arena|Mirage Arena',
			'Disney Town|Disney Town',
			'Deep Space|Deep Space',
		]},
		{'Category:Kingdom Hearts coded worlds|coded': [
			'Datascape|Datascape',
		]},
                {'Category:Kingdom Hearts 3D: Dream Drop Distance worlds|Dream Drop Distance': [
			'La Cité des Cloches|La Cité des Cloches',
			'Prankster\'s Paradise|Prankster\'s Paradise',
			'The Grid|The Grid',
			'Country of the Musketeers|Country of the Musketeers',
			'Symphony of Sorcery|Symphony of Sorcery',
		]},
                {'Category:Kingdom Hearts χ worlds|Kingdom Hearts χ': [
			'Daybreak Town|Daybreak Town',
		]},
                {'Category:Kingdom Hearts Union χ worlds|Kingdom Hearts Union χ': [
			'Game Central Station|Game Central Station',
			'Niceland|Niceland',
			'Cy-Bug Sector|Cy-Bug Sector',
			'Candy Kingdom|Candy Kingdom',
		]},
                {'Category:Kingdom Hearts III worlds|Kingdom Hearts III': [
			'Olympus|Olympus',
			'Toy Box|Toy Box',
			'Kingdom of Corona|Kingdom of Corona',
			'Monstropolis|Monstropolis',
			'Arendelle|Arendelle',
			'The Caribbean|The Caribbean',
			'San Fransokyo|San Fransokyo',
			'The Final World|The Final World',
			'Secret Forest|Secret Forest',
			'Shibuya|Shibuya',
		]},

	]},
];

wgSidebar['Game elements'] = [
	'Category:Items|Items',
	'Weapons',
	'Magic',
	'Summon|Summons',
	'Ability|Abilities',
	'Drive Form|Drive Forms',
	'Cards',
	'Gummi Ship',
	'Mini-games',
];

wgSidebar['Literature and music'] = [
	'Kingdom Hearts series (manga)|Manga',
	'Kingdom Hearts novels|Novels',
	'Kingdom Hearts Another Report|Another Report',
	'Kingdom Hearts Ultimania|Ultimania',
	{'Category:Startegy Guides|Strategy Guides': [
		'Kingdom Hearts Official Strategy Guide|Kingdom Hearts',
		'Kingdom Hearts Chain of Memories Official Strategy Guide|Chain of Memories',
		'Kingdom Hearts II Official Strategy Guide|Kingdom Hearts II',
		'Kingdom Hearts 358/2 Days Signature Series Strategy Guide|358/2 Days',
		'Kingdom Hearts Birth by Sleep Signature Series Strategy Guide|Birth by Sleep',
                'Kingdom Hearts 3D: Dream Drop Distance Signature Series Guide|Dream Drop Distance',
                'Kingdom Hearts HD 1.5 ReMIX Game Guide|HD 1.5 ReMIX',
	]},
	{'Category:Music|Music': [
		'Kingdom Hearts Original Soundtrack',
		'Kingdom Hearts II Original Soundtrack',
		'Kingdom Hearts Original Soundtrack Complete',
		'Piano Collections Kingdom Hearts',
		'Piano Collections Kingdom Hearts Field & Battle',
		'Kingdom Hearts Birth by Sleep & 358/2 Days Original Soundtrack',
		'Kingdom Hearts 3D: Dream Drop Distance Original Soundtrack',
		'Kingdom Hearts HD 1.5 ReMIX Original Soundtrack',
		'Kingdom Hearts HD 2.5 ReMIX Original Soundtrack',
		'Kingdom Hearts - III, II.8, Unchained χ & Union χ [Cross] - Original Soundtrack',
		{'Category:Concerts|Concerts': [
			'Kingdom Hearts Concert -First Breath-',
			'Kingdom Hearts Orchestra -World Tour-',
			'Kingdom Hearts Orchestra -World of Tres-',
		]},
	]},
];

wgSidebar['Merchandise'] = [
		{'Category:Merchandise|Figures': [
			'Play Arts Figures',
			'Formation Arts Figures',
			'Static Arts Figures',
		]},
		'Hot Topic Merchandise|Hot Topic',
		'Kingdom Hearts Trading Card Game|TCG',
		'Card:Main Page|TCG Wiki',
];

/**
 * 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 );