rte_interface.js
上传用户:simon2hong
上传日期:2021-11-18
资源大小:16746k
文件大小:6k
源码类别:

OA系统

开发平台:

C#

  1. // object: RichEditor()
  2. // description: This object provides the interface to the calling page.
  3. function RichEditor()
  4. {
  5.    var selectedImage = null; // currently selected image
  6. this.put_docHtml = put_docHtml;
  7. this.get_docHtml = get_docHtml; // OZ
  8. this.get_docXHtml = get_docXHtml; // OZ
  9. this.put_defaultFont = put_defaultFont;
  10. this.put_defaultFontSize = put_defaultFontSize;
  11. this.put_styleData = put_styleData; // LEON
  12. this.put_options = put_options;
  13. this.addField = addField;
  14. this.getValue = getValue;
  15. this.put_debugWindow = put_debugWindow; // OZ
  16. }
  17. // property: docHtml
  18. // access: read/write
  19. // description: Set this property to define the initial HTML to be
  20. // edited.
  21. // author: austin.france@ramesys.com
  22. function put_docHtml(passedValue) {
  23. var r = document.selection.createRange();
  24. doc.innerHTML = passedValue;
  25. r.collapse(true);
  26. r.select();
  27. // Only if editor initialisation has completed (and therfore visible)
  28. if (editor.style.visibility == "visible") {
  29. doc.focus();
  30. reset();
  31. }
  32. }
  33. function get_docHtml() {
  34. return doc.innerHTML;
  35. }
  36. // property: docXHtml
  37. // access: read only
  38. // description: Return an XHTML representation of the document.  
  39. // author: austin.france@ramesys.com
  40. function get_docXHtml() { // OZ
  41. // Ignore any contenteditable attributes seen as these are 
  42. // inherited from the editor and not relevent to the document
  43. // HTML.
  44. return innerXHTML(doc, new RegExp("contenteditable"));
  45. }
  46. // property: defaultFont
  47. // access: write only
  48. // description: Sets the default font for the editor.  The default
  49. // if this is not specified is whatever the microsoft
  50. // html editing component decides (Times New Roman
  51. // typically)
  52. // author: austin.france@ramesys.com
  53. function put_defaultFont(passedValue) {
  54. doc.style.fontFamily = passedValue;
  55. }
  56. // property: defaultFontSize
  57. // access: write only
  58. // description: Sets the default font size for the editor.
  59. // author: austin.france@ramesys.com
  60. function put_defaultFontSize(passedValue) {
  61. switch(passedValue) {
  62. case "1": passedValue = "xx-small"; break;
  63. case "2": passedValue = "x-small"; break;
  64. case "3": passedValue = "small"; break;
  65. case "4": passedValue = "medium"; break;
  66. case "5": passedValue = "large"; break;
  67. case "6": passedValue = "x-large"; break;
  68. case "7": passedValue = "xx-large"; break;
  69. }
  70. doc.style.fontSize = passedValue;
  71. }
  72. // property: styleData
  73. // access: writeOnly
  74. // description: Defines extended style data for the style dropdown
  75. // author: leonreinders@hetnet.nl
  76. function put_styleData(passedValue) {
  77. var a,b;
  78. // Define the default style list
  79. this.styleList = [
  80. // element description Active
  81. [null, "普通", 0],
  82. [null, "标题 1", 0],
  83. [null, "标题 2", 0],
  84. [null, "标题 3", 0],
  85. [null, "标题 4", 0],
  86. [null, "标题 5", 0],
  87. [null, "标题 6", 0],
  88. [null, "地址", 0],
  89. [null, "格式", 0],
  90. ["BLOCKQUOTE", "向右缩排", 0],
  91. ["CITE", "引用", 0],
  92. ["BDO", "反向", 0],
  93. ["BIG", "字体加大", 0],
  94. ["SMALL", "字体缩小", 0],
  95. ["DIV", "排版", 0],
  96. ["SUP", "上标", 0],
  97. ["SUB", "下标", 0]
  98. ];
  99. // Add the passed styles to the documents stylesheet
  100. for (var i = 0; passedValue && i < passedValue.length; i++)
  101. {
  102. for (var j = 0; j < passedValue[i].rules.length; j++)
  103. {
  104. // Extract the rule and the rule definition from the passed style
  105. // data.
  106. a = passedValue[i].rules[j].selectorText.toString().toLowerCase();
  107. b = passedValue[i].rules[j].style.cssText.toLowerCase();
  108. // Ignore non-style entries
  109. if (!a || !b) continue;
  110. // Add this rule to our style sheet
  111. document.styleSheets[0].addRule(a,b);
  112. // Id: These are added to the document style sheet but are not
  113. // available in the style dropdown
  114. if (a.indexOf("#") != -1) {
  115. continue;
  116. }
  117. // Class: Append a cless element to the style list
  118. if (a.indexOf(".") == 0) {
  119. this.styleList[this.styleList.length] = [a, "Class " + a, 1];
  120. }
  121. // SubClass: Append the sub-class to the style list
  122. else if(a.indexOf(".") > 0) {
  123. this.styleList[this.styleList.length] = [a, a, 1];
  124. }
  125. // Otherwise, assume it's a tag and select the existing tag entry
  126. // in the style list.
  127. else {
  128. for (var k = 0; k < this.styleList.length; k++) {
  129. if (this.styleList[k][0] == a) {
  130. this.styleList[k][2] = 1;
  131. break;
  132. }
  133. }
  134. }
  135. }
  136. }
  137. // Initialise the style dropdown with the new style list
  138. initStyleDropdown(this.styleList);
  139. }
  140. function addField(name, label, maxlen, value, size) {
  141. var row = rebarBottom.parentElement.insertRow(rebarBottom.rowIndex);
  142. var cell = row.insertCell();
  143. cell.className = 'rebar';
  144. cell.width = '100%';
  145. cell.innerHTML = '<nobr width="100%"><span class="field" width="100%">'
  146. + '<img class="spacer" src="spacer.gif" width="2">'
  147. + '<span class="start"></span>'
  148. + '<span class="label">' + label + ':</span>'
  149. + '&nbsp;<input class="field" type="text"'
  150. + ' name="' + name + '" maxlength="' + maxlen + '"'
  151. + (value ? ' value="' + value + '"' : '')
  152. + 'size="' + (size ? size : 58) + '"'
  153. + '>&nbsp;'
  154. + '</span>'
  155. + '</nobr>';
  156. }
  157. function getValue(name) {
  158. return document.all(name).value;
  159. }
  160. // property: options
  161. // access: writeOnly
  162. // description: Sets options for the editor.  Used by the editor to control
  163. // certain features
  164. //
  165. // viewsource=<true|false>;...
  166. //
  167. // author: austin.france@ramesys.com
  168. function put_options(passedValue) {
  169. this.options = passedValue;
  170. applyOptions(this.options);
  171. }
  172. // property: debugWindow
  173. // access: writeOnly
  174. // description: Tells the editor to emit debugs to the debug window.
  175. // author: austin.france@ramesys.com
  176. function put_debugWindow(passedValue) {
  177. this.debugWindow = passedValue;
  178. DBG();
  179. }