Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.macros.newStory
<<Changes <<9/17/04; 1:53:28 PM by SK <<Bug fix to name the form and allow better compatibility with the WYSIWYG text editor <<3/18/02; 6:06:19 PM by JES <<If no title is supplied, add an error message at the top of the page. <<1/28/02; 12:16:38 PM by JS <<If this is MacOS, convert the title and text of the new story to Mac text. <<1/26/02; 2:42:10 AM by JES <<Respect the editing tool pref at weblogData.prefs.editingToolName. <<12/23/01; 11:36:31 PM by JES <<Don't pass in a ctrows value to radio.userinterface.editorbox. The default value at user.radio.prefs.browserBasedEditorSize will be used. <<12/23/01; 4:26:00 PM by JES <<Commented out code which adds the Open in outliner checkbox, and the code which references user.radio.stats.flNewStoryOpensInOutliner. New stories are always .txt files in Radio 7.1. <<12/21/01; 5:38:03 PM by JES <<Create new stories in the /stories/ folder, instead of in the same folder as the new story page. Redirect to the synamic version of the new story, without the file extension. <<12/21/01; 1:11:24 PM by JES <<Fixed help link on open in outliner checkbox. <<12/5/01; 7:59:41 PM by JES <<Localized. <<10/31/01; 3:12:52 PM by JES <<Removed the workgroup notification checkbox. <<Fixed a bug where the Edit This Page button would result in loading a page with a macro error about itemtext not being defined. <<Fixed the redirection after creating a new story, so that it goes to the correct url. <<Open the file in Radio's outliner, if the user checked the open in outliner box. <<10/14/01; 1:39:34 AM by JES <<Added some <br> tags to make the checkboxes render in a prettier location. local (pta = html.getpagetableaddress ()); local (adrblog = radio.weblog.init ()); pta^.editingToolName = adrblog^.prefs.editingToolName; local (pc = file.getPathChar ()); pta^.title = radio.string.getlocalizedstring ("newStory.title"); <<scratchpad.params = pta^; edit (@scratchpad.params) local (htmltext = "\r", indentlevel = 0); on add (s) { htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r\n"}; local (initialtext = "", errormessage = ""); if pta^.method == "POST" { //possibly handle the post with pta^.radioResponder { if defined (postArgs.postNewStory) { <<user.radio.stats.flNewStoryOpensInOutliner = defined (postArgs.editInOpml) <<user.radio.stats.flNotifyWorkgroupOfNewStory = defined (postArgs.notifyWorkgroup) local (folder = user.radio.prefs.wwwFolder + radio.data.folderNames.wwwStoriesSubFolderName + pc); <<local (folder = file.folderfrompath (fileBeingRendered)) <<postArgs.itemtext = string.replaceall (postArgs.itemtext, "{", "{") <<postArgs.title = string.replaceall (postArgs.title, "{", "{") <<workspace.postArgs = postargs; edit (@workspace.postArgs) local (title = string.trimWhiteSpace (postArgs.title), text = postArgs.itemtext); if title == "" { //error errormessage = "Can't post this story because no title was supplied."; initialtext = text} else { //create the story if system.environment.isMac { title = string.latinToMac (title); text = string.latinToMac (text)}; local (relativepath = radio.file.newStoryFile (folder, title, text, false)); //user.radio.stats.flNewStoryOpensInOutliner)) //JES: commented out opening in outliner <<if user.radio.stats.flNewStoryOpensInOutliner //open the file, bring Radio to the front <<Frontier.tools.windowTypes.commands.open (radio.file.getAbsolutePath (relativePath)) <<Frontier.bringToFront () pta^.radioResponder.redirectUrl = "/" + string.popSuffix (relativepath); return ("")}}}}; bundle { //render the new story form if errormessage != "" { //add the error message add ("<p><font color=\"red\"><b>" + errormessage + "</b></font></p>")}; add (html.editor.formStart ("itemtext", pta:pta, name:"editPostForm")); indentlevel++; add ("<b>" + radio.string.getlocalizedstring ("newStory.titlePrompt") + "</b><br>"); add ("<input type=\"text\" name=\"title\" size=\"55\" maxlength=\"255\" value=\"" + "" + "\"><br><br>"); add ("<b>" + radio.string.getlocalizedstring ("newStory.textPrompt") + "</b><br>"); add (radio.userinterface.editorbox (initialtext)); <<bundle //add notification checkbox <<local (checkboxval = "xxx ") <<if user.radio.stats.flNotifyWorkgroupOfNewStory <<checkboxval = checkboxval + "checked" <<add ("<br><br><input type=\"checkbox\" name=\"notifyWorkgroup\" value=" + checkboxval + "> Send email notification to workgroup members. " + radio.userinterface.helplink ("newStoryNotification") + "<br>") <<bundle //add OPML checkbox <<local (checkboxval = "xxx ") <<if user.radio.stats.flNewStoryOpensInOutliner <<checkboxval = checkboxval + "checked" <<add ("<br><input type=\"checkbox\" name=\"editInOpml\" value=" + checkboxval + "> " + radio.string.getlocalizedstring ("newStory.openInOutliner") + " " + radio.userinterface.helplink ("Editing Stories in Radio UserLand's outliner") + "<br>") add ("<p><input type=\"submit\" name=\"postNewStory\" value=\"" + radio.string.getlocalizedstring ("newStory.createNewStoryButton") + "\">"); add ("</form>"); 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.