User:Cacycle/myskinify.js
// replace Special:MySkin.js links with Special:MyPage/SKIN.js links (also for SKIN.css)
function MySkinify() {
// get content container for all skins but modern
var content = document.getElementById('content');
// modern skin
if (content == null) {
content = document.getElementById('mw-content');
}
// cycle through links
var links = content.getElementsByTagName('a');
for (var i = 0; i < links.length; i ++) {
var link = links[i];
// quick test
if (link.href.toLowerCase().indexOf('special:myskin.') > -1) {
// regexp replace and detection
var href = link.href.replace(/(\/|=)special:myskin.(js|css)($|\?|&)/i, '$1Special:MyPage/' + skin + '.$2$3'.toLowerCase());
if (link.href != href) {
link.href = href;
// fix redlink to blue
if (link.className == 'new') {
link.className = '';
}
// fix title
if (link.title != '') {
var title = 'User:' + mw.config.get('wgUserName') + '/' + skin;
if (href.indexOf('Special:MyPage/' + skin + '.css') > -1) {
link.title = title + '.css';
}
else {
link.title = title + '.js';
}
}
}
}
}
}
// execute after page load
if (mw.config.get('wgUserName') != null) {
addOnloadHook(MySkinify);
}