User:DannyS712/ContribsTools.js
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.
/**
* Misc tools for Special:Contributions (and Special:Userrights)
*
* @author DannyS712
*/
// <nowiki>
$(() => {
const ContribsTools = {};
window.ContribsTools = ContribsTools;
ContribsTools.run = function () {
var username = mw.config.get( 'wgRelevantUserName' );
if ( username === null ) {
username = mw.config.get( 'wgPageName' ).replace( /^Special:Contributions\//, '' );
}
if ( mw.util.isIPAddress( username ) ) {
ContribsTools.addIpLinks( username );
} else {
ContribsTools.addUserLinks( username );
}
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Contributions' ) {
ContribsTools.countDeletedEdits( username );
}
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) !== 'Userrights' ) {
ContribsTools.countAFhits( username );
}
};
ContribsTools.addIpLinks = function ( ipAddress ) {
mw.util.addPortletLink(
'p-views',
'https://tools.wmflabs.org/guc/?src=rc&by=date&user=' + ipAddress,
'GUC',
'views-global',
'View global contributions'
);
mw.util.addPortletLink(
'p-views',
'https://ipcheck.toolforge.org/index.php?ip=' + ipAddress,
'IPCheck',
'views-global',
'Check if the IP is an open proxy'
);
var $links = $('#contentSub .mw-contributions-user-tools > .mw-changeslist-links');
$links.append(
$( '<span>' ).append(
$( '<a>' )
.attr( 'href', '/wiki/m:Special:Log/gblblock?page=User:' + ipAddress )
.text( 'global block log' )
)
);
};
ContribsTools.addUserLinks = function ( username ) {
username = encodeURIComponent( username );
mw.util.addPortletLink(
'p-views',
'https://meta.wikimedia.org/wiki/Special:CentralAuth/' + username,
'CentralAuth',
'views-global',
'View CentralAuth on Meta'
);
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Userrights' ) {
mw.util.addPortletLink(
'p-cactions',
'//meta.wikimedia.org/wiki/Special:Log?page=User:' + username + '@' + mw.config.get( 'wgDBname' ),
'Interwiki rights',
'',
'View rights changes made from meta'
);
}
};
ContribsTools.countAFhits = function ( username ) {
new mw.Api().get( {
action: 'query',
list: 'abuselog',
afluser: username,
aflprop: 'ids',
afllimit: 100,
formatversion: 2
} ).then(
function ( response ) {
console.log( response );
if ( response && response.query && response.query.abuselog ) {
var hitCount = response.query.abuselog.length;
if ( response.continue ) {
hitCount = hitCount + '+';
}
var abuseLogLink;
// Handle non-English sites having a link with the local name
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Contributions' ) {
abuseLogLink = $( 'span.mw-changeslist-links a[href*="AbuseLog"]' )[0];
if ( abuseLogLink === undefined ) {
abuseLogLink = $( 'span.mw-changeslist-links a:contains("abuse log")' )[0];
}
} else {
abuseLogLink = $( '#contentSub a[href*="AbuseLog"]' )[0];
if ( abuseLogLink === undefined ) {
abuseLogLink = $( '#contentSub a:contains("abuse log")' )[0];
}
}
if ( abuseLogLink === undefined ) {
console.log( 'ContribsTools: No abuse log link found, hit count: ' + hitCount );
} else {
$( abuseLogLink ).text( $( abuseLogLink ).text() + ' (' + hitCount + ')' );
}
}
},
function ( problem ) {
console.log( problem );
}
);
};
ContribsTools.countDeletedEdits = function ( username ) {
new mw.Api().get( {
action: 'query',
list: 'alldeletedrevisions',
adruser: username,
adrprop: 'ids',
adrlimit: 100,
formatversion: 2
} ).then(
function ( response ) {
console.log( response );
if ( response && response.query && response.query.alldeletedrevisions ) {
var delCount = 0;
response.query.alldeletedrevisions.forEach(
function ( pageInfo ) {
delCount += pageInfo.revisions.length;
}
);
if ( response.continue ) {
delCount = delCount + '+';
}
// Handle non-English sites having a link with the local name
var delContribsLink = $( 'span.mw-changeslist-links a[href*="DeletedContributions"]' )[0];
if ( delContribsLink === undefined ) {
delContribsLink = $( 'span.mw-changeslist-links a:contains("deleted user contributions")' )[0];
}
if ( delContribsLink === undefined ) {
console.log( 'ContribsTools: No deleted contributions link found, count: ' + delCount );
} else {
$( delContribsLink ).text( $( delContribsLink ).text() + ' (' + delCount + ')' );
}
}
},
function ( problem ) {
console.log( problem );
}
);
};
});
$( document ).ready(
function () {
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Contributions'
|| mw.config.get( 'wgCanonicalSpecialPageName' ) === 'DeletedContributions'
|| mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Userrights'
) {
mw.loader.using(
[ 'mediawiki.util', 'mediawiki.api' ],
window.ContribsTools.run
);
}
}
);
// </nowiki>