Jump to content

User:JJMC89/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)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
// <nowiki>
/*******************************************************************************
* Variables
*******************************************************************************/
lwgGlobalGroups = mw.config.get( 'wgGlobalGroups', [] );
lwgScript = mw.config.get( 'wgScript' );
lwgUserGroups = mw.config.get( 'wgUserGroups' );
lwgUserName = mw.config.get( 'wgUserName' );
lwgNamespaceNumber = mw.config.get( 'wgNamespaceNumber' );
lwgPageName = mw.config.get( 'wgPageName' );
lwgServerName = mw.config.get( 'wgServerName' );

/*******************************************************************************
* Functions
*******************************************************************************/

function importMwScript( page, family, lang ) {
	$.when( $.ready, mw.loader.using( ['mediawiki.util'] ) ).then( function() {
		if ( typeof family === 'undefined' && typeof lang === 'undefined' ) {
			console.log( 'Loading ' + page );
			mw.loader.load( lwgScript + '?title=' + mw.util.wikiUrlencode( page ) + '&action=raw&ctype=text/javascript' );
		} else {
			if ( typeof family === 'undefined' ) {
				family = 'wikipedia';
			} else if ( typeof lang === 'undefined' ) {
				lang = 'en';
			}
			console.log( 'Loading script: ' + lang + ':' + family + ':' + page );
			mw.loader.load( 'https://' + mw.util.wikiUrlencode( lang + '.' + family + '.org' ) + lwgScript + '?title=' + mw.util.wikiUrlencode( page ) + '&action=raw&ctype=text/javascript' );
		}
	} );
}

function importMwStylesheet( page, family, lang ) {
	$.when( $.ready, mw.loader.using( ['mediawiki.util'] ) ).then( function() {
		if ( typeof family === 'undefined' && typeof lang === 'undefined' ) {
			console.log( 'Adding ' + page );
			mw.loader.load( lwgScript + '?title=' + mw.util.wikiUrlencode( page ) + '&action=raw&ctype=text/css', 'text/css' );
		} else {
			if ( typeof family === 'undefined' ) {
				family = 'wikipedia';
			} else if ( typeof lang === 'undefined' ) {
				lang = 'en';
			}
			console.log( 'Loading stylesheet: ' + lang + ':' + family + ':' + page );
			mw.loader.load( 'https://' + mw.util.wikiUrlencode( lang + '.' + family + '.org' ) + lwgScript + '?title=' + mw.util.wikiUrlencode( page ) + '&action=raw&ctype=text/css', 'text/css' );
		}
	} );
}

/*******************************************************************************
* Links
*******************************************************************************/

$.when( $.ready, mw.loader.using( ['mediawiki.util'] ) ).then( function() {

	// Don't open red links in edit mode
	$( function() {
	    var $alinks = mw.util.$content.find( 'a.new' )
	    .each( function(i, aa) {
	        aa.href = aa.href.replace(/[?&]action=edit/,'');
	    });
	});

	// My subpages
	mw.util.addPortletLink(
		'p-personal',
		mw.util.getUrl( 'Special:PrefixIndex/User:' ) + mw.util.wikiUrlencode( lwgUserName + '/' ),
		'Subpages',
		'pt-subpages',
		'Your subpages',
		null,
		'#pt-preferences'
	);
	
	// Subpages of current page
	mw.util.addPortletLink(
		'p-tb',
		mw.util.getUrl( 'Special:PrefixIndex/' ) + mw.util.wikiUrlencode( lwgPageName + '/' ),
		'Subpages',
		't-subpages',
		'Subpages of this page',
		null,
		'#t-recentchangeslinked'
	);

} );

/*******************************************************************************
* Scripts for all namespaces
*******************************************************************************/

/* Automatically submit the purge confirmation */
if ( mw.config.get( 'wgAction' ) === 'purge' ) {
	$('form.mw-htmlform').submit();
}

