Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.adminSite.macros.recentlyUpdatedSites
on recentlyUpdatedSites (n) {
<<Changes
<<Created.
if not defined (radioCommunityServerSuite) { //RCS is not installed -- return the empty string
return ("")};
local (htmltext = "", indentlevel = 0);
on add (s) {
htmltext = htmltext + (string.filledString ("\t", indentlevel) + s + "\r\n");};
bundle { //start the table
add ("<table cellpadding=\"3\" cellspacing=\"1\" width=\"225\" bgcolor=\"black\" border=\"0\">"); indentlevel++};
bundle { //title
add ("<tr><td bgcolor=\"#DCDCFF\"><b>Recently Updated Sites</b></td></tr>")};
bundle { //add the sites
add ("<tr><td bgcolor=\"white\">"); indentlevel++;
local (adrdata = radioCommunityServerSuite.weblogUpdates.init ());
local (adrcategory = @adrdata^.changes.none);
add (radioCommunityServerSuite.weblogUpdates.viewUpdatedWeblogs (adrcategory, n, true, "small"));
<<bundle //unused code
<<local (names, maxnamesize = 40)
<<new (tabletype, @names)
<<local (adrdata = radioCommunityServerSuite.weblogUpdates.init ())
<<local (adrcategory = @adrdata^.changes.none)
<<local (i, adr, adrchange, url, adrweblog, name, ct = 0)
<<for i = sizeof (adrcategory^) downto 1
<<if ct >= n
<<break
<<adrchange = @adrcategory^ [i]
<<url = nameof (adrchange^)
<<adrweblog = @adrdata^.weblogs.[url]
<<if defined (adrweblog^)
<<name = mainresponder.neutertext (adrweblog^.name, true, false)
<<name = searchengine.stripmarkup (name)
<<if sizeof (name) > maxnamesize
<<name = string.mid (name, 1, maxnamesize - 3) + "..."
<<local (adrname = @names.[name])
<<if not defined (adrname^) //avoid duplicates
<<add ("<tr>"); indentlevel++
<<add ("<td align=\"right\">" + ct++ + ".</td>")
<<add ("<td><a href=\"" + url + "\">" + name + "</a></td>")
<<add ("<td align=\"right\">" + date.timestring (adrchange^, false) + "</td>")
<<add ("</tr>"); indentlevel--
<<adrname^ = true //it's now defined
add ("</td></tr>"); indentlevel--};
add ("</table><br />"); indentlevel--;
return (htmltext)}
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.