User:NguoiDungKhongDinhDanh/scriptManager.js

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.
// For attribution: [[User:MusikAnimal/scriptManager.js]]

var scriptsToManage;
(function() {
	var $html;
	if (mw.config.get('skin') === 'vector' || mw.config.get('skin') === 'vector-2022') {
		$html = $('<nav class="mw-portlet vector-menu vector-menu-portal portal" \
					role="navigation" id="p-enable-scripts" aria-labelledby="p-enable-scripts-label"></nav>');
		$html.append(
			'<label id="p-enable-scripts-label" class="vector-menu-heading">' +
				'<span class="vector-menu-heading-label">Enable scripts</span>' +
			'</label>'
		);
		$html.append(
			'<div class="vector-menu-content">' +
				'<ul class="vector-menu-content-list"></ul>' +
			'</div>'
		);
	} else {
		$html = $('<div class="generated-sidebar portlet" id="p-enable_scripts" role="navigation"></div>');
		$html.append('<h3 class="vector-menu-heading">Enable scripts</h3>');
		$html.append('<div class="pBody"><ul></ul></div>');
	}
 
	var loadScript = function(e) {
		mw.loader.load(e.data.src);
	};
 
 	if(scriptsToManage) {
		$.each(scriptsToManage, function(script, src) {
		  var scriptName = script.replace(/ /g, '_');
		  $html.find('ul').append('<li><a href="javascript:" id="t-enablescript-' + scriptName + '">' + script + '</a></li>');
		  $(mw.config.get('skin') === 'vector' || mw.config.get('skin') === 'vector-2022' ? '#mw-panel' : '#column-one').append($html);
		  $('#t-enablescript-' + scriptName).click({
		  	script: script,
		  	src: src
		  }, loadScript);
		});
 	} else {
 		$html.find('ul').append('<li><a href="//en.wikipedia.org/wiki/User:MusikAnimal/scriptManager">No scripts registered!</a></li>');
 		$(mw.config.get('skin') === 'vector' || mw.config.get('skin') === 'vector-2022' ? '#mw-panel' : '#column-one').append($html);
 	}
}());