User:Andrybak/Scripts/user-tabs-on-contribs.js

/* * 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( "wgPageName" ).indexOf( "Special:Contributions/" ) === 0 ||		mw.config.get( "wgPageName" ).indexOf( "Special:Contributions" ) === 0 && mw.util.getParamValue( "target" ) ) {

/** 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 = $( "" ).append( $( "" )					.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"));				}			} ); });	} ); }