User:RadiX/global.js

From Meta, a Wikimedia project coordination wiki

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.
// Twinkle
mw.loader.load("//www.wikidata.org/w/index.php?title=User:Yair rand/WikidataInfo.js&action=raw&ctype=text/javascript"); // Backlink: [[d:User:Yair rand/WikidataInfo.js]]

if ( (mw.config.get("wgDBname") !== "wikidatawiki") && (mw.config.get("wgDBname") !== "testwikidatawiki") ) { // Don't work in Wikidata
    // Fork of Twinkle intended to work on as many wikis as possible, copied from JavaHurricane
    mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Xiplus/TwinkleGlobal.js&action=raw&ctype=text/javascript');
}

/**
 * Tagger for eg. Speedy deletions
 * by [[m:user:Hoo man]] <http://meta.wikimedia.org/wiki/User:Hoo_man/tagger.js>
 * [[File:Hoo man/tagger.js]]
 */
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Hoo_man/tagger.js&action=raw&ctype=text/javascript');

//<nowiki>
if(typeof(taggerConfig) == 'undefined') taggerConfig = {};
taggerConfig.tags = [];
taggerConfig.editSummary = [];
taggerConfig.tags[1] = '{{delete|Nonsense.}}';
taggerConfig.editSummary[taggerConfig.tags[1]] = '{{delete}} - No meaningful content';
taggerConfig.tags[2] = '{{delete|Out of scope for this wiki.}}';
taggerConfig.editSummary[taggerConfig.tags[2]] = '{{delete}} - Off-topic page';
taggerConfig.tags[3] = '{{delete|Spam.}}';
taggerConfig.editSummary[taggerConfig.tags[3]] = '{{delete}} - Spam';
taggerConfig.tags[4] = '{{delete|Vandalism.}}';
taggerConfig.editSummary[taggerConfig.tags[4]] = '{{delete}} - Vandalism';
taggerConfig.tags[5] = '{{delete|Blanked by author.}}';
taggerConfig.editSummary[taggerConfig.tags[5]] = '{{delete}} - Blanked by author';
taggerConfig.tags[6] = '{{delete|Editing test.}}';
taggerConfig.editSummary[taggerConfig.tags[6]] = '{{delete}} - Editing test';
taggerConfig.tags[7] = '{{delete|No content whatsoever.}}';
taggerConfig.editSummary[taggerConfig.tags[7]] = '{{delete}} - No content whatsoever';
taggerConfig.tags[8] = '{{delete|Cross-wiki vandalism.}}';
taggerConfig.editSummary[taggerConfig.tags[8]] = '{{delete}} - Cross-wiki vandalism';
taggerConfig.tags[9] = '{{delete|Cross-wiki spam.}}';
taggerConfig.editSummary[taggerConfig.tags[9]] = '{{delete}} - Cross-wiki spam';
taggerConfig.tags[10] = '{{delete|Spambot or vandalbot.}}';
taggerConfig.editSummary[taggerConfig.tags[10]] = '{{delete}} - Spambot';
taggerConfig.tags[11] = '{{delete|Not written in this project language.}}';
taggerConfig.editSummary[taggerConfig.tags[11]] = '{{delete}} - Not written in this project language';
taggerConfig.tags[12] = '{{delete|Long-term vandal/abuser.}}';
taggerConfig.editSummary[taggerConfig.tags[12]] = '{{delete}} - LTA';
taggerConfig.tags.other = 'This is used for the option you have to select to be able to insert a custom template';
//</nowiki>

/**
 * Forces left-to-right layout and editing on RTL wikis.
 * @see https://meta.wikimedia.org/wiki/Force_ltr
 * @update-token [[File:pathoschild/forceltr.js]]
 */
mw.loader.load('//tools-static.wmflabs.org/meta/scripts/pathoschild.forceltr.js');

/**
 * CVN Overlay
 * https://github.com/countervandalism/mw-gadget-cvnoverlay
 * @license https://krinkle.mit-license.org/
 * @author Timo Tijhof, 2010–2016
 */
// [[File:Krinkle_CVNSimpleOverlay_wiki.js]]
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Krinkle/Scripts/CVNSimpleOverlay_wiki.js&action=raw&ctype=text/javascript');
mw.loader.load('//incubator.wikimedia.org/w/index.php?title=MediaWiki:Gadget-UTCLiveClock.js&action=raw&ctype=text/javascript');

/**
 * Shows the number of active sysops
 * by [[m:user:Hoo man]] <http://meta.wikimedia.org/wiki/User:Hoo_man/active_sysops.js>
 * [[File:Hoo man/active_sysops.js]]
 */ 
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Hoo_man/active_sysops.js&action=raw&ctype=text/javascript');

