// ==UserScript== // @name Flickr DNA // @namespace http://zoolcar9.lhukie.net/greasemonkey // @include http://www.flickr.com/* // @include http://flickr.com/* // @description Adds links to BigHugeLabs' Flickr DNA of selected person on buddy icon menu and your account on user's menubar. // ==/UserScript== // Last updated: 2008-04-03 ({ DNA_URL: "http://bighugelabs.com/flickr/dna.php?username=", get nsid() { return unsafeWindow.global_nsid; }, addDNAlink: function(aNode, aUser) { var div = aNode.appendChild(document.createElement("div")); div.className = "menu_item_line_above"; var lnk = div.appendChild(document.createElement("a")); lnk.id = "person_menu_" + aUser + "_dna"; lnk.className = "block"; lnk.appendChild(document.createTextNode("View DNA")); }, init_candyMenu: function() { var menu = document.getElementById("candy_nav_menu_you"); if (!menu) return; var name = unsafeWindow.photos_url.replace(/\/photos\//, "") .match(/[^\/]+/) .toString(); var separator = document.evaluate("./a[starts-with(@href, " + "'/recent_activity.gne')]", menu, null, 9, null).singleNodeValue; var link = document.createElement("a"); link.href = this.DNA_URL + (name ? name : this.nsid); link.appendChild(document.createTextNode("Your DNA")); menu.insertBefore(link, separator); }, init_personMenu: function() { var personHover = document.getElementById("person_hover"); if (!personHover) return; var persons = ["other", "you"]; for (var i in persons) { var menu = document.getElementById("person_menu_" + persons[i] + "_div"); this.addDNAlink(menu, persons[i]); var thisObj = this; menu.addEventListener("DOMAttrModified", function(e) { var lnk = document.getElementById(this.id.replace(/div$/, "dna")); lnk.href = thisObj.DNA_URL + personHover.wrappedJSObject.hover_icon.nsid; }, false); } }, init: function() { this.init_candyMenu(); this.init_personMenu(); } }).init()