Utilisateur:Tpt/badges.js
Apparence
Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
- Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
- Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
- Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
- Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
mw.loader.using(['mediawiki.widgets', 'mediawiki.util', 'mediawiki.api', 'ext.proofreadpage.base'], function () {
$(function() {
if(mw.config.get('wgNamespaceNumber') !== 0) {
return;
}
var wdApi = new mw.ForeignApi('https://www.wikidata.org/w/api.php');
var siteId = mw.config.get('wgPageContentLanguage') + 'wikisource'; //TODO: bad
var pageTitle = mw.config.get('wgPageName');
function getBadges(pageTitle) {
return wdApi.get({
action: 'wbgetentities',
props: 'info|sitelinks',
sites: siteId,
titles: pageTitle
}).then(function(data) {
for(var i in data.entities) {
if('missing' in data.entities[i]) {
return undefined;
}
return data.entities[i].sitelinks[siteId].badges;
}
});
}
function setBadges(pageTitle, badges) {
wdApi.postWithToken('csrf', {
action: 'wbsetsitelink',
site: siteId,
title: pageTitle,
linksite: siteId,
linktitle: pageTitle,
badges: badges.join('|')
}).then(function(data) {
if('success' in data) {
mw.notify('Mise à jour du badge de qualité faite');
} else {
OO.ui.alert('Mise à jour du badge de qualité interrompue : ' + JSON.stringify(data));
}
}, function (jqXHR, textStatus) {
OO.ui.alert('Mise à jour du badge de qualité interrompue :' + JSON.stringify(textStatus));
});
}
var levelMapping = {
'Q20748094': 2,
'Q20748091': 1,
'Q20748092': 3,
'Q20748093': 4
};
getBadges(pageTitle).done(function(badges) {
if(badges === undefined || badges.length > 1) {
return; //TODO: work when there is no item
}
//View mode
$.each(badges, function(_, badge) {
if(badge in levelMapping) {
$('#ca-nstab-main a').addClass('quality' + levelMapping[badge]);
}
});
//Setup edit mode
var selectWidget = new OO.ui.ButtonSelectWidget({
items: [
new OO.ui.ButtonOptionWidget({
data: 'Q20748094',
icon: 'notice',
title: 'incomplet'
}),
new OO.ui.ButtonOptionWidget({
data: 'Q20748091',
icon: 'close',
title: 'non corrigé'
}),
new OO.ui.ButtonOptionWidget({
data: 'Q20748092',
icon: 'check',
title: 'relu et corrigé'
}),
new OO.ui.ButtonOptionWidget({
data: 'Q20748093',
icon: 'star',
title: 'validé'
})
]
});
$('.editCheckboxes > .oo-ui-horizontalLayout').append(new OO.ui.FieldLayout(selectWidget, {
align: 'inline',
label: 'Niveau d’avancement du texte',
help: 'Niveau d’avancement du texte stocké via le système de "badge" des liens de Wikidata'
}).$element);
$.each(badges, function(_, badge) {
selectWidget.selectItemByData(badge);
});
$('.mw-editform').submit(function() {
var selectedOption = selectWidget.findSelectedItem();
var newBadges = (selectedOption === null) ? [] : [selectedOption.getData()];
if(newBadges != badges) {
setBadges(pageTitle, newBadges);
}
});
});
});
});