Warning.png

Поддержка Wiki прекращена, она доступна в режиме архива. Информация в ней устарела и может быть неактуальной.

Изменения

Перейти к: навигация, поиск

Участник:Popstop/common.js

2451 байт добавлено, 20:21, 25 августа 2018
м
Тест
addButton();
});
 
mw.loader.using(['mediawiki.util', 'mediawiki.api'])
.then(function() {
var count, wait;
var step = 1;
var depth = 5;
var api = new mw.Api();
 
function collectSubCategories(cat) {
console.log('cat: ' + cat);
return $.getJSON('https://petscan.wmflabs.org', {
language: 'ru',
project: 'wikipedia',
depth: depth - 1,
categories: cat.substring(cat.indexOf(':') + 1),
'ns[14]': 1,
interface_language: 'en',
active_tab: 'tab_output',
doit: '',
format: 'json'
})
.done(function(d) {
purge([cat].concat(d['*'][0].a['*'].map(function(q) {
return "Категория:" + q.title;
}))
.reverse());
})
.fail(function() {
alert("Сбор подкатегорий не удался");
purge([cat]);
});
}
 
function purge(cats) {
if (cats.length <= 0) {
alert("Нуль-правки успешно завершены!");
document.location.reload();
} else
postPurge(cats[0], cats);
}
 
function postPurge(cat, cats, addParams) {
console.log('catnext: ' + cat);
var apiParams = $.extend({
action: 'purge',
generator: 'categorymembers',
'gcmtitle': cat,
'gcmlimit': step,
forcelinkupdate: 1
}, addParams);
api.post(apiParams)
.done(function(d) {
console.log(d);
count += step;
if (d.warnings === undefined && d["continue"] !== undefined &&
d["continue"].gcmcontinue) {
mw.notify(count + " страниц перепостроены");
setTimeout(function() {
postPurge(cat, cats, d["continue"]);
}, wait);
} else {
alert("Нуль-правки успешно завершены! (" + cat.replace(/_/g, " ") + ")");
cats.shift();
purge(cats);
}
})
.fail(function() {
alert("Неудача");
});
}
if (mw.config.get('wgNamespaceNumber') == 14) {
wait = 1000;
api.get({
meta: 'userinfo',
uiprop: 'ratelimits'
})
.done(function(d) {
if (d && d.query && d.query.userinfo && d.query.userinfo.ratelimits &&
d.query.userinfo.ratelimits.purge)
wait = 2000;
$( "#p-tb div ul" ).append( $('<li>').addClass('plainlinks')
.append( $('<a>').text('Нуль-правки').css({cursor: 'pointer'})
.click( function() {
count = 0;
collectSubCategories(mw.config.get('wgPageName')
.replace(/_/g, " "));
} ) ) );
});
}
});
1136
правок

Навигация