Wednesday, April 06, 2011 at 1:06 AM.
radio2Suite.buildMiniLinkBlogJS
on buildMiniLinkBlogJS (adruser, adrfeed, maxct=20) {
<<Changes
<<4/5/11; 11:56:17 AM by DW
<<If an item doesn't have a linkshortened element use the link in its place. This can happen when servers startup and don't have a URL shortener connected.
<<3/31/11; 8:47:58 AM by DW
<<Pop the http:// off the url when displaying it. Save a few characters, visually.
<<3/30/11; 12:31:22 PM by DW
<<Created. Builds the mini-linkblog Javascript for a feed.
local (htmltext = "", indentlevel = 0, ct = 0);
on add (s) {
htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r"};
on cleanupfilename (fname) {
local (i, ch);
for i = sizeof (fname) downto 1 {
ch = fname [i];
if (not string.isalpha (ch)) and (not string.isnumeric (ch)) and (ch != ' ') {
fname = string.delete (fname, i, 1)}};
fname = string.innerCaseName (fname);
return (fname);
};
on visit (adritem) {
local (url, urlfordisplay);
bundle { //set url
if defined (adritem^.linkshortened) {
url = adritem^.linkshortened}
else {
url = adritem^.link}};
bundle { //set urlfordisplay
urlfordisplay = url;
if string.lower (urlfordisplay) beginswith "http://" {
urlfordisplay = string.delete (urlfordisplay, 1, 7)}};
add ("<li class=\"miniLinkBlogItem\">" + adritem^.description + " " + "<a href=\"" + url + "\">" + urlfordisplay + "</a>");
return (++ct < maxct)};
add ("<ul class=\"miniLinkBlog\">"); indentlevel++;
mainresponder.calendar.visitReverseChronologic (@adrfeed^.calendar, @visit);
add ("</ul>"); indentlevel--;
local (jstext = html.buildJavascriptInclude (htmltext), now = clock.now ());
local (foldername = cleanupfilename (nameof (adrfeed^)));
adrfeed^.stats.urlMiniLinkBlogJs = radio2Suite.writeStaticFile (adruser, foldername + "/miniLinkBlog.js", jstext)};
bundle { //test code
buildMiniLinkBlogJS (@user.radio2.users.dave, @user.radio2.users.dave.feeds [1])}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.