MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
(removed pagesearch number tweak, .trim does not work because special characters are used, this does not matter too much, it just generates a bunch of unneeded adits on first actual bot use. added ability to remove recipes from pages if they are not needed) |
(expanded tab headers to 11) |
||
(186 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ | /* Any JavaScript here will be loaded for all users on every page load. */ | ||
var apiUrl = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + "/api.php" | |||
var | |||
$( | /* Script in here will be executed when the page is "ready" */ | ||
$(document).ready(function() { | |||
getNumberOfActiveUsers(); | |||
var elem = document.getElementById("evoChecker"); | |||
if(elem != null) { | |||
elem.innerHTML = | |||
'Alternatively, enter an evolution factor below to see the chances.<br>' + | |||
'<input style="margin-bottom:10px" type="number" id="evoInput" min=0 max=1 step=0.01 placeholder="Evolution" onchange="calcEvo()"></input><br>' + | |||
'<table style="float:left;margin-right:10px" class="wikitable" id="evoOutputBiter"></table>' + | |||
'<table class="wikitable" id="evoOutputSpitter"></table>'; | |||
calcEvo(); | |||
} | |||
}); | }); | ||
/* show correct number of active users on the main page */ | |||
function getNumberOfActiveUsers() { | |||
function | if (document.getElementById("active-users")) { | ||
if ( | |||
$.ajax({ | $.ajax({ | ||
url: | url: apiUrl, | ||
data: { | data: { | ||
format: 'json', | format: 'json', | ||
action: 'query', | action: 'query', | ||
list: 'allusers', | |||
aulimit: 500, | |||
auactiveusers: true | |||
}, | }, | ||
dataType: 'json', | dataType: 'json', | ||
type: 'GET', | type: 'GET', | ||
success: function( data ) { | success: function(data) { | ||
document.getElementById("active-users").innerHTML = data.query.allusers.length.toString(); | |||
}, | }, | ||
error: function( xhr ) { | error: function(xhr) { | ||
console.log( 'Error: Request failed.' ); | |||
} | } | ||
}); | }); | ||
} | } | ||
}; | |||
/* Collapsible list on [[Prototype definitions]] */ | |||
var | |||
if ( | $(".prototype-tree li").each(function (index, element) { | ||
if ( $( element ).children("ul").length > 0 ) { | |||
$( element ).addClass("prototype-tree-parent"); | |||
} | }; | ||
}); | |||
$(".prototype-tree li.prototype-tree-parent").on("click", function(event) { | |||
// only collapse if I clicked a li or the direct child of a li that is not another list or a link | |||
if ( $( event.currentTarget ).children("ul").length > 0 && $( event.target ).get(0).tagName != "UL" && $( event.target ).get(0).tagName != "A" && ($( event.target ).hasClass("prototype-tree-parent") || $( event.target ).parent().hasClass("prototype-tree-parent")) ) { | |||
$( event.currentTarget ).children("ul")[0].classList.toggle("hidden"); | |||
$( event.currentTarget ).toggleClass("prototype-tree-parent-collapsed"); | |||
return false; // prevents further event bubbling | |||
} | |||
}); | |||
/* Evolution calc */ | |||
//values are in the form [evolution, weight] | |||
const biterSpawner = [ | |||
["Small Biter", [[0.0, 0.3], [0.6, 0.0]]], | |||
["Medium Biter", [[0.2, 0.0], [0.6, 0.3], [0.7, 0.1]]], | |||
["Big Biter", [[0.5, 0.0], [1.0, 0.4]]], | |||
["Behemoth Biter", [[0.9, 0.0], [1.0, 0.3]]] | |||
]; | |||
const spitterSpawner = [ | |||
["Small Biter", [[0.0, 0.3], [0.35, 0.0]]], | |||
["Small Spitter", [[0.25, 0.0], [0.5, 0.3], [0.7, 0.0]]], | |||
["Medium Spitter", [[0.4, 0.0], [0.7, 0.3], [0.9, 0.1]]], | |||
["Big Spitter", [[0.5, 0.0], [1.0, 0.4]]], | |||
["Behemoth Spitter", [[0.9, 0.0], [1.0, 0.3]]] | |||
]; | |||
//calculates the interpolated value | |||
function lerp(low, high, pos) { | |||
const s = high[0] - low[0]; | |||
const l = (pos - low[0]) / s; | |||
return (low[1] * (1-l)) + (high[1] * l); | |||
}; | |||
//gets the weight list | |||
function getValues(map, evo) { | |||
var result = {}; | |||
var sum = 0; | |||
map.forEach(function(data) { | |||
const list = data[1]; | |||
var low = list[0]; | |||
var high = list[list.length-1]; | |||
list.forEach(function(val) { | |||
if(val[0] <= evo && val[0] > low[0]) low = val; | |||
if(val[0] >= evo && val[0] < high[0]) high = val; | |||
}); | |||
var val = null; | |||
if(evo <= low[0]) val = low[1]; | |||
else if(evo >= high[0]) val = high[1]; | |||
else val = lerp(low, high, evo); | |||
sum += val; | |||
result[data[0]] = val; | |||
}); | |||
Object.keys(result).forEach(function(data, index) { | |||
result[data] = result[data] / sum; | |||
}); | |||
return result; | |||
}; | |||
function calcEvo() { | |||
const evo = document.getElementById("evoInput").value; | |||
genTable(getValues(biterSpawner, evo), document.getElementById("evoOutputBiter"), "Biter's Nest"); | |||
genTable(getValues(spitterSpawner, evo), document.getElementById("evoOutputSpitter"), "Spitter's Nest"); | |||
}; | |||
function percentile(value) { | |||
return (value*100).toFixed(2) + "%"; | |||
}; | |||
function genTable(data, tableElem, title) { | |||
var html = '<tr><th>'+title+'</th><th>Chance</th>'; | |||
Object.keys(data).forEach(function(value) { | |||
html += '<tr><td>'+value+'</td><td>'+percentile(data[value])+'</td>'; | |||
}); | |||
tableElem.innerHTML = html; | |||
}; | |||
/* Template:Inventory tooltips */ | |||
var lastTouchTime = 0; | |||
document.addEventListener('touchstart', updateLastTouchTime, true); | |||
function updateLastTouchTime() { | |||
lastTouchTime = new Date(); | |||
} | |||
$(".tab-head").mousemove(function(e) { | |||
if (e.buttons > 0) return; | |||
if (new Date() - lastTouchTime < 500) return; | |||
var countCssRules = document.styleSheets[0].cssRules.length; | |||
var newRule = '.tab-head:hover:after{display: block; left: ' + (e.offsetX + 20) + 'px; top: ' + (e.offsetY + 20) + 'px;}'; | |||
document.styleSheets[0].insertRule(newRule, countCssRules); | |||
}); | |||
$(".tab .factorio-icon").mousemove(function(e) { | |||
if (e.buttons > 0) return; | |||
if (new Date() - lastTouchTime < 500) return; | |||
var countCssRules = document.styleSheets[0].cssRules.length; | |||
$(e.currentTarget).children("a").attr("title", ""); | |||
var text = $(e.currentTarget).children("a").children("img").attr("alt"); | |||
var newRule = '.tab .factorio-icon:hover:after{display: block; ' + "content: '" + text + "'}"; | |||
document.styleSheets[0].insertRule(newRule, countCssRules); | |||
}); | |||
/* Template:BlueprintString */ | |||
$(".bps-box").click(function(event) { | |||
var copyTarget = document.createElement("input"); | |||
copyTarget.setAttribute("value", $( event.target ).children("p").html()); | |||
document.body.appendChild(copyTarget); | |||
copyTarget.select(); | |||
document.execCommand("copy"); | |||
document.body.removeChild(copyTarget); | |||
}); | |||
/* Template:Inventory */ | |||
$(".tab-head-1").click(function() { | |||
$(".tab-head").removeClass("tab-head-active"); | |||
$(this).addClass("tab-head-active"); | |||
$(".tab").hide(); | |||
$(".tab-1").show(); | |||
}); | |||
$(".tab-head-2").click(function() { | |||
$(".tab-head").removeClass("tab-head-active"); | |||
$(this).addClass("tab-head-active"); | |||
$(".tab").hide(); | |||
$(".tab-2").show(); | |||
}); | |||
$(".tab-head-3").click(function() { | |||
$(".tab-head").removeClass("tab-head-active"); | |||
$(this).addClass("tab-head-active"); | |||
$(".tab").hide(); | |||
$(".tab-3").show(); | |||
}); | |||
$(".tab-head-4").click(function() { | |||
$(".tab-head").removeClass("tab-head-active"); | |||
$(this).addClass("tab-head-active"); | |||
$(".tab").hide(); | |||
$(".tab-4").show(); | |||
}); | |||
$(".tab-head-5").click(function() { | |||
$(".tab-head").removeClass("tab-head-active"); | |||
$(this).addClass("tab-head-active"); | |||
$(".tab").hide(); | |||
$(".tab-5").show(); | |||
}); | |||
$(".tab-head-6").click(function() { | |||
$(".tab-head").removeClass("tab-head-active"); | |||
$(this).addClass("tab-head-active"); | |||
$(".tab").hide(); | |||
$(".tab-6").show(); | |||
}); | |||
$(".tab-head-7").click(function() { | |||
$(".tab-head").removeClass("tab-head-active"); | |||
$(this).addClass("tab-head-active"); | |||
$(".tab").hide(); | |||
$(".tab-7").show(); | |||
}); | |||
$(".tab-head-8").click(function() { | |||
$(".tab-head").removeClass("tab-head-active"); | |||
$(this).addClass("tab-head-active"); | |||
$(".tab").hide(); | |||
$(".tab-8").show(); | |||
}); | |||
$(".tab-head-9").click(function() { | |||
$(".tab-head").removeClass("tab-head-active"); | |||
$(this).addClass("tab-head-active"); | |||
$(".tab").hide(); | |||
$(".tab-9").show(); | |||
}); | |||
$(".tab-head-10").click(function() { | |||
$(".tab-head").removeClass("tab-head-active"); | |||
$(this).addClass("tab-head-active"); | |||
$(".tab").hide(); | |||
$(".tab-10").show(); | |||
}); | |||
$(".tab-head-11").click(function() { | |||
$(".tab-head").removeClass("tab-head-active"); | |||
$(this).addClass("tab-head-active"); | |||
$(".tab").hide(); | |||
$(".tab-11").show(); | |||
}); | |||
//*** Language template ***// | |||
if($(".languages-flags .flag").length == 0) { | |||
console.log("Not showing languages bar because there's no other language's version of this page."); | |||
$(".languages-container").hide(); | |||
} | |||
//Spoiler template | |||
$(".spoiler-container .button").click(function() { | |||
$(this).siblings(".text").toggle("slow"); | |||
}); | |||
//* General/generic functions *// | |||
/* User is bot if userGroup.some(isBot) == true */ | |||
var userGroup = ""; | |||
function getUserGroup() { | |||
$.ajax({ | |||
url: apiUrl, | |||
data: { | |||
format: 'json', | |||
action: 'query', | |||
meta: 'userinfo', | |||
uiprop: 'groups', | |||
}, | |||
async: false, | |||
dataType: 'json', | |||
type: 'GET', | |||
success: function(data) { | |||
userGroup = data.query.userinfo.groups | |||
}, | |||
}); | |||
}; | |||
} | |||
function isBot(group) { | |||
return group == "bot"; | |||
} | } | ||
/* Get token of this session */ | |||
var globalToken; | var globalToken; | ||
Line 498: | Line 287: | ||
function getToken() { | function getToken() { | ||
$.ajax({ | $.ajax({ | ||
url: | url: apiUrl, | ||
data: { | data: { | ||
format: 'json', | format: 'json', | ||
Line 512: | Line 301: | ||
}, | }, | ||
error: function( xhr ) { | error: function( xhr ) { | ||
console.log("Failed to | console.log("Failed to get token."); | ||
} | } | ||
}); | }); | ||
} | } | ||
function genericEditPage(title, content, summary) { | |||
$.ajax({ | |||
url: apiUrl, | |||
} | data: { | ||
format: 'json', | |||
action: 'edit', | |||
title: title, | |||
text: content, | |||
token: globalToken, | |||
summary: summary, | |||
} | bot: true, | ||
nocreate: true | |||
function | }, | ||
dataType: 'json', | |||
type: 'POST', | |||
success: function( data ) { | |||
console.log("Edited " + title); | |||
}, | |||
error: function( xhr ) { | |||
alert("Failed to edit " + title); | |||
} | |||
}); | |||
}; | }; | ||
function createPage(pageTitle, content, summary) { | |||
$.ajax({ | |||
url: apiUrl, | |||
data: { | |||
format: 'json', | |||
action: 'edit', | |||
title: pageTitle, | |||
text: content, | |||
token: globalToken, | |||
summary: summary, | |||
bot: true | |||
}, | |||
async: false, | |||
dataType: 'json', | |||
type: 'POST', | |||
success: function( data ) { | |||
console.log("Created page: " + pageTitle); | |||
}, | |||
error: function( xhr ) { | |||
console.log("Failed to create page"); | |||
} | |||
}); | |||
} | } | ||
function | function getBacklinks(page) { | ||
var backlinks = []; | |||
$.ajax({ | |||
url: apiUrl, | |||
data: { | |||
format: 'json', | |||
action: 'query', | |||
list: 'backlinks', | |||
bltitle: page, | |||
bllimit: 1000, | |||
}, | |||
async: false, | |||
type: 'GET', | |||
success: function( data ) { | |||
backlinks = data.query.backlinks; | |||
}, | |||
error: function( xhr ) { | |||
alert( 'Error: Backlinks request failed.' ); | |||
} | |||
}); | |||
return backlinks; | |||
}; | |||
function getFileUsage(file) { | |||
var imageusage = []; | |||
$.ajax({ | |||
url: apiUrl, | |||
data: { | |||
format: 'json', | |||
action: 'query', | |||
} | list: 'imageusage', | ||
iutitle: file, | |||
iulimit: 1000 | |||
}, | |||
async: false, | |||
type: 'GET', | |||
success: function( data ) { | |||
imageusage = data.query.imageusage; | |||
}, | |||
error: function( xhr ) { | |||
alert( 'Error: Imageusage request failed.' ); | |||
} | |||
}); | |||
return imageusage; | |||
}; | |||
function performNullEdit(pageTitle, summary) { | function performNullEdit(pageTitle, summary) { | ||
$.ajax({ | $.ajax({ | ||
url: | url: apiUrl, | ||
data: { | data: { | ||
format: 'json', | format: 'json', | ||
Line 640: | Line 429: | ||
function purgeWhatLinksHere(pageTitle) { | function purgeWhatLinksHere(pageTitle) { | ||
$.ajax({ | $.ajax({ | ||
url: | url: apiUrl, | ||
data: { | data: { | ||
format: "json", | format: "json", | ||
Line 665: | Line 454: | ||
function purgePage(pageTitle) { | function purgePage(pageTitle) { | ||
$.ajax({ | $.ajax({ | ||
url: | url: apiUrl, | ||
data: { | data: { | ||
action: 'purge', | action: 'purge', | ||
Line 683: | Line 472: | ||
}); | }); | ||
} | } | ||
Latest revision as of 07:44, 21 October 2024
/* Any JavaScript here will be loaded for all users on every page load. */
var apiUrl = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + "/api.php"
/* Script in here will be executed when the page is "ready" */
$(document).ready(function() {
getNumberOfActiveUsers();
var elem = document.getElementById("evoChecker");
if(elem != null) {
elem.innerHTML =
'Alternatively, enter an evolution factor below to see the chances.<br>' +
'<input style="margin-bottom:10px" type="number" id="evoInput" min=0 max=1 step=0.01 placeholder="Evolution" onchange="calcEvo()"></input><br>' +
'<table style="float:left;margin-right:10px" class="wikitable" id="evoOutputBiter"></table>' +
'<table class="wikitable" id="evoOutputSpitter"></table>';
calcEvo();
}
});
/* show correct number of active users on the main page */
function getNumberOfActiveUsers() {
if (document.getElementById("active-users")) {
$.ajax({
url: apiUrl,
data: {
format: 'json',
action: 'query',
list: 'allusers',
aulimit: 500,
auactiveusers: true
},
dataType: 'json',
type: 'GET',
success: function(data) {
document.getElementById("active-users").innerHTML = data.query.allusers.length.toString();
},
error: function(xhr) {
console.log( 'Error: Request failed.' );
}
});
}
};
/* Collapsible list on [[Prototype definitions]] */
$(".prototype-tree li").each(function (index, element) {
if ( $( element ).children("ul").length > 0 ) {
$( element ).addClass("prototype-tree-parent");
};
});
$(".prototype-tree li.prototype-tree-parent").on("click", function(event) {
// only collapse if I clicked a li or the direct child of a li that is not another list or a link
if ( $( event.currentTarget ).children("ul").length > 0 && $( event.target ).get(0).tagName != "UL" && $( event.target ).get(0).tagName != "A" && ($( event.target ).hasClass("prototype-tree-parent") || $( event.target ).parent().hasClass("prototype-tree-parent")) ) {
$( event.currentTarget ).children("ul")[0].classList.toggle("hidden");
$( event.currentTarget ).toggleClass("prototype-tree-parent-collapsed");
return false; // prevents further event bubbling
}
});
/* Evolution calc */
//values are in the form [evolution, weight]
const biterSpawner = [
["Small Biter", [[0.0, 0.3], [0.6, 0.0]]],
["Medium Biter", [[0.2, 0.0], [0.6, 0.3], [0.7, 0.1]]],
["Big Biter", [[0.5, 0.0], [1.0, 0.4]]],
["Behemoth Biter", [[0.9, 0.0], [1.0, 0.3]]]
];
const spitterSpawner = [
["Small Biter", [[0.0, 0.3], [0.35, 0.0]]],
["Small Spitter", [[0.25, 0.0], [0.5, 0.3], [0.7, 0.0]]],
["Medium Spitter", [[0.4, 0.0], [0.7, 0.3], [0.9, 0.1]]],
["Big Spitter", [[0.5, 0.0], [1.0, 0.4]]],
["Behemoth Spitter", [[0.9, 0.0], [1.0, 0.3]]]
];
//calculates the interpolated value
function lerp(low, high, pos) {
const s = high[0] - low[0];
const l = (pos - low[0]) / s;
return (low[1] * (1-l)) + (high[1] * l);
};
//gets the weight list
function getValues(map, evo) {
var result = {};
var sum = 0;
map.forEach(function(data) {
const list = data[1];
var low = list[0];
var high = list[list.length-1];
list.forEach(function(val) {
if(val[0] <= evo && val[0] > low[0]) low = val;
if(val[0] >= evo && val[0] < high[0]) high = val;
});
var val = null;
if(evo <= low[0]) val = low[1];
else if(evo >= high[0]) val = high[1];
else val = lerp(low, high, evo);
sum += val;
result[data[0]] = val;
});
Object.keys(result).forEach(function(data, index) {
result[data] = result[data] / sum;
});
return result;
};
function calcEvo() {
const evo = document.getElementById("evoInput").value;
genTable(getValues(biterSpawner, evo), document.getElementById("evoOutputBiter"), "Biter's Nest");
genTable(getValues(spitterSpawner, evo), document.getElementById("evoOutputSpitter"), "Spitter's Nest");
};
function percentile(value) {
return (value*100).toFixed(2) + "%";
};
function genTable(data, tableElem, title) {
var html = '<tr><th>'+title+'</th><th>Chance</th>';
Object.keys(data).forEach(function(value) {
html += '<tr><td>'+value+'</td><td>'+percentile(data[value])+'</td>';
});
tableElem.innerHTML = html;
};
/* Template:Inventory tooltips */
var lastTouchTime = 0;
document.addEventListener('touchstart', updateLastTouchTime, true);
function updateLastTouchTime() {
lastTouchTime = new Date();
}
$(".tab-head").mousemove(function(e) {
if (e.buttons > 0) return;
if (new Date() - lastTouchTime < 500) return;
var countCssRules = document.styleSheets[0].cssRules.length;
var newRule = '.tab-head:hover:after{display: block; left: ' + (e.offsetX + 20) + 'px; top: ' + (e.offsetY + 20) + 'px;}';
document.styleSheets[0].insertRule(newRule, countCssRules);
});
$(".tab .factorio-icon").mousemove(function(e) {
if (e.buttons > 0) return;
if (new Date() - lastTouchTime < 500) return;
var countCssRules = document.styleSheets[0].cssRules.length;
$(e.currentTarget).children("a").attr("title", "");
var text = $(e.currentTarget).children("a").children("img").attr("alt");
var newRule = '.tab .factorio-icon:hover:after{display: block; ' + "content: '" + text + "'}";
document.styleSheets[0].insertRule(newRule, countCssRules);
});
/* Template:BlueprintString */
$(".bps-box").click(function(event) {
var copyTarget = document.createElement("input");
copyTarget.setAttribute("value", $( event.target ).children("p").html());
document.body.appendChild(copyTarget);
copyTarget.select();
document.execCommand("copy");
document.body.removeChild(copyTarget);
});
/* Template:Inventory */
$(".tab-head-1").click(function() {
$(".tab-head").removeClass("tab-head-active");
$(this).addClass("tab-head-active");
$(".tab").hide();
$(".tab-1").show();
});
$(".tab-head-2").click(function() {
$(".tab-head").removeClass("tab-head-active");
$(this).addClass("tab-head-active");
$(".tab").hide();
$(".tab-2").show();
});
$(".tab-head-3").click(function() {
$(".tab-head").removeClass("tab-head-active");
$(this).addClass("tab-head-active");
$(".tab").hide();
$(".tab-3").show();
});
$(".tab-head-4").click(function() {
$(".tab-head").removeClass("tab-head-active");
$(this).addClass("tab-head-active");
$(".tab").hide();
$(".tab-4").show();
});
$(".tab-head-5").click(function() {
$(".tab-head").removeClass("tab-head-active");
$(this).addClass("tab-head-active");
$(".tab").hide();
$(".tab-5").show();
});
$(".tab-head-6").click(function() {
$(".tab-head").removeClass("tab-head-active");
$(this).addClass("tab-head-active");
$(".tab").hide();
$(".tab-6").show();
});
$(".tab-head-7").click(function() {
$(".tab-head").removeClass("tab-head-active");
$(this).addClass("tab-head-active");
$(".tab").hide();
$(".tab-7").show();
});
$(".tab-head-8").click(function() {
$(".tab-head").removeClass("tab-head-active");
$(this).addClass("tab-head-active");
$(".tab").hide();
$(".tab-8").show();
});
$(".tab-head-9").click(function() {
$(".tab-head").removeClass("tab-head-active");
$(this).addClass("tab-head-active");
$(".tab").hide();
$(".tab-9").show();
});
$(".tab-head-10").click(function() {
$(".tab-head").removeClass("tab-head-active");
$(this).addClass("tab-head-active");
$(".tab").hide();
$(".tab-10").show();
});
$(".tab-head-11").click(function() {
$(".tab-head").removeClass("tab-head-active");
$(this).addClass("tab-head-active");
$(".tab").hide();
$(".tab-11").show();
});
//*** Language template ***//
if($(".languages-flags .flag").length == 0) {
console.log("Not showing languages bar because there's no other language's version of this page.");
$(".languages-container").hide();
}
//Spoiler template
$(".spoiler-container .button").click(function() {
$(this).siblings(".text").toggle("slow");
});
//* General/generic functions *//
/* User is bot if userGroup.some(isBot) == true */
var userGroup = "";
function getUserGroup() {
$.ajax({
url: apiUrl,
data: {
format: 'json',
action: 'query',
meta: 'userinfo',
uiprop: 'groups',
},
async: false,
dataType: 'json',
type: 'GET',
success: function(data) {
userGroup = data.query.userinfo.groups
},
});
};
function isBot(group) {
return group == "bot";
}
/* Get token of this session */
var globalToken;
function getToken() {
$.ajax({
url: apiUrl,
data: {
format: 'json',
action: 'query',
meta: 'tokens',
bot: true
},
async: false,
dataType: 'json',
type: 'POST',
success: function( data ) {
globalToken = data.query.tokens.csrftoken;
},
error: function( xhr ) {
console.log("Failed to get token.");
}
});
}
function genericEditPage(title, content, summary) {
$.ajax({
url: apiUrl,
data: {
format: 'json',
action: 'edit',
title: title,
text: content,
token: globalToken,
summary: summary,
bot: true,
nocreate: true
},
dataType: 'json',
type: 'POST',
success: function( data ) {
console.log("Edited " + title);
},
error: function( xhr ) {
alert("Failed to edit " + title);
}
});
};
function createPage(pageTitle, content, summary) {
$.ajax({
url: apiUrl,
data: {
format: 'json',
action: 'edit',
title: pageTitle,
text: content,
token: globalToken,
summary: summary,
bot: true
},
async: false,
dataType: 'json',
type: 'POST',
success: function( data ) {
console.log("Created page: " + pageTitle);
},
error: function( xhr ) {
console.log("Failed to create page");
}
});
}
function getBacklinks(page) {
var backlinks = [];
$.ajax({
url: apiUrl,
data: {
format: 'json',
action: 'query',
list: 'backlinks',
bltitle: page,
bllimit: 1000,
},
async: false,
type: 'GET',
success: function( data ) {
backlinks = data.query.backlinks;
},
error: function( xhr ) {
alert( 'Error: Backlinks request failed.' );
}
});
return backlinks;
};
function getFileUsage(file) {
var imageusage = [];
$.ajax({
url: apiUrl,
data: {
format: 'json',
action: 'query',
list: 'imageusage',
iutitle: file,
iulimit: 1000
},
async: false,
type: 'GET',
success: function( data ) {
imageusage = data.query.imageusage;
},
error: function( xhr ) {
alert( 'Error: Imageusage request failed.' );
}
});
return imageusage;
};
function performNullEdit(pageTitle, summary) {
$.ajax({
url: apiUrl,
data: {
format: 'json',
action: 'edit',
title: pageTitle,
section: 0,
text: "",
token: globalToken,
summary: summary,
bot: true
},
async: false,
dataType: 'json',
type: 'POST',
success: function( data ) {
console.log("Performed null edit");
},
error: function( xhr ) {
console.log("Failed to perform null edit");
}
});
}
function purgeWhatLinksHere(pageTitle) {
$.ajax({
url: apiUrl,
data: {
format: "json",
action: 'query',
list: "backlinks",
bltitle: pageTitle,
bllimit: 500
},
async: true,
type: 'GET',
success: function( data ) {
console.log(data);
for (var i = 0; i < data.query.backlinks.length; i++) {
purgePage(data.query.backlinks[i].title);
}
},
error: function( xhr ) {
//alert( 'Error: Request failed.' );
console.log("Failed purging");
}
});
}
function purgePage(pageTitle) {
$.ajax({
url: apiUrl,
data: {
action: 'purge',
forcelinkupdate: true,
titles: pageTitle,
prop: "info"
},
async: true,
type: 'GET',
success: function( data ) {
console.log("purging " + pageTitle);
},
error: function( xhr ) {
//alert( 'Error: Request failed.' );
console.log("Failed purging");
}
});
}