Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.discuss.postEditedMessage
on postEditedMessage (flAcceptFileUploads=false, flAcceptFileDeletions=false, flNeuterMacros=true, flNeuterText=true, lastUpdateTime=nil) {
<<Changes:
<<Wed, 19 May 1999 18:21:10 GMT by DW
<<If postArgs contains a referer item, redirect to that instead of the discussion group message reader page.
<<Thu, 20 May 1999 16:33:19 GMT by AR
<<Added optional parameter named flAcceptFileUploads and defaulting to false. If true, the script saves attached files to the enclosure folder structure.
<<Wed, 9 June 1999 4:44:53 PM by PBS
<<Call mainResponder.discuss.memberCanEdit to see if the member can edit this message.
<<It's possible that someone other than the original poster may be able to edit this message.
<<12/23/99; 5:20:51 PM by DW
<<Commented extraneous call to mainResponder.discuss.archiveMessage.
<<It wasn't necessary since mainResponder.discuss.setMessageText already calls it.
<<I noticed it was creating two archive files for every change.
<<03/15/00; 5:25:01 PM by PBS
<<When computing the path to the attachments folder for this message, it now calls mainResponder.discuss.getMessageAttachmentsFolder -- a new bottleneck script.
<<04/03/00; 10:50:09 AM by PBS
<<lastUpdateTime is a new optional parameter: one can specify the last update time for a message that's been edited. This is used by Manila's time zones support.
<<04/12/00; 1:29:33 PM by JES
<<Localized error message if client doesn't have editorial permission.
<<06/01/00; 5:25:27 PM by PBS
<<Commented out superfluous call to mainResponder.discuss.archiveMessage: it's called by mainResponder.discuss.setMessageText.
<<06/01/00; 7:47:10 PM by JES
<<Merged localization with recent Brent's last change
<<12/14/00; 2:17:55 PM by PBS
<<Render OPML documents.
<<05/23/01; 3:14:38 PM by PBS
<<If a Radio-edited document is now being posted from the browser, delete the OPML and outline fields of the message table.
local (pta = html.getPageTableAddress ());
local (msgNum = number (pta^.postArgs.msgNum));
local (body = string (pta^.postArgs.body));
local (subject = string (pta^.postArgs.subject));
local (adrMsg = mainResponder.discuss.getMessageTable (msgNum));
<<if string.lower (adrMsg^.member) != string.lower (nameOf (pta^.adrmemberinfo^))
<<scriptError ("Can't accept changes to this message since you are not the author of the message.")
if not (mainResponder.discuss.memberCanEdit (adrMsg, pta^.adrMemberInfo)) { //PBS 6/9/99
scriptError (mainResponder.getString ("discuss.cantAcceptChangesNoPermission"))};
bundle { //PBS 12/14/00: handle OPML formatted text
if defined (pta^.postArgs.flOpml) and (pta^.postArgs.flOpml == "true") { //it's a string, test string value
if not (date.versionLessThan (Frontier.version (), "7.0b21")) { //7.0b21 or greater required
op.newOutlineObject (body, @adrMsg^.opml);
local (localOutline);
try {
op.xmlToOutline (body, @localOutline)}
else {
scriptError ("Can't post changes because the document is not a valid OPML document.")};
local (adrOutline = @localOutline);
local (oldTarget = target.set (adrOutline));
body = pikeRenderer.theRenderer (adrOutline);
try {target.set (oldTarget)};
}}
<<local (s = string (localOutline))
<<s = mainResponder.neuterText (s, true, false)
<<op.newOutlineObject (s, @adrMsg^.outline)
else { //PBS 05/22/01: delete the outline and OPML fields of the message table if they exist
if defined (adrMsg^.opml) {
delete (@adrMsg^.opml)};
if defined (adrMsg^.outline) {
delete (@adrMsg^.outline)}}};
mainResponder.discuss.setMessageText (adrMsg, body, flNeuterMacros, flNeuterText, lastUpdateTime:lastUpdateTime); //PBS 04/02/00: lastUpdateTime is a new parameter needed for time zone support in Manila
adrMsg^.subject = mainResponder.neuterText (subject);
fileMenu.saveMyRoot (adrMsg);
pta^.adrEditedMsg = adrMsg;
mainResponder.callbackLoop (@config.mainResponder.callbacks.editMessage, pta);
<<mainResponder.discuss.archiveMessage (adrMsg) //PBS 06/01/00: commented out //8/13/99; 10:36:33 PM by DW
if flAcceptFileUploads { //write attached file to the enclosure folder structure
if (defined (pta^.postArgs.attachFile) and (typeOf (pta^.postArgs.attachFile) == tableType)) {
mainResponder.discuss.postAttachedFile (@pta^.postArgs.attachFile, msgNum, pta^.members)}};
if flAcceptFileDeletions { //delete attached files that were checked off when the button was clicked
local (folderPath);
bundle { //compute folderPath
folderPath = mainResponder.discuss.getMessageAttachmentsFolder (adrMsg);
};
<<PBS 03/15/00: old code, now factored out
<<local (pc = file.getPathChar ())
<<local (adrdiscuss = mainResponder.discuss.openRoot ())
<<on addToPaths (s) //append sub-folders to folderPath
<<folderPath = folderPath + s + pc
<<folderPath = adrdiscuss^.prefs.binaryServerFolder
<<addToPaths (pta^.members)
<<addToPaths (adrMsg^.member)
<<addToPaths (nameOf (adrdiscuss^))
<<addToPaths (msgNum)
local (ix, ct = sizeOf (pta^.postArgs), adrArg, magicPrefix="delete_", f, fname);
for ix = ct downTo 1 {
adrArg = @pta^.postArgs [ix];
if nameOf (adrArg^) beginsWith magicPrefix {
fname = string.delete (nameOf (adrArg^), 1, sizeOf (magicPrefix));
local (i, ch);
for i = sizeOf (fname) downTo 1 { //pop off everything but the file name
ch = fname [i];
if not (string.isAlpha (ch) or string.isNumeric (ch) or (ch == ".") or (ch == " ")) {
fname = string.delete (fname, 1, i);
break}};
f = folderPath + fname;
if file.exists (f) {
file.delete (f)}}}};
local (redirectUrl = pta^.responderAttributes.urls^.discussMsgReader + msgNum);
if defined (pta^.postArgs.referer) {
redirectUrl = pta^.postArgs.referer};
mainResponder.redirect (redirectUrl)}
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.