User:NguoiDungKhongDinhDanh/ContribsTabVector.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/* This script adds Contributions and Statistics tabs to User and User talk pages. For Vector skin.

This script was originally written by [[User:Equazcion]] and rewritten mostly from scratch by [[User:HueSatLum]].

To use this script, place the following line in your vector.js page:

	importScript('User:Equazcion/ContribsTabVector.js'); // Backlink: [[User:Equazcion/ContribsTabVector.js]]

CentralAuth added by NguoiDungKhongDinhDanh.

Add any or all of these lines after the importScript line above to set various options (the default values are shown):

	var contribsTab = true;                    // Turns the Contributions tab on or off (set to false; for off)
	var contribsTabStats = true;               // Turns the Statistics tab on or off (set to false; for off)
	var CATab = true;                          // Turns the CentralAuth tab on or off (set to false; for off)
	var contribsTabNumber = 50;                // Number of contributions to display in the Contributions tab. Can be 1 to 5000.
	var contribsTabName = "Contributions";     // Custom name for Contributions tab. Replace quoted text with your desired name.
	var contribsTabStatsName = "Statistics";   // Custom name for Statistics tab. Replace quoted text with your desired name.
	var CATabName = "CentralAuth";             // Custom name for CentralAuth tab. Replace quoted text with your desired name.
-- End of documentation -- */

mw.loader.using( ['mediawiki.util', 'mediawiki.Uri'], function () {
	"use strict";
	var username, firstTab, contribsTabUrl, contribsTabStatsUrl, CATabUrl;

	// Set default options for any that haven't been set
	function setDefault( option, val ) {
		if ( window[option] === undefined ) {
			window[option] = val;
		}
	}
	setDefault( 'contribsTabName', 'Ctrbs' );
	setDefault( 'contribsTabNumber', 50 );
	setDefault( 'contribsTabStats', true );
	setDefault( 'contribsTab', true );
	setDefault( 'contribsTabStatsName', 'Stats' );
	setDefault( 'CATabName', 'CA' );
	setDefault( 'CATab', true );	

	username = mw.config.get( 'wgRelevantUserName' );
	if ( !username ) {
		return; // Don't do anything if we're not on a page with a relevant username (i.e. User or User talk)
	}

	firstTab = $( '#p-views ul li' ).eq( 0 ); // Tab to put the new tabs before (usually "Read")

	if ( window.contribsTab ) { // Construct the contribs tab, if it's not turned off
		// Construct contribs URL
		contribsTabUrl = mw.util.getUrl( 'Special:Contributions', {
			target: username,
			limit: window.contribsTabNumber
		} );

		mw.util.addPortletLink(
			'p-views',
			contribsTabUrl,
			window.contribsTabName,
			'ca-contributions',
			'Show this user\'s contributions',
			null,
			firstTab
		);
	}

    if ( window.CATab ) { // Construct the CA tab, if it's not turned off
		// Construct CA URL
		contribsTabUrl = mw.util.getUrl( 'Special:CentralAuth', {
			target: username,
		} );

		mw.util.addPortletLink(
			'p-views',
			contribsTabUrl,
			window.CATabName,
			'ca-CA',
			'Show this user\'s CentralAuth',
			null,
			firstTab
		);
	}
	
	if ( window.contribsTabStats ) { // Construct the stats tab, if it's not turned off
		// Construct stats URL
		contribsTabStatsUrl = new mw.Uri( '//tools.wmflabs.org/xtools-ec/' )
			.extend( {
				user: username,
				project: mw.config.get( 'wgDBname' )
			} )
			.toString();

		mw.util.addPortletLink(
			'p-views',
			contribsTabStatsUrl,
			window.contribsTabStatsName,
			'ca-statistics',
			'Show this user\'s editing statistics',
			null,
			firstTab
		);
	}
} );