Slogger allows you to construct submission values using a scripting language.
The following applications are popular:
A 'Format script' field accepts JavaScript. In Appendix A, you'll find the default script for each service. One way to experiment is to start with logic from the relevant default script. Your script runs immediately after the default script. Note that changing the max length for a given field doesn't redefine the limit for the field; Slogger performs that validation again after your script runs. In Appendix B, you'll find a list of the varDetail properties available to your script.
Here are some examples:
This requests a value for the 'explicit' field offered by Spurl.
explicit = ! confirm("Cancel marks this item explicit.");
This cancels a submission if the page is in a certain domain.
if (URL.indexOf("economist.com") >= 0) { cancel = true; }
This scans a clip for terms, adds a keyword if a relevant term exists and clears the clip.
this.script_processLineBreaks = function (str) { str = str.replace(/\n/g, " "); str = str.replace(/\r/g, " "); return str; } this.script_processWhitespace = function (str) { str = str.replace(/\s+/g, " "); str = str.replace(/^\s/, ""); str = str.replace(/\s$/, ""); return str; } this.script_normalize = function (str) { str = str.toLowerCase(); str = this.script_processLineBreaks(str); str = this.script_processWhitespace(str); return str; } var keyword = "fiscal_policy"; var terms = new Array(); terms.push("current account deficit"); terms.push("interest rate"); terms.push("exchange rate"); terms.push("against the euro"); terms.push("against the dollar"); terms.push("fiscal"); terms.push("greenspan"); terms.push("central bank"); terms.push("profligacy"); terms.push("public debt"); var clipTmp = this.script_normalize(varDetail.clip); var termFound = false; for (var i = 0; i < terms.length; i++) { termFound = (clipTmp.indexOf(terms[i]) >= 0); if (termFound) { if (keywords == "") { keywords = keyword; } else { keywords += " " + keyword; } break; } } clip = "";
var URL = varDetail.URI; var mode = submitMode; // (has value "basic" or "complete") var title = varDetail.title; var titleLengthMax = 150; var keywords = varDetail.keywords; var keywordsLengthMax = 250; var description; var desc = varDetail.desc; var separator = sloggerPrefs.getPref("furl.separator"); var descriptionLengthMax = 250; var clip = varDetail.clip; var clipLengthMax = 250; var priv = sloggerPrefs.getPref("furl.private"); var part = varDetail.linkURI; part = this.joinSubmissionStrs(part, separator, varDetail.imageURI); part = this.joinSubmissionStrs(part, separator, desc); description = part; var descriptionSaved = description; var descriptionTemplate = sloggerPrefs.getPref("furl.descriptionTemplate"); if (descriptionTemplate != "") { description = this.getStrFromTemplate( descriptionTemplate, varDetail, false, false, false ); } var cancel = false;
var URL = varDetail.URI; var title = varDetail.title; var keywords = varDetail.keywords; var description; var clip = varDetail.clip; var desc = varDetail.desc; var separator = sloggerPrefs.getPref("spurl.separator"); var priv = sloggerPrefs.getPref("spurl.private"); var explicit = false; var part = varDetail.linkURI; part = this.joinSubmissionStrs(part, separator, varDetail.imageURI); part = this.joinSubmissionStrs(part, separator, desc); description = part; var descriptionSaved = description; var descriptionTemplate = sloggerPrefs.getPref("spurl.descriptionTemplate"); if (descriptionTemplate != "") { description = this.getStrFromTemplate( descriptionTemplate, varDetail, false, false, false ); } var cancel = false;
var URL = varDetail.URI; var title = varDetail.title.replace(/\s/g, " "); var titleLengthMax = 256; var description; var descriptionLengthMax = 256; var keywords = varDetail.keywords.replace(/\s/g, " "); var desc = varDetail.desc.replace(/\s/g, " "); var clip = varDetail.clip.replace(/\s/g, " "); var clipPrefix = sloggerPrefs.getPref("yahoo.clipPrefix"); var clipSuffix = sloggerPrefs.getPref("yahoo.clipSuffix"); var separator = sloggerPrefs.getPref("yahoo.separator"); var part = keywords; part = this.joinSubmissionStrs(part, separator, varDetail.linkURI); part = this.joinSubmissionStrs(part, separator, varDetail.imageURI); part = this.joinSubmissionStrs(part, separator, desc); if (clip != "") { var clipDecorationLength = clipPrefix.length + clipSuffix.length; var clipLengthMax = descriptionLengthMax - part.length - separator.length - clipDecorationLength; if (clipLengthMax <= 5) { clip = ""; } else if (clip.length > clipLengthMax) { clip = clipPrefix + clip.substr(0, clipLengthMax - 5) + "[...]" + clipSuffix; } else { clip = clipPrefix + clip + clipSuffix; } } if (part.length > descriptionLengthMax) { part = part.substr(0, descriptionLengthMax - 3) + "..."; } part = this.joinSubmissionStrs(clip, separator, part); description = part; var descriptionSaved = description; var descriptionTemplate = sloggerPrefs.getPref("yahoo.descriptionTemplate"); if (descriptionTemplate != "") { description = this.getStrFromTemplate( descriptionTemplate, varDetail, false, false, true ); } var cancel = false;
var URL = varDetail.URI; var description; var descriptionLengthMax = 2048; var clip = varDetail.clip; var desc = varDetail.desc; var clipPrefix = sloggerPrefs.getPref("stumbleupon.clipPrefix"); var clipSuffix = sloggerPrefs.getPref("stumbleupon.clipSuffix"); var includeDefaultDesc = (varDetail.imageURI != ""); var separator = sloggerPrefs.getPref("stumbleupon.separator"); var rating = "good"; var openPageReviews = false; var openPageReviewsOnFirstrate = sloggerPrefs.getPref("stumbleupon.onFirstrateOpenPageReviews"); var part = desc; if (clip != "") { var clipDecorationLength = clipPrefix.length + clipSuffix.length; var clipLengthMax = descriptionLengthMax - desc.length - separator.length - clipDecorationLength; if (clipLengthMax <= 5) { clip = ""; } else if (clip.length > clipLengthMax) { clip = clipPrefix + clip.substr(0, clipLengthMax - 5) + "[...]" + clipSuffix; } else { clip = clipPrefix + clip + clipSuffix; } } if (part.length > descriptionLengthMax) { part = part.substr(0, descriptionLengthMax - 3) + "..."; } part = this.joinSubmissionStrs(clip, separator, part); description = part; var descriptionSaved = description; var descriptionTemplate = sloggerPrefs.getPref("stumbleupon.descriptionTemplate"); if (descriptionTemplate != "") { description = this.getStrFromTemplate( descriptionTemplate, varDetail, true, false, false ); } var cancel = false;
var URL = varDetail.URI; var description; var descriptionLengthMax = null; var title = varDetail.title; var titleLengthMax = null; var keywords = varDetail.keywords; var keywordsLengthMax = null; var desc = varDetail.desc.replace(/\s/g, " "); var clip = varDetail.clip.replace(/\s/g, " "); var clipPrefix = sloggerPrefs.getPref("delicious.clipPrefix"); var clipSuffix = sloggerPrefs.getPref("delicious.clipSuffix"); var separator = sloggerPrefs.getPref("delicious.separator"); var part = varDetail.linkURI; part = this.joinSubmissionStrs(part, separator, varDetail.imageURI); if (clip != "") { clip = clipPrefix + clip + clipSuffix; part = this.joinSubmissionStrs(part, separator, clip); } part = this.joinSubmissionStrs(part, separator, desc); description = part; var descriptionSaved = description; var descriptionTemplate = sloggerPrefs.getPref("delicious.descriptionTemplate"); if (descriptionTemplate != "") { description = this.getStrFromTemplate( descriptionTemplate, varDetail, false, false, true ); } var cancel = false;
varDetail.URI (same as $url) varDetail.title (same as $title) varDetail.keywords (same as $keywords) varDetail.desc (same as $desc) varDetail.clip (same as $clip) varDetail.newline (newline character(s) for your platform) varDetail.timestamp (same as $datetime) varDetail.d0 (same as $year) varDetail.d1 (same as $month) varDetail.d2 (same as $day) varDetail.d3 (same as $hours) varDetail.d4 (same as $minutes) varDetail.d5 (same as $seconds) varDetail.d6 (same as $milliseconds) varDetail.filename (same as $filename) varDetail.filebase (same as $filebase) varDetail.fileext (same as $fileext) varDetail.type (same as $type) varDetail.typeext (same as $typeext) varDetail.path (same as $path) varDetail.host (same as $host) varDetail.hostinv (same as $hostinv) varDetail.logfileFilename (has value "" if logging isn't enabled) varDetail.logfileFilenameProvisional (always has the default log file filename) varDetail.savepageType (same as $savetype) varDetail.savepageFilepath (same as $savefile) varDetail.savepageFilename (same as $htmlfile; has value "" if saving isn't enabled) varDetail.savepageFilenameProvisional (same as $htmlfile; always has the default save page filename) varDetail.savepageDirname (same as $datadir; has value "" if saving isn't enabled) varDetail.savepageDirnameProvisional (same as $datadir; always has the default save page directory) varDetail.profileId (same as $profileid) varDetail.imageURI (same as $imgsrc) varDetail.imageWidth (same as $imgwidth) varDetail.imageHeight (same as $imgheight) varDetail.linkURI (same as $linkhref)