User:Writ Keeper/Scripts/teahouseTalkbackLink.js

function teahouseTalkbackLink()

{

if ($("#mw-content-text").length > 0)

{

var $nodeList = $('a[title^="User talk:"]'),

pdne = ' (page does not exist)';

if ($nodeList !== null)

{

var i;

for (i = 0; i < $nodeList.length; i++)

{

var $link = $($nodeList[i]);

var newLinkString = "|";

var redlink = false;

var newLinkHref = $link[0].title

if(newLinkHref.includes(pdne))

{

redlink = true;

newLinkHref = newLinkHref.replace(pdne, "");

}

var newLinkId = "TBsubmit" + i;

newLinkString += 'C|'

newLinkString += 'TB|';

$($link).after(newLinkString)

$("#" + newLinkId).click({"page":newLinkHref, "redlink":redlink}, talkbackSubmit);

}

}

}

}

function talkbackSubmit(event)

{

var page = event.data.page;

var redlink = event.data.redlink;

var questionTitle = prompt("Please enter the title of the question you're replying to (or just leave it blank):", ""),

sectionTitle = "{{Wikipedia:Teahouse/Teahouse talkback|WP:Teahouse|";

if (questionTitle === null)

{

return;

}

else if (questionTitle === "")

{

sectionTitle += "ts=~~" + "~~}}";

}

else

{

sectionTitle += questionTitle + "|ts=~~" + "~~}}";

}

if(redlink)

{

sectionTitle = "== Teahouse talkback: you've got messages! ==\n" + sectionTitle;

var requestData =

{

summary: "Teahouse talkback: you've got messages!"

}

new mw.Api().create(page, requestData, sectionTitle).done(function(data)

{

if (data && data.result && data.result === 'Success')

{

alert("Talkback posted!");

}

else

{

alert('There was an error requesting the page create. Code: ' + data);

}

}).fail(function(data) {

alert('There was an error using AJAX to create the page. Error: ' + data);

});

}

else

{

var requestData =

{

minor: false,

text: sectionTitle,

section: 'new',

summary: "Teahouse talkback: you've got messages!"

};

new mw.Api().edit(page, function() {

return requestData;

}).done(function(data) {

if (data && data.result && data.result === 'Success')

{

alert("Talkback posted!");

}

else

{

alert('There was an error requesting the page edit. Code: ' + data);

}

}).fail(function(data) {

alert('There was an error using AJAX to edit the page. Error: ' + data);

});

}

}

if (mw.config.get('wgPageName') === "Wikipedia:Teahouse")

{

mw.loader.using("mediawiki.api", function()

{

teahouseTalkbackLink();

});

}