if(typeof(McFearsome) == 'undefined') { McFearsome = {}; } jQuery.extend(McFearsome, { laterloop: { save_key: function( key ) { Application.prefs.setValue('ubiquity.mcfearsome.laterloop.key', key); }, get_key: function() { return Application.prefs.getValue('ubiquity.mcfearsome.laterloop.key', false); }, save_rss: function( rss ) { Application.prefs.setValue('ubiquity.mcfearsome.laterloop.rss', rss); }, get_rss: function() { return Application.prefs.getValue('ubiquity.mcfearsome.laterloop.rss', false); }, clear_prefs: function() { try { Application.prefs.get('ubiquity.mcfearsome.laterloop.key').reset(); Application.prefs.get('ubiquity.mcfearsome.laterloop.rss').reset(); } catch(e) { // CmdUtils.log(e); } } } }); function pageLoad_laterloop() { var doc = CmdUtils.getDocumentInsecure(); if(doc.location != 'http://www.laterloop.com/tools/' || McFearsome.laterloop.get_key()) return; displayMessage("Setting your laterloop ubiquity command preferences.") CmdUtils.loadJQuery(function(jQuery) { try { var bookmarklet = jQuery("a.bkml"); if(bookmarklet.length) { var bookmarklet_src = bookmarklet.get(0).href; var key_pattern = /d\._ll='([a-zA-Z0-9]*)';/; var m = bookmarklet_src.match(key_pattern); if(m) { var key = m[1]; } var r = jQuery.ajax({ type: "GET", url: "http://www.laterloop.com", async: false }); if(r.status == 200) { var h = r.responseText; var pattern = //; var m = h.match(pattern); if(m) { var rss = m[1]; } } if(key && rss) { McFearsome.laterloop.save_key(key); McFearsome.laterloop.save_rss(rss); return true; } } throw("epic fail"); } catch(e) { displayMessage("There was a problem saving your laterloop key. Please reload the page to try again."); // CmdUtils.log(e); } }); } noun_type_item = new CmdUtils.NounType( "Page", ["1","2","3","4","5","6","7","8","9","10"]); var noun_type_integer = { _name: "number", suggest: function(text, html) { if(!text) return [ CmdUtils.makeSugg("1", null, 1) ]; var num = parseInt(text); if(isNaN(num)) { return []; } return [ CmdUtils.makeSugg(num.toString(), null, num) ]; } } CmdUtils.CreateCommand({ name: "laterloop", takes: {"page": noun_type_integer}, modifiers: {open: noun_type_item}, icon: "http://www.laterloop.com/favicon.ico", description: "View your items from Laterloop.", help: "Displays items from your items feed in lists of 10. More items can be displayed in the preview by entering a page number. An item can be opened by using the 'open' modifier.", homepage: "http://gist.github.com/10172", author: { name: "Jesse McPherson", email: "jesse@mcfearsome.com" }, preview: function( pblock, dIn, mod ) { try{ if(!McFearsome.laterloop.get_rss()) { pblock.innerHTML = "Login to Laterloop and visit http://www.laterloop.com/tools/ to setup this command."; return false; } var page = 1; var open = parseInt(mod.open.text); if(dIn) { page = parseInt(dIn.text); if(isNaN(page)) page = 1; } var start = (page-1) * 10; var end = start + 10; if(open && (open > 10)) { open = null; } var url = McFearsome.laterloop.get_rss(); var r = jQuery.ajax({ type: "GET", url: url, async: false }); var xml = r.responseXML; var items = xml.getElementsByTagName("item"); var items = jQuery.grep(items, function(n, i) { return (start <= i && i < end); }); // CmdUtils.log(open); var item = items[open-1]; // CmdUtils.log(item); CmdUtils.getDocumentInsecure().tmpItem = item; var tmpl = "