MediaWiki:Common.js: Difference between revisions

From Coral Island Wiki
Jump to navigation Jump to search
(the format varies per action so just make it easier to customize)
No edit summary
Line 6: Line 6:
'BetterDiff.js' // Aids with patrolling and with diff viewing on RC, page history and user contribs
'BetterDiff.js' // Aids with patrolling and with diff viewing on RC, page history and user contribs
]
]
.forEach(function(scr){
.forEach(function(src){
importScript('MediaWiki:'+scr);
importScript('MediaWiki:'+src);
});
});


// Add navigational keybinds
// Run when page content is added and loaded
mw.hook('wikipage.content').add(function(){
mw.hook('wikipage.content').add(function(){
// Add navigational keybinds
var actions = {
var actions = {
e: function(page){ return config.wgServer+mw.util.getUrl(page)+'?action=edit'; },
e: function(page){ return config.wgServer+mw.util.getUrl(page)+'?action=edit'; },
Line 34: Line 35:
});
});
}
}
// Run through sidebar to make sure classes align with collapse status
$('#mw-navigation > .collapsible-nav > nav').each(function(nav) {
if (getComputedStyle(nav).display!=='none') {
if (
nav.classList.contains('collapsed') &&
getComputedStyle(nav.querySelector('.vector-menu-content')).display!=='none'
) {
nav.classList.remove('collapsed');
nav.classList.add('expanded');
} else if (
nav.classList.contains('expanded') &&
getComputedStyle(nav.querySelector('.vector-menu-content')).display=='none'
) {
nav.classList.add('collapsed');
nav.classList.remove('expanded');
}
}
});
});
});



Revision as of 06:28, 12 July 2024

var config = mw.config.values;

// Load site JS
[
	'BetterUpload.js',	// Improvements to Special:Upload
	'BetterDiff.js'		// Aids with patrolling and with diff viewing on RC, page history and user contribs
]
.forEach(function(src){
	importScript('MediaWiki:'+src);
});

// Run when page content is added and loaded
mw.hook('wikipage.content').add(function(){
	// Add navigational keybinds
	var actions = {
		e: function(page){ return config.wgServer+mw.util.getUrl(page)+'?action=edit'; },
		h: function(page){ return config.wgServer+mw.util.getUrl(page)+'?action=history'; },
		m: function(page){ return config.wgServer+mw.util.getUrl('Special:MovePage/'+page); },
		d: function(page){ return config.wgServer+mw.util.getUrl(page)+'?action=delete'; },
	};
	if (config.wgAction=='view') {
		var url = new URL(document.location.href);
		var title = 
			url.searchParams.get('title') ||			// for `/w/index.php?title=XYZ` links
			url.pathname.replace(/^.*?wi?k?i?\//, '');	// for `/wiki/XYZ` links
		$(document).on('keydown', function(e) {
			var key = e.key.toLocaleLowerCase();
			if (
				actions[key] &&
				!(e.target && ['INPUT', 'TEXTAREA'].includes(e.target.nodeName)) &&
				config.wgCanonicalSpecialPageName===false
			) {
				document.location.href= actions[key](title);
			}
		});
	}
	
	// Run through sidebar to make sure classes align with collapse status
	$('#mw-navigation > .collapsible-nav > nav').each(function(nav) {
		if (getComputedStyle(nav).display!=='none') {
			if (
				nav.classList.contains('collapsed') &&
				getComputedStyle(nav.querySelector('.vector-menu-content')).display!=='none'
			) {
				nav.classList.remove('collapsed');
				nav.classList.add('expanded');
			} else if (
				nav.classList.contains('expanded') &&
				getComputedStyle(nav.querySelector('.vector-menu-content')).display=='none'
			) {
				nav.classList.add('collapsed');
				nav.classList.remove('expanded');
			}
		}
	});
});

// Load personal JS & CSS if logged in user
if (config.wgUserName && config.wgUserName.length>0) {
	importScript('User:'+config.wgUserName+'/common.js');
	importStylesheet('User:'+config.wgUserName+'/common.css');
}