Changeset 85
- Timestamp:
- 04/25/05 03:50:03 (8 years ago)
- Location:
- branches/unified_backend
- Files:
-
- 7 modified
-
README_DEVELOPERS.txt (modified) (1 diff)
-
RELEASE_NOTES.txt (modified) (2 diffs)
-
ddt.js (modified) (6 diffs)
-
examples/simple_example.html (modified) (1 diff)
-
htmlarea.js (modified) (85 diffs)
-
index.html (modified) (3 diffs)
-
popups/about.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/unified_backend/README_DEVELOPERS.txt
r84 r85 138 138 that has been stripped. (this has served me extremely well in formVista development) 139 139 140 It's important to note that each domain Xinha is run on will open it's own 141 debugging trace window. (for instance, if you are working on two copies on different 142 servers they will not be able to share a single debugging window. This is because 143 a script in one domain cannot write into a window opened by another domain). 144 145 You should be aware that Xinha intecepts some events on reload or page change 146 which means that there are debugging messages that are output by the currently 147 loaded script on the page when you click reload or change pages. (This took me 148 a while to track down). Often times I would close the trace window and then 149 do a reload noticing exceptions listed in the javascript console. Took forever 150 to figure out these exceptions were not being generated by the new page but 151 instead by the old page. See DDT.prototype._ddt() in ddt.js for more insights. 152 140 153 ---------------------------------------------------------- 141 154 Coding Style -
branches/unified_backend/RELEASE_NOTES.txt
r84 r85 14 14 useable. 15 15 16 . a separate popup trace window is opened for each domain to avoid: 17 18 Error: uncaught exception: Permission denied to get property Window.DDT_STATUS 19 16 20 . the debug buttons have been removed. 17 21 … … 22 26 BUGS/ISSUES 23 27 24 . under FireFox the popup debugging window is not well formed and produces 25 an error. 28 . this code has not been tested using MSIE. 26 29 27 . there is a javascript exception in the popup trace window support.28 29 . this code has not been tested using MSIE. -
branches/unified_backend/ddt.js
r84 r85 45 45 // . now uses a popup window for all messages. 46 46 // writing to a textarea was simply too slow. 47 // 48 // 2005-04-24 YmL: 49 // . popup window name now includes location.host so we can have multiple 50 // instance of Xinha running on different domains. Avoids: 51 // 52 // Error: uncaught exception: Permission denied to get property Window.DDT_STATUS 53 // . setting the title of the debug window so you can tell which domain it refers to. 47 54 // ----------------------------- 48 55 … … 106 113 { 107 114 108 // open the popup window 109 110 this.popup = window.open( "", "ddt_popup", 115 // open the popup window. 116 // 117 // IMPORTANT: because we are likely to copy a debugging version of Xinha 118 // onto different sites and possibly run them at the same time, each domain 119 // instance of Xinha will need it's own popup window .. this is because one 120 // domain cannot write to a window opened by another domain. 121 // 122 // We'll just use the hostname here to make the window name unique. 123 124 this.popup = window.open( "", "ddt_popup_" + location.host, 111 125 "toolbar=no,menubar=no,personalbar=no,width=800,height=450," + 112 126 "scrollbars=no,resizable=yes,modal=yes,dependable=yes"); … … 115 129 // sharing the same window. 116 130 117 if ( typeof this.popup. document.getElementsByTagName("p")[0]== 'undefined' )118 { 119 120 var content = "<html>< body><p>DDT</p><p><a href=\"javascript:document.write( '<hr>');\">ADD SEPARATOR</a></p></body></html>";131 if ( typeof this.popup.DDT_STATUS == 'undefined' ) 132 { 133 134 var content = "<html><head><title>Trace Messages for '" + location.host + "'</title></head><body><p>DDT</p><p><a href=\"javascript:document.write( '<hr>');\">ADD SEPARATOR</a></p></body></html>"; 121 135 this.popup.document.write( content ); 122 136 … … 126 140 this.popup.document.body.appendChild( header ); 127 141 142 this.popup.DDT_STATUS = "ok"; 143 128 144 } // end of if the popup document hadn't been created. 129 145 … … 175 191 if ( this.state == "on" ) 176 192 { 177 this.popup.document.write( "(" + this.name + ") " + file + ":" + line + " - " + msg + "<br>\n" ); 193 194 // fireFox will generate an exception if the window is closed. 195 196 try 197 { 198 this.popup.document.write( "(" + this.name + ") " + file + ":" + line + " - " + msg + "<br>\n" ); 199 } 200 catch( e ) 201 { 202 203 // chances are the window was closed. For the moment we'll ignore this. 204 // 205 // alert( "exception on write of message '" + msg + "' e== '" + e.toString() + "'" ); 206 } 178 207 } 179 208 … … 192 221 { 193 222 194 this._ddt( "ddt.js"," 194", file, line, msg );223 this._ddt( "ddt.js","208", file, line, msg ); 195 224 196 225 for (var x in obj) -
branches/unified_backend/examples/simple_example.html
r84 r85 47 47 48 48 startupDDT._ddtOn(); 49 50 49 </script> 51 50 -
branches/unified_backend/htmlarea.js
r84 r85 31 31 32 32 // sections marked with DDT open and close brackets are stripped out by 33 // the make_runtime. shutility. Individual _ddt() calls are also automatically33 // the make_runtime.php utility. Individual _ddt() calls are also automatically 34 34 // stripped out. 35 35 … … 2050 2050 HTMLArea.getHTML = function(root, outputRoot, editor) 2051 2051 { 2052 2053 HTMLArea._ddt( "htmlarea.js","2073", "getHTML(): top" ); 2054 2052 2055 try 2053 2056 { … … 3884 3887 HTMLArea.prototype.setMode = function(mode) 3885 3888 { 3889 3890 this.ddt._ddt( "htmlarea.js","3887", "setMode(): setting mode to '" + mode + "'" ); 3891 3886 3892 if (typeof mode == "undefined") 3887 3893 { … … 3961 3967 { 3962 3968 3963 this.ddt._ddt( "htmlarea.js","396 3", "setFullHTML(): top" );3969 this.ddt._ddt( "htmlarea.js","3966", "setFullHTML(): top" ); 3964 3970 3965 3971 var save_multiline = RegExp.multiline; … … 4008 4014 { 4009 4015 4010 this.ddt._ddt( "htmlarea.js","401 0", "registerPlugin(): top" );4016 this.ddt._ddt( "htmlarea.js","4013", "registerPlugin(): top" ); 4011 4017 4012 4018 var plugin = arguments[0]; … … 4030 4036 { 4031 4037 4032 this.ddt._ddt( "htmlarea.js","403 2", "registerPlugin2(): top" );4038 this.ddt._ddt( "htmlarea.js","4035", "registerPlugin2(): top" ); 4033 4039 4034 4040 if (typeof plugin == "string") … … 4038 4044 { 4039 4045 4040 this.ddt._ddt( "htmlarea.js","404 0", "registerPlugin2(): INTERNAL ERROR: plugin is undefined. " );4046 this.ddt._ddt( "htmlarea.js","4043", "registerPlugin2(): INTERNAL ERROR: plugin is undefined. " ); 4041 4047 4042 4048 /* FIXME: This should never happen. But why does it do? */ … … 4112 4118 var editor = this; 4113 4119 4114 this.ddt._ddt( "htmlarea.js","411 4", "_wordClean(): top" );4120 this.ddt._ddt( "htmlarea.js","4117", "_wordClean(): top" ); 4115 4121 4116 4122 var stats = … … 4229 4235 // this.forceRedraw(); 4230 4236 4231 this.ddt._ddt( "htmlarea.js","423 1", "_wordClean(): bottom" );4237 this.ddt._ddt( "htmlarea.js","4234", "_wordClean(): bottom" ); 4232 4238 4233 4239 this.updateToolbar(); … … 4244 4250 { 4245 4251 4246 this.ddt._ddt( "htmlarea.js","424 6", "_clearFonts(): top" );4252 this.ddt._ddt( "htmlarea.js","4249", "_clearFonts(): top" ); 4247 4253 4248 4254 var D = this.getInnerHTML(); … … 4282 4288 { 4283 4289 4284 this.ddt._ddt( "htmlarea.js","428 4", "_splitBlock(): top" );4290 this.ddt._ddt( "htmlarea.js","4287", "_splitBlock(): top" ); 4285 4291 4286 4292 this._doc.execCommand('formatblock', false, '<div>'); … … 4296 4302 { 4297 4303 4298 this.ddt._ddt( "htmlarea.js","4 298", "forceRedraw(): top" );4304 this.ddt._ddt( "htmlarea.js","4301", "forceRedraw(): top" ); 4299 4305 4300 4306 this._doc.body.style.visibility = "hidden"; … … 4314 4320 { 4315 4321 4316 this.ddt._ddt( "htmlarea.js","431 6", "focusEditor(): top _editMode is '" + this._editMode + "'" );4322 this.ddt._ddt( "htmlarea.js","4319", "focusEditor(): top _editMode is '" + this._editMode + "'" ); 4317 4323 4318 4324 switch (this._editMode) … … 4362 4368 { 4363 4369 4364 this.ddt._ddt( "htmlarea.js","436 4", "_undoTakeSnapshot(): top" );4370 this.ddt._ddt( "htmlarea.js","4367", "_undoTakeSnapshot(): top" ); 4365 4371 4366 4372 ++this._undoPos; … … 4399 4405 { 4400 4406 4401 this.ddt._ddt( "htmlarea.js","440 1", "undo(): top" );4407 this.ddt._ddt( "htmlarea.js","4404", "undo(): top" ); 4402 4408 4403 4409 if (this._undoPos > 0) … … 4418 4424 { 4419 4425 4420 this.ddt._ddt( "htmlarea.js","442 0", "redo(): top" );4426 this.ddt._ddt( "htmlarea.js","4423", "redo(): top" ); 4421 4427 4422 4428 if (this._undoPos < this._undoQueue.length - 1) … … 4437 4443 { 4438 4444 4439 this.ddt._ddt( "htmlarea.js","44 39", "disableToolbar(): top" );4445 this.ddt._ddt( "htmlarea.js","4442", "disableToolbar(): top" ); 4440 4446 4441 4447 if(typeof except == 'undefined') … … 4469 4475 { 4470 4476 4471 this.ddt._ddt( "htmlarea.js","447 1", "enableToolbar(): top" );4477 this.ddt._ddt( "htmlarea.js","4474", "enableToolbar(): top" ); 4472 4478 4473 4479 this.updateToolbar(); … … 4486 4492 var ancestors = null; 4487 4493 4488 this.ddt._ddt( "htmlarea.js","44 88", "updateToolbar(): top" );4494 this.ddt._ddt( "htmlarea.js","4491", "updateToolbar(): top" ); 4489 4495 4490 4496 if (!text) … … 4500 4506 { 4501 4507 4502 this.ddt._ddt( "htmlarea.js","450 2", "updateToolbar(): INTERNAL ERROR" );4508 this.ddt._ddt( "htmlarea.js","4505", "updateToolbar(): INTERNAL ERROR" ); 4503 4509 4504 4510 // hell knows why we get here; this … … 4582 4588 { 4583 4589 4584 this.ddt._ddt( "htmlarea.js","458 4", "updateToolbar(): INTERNAL ERROR" );4590 this.ddt._ddt( "htmlarea.js","4587", "updateToolbar(): INTERNAL ERROR" ); 4585 4591 4586 4592 // the impossible really happens. … … 4801 4807 } 4802 4808 4803 this.ddt._ddt( "htmlarea.js","480 3", "updateToolbar(): end" );4809 this.ddt._ddt( "htmlarea.js","4806", "updateToolbar(): end" ); 4804 4810 4805 4811 } // end of updateToolbar() … … 4817 4823 { 4818 4824 4819 this.ddt._ddt( "htmlarea.js","48 19", "insertNodeAtSelection(): top" );4825 this.ddt._ddt( "htmlarea.js","4822", "insertNodeAtSelection(): top" ); 4820 4826 4821 4827 if (!HTMLArea.is_ie) … … 4890 4896 { 4891 4897 4892 this.ddt._ddt( "htmlarea.js","489 2", "getParentElement(): top" );4898 this.ddt._ddt( "htmlarea.js","4895", "getParentElement(): top" ); 4893 4899 4894 4900 if (typeof sel == 'undefined') … … 4957 4963 { 4958 4964 4959 this.ddt._ddt( "htmlarea.js","49 59", "getAllAncestors(): top" );4965 this.ddt._ddt( "htmlarea.js","4962", "getAllAncestors(): top" ); 4960 4966 4961 4967 var p = this.getParentElement(); … … 4983 4989 { 4984 4990 4985 this.ddt._ddt( "htmlarea.js","498 5", "_getFirstAncestor(): top" );4991 this.ddt._ddt( "htmlarea.js","4988", "_getFirstAncestor(): top" ); 4986 4992 4987 4993 var prnt = this._activeElement(sel); … … 5038 5044 { 5039 5045 5040 this.ddt._ddt( "htmlarea.js","504 0", "_activeElement(): top" );5046 this.ddt._ddt( "htmlarea.js","5043", "_activeElement(): top" ); 5041 5047 5042 5048 if(sel == null) return null; 5043 5049 if ( this._selectionEmpty(sel) ) 5044 5050 { 5045 this.ddt._ddt( "htmlarea.js", "5046", "_activeElement(): _selectionEmpty returned true. Returning null" );5051 this.ddt._ddt( "htmlarea.js","5048", "_activeElement(): _selectionEmpty returned true. Returning null" ); 5046 5052 return null; 5047 5053 } … … 5101 5107 { 5102 5108 5103 this.ddt._ddt( "htmlarea.js","5 099", "_activeElement(): selection is not collapsed" );5109 this.ddt._ddt( "htmlarea.js","5106", "_activeElement(): selection is not collapsed" ); 5104 5110 5105 5111 if(sel.anchorNode.nodeType == 1) 5106 5112 { 5107 this.ddt._ddt( "htmlarea.js","5 099", "_activeElement(): nodeType is 1. Returning sel.anchorNode" );5113 this.ddt._ddt( "htmlarea.js","5110", "_activeElement(): nodeType is 1. Returning sel.anchorNode" ); 5108 5114 5109 5115 return sel.anchorNode; … … 5111 5117 } 5112 5118 5113 this.ddt._ddt( "htmlarea.js","5 099", "_activeElement(): bottom" );5119 this.ddt._ddt( "htmlarea.js","5116", "_activeElement(): bottom" ); 5114 5120 5115 5121 return null; … … 5127 5133 { 5128 5134 5129 this.ddt._ddt( "htmlarea.js","51 17", "_selectionEmpty(): top" );5135 this.ddt._ddt( "htmlarea.js","5132", "_selectionEmpty(): top" ); 5130 5136 5131 5137 if (!sel) 5132 5138 { 5133 this.ddt._ddt( "htmlarea.js","513 1", "_selectionEmpty(): no selection" );5139 this.ddt._ddt( "htmlarea.js","5136", "_selectionEmpty(): no selection" ); 5134 5140 return true; 5135 5141 } … … 5141 5147 else if(typeof sel.isCollapsed != 'undefined') 5142 5148 { 5143 this.ddt._ddt( "htmlarea.js", "5141", "_selectionEmpty(): isCollapsed" );5149 this.ddt._ddt( "htmlarea.js","5146", "_selectionEmpty(): isCollapsed" ); 5144 5150 return sel.isCollapsed; 5145 5151 } 5146 5152 5147 this.ddt._ddt( "htmlarea.js", "5141", "_selectionEmpty(): bottom. returning true." );5153 this.ddt._ddt( "htmlarea.js","5150", "_selectionEmpty(): bottom. returning true." ); 5148 5154 5149 5155 return true; … … 5160 5166 { 5161 5167 5162 this.ddt._ddt( "htmlarea.js","51 43", "_getAncestorBlock(): top" );5168 this.ddt._ddt( "htmlarea.js","5165", "_getAncestorBlock(): top" ); 5163 5169 5164 5170 // Scan upwards to find a block level element that we can change or apply to … … 5217 5223 { 5218 5224 5219 this.ddt._ddt( "htmlarea.js","52 00", "_createImplicitBlock(): top" );5225 this.ddt._ddt( "htmlarea.js","5222", "_createImplicitBlock(): top" ); 5220 5226 5221 5227 // expand it until we reach a block element in either direction … … 5363 5369 { 5364 5370 5365 this.ddt._ddt( "htmlarea.js","53 46", "selectNodeContents(): top" );5371 this.ddt._ddt( "htmlarea.js","5368", "selectNodeContents(): top" ); 5366 5372 5367 5373 this.focusEditor(); … … 5424 5430 { 5425 5431 5426 this.ddt._ddt( "htmlarea.js","54 07", "insertHTML(): top" );5432 this.ddt._ddt( "htmlarea.js","5429", "insertHTML(): top" ); 5427 5433 5428 5434 var sel = this._getSelection(); … … 5461 5467 { 5462 5468 5463 this.ddt._ddt( "htmlarea.js","54 44", "surroundHTML(): top" );5469 this.ddt._ddt( "htmlarea.js","5466", "surroundHTML(): top" ); 5464 5470 5465 5471 var html = this.getSelectedHTML(); … … 5478 5484 { 5479 5485 5480 this.ddt._ddt( "htmlarea.js","54 61", "getSelectedHTML(): top" );5486 this.ddt._ddt( "htmlarea.js","5483", "getSelectedHTML(): top" ); 5481 5487 5482 5488 var sel = this._getSelection(); … … 5638 5644 { 5639 5645 5640 this.ddt._ddt( "htmlarea.js","56 21", "_insertImage(): top" );5646 this.ddt._ddt( "htmlarea.js","5643", "_insertImage(): top" ); 5641 5647 5642 5648 var editor = this; // for nested functions … … 5721 5727 { 5722 5728 5723 this.ddt._ddt( "htmlarea.js","57 04", "_insertTable(): top" );5729 this.ddt._ddt( "htmlarea.js","5726", "_insertTable(): top" ); 5724 5730 5725 5731 var sel = this._getSelection(); … … 5813 5819 { 5814 5820 5815 this.ddt._ddt( "htmlarea.js","5 796", "_comboSelected(): top" );5821 this.ddt._ddt( "htmlarea.js","5818", "_comboSelected(): top" ); 5816 5822 5817 5823 this.focusEditor(); … … 5853 5859 { 5854 5860 5855 this.ddt._ddt( "htmlarea.js","58 36", "execCommand(): top with cmdId '" + cmdID + "'" );5861 this.ddt._ddt( "htmlarea.js","5858", "execCommand(): top with cmdId '" + cmdID + "'" ); 5856 5862 5857 5863 var editor = this; // for nested functions … … 5984 5990 { 5985 5991 5986 this.ddt._ddt( "htmlarea.js","59 67", "_editorEvent(): top with event type '" + ev.type + "'" );5992 this.ddt._ddt( "htmlarea.js","5989", "_editorEvent(): top with event type '" + ev.type + "'" ); 5987 5993 5988 5994 var editor = this; … … 6009 6015 { 6010 6016 6011 this.ddt._ddt( "htmlarea.js"," 5992", "_editorEvent(): keyEvent" );6017 this.ddt._ddt( "htmlarea.js","6014", "_editorEvent(): keyEvent" ); 6012 6018 6013 6019 // loop over all the plugins and pass this event to any that have … … 6027 6033 { 6028 6034 6029 this.ddt._ddt( "htmlarea.js","60 10", "_editorEvent(): keyEvent - invoking onKeyPress method in plugin '" + ( plugin.name ? plugin.name : "unknown" ) + "'" );6035 this.ddt._ddt( "htmlarea.js","6032", "_editorEvent(): keyEvent - invoking onKeyPress method in plugin '" + ( plugin.name ? plugin.name : "unknown" ) + "'" ); 6030 6036 6031 6037 if (plugin.onKeyPress(ev)) 6032 6038 { 6033 6039 6034 this.ddt._ddt( "htmlarea.js","60 15", "_editorEvent(): keyEvent - onKeyPress() returned false. Returning false" );6040 this.ddt._ddt( "htmlarea.js","6037", "_editorEvent(): keyEvent - onKeyPress() returned false. Returning false" ); 6035 6041 return false; 6036 6042 } … … 6044 6050 { 6045 6051 6046 this.ddt._ddt( "htmlarea.js","60 27", "_editorEvent(): control key key event" );6052 this.ddt._ddt( "htmlarea.js","6049", "_editorEvent(): control key key event" ); 6047 6053 6048 6054 var sel = null; … … 6055 6061 case 'a': 6056 6062 6057 this.ddt._ddt( "htmlarea.js","60 38", "_editorEvent(): cntrl-a select all" );6063 this.ddt._ddt( "htmlarea.js","6060", "_editorEvent(): cntrl-a select all" ); 6058 6064 6059 6065 if (!HTMLArea.is_ie) … … 6074 6080 case 'b': 6075 6081 6076 this.ddt._ddt( "htmlarea.js","60 57", "_editorEvent(): cntrl-b bold" );6082 this.ddt._ddt( "htmlarea.js","6079", "_editorEvent(): cntrl-b bold" ); 6077 6083 cmd = "bold"; 6078 6084 break; … … 6080 6086 case 'i': 6081 6087 6082 this.ddt._ddt( "htmlarea.js","60 63", "_editorEvent(): cntrl-i italics" );6088 this.ddt._ddt( "htmlarea.js","6085", "_editorEvent(): cntrl-i italics" ); 6083 6089 cmd = "italic"; 6084 6090 break; … … 6086 6092 case 'u': 6087 6093 6088 this.ddt._ddt( "htmlarea.js","60 69", "_editorEvent(): cntrl-u underline" );6094 this.ddt._ddt( "htmlarea.js","6091", "_editorEvent(): cntrl-u underline" ); 6089 6095 cmd = "underline"; 6090 6096 break; … … 6092 6098 case 's': 6093 6099 6094 this.ddt._ddt( "htmlarea.js","60 75", "_editorEvent(): cntrl-s strikethrough" );6100 this.ddt._ddt( "htmlarea.js","6097", "_editorEvent(): cntrl-s strikethrough" ); 6095 6101 cmd = "strikethrough"; 6096 6102 break; … … 6098 6104 case 'l': 6099 6105 6100 this.ddt._ddt( "htmlarea.js","6 081", "_editorEvent(): cntrl-l justify left" );6106 this.ddt._ddt( "htmlarea.js","6103", "_editorEvent(): cntrl-l justify left" ); 6101 6107 cmd = "justifyleft"; 6102 6108 break; … … 6104 6110 case 'e': 6105 6111 6106 this.ddt._ddt( "htmlarea.js","6 087", "_editorEvent(): cntrl-e justify center" );6112 this.ddt._ddt( "htmlarea.js","6109", "_editorEvent(): cntrl-e justify center" ); 6107 6113 cmd = "justifycenter"; 6108 6114 break; … … 6110 6116 case 'r': 6111 6117 6112 this.ddt._ddt( "htmlarea.js","6 093", "_editorEvent(): cntrl-r justify right" );6118 this.ddt._ddt( "htmlarea.js","6115", "_editorEvent(): cntrl-r justify right" ); 6113 6119 cmd = "justifyright"; 6114 6120 break; … … 6116 6122 case 'j': 6117 6123 6118 this.ddt._ddt( "htmlarea.js","6 099", "_editorEvent(): cntrl-j justify full" );6124 this.ddt._ddt( "htmlarea.js","6121", "_editorEvent(): cntrl-j justify full" ); 6119 6125 cmd = "justifyfull"; 6120 6126 break; … … 6122 6128 case 'z': 6123 6129 6124 this.ddt._ddt( "htmlarea.js","61 05", "_editorEvent(): cntrl-z undo" );6130 this.ddt._ddt( "htmlarea.js","6127", "_editorEvent(): cntrl-z undo" ); 6125 6131 cmd = "undo"; 6126 6132 break; … … 6128 6134 case 'y': 6129 6135 6130 this.ddt._ddt( "htmlarea.js","61 11", "_editorEvent(): cntrl-y redo" );6136 this.ddt._ddt( "htmlarea.js","6133", "_editorEvent(): cntrl-y redo" ); 6131 6137 cmd = "redo"; 6132 6138 break; … … 6134 6140 case 'v': 6135 6141 6136 this.ddt._ddt( "htmlarea.js","61 17", "_editorEvent(): cntrl-v paste" );6142 this.ddt._ddt( "htmlarea.js","6139", "_editorEvent(): cntrl-v paste" ); 6137 6143 if (HTMLArea.is_ie || editor.config.htmlareaPaste) 6138 6144 { … … 6144 6150 6145 6151 6146 this.ddt._ddt( "htmlarea.js","61 27", "_editorEvent(): cntrl-n format block" );6152 this.ddt._ddt( "htmlarea.js","6149", "_editorEvent(): cntrl-n format block" ); 6147 6153 cmd = "formatblock"; 6148 6154 value = HTMLArea.is_ie ? "<p>" : "p"; … … 6151 6157 case '0': 6152 6158 6153 this.ddt._ddt( "htmlarea.js","61 34", "_editorEvent(): cntrl-O kill word" );6159 this.ddt._ddt( "htmlarea.js","6156", "_editorEvent(): cntrl-O kill word" ); 6154 6160 cmd = "killword"; 6155 6161 break; … … 6163 6169 case '6': 6164 6170 6165 this.ddt._ddt( "htmlarea.js","61 46", "_editorEvent(): cntrl-[1-6] heading" );6171 this.ddt._ddt( "htmlarea.js","6168", "_editorEvent(): cntrl-[1-6] heading" ); 6166 6172 cmd = "formatblock"; 6167 6173 value = "h" + key; … … 6174 6180 if (cmd) 6175 6181 { 6176 this.ddt._ddt( "htmlarea.js","61 57", "_editorEvent(): executing simple command '" + cmd + "'" );6182 this.ddt._ddt( "htmlarea.js","6179", "_editorEvent(): executing simple command '" + cmd + "'" ); 6177 6183 // execute simple command 6178 6184 this.execCommand(cmd, false, value); … … 6237 6243 { 6238 6244 6239 this.ddt._ddt( "htmlarea.js","62 20", "_editorEvent(): entered a space" );6245 this.ddt._ddt( "htmlarea.js","6242", "_editorEvent(): entered a space" ); 6240 6246 6241 6247 if(s && s.isCollapsed && s.anchorNode.nodeType == 3 && s.anchorNode.data.length > 3 && s.anchorNode.data.indexOf('.') >= 0) … … 6280 6286 { 6281 6287 6282 this.ddt._ddt( "htmlarea.js","62 63", "_editorEvent(): keycode is '" + ev.keyCode + "' which (normal key) is '" + ev.which + "'" );6288 this.ddt._ddt( "htmlarea.js","6285", "_editorEvent(): keycode is '" + ev.keyCode + "' which (normal key) is '" + ev.which + "'" ); 6283 6289 6284 6290 // is it an escape character or ... … … 6298 6304 // backspace or period? 6299 6305 6300 this.ddt._ddt( "htmlarea.js","6 281", "_editorEvent(): normal key or backspace or period" );6306 this.ddt._ddt( "htmlarea.js","6303", "_editorEvent(): normal key or backspace or period" ); 6301 6307 6302 6308 this._unlinkOnUndo = false; … … 6309 6315 if (!a) 6310 6316 { 6311 this.ddt._ddt( "htmlarea.js","6 292", "_editorEvent(): not an anchor" );6317 this.ddt._ddt( "htmlarea.js","6314", "_editorEvent(): not an anchor" ); 6312 6318 break; // not an anchor 6313 6319 } … … 6359 6365 case 13: // KEY enter 6360 6366 6361 this.ddt._ddt( "htmlarea.js","63 42", "_editorEvent(): enter key handling" );6367 this.ddt._ddt( "htmlarea.js","6364", "_editorEvent(): enter key handling" ); 6362 6368 6363 6369 if (HTMLArea.is_gecko && !ev.shiftKey && this.config.mozParaHandler == 'dirty' ) … … 6371 6377 case 46: // KEY delete 6372 6378 6373 this.ddt._ddt( "htmlarea.js","63 54", "_editorEvent(): delete or backspace handling" );6379 this.ddt._ddt( "htmlarea.js","6376", "_editorEvent(): delete or backspace handling" ); 6374 6380 6375 6381 if (HTMLArea.is_gecko && !ev.shiftKey) … … 6399 6405 }, 100); 6400 6406 6401 this.ddt._ddt( "htmlarea.js","6 382", "_editorEvent(): bottom" );6407 this.ddt._ddt( "htmlarea.js","6404", "_editorEvent(): bottom" ); 6402 6408 6403 6409 }; // end of _editorEvent() … … 6411 6417 HTMLArea.prototype.convertNode = function(el, newTagName) 6412 6418 { 6413 this.ddt._ddt( "htmlarea.js","6 394", "convertNode(): top" );6419 this.ddt._ddt( "htmlarea.js","6416", "convertNode(): top" ); 6414 6420 6415 6421 var newel = this._doc.createElement(newTagName); … … 6457 6463 { 6458 6464 6459 this.ddt._ddt( "htmlarea.js","64 40", "dom_checkBackspace(): top" );6465 this.ddt._ddt( "htmlarea.js","6462", "dom_checkBackspace(): top" ); 6460 6466 6461 6467 var self = this; … … 6724 6730 { 6725 6731 6726 this.ddt._ddt( "htmlarea.js","67 07", "scrollToElement(): top" );6732 this.ddt._ddt( "htmlarea.js","6729", "scrollToElement(): top" ); 6727 6733 6728 6734 if(HTMLArea.is_gecko) … … 6759 6765 HTMLArea.prototype.getHTML = function() 6760 6766 { 6767 6768 this.ddt._ddt( "htmlarea.js", "6768", "getHTML() - prototype version - top" ); 6769 6761 6770 var html = ''; 6762 6771 switch (this._editMode) … … 6797 6806 { 6798 6807 6799 this.ddt._ddt( "htmlarea.js","6 780", "outwardHtml(): top" );6808 this.ddt._ddt( "htmlarea.js","6802", "outwardHtml(): top" ); 6800 6809 6801 6810 html = html.replace(/<(\/?)b(\s|>|\/)/ig, "<$1strong$2"); … … 6830 6839 { 6831 6840 6832 this.ddt._ddt( "htmlarea.js","68 13", "inwardHtml(): top" );6841 this.ddt._ddt( "htmlarea.js","6835", "inwardHtml(): top" ); 6833 6842 6834 6843 // Midas uses b and i instead of strong and em, um, hello, … … 6864 6873 { 6865 6874 6866 this.ddt._ddt( "htmlarea.js","68 47", "outwardSpecialReplacements(): top" );6875 this.ddt._ddt( "htmlarea.js","6869", "outwardSpecialReplacements(): top" ); 6867 6876 6868 6877 for(var i in this.config.specialReplacements) … … 6888 6897 HTMLArea.prototype.inwardSpecialReplacements = function(html) 6889 6898 { 6890 this.ddt._ddt( "htmlarea.js","68 71", "inwardSpecialReplacements(): top" );6899 this.ddt._ddt( "htmlarea.js","6893", "inwardSpecialReplacements(): top" ); 6891 6900 6892 6901 // alert("inward"); … … 6916 6925 { 6917 6926 6918 this.ddt._ddt( "htmlarea.js","6 899", "fixRelativeLinks(): top" );6927 this.ddt._ddt( "htmlarea.js","6921", "fixRelativeLinks(): top" ); 6919 6928 6920 6929 if (typeof this.config.stripSelfNamedAnchors != 'undefined' && this.config.stripSelfNamedAnchors) … … 6962 6971 { 6963 6972 6964 this.ddt._ddt( "htmlarea.js","69 45", "stripBaseURL(): top" );6973 this.ddt._ddt( "htmlarea.js","6967", "stripBaseURL(): top" ); 6965 6974 6966 6975 var baseurl = this.config.baseURL; … … 6990 6999 { 6991 7000 6992 this.ddt._ddt( "htmlarea.js","69 73", "getInnerHTML(): top" );7001 this.ddt._ddt( "htmlarea.js","6995", "getInnerHTML(): top" ); 6993 7002 6994 7003 if(!this._doc.body) return ''; … … 7027 7036 { 7028 7037 7029 this.ddt._ddt( "htmlarea.js","70 10", "setHTML(): top" );7038 this.ddt._ddt( "htmlarea.js","7032", "setHTML(): top" ); 7030 7039 7031 7040 switch (this._editMode) … … 7099 7108 { 7100 7109 7101 this.ddt._ddt( "htmlarea.js","7 082", "_createRange(): top" );7110 this.ddt._ddt( "htmlarea.js","7104", "_createRange(): top" ); 7102 7111 7103 7112 if (HTMLArea.is_ie) … … 7135 7144 { 7136 7145 7137 this.ddt._ddt( "htmlarea.js","71 18", "notifyOn(): top" );7146 this.ddt._ddt( "htmlarea.js","7140", "notifyOn(): top" ); 7138 7147 7139 7148 if(typeof this._notifyListeners[ev] == 'undefined') … … 7155 7164 { 7156 7165 7157 this.ddt._ddt( "htmlarea.js","71 38", "notifyOf(): top" );7166 this.ddt._ddt( "htmlarea.js","7160", "notifyOf(): top" ); 7158 7167 7159 7168 if(this._notifyListeners[ev]) … … 7182 7191 { 7183 7192 7184 this.ddt._ddt( "htmlarea.js","71 65", "_popupDialog(): top with url '" + url + "' action '" + action + "'" );7193 this.ddt._ddt( "htmlarea.js","7187", "_popupDialog(): top with url '" + url + "' action '" + action + "'" ); 7185 7194 7186 7195 Dialog(this.popupURL(url), action, init); … … 7275 7284 { 7276 7285 7277 this.ddt._ddt( "htmlarea.js","72 58", "registerPlugins(): top" );7286 this.ddt._ddt( "htmlarea.js","7280", "registerPlugins(): top" ); 7278 7287 7279 7288 if(plugin_names) -
branches/unified_backend/index.html
r72 r85 62 62 <p> 63 63 Xinha (pronounced like the <a class="ext-link" title="http://images.google.co.nz/images?q=xena&hl=en&btnG=Google+Search" href="http://images.google.co.nz/images?q=xena&hl=en&btnG=Google+Search">Warrior Princess</a>) stands for "Xinha is not htmlarea". It began as a stop-gap fork of the <a class="ext-link" title="http://InteractiveTools.com/" href="http://InteractiveTools.com/">InteractiveTools.Com</a> <a class="ext-link" title="http://www.htmlarea.com/" href="http://www.htmlarea.com/">htmlArea</a> WYSIWYG editor, but due to popular demand it has spawned into Xinha, a generally better version of htmlArea version 3, with a much cooler name. See the <a href="http://xinha.python-hosting.com/wiki/Examples">Examples</a> to have a play with the latest release of Xinha. 64 <br><br> 65 The main branch of Xinha is maintained by James Sleeman of <a href="http://code.gogo.co.nz">Gogo Code</a>. 64 66 65 67 </p> 66 <h2>Unified Backend Branch - snapshot of 2005-04- 15</h2>68 <h2>Unified Backend Branch - snapshot of 2005-04-24</h2> 67 69 68 70 <p> 69 This version of Xinha is known as the unified backend branch. The purpose of this 70 branch is modify the standard Xinha distribution such that all client to server requests 71 are routed through a single unified backend script. This should lead to a more 72 maintainable codebase. 71 This version of Xinha is known as the unified backend branch. This work is 72 sponsored by <a href="http://www.dtlink.com">DTLink, LLC</a> of College Park, Maryland, 73 USA and is maintained by Yermo Lamers. These changes are, of course, released under the 74 same terms as Xinha itself.<br><br> 75 76 The original purpose of this branch was to modify the standard Xinha distribution such 77 that all client to server requests are routed through a single unified backend script. 78 As part of that effort alot of cleanup work has been done. Changes include reorganizing 79 the codebase, adding JSDoc headers, adding an extensive debugging trace system, 80 fixing various bugs and adding a number of management scripts. 81 <br> 82 <br> 83 If you have questions or need help please post in the Xinha discussion 84 forum. Or you can contact me directly via:<br><br> 85 86 <a href="http://www.formvista.com/contact.html">http://www.formvista.com/contact.html</a> 87 73 88 </p> 74 89 … … 77 92 </p> 78 93 79 <ul><li><a href="./docs/index.html">Programmers Documenation</a></li></ul> 94 <h2>Examples in the local examples directory</h2> 95 <b>(Turn off Popup Blockers to see the debugging trace window.)</b> 96 <ul><li><a href="./examples/full_example.html">Full Featured Demo with menu to choose plugins</a></li> 97 <li><a href="./examples/simple_example.html">Minimal Simple Demo</a></li> 98 </ul> 99 100 <h2>Programmers Documentation</h2> 101 <ul><li><a href="./docs/index.html">Programmers Documentation</a></li></ul> 80 102 81 103 <h2>Status - only partially functional.</h2> … … 94 116 <li>debug trace message panel - to turn trace messages on/off on a plugin by plugin basis</li> 95 117 <li>buildruntime.php script to strip out comments and trace messages</li> 96 <li>ddtpreproc.php to process js files to include line numbers and filenames</li>97 118 <li>fix enterparagraph</li> 98 </ul>99 100 101 <h2>Examples in the local examples directory</h2>102 <ul><li><a href="./examples/full_example.html">Full Featured Demo with menu to choose plugins</a></li>103 <li><a href="./examples/simple_example.html">Simple Demo with just 2 plugins.</a></li>104 119 </ul> 105 120 -
branches/unified_backend/popups/about.html
r84 r85 17 17 this file will match the version of the repository. 18 18 19 [@@7 7@@]19 [@@78@@] 20 20 21 21 -->
