Monday, November 08, 2010 at 12:01 AM.
system.verbs.apps.Manila.nodeTypes.types.manilaMessageReadOnly.expand
<<Expand a manilaMessageReadOnly nodeType. <<Insert the text of the message into the outline. <<Changes <<Tue, Aug 22, 2000 at 11:31:52 AM by PBS <<Created. Display a Manila discussion group message in-line. <<Saturday, September 30, 2000 at 4:09:26 PM by DW <<When expanding a message add the responses after the message body. <<11/03/00; 1:11:02 AM by JES <<If the message contains an opml document, use that to build the outline. <<12/31/00; 5:06:20 PM by JES <<On Macs, convert opml text to Mac text before converting to an outline. local (oldTarget = target.set (window.frontmost ())); local (oldDisplay = op.getDisplay ()); op.setDisplay (false); local (atts); op.attributes.getAll (@atts); local (siteUrl = atts.siteUrl); local (msgNum = atts.msgnum); local (baseDiscussUrl = atts.baseDiscussUrl); local (username, password); on createInfoCallback (adrinfo) { if manila.windowTypes.getUsernameAndPassword (adrinfo, @username, @password) { manila.windowTypes.setUsernameAndPassword (adrinfo, username, password)} else { bundle { //don't leave stale data lying around local (adrtempinfo = @system.temp.manila.data.sites.[nameOf (adrinfo^)]); if defined (adrtempinfo^) {delete (adrtempinfo)}; delete (adrinfo)}; dialog.alert ("Can't display this message for because your username and password are not set."); return (false)}}; local (adrinfo); if not manila.windowTypes.findSiteInfo (siteUrl, @adrinfo, @createInfoCallback) { return (false)}; //the user cancelled the username/password dialog if not manila.windowTypes.getUsernameAndPassword (adrinfo, @username, @password) { return (false)}; //the user cancelled the password dialog local (siteinfo = adrinfo^); siteinfo.username = username; siteinfo.password = password; local (messageTable = manila.message.get (@siteinfo, atts.msgNum)); op.deleteSubs (); local (s); local (posted = messageTable.postTime); local (author = messageTable.memberName); if author != messageTable.member { <<JES: changed parens to carets becuase they can be pasted into email programs -- it's a sendmail standard format author = author + " <" + messageTable.member + ">"}; if system.environment.isMac { //convert author to Mac text author = string.latinToMac (author)}; if defined (messageTable.opml) { //11/01/00 JES: insert opml instead of plain outline local (localOutline); if system.environment.isMac { //12/31/00 JES: convert to Mac text op.xmlToOutline (latinToMac.convert (messageTable.opml), @localOutline)} else { op.xmlToOutline (messageTable.opml, @localOutline)}; bundle { //delete <rules> from the outline local (oldTarget = target.set (@localOutline)); op.fullExpand (); op.firstSummit (); op.go (down, infinity); op.go (right, infinity); loop { if op.getLineText () beginsWith "<rules>" { op.deleteLine (); continue}; if not op.go (flatup, 1) { break}}; try {target.set (oldTarget)}}; op.insertOutline (@localOutline, right)} else { //tabbed outline, or html text if defined (messageTable.outline) { if system.environment.isMac { s = string.latinToMac (messageTable.outline)} else { s = messageTable.outline}; local (localOutline); op.newOutlineObject (s, @localOutline); op.insertOutline (@localOutline, right)} else { s = messageTable.body; s = string.replaceAll (s, "\r\r", "\r"); //collapse blank lines s = string.replaceAll (s, "\r\n\r\n", "\r"); //collapse blank lines op.insert (s, right); op.go (left, 1)}}; bundle { //add the responses to the message local (flGoneRight = true); on addMessage (adrTable, flLastMessage=false) { local (linetext = adrTable^.subject); local (author = adrTable^.memberName); if author != adrTable^.member { author = author + " <" + adrTable^.member + ">"}; linetext = linetext + " -- " + author; if system.environment.isMac { linetext = string.latinToMac (linetext)}; local (dir = down); if not flGoneRight { dir = right; flGoneRight = true}; op.insert (linetext, dir); adrTable^.siteUrl = siteUrl; adrTable^.baseDiscussUrl = baseDiscussUrl; adrTable^.type = "manilaMessageReadOnly"; adrTable^.flLastMessage = flLastMessage; manila.nodeTypes.addSitePrefsToAtts (adrinfo, adrTable); op.attributes.addGroup (adrTable)}; local (messageHeaders = manila.message.getResponsesHeaders (@siteinfo, msgNum)); op.go (right, 1); op.go (down, infinity); local (i); for i = 1 to sizeOf (messageHeaders) { local (flLastMessage = false); if i == 1 { flLastMessage = true}; addMessage (@messageHeaders [i], flLastMessage)}; op.go (left, 1)}; op.setDisplay (oldDisplay); try {oldTarget = target.set (oldTarget)}; return (true)
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.