MediaWiki:Common.js: Difference between revisions
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( | .forEach(function(src){ | ||
importScript('MediaWiki:'+ | importScript('MediaWiki:'+src); | ||
}); | }); | ||
// | // 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');
}