Utilisateur:Od1n/TagFilterDeluxe.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./* <!--{{Catégorisation JS|TagFilterDeluxe}}--> */
// fork obsolète - utiliser [[MediaWiki:Gadget-TagFilterDeluxe.js]] : obtenir('TagFilterDeluxe');
if (['Recentchanges', 'Newpages', 'Contributions'].indexOf(mw.config.get('wgCanonicalSpecialPageName')) !== -1) {
mw.loader.using(['mediawiki.util', 'mediawiki.storage'], function () {
var cachedData, filterList;
cachedData = mw.storage.get('TagFilterDeluxe_filterList');
if (cachedData) {
filterList = cachedData.split('|');
$(document).ready(modifyInput);
} else {
$.get(
mw.util.wikiScript('api'),
{action: "query", list: "tags", tgprop: "active", tglimit: 499, format: "json", formatversion: 2},
function (data) {
var tags = data.query.tags;
filterList = [];
for (var a = 0; a < tags.length; a++) {
var thistag = tags[a];
if (!thistag.active) continue;
filterList.push(thistag.name);
}
mw.storage.set('TagFilterDeluxe_filterList', filterList.join('|'), 86400); // 86400 secondes = 24 heures
$(document).ready(modifyInput);
}
);
}
function modifyInput() {
var input, select, activeFilter, a, l, filter;
input = $('input.mw-tagfilter-input');
if (input.length !== 1) {
return;
}
select = '<select name="tagfilter">'
+ '<option value="">* Aucune *</option>';
activeFilter = getActiveFilter();
for (a = 0, l = filterList.length; a < l; a++) {
filter = filterList[a];
select += '<option value="' + filter + '"';
if (filter === activeFilter) {
select += ' selected="selected"';
}
select += '>' + filter + '</option>';
}
select += '</select>';
input.replaceWith(select);
}
function getActiveFilter() {
var m = /^[^#]*[&?]tagfilter=([^&#]*)/.exec(document.URL);
if (m) {
return decodeURIComponent(m[1]).replace(/\+/g, " ");
}
return false;
}
});
}