Monday, November 08, 2010 at 12:03 AM.

system.verbs.builtins.html.editor.get

on get (msgText="", fieldName="body", rows=9, pta=nil, toolabrImgUrl="/mainresponderResources/toolbars/htmlEditor", cols=70, baseUrl="/mainresponderResources/toolbars/mozillaEditor/", formName="editPostForm", adrLanguageTable=nil) {
	<<Add the HTML Editor buttons and scripts.
		<<02/14/00; 9:13:54 AM by PBS
		<<Changes:
			<<8/5/03; 5:02:19 PM by JES
				<<New optional parameter, baseUrl, used for supporting the Mozilla rich text editor.
				<<New optional parameter, formName, used for supporting the Mozilla rich text editor.
			<<1/26/02; 2:40:38 AM by JES
				<<Added optional parameter, cols -- default is 70. Specifies the width of the editing box.
			<<12/05/01; 11:11:47 AM by JES
				<<Respect the rows parameter when returning the WYSIWYG editor.
			<<08/31/01; 6:44:23 PM by JES
				<<Factored code that finds the editor name to html.editor.getEditingTool.
				<<Return a <textarea>-based editor if the given editor is not defined.
			<<08/31/01; 2:17:42 AM by JES
				<<New optional parameter: toolabrImgUrl, specifies the URL of an image to use for the WYSIWYG toolbar.
			<<01/04/01; 12:43:36 AM by JES
				<<Adapted from mainResponder.discuss.getHtmlEditor
			<<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
	
	if pta == nil {
		pta = html.getPageTableAddress ()};
	<<workspace.pt = pta^; edit (@workspace.pt) //debugging
	
	local (editTool = html.editor.getEditingTool (pta));
	local (adrEditor = @html.editor.[editTool]); //default to the built-in English
	if adrLanguageTable != nil {
		if defined (adrLanguageTable^.data.[editTool]) {
			adrEditor = @adrLanguageTable^.data.[editTool]}};
	
	if not defined (adrEditor^) { //return a <textarea>
		return ("<textarea name=\"" + fieldName + "\" rows=\"" + rows + "\" cols=\"" + cols + "\" wrap=\"soft\">" + msgText + "</textarea>")};
	
	pta^.adrEditingTool = adrEditor;
	
	if string.lower (nameOf (adrEditor^)) endswith "mozilla" {
		msgText = string.replaceAll (msgText, "\r\n", "\r");
		if msgText contains "\r\r" {
			msgText = string.replaceAll (msgText, "\r\r", "<br><br>")}};
	
	local (s = string (adrEditor^));
	
	s = string.replace (s, "[[messageText]]", msgText);
	s = string.replaceAll (s, "[[fieldName]]", fieldName);
	s = string.replace (s, "[[rows]]", rows);
	s = string.replace (s, "[[cols]]", cols);
	s = string.replace (s, "[[heightPixels]]", ((rows * 17) + 50));
	s = string.replace (s, "[[toolbarImgUrl]]", toolabrImgUrl);
	s = string.replaceAll (s, "[[baseUrl]]", baseUrl, false);
	s = string.replaceAll (s, "[[formName]]", formName, false);
	
	return (s)}
<<bundle //testing
	<<op.newOutlineObject (html.editor.get ("Initial HTML text...", "itemtext", 9, @workspace.pt, radio.images.systemImageUrl ("toolbars/htmlEditor")), @workspace.htmlEditor)
	<<edit (@workspace.htmlEditor)



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.