/**
 * 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' );

// [[:en:User:Cacycle/wikEd]]
( function () {
	var script = document.createElement( 'script' );
	script.src = '//en.wikipedia.org/w/index.php?title=User:Cacycle/wikEd.js&action=raw&ctype=text/javascript';
	script.async = true;
	document.getElementsByTagName( 'head' )[ 0 ].appendChild( script );
} ) ();

if ( mw.config.get( 'wgAction' ) !== 'edit' ) {
	importMwScript( 'User:Volker E. (WMF)/dark-mode.js', 'wikipedia' ); // [[:en:User:Volker E. (WMF)/dark-mode]]
}

importMwScript( 'MediaWiki:MoreMenu.import.js', 'wikimedia', 'meta' ); // [[MoreMenu]]

importMwScript( 'User:BrandonXLF/NoRedirect.js', 'wikipedia' ); // [[:en:User:BrandonXLF/NoRedirect]]

var autolinkParseLink = false; // Links in diffs will be parsed by wikEd
importMwScript( 'User:Lenore/autolink.js', 'wikipedia' ); // [[:en:User:Lenore/autolink]]

importMwScript( 'User:Anomie/useridentifier.js', 'wikipedia' ); // [[:en:User:Anomie/useridentifier.js]]

importMwScript( 'MediaWiki:Gadget-markblocked.js', 'wikipedia' ); // Mark blocked users

importMwScript( 'User:GeneralNotability/mark-locked.js', 'wikipedia' ); // [[:en:User:GeneralNotability/mark-locked.js]]

importMwScript( 'User:GeneralNotability/cumarkips.js', 'wikipedia' ); // [[:en:User:GeneralNotability/cumarkips.js]]

importMwScript( 'User:GeneralNotability/ip-ext-info.js', 'wikipedia' ); // [[:en:User:GeneralNotability/ip-ext-info.js]]

// [[:en:User:Anomie/lastmod]]
window.LastModRelative = true;
importMwScript( 'User:Anomie/lastmod.js', 'wikipedia' ); // [[:en:User:Anomie/lastmod.js]]
importMwStylesheet( 'User:Anomie/lastmod.css', 'wikipedia' ); // [[:en:User:Anomie/lastmod.css]]

importMwScript( 'User:PleaseStand/userinfo.js', 'wikipedia' ); // [[:en:User:PleaseStand/User info]]

// [[:en:User:Writ Keeper/Scripts/commonHistory]]
inspectText = '+';
showText = '+';
hideText = '-';
importMwScript( 'User:Writ Keeper/Scripts/commonHistory.js', 'wikipedia' );

importMwScript( 'XTools/ArticleInfo.js', 'mediawiki', 'www' ); // [[:mw:XTools]]

importMwScript( 'User:Enterprisey/copy-section-link.js', 'wikipedia' ); // [[:en:User:Enterprisey/copy-section-link]]

importMwScript( 'User:Enterprisey/diff-permalink.js', 'wikipedia' ); // [[:en:User:Enterprisey/diff-permalink]]

importMwScript( 'User:Enterprisey/section-redir-note.js', 'wikipedia' ); // [[:en:User:Enterprisey/section-redir-note]]

importMwScript( 'User:Nardog/Consecudiff.js', 'wikipedia' ); // [[:en:User:Nardog/Consecudiff]]

importMwScript( 'User:Nardog/MoveHistory.js', 'wikipedia' ); // [[:en:User:Nardog/MoveHistory]]

importMwScript( 'User:Xiplus/TwinkleGlobal/load.js', 'wikimedia', 'meta'); // [[:User:Xiplus/TwinkleGlobal]]

importMwScript( 'User:Krinkle/Scripts/CVNSimpleOverlay wiki.js', 'wikimedia', 'meta'); // [[:User:Krinkle/Scripts/CVNSimpleOverlay wiki.js]]

/*******************************************************************************
* Scripts by namespace
*******************************************************************************/

if ( [ 0, 2, 118 ].indexOf( lwgNamespaceNumber ) !== -1 ) { // Main, user, draft
	
	importMwScript( 'Benutzer:TMg/autoFormatter.js', 'wikipedia', 'de' ); // [[:en:User:TMg/autoFormatter]]

	importMwScript( 'User:Frietjes/findargdups.js', 'wikipedia' ); // [[:en:User:Frietjes/findargdups]]
	
	// [[:en:Wikipedia:AutoEd]]
	autoEdClick = false; // Disables the diff page from opening automatically (required for wikEd compatability)
	importMwScript( 'Wikipedia:AutoEd/complete.js', 'wikipedia' );
	
	importMwScript( 'User:Zhaofeng_Li/Reflinks.js', 'wikimedia', 'meta' ); // [[:en:User:Zhaofeng Li/reFill]]

} else if ( lwgNamespaceNumber === 6 ) { // File

	importMwScript( 'User:Rillke/SVGedit.js', 'wikimedia', 'commons' ); // [[:c:User:Rillke/SVGedit.js]]
	
} else if ( lwgNamespaceNumber === 14 ) { // Category

	// [[:en:User:Nardog/CatChangesViewer]]
	window.catchangesviewerDefaultLimit = 500;
	window.catchangesviewerChangesPerPage = 500;
	importMwScript( 'User:Nardog/CatChangesViewer.js', 'wikipedia' );
	
	// [[:c:Help:Gadget-Cat-a-lot]]
	mw.loader.using( ['jquery.ui', 'mediawiki.util'], function() {
		mw.loader.load( '//commons.wikimedia.org/w/load.php?modules=ext.gadget.Cat-a-lot' );
	});

} else if ( lwgNamespaceNumber === -1 ) { // Special
	
	// [[:en:User:Evad37/Watchlist-openUnread]]
	var openUnread_oldest = true;
	importMwScript( 'User:Evad37/Watchlist-openUnread.js', 'wikipedia' );
	
	importMwScript( 'User:Firefly/more-block-info.js', 'wikipedia' ); // [[:en:User:Firefly/more-block-info]]
	
	importMwScript( 'User:Tks4Fish/CARedirect.js', 'wikimedia', 'meta' ); // [[User:Tks4Fish/CARedirect.js]]
	
	importMwScript( 'User:Tks4Fish/CAWhoisProxy.js', 'wikimedia', 'meta' ); // [[User:Tks4Fish/CAWhoisProxy.js]]
	
	importMwScript( 'User:Bradv/endlesscontribs.js', 'wikipedia' ); // [[:en:User:Bradv/endlesscontribs.js]]
	
} else {
	
	importMwScript( 'User:Ais523/votesymbols.js', 'wikipedia' ); // [[:en:User:Ais523/votesymbols.js]]
	
}

