משתמש:Assafn/common.js

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

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
userHideAllSubsequent=true;
//importScript('משתמש:Assafn/hidetopcontrib.js');
mw.loader.load("https://en.wikipedia.org/w/index.php?title=User:Markhurd/hidetopcontrib.js&action=raw&ctype=text/javascript");
//////
importScript('משתמש:yonidebest/monobook.js/updateUserEditCounter.js');

if (mw.config.get('wgNamespaceNumber') == 4) {
 importScript('משתמש:yonidebest/monobook.js/checkpercentage.js'); /* Allow to check who's winning in vote pages. */
}

importUserScript(13);









/*
 * סקריפט לבדיקת זכות הצבעה. הסקריפט מוסיף קישור בתיבת הכלים. לחיצה על קישור זה מוסיפה קישורי "±" ליד קישורים לדפי משתמש. לחיצה על קישור זה תבצע את הבדיקה. 
 * נבדק ב-IE8.
 * נכתב על ידי [[משתמש:Yonidebest]]
 */
 
function updateVoteRightResult(userName, id, result) {
 var span = document.getElementById('votelink' + id);
 var text = '<font color="';
 if (result == 'עבר') // pass
  text += 'green';
 else // failed
  text += 'red';
 text += '">' + result + '</font>';
 span.innerHTML = ' (' + text + ') ';
}
 
function check100EditsAnd90Days(userName, id) {
 var a = sajax_init_object();
 a.open('GET', '//he.wikipedia.org/w/api.php?action=query&format=xml&list=usercontribs&ucuser=' +
                userName +
				'&ucprop=title|timestamp&ucnamespace=0|6|8|10|12|14|100&uclimit=100&ucstart=' +
				myCheckDate.getFullYear() +
				(( (myCheckDate.getMonth() + 1) <= 9 ) ? '0' + (myCheckDate.getMonth() + 1) : (myCheckDate.getMonth() + 1)) +
				(( myCheckDate.getDate() <= 9 ) ? '0' + myCheckDate.getDate() : myCheckDate.getDate()) +
				(( myCheckDate.getHours() <= 9 ) ? '0' + myCheckDate.getHours() : myCheckDate.getHours()) +
				(( myCheckDate.getMinutes() <= 9 ) ? '0' + myCheckDate.getMinutes() : myCheckDate.getMinutes()) +
				'00', true);
 a.onreadystatechange = function() {
   if (a.readyState != 4) return;
   var rx = new RegExp('timestamp="(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})', 'g');
   var m;
   var counter = 1;
   while (counter < 101) {
    m = rx.exec(a.responseText);
	if (!m) { // no 100 edits
	 updateVoteRightResult(userName, id, 'נכשל - אין 100 עריכות'); // failed - no 100 edits
	 return;
	}
	counter++;
   }
   // if reached here, there are 100 edit - check 90 day rule
   var compareDate = new Date();
   compareDate.setFullYear(m[1], eval(m[2]) - 1, m[3]);
   compareDate.setHours(m[4], m[5]);
   if (((myCheckDate - compareDate)/60/60/1000/24) > 91) { // more than 91 days
	updateVoteRightResult(userName, id, 'נכשל - אין 100 עריכות ב-90 ימים'); // failed - more than 90 days
	return;
   }
   // if reached here, passed all tests.
   updateVoteRightResult(userName, id, 'עבר'); // passed
  };
 a.send(null);
}
 
function checkUserSeniority(userName, id) {
 var a = sajax_init_object();
 a.open('GET', '//he.wikipedia.org/w/api.php?action=query&list=usercontribs&ucuser=' + userName + '&ucprop=title|timestamp&format=xml&ucdir=newer&uclimit=1' , true);
 a.onreadystatechange = function() {
   if (a.readyState != 4) return;
   if (a.responseText.indexOf('item userid=') == -1) { // there are no contributions
	updateVoteRightResult(userName, id, 'נכשל - אין תרומות'); // failed - no contributions
	return;
   } else { // there are contributions - check first edit date
    var rx = new RegExp('timestamp="(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})');
	var m = rx.exec(a.responseText);
    if (m && m[0]) {
	 var compareDate = new Date();
	 compareDate.setFullYear(m[1], eval(m[2]) - 1, m[3]);
	 compareDate.setHours(m[4], m[5]);
	 if (((myCheckDate - compareDate)/60/60/1000/24) < 30) { // less than 30 days
	  updateVoteRightResult(userName, id, 'נכשל - אין 30 ימי ותק'); // failed - less than 30 days
	  return;
     } else { // passes seniority - on to next test
	  check100EditsAnd90Days(userName, id);
	 }
	}
   }
  };
 a.send(null);
}
 
var myCheckDate = new Date();

