User:HelloAnnyong/sockblock.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.
// <nowiki>
/**
 * Sockblock script
 * Just a little script I put together. When you're on a user talk page, it adds two links to the Toolbox on the left, one for master and one for sock. 
 * Clicking on them just copies the appropriate options into the edit box, making life a little easier.
 *
 * last updated 2011.09.05
 */

function isUserTalkPage()
{
	return (mw.config.get('wgPageName').match(/User_talk:/)
		&& (mw.config.get('wgAction')=='edit' || mw.config.get('wgAction')=='submit'));
}

function isUserPage()
{
	return (mw.config.get('wgPageName').match(/User:/) && (mw.config.get('wgAction')=='edit' || mw.config.get('wgAction')=='submit'));
}

function addSockBlock(isMaster)
{
	if(isMaster === undefined)
		isMaster = false;
	
	if(isUserTalkPage())
	{
		var editform = document.editform;
		var textbox = editform.wpTextbox1;
		
		var toAdd = (textbox.value.trim() != "" ? "\n" : '');
		
		if(mw.util.getParamValue("section")=="new")
		{
			editform.wpSummary.value = "Blocked";
		}
		else
		{
			toAdd += "== Blocked ==\n";
		}

		toAdd += "{{subst:SockBlock\n";
		
		if(!isMaster)
		{
			toAdd += "| master      = \n" +
					 "| suspected   = \n" +
					 "| blocked     = \n" +
					 "| notalk      = \n" +
					 "| color       = \n";
		}
		else
		{
			toAdd += "| masterblock = yes\n" +
					 "| period      = \n" +
					 "| evidence    = [[]]\n";
		}
		
		toAdd += "| sig         = yes\n" +
				 "}}";
		
		textbox.value += toAdd;
	}
}

function addSockTag(isMaster, isConfirm)
{
	if(isUserPage())
	{
		var editform = document.editform;
		var textbox = editform.wpTextbox1;
		
		var toAdd = '';
		
		if(isMaster)
		{
			toAdd += "{" + "{sockpuppeteer|blocked";
			
			editform.wpSummary.value = "Suspected sockpuppeteer";
			
			if(isConfirm) {
				toAdd += "|checked=yes";
				
				editform.wpSummary.value = "Confirmed sockpuppeteer";
			}
			
			toAdd += "}}";
		}
		else
		{
			var masterName = prompt("Enter the master's name:","");
			
			if(masterName) {
			
				editform.wpSummary.value = (isConfirm ? 'Confirmed' : 'Suspected')+" sock of "+masterName;
			
				toAdd += "{" + "{sock|"+masterName+"|";
				toAdd += (isConfirm ? 'confirmed' : 'blocked');
				toAdd += "}}";
				
			}
		}
		
		if(toAdd != '') {
			textbox.value = toAdd;
			
			if(editform.wpWatchthis.checked || editform.wpWatchthis.checked == 'checked') {
				editform.wpWatchthis.checked = '';
			}
		}
	}
}

$.when( mw.loader.using( 'mediawiki.util' ), $.ready ).done(function () {
	
	if(isUserTalkPage())
	{
		mw.util.addPortletLink('p-tb', 'javascript:addSockBlock(true)', 'SockBlock - master', 't-sockblockmaster', 'SockBlock - master', '', '');
		mw.util.addPortletLink('p-tb', 'javascript:addSockBlock(false)', 'SockBlock - sock', 't-sockblocksock', 'SockBlock - sock', '', '');
	}
	
	if(isUserPage())
	{
		mw.util.addPortletLink('p-tb', 'javascript:addSockTag(true, true)', 'SockMaster - confirmed master', 't-sockmasterconfirm', 'SockMaster - confirmed master', '', '');
		mw.util.addPortletLink('p-tb', 'javascript:addSockTag(true, false)', 'SockMaster - suspected master', 't-sockmasterblock', 'SockMaster - suspected master', '', '');
		mw.util.addPortletLink('p-tb', 'javascript:addSockTag(false, true)', 'SockTag - confirmed sock', 't-socktagconfirm', 'SockTag - confirmed sock', '', '');
		mw.util.addPortletLink('p-tb', 'javascript:addSockTag(false, false)', 'SockTag - suspected sock', 't-socktagblock', 'SockTag - suspected sock', '', '');
	}

});
// </nowiki>