/*******************************************************************************
* Scripts by rights
*******************************************************************************/

mw.hook('moremenu.ready').add(function (config) {
	
	var myrights = config.currentUser.rights;
	
	if ( myrights.indexOf( 'rollback' ) !== -1 ) {
	
		// [[:User:Dragoniez/Selective Rollback]]
		importMwScript( 'User:Dragoniez/Selective Rollback.js', 'wikimedia', 'meta' );
		if ( typeof( selectiveRollbackConfig ) === 'undefined' ) selectiveRollbackConfig = {};
		if ( typeof( selectiveRollbackConfig.editSummaries ) === 'undefined' ) selectiveRollbackConfig.editSummaries = {};
		if ( typeof( selectiveRollbackConfig.lang ) === 'undefined' ) selectiveRollbackConfig.lang = 'en';
		if ( typeof( selectiveRollbackConfig.markBot ) === 'undefined' ) selectiveRollbackConfig.markBot = false;
		if ( typeof( selectiveRollbackConfig.showKeys ) === 'undefined' ) selectiveRollbackConfig.showKeys = true;
		if ( typeof( selectiveRollbackConfig.watchPage ) === 'undefined' ) selectiveRollbackConfig.watchPage = false;
		selectiveRollbackConfig.editSummaries.Hidden = 'Reverted to revision $3';
		selectiveRollbackConfig.editSummaries.ContentRemoval = selectiveRollbackConfig.editSummaries.Hidden + ': unexplained removal of content';
		selectiveRollbackConfig.editSummaries.CWA = selectiveRollbackConfig.editSummaries.Hidden + ': cross-wiki abuse';
		selectiveRollbackConfig.editSummaries.LTA = selectiveRollbackConfig.editSummaries.Hidden + ': long-term abuse';
		selectiveRollbackConfig.editSummaries.Spam = selectiveRollbackConfig.editSummaries.Hidden + ': spam';
		
	}
	
	if ( myrights.includes( 'delete' ) ) {
		
		importMwScript( 'User:AntiCompositeNumber/CleanDeleteReasons.js', 'wikimedia', 'meta' ); // [[:User:AntiCompositeNumber/CleanDeleteReasons.js]]
		
	}
	
	if ( lwgNamespaceNumber === -1 && myrights.includes( 'deleterevision' ) ) {
	
		importMwScript( 'User:Writ Keeper/Scripts/massRevdel.js', 'wikipedia' ); // [[:en:User:Writ Keeper/Scripts/massRevdel.js]]
	
	}
	
	if ( myrights.includes( 'deletedtext' ) ) {
	
		importMwScript( 'User:Enterprisey/link-deleted-revs.js', 'wikipedia' ); // [[:en:User:Enterprisey/link-deleted-revs]]
	
	}
	
	if ( myrights.includes( 'block' ) && myrights.includes( 'delete' ) ) {
		
		// [[:User:WhitePhosphorus/all-in-one]]
		importMwScript( 'User:WhitePhosphorus/js/all-in-one.js', 'wikimedia', 'meta' );
		if ( typeof( p4js_all_in_one ) === 'undefined' ) p4js_all_in_one = {};
		if ( typeof( p4js_all_in_one.packages ) === 'undefined' ) p4js_all_in_one.packages = {};
		p4js_all_in_one.packages.Vandalism = {
			tracingedits: {
				duration: 111600,
				indefregistered: true,
			},
			rollback: {
				enabled: true,
				bot: false,
				showname: true,
			},
			block: {
				enabled: true,
				duration: '31 hours',
				indefregistered: true,
				reason: 'Vandalism',
				autoblock: true,
				hardblock: false,
				create: true,
				talk: false,
				mail: false,
				hidename: false,
			},
			pagedelete: {
				enabled: true,
				reason: 'Vandalism',
			},
			revisiondelete: {
				enabled: false,
				content: true,
				summary: true,
				username: false,
				reason: 'Blatantly offensive material',
				oversight: false,
			},
		};
		p4js_all_in_one.packages.VOA = JSON.parse( JSON.stringify( p4js_all_in_one.packages.Vandalism ) );
		p4js_all_in_one.packages.VOA.block.reason = 'Vandalism-only account';
		p4js_all_in_one.packages.VOA.block.hardblock = true;
		p4js_all_in_one.packages.Spam = JSON.parse( JSON.stringify( p4js_all_in_one.packages.Vandalism ) );
		p4js_all_in_one.packages.Spam.block.reason = 'Spam';
		p4js_all_in_one.packages.Spam.pagedelete.reason = 'Spam';
		p4js_all_in_one.packages.SOA = JSON.parse( JSON.stringify( p4js_all_in_one.packages.Spam ) );
		p4js_all_in_one.packages.SOA.block.reason = 'Spam-only account';
		p4js_all_in_one.packages.SOA.block.hardblock = true;
		p4js_all_in_one.packages.LTA = JSON.parse( JSON.stringify( p4js_all_in_one.packages.Vandalism ) );
		p4js_all_in_one.packages.LTA.rollback.showname = false;
		p4js_all_in_one.packages.LTA.block.reason = 'Long-term abuse';
		p4js_all_in_one.packages.LTA.block.hardblock = true;
		p4js_all_in_one.packages.LTA.block.talk = true;
		p4js_all_in_one.packages.LTA.revisiondelete.reason = 'Purely disruptive material';
		if ( lwgServerName.includes( 'beta' ) ) {
			p4js_all_in_one.packages.SOA.block.talk = true;
			p4js_all_in_one.packages.VOA.block.talk = true;
			p4js_all_in_one.default_package = 'SOA';
		} else {
			p4js_all_in_one.default_package = 'LTA';
		}

	}
	
	if ( myrights.includes( 'checkuser' ) || /* MoreMenu caching */lwgUserGroups.includes( 'checkuser' ) ) {
		
		mw.loader.load('//tnt.toolforge.org/js/CheckUserHelper/CheckUserHelper.js');
		
		importMwScript( 'User:GeneralNotability/InvestorGoat.js', 'wikipedia' ); // [[:en:User:GeneralNotability/InvestorGoat.js]]
		
	}
	
	if ( myrights.includes( 'checkuser-log' ) ) {
		
		importMwScript( 'User:L235/culoghelper-personaltesting.js', 'wikipedia' ); // [[:en:User:L235/culoghelper-personaltesting.js]]
		
	}
	
	if ( myrights.includes( 'suppressrevision' ) || /* MoreMenu caching */lwgUserGroups.includes( 'suppress' ) ) {

		importMwScript( 'User:JJMC89/add-suppress-reasons.js', 'wikimedia', 'meta' ); // [[:User:JJMC89/add-suppress-reasons.js]]
	
	}
	
});


