משתמש:Yonidebest/monobook.js/externalWL.js

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

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
// adds link in tool box which loads external user's watchlist and displays it in local user's watchlist.
// user account's token and external user account's token must be identical.
// tested in ie8, ff3, chrome
// written by [[user:yonidebest]]

var externalusernameWL = "בובתקש";

function initExternalWL()
{
	var a = sajax_init_object();
	a.open('GET', mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?title=' + encodeURIComponent("מיוחד:העדפות") + '&action=render', true);
	a.onreadystatechange = function()
		{
			if (a.readyState != 4) return;

			var rx = new RegExp('name="wpwatchlisttoken" size="45" value="([^"]*)"');
			var m = rx.exec(a.responseText);
			if (m)
				pharseExternalWL(m[1]);
		};
	a.send(null);
}

// from w3schools.com
function loadXMLString(txt) 
{
	if (window.DOMParser)
	{
		parser = new DOMParser();
		xmlDoc = parser.parseFromString(txt,"text/xml");
	}
	else // IE
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = "false";
		xmlDoc.loadXML(txt); 
	}
	return xmlDoc;
}

function pharseExternalWL(token)
{
	var a = sajax_init_object();
	a.open('GET', "http://he.wikipedia.org/w/api.php?action=feedwatchlist" + 
		"&wlowner=" + encodeURIComponent(externalusernameWL) + "&wltoken=" + token, true);
	a.onreadystatechange = function()
		{
			if (a.readyState != 4) return;
			
			var response = loadXMLString(a.responseText);
			var text = "";
 
			var items = response.getElementsByTagName("item");
			for (var i = 0; i < items.length; i++)
			{
				var title = items[i].childNodes[0].nodeTypedValue; //ie
				if (!title) title = items[i].childNodes[1].textContent; //chrome/ff
				var link = items[i].childNodes[1].nodeTypedValue;
				if (!link) link = items[i].childNodes[3].textContent;
				var description = items[i].childNodes[3].nodeTypedValue;
				if (!description) description = items[i].childNodes[7].textContent;
				var pubDate = items[i].childNodes[4].nodeTypedValue;
				if (!pubDate) pubDate = items[i].childNodes[9].textContent;
				var creator = items[i].childNodes[5].nodeTypedValue;
				if (!creator) creator = items[i].childNodes[11].textContent;
				text += '<li><a href="' + link + '" title="' + title + '">' + title + '</a>&rlm; . . ' +
					'<a href="/wiki/משתמש:' + encodeURIComponent(creator) + '" title="משתמש:' +
					encodeURIComponent(creator) + '">' + creator + '</a>&rlm; (<span style="color: chocolate">' +
					description + '</span>)&rlm; ' + pubDate + '</li>';
			}

			var ul = getElementsByClassName(document.getElementById("bodyContent"), "ul", "special");
			if (!ul || !ul[0]) return;
						
			ul[0].innerHTML = text + ul[0].innerHTML;
		};
	a.send(null);
}

addOnloadHook(
	function()
	{
		if (wgPageName != "מיוחד:רשימת_המעקב") return;
 
		mw.util.addPortletLink("p-tb", "javascript:initExternalWL();", "הצג רשימת מעקב חיצונית", "pt-js-wl", "הצג רשימת מעקב חיצונית", "", "");
	}
);