Created
January 29, 2011 07:47
-
-
Save BenWard/801657 to your computer and use it in GitHub Desktop.
A smarter bookmarklet for Pinboard.in; wraps selected text in <blockquote> tags, keeps variables out of the global scope, supports filling tags from rel="tag" markup in the page, and titles from hAtom entry titles.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function() { | |
// Change `silent` to true to invoke the promptless, self-closing | |
// version of the bookmarklet. | |
var silent = false; | |
var url = location.href; | |
var title = document.title; | |
// Look for a single hAtom entry on the page, and iff one is found, extract | |
// the entry-title in place of the document title: | |
if(document.querySelector) { | |
if(1 === document.getElementsByClassName('hentry').length) { | |
title = document.querySelector( | |
'.hentry .entry-title, .hentry h1, .hentry h2, .hentry h3' | |
).innerText; | |
} | |
} | |
// Grab the text selection (if any) and <blockquote> it in the description. | |
if('' !== (text = String(document.getSelection()))) { | |
text = ['<blockquote>', text, '</blockquote>', "\n\n"].join(''); | |
} | |
// Grab all rel-tag microformats from the page and prefix the tags param | |
if(document.querySelectorAll) { | |
var tags = [].slice.call( | |
document.querySelectorAll('a[rel~=tag]'),0).map( | |
function(a) { | |
return a.href.split('/').pop(); | |
} | |
).join(' '); | |
} | |
// Assembles default form pre-fill arguments. | |
// Note: 'tags' is not currently supported but should be. | |
var args = [ | |
'http://pinboard.in/add?url=', encodeURIComponent(url), | |
'&description=', encodeURIComponent(text), | |
'&tags', encodeURIComponent(tags), | |
'&title=', encodeURIComponent(title) | |
]; | |
// If silent mode, add the auto-close parameter and read-later flag: | |
if(silent) { | |
args = args.concat([ | |
'&later=', 'yes', | |
'&jump=', 'close' | |
]); | |
} | |
var pin = open(args.join(''), 'Pinboard', 'toolbar=no,width=610,height=350'); | |
// Send the window to the background if silent mode. | |
if(silent) { | |
pin.blur(); | |
} | |
})(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
javascript:(function()%20{var%20silent%20=%20true;var%20url%20=%20location.href;var%20title%20=%20document.title;if(document.querySelector)%20{if(1%20===%20document.getElementsByClassName(%27hentry%27).length)%20{title%20=%20document.querySelector(%27.hentry%20.entry-title,%20.hentry%20h1,%20.hentry%20h2,%20.hentry%20h3%27).innerText;}}if(%27%27%20!==%20(text%20=%20String(document.getSelection())))%20{text%20=%20[%27<blockquote>%27,%20text,%20%27</blockquote>%27,%20%22\n\n%22].join(%27%27);}if(document.querySelectorAll)%20{var%20tags%20=%20[].slice.call(document.querySelectorAll(%27a[rel~=tag]%27),0).map(function(a)%20{return%20a.href.split(%27/%27).pop();}).join(%27%20%27);}var%20args%20=%20[%27http://pinboard.in/add?url=%27,%20encodeURIComponent(url),%27&description=%27,%20encodeURIComponent(text),%27&tags%27,%20encodeURIComponent(tags),%27&title=%27,%20encodeURIComponent(title)];if(silent)%20{args%20=%20args.concat([%27&later=%27,%20%27yes%27,%27&jump=%27,%20%27close%27]);}var%20pin%20=%20open(args.join(%27%27),%20%27Pinboard%27,%20%27toolbar=no,width=610,height=350%27);if(silent)%20{pin.blur();}})(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
javascript:(function()%20{var%20silent%20=%20false;var%20url%20=%20location.href;var%20title%20=%20document.title;if(document.querySelector)%20{if(1%20===%20document.getElementsByClassName(%27hentry%27).length)%20{title%20=%20document.querySelector(%27.hentry%20.entry-title,%20.hentry%20h1,%20.hentry%20h2,%20.hentry%20h3%27).innerText;}}if(%27%27%20!==%20(text%20=%20String(document.getSelection())))%20{text%20=%20[%27<blockquote>%27,%20text,%20%27</blockquote>%27,%20%22\n\n%22].join(%27%27);}if(document.querySelectorAll)%20{var%20tags%20=%20[].slice.call(document.querySelectorAll(%27a[rel~=tag]%27),0).map(function(a)%20{return%20a.href.split(%27/%27).pop();}).join(%27%20%27);}var%20args%20=%20[%27http://pinboard.in/add?url=%27,%20encodeURIComponent(url),%27&description=%27,%20encodeURIComponent(text),%27&tags%27,%20encodeURIComponent(tags),%27&title=%27,%20encodeURIComponent(title)];if(silent)%20{args%20=%20args.concat([%27&later=%27,%20%27yes%27,%27&jump=%27,%20%27close%27]);}var%20pin%20=%20open(args.join(%27%27),%20%27Pinboard%27,%20%27toolbar=no,width=610,height=350%27);if(silent)%20{pin.blur();}})(); |
Hey - I just found this in a search because I wanted to auto-fill the description when bookmarking...and didn't realise that if you select text before using the standard bookmarklet, the description is populated with the selected text. But I worked that out once I used this bookmarklet and realised what was going on. So anyway - thanks for that!
I'm trying to work out why you're wrapping in blockquotes - why do you do that? Is it just a personal preference thing or am I missing something obvious?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Fantastic! Thank you.