User:Xiplus/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.
/* 反importScript */
var whitelist = ["Xiplus", "A2093064-test", "A2093064-bot"];
if (mw.config.get('wgUserName') && whitelist.indexOf(mw.config.get('wgUserName')) === -1) {
	alert("請勿importScript User:Xiplus/common.js!可能有未預期的危害發生。");
	throw new Error();
}

console.log("using User:Xiplus/global.js");


mw.loader.using(['mediawiki.util']).done(function() {
	/* mediawiki.util */
	mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/api-query.js&action=raw&ctype=text/javascript');

	// mw.loader.load('https://xiplus.ddns.net/Xiplus-zhWP/APIedit.js');
	mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/APIedit.js&action=raw&ctype=text/javascript');
	mw.loader.using(['mediawiki.util']).done(function() {
		mw.loader.load('https://en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-ShowMessageNames.js&action=raw&ctype=text/javascript');
	});
	// [[File:Krinkle_CVNSimpleOverlay_wiki.js]]
	mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Krinkle/Scripts/CVNSimpleOverlay_wiki.js&action=raw&ctype=text/javascript');
	mw.loader.load("https://zh.wikipedia.org/w/index.php?title=User:Bluedeck/serve/edit-count.js&action=raw&ctype=text/javascript");
	mw.loader.load('//en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-edittop.js&action=raw&ctype=text/javascript');
	mw.loader.load("https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/section-link.js&action=raw&ctype=text/javascript");

	/* wikiplus */
	mw.loader.load('https://wikiplus-app.com/Main.min.js');
	(function() {
		function wikiplusSettingdefaultSummary(w) {
			if (w.sectionNumber == -1) {
				return ' ';
			}
			if (w.sectionNumber == 0) {
				return '/* top */ ';
			}
			return '/* ' + w.sectionName + ' */ ';
		}
		var wikiplusSetting = {
			"defaultSummary": wikiplusSettingdefaultSummary.toString().replace(/\s+/g, " "),
			"documatation": "http://zh.moegirl.org/User:%E5%A6%B9%E7%A9%BA%E9%85%B1/Wikiplus/%E8%AE%BE%E7%BD%AE%E8%AF%B4%E6%98%8E"
		};
		localStorage.setItem("Wikiplus_Settings", JSON.stringify(wikiplusSetting));
	})();


	/* XTools */
	mw.loader.load('https://www.mediawiki.org/w/index.php?title=XTools/ArticleInfo.js&action=raw&ctype=text/javascript');


	/* FakeRollback */
	/*
	if ($.inArray('sysop', mw.config.get('wgUserGroups')) === -1) {
		mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:WhitePhosphorus/js/FakeRollback.js&action=raw&ctype=text/javascript');
	}
	*/


	/* AutoUndo */
	if ($.inArray('sysop', mw.config.get('wgUserGroups')) === -1) {
		mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:WhitePhosphorus/js/AutoUndo.js&action=raw&ctype=text/javascript');
	}

	/* AutoUndoGlobal */
	mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:WhitePhosphorus/js/AutoUndoGlobal.js&action=raw&ctype=text/javascript');


	/* cvn-smart */
	// mw.loader.load('https://xiplus.ddns.net/wikipedia_rc/gadget.js');
	mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/cvn-smart-gadget.js&action=raw&ctype=text/javascript');


	/* history-merge */
	if ($.inArray('sysop', mw.config.get('wgUserGroups')) !== -1) {
		mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/history-merge.js&action=raw&ctype=text/javascript');
	}


	/* list-user-last-active */
	switch (mw.config.get('wgDBname')) {
		// case 'zhwiki':
		// 	break;
		default:
			mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/list-user-last-active.js&action=raw&ctype=text/javascript');
			break;
	}


	/* smart rollback */
	if (typeof window.smartRollbackConfig === 'undefined') {
		window.smartRollbackConfig = {};
	}
	var smartRollbackConfig = window.smartRollbackConfig;
	smartRollbackConfig.toolLinkMethod = 'p-tb';
	smartRollbackConfig.editSummaries = ['批量回退無意義文字', '批量回退破壞', '批量回退傀儡編輯'];
	mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Hoo_man/smart_rollback.js&action=raw&ctype=text/javascript');


	/* get-translatewiki-link */
	mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/get-translatewiki-link.js&action=raw&ctype=text/javascript');


	/* UTC clock */
	mw.loader.load('//www.mediawiki.org/w/index.php?title=MediaWiki:Gadget-UTCLiveClock.js&action=raw&ctype=text/javascript');

	/* importer */
	switch (mw.config.get('wgDBname')) {
		case 'commonswiki':
		case 'mediawikiwiki':
		case 'metawiki':
			break;
		default:
			mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/importer.js&action=raw&ctype=text/javascript');

	}

	/* CentralAuth */
	function showCentralAuth(username) {
		if (username === undefined) {
			return;
		}
		if (mw.util.isIPAddress(username, true)) {
			username = username.replace(/\/\d+$/, '');
			mw.util.addPortletLink(
				'p-cactions',
				'https://tools.wmflabs.org/meta/stalktoy/' + username,
				'全域封禁'
			);
			mw.util.addPortletLink(
				'p-cactions',
				'https://whatismyipaddress.com/ip/' + username,
				'地理位置'
			);
			mw.util.addPortletLink(
				'p-cactions',
				'https://rms.twnic.tw/query_whois2.php?q=' + username,
				'TWNIC'
			);
			mw.util.addPortletLink(
				'p-cactions',
				'https://whois.tanet.edu.tw/showWhoisPublic.php?queryString=' + username,
				'TANet'
			);
			mw.util.addPortletLink(
				'p-cactions',
				'https://tools.wmflabs.org/ipcheck/index.php?ip=' + username,
				'Proxy Checker'
			);
		} else {
			mw.util.addPortletLink(
				'p-cactions',
				'https://meta.wikimedia.org/wiki/Special:CentralAuth?target=' + encodeURIComponent(username),
				'全域帳號'
			);
		}
		mw.util.addPortletLink(
			'p-cactions',
			'https://xtools.wmflabs.org/globalcontribs/' + username,
			'全域貢獻 (xtools)'
		);
		mw.util.addPortletLink(
			'p-cactions',
			'https://tools.wmflabs.org/guc/?by=date&user=' + username,
			'全域貢獻 (guc)'
		);
	}
	if (mw.config.get('wgNamespaceNumber') === 2 || mw.config.get('wgNamespaceNumber') === 3) {
		showCentralAuth(mw.config.get('wgTitle').replace(/^([^/]+).*$/, '$1'));
	} else if (mw.config.get('wgRelevantUserName') !== null) {
		showCentralAuth(mw.config.get('wgRelevantUserName'));
	} else if (mw.config.get('wgCanonicalSpecialPageName') === 'Contributions') {
		showCentralAuth($('[name="target"]').val());
	}

	/* Admin list */
	switch (mw.config.get('wgDBname')) {
		// case 'zh_classicalwiki':
		// case 'zh_yuewiki':
		// case 'zhwiki':
		// case 'zhwikibooks':
		// case 'zhwikinews':
		// case 'zhwikiquote':
		// case 'zhwikisource':
		// case 'zhwikivoyage':
		// case 'zhwiktionary':
		// break;
		default:
			mw.util.addPortletLink(
				'p-cactions',
				mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace('$1', 'Special:Userlist') + '?group=sysop',
				'管理員列表'
			);
	}

	/* Twinkle */
	if (mw.config.get('wgUserName') === 'Xiplus' && !mw.util.getParamValue('disableGTW')) {
		switch (mw.config.get('wgDBname')) {
			// case 'enwiki':
			// case 'simplewiki':
			case 'testwiki':
			// case 'zh_classicalwiki':
			// case 'zhwiki':
			// case 'zhwikibooks':
			// case 'zhwikinews':
			// case 'zhwikiquote':
			// case 'zhwikisource':
			// case 'zhwikiversity':
			// case 'zhwikivoyage':
			// case 'zhwiktionary':
			break;
			default:
				console.log("Load Twinkle-global");
				mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Xiplus/TwinkleGlobal.js&action=raw&ctype=text/javascript');
				break;
		}
	}

	/* Popup */
	switch (mw.config.get('wgDBname')) {
		case 'enwiki':
		case 'zhwiki':
		case 'testwiki':
			break;
		default:
			console.log("載入 zhwp Popup");
			mw.loader.getScript('https://zh.wikipedia.org/w/index.php?title=MediaWiki:Gadget-site-lib.js&action=raw&ctype=text/javascript').then(function() {
				mw.loader.load('//zh.wikipedia.org/w/index.php?title=MediaWiki:Gadget-popups.js&action=raw&ctype=text/javascript');
				mw.loader.load('//zh.wikipedia.org/w/index.php?title=MediaWiki:Gadget-popups.css&action=raw&ctype=text/css', 'text/css');
			});
			break;
	}

	/* tagger */
	/* if ($.inArray('sysop', mw.config.get('wgUserGroups')) === -1) {
		switch (mw.config.get('wgDBname')) {
			case 'enwiki':
				break;
			default:
				var template = (mw.config.get('wgDBname') === 'commonswiki' ? 'Speedydelete' : 'Delete');
				if (typeof (window.taggerConfig) == 'undefined') window.taggerConfig = {};
				var taggerConfig = window.taggerConfig;
				taggerConfig.noDeleteOnly = false;

				if (typeof (taggerConfig) == 'undefined') taggerConfig = {};
				taggerConfig.tags = [];
				taggerConfig.editSummary = [];
				taggerConfig.tags[1] = '{{' + template + '|Vandalism}}';
				taggerConfig.editSummary[taggerConfig.tags[1]] = '+' + template;
				taggerConfig.tags[2] = '{{' + template + '|Nonsense}}';
				taggerConfig.editSummary[taggerConfig.tags[2]] = '+' + template;
				taggerConfig.tags[3] = '{{' + template + '|Vandalism. Created by LTA from zhwiki.}}';
				taggerConfig.editSummary[taggerConfig.tags[3]] = '+' + template;
				taggerConfig.tags[4] = '{{' + template + '|Spam}}';
				taggerConfig.editSummary[taggerConfig.tags[4]] = '+' + template;
				taggerConfig.tags.other = 'This is used for the option you have to select to be able to insert a custom template';
				mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Hoo_man/tagger.js&action=raw&ctype=text/javascript');
				break;
		}
	} */

	/* 側欄 */
	mw.util.addPortletLink(
		'p-tb',
		'/wiki/Special:PrefixIndex/' + mw.config.get('wgRelevantPageName'),
		'前綴索引',
		't-prefixindex',
		'',
		'',
		$('#t-specialpages')
	);

	if (mw.config.get("wgNamespaceNumber") == 8) {
		mw.util.addPortletLink(
			'p-cactions',
			'https://translatewiki.net/wiki/' + mw.config.get("wgPageName").split("/")[0] + '/zh-hant?action=edit',
			'translatewiki'
		);
		mw.util.addPortletLink(
			'p-cactions',
			mw.util.getUrl('Special:Search', {
				search: 'insource: "' + mw.config.get('wgTitle').split('/')[0] + '"',
				ns0: 1, ns1: 1, ns2: 1, ns3: 1, ns4: 1, ns5: 1, ns6: 1, ns7: 1, ns8: 1, ns9: 1, ns10: 1, ns11: 1, ns12: 1, ns13: 1, ns14: 1, ns15: 1, ns100: 1, ns101: 1, ns102: 1, ns103: 1, ns118: 1, ns119: 1, ns828: 1, ns829: 1, ns2300: 1, ns2301: 1, ns2302: 1, ns2303: 1,
			}),
			'Search msg key'
		);
	}

	/* 刪除摘要 */
	mw.loader.using(['mediawiki.api']).done(function() {
		new mw.Api().get({
			action: "query",
			format: "json",
			list: "logevents",
			leprop: "comment|type",
			letype: "delete",
			letitle: mw.config.get('wgPageName')
		}).then(function(data) {
			for (var i = 0; i < data.query.logevents.length && i < 3; i++) {
				var comment = data.query.logevents[i].comment;
				console.log('Deletion log: ' + comment);
			}
		});
	});

	/* templates-last-edit */
	mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/templates-last-edit.js&action=raw&ctype=text/javascript');


	/* mediawiki.util */
});


