table.js
上传用户:dlqqsh
上传日期:2021-11-13
资源大小:7840k
文件大小:12k
源码类别:

OA系统

开发平台:

Java

  1. var action, orgTableWidth, orgTableHeight;
  2. function insertTable() {
  3. var formObj = document.forms[0];
  4. var inst = tinyMCE.selectedInstance;
  5. var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption;
  6. var html = '', capEl;
  7. var elm = tinyMCE.tableElm;
  8. var cellLimit, rowLimit, colLimit;
  9. if (!AutoValidator.validate(formObj)) {
  10. alert(tinyMCE.getLang('lang_invalid_data'));
  11. return false;
  12. }
  13. tinyMCEPopup.restoreSelection();
  14. // Get form data
  15. cols = formObj.elements['cols'].value;
  16. rows = formObj.elements['rows'].value;
  17. border = formObj.elements['border'].value != "" ? formObj.elements['border'].value  : 0;
  18. cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
  19. cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
  20. align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;
  21. width = formObj.elements['width'].value;
  22. height = formObj.elements['height'].value;
  23. bordercolor = formObj.elements['bordercolor'].value;
  24. bgcolor = formObj.elements['bgcolor'].value;
  25. className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value;
  26. id = formObj.elements['id'].value;
  27. summary = formObj.elements['summary'].value;
  28. style = formObj.elements['style'].value;
  29. dir = formObj.elements['dir'].value;
  30. lang = formObj.elements['lang'].value;
  31. background = formObj.elements['backgroundimage'].value;
  32. caption = formObj.elements['caption'].checked;
  33. cellLimit = tinyMCE.getParam('table_cell_limit', false);
  34. rowLimit = tinyMCE.getParam('table_row_limit', false);
  35. colLimit = tinyMCE.getParam('table_col_limit', false);
  36. // Validate table size
  37. if (colLimit && cols > colLimit) {
  38. alert(tinyMCE.getLang('lang_table_col_limit', '', true, {cols : colLimit}));
  39. return false;
  40. } else if (rowLimit && rows > rowLimit) {
  41. alert(tinyMCE.getLang('lang_table_row_limit', '', true, {rows : rowLimit}));
  42. return false;
  43. } else if (cellLimit && cols * rows > cellLimit) {
  44. alert(tinyMCE.getLang('lang_table_cell_limit', '', true, {cells : cellLimit}));
  45. return false;
  46. }
  47. // Update table
  48. if (action == "update") {
  49. inst.execCommand('mceBeginUndoLevel');
  50. tinyMCE.setAttrib(elm, 'cellPadding', cellpadding, true);
  51. tinyMCE.setAttrib(elm, 'cellSpacing', cellspacing, true);
  52. tinyMCE.setAttrib(elm, 'border', border, true);
  53. tinyMCE.setAttrib(elm, 'align', align);
  54. tinyMCE.setAttrib(elm, 'class', className);
  55. tinyMCE.setAttrib(elm, 'style', style);
  56. tinyMCE.setAttrib(elm, 'id', id);
  57. tinyMCE.setAttrib(elm, 'summary', summary);
  58. tinyMCE.setAttrib(elm, 'dir', dir);
  59. tinyMCE.setAttrib(elm, 'lang', lang);
  60. capEl = elm.getElementsByTagName('caption')[0];
  61. if (capEl && !caption)
  62. capEl.parentNode.removeChild(capEl);
  63. if (!capEl && caption) {
  64. capEl = elm.ownerDocument.createElement('caption');
  65. capEl.innerHTML = ' ';
  66. elm.insertBefore(capEl, elm.firstChild);
  67. }
  68. // Not inline styles
  69. if (!tinyMCE.getParam("inline_styles"))
  70. tinyMCE.setAttrib(elm, 'width', width, true);
  71. // Remove these since they are not valid XHTML
  72. tinyMCE.setAttrib(elm, 'borderColor', '');
  73. tinyMCE.setAttrib(elm, 'bgColor', '');
  74. tinyMCE.setAttrib(elm, 'background', '');
  75. tinyMCE.setAttrib(elm, 'height', '');
  76. if (background != '')
  77. elm.style.backgroundImage = "url('" + background + "')";
  78. else
  79. elm.style.backgroundImage = '';
  80. if (tinyMCE.getParam("inline_styles"))
  81. elm.style.borderWidth = border + "px";
  82. if (tinyMCE.getParam("inline_styles")) {
  83. if (width != '')
  84. elm.style.width = getCSSSize(width);
  85. }
  86. if (bordercolor != "") {
  87. elm.style.borderColor = bordercolor;
  88. elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
  89. elm.style.borderWidth = border == "" ? "1px" : border;
  90. } else
  91. elm.style.borderColor = '';
  92. elm.style.backgroundColor = bgcolor;
  93. elm.style.height = getCSSSize(height);
  94. tinyMCE.handleVisualAid(tinyMCE.tableElm, false, inst.visualAid, inst);
  95. // Fix for stange MSIE align bug
  96. tinyMCE.tableElm.outerHTML = tinyMCE.tableElm.outerHTML;
  97. tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
  98. tinyMCE.triggerNodeChange();
  99. inst.execCommand('mceEndUndoLevel');
  100. // Repaint if dimensions changed
  101. if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
  102. inst.repaint();
  103. tinyMCEPopup.close();
  104. return true;
  105. }
  106. // Create new table
  107. html += '<table';
  108. html += makeAttrib('id', id);
  109. html += makeAttrib('border', border);
  110. html += makeAttrib('cellpadding', cellpadding);
  111. html += makeAttrib('cellspacing', cellspacing);
  112. html += makeAttrib('width', width);
  113. //html += makeAttrib('height', height);
  114. //html += makeAttrib('bordercolor', bordercolor);
  115. //html += makeAttrib('bgcolor', bgcolor);
  116. html += makeAttrib('align', align);
  117. html += makeAttrib('class', tinyMCE.getVisualAidClass(className, border == 0));
  118. html += makeAttrib('style', style);
  119. html += makeAttrib('summary', summary);
  120. html += makeAttrib('dir', dir);
  121. html += makeAttrib('lang', lang);
  122. html += '>';
  123. if (caption)
  124. html += '<caption>&nbsp;</caption>';
  125. for (var y=0; y<rows; y++) {
  126. html += "<tr>";
  127. for (var x=0; x<cols; x++)
  128. html += '<td>&nbsp;</td>';
  129. html += "</tr>";
  130. }
  131. html += "</table>";
  132. inst.execCommand('mceBeginUndoLevel');
  133. inst.execCommand('mceInsertContent', false, html);
  134. tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings['visual']);
  135. inst.execCommand('mceEndUndoLevel');
  136. tinyMCEPopup.close();
  137. }
  138. function makeAttrib(attrib, value) {
  139. var formObj = document.forms[0];
  140. var valueElm = formObj.elements[attrib];
  141. if (typeof(value) == "undefined" || value == null) {
  142. value = "";
  143. if (valueElm)
  144. value = valueElm.value;
  145. }
  146. if (value == "")
  147. return "";
  148. // XML encode it
  149. value = value.replace(/&/g, '&amp;');
  150. value = value.replace(/"/g, '&quot;');
  151. value = value.replace(/</g, '&lt;');
  152. value = value.replace(/>/g, '&gt;');
  153. return ' ' + attrib + '="' + value + '"';
  154. }
  155. function init() {
  156. tinyMCEPopup.resizeToInnerSize();
  157. document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
  158. document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
  159. document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
  160. document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
  161. var cols = 2, rows = 2, border = tinyMCE.getParam('table_default_border', '0'), cellpadding = tinyMCE.getParam('table_default_cellpadding', ''), cellspacing = tinyMCE.getParam('table_default_cellspacing', '');
  162. var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
  163. var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "";
  164. var inst = tinyMCE.selectedInstance;
  165. var formObj = document.forms[0];
  166. var elm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
  167. tinyMCE.tableElm = elm;
  168. action = tinyMCE.getWindowArg('action');
  169. if (action == null)
  170. action = tinyMCE.tableElm ? "update" : "insert";
  171. if (tinyMCE.tableElm && action != "insert") {
  172. var rowsAr = tinyMCE.tableElm.rows;
  173. var cols = 0;
  174. for (var i=0; i<rowsAr.length; i++)
  175. if (rowsAr[i].cells.length > cols)
  176. cols = rowsAr[i].cells.length;
  177. cols = cols;
  178. rows = rowsAr.length;
  179. st = tinyMCE.parseStyle(tinyMCE.getAttrib(tinyMCE.tableElm, "style"));
  180. border = trimSize(getStyle(elm, 'border', 'borderWidth'));
  181. cellpadding = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellpadding', "");
  182. cellspacing = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellspacing', "");
  183. width = trimSize(getStyle(elm, 'width', 'width'));
  184. height = trimSize(getStyle(elm, 'height', 'height'));
  185. bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
  186. bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
  187. align = tinyMCE.getAttrib(tinyMCE.tableElm, 'align', align);
  188. className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm, 'class'), false);
  189. id = tinyMCE.getAttrib(tinyMCE.tableElm, 'id');
  190. summary = tinyMCE.getAttrib(tinyMCE.tableElm, 'summary');
  191. style = tinyMCE.serializeStyle(st);
  192. dir = tinyMCE.getAttrib(tinyMCE.tableElm, 'dir');
  193. lang = tinyMCE.getAttrib(tinyMCE.tableElm, 'lang');
  194. background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\('?([^']*)'?\)", 'gi'), "$1");
  195. formObj.caption.checked = tinyMCE.tableElm.getElementsByTagName('caption').length > 0;
  196. orgTableWidth = width;
  197. orgTableHeight = height;
  198. action = "update";
  199. }
  200. addClassesToList('class', "table_styles");
  201. // Update form
  202. selectByValue(formObj, 'align', align);
  203. selectByValue(formObj, 'class', className);
  204. formObj.cols.value = cols;
  205. formObj.rows.value = rows;
  206. formObj.border.value = border;
  207. formObj.cellpadding.value = cellpadding;
  208. formObj.cellspacing.value = cellspacing;
  209. formObj.width.value = width;
  210. formObj.height.value = height;
  211. formObj.bordercolor.value = bordercolor;
  212. formObj.bgcolor.value = bgcolor;
  213. formObj.id.value = id;
  214. formObj.summary.value = summary;
  215. formObj.style.value = style;
  216. formObj.dir.value = dir;
  217. formObj.lang.value = lang;
  218. formObj.backgroundimage.value = background;
  219. formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); 
  220. updateColor('bordercolor_pick', 'bordercolor');
  221. updateColor('bgcolor_pick', 'bgcolor');
  222. // Resize some elements
  223. if (isVisible('backgroundimagebrowser'))
  224. document.getElementById('backgroundimage').style.width = '180px';
  225. // Disable some fields in update mode
  226. if (action == "update") {
  227. formObj.cols.disabled = true;
  228. formObj.rows.disabled = true;
  229. }
  230. }
  231. function changedSize() {
  232. var formObj = document.forms[0];
  233. var st = tinyMCE.parseStyle(formObj.style.value);
  234. var width = formObj.width.value;
  235. if (width != "")
  236. st['width'] = tinyMCE.getParam("inline_styles") ? getCSSSize(width) : "";
  237. else
  238. st['width'] = "";
  239. var height = formObj.height.value;
  240. if (height != "")
  241. st['height'] = getCSSSize(height);
  242. else
  243. st['height'] = "";
  244. formObj.style.value = tinyMCE.serializeStyle(st);
  245. }
  246. function changedBackgroundImage() {
  247. var formObj = document.forms[0];
  248. var st = tinyMCE.parseStyle(formObj.style.value);
  249. st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
  250. formObj.style.value = tinyMCE.serializeStyle(st);
  251. }
  252. function changedBorder() {
  253. var formObj = document.forms[0];
  254. var st = tinyMCE.parseStyle(formObj.style.value);
  255. // Update border width if the element has a color
  256. if (formObj.border.value != "" && formObj.bordercolor.value != "")
  257. st['border-width'] = formObj.border.value + "px";
  258. formObj.style.value = tinyMCE.serializeStyle(st);
  259. }
  260. function changedColor() {
  261. var formObj = document.forms[0];
  262. var st = tinyMCE.parseStyle(formObj.style.value);
  263. st['background-color'] = formObj.bgcolor.value;
  264. if (formObj.bordercolor.value != "") {
  265. st['border-color'] = formObj.bordercolor.value;
  266. // Add border-width if it's missing
  267. if (!st['border-width'])
  268. st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";
  269. }
  270. formObj.style.value = tinyMCE.serializeStyle(st);
  271. }
  272. function changedStyle() {
  273. var formObj = document.forms[0];
  274. var st = tinyMCE.parseStyle(formObj.style.value);
  275. if (st['background-image'])
  276. formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\('?([^']*)'?\)", 'gi'), "$1");
  277. else
  278. formObj.backgroundimage.value = '';
  279. if (st['width'])
  280. formObj.width.value = trimSize(st['width']);
  281. if (st['height'])
  282. formObj.height.value = trimSize(st['height']);
  283. if (st['background-color']) {
  284. formObj.bgcolor.value = st['background-color'];
  285. updateColor('bgcolor_pick','bgcolor');
  286. }
  287. if (st['border-color']) {
  288. formObj.bordercolor.value = st['border-color'];
  289. updateColor('bordercolor_pick','bordercolor');
  290. }
  291. }