const JAIKU_MAXLEN = 140; Jaiku = { addKey:function(key){ if (!Application.prefs.has("jaiku_user_api_key")) { Application.prefs.setValue("jaiku_user_api_key", key); } else { var new_key = Application.prefs.get("jaiku_user_api_key"); new_key.value = key; return new_key.value; } }, addUsername:function(username){ Application.prefs.setValue("jaiku_user_username", username); }, getUsername:function(){ username = Application.prefs.get("jaiku_user_username"); if(username){ return username.value; } else { return "Username not set!" } }, getKey:function(){ return Application.prefs.get("jaiku_user_api_key").value; }, everythingIsOK:function(){ return Application.prefs.has("jaiku_user_username") && Application.prefs.has("jaiku_user_api_key"); } }; CmdUtils.CreateCommand({ name: "jaiku-setuserandkey", takes: {username: noun_arb_text}, modifiers: {"api": noun_arb_text}, icon:"http://jaiku.com/favicon.ico", author: {name: "Fernando Takai", homepage: "http://fernandotakai.wordpress.com"}, license: "MPL", description: "Set your jaiku username and key. Check your key at http://api.jaiku.com", help: "Type jaiku-setuserandkey . Check your key at http://api.jaiku.com", execute: function(username, mods) { if(username.text.length < 1) { displayMessage("Please, enter your username"); return; } var api = mods.api.text || "" if(api.length < 1) { displayMessage("Please, enter your api key"); return; } Jaiku.addKey(mods.api.text); Jaiku.addUsername(username.text); displayMessage("Your username and api key has been set."); } }); CmdUtils.CreateCommand({ name: "jaiku", takes: {status: noun_arb_text}, modifiers : {"at":noun_type_geolocation}, icon:"http://jaiku.com/favicon.ico", author: {name: "Fernando Takai", homepage: "http://fernandotakai.wordpress.com"}, license: "MPL", description: "Post to Jaiku using Ubiquity", help: "Type jaiku your message to post.", preview: function(previewBlock, statusText) { var previewTemplate = "Updates your Jaiku presence :
" + "${status}

" + "Characters remaining: ${chars}"; var truncateTemplate = "
The last ${truncate} " + "characters will be truncated!"; var previewData = { status: statusText.text, chars: JAIKU_MAXLEN - statusText.text.length, username: Jaiku.getUsername() }; var previewHTML = CmdUtils.renderTemplate(previewTemplate, previewData); if(previewData.chars < 0) { var truncateData = { truncate: 0 - previewData.chars }; previewHTML += CmdUtils.renderTemplate(truncateTemplate, truncateData); } previewBlock.innerHTML = previewHTML; }, execute: function(statusText, mods) { if(statusText.text.length < 1) { displayMessage("Jaiku requires a status to be entered"); return; } if (Jaiku.everythingIsOK()) { var loc = ""; if(mods.at.text){ loc = mods.at.text; } else { var place = CmdUtils.getGeoLocation(); loc = place.city + "," + place.country; } var updateUrl = "http://api.jaiku.com/jason"; var status = statusText.text; var updateParams = { personal_key: Jaiku.getKey(), user: Jaiku.getUsername(), message: status, method: "presence.send", location: loc }; jQuery.ajax({ type: "POST", url: updateUrl, data: updateParams, dataType: "json", error: function(msg) { displayMessage("Jaiku error - status not updated"); }, success: function(msg) { if(msg.status != "error"){ displayMessage("Status updated!"); } else { displayMessage(msg.message); } } }); } else { displayMessage("Please set your user api key with jaiku-setuserandkey"); } } });