Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.discuss.listTopics
on listTopics (channelname="", url=nil) { <<Changes <<Mon, 01 Mar 1999 15:15:05 GMT by AR <<Minor optimizations in the for loop for the flonemonth==true case <<Also changed valign=center to valign=middle <<Wed, 26 May 1999 01:22:21 GMT by AR <<Real names of message authors are now looked up in the membership group specified thru pta^.responderAttributes.defaultMembershipGroup instead of formerly config.mainresponder.globals.defaultMembershipGroup, allowing greater flexibility while retaining backwards-compatibility. <<Saturday, August 21, 1999 at 9:14:02 PM by PBS <<Undeclared local variable adrStorage now declared. <<04/12/00; 12:56:00 PM by JES <<Localized using mainResponder.getString <<Localized date display <<05/22/00; 5:01:30 PM by JES <<work around problem with cached table rows -- when you change the language, they needed to be re-rendered. local (pta = html.getPageTableAddress ()); if url == nil { url = pta^.responderattributes.urls^.discussMsgReader}; local (flTopLevelTopics = channelname == ""); local (htmltext = "", indentlevel = 0); local (membershipGroup = pta^.responderAttributes.defaultMembershipGroup); on add (s) { htmltext = htmltext + string.filledString ("\t", indentlevel) + s + "\r"}; on td (s, align="") { add ("<td nowrap " + align + " valign=\"middle\"><font size=\"-1\"> " + s + " </font></td>")}; on shortenstring (s, maxlen=35) { if sizeof (s) <= maxlen { return (s)}; return (string.mid (s, 1, maxlen - 3) + "...")}; local (adrroot = mainresponder.discuss.openroot ()); local (adrmsgs = @adrroot^.messages); local (i, ct = sizeof (adrmsgs^), fllist); local (flonemonth = false, firstdate = nil, firstmonth); if defined (pta^.oneMonthTopicList) { flonemonth = pta^.oneMonthTopicList}; add ("<table cellspacing=\"3\">"); indentlevel++; bundle { //column headings; 4/13/00 JES: localized headings add ("<tr>"); indentlevel++; td ("<b>" + mainResponder.getString ("listHeaders.date") + "</b>"); td ("<b>" + mainResponder.getString ("listHeaders.subject") + "</b>"); td ("<b>" + mainResponder.getString ("listHeaders.originator") + "</b>"); add ("</tr>"); indentlevel--}; local (sitelanguage = nameOf (mainResponder.localization.getLanguageTableAddress ()^)); // 05/22/00 JES: get the current rendering language for i = ct downto 1 { local (adrstorage); //PBS 8/21/99 adrstorage = @adrmsgs^ [i]; if flonemonth { //break if we're in the next month if firstdate == nil { firstdate = adrstorage^.posttime; firstmonth = date.month (firstdate)}; if firstmonth != date.month (adrstorage^.posttime) { break}}; fllist = false; if flTopLevelTopics { //list all top level topics fllist = adrstorage^.inResponseTo == 0} else { if defined (adrstorage^.alsoListedIn) { fllist = adrstorage^.alsoListedIn contains channelname}}; if defined (adrstorage^.fldeleted) { if adrstorage^.fldeleted { fllist = false}}; if fllist { local (adrcache, adrcachelanguage); if flTopLevelTopics { adrcache = @adrstorage^.topTopicsCache; adrcachelanguage = @adrstorage^.topTopicsCacheLanguage} else { adrcache = @adrstorage^.[channelname + "Cache"]; adrcachelanguage = @adrstorage^.[channelname + "CacheLanguage"]}; if not defined (adrcachelanguage^) { adrcachelanguage^ = sitelanguage}; if defined (adrcache^) and (string.lower (adrcachelanguage^) == string.lower (sitelanguage)) { add (adrcache^)} else { local (ixhtmltext = sizeof (htmltext)); add ("<tr>"); indentlevel++; td (mainResponder.localization.shortDateString (adrstorage^.posttime)); // 4/13/00 JES: localized td (mainresponder.discuss.linkToMessage (adrstorage, url, 40)); td (mainResponder.members.getMemberName (membershipGroup, adrstorage^.member)); add ("</tr>"); indentlevel--; local (s = string.delete (htmltext, 1, ixhtmltext)); adrcache^ = string.delete (s, sizeof (s), 1); adrcachelanguage^ = sitelanguage}}}; add ("</table>"); 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.