Monday, April 04, 2011 at 1:06 AM.
radio2Suite.viewRiver
on viewRiver (adruser) {
<<Changes
<<3/5/11; 12:09:56 PM by DW
<<A start on a Radio2-resident River2 displayer. Not sure if this will ever make it to the UI.
local (adrdata = radio2suite.init (), adrriverdata = river2suite.init (), ourfeeds, currentfeedname = "", now = clock.now ());
local (htmltext = "", indentlevel = 0, ctitems = 0, maxitems = 125, imgXmlMini, imgEdit, imgDelete);
bundle { //set images html
imgXmlMini = string (radio2Suite.data.html.xml);
imgEdit = string (radio2Suite.data.html.editIcon);
imgDelete = string (radio2Suite.data.html.deleteIcon)};
on add (s) {
htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r"};
add ("<table width=\"650\" cellspacing=\"3\" cellpadding=\"5\" border=\"0\">"); indentlevel++;
bundle { //fill ourfeeds
local (adruser, adrfeed);
new (tabletype, @ourfeeds);
for adruser in @adrdata^.users {
for adrfeed in @adruser^.feeds {
if defined (adrfeed^.stats.feedurl) {
ourfeeds.[adrfeed^.stats.feedurl] = nameof (adruser^)}}}};
<<scratchpad.ourfeeds = ourfeeds
on visit (adrriveritem) {
if not defined (ourfeeds.[adrriveritem^.feedurl]) { //not one of our feeds
return (true)};
bundle { //output feedname if it changed
local (adrfeed = @adrriverdata^.feeds.[adrriveritem^.feedurl]);
local (namefeed = adrfeed^.feedinfo.title, linebreak = "");
local (favicon = radio2Suite.utilities.getFavIconHtml (adrfeed^.feedinfo.link));
if namefeed != currentfeedname {
if currentfeedname != "" {
linebreak = "<br>"};
add ("<tr><td colspan=\"3\">" + linebreak + " " + namefeed + "</td></tr>");
currentfeedname = namefeed}};
add ("<tr>"); indentlevel++;
bundle { //add count
<<add ("<td align=\"right\" valign=\"top\">" + ++ctitems + ". </td>")
++ctitems};
bundle { //add the main text column
local (title = string.trimwhitespace (adrriveritem^.title), s = "");
local (link = string.trimwhitespace (adrriveritem^.link));
local (description = string.trimwhitespace (adrriveritem^.description));
if sizeof (title) > 0 {
if sizeof (link) > 0 {
s = "<a href=\"" + link + "\">" + title + "</a>"}
else {
s = title};
if sizeof (description) > 0 {
s = s + ". " + description}}
else { //title is empty
if sizeof (description) > 0 {
if sizeof (link) > 0 {
s = "<a href=\"" + link + "\">" + description + "</a>"}
<<s = twitter.hotUpText (description) + " <a href=\"" + link + "\">#</a>"
else {
s = description}}
else { //title and description are empty
if sizeof (link) > 0 { //just plop down the link
s = "<a href=\"" + link + "\">" + link + "</a>"}}};
add ("<td class=\"history\" valign=\"top\">" + s + "</td>")};
bundle { //add the post time/date
add ("<td class=\"history\" align=\"right\" valign=\"top\" nowrap>" + (date.viewDate (timecreated (adrriveritem)) - " ") + "</td>")};
bundle { //name of author if one of our community
local (adr = @ourfeeds.[adrriveritem^.feedurl], nameuser = " ");
if defined (adr^) {
nameuser = adr^};
<<else
<<local (adrfeed = @adrriverdata^.feeds.[adrriveritem^.feedurl])
<<nameuser = adrfeed^.feedinfo.title
<<if sizeof (nameuser) > 15
<<nameuser = string.mid (nameuser, 1, 15) + "..."
add ("<td class=\"history\" valign=\"top\">" + nameuser + "</td>")};
bundle { //add the Edit & Delete links
<<local (url = "?idPost=" + number (nameof (adritem^)) + "&feed=" + nameof (adrfeed^))
local (url = "?hello=12");
local (editlink = "<a href=\"index" + url + "\">" + imgEdit + "</a>");
local (deletelink = "<a href=\"delete" + url + "\">" + imgDelete + "</a>");
add ("<td valign=\"top\" nowrap>" + editlink + " " + deletelink + "</td>")};
add ("</tr>"); indentlevel--;
return (ctitems < maxitems)};
mainresponder.calendar.visitReverseChronologic (@config.river2.river, @visit);
add ("</table>"); indentlevel--;
return (htmltext)};
bundle { //test code
viewRiver ()}
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.