Zooomr Photostream Enhanced

By ping Last update Jun 24, 2009 — Installed 466 times. Daily Installs: 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1

There are 1 previous version of this script.

// ==UserScript==
// @name           Zooomr Photostream Enhanced
// @namespace      http://www.zooomr.com/photos/ping/
// @description    Adds views, comments, faves counts in the photostream. Also allows you to fav photos without leaving the photostream (as was in MkII).
// @include        http://*.zooomr.com/photos/*/*
// @include        http://*.zooomr.com/photos/*/page*/
// ==/UserScript==

(function() {

var ZAPI = unsafeWindow.ZAPI;
var json_parse = unsafeWindow.json_parse;
var global_nsid = unsafeWindow.global_nsid;

unsafeWindow.toggleFave = function(pid) {
	var ele = document.getElementById('faver_' + pid);
	if (ele.getAttribute('isfavorite') == 1) {
		ZAPI.callMethodJSON( 'zooomr.favorites.remove', {photo_id:pid} , {});
		ele.firstChild.src = 'http://assets2.zooomr.com/images/silk/heart_open.png';
		ele.setAttribute('isfavorite', 0);
	} else {
		ZAPI.callMethodJSON( 'zooomr.favorites.add', {photo_id:pid} , {});
		ele.firstChild.src = 'http://assets2.zooomr.com/images/silk/heart.png';
		ele.setAttribute('isfavorite', 1);
	}
}

var success = function(t) {
		var data = json_parse(t.responseText);		
		var divDetailBit = document.getElementById('photoprivacy_' + data.photo.id).parentNode.parentNode;
		var divMetaPlus = divDetailBit.appendChild(document.createElement('div'));
		divMetaPlus.innerHTML = data.photo.views + ((data.photo.views == 1) ? ' view' : ' views')
			+ ' / ' 
			+ ((data.photo.faves._content == 0) ? ''  : '<a style="text-decoration: none" href="'+ data.photo.id +'/faves/">') 
			+ data.photo.faves._content 
			+ ((data.photo.faves._content == 1) ? ' fave'  : ' faves')
			+ ((data.photo.faves._content == 0) ? ''  : '</a>') 
			+ ' / ' 
			+ data.photo.comments._content + ((data.photo.comments._content == 1) ? ' comment'   : ' comments' )
			
		if (data.photo.owner.nsid != global_nsid) {
		
			var extraspace = document.evaluate('div/div/div[@class="ImagePitBox"]'
				, divDetailBit
				, null
				, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE
				, null);
			
			var faver = extraspace.snapshotItem(0).appendChild(document.createElement('a'));
			faver.setAttribute('class','iconlink');
			faver.id = 'faver_' + data.photo.id;
			faver.setAttribute('pid', data.photo.id);
			faver.setAttribute('isfavorite', data.photo.isfavorite);
			faver.href = "javascript: toggleFave(" + data.photo.id + ");";
			
			var favIcon = faver.appendChild(document.createElement('img'));
			if (data.photo.isfavorite) {
				favIcon.src = 'http://assets0.zooomr.com/images/silk/heart.png';
			} else {
				favIcon.src = 'http://assets0.zooomr.com/images/silk/heart_open.png';
			}
		}
}



doMain =  function() {
	var detailBits = document.evaluate(
		'//div[@class="DetailBit"]'
		, document
		, null
		, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE
		, null);
	
	if (detailBits && detailBits.snapshotLength > 0) {		
		for (var i = 0; i < detailBits.snapshotLength; i++) {
			pid = detailBits.snapshotItem(i).getElementsByTagName('p')[0].id.substring(10);
			ZAPI.callMethodJSON( 'zooomr.photos.getInfo', {'photo_id' : pid} , {onSuccess: success } );
		}
	}
}

unsafeWindow.setTimeout(doMain, 1);

})();