/* CurIDLink */
mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function() {
	var api;
	if (mw.config.get('wgDBname') === 'metawiki') {
		api = new mw.Api();
	} else {
		api = new mw.ForeignApi('//meta.wikimedia.org/w/api.php');
	}
	api.loadMessagesIfMissing(['Link-by-id', 'Link-by-id-desc']).then(function() {
		mw.loader.load('https://meta.wikimedia.org/w/index.php?title=MediaWiki:Gadget-CurIDLink.js&action=raw&ctype=text/javascript');
	}, function() {
		mw.notify('Load CurIDLink messages failed', { type: 'error' });
	});
}, function() {
	console.error('Load CurIDLink dependencies failed');
});


/* shortURL */
mw.loader.using(['mediawiki.util', 'oojs-ui', 'mediawiki.ForeignApi', 'oojs-ui-windows', 'mediawiki.widgets']).done(function() {
	mw.loader.getScript('https://zh.wikipedia.org/w/index.php?title=MediaWiki:Gadget-site-lib.js&action=raw&ctype=text/javascript').then(function() {
		mw.loader.load('https://zh.wikipedia.org/w/index.php?title=MediaWiki:Gadget-shortURL.js&action=raw&ctype=text/javascript');
	});
});

/* Sandbox link */
mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/SandboxLink.js&action=raw&ctype=text/javascript');

