Source for "Google Reader + del.icio.us"

By Edo78
Has no other scripts.


// ==UserScript==
// @name                Google Reader + del.icio.us
// @namespace      	http://google.com/reader/userscript
// @description       	Adds reader posts to del.icio.us when clicked
// @include             http://google.com/reader/*
// @include             http://*.google.com/reader/*
// @include             https://google.com/reader/*
// @include             https://*.google.com/reader/*
// ==/UserScript==


// Google Reader + del.icio.us
// Adapted from http://userscripts.org/scripts/show/6497 by JohnM
// All bugs are mine, and not JohnM's.

// Updates by Scott Cowan http://userscripts.org/users/32932
// added fix for prefilling the Title, and https sites from Liu Yang http://userscripts.org/users/27500
// moved the entry box about the buttons instead of below
// Note: if your using Google Reader Optimized you'll need to change css for .entry-actions to float: left instead of right

//Constants
//NORMALIZE=false leaves the tags alone
//NORMALIZE=true converts tags to proper case and replaces -'s with spaces, like reader should itself
/*var DEFAULT_LABEL="toread";*/
var NORMALIZE=true;

var tags=GM_getValue("tag","toread");

//Variables for editing bookmark details
var bookmarkField;
var bookmarkStar;
var lblinput;
var notesinput;
var url;
var titleinput;

var mode;

var entries=document.getElementById("entries");
entries.addEventListener('DOMNodeInserted', function(event){nodeInserted(event);},true);
entries.addEventListener('DOMNodeRemoved', function(event){nodeRemoved(event);},true);
GM_registerMenuCommand("Define Tags",config);

function config() {
  tags=prompt("Insert a list of tags separated by a \",\"\nYou can separe lists of tags to get more possibility with \"|\"\nYou must reload after every changes.",tags);
  GM_setValue("tag",tags);
}

function nodeInserted(event){	
	if (event.target.tagName=="DIV"){
		//GM_log("Added - "+event.target.className);
		try{
			if (event.target.className!=""){
				var linkbar;
				if (event.target.className=="entry-actions"){
					linkbar=event.target;
					mode="list";
				}
				else if (event.target.firstChild && event.target.firstChild.className=="card"){
					linkbar=event.target.firstChild.firstChild.childNodes[2].
						childNodes[1].firstChild;
					mode="expanded";
				}
				else
					return;
        labels=tags.split("|");
        for (var i = 0; i < labels.length; ++i) {
          var btn=document.createElement("span");
          btn.className="item-star star link";
          btn.innerHTML=labels[i];
          btn.addEventListener("click", postBookmark,false);
          linkbar.appendChild(btn);
        }
      }
		}
		catch(e){
			//GM_log(e);
		}
	}
}

function nodeRemoved(event){
	if (event.target.tagName=="TABLE"){
		if (event.target.getAttribute("id")=="bookmarkField"){
			bookmarkField=null;
			getBookmarkField();
		}
	}
}

function postBookmark(event){
	bookmarkStar=event.target;
	var parent=event.target.parentNode;
	var header;
	if (mode=="expanded"){
      header=parent.parentNode.parentNode.parentNode.childNodes[1].childNodes[1].childNodes[0].childNodes[0].childNodes[1].childNodes[0];
	}
	else{
      header=parent.parentNode.childNodes[1].childNodes[0].childNodes[1].childNodes[0];
	}
    url=header.getAttribute('href');
	var title=header.innerHTML;
	var title_remove_img_regexp = /<img.*?\/?>/;
	title = title.replace(title_remove_img_regexp,"");
	labels=bookmarkStar.innerHTML;
  var notes="";
	
  GM_xmlhttpRequest({
		method: 'POST',
		url: 'https://api.del.icio.us/v1/posts/add?' + 'url='+encodeURIComponent(url)+'&description='+encodeURIComponent(title)
		      +'&extended='+notes+'&tags='+labels,
	})
	bookmarkStar.className="item-star-active star link";
}