User:Ahecht/Scripts/refresh.js: Difference between revisions

Content deleted Content added
confirm reload
add null edit option
Line 5:
 
mw.loader.using( [ 'mediawiki.util', 'mediawiki.api' ] ).then( function() {
function getWait(d, type) {
var wait=1000;
if (d && d.query && d.query.userinfo && d.query.userinfo.ratelimits
&& d.query.userinfo.ratelimits.purge[type])
{
if (d.query.userinfo.ratelimits.purge[type].user
&& d.query.userinfo.ratelimits.purge[type].user.hits
&& d.query.userinfo.ratelimits.purge[type].user.seconds)
{
var hits = d.query.userinfo.ratelimits.purge[type].user.hits;
var seconds = d.query.userinfo.ratelimits.purge[type].user.seconds;
console.log(type + " rate limit: hits=" + hits + ", seconds=" + seconds);
wait = Math.ceil( (seconds/hits) * 1000 );
Console.log("Using " + wait + " milliseconds wait between queries");
} else {
wait = 2000;
Line 23 ⟶ 25:
return wait;
}
function postPurge(target, count, wait, addParams) {
var step = target.gtilimit || target.gcmlimit || target.glhlimit || 1;
Line 39 ⟶ 42:
})
.done(function(d) {
console.log(d);
mw.notify((count + 1) + " pages were updated", { tag: "bubble"+count } );
count += step;
if (d.warnings === undefined && d["continue"] !== undefined
&& (d["continue"].gticontinue
|| d["continue"].gcmcontinue
|| d["continue"].glhcontinue)) {
setTimeout(function() {
postPurge(target, count, wait, d["continue"]);
}, wait);
} else {
if (confirm("Done!\n\nReload page?") == true) {
document.___location.reload();
}
}
}
});
}
function postNull(target, count, wait, addParams) {
var step = target.gtilimit || target.gcmlimit || target.glhlimit || 1;
mw.notify("Fetching " + target.generator + "...", { tag: "bubble"+count } );
var queryParams = $.extend({
action: 'query',
formatversion: '2',
},
target,
addParams);
console.log(queryParams);
new mw.Api().post(queryParams)
.fail(function(e) {
console.log(e);
alert("Fail!");
})
.done(function(q) {
console.log(q);
if(q && q.query && q.pages && q.pages[0] && q.pages[0].title) {
var editParams = {
action: 'edit',
title: q.pages[0].title,
watchlist: 'nochange',
nocreate: '1',
appendtext: ''
};
new mw.Api().postWithToken("csrf", editParams )
.fail(function(e) {
console.log(e);
alert("Fail!");
})
.done( function(e) {
console.log(e);
mw.notify((count + 1) + " pages were updated", { tag: "bubble"+count } );
count += step;
if (q.warnings === undefined && q["continue"] !== undefined
&& (q["continue"].gticontinue
|| q["continue"].gcmcontinue
|| q["continue"].glhcontinue)) {
setTimeout(function() {
postNull(target, count, wait, q["continue"]);
}, wait);
} else {
if (confirm("Done!\n\nReload page?") == true) {
document.___location.reload();
}
}
} );
} else {
alert("Fail!");
}
} );
}
if ( (mw.config.get('wgNamespaceNumber') == 10)
|| (mw.config.get('wgNamespaceNumber') == 14)
Line 73 ⟶ 131:
gtilimit: step
};
linkTitle = "Refresh transcluding pages";
} else if (mw.config.get('wgNamespaceNumber') == 14) {
target = {
Line 80 ⟶ 138:
gcmlimit: step
};
linkTitle = "Refresh category members";
} else {
target = {
Line 87 ⟶ 145:
glhlimit: step
};
linkTitle = "Refresh linking pages";
}
$(mw.util.addPortletLink('p-cactions', '#', 'Purge ' + linkTitle, 'pt-refresh-purge'))
.click(function() {
postPurge(target, 0, getWait(d, "purge"));
});
$(mw.util.addPortletLink('p-cactions', '#', 'Null edit ' + linkTitle, 'pt-refresh-null'))
.click(function() {
postPurgepostNull(target, 0, getWait(d, "edit"));
});
} );