/* quick-link-wikidata */
switch (mw.config.get('wgDBname')) {
	case 'zhwiktionary':
		break;
	default:
		mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/quick-link-wikidata.js&action=raw&ctype=text/javascript');
}

/* CatUpdates */
mw.loader.load('https://zh.wikipedia.org/w/index.php?title=User:WhitePhosphorus/js/CatUpdates.js&action=raw&ctype=text/javascript');

/* Debug */
var url = new URL(location.href);
if (mw.util.getParamValue('debug')) {
	url.searchParams.set('debug', '0');
	mw.util.addPortletLink(
		'p-tb',
		url.href,
		'Disable debug',
		't-debug'
	);

} else {
	url.searchParams.set('debug', '1');
	mw.util.addPortletLink(
		'p-tb',
		url.href,
		'Enable debug',
		't-debug'
	);
}

/* Check signatures */
if (mw.config.get('wgRelevantUserName')) {
	mw.util.addPortletLink(
		'p-tb',
		'https://signatures.toolforge.org/check/' + mw.config.get('wgServerName') + '/' + mw.util.escapeIdForLink(mw.config.get('wgRelevantUserName')),
		'Check signatures',
		't-signatures'
	);
}

/* enable-discussion-tools */
mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/enable-discussion-tools.js&action=raw&ctype=text/javascript');

