User:BrandonXLF/CitationStyleMarker.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/*** Citation Style Marker ***/

// Puts the type of citation style a citation is using next to it
// Adds a link in the toolbar to toggle the markers
// Documentation at [[en:w:User:BrandonXLF/CitationStyleMarker]]
// By [[en:w:User:BrandonXLF]]

// window.CSMarkerMode = 'always'; - Always how the style marker, no option to disable
// window.CSMarkerMode = 'both'; - Show the markers when there is more than one type of citation of a page
// window.CSMarkerMode = 'disabled'; - Hide the markers by default
// window.CSMarkerMode = 'enabled'; - Show the markers by default

$(function() {
	mw.loader.load('//en.wikipedia.org/w/index.php?title=User:BrandonXLF/CitationStyleMarker.css&action=raw&ctype=text/css', 'text/css');
	if (window.CSMarkerMode != 'always') {
		var portletItem = mw.util.addPortletLink('p-tb', '#', 'Hide CS marker'),
			classes = ['cs1', 'cs2', 'csvan', 'calsa'],
			typeCount = classes.reduce(function(acc, cur) {
				return acc + !!document.getElementsByClassName(cur).length;
			}, 0);

		if (!portletItem) return;

		var portlet = portletItem.getElementsByTagName('a')[0];

		portlet.addEventListener('click', function(e) {
			var enabled = document.body.classList.contains('nocsmarker');
			e.preventDefault();
			document.body.classList[enabled ? 'remove' : 'add']('nocsmarker');
			portlet.innerText = enabled ? 'Hide CS maker' : 'Show CS marker';
		});

		if (window.CSMarkerMode == 'disabled' || window.CSMarkerMode == 'both' && typeCount < 2) {
			document.body.classList.add('nocsmarker');
			portlet.innerText = 'Show CS marker';
		}
	}
});