Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.discuss.getHtmlEditor
on getHtmlEditor (msgText="", pta=nil, wysiwygHeightPixels=300, fieldName="body", formName="editMessageForm") { <<Changes: <<8/22/03; 12:52:58 PM by JES <<Adjusted the size of the editor. It was too small when the browser was not WYSIWYG-capable. <<8/14/03; 12:41:14 AM by JES <<Added support for Mozilla's rich text editor. <<04/28/01; 2:46:27 PM by JES <<Return the editor for MSIE 6, as well as MSIE 5. <<10/03/00; 10:14:26 PM by JES <<No longer necessary to put JavaScript in head portion of page. <<10/03/00; 2:08:12 PM by PBS <<Support choice of editors -- WYSIWYG, HTML Tags, None. <<10/02/00; 6:03:52 PM by JES <<Return the WYSIWYG HTML editor instead of the older DHTML editor. Use the editor with MSIE4 as well as MSIE5 <<4/10/00; 6:26:41 PM by JES <<Localized -- gets the editor itself using mainResponder.getString <<02/14/00; 9:13:54 AM by PBS <<Add the HTML Editor buttons and scripts. if pta == nil { pta = html.getPageTableAddress ()}; try { local (adrLanguageTable = mainResponder.localization.getLanguageTableAddress (pta: pta)); return (html.editor.get (msgText, fieldName, wysiwygHeightPixels/20, formName:formName, adrLanguageTable:adrLanguageTable))} else { //html.editor doesn't exist -- use old code local (flWysEditor = false, flTagEditor = true); local (editingToolName); if defined (pta^.editingToolName) { editingToolName = pta^.editingToolName; if string.lower (pta^.editingToolName) == "wysiwyg" { flWysEditor = true; flTagEditor = false}}; bundle { //find reasons not to display an editor if string.lower (editingToolName) == "none" { //no editor return ("")}; if defined (pta^.responderAttributes.flDiscussHtmlEditor) { if not (pta^.responderAttributes.flDiscussHtmlEditor) { return ("")}}; if not defined (pta^.requestHeaders.["User-Agent"]) { return ("")}; local (lowerUserAgent = string.lower (pta^.requestHeaders.["User-Agent"])); if not (lowerUserAgent contains "msie 5") { //PBS 10/03/00: msie 5; 04/28/2001 JES: added msie 6 if not (lowerUserAgent contains "msie 6") { return ("")}}; if not (lowerUserAgent contains "windows") { return ("")}}; local (editorObjectName = "ieHtmlEditor"); //default is WYSIWYG editor if flTagEditor { //classic source-view editor, raw HTML editorObjectName = "htmlEditor"}; local (adrEditor = @mainResponder.data.[editorObjectName]); local (s); bundle { //get editor for the current language if defined (pta^.language) and string.lower (pta^.language == "english") { s = string (adrEditor^)} else { // try to get an editor in the correct language local (languageTableAdr = mainResponder.localization.getLanguageTableAddress (pta: pta)); if defined (languageTableAdr^.data.[editorObjectName]) { s = string (languageTableAdr^.data.[editorObjectName])} else { s = string (adrEditor^)}}}; bundle { //get JavaScript only if this is the WYSIWYG editor if flWysEditor { <<if defined (pta^.javaScript) //JES 10/03/00: no longer needed <<if typeOf (pta^.javaScript) == addressType <<pta^.javaScript = string (pta^.javaScript^) <<pta^.javaScript = pta^.javaScript + string (mainResponder.data.ieHtmlEditorScript) <<else <<pta^.javaScript = string (mainResponder.data.ieHtmlEditorScript) s = string.replace (s, "[[messageText]]", msgText); s = string.replace (s, "[[heightPixels]]", wysiwygHeightPixels)}}; return (s)}}
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.