if (mw.config.get('wgUserGroups').indexOf('sysop') !== -1) {
	mw.loader.load('https://meta.wikimedia.org/w/index.php?title=User:Xiplus/js/remove-selection-from-revisiondelete.js&action=raw&ctype=text/javascript');
}

mw.loader.load('https://en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-script-installer.js&action=raw&ctype=text/javascript');

/* lintHint */
if (mw.util.getParamValue('lintHint') !== null) {
	var myLintHints = {};
	myLintHints.rooms = "*";
	mw.hook("lintHint.config").fire(myLintHints);
mw.loader.load('//en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/lintHint/r.js&action=raw&ctype=text/javascript');
} else {
	var url = new URL(window.location.href);
	url.searchParams.set('action', 'edit');
	url.searchParams.set('lintHint', '1');
	mw.util.addPortletLink(
		'p-tb',
		url.href,
		'Enable lintHint',
		't-dtenable'
	);
}

/* MarkRights */
mw.loader.load('https://zh.wikipedia.org/w/index.php?title=MediaWiki:Gadget-MarkRights.js&action=raw&ctype=text/javascript');
mw.loader.load('https://zh.wikipedia.org/w/index.php?title=MediaWiki:Gadget-MarkRights.css&action=raw&ctype=text/css', 'text/css');

console.log("global.js end");