Aller au contenu

MediaWiki:Gadget-Bandcamp.js

De Wiki Undertale FR

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)
);