User:FlightTime/CustomTBLinks.js

/* My slightly changed version of {{User:Chicocvenancio/HelpDeskTBLinks.js}}

NOTE:This script only works in "Vector"

If you want to use this script, simply add the following line to your Special:Mypage/vector.js or Special:Mypage/common.js

importScript('User:FlightTime/CustomTBLinks.js'); // User:FlightTime/CustomTBLinks.js

  • Please keep the backlink so I can see how many people use this.
  • /

if ((mw.config.get('wgPageName') === "Wikipedia:Help_desk") || (mw.config.get('wgPageName') === "Wikipedia:Files_for_upload") || (mw.config.get('wgPageName') === "Wikipedia:Requests_for_permissions/Account_creator") || (mw.config.get('wgPageName') === "User_talk:FlightTime") ||(mw.config.get('wgPageName') === "User_talk:FlightTime/Alternate_talk_page") || (mw.config.get('wgPageName') === "User_talk:FlightTime_Phone") || (mw.config.get('wgPageName') === "User_talk:FlightTime_Public") && mw.config.get('wgAction') === 'view') {

mw.loader.using(['jquery.tipsy', 'jquery.ui', 'jquery'], function () {

$(mw.TBLinks()); });

};

( function ( mw, $ ) {

var TBLinks;

TBLinks = function () {

"use strict";

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

var $nodeList = $('a[title^="User talk:"]'), pdne = ' (page does not exist)', i, $link, $newLink;

if ($nodeList !== null) {

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

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

$newLink = $('TB');

$($link).after($newLink);

}

}

$('a[title="Send a talkback!"]').tipsy({html: true}).before("|").after("|").click(function (e) {

TBLinks.submit($(this).attr('href').substr(1), this.id);

});

};

};

TBLinks.submit = function (page, id) {

'use strict';

TBLinks.edit = function (section) {

var sectionTitle = "{{Talkback|" + mw.config.get('wgPageName').replace(/_/g, ' ') + "|", data;

if (section === "") {

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

} else {

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

}

data = {

format : 'json',

action : 'edit',

minor : false,

title : page,

text : sectionTitle,

section : 'new',

summary : "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') {

TBLinks.useDialog('Success', 'Success in sending your talkback (Open) (diff)', 'nprompt-dialog');

} else {

TBLinks.useDialog('Error!!', 'There was an error requesting the edit. Code: ' + data.error.code + '": ' + data.error.info, 'nprompt-dialog');

}

},

error : function () {

TBLinks.useDialog('Error!!', 'There was an error in using AJAX to edit the page.', 'nprompt-dialog');

}

});

}

TBLinks.nicePrompt("Please enter the title of the question you're replying to (or just leave it blank):", "Section:", TBLinks.edit);

};

TBLinks.nicePrompt = function (title, label, callback) {

'use strict';

$('

' + (label ? '' : '') + '
').dialog({

title: title,

open: function () {

$(".ui-dialog-titlebar-close").hide();

$('#nprompt-input').autocomplete({source: $('.toctext').map(function() { return $(this).text(); }).get()})

},

close: function () {

$('#nprompt-dialog').dialog('destroy')

$('#nprompt-dialog').remove()

},

buttons: {

"OK": function () {

callback($('#nprompt-input').val());

},

Cancel: function() {

TBLinks.useDialog('Oh!', 'You have canceled!', 'nprompt-dialog');

}

}

});

};

TBLinks.useDialog = function (title, message, id) {

'use strict';

$('#' + id).empty();

$('#' + id).dialog("option", "title", title);

$('#' + id).append($('

' + message + '
'));

$('#' + id).dialog("option", "buttons", { "Close": function() {

$(this).dialog("close");

} } );

};

mw.TBLinks = TBLinks;

}( mediaWiki, jQuery ) );