משתמש:Yonidebest/scripts/checkblockedUsers.js

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
/*
 * מציג את רשימת החסומים בדף, כולל רשימה מרוכזת בהתחלה
 * נבדק ב-IE8.
 * נכתב על ידי [[משתמש:Yonidebest]]
 *
 */

function checkblockedUsers() {
  var links = document.getElementById('bodyContent').getElementsByTagName('a');

  if (!links || !links[0]) return; // no links in page
  
  var userList = "";
  // get user list
  for (var i = 0; i < links.length; i++) {
   if (links[i].title.indexOf('משתמש:') == -1 || links[i].title.indexOf('שיחת משתמש') == 0) continue;
   var userName = links[i].title.substring(6);
   if (userName.indexOf(' (הדף אינו קיים)') != -1)
    userName = userName.substring(0, userName.indexOf(' (הדף אינו קיים)'));
   if (userName.indexOf('/') == -1)
    userList += userName + "|";
  }
  
  if (userList == "")
	return; // no user links on page
  else
	userList = userList.substring(0, userList.length-1);

  // get list
  var a = sajax_init_object();
  a.open('GET', 'http://he.wikipedia.org/w/api.php?action=query&list=blocks&bklimit=500&bkusers=' + encodeURIComponent(userList) + '&bkprop=user|by|expiry|reason&format=xml' , true);
  a.onreadystatechange = function() {
   if (a.readyState != 4) return;
   
   var links = document.getElementById('bodyContent').getElementsByTagName('a');
  
   for (var i = 0; i < links.length; i++) {
    if (links[i].title.indexOf('משתמש:') == -1 || links[i].title.indexOf('שיחת משתמש') == 0) continue;
	
	var userName = links[i].title.substring(6);
	if (userName.indexOf('/') != -1)
	 continue;
	if (userName.indexOf(' (הדף אינו קיים)') != -1)
     userName = userName.substring(0, userName.indexOf(' (הדף אינו קיים)'));
	 
    var rx = new RegExp('block user="' + userName + '" by="([^=]*)" expiry="([^=]*)" reason="([^/]*)"');
	var m = rx.exec(a.responseText);
	if (m && m[0])
	{
	 //  חסום
	 links[i].style.background = "yellow";
	 links[i].style.border = "3px solid red";
	 links[i].innerHTML += ' נחסם על ידי ' + m[1] + ' עד ' + m[2] + ' מהסיבה "' + m[3] + '"';
	}
	else
	{
	 // לא חסום
	 links[i].style.border = "1px solid green";	 
	}
   }
   	var blockedList = "רשימת החסומים:<br />";
	var rx2 = new RegExp('block user="([^=]*)" by="([^=]*)" expiry="([^=]*)" reason="([^/]*)"', 'g');
	var m2 = rx2.exec(a.responseText);
	while (m2)
	{
	 blockedList += m2[1] + ' נחסם על ידי ' + m2[2] + ' עד ' + m2[3] + ' מהסיבה "' + m2[4] + '"<br />';
	 
	 m2 = rx2.exec(a.responseText);
	}
	if (blockedList != "רשימת החסומים:<br />")
		document.getElementById('contentSub').innerHTML = blockedList;
	else
		document.getElementById('contentSub').innerHTML = "אין אף משתמש חסום בדף זה.";
  }
  a.send(null);
}

function initCheckblockedUsers() {
	var wgNamespaceNumber = mw.config.get('wgNamespaceNumber');
 if (wgNamespaceNumber != -1 && wgNamespaceNumber != 0) 
  mw.util.addPortletLink('p-tb', "javascript:checkblockedUsers()", 'בדוק מי חסום', 't-blockedusers', 'בדוק אילו משתמשים בדף זה חסומים', "", 't-specialpages');
}

$(initCheckblockedUsers);