/*******************************************************************************
* GS/Steward scripts
*******************************************************************************/
if ( !lwgServerName.includes( 'beta' ) ) {
	
	if ( [ 'global-sysop', 'steward' ].some( i => lwgGlobalGroups.includes( i ) ) && ![ 'sysop', 'contentadmin' ].some( i => lwgUserGroups.includes( i ) ) ) {
		
		importMwScript( 'User:WhitePhosphorus/js/active sysops.js', 'wikimedia', 'meta' ); // [[:User:WhitePhosphorus/active sysops]]
		
		importMwScript( 'User:WhitePhosphorus/js/GS Rationale.js', 'wikimedia', 'meta' ); // [[:User:WhitePhosphorus/GS Rationale]]
		
		importMwScript( 'User:Elton/HideButtonsFromNonGsProjects.js', 'wikimedia', 'meta' ); // [[:User:Elton/HideButtonsFromNonGsProjects.js]]
	}
	
	if ( lwgGlobalGroups.includes( 'steward' ) ) {
		
		importMwScript( 'User:AntiCompositeNumber/stewserrights.js', 'wikimedia', 'meta' ); // [[:User:AntiCompositeNumber/stewserrights.js]]
		
		importMwScript( 'User:Erwin/stewardlinks.js', 'wikimedia', 'meta' ); // [[:User:Erwin/stewardlinks.js]]
		
	}

}
// </nowiki>