Utilisateur:Od1n/Codes modèles abréviations ordinales.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.mw.loader.using(['mediawiki.api', 'mediawiki.util'], function () {
var userGroups = mw.config.get('wgUserGroups');
var apiLimit = userGroups.includes('sysop') || userGroups.includes('bot') ? 5000 : 500;
var nsModeles = [];
var contents = {};
getTitles();
function getTitles(continueParams) {
var params = {
action: 'query',
list: 'categorymembers',
cmtitle: "Catégorie:Modèle d'abréviation ordinale en chiffres arabes",
cmlimit: apiLimit,
formatversion: 2,
};
if (continueParams) {
Object.assign(params, continueParams);
}
new mw.Api()
.get(params)
.done(function (data) {
var titles = data.query.categorymembers.map(function (page) {
return page.title;
});
nsModeles = nsModeles.concat(titles);
if (data.continue) {
getTitles(data.continue);
} else {
handleModeles();
}
});
}
function handleModeles() {
var chunks = chunk(nsModeles, 50);
var remaining = chunks.length;
chunks.forEach(function (chunk) {
new mw.Api()
.get({
action: 'query',
titles: chunk,
prop: 'revisions',
rvprop: 'content',
formatversion: 2,
})
.done(function (data) {
data.query.pages.forEach(function (page) {
contents[page.title] = page.revisions[0].content;
});
--remaining;
if (!remaining) {
$(render);
}
});
});
}
function render($) {
var $output = $('<div>');
nsModeles.forEach(function (title) {
var $link = $('<a>')
.attr('href', mw.util.getUrl(title))
.text(title.replace(/^Modèle:/, ''));
var $h4 = $('<h4>').append($link);
var $pre = $('<pre>').text(contents[title]);
$output.append($h4, $pre);
});
var placeholder = $('#codes-modeles-abreviations-ordinales');
if (placeholder.length) {
placeholder.append($output);
} else {
$('#mw-content-text').prepend($output);
}
}
function chunk(arr, size) {
var chunks = [];
for (var i = 0, len = arr.length; i < len; i += size) {
chunks.push(arr.slice(i, i + size));
}
return chunks;
}
});