/**
 * Provides several usefull functions for rollback (custom edit summary, mark as bot edits and mass revert)
 * by [[m:user:Hoo man]] <http://meta.wikimedia.org/wiki/User:Hoo_man/smart_rollback.js>
 * [[File:Hoo man/smart_rollback.js]]
 */
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Hoo_man/smart_rollback.js&action=raw&ctype=text/javascript');

/**
 * Gives some usefull links on user, user talk and user contribution pages
 * by [[m:user:Hoo man]] <http://meta.wikimedia.org/wiki/User:Hoo_man/useful_links.js>
 * [[File:Hoo man/useful_links.js]]
 */
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Hoo_man/useful_links.js&action=raw&ctype=text/javascript');

/**
 * StewardScript extends the user interface for Wikimedia stewards' convenience.
 * @see https://meta.wikimedia.org/wiki/StewardScript
 * @update-token [[File:pathoschild/stewardscript.js]]
 */
mw.loader.load('//tools-static.wmflabs.org/meta/scripts/pathoschild.stewardscript.js');
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Glaisher/cuCAMultiLock.js&action=raw&ctype=text/javascript');
mw.loader.load('//login.wikimedia.org/wiki/Special:MassGlobalBlock');

/**
 * Script for suppressing global usernames
 * by [[m:user:DerHexer]] <https://meta.wikimedia.org/wiki/User:DerHexer/hideuser.js>
 */
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:DerHexer/hideuser.js&action=raw&ctype=text/javascript');

/**
 *A tool very similar to the Nuke extension, but with more features
 * by [[m:user:Hoo man]] <http://meta.wikimedia.org/wiki/User:Hoo_man/Scripts/SledgeHammer>
 */
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Hoo_man/sledgeHammer.js&action=raw&ctype=text/javascript');

/**
 * Link to find where an IP was active
 * by [[User:DannyS712]]
 */
mw.loader.load("//meta.wikimedia.org/w/index.php?title=User:DannyS712/FindIPActivity.js&action=raw&ctype=text/javascript");

/**
* StewardLinks
* by [[m:User:Erwin]]
*/
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Erwin/stewardlinks.js&action=raw&ctype=text/javascript');

/**
* [[m:user:Hoo man]]; Version 3.0; 2013-01-13;
* Gives some useful links on user, user talk and user contribution pages
* Tested in IE and FF with vector and monobook, uses my (Hoo man) wiki tools (shared.js)
*
* DO NOT COPY AND PASTE, instead see https://meta.wikimedia.org/wiki/User:Hoo_man/Scripts/Useful_links
*/

/*global hoo, mw, usefulLinksConfig, usefulLinksTools, usefulLinksUserTools, usefulLinksIpTools, disable_useful_links */
/*jshint forin:false, noarg:true, noempty:true, eqeqeq:true, loopfunc:true, bitwise:true, undef:true, browser:true, jquery:true, indent:4, maxerr:50, white:false */

