/*
* Script pour aider à mettre à jour ]
*/
/* globals Promise, mw, $ */
mw.loader.using('mediawiki.api', function () {
mw.hook('wikipage.content').add(function ($content) {
'use strict';
function getFilters() {
return new Promise(function (resolve, reject) {
var filters = ;
var userGroups = mw.config.get('wgUserGroups');
var apiLimit = userGroups.includes('sysop') || userGroups.includes('bot') ? 5000 : 500;
function makeRequest(apiContinue) {
var params = {
action: 'query',
list: 'abusefilters',
abfprop: ,
abflimit: apiLimit,
};
if (apiContinue) {
Object.assign(params, apiContinue);
}
new mw.Api().get(params).done(function (data) {
if (!data.query) {
reject();
}
filters = filters.concat(data.query.abusefilters);
if (data) {
makeRequest(data);
} else {
resolve(filters);
}
});
}
makeRequest();
});
}
getFilters().then(function (filters) {
var etats = {};
filters.forEach(function (filter) {
if (filter.enabled !== undefined) {
etats = '<span style="color:green">(activé)</span>';
} else if (filter.deleted !== undefined) {
etats = '<span style="color:red">(supprimé)</span>';
} else {
etats = '<span style="color:orange">(désactivé)</span>';
}
});
$content.find('.mw-parser-output').find('a').each(function (_, link) {
// on traite les liens vers ]
var match = (link.title || '').match(/^Spécial:Filtre antiabus\/(\d+)$/);
if (!match) {
return;
}
var filterId = match;
// on limite aux liens dont le texte est un nombre (non formaté, ou formaté)
if (!/^(\d+|\d{1,3}(\xA0\d{3})*)$/.test(link.textContent)) {
return;
}
var etat = etats || '???';
link.insertAdjacentHTML('afterend', '\xA0' + etat);
});
});
});
});