function checkVoteRights2(userName, id) {
 var textboxTime = document.getElementById('checkTime');
 var rxTime = new RegExp("[0-2][0-9]:[0-5][0-9]");
 var mTime = rxTime.exec(textboxTime.value);
 if (!mTime) // no time added, use default
  textboxTime.value = '12:00'; 
 
 var textboxDate = document.getElementById('checkDate');
 if (textboxDate == 'ddmmyyyy') {
  alert("יש להזין את תאריך הבדיקה (בדרך כלל תאריך תחילת ההצבעה) בתיבה המתאימה."); // type check date in the appropriate textbox
  return;
 }
 var rxDate = new RegExp("[0-3][0-9][0-1][0-9]20[0-9][0-9]");
 var mDate = rxDate.exec(textboxDate.value);
 if (!mDate) { // date not inserted correctly
  alert('התאריך שהוזן אינו תקין. יש להזין יום ב-2 ספרות, לאחר מכן חודש ב-2 ספרות ולאחר מכן שנה ב-4 ספרות.'); // incorrect date
  return;
 }
 
 if (id == "-1") { // checking user from user page - add span
  var link = document.getElementById('checkDateLink');
  var span = document.createElement('span');
  span.id = 'votelink-1';
  span.innerHTML = '<font color="orange">בודק...</font>'; // checking...
  link.parentNode.insertBefore(span, link);
  link.parentNode.removeChild(link);
 }
 else { // get ready-made span
  var span = document.getElementById('votelink' + id);
  span.innerHTML = ' (<font color="orange">בודק...</font>) '; // checking...
 }
 
 myCheckDate.setFullYear(textboxDate.value.substr(4, 4), eval(textboxDate.value.substr(2, 2)) - 1, textboxDate.value.substr(0, 2)); // year, month, day
 myCheckDate.setHours(textboxTime.value.substr(0, 2), textboxTime.value.substr(3, 2));
 
 checkUserSeniority(userName, id);
}
 
function addVoteRightsLinks(event) {
	function cvr_pad(i, len) {
		var s = '00000' + i;
		return s.substring(s.length - len);
	}
 
 var type = mw.config.get('wgNamespaceNumber') == 2 ? 1 : 0;
 var textbox1 = document.createElement('input');
 textbox1.size = "10";
 textbox1.id = 'checkDate';
 textbox1.value = 'ddmmyyyy';
 var toolLink = document.getElementById('t-showvoterights');
 toolLink.parentNode.insertBefore(textbox1, toolLink);
 var textbox2 = document.createElement('input');
 textbox2.id = 'checkTime';
 textbox2.size = "10";
 textbox2.value = 'hh:mm';
 
 event.preventDefault();
 
 toolLink.parentNode.insertBefore(textbox2, toolLink);
	var lists = mw.util.$content.find('li');
 	for (var i = 0; i < lists.length; i++) {
		var l = lists[i];
		var s = l.innerHTML;
		if (s.indexOf('תחילת ההצבעה') + 1) {
			var match = s.match(/(\d{2}):(\d{2})/);
			if (match)
				textbox2.value = match[1] + ':' + match[2];
			var months = ['בינואר','בפברואר','במרץ','באפריל','במאי','ביוני','ביולי','באוגוסט','בספטמבר','באוקטובר','בנובמבר','בדצמבר'];
			var regex = /(\d{1,2})[, ]*(MONTHS)[, ]*(20\d{2})/;
			regex = new RegExp(regex.source.replace('MONTHS', months.join('|')));
			match = s.match(regex);
			if (match)
				textbox1.value = cvr_pad(match[1], 2) + cvr_pad($.inArray(match[2], months) + 1, 2) + match[3];
		}
	}
 
 if (type == 1) { // one-user check
  var link = document.createElement('a');
  link.id = 'checkDateLink';
  link.appendChild(document.createTextNode('בצע בדיקה'));
  link.href = 'javascript:checkUserVoteRight()';
  toolLink.innerHTML = "";
  toolLink.appendChild(link);
 }
 else { // page check
 
  toolLink.parentNode.removeChild(toolLink);
 
  var links = mw.util.$content.find('a');
 
  if (!links || !links[0]) return; // no links in page
 
  for (var i = 0; i < links.length; i++) {
    if (! /משתמשת?:/.test(links[i].title) || links[i].title.indexOf('שיחת משתמש') == 0) continue;
 
   var span = document.createElement('span');
   span.id = 'votelink' + i;
   span.innerHTML = ' (';
   var a = document.createElement('a');
   a.appendChild(document.createTextNode('±'));
   var userName = links[i].title.substring(6);
   if (userName.indexOf(' (הדף אינו קיים)') != -1)
    userName = userName.substring(0, userName.indexOf(' (הדף אינו קיים)'));
   a.href = 'javascript:checkVoteRights2("' + userName + '", ' + i + ')';
   a.title = '2בדיקת זכות הצבעה'; // check this user's voting rights
   span.appendChild(a);
   span.innerHTML += ') ';
   links[i].parentNode.insertBefore(span, links[i]);
  }
 }
}
 
function checkUserVoteRight() {
 var textbox = document.getElementById('checkDate');
 if (textbox == 'ddmmyyyy') {
  alert("יש להזין את תאריך הבדיקה (בדרך כלל תאריך תחילת ההצבעה) בתיבה המתאימה."); // type check date in the appropriate textbox
  return;
 }
 var wgTitle = mw.config.get('wgTitle');
 var username = (wgTitle.indexOf('/') == -1) ? wgTitle : wgTitle.substr(0, wgTitle.indexOf('/'));
 checkVoteRights2(username, '-1');
}
 
var linkButton;
 var wgNamespaceNumber = mw.config.get('wgNamespaceNumber');
 if (wgNamespaceNumber % 2 == 1 || wgNamespaceNumber == 4) 
  linkButton = mw.util.addPortletLink('p-tb', '', '2בדיקת זכות הצבעה', 't-showvoterights', 'בדיקת זכות הצבעה של משתמשים בדף זה', "", 't-specialpages');
 if (wgNamespaceNumber == 2)
  linkButton = mw.util.addPortletLink('p-tb', '', '2בדיקת זכות הצבעה', 't-showvoterights', '2בדיקת זכות הצבעה', "", 't-specialpages');
if (linkButton)
	$(linkButton).click(addVoteRightsLinks);