/*
* This is a fork of [[User:Enterprisey/user-tabs-on-contribs.js]],
* as of https://en.wikipedia.org/w/index.php?oldid=916388347
*/
(() => {
if ((mw.config.get('wgNamespaceNumber') !== -1) ||
(mw.config.get('wgCanonicalSpecialPageName') !== 'Contributions'))
{
return;
}
/** Makes a tab linking to the given page name. redlink is a boolean indicating
* whether the page exists or not. */
function utocMakeTab( label, pageName, redlink, accesskey, id ) {
setTimeout(() => {
const previousVersion = document.querySelector(".emptyPortlet #" + id);
if (previousVersion) {
previousVersion.remove();
}
}, 0);
var tab = $( "<li>" ).append( $( "<a>" )
.text( label )
.attr( "accesskey", accesskey )
.attr( "title", pageName + " (access key " + accesskey + ")" )
.attr( "href", mw.util.getUrl( pageName ) ) )
.attr( "id", id );
if( redlink ) tab.addClass( "new" );
tab.addClass('vector-tab-noicon mw-list-item');
return tab;
}
function getUserPageTabName() {
const nsTabUser = mw.message('Nstab-user');
if (!nsTabUser) {
return "User page";
}
return nsTabUser.text();
}
function getUserTalkPageTabName() {
const nsTabTalk = mw.message('Nstab-talk');
if (!nsTabTalk || nsTabTalk.text().length === 0) {
const talk = mw.message('Talk');
if (!talk) {
return "Talk";
}
return talk.text();
}
return nsTabTalk.text();
}
$.when(
mw.loader.using( [ "mediawiki.api", "mediawiki.util" ] ),
$.ready
).then( function () {
/*
* Load localization messages:
* [[MediaWiki:Nstab-user talk]], [[MediaWiki:Nstab-user]], [[MediaWiki:Talk]]
*/
new mw.Api().loadMessagesIfMissing(['Nstab-user', 'Nstab-talk', 'Talk']).done(() => {
var username = mw.config.get( "wgTitle" ).substring( 14 ) || mw.util.getParamValue( "target" );
new mw.Api().get( {
action: "query",
titles: "User:" + username + "|User talk:" + username,
formatversion: "2"
} ).done( function ( data ) {
if( data && data.query && data.query.pages ) {
var userPageExists = true, userTalkPageExists = true;
Object.values( data.query.pages ).forEach( function ( v ) {
if( v.title.startsWith( "User:" ) ) userPageExists = v.hasOwnProperty( "missing" );
else userTalkPageExists = v.hasOwnProperty( "missing" );
} );
$('#p-associated-pages').removeClass('emptyPortlet');
const userPageTabName = getUserPageTabName();
const userTalkPageTabName = getUserTalkPageTabName();
$( "#left-navigation nav ul" )
.append(utocMakeTab(userPageTabName, "User:" + username, userPageExists, "c", "ca-nstab-user"))
.append(utocMakeTab(userTalkPageTabName, "User talk:" + username, userTalkPageExists, "t", "ca-nstab-talk"));
}
} );
});
} );
})();