Jump to content

User:Hilst/Scripts/scriptManager.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.
/** 
 * scriptManager, based on [[:en:User:MusikAnimal/scriptManager.js]] by [[User:MusikAnimal]]
 */

$( document ).ready( function () { 
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
	"use strict";
	
	var skin = mw.config.get('skin');
	var portlet = mw.util.addPortlet("p-enable-scripts", "Enable scripts");
	
	if (skin === 'vector'){
		mw.util.addPortlet("p-enable-scripts", "Enable scripts", "#p-lang"); // Vector doesn't style the portlet
	                                                                       // If we don't attach it when created
	} else if (skin === 'timeless' || $('#p-coll-print_export').length > 0) {
		$(portlet).insertAfter('#p-tb');
	} else {
		$(portlet).insertAfter('#p-lang');
	}

	var loadScript = function(e) {
		mw.loader.load(e.data.src); // Load the script
		                            // TODO: implement error handling
		mw.notify(`${e.data.script} has been enabled.`, {title: "scriptManager", type: "success"});
		$(`#t-enablescript-${e.data.scriptName}`).remove();
	};
 
 	if (window.scriptsToManage) {
		$.each(scriptsToManage, function(script, src) {
			var scriptName = script.replace(/ /g,"_"); 

			mw.util.addPortletLink("p-enable-scripts", "javascript:", script, `t-enablescript-${scriptName}`, `Enable ${script} for this page`);

			// If a script has been clicked, pipe it to loadScript
			$(`#t-enablescript-${scriptName}`).click({
				scriptName: scriptName,
				script: script,
				src: src
			}, loadScript);
		});
 	} else {
		mw.util.addPortletLink("p-enable-scripts", "en.wikipedia.org/wiki/User:Hilst/Scripts/scriptManager", "No scripts registered!");
 	}
});
}());