MediaWiki:Gadget-Bandcamp.js
Note : après avoir publié 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 appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
- Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
- Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
function acceptedPolicy(platform) {
return Boolean(localStorage.getItem(`accepted-${platform}-policy`));
}
function acceptPolicy(platform) {
localStorage.setItem(`accepted-${platform}-policy`, 'true');
}
function prompt(event, platform) {
mw.loader.using('oojs-ui-windows').then(() =>
OO.ui.confirm($(`<p>${
mw.message(`gadget-music-accept-${platform}-policy`).parse()
}</p>`)).then(accepted => {
if (accepted) {
acceptPolicy(platform);
click(event);
}
})
);
}
function click(event) {
event.preventDefault();
const $widget = $(event.target).closest('.bandcamp-widget');
const platform = $widget.data('platform') || 'bandcamp';
if (!acceptedPolicy(platform)) {
return prompt(event, platform);
}
const track = $widget.data('track');
if (platform === 'spotify') {
$widget.html($('<iframe>', {
class: 'spotify-iframe',
frameborder: '0',
src: `https://open.spotify.com/embed/track/${track}`
}));
} else {
$widget.html($('<iframe>', {
frameborder: '0',
src: `https://bandcamp.com/EmbeddedPlayer/${Object
.entries({
bgcol: '000000',
linkcol: 'DDDDDD',
size: 'small',
track: Number(track),
transparent: true
})
.map(entry => entry.join('='))
.join('/')}`
}));
}
}
mw.hook('wikipage.content').add($content => $content
.find('.bandcamp-widget a')
.removeClass('external')
.html('<svg class="skin-invert" width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19.69 12.6L5.143 22.867a.722.722 0 0 1-.753.05.733.733 0 0 1-.391-.65V1.733c0-.274.15-.524.391-.65a.724.724 0 0 1 .753.05l14.545 10.266a.734.734 0 0 1 0 1.201z" fill-rule="evenodd"/></svg>')
.click(click)
);