ميدياويكي:Gadget-PersonalScript.js

من أرابيكا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث

ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.

// [[he:ויקיפדיה:סקריפטים/66]]

(function() {
	var lsKey = 'personalScript';
	
	function getTop() {return ((lsKey in localStorage) && localStorage[lsKey].split('\n')[0]) || ''}
	
	function allScripts() {
		return (localStorage[lsKey] || '').split('\n');
	}
	
	function setScript(script) {
		var ls = localStorage[lsKey];
		if (lsKey in localStorage)
		{
			var 
				lsa = allScripts(),
				ind = $.inArray(script, lsa);
			if (ind < 0)
				ind = 10;
			if (! lsa[0])
				lsa.shift(); // if first is empty, remove it.
			lsa.splice(ind, 1); // remove current if exists, or last if length >= 10
			lsa.unshift(script);
			localStorage[lsKey] = lsa.join('\n');
		} else
			localStorage[lsKey] = script;
		loadScript(script);
	}
	
	function loadScript(s) {
		if (!s)
			return;
		try {
			var isCss = /\.css$/i.test(s);
			if (/\/\//.test(s)) 
				mw.loader.load(s, isCss ? 'text/css' : 'text/javascript');
			else 
				return isCss ? importStylesheet(s) : importScript(s);
		} catch(e) {}
	}

	function mySetSpecialScript() {
		mw.loader.using('jquery.ui', function() {
			var 
				inputBox = $('<input>').val(getTop()).css({width: '22em', direction: 'ltr'}),
				selector = $('<select>')
					.css({direction: 'ltr'})
					.change(function() {inputBox.val(this.value)});
			$.each(allScripts(), function(ind, item) {
				selector.append($('<option>', {value: item, text: item.substr(0, 20) + (item.length > 20 ? '...':'')}));
			});
			$('<div>')
				.css({direction: 'ltr'})
				.dialog(
					{title: 'سكربت شخصي',
					modal: true,
					position: [60, 60],
					buttons: [
						{text: 'احفظ', click: function() {
							setScript(inputBox.val());
							$(this).dialog('close');
						}},
						{text: 'ألغ', click: function() {
							setScript('');
							$(this).dialog('close');
						}}]
				})
				.append(inputBox)
				.append($('<p>'))
				.append(selector);
				$('.ui-dialog-buttonpane button').css({float: 'right'});
		});
	}

	loadScript(getTop());
	mw.util.addPortletLink('p-cactions', '#noAnchor', 'سكربت شخصي').onclick = mySetSpecialScript;
})();