User:Writ Keeper/Scripts/teahouseUtility.js

// /*	This script adds entries for posting Teahouse talkbacks and invites into the page action menu (and adds the page action menu itself, if it's not present) */ //standard onloadhook $(document).ready(teahouseMenu); //add menu if it's not there; populate it with new buttons function teahouseMenu {	if(mw.config.get("wgCanonicalNamespace") == "User" || mw.config.get("wgCanonicalNamespace") == "User_talk")//Only if we're on a user or user talk page {		var inviteLink = mw.util.addPortletLink("p-cactions", "#", "THInvite", "th-invite", "Add a Teahouse invite template", null, "#ca-move"); var afcLink = mw.util.addPortletLink("p-cactions", "#", "THInvite (AfC)", "th-afc", "Add a Teahouse invite template", null, "#ca-move"); var talkbackLink = mw.util.addPortletLink("p-cactions", "#", "THTalkback", "th-talkback", "Add a Teahouse talkback template", null, "#ca-move"); $(inviteLink).click(postTHInvite); $(afcLink).click(postTHafc); $(talkbackLink).click(postTHTalkback); } } function getURL {	var url; var slashLocation = mw.config.get("wgTitle").indexOf("/"); if(slashLocation > 0) {		url = "User_talk:" + mw.config.get("wgTitle").substring(0, mw.config.get("wgTitle").indexOf("/")); }	else {		url = "User_talk:" + mw.config.get("wgTitle"); }	return url; } function postTHInvite {	   invitationBody = ""; //If you want to change what the invitation section is titled, edit the words below within the doublequote (but don't take out the doublequote!) invitationSectionTitle = "Welcome to Wikipedia: check out the Teahouse!"; var linkArray = document.getElementById("mw-content-text").getElementsByTagName("a"); var i;	for(i = 0; i < linkArray.length; i++) {		if(linkArray[i].href.search("Wikipedia:Teahouse") > -1) {			if(confirm("Someone may have already invited this person to the Teahouse!\n\nAre you sure you want to continue?")) {				break; }			else return; }	}

var data = { format : 'json', action : 'edit', minor : false, title : getURL, text : invitationBody, section : 'new', summary : invitationSectionTitle, token : mw.user.tokens.get('csrfToken') };	$.ajax({		url : mw.util.wikiScript('api'),		type : 'POST',		dataType : 'json',		data : data,		success : function(data) {			if(data && data.edit && data.edit.result && data.edit.result === 'Success') {				//window.location = mw.util.getUrl(page);                               mw.notify("Talkback posted!");			} else {				$("#"+id).attr("title", 'There was an error requesting the page edit. Code: ' + data.error.code + '": ' + data.error.info).tipsy("show");			}		},		error : function {			$("#"+id).attr("title", 'There was an error using AJAX to edit the page.').tipsy("show");		}	}); }

function postTHafc {	   invitationBody = ""; //If you want to change what the invitation section is titled, edit the words below within the doublequote (but don't take out the doublequote!) invitationSectionTitle = "Welcome to Wikipedia! Need a hand?"; var linkArray = document.getElementById("mw-content-text").getElementsByTagName("a"); var i;	for(i = 0; i < linkArray.length; i++) {		if(linkArray[i].href.search("Wikipedia:Teahouse") > -1) {			if(confirm("Someone may have already invited this person to the Teahouse!\n\nAre you sure you want to continue?")) {				break; }			else return; }	}	var data = { format : 'json', action : 'edit', minor : false, title : getURL, text : invitationBody, section : 'new', summary : invitationSectionTitle, token : mw.user.tokens.get('csrfToken') };	$.ajax({		url : mw.util.wikiScript('api'),		type : 'POST',		dataType : 'json',		data : data,		success : function(data) {			if(data && data.edit && data.edit.result && data.edit.result === 'Success') {				//window.location = mw.util.getUrl(page);                               mw.notify("Talkback posted!");			} else {				$("#"+id).attr("title", 'There was an error requesting the page edit. Code: ' + data.error.code + '": ' + data.error.info).tipsy("show");			}		},		error : function {			$("#"+id).attr("title", 'There was an error using AJAX to edit the page.').tipsy("show");		}	}); } function postTHTalkback {	var questionTitle = prompt("Please enter the title of the question you're replying to (or just leave it blank):","");	var sectionTitle = "{{Wikipedia:Teahouse/Teahouse talkback|WP:Teahouse|";	if(questionTitle == null)	{		return;	}	else if(questionTitle == "")	{		sectionTitle +=	"ts="+"}}";	}	else	{		sectionTitle += questionTitle +"|ts="+"}}";	}	var data = {		format : 'json',		action : 'edit',		minor : false,		title : getURL,		text : sectionTitle,		section : 'new',		summary : "Teahouse talkback: you've got messages!",		token : mw.user.tokens.get('csrfToken')	};	$.ajax({		url : mw.util.wikiScript('api'),		type : 'POST',		dataType : 'json',		data : data,		success : function(data) { if(data && data.edit && data.edit.result && data.edit.result === 'Success') { //window.location = mw.util.getUrl(page); mw.notify("Talkback posted!"); } else { $("#"+id).attr("title", 'There was an error requesting the page edit. Code: ' + data.error.code + '": ' + data.error.info).tipsy("show");			}		},		error : function {			$("#"+id).attr("title", 'There was an error using AJAX to edit the page.').tipsy("show");		}	}); } //