משתמש:היהודי/common.js: הבדלים בין גרסאות בדף

מתוך אוצר הספרים היהודי השיתופי
קפיצה לניווט קפיצה לחיפוש
(החלפה)
(החלפה)
שורה 1: שורה 1:
// הסקריפט צובע את הטאב "מעקב" לפי מספר העוקבים, ומוסיף רמז שמפרט כמה עוקבים אחרי הדף
// :סקריפט 67 נכתב על ידי [[משתמש:RoyTek]], נערך על ידי [[משתמש:קיפודנחש]].
// עבור משתמשים ללא הרשאת "בדוק עריכות", הסקריפט מפרט את מספר העוקבים רק אם יש 30 או יותר עוקבים, אחרת המידע הוא "פחות מ-30".
if(mw.config.get('wgNamespaceNumber')==2 || mw.config.get('wgNamespaceNumber')==3)
// original version by [[User:Mikimik]]
mw.loader.using([ 'jquery.tipsy', 'mediawiki.util'], function() {
// current version by קיפודנחש
    var user=mw.config.get('wgTitle').replace(/\/.*$/, '');
if ( mw.config.get( 'wgNamespaceNumber' ) + 1 )  
if (!user)
(function() {
return;
"use strict";
mw.loader.using( 'mediawiki.api', function() {
function tsToDate(rc) {
new mw.Api().get( {
var date = new Date(rc.timestamp);
prop: 'info',
if (isNaN(date)) {// all sane browsers can just do new Date(rc.timestanp). only IE refuses.
inprop: 'watchers|visitingwatchers',
dar = rc.timestamp.split(/[^\d]/); // timestamp looks like so: "2011-05-05T18:56:27Z"
titles: mw.config.get( 'wgPageName' )
var month = parseInt(dar[1],10) - 1; // "Date" expexts months in the range of 0..11, timestamp is more conventional.
} ).done( function( data ) {
var minutes = parseInt(dar[4], 10) - new Date().getTimezoneOffset();//ts is UTC, but new Date(y,M,d,h,m,s) assumes local TZ
if ( data && data.query && data.query.pages )
date = new Date(dar[0],month,dar[2],dar[3],minutes,dar[5]);
for ( var pageid in data.query.pages ) {
}
var pinfo = data.query.pages[pageid];
return date;
showWatchers( pinfo.watchers, pinfo.visitingwatchers );
}
}
} );
} );


function showWatchers( watchersNum, visitingWatchers ) {
function ago(ms) {
var color,
var s = ms / 1000;
text,
if (s < 100)
caWatch = $( '#ca-watch a, #ca-unwatch a' ),
return 'ברגע זה';
range = watchersNum === 0 ? 'zero'
var ranges = [
: watchersNum === 1 ? 'one'
{r: 60, t: 'דקות', s: 'דקה', d: 'שתי דקות'},
: watchersNum < 5 ? 'few'
{r: 60, t: 'שעות', s: 'שעה', d: 'שעתיים'},
: watchersNum < 12 ? 'several'
{r: 24, t: 'ימים', s: 'יממה', d: 'יומיים'},
: watchersNum < 30 ? 'dozens'
{r: 7, t: 'שבועות', s: 'שבוע', d: 'שבועיים'},
: watchersNum >= 30 ? 'many'
{r: 52, t: 'שנים', s: 'שנה', d: 'שנתיים'}
: 'unknown'; // less than 30; user does not have permissions to get watchers count
];
switch ( range ) {
case 'zero':
var est = '', num;
text = 'אין עוקבים';
for (var i = 0; i < ranges.length; i++) {
color = '#ff0000';
var range = ranges[i];
break;
s /= range.r;
case 'one':
if (s < 1)
text = 'עוקב יחיד';
color = 'orange';
break;
case 'unknown':
color = 'yellow';
text = 'פחות מ-30 עוקבים';
break;
default:
text = watchersNum + ' עוקבים';
color = { few: 'pink', several: 'yellow', dozens: 'lightblue', many: 'lightgreen' }[range];
break;
break;
num = '';
if (s < 2)
est = range.s;
else if (s < 3 && range.d)
est = range.d;
else {
num = '-' + Math.floor(s) + ' ';
est = range.t;
}
}
}
if ( typeof( visitingWatchers ) === 'number' )
return 'לפני כ' + num + est;
text += ", " + visitingWatchers + " פעילים";
if ( caWatch.length )
caWatch.css( { backgroundColor: color } ).attr( { title: text } );
else $( function() { // wait until #ca-watch is available
$( '#ca-watch a' ).css( { backgroundColor: color } ).attr( { title: text } );
});
}
}
})();
function pic(recent) {
return recent
? '//upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Dialog-information_on.svg/15px-Dialog-information_on.svg.png'
: '//upload.wikimedia.org/wikipedia/commons/thumb/1/11/Dialog-information_red.svg/15px-Dialog-information_red.svg.png';
}
    $.getJSON(mw.util.wikiScript('api'),
{action: 'query', list: 'usercontribs', ucuser: user, uclimit: '1', format:'json'},
function (data) {
  if (data && data.query && data.query.usercontribs && data.query.usercontribs.length) {
var lastEditTime = tsToDate(data.query.usercontribs[0]),
timeSinceEdit = new Date() - lastEditTime;
recent = timeSinceEdit < 1000 * 60 * 20,
page = data.query.usercontribs[0].title,
pageLink = $('<a>', {href: mw.util.getUrl(page), text: page}),
userLinkTitle = 'השאר ל' + user + ' הודעה חדשה בדף השיחה',
userLink = $('<a>', {href: mw.util.getUrl('User Talk:' + user) + '?action=edit&section=new', title: userLinkTitle, text: user}),
div = $('<div>')
.append('העריכה האחרונה של ').append(userLink).append('<br />')
.append('הייתה ' + ago(timeSinceEdit) + '<br />')
.append('בדף: ').append(pageLink),
timer = null,
img = $('<img>',{src: pic(recent)})
.css({float: 'left'})
.tipsy({gravity: 'nw', trigger: 'manual', title: function(){return div.html();}, html: true, fade: true})
.mouseover(function() {
img.tipsy('show');
})
.mouseout(function() {
timer = setTimeout(function(){
img.tipsy('hide');
}, 1000);
});
$('.tipsy')
.on('mouseover', function() {
clearTimeout(timer);
})
.on('mouseout', function(){
timer = setTimeout(function(){
img.tipsy('hide');
}, 1000);
});
$('#firstHeading').prepend(img);
}
}
    );
});