mw.loader.using( [ 'mediawiki.util' ], function() {
	"use strict";

	// Default config, overwrite using 'usefulLinksConfig'
	var config = {
			useFoldedMenu : true
		},
		tools, userTools, ipTools;

	/**
		Default tools:
		To add a tool in you personal js just do the same as below, but replace the "blah." out of the variable names, with the ones given in the comments.
		To remove one, just set them to null. Example:
			if ( typeof usefulLinksUserTools === 'undefined' ) usefulLinksUserTools = {};	//user only tools
			usefulLinksUserTools.xEditCounter = null;
		to disable X!'s edit counter
		($1: username - $2: lang code - $3: wiki code - $4: server address + script path)
	**/

	// Tools for all users (can be overwritten using usefulLinksTools instead of tools in your own JS)
	// Global contribs
	tools = {
		// Stalk
	stalk: {
			url: '//tools.wmflabs.org/meta/stalktoy/?target=$1',
			linkText: 'Stalk'
    	},
		// Gcheck
	check: {
			url: '//login.wikimedia.org/wiki/Special:CheckUser/$1',
			linkText: 'GCheck'
		}
	};

	// User tools for all logged-in users (can be overwritten using usefulLinksUserTools instead of userTools in your own JS)
	userTools = {
		// Spam Blacklist log
		sbl: {
			url: '$4/Special:Log?type=spamblacklist&user=$1',
			linkText: 'Spam log'
		}
	};

	// IP tools for all logged-out users (can be overwritten using usefulLinksIpTools instead of ipTools in your own JS)
	ipTools = {
			// IP info 
	ipinfo: {
			url: '//whatismyipaddress.com/ip/$1',
			linkText: 'IP info'
       	}, 
    	// Quality score
		scores: {
			url: '//www.ipqualityscore.com/free-ip-lookup-proxy-vpn-test/lookup/$1',
			linkText: 'QScore'
		},
		// Spam check
	spamcheck: {
			url: 'https://www.stopforumspam.com/ipcheck/$1',
			linkText: 'Spam reports'
		},
		// IPCheck
	ipcheck: {
			url: '//tools.wmflabs.org/ipcheck/index.php?ip=$1',
			linkText: 'IPCheck'
		},
		// Global block
	gblock: {
			url: '//meta.wikimedia.org/wiki/Special:GlobalBlock/$1',
			linkText: 'Global block'
		}
	};

	function init() {
		var toolURI, username, i, lang;

		if ( typeof disable_useful_links !== 'undefined' && disable_useful_links ) {
			return false;
		}

		// Custom config
		if ( typeof usefulLinksConfig !== 'undefined' ) {
			if ( typeof usefulLinksConfig.toolLinkMethod !== 'undefined' && usefulLinksConfig.toolLinkMethod !== 'toolbar' ) {
				// Disable folded menus if the user selected another link method than toolbar
				if ( typeof usefulLinksConfig.toolLinkMethod === 'undefined' || usefulLinksConfig.useFoldedMenu !== true ) {
					// But only if he/she didn't explicitly enable it
					config.useFoldedMenu = false;
				}
			}
			$.extend( config, usefulLinksConfig );
		}

		// i18n
		if ( config.lang ) {
			lang = config.lang;
		} else {
			lang = hoo.config.lang;
		}

		if ( lang === 'de' ) {
			mw.messages.set( 'hoo-usefulLinks-toolbarText', 'Nützliche Links' );
		} else {
			mw.messages.set( 'hoo-usefulLinks-toolbarText', 'Useful links' );
		}

		if ( typeof usefulLinksTools !== 'undefined' ) {
			$.extend( tools, usefulLinksTools );
		}
		if ( typeof usefulLinksUserTools !== 'undefined' ) {
			$.extend( userTools, usefulLinksUserTools );
		}
		if ( typeof usefulLinksIpTools !== 'undefined' ) {
			$.extend( ipTools, usefulLinksIpTools );
		}

		if ( typeof config.toolLinkMethod === 'undefined' ) {
			config.toolLinkMethod = hoo.config.toolLinkMethod;
		}

		// Get user name
		if ( mw.config.get( 'wgCanonicalNamespace' ) === 'User' || mw.config.get( 'wgCanonicalNamespace' ) === 'User_talk' ) {
			// User or user talk page
			username = mw.config.get( 'wgTitle' ).match( /([^\/]+)/ )[1];
		} else if ( mw.config.get( 'wgCanonicalNamespace' ) === 'Special' && mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Contributions' ) {
			// Special:Contributions
			if ( window.location.href.indexOf( '&' ) === -1 ) {
				// Request like Special:Contributions/Username
				username = mw.config.get( 'wgTitle' ).substring( mw.config.get( 'wgTitle' ).lastIndexOf( '/' ) +1 );
			} else {
				username = mw.util.getParamValue( 'target' );
			}
			// We're already on the contribs page
			tools.contribs = null;
		} else {
			return;
		}

		if ( !mw.util.isIPv4Address( username ) && !mw.util.isIPv6Address( username ) ) {
			// Registered user
			$.extend( tools, userTools);
		} else {
			$.extend( tools, ipTools );
		}

		if ( config.useFoldedMenu && config.toolLinkMethod === 'toolbar' ) {
			// Create parent for folded menu
			hoo.addToolLink(
				mw.messages.get( 'hoo-usefulLinks-toolbarText' ),
				function() { return false; },
				'usefulLinksMenu',
				'toolbar'
			);
		}

		// Add links
		for ( i in tools ) {
			if ( tools[i] === null || typeof tools[i].url === 'undefined' ) {
				continue;
			}
			toolURI = tools[i].url
				.replace( /\$1/g, username )
				.replace( /\$2/g, mw.config.get( 'wgWikiName' ) )
				.replace( /\$3/g, mw.config.get( 'wgWikiFamily' ) )
				.replace( /\$4/g, mw.config.get( 'wgServer' ) + mw.config.get( 'wgScript' ) );

			if ( config.useFoldedMenu && config.toolLinkMethod === 'toolbar' ) {
				hoo.addSubLink(
					'usefulLinksMenu',
					tools[i].linkText,
					toolURI
				);
			} else {
				hoo.addToolLink(
					tools[i].linkText,
					toolURI,
					'',
					config.toolLinkMethod
				);
			}
		}
	}

	// Load the shared functions script if needed
	if ( typeof hoo === 'undefined' || typeof hoo.addToolLink  === 'undefined' ) {
		$.ajax( {
			url: '//meta.wikimedia.org/w/index.php?title=User:Hoo_man/functions.js&action=raw&ctype=text/javascript',
			dataType: 'script',
			cache: true
		} )
		.done(
			function() {
				$( document ).ready( init );
			}
		);
	} else {
		$( document ).ready( init );
	}
} );