client/js/paper-renderer.js
changeset 113 fac7354c55d2
parent 111 fbe12f54453a
child 114 110f99eb417e
--- a/client/js/paper-renderer.js	Mon Mar 25 19:29:15 2013 +0100
+++ b/client/js/paper-renderer.js	Tue Mar 26 16:14:19 2013 +0100
@@ -1319,9 +1319,29 @@
     		return;
     	}
     	var res = {}
-    	Rkns._(_event.originalEvent.dataTransfer.types).each(function(t) {
-    		return res[t] = _event.originalEvent.dataTransfer.getData(t);
-    	});
+    	if (_event.originalEvent.dataTransfer.types) {
+    		Rkns._(_event.originalEvent.dataTransfer.types).each(function(t) {
+	    		return res[t] = _event.originalEvent.dataTransfer.getData(t);
+	    	});
+    	} else {
+    		var text = _event.originalEvent.dataTransfer.getData("text");
+    		switch(text[0]) {
+    			case "{":
+    			case "[":
+    				try {
+    					var data = JSON.parse(text);
+    					_(res).extend(data);
+    				}
+    				catch(e) {
+    					res["text/plain"] = text;
+    				}
+				break;
+				case "<":
+					res["text/html"] = text;
+				break;
+    		}
+    		res["text/uri-list"] = _event.originalEvent.dataTransfer.getData("URL");
+    	}
     	var newNode = {};
     	switch(res["text/x-iri-specific-site"]) {
     		case "twitter":
@@ -1365,7 +1385,14 @@
 		    	if (res["text/x-iri-source-title"] && !newNode.title) {
 		    		newNode.title = res["text/x-iri-source-title"];
 		    	}
+		    	if (res["text/html"] || res["text/x-iri-selected-html"]) {
+		    		newNode.image = snippet.find("[data-image]").attr("data-image") || newNode.image;
+		    		newNode.uri = snippet.find("[data-uri]").attr("data-uri") || newNode.uri;
+		    		newNode.title = snippet.find("[data-title]").attr("data-title") || newNode.title;
+		    		newNode.description = snippet.find("[data-description]").attr("data-description") || newNode.description;
+		    	}
     	}
+/*
     	var fields = ["title", "description", "uri", "image"];
     	for (var i = 0; i < fields.length; i++) {
     		var f = fields[i];
@@ -1373,6 +1400,7 @@
     			newNode[f] = res["text/x-iri-" + f];
     		}
     	}
+*/
     	if (newNode.title || newNode.description || newNode.uri) {
     		var _off = _this.canvas_$.offset(),
             _point = new paper.Point([