Utilisateur:Od1n/Rapport gadgets.js
Apparence
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.// pour chargement manuel sur un autre wiki :
// mw.loader.load('//fr.wikipedia.org/w/index.php?title=Utilisateur:Od1n/Rapport_gadgets.js&action=raw&ctype=text/javascript');
mw.loader.using('mediawiki.util', function () {
$.get(mw.util.getUrl('MediaWiki:Gadgets-definition', {action: 'render'}), function (data) {
var store = [];
var $content = $(data); // avec le "action=render", on obtient directement l'élément "#mw-content-text > .mw-parser-output"
$content.find('#toc').remove();
$content.find('h2, h3, ul li').each(function () {
var $this = $(this);
var text = $this.text();
if ($this.is('h2, h3')) {
store.push({
title: text.replace(/\s*\[modifier\]$/, ''),
gadgets: []
});
} else if (store.length > 0) {
var gadget = {};
gadget.name = text.match(/[^|[]+/)[0].trim();
gadget.isDefault = /[[|] *default *[\]|]/.test(text);
gadget.isEnabled = !!mw.user.options.get('gadget-'+gadget.name);
store[store.length-1].gadgets.push(gadget);
}
});
$(function ($) {
var $table = $('<table class="wikitable"><tr>'
+ '<th>Section</th>'
+ '<th>Gadget</th>'
+ '<th>Default</th>'
+ '<th>Enabled</th>'
+ '</tr></table>');
$.each(store, function (i, section) {
var nbRows = 0;
$.each(section.gadgets, function () {
if (this.isDefault || this.isEnabled) {
++nbRows;
}
});
if (nbRows === 0) {
return;
}
var firstRow = true;
$.each(section.gadgets, function (j, gadget) {
if (!gadget.isDefault && !gadget.isEnabled) {
return;
}
var $tr = $('<tr></tr>');
if (firstRow) {
$tr.append('<th rowspan="'+nbRows+'">' + section.title + '</th>');
firstRow = false;
}
$tr.append('<td>' + gadget.name + '</td>'
+ '<td>' + (gadget.isDefault ? 'default' : '') + '</td>'
+ '<td>' + (gadget.isEnabled ? 'enabled' : '') + '</td>');
if (!gadget.isDefault && gadget.isEnabled) {
$tr.css('background', '#9BD398');
} else if (gadget.isDefault && !gadget.isEnabled) {
$tr.css('background', '#FDB6B8');
}
$table.append($tr);
});
});
var $placeholder = $('#rapport-gadgets');
if ($placeholder.length) {
$placeholder.append($table);
} else {
$('#mw-content-text').prepend($table);
}
});
});
});