Utilisateur:0x010C/script/CatPurge.js
< Utilisateur:0x010C | script
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.var CATPvars_Texts = {
"purgelink" : "Purger entièrement cette catégorie",
"waitingmessage" : "$1 articles purgés",
"successnotif" : "<span>Fin de l'execution de <span style=\"font-style: italic;\">catpurge</span>.<br/>$1 articles purgés !</span>",
};
var CATPvars_nb = 0;
var CATPvars_crawl_started = 1;
var CATPvars_crawl_finished = 0;
var CATPvars_already_crawled = [];
$(function() {
if ($(".ns-14").length > 0)
$('#firstHeading').before('<div style="float:right;" id="catpurge-link"><small>[<a href="javascript:catpurge_init();">' + CATPvars_Texts['purgelink'] + '</a>]</small></div>');
});
function catpurge_init() {
var limit = (mw.config.get('wgUserGroups').indexOf("sysop") != -1 || mw.config.get('wgUserGroups').indexOf("bot") != -1) ? '5000' : '500';
$("#catpurge-link").html('<small>[' + CATPvars_Texts['waitingmessage'].split("$1").join('<span id="catpurge-nb">0</span>') + ']</small>');
CATPvars_already_crawled[0] = mw.config.get('wgPageName');
catpurge_crawl(mw.config.get('wgPageName'), limit, '');
}
function catpurge_crawl(catname, limit, cmcontinue) {
$.ajax({
url: mw.util.wikiScript('api'),
method: 'POST',
data: {
action: 'query',
format: 'json',
list: 'categorymembers',
cmtitle: catname,
cmprop: 'title',
cmtype: 'subcat',
gcmlimit: limit,
},
dataType: 'json',
success: function(data) {
$.each(data.query.categorymembers, function(k, v) {
if (CATPvars_already_crawled.indexOf(v.title) == -1) {
CATPvars_crawl_started += 1;
CATPvars_already_crawled[CATPvars_already_crawled.length] = v.title;
catpurge_crawl(v.title, limit, '');
}
});
if (typeof(data.continue) != "undefined") {
catpurge_crawl(catname, limit, data.continue.cmcontinue);
} else {
catpurge_purge(catname, limit, '');
CATPvars_crawl_finished += 1;
if (catname == mw.config.get('wgPageName'))
catpurge_wait();
}
}
});
}
function catpurge_purge(catname, limit, gcmcontinue) {
$.ajax({
url: mw.util.wikiScript('api'),
method: 'POST',
data: {
action: 'purge',
format: 'json',
forcelinkupdate: '',
generator: 'categorymembers',
gcmtitle: catname,
gcmprop: 'ids',
gcmtype: 'page',
gcmlimit: limit,
gcmcontinue: gcmcontinue,
},
dataType: 'json',
success: function(data) {
CATPvars_nb += data.purge.length;
$("#catpurge-nb").text(CATPvars_nb);
if (typeof(data.continue) != "undefined")
catpurge_purge(mw.config.get('wgPageName'), '10', data.continue.gcmcontinue);
}
});
}
function catpurge_wait() {
if (CATPvars_crawl_started == CATPvars_crawl_finished)
mw.notify($(CATPvars_Texts['successnotif'].split("$1").join(CATPvars_nb)));
else
setTimeout(function() {
catpurge_wait()
}, 1500);
}