גרסה מ־19:04, 31 בינואר 2021

// :סקריפט 67 נכתב על ידי [[משתמש:RoyTek]], נערך על ידי [[משתמש:קיפודנחש]].
if(mw.config.get('wgNamespaceNumber')==2 || mw.config.get('wgNamespaceNumber')==3)
mw.loader.using([ 'jquery.tipsy', 'mediawiki.util'], function() {
    var user=mw.config.get('wgTitle').replace(/\/.*$/, '');
	if (!user)
		return;
		
	function tsToDate(rc) {
		var date = new Date(rc.timestamp);
		if (isNaN(date)) {// all sane browsers can just do new Date(rc.timestanp). only IE refuses.
			dar = rc.timestamp.split(/[^\d]/); // timestamp looks like so: "2011-05-05T18:56:27Z"
			var month = parseInt(dar[1],10) - 1; // "Date" expexts months in the range of 0..11, timestamp is more conventional.
			var minutes = parseInt(dar[4], 10) - new Date().getTimezoneOffset();//ts is UTC, but new Date(y,M,d,h,m,s) assumes local TZ
			date = new Date(dar[0],month,dar[2],dar[3],minutes,dar[5]);
		}
		return date;
	}

	function ago(ms) {
		var s = ms / 1000;
		if (s < 100)
			return 'ברגע זה';
		var ranges = [
				{r: 60, t: 'דקות', s: 'דקה', d: 'שתי דקות'},
				{r: 60, t: 'שעות', s: 'שעה', d: 'שעתיים'},
				{r: 24, t: 'ימים', s: 'יממה', d: 'יומיים'},
				{r: 7, t: 'שבועות', s: 'שבוע', d: 'שבועיים'},
				{r: 52, t: 'שנים', s: 'שנה', d: 'שנתיים'}
			];
			
		var est = '', num;
		for (var i = 0; i < ranges.length; i++) {
			var range = ranges[i];
			s /= range.r;
			if (s < 1)
				break;
			num = '';
			if (s < 2)
				est = range.s;
			else if (s < 3 && range.d)
				est = range.d;
			else {
				num = '-' + Math.floor(s) + ' ';
				est = range.t;
			}
		}
		return 'לפני כ' + num + est;
	}
	
	function pic(recent) {
		return 	recent
			? '//upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Dialog-information_on.svg/15px-Dialog-information_on.svg.png'
			: '//upload.wikimedia.org/wikipedia/commons/thumb/1/11/Dialog-information_red.svg/15px-Dialog-information_red.svg.png';
	}
	
    $.getJSON(mw.util.wikiScript('api'), 
		{action: 'query', list: 'usercontribs', ucuser: user, uclimit: '1', format:'json'}, 
		function (data) {
		   if (data && data.query && data.query.usercontribs && data.query.usercontribs.length) {
				var lastEditTime = tsToDate(data.query.usercontribs[0]),
					timeSinceEdit = new Date() - lastEditTime;
					recent = timeSinceEdit < 1000 * 60 * 20,
					page = data.query.usercontribs[0].title,
					pageLink = $('<a>', {href: mw.util.getUrl(page), text: page}),
					userLinkTitle = 'השאר ל' + user + ' הודעה חדשה בדף השיחה',
					userLink = $('<a>', {href: mw.util.getUrl('User Talk:' + user) + '?action=edit&section=new', title: userLinkTitle, text: user}),
					div = $('<div>')
						.append('העריכה האחרונה של ').append(userLink).append('<br />')
						.append('הייתה ' + ago(timeSinceEdit) + '<br />')
						.append('בדף: ').append(pageLink),
					timer = null,
					img = $('<img>',{src: pic(recent)})
						.css({float: 'left'})
						.tipsy({gravity: 'nw', trigger: 'manual', title: function(){return div.html();}, html: true, fade: true})
						.mouseover(function() {
							img.tipsy('show');
						})
						.mouseout(function() {
							timer = setTimeout(function(){
								img.tipsy('hide');
							}, 1000);
						});
				$('.tipsy')
					.on('mouseover', function() {
						clearTimeout(timer);
					})
					.on('mouseout', function(){
						timer = setTimeout(function(){
							img.tipsy('hide');
						}, 1000);
					});
				$('#firstHeading').prepend(img);
			}
		}
     ); 
});