מדיה ויקי:Gadget-Watchlist.js

מתוך אקו-ויקי, מקום מפגש בנושאי אקולוגיה, חברה וכלכלה.
קפיצה לניווט קפיצה לחיפוש

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload), או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר: להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh), או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: לפתוח תפריט ← הגדרות (במחשב מק: Opera ← העדפות) ואז ללחוץ על פרטיות ואבטחה ← מחק היסטוריית גלישה ← Cached images and files.
if ($.inArray( mw.config.get('wgCanonicalSpecialPageName'), ['Recentchanges', 'Watchlist', 'Newpages']) + 1)
$(document).ready(function() {
var cannonicalPageName = mw.config.get('wgCanonicalSpecialPageName');
// Adds Watch/Unwatch links to recent-changes list.
function wlinrc_setText(element, text) {
	if (typeof element.innerText != "undefined")
		element.innerText = text;
	if (typeof element.textContent != "undefined")
		element.textContent = text;
}

function wlinrc_done(span) {
	if (cannonicalPageName == 'Watchlist') {
		span.parentNode.removeChild(span);
		return;
	}
	wlinrc_setText(span.firstChild, span.isWatched ? '[עקוב]' : '[הפסק לעקוב]');
	span.source.style.fontWeight = span.isWatched ? 'normal' : 'bolder';
	span.style.color = span.isWatched ? 'blue' : 'green';
	span.isWatched ^= true;
}

function wlinrc_watchme() {
	var params = {action: 'watch', title: this.target.replace(' ', '_') , format: 'json'};
	if (this.isWatched)
		params.unwatch = '';
	if (mw && mw.user && mw.user.tokens)
		params.token = mw.user.tokens.get('watchToken');
	var span = this;
	$.post(mw.util.wikiScript('api'), params, function() { wlinrc_done(span); });
	wlinrc_setText(this.firstChild, '[נשלח...]');
	this.style.color = 'orange';
}

function wlinrc_addWatchListLink(element, anchor) {
	var link, source;
	if (anchor) {
		source = anchor;
		link = anchor.title;
	} else {
		var anchors = element.getElementsByTagName('a');
		link = ''; 
		source = null;
		for (var i = 0; i < anchors.length; i++) {
			anchor = anchors[i];
			var linkString = anchor.href;
			if (linkString && linkString.indexOf('/wiki/', 0) > 0) {
				link = anchor.title;
				source = anchor;
				break;
			}
		}
		if (!link)
			return;
	}
	var span = document.createElement(span);
	// this is a kludge: we take advantage of the fact that watched pages appear in boldface 
	// in last changes page, with className of "'mw-changeslist-line-watched'" to deduc that this page is watched.
	var inWatchList = cannonicalPageName == 'Watchlist';
	span.isWatched =  inWatchList || $(element).closest('.mw-changeslist-line-watched').length;
	var stopFollowStr = inWatchList 
		? (mw.user.options.get('watchlistunwatchlinks') === "1" ? null : '[הסר]' )
		: '[הפסק לעקוב]';
	if (stopFollowStr)	span.appendChild(document.createTextNode(span.isWatched ? stopFollowStr  : '[עקוב]'));
	$.extend(span.style, {cursor: 'pointer', color: span.isWatched ? 'green' : 'blue'});
	$.extend(span, {onclick: wlinrc_watchme, target: link, source: source});
	element.appendChild(span);
}

// this works in "regular" changes list
$('li.mw-line-even, li.mw-line-odd').each(function(i,e){wlinrc_addWatchListLink(e)});

// this works in "enhanced" changes list.
var tds = $("td.mw-enhanced-rc").next().each(function() {
	var a = $(this).find("a:eq(0)");
	if (a.length)
		wlinrc_addWatchListLink(this, a[0]);
});

if (cannonicalPageName == 'Newpages') {
	$(".mw-newpages-time").parent().each(function() {
		var anchors = $(this).find(".mw-newpages-time").next();
		if (anchors.length)
			wlinrc_addWatchListLink(this, anchors[0]);
	});
}

});