משתמש:חיים 7/common.js/MessagesBot.js

מתוך ויקיפדיה, האנציקלופדיה החופשית

הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
mw.loader.using( [ 'mediawiki.util' ] ).then( function() {
    var portlet = x = mw.util.addPortletLink('p-tb', '#', 'בוט הודעות');
	$(portlet).find('a').click(function() {
		function mes() {
			var message = '\n==' + $('#mesheading').val() + '==\n' + '{{ס:' + $('#mesmessage').val() + '}} ~~' + '~~';
			function save(page) {
				$('#messstatus').text('כותב את ההודעה בדף: ' + page);
				$.ajax({
					url: mw.util.wikiScript('api'), 
					async: false,
					type: 'post',
					dataType: 'json',
					data: {action: 'edit', title: page, summary: $('#messummary').val(), appendtext: message, token: mw.user.tokens.get('csrfToken')}
				});
				return 1;
			}
			$.getJSON(mw.util.wikiScript('api'), 
				{action: 'parse', page: $('#mesmailinglist').val(), prop: 'links', format: 'json'}, 
				function(data) {
					var count = 0;
					if (data && data.parse && data.parse.links)
						$(data.parse.links).each(function(i, link) {
							if (link.ns == 3 && typeof link.exists != 'undefined')
								count += save(link['*']);
						});
					$('#messstatus').text('סיים לכתוב את ההודעות (' + count + '). אפשר לסגור');
				}
			);
		}
		
		mw.loader.using('jquery.ui', function() {
			function makeline(line) {
				return $('<tr>')
					.append($('<td>').text(line.prompt + ':'))
					.append($('<td>').append($('<input>', {type: 'text', width: '30em', id: line.input})));
			}
			function maketable(ar) {
				var t = $('<table>');
				for (var i in ar)
					t.append(makeline(ar[i]));
				return t;
			}
			var dialog = $('<div>').dialog()
				.append(maketable([
					{input: 'mesmailinglist', prompt: 'דף רשימת התפוצה'},
					{input: 'mesmessage', prompt: 'דף ההודעה'},
					{input: 'mesheading', prompt: 'כותרת'},
					{input: 'messummary', prompt: 'תקציר העריכה'}					
				]))
				.append($('<p>', {id: 'messstatus'}).text('ממתין....'))
				.dialog('option', 'buttons', {
					'בצע': 
						mes,
					'סגור':
					function() {dialog.dialog('close');}
				});
			$('.ui-dialog-buttonpane').css({backgroundColor: '#E0E0E0'});
			dialog.dialog('option', {
				height: 'auto',
				width: 'auto',
				position: [(window.width - dialog.width()) / 2, (window.height - dialog.height()) / 2]
			});
			$('.ui-dialog-buttonpane').css({direction: 'ltr'});
			$('.ui-dialog-buttonpane > button').css({float: 'right'}); // jQuery has problems with rtl dialogs + ie is braindamaged.
		});
	});
});