Utilisateur:NoFWDaddress/Gadget-markAdmins-updater.js
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./**
* Provide an easy way to update the table of the gadget "markAdmins"
*
* @author NoFWDaddress <https://twitter.com/NoFWDaddress>, 2018
* @documentation <https://fr.wikipedia.org/wiki/Discussion Utilisateur:NoFWDaddress/Gadget-markAdmins-updater.js#Documentation>
*
* Quick install: add "importScript('Utilisateur:NoFWDaddress/Gadget-markAdmins-updater.js');" to your Commons.js
* Usage: Simply go on the gadget page and click the blue button to update the list (needs JS-admin privileges)
*/
// <nowiki>
window.markAdminUpdate = {
config : {
dataPage : 'Utilisateur:NoFWDaddress/Brouillon/MediaWiki:Gadget-markAdmins-data.js',
groups : {
frwiki : ['sysop', 'oversight', 'checkuser', 'bureaucrat'],
meta : ['steward', 'otrs-member']
}
},
groupsByUsers : {},
init: function() {
if ( mw.config.get( 'wgPageName' ) != this.config.dataPage )
return;
// Create the button
firstHeading = document.getElementById("firstHeading");
var html =
'<a href="#" onclick="markAdminUpdate.updateList()" id="markAdminUpdate">'
+ '<span class="mw-ui-button mw-ui-progressive" role="button">'
+ 'Mettre à jour avec les dernières données'
+ '</span></a>';
var div = document.createElement("div");
div.className = 'plainlinks';
div.innerHTML = html;
firstHeading.parentNode.insertBefore(div, firstHeading.nextSibling);
},
updateList: function() {
this.$fetchData();
},
$fetchData: function() {
var api = new mw.Api(),
params = {
action: 'query',
list: ['globalallusers', 'allusers'],
agugroup: this.config.groups.meta,
augroup: this.config.groups.frwiki,
aguprop: 'groups',
auprop: 'groups',
auwitheditsonly: 1,
agulimit: 'max',
aulimit: 'max'
};
api.get(params).done(function (data) {
markAdminUpdate.evalResult(data);
markAdminUpdate.updateContent();
});
},
updateContent: function() {
var output = "mw.hook('userjs.script-loaded.markadmins').fire(";
output += JSON.stringify(this.groupsByUsers).replace('"],"', '"],\r\n\t"');
output += ");";
// Edit
new mw.Api().edit(this.config.dataPage,
function (revision) {
return {
text: output,
summary: 'Mise à jour des groupes',
minor: true
};
})
.then(function () {
console.log( 'Saved! ');
});
// Alert
alert('Le nouveau contenu a été inséré. Controllez votre historique svp.');
},
evalResult: function(data) {
var that = markAdminUpdate;
console.log(data);
// Allusers
$.each(data.query.allusers, function(i, v) {
that.groupsByUsers[v.name] = that.stripgroups(v.groups);
});
// Globalallusers
$.each(data.query.globalallusers, function(i, v) {
var gbu = that.groupsByUsers[v.name];
if(gbu === undefined)
gbu = that.stripgroups(v.groups);
else
gbu = gbu.concat(that.stripgroups(v.groups));
that.groupsByUsers[v.name] = gbu;
});
console.log(that.groupsByUsers);
},
stripgroups: function(groups) {
var tcg = this.config.groups.frwiki.concat(this.config.groups.meta);
groups = groups.filter( function( el ) {
return tcg.indexOf( el ) >= 0;
});
return groups;
}
};
markAdminUpdate.init();
// </nowiki>