Difference between revisions of "User:CRLF/common.js"
m (change edit summary) |
(test) |
||
| Line 24: | Line 24: | ||
| − | + | function makeLinks(str, titles) { // Implements undo links on contribs page | |
| − | function makeLinks( | ||
$.ajax({ | $.ajax({ | ||
url: 'https://www.explainxkcd.com/wiki/api.php', | url: 'https://www.explainxkcd.com/wiki/api.php', | ||
type: 'GET', | type: 'GET', | ||
dataType: 'json', | dataType: 'json', | ||
| − | data: { action: 'query', prop: 'revisions', titles: | + | data: { action: 'query', prop: 'revisions', titles: str, rvprop: 'ids', formatversion: 2 }, |
success: function (data) { | success: function (data) { | ||
| − | + | for (var i in data["query"]["pages"]){ | |
| + | pg = i["title"]; | ||
| + | el = titles[pg]; | ||
| + | $('<a id="link' + i["revisions"][0]["revid"] + '" onclick="rvt(' + i["revisions"][0]["revid"] + ',' + i["revisions"][0]["parentid"] + ',0)">[rvt]</a>').insertAfter(el); | ||
| + | } | ||
} | } | ||
}) | }) | ||
| Line 38: | Line 41: | ||
cs= $('.mw-contributions-title'); | cs= $('.mw-contributions-title'); | ||
| + | titles = {}; | ||
| + | str = ""; | ||
for (var i =0;i<cs.length;i++) { | for (var i =0;i<cs.length;i++) { | ||
| − | + | titles[cs[i].getAttribute("title")] = cs[i]; | |
| − | makeLinks( | + | str += cs[i].getAttribute("title") + '|' |
| − | + | makeLinks(str.slice(0,-1),titles); | |
} | } | ||
| − | |||
Revision as of 02:28, 21 May 2022
function rvt(undop, undoafterp, c) { // Implements one-click undo
$.ajax({
url: 'https://www.explainxkcd.com/wiki/api.php',
data: {
format: 'json',
action: 'edit',
title: $("#firstHeading").text().substr(33, $("#firstHeading").text().length - 34),
undo: undop,
undoafter: undoafterp,
summary: "Reverted vandalism with [[User:CRLF/OneClickUndo.js]]",
token: mw.user.tokens.get('csrfToken')
},
dataType: 'json',
type: 'POST',
success: function () { if (c) { $('.mw-diff-undo > a').text("success"); $('.mw-diff-undo > a').removeAttr("onclick"); } else { $('#link' + undop).text("success"); $('.mw-diff-undo > a').removeAttr("onclick"); } }
});
}
try{
var href = $('.mw-diff-undo > a').attr('href').split("=");
var undop = href[4];
var undoafterp = href[3].substr(0, href[3].length - 5);
$('.mw-diff-undo > a').removeAttr('href');
$('.mw-diff-undo > a').attr('onclick', 'rvt(' + undop + ',' + undoafterp + ',1)');} catch(e) {console.log(e);console.log("assumed not undoable");}
function makeLinks(str, titles) { // Implements undo links on contribs page
$.ajax({
url: 'https://www.explainxkcd.com/wiki/api.php',
type: 'GET',
dataType: 'json',
data: { action: 'query', prop: 'revisions', titles: str, rvprop: 'ids', formatversion: 2 },
success: function (data) {
for (var i in data["query"]["pages"]){
pg = i["title"];
el = titles[pg];
$('<a id="link' + i["revisions"][0]["revid"] + '" onclick="rvt(' + i["revisions"][0]["revid"] + ',' + i["revisions"][0]["parentid"] + ',0)">[rvt]</a>').insertAfter(el);
}
}
})
}
cs= $('.mw-contributions-title');
titles = {};
str = "";
for (var i =0;i<cs.length;i++) {
titles[cs[i].getAttribute("title")] = cs[i];
str += cs[i].getAttribute("title") + '|'
makeLinks(str.slice(0,-1),titles);
}
