svncommit
2008-04-15 d9344fc349e8c5765898c90bf5061e56cd21c8a0
program/js/tiny_mce/plugins/table/js/table.js
File was renamed from program/js/tiny_mce/plugins/table/jscripts/table.js
@@ -1,19 +1,22 @@
var action, orgTableWidth, orgTableHeight;
tinyMCEPopup.requireLangPack();
var action, orgTableWidth, orgTableHeight, dom = tinyMCEPopup.editor.dom;
function insertTable() {
   var formObj = document.forms[0];
   var inst = tinyMCE.selectedInstance;
   var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption;
   var html = '', capEl;
   var elm = tinyMCE.tableElm;
   var inst = tinyMCEPopup.editor, dom = inst.dom;
   var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption, frame, rules;
   var html = '', capEl, elm;
   var cellLimit, rowLimit, colLimit;
   tinyMCEPopup.restoreSelection();
   if (!AutoValidator.validate(formObj)) {
      alert(tinyMCE.getLang('lang_invalid_data'));
      alert(inst.getLang('invalid_data'));
      return false;
   }
   tinyMCEPopup.restoreSelection();
   elm = dom.getParent(inst.selection.getNode(), 'table');
   // Get form data
   cols = formObj.elements['cols'].value;
@@ -22,6 +25,8 @@
   cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
   cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
   align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;
   frame = formObj.elements['frame'].options[formObj.elements['frame'].selectedIndex].value;
   rules = formObj.elements['rules'].options[formObj.elements['rules'].selectedIndex].value;
   width = formObj.elements['width'].value;
   height = formObj.elements['height'].value;
   bordercolor = formObj.elements['bordercolor'].value;
@@ -35,19 +40,19 @@
   background = formObj.elements['backgroundimage'].value;
   caption = formObj.elements['caption'].checked;
   cellLimit = tinyMCE.getParam('table_cell_limit', false);
   rowLimit = tinyMCE.getParam('table_row_limit', false);
   colLimit = tinyMCE.getParam('table_col_limit', false);
   cellLimit = tinyMCEPopup.getParam('table_cell_limit', false);
   rowLimit = tinyMCEPopup.getParam('table_row_limit', false);
   colLimit = tinyMCEPopup.getParam('table_col_limit', false);
   // Validate table size
   if (colLimit && cols > colLimit) {
      alert(tinyMCE.getLang('lang_table_col_limit', '', true, {cols : colLimit}));
      alert(inst.getLang('table_col_limit', '', true, {cols : colLimit}));
      return false;
   } else if (rowLimit && rows > rowLimit) {
      alert(tinyMCE.getLang('lang_table_row_limit', '', true, {rows : rowLimit}));
      alert(inst.getLang('table_row_limit', '', true, {rows : rowLimit}));
      return false;
   } else if (cellLimit && cols * rows > cellLimit) {
      alert(tinyMCE.getLang('lang_table_cell_limit', '', true, {cells : cellLimit}));
      alert(inst.getLang('table_cell_limit', '', true, {cells : cellLimit}));
      return false;
   }
@@ -55,50 +60,60 @@
   if (action == "update") {
      inst.execCommand('mceBeginUndoLevel');
      tinyMCE.setAttrib(elm, 'cellPadding', cellpadding, true);
      tinyMCE.setAttrib(elm, 'cellSpacing', cellspacing, true);
      tinyMCE.setAttrib(elm, 'border', border, true);
      tinyMCE.setAttrib(elm, 'align', align);
      tinyMCE.setAttrib(elm, 'class', className);
      tinyMCE.setAttrib(elm, 'style', style);
      tinyMCE.setAttrib(elm, 'id', id);
      tinyMCE.setAttrib(elm, 'summary', summary);
      tinyMCE.setAttrib(elm, 'dir', dir);
      tinyMCE.setAttrib(elm, 'lang', lang);
      dom.setAttrib(elm, 'cellPadding', cellpadding, true);
      dom.setAttrib(elm, 'cellSpacing', cellspacing, true);
      dom.setAttrib(elm, 'border', border);
      dom.setAttrib(elm, 'align', align);
      dom.setAttrib(elm, 'frame', frame);
      dom.setAttrib(elm, 'rules', rules);
      dom.setAttrib(elm, 'class', className);
      dom.setAttrib(elm, 'style', style);
      dom.setAttrib(elm, 'id', id);
      dom.setAttrib(elm, 'summary', summary);
      dom.setAttrib(elm, 'dir', dir);
      dom.setAttrib(elm, 'lang', lang);
      capEl = elm.getElementsByTagName('caption')[0];
      capEl = inst.dom.select('caption', elm)[0];
      if (capEl && !caption)
         capEl.parentNode.removeChild(capEl);
      if (!capEl && caption) {
         capEl = elm.ownerDocument.createElement('caption');
         capEl.innerHTML = ' ';
         if (!tinymce.isIE)
            capEl.innerHTML = '<br mce_bogus="1"/>';
         elm.insertBefore(capEl, elm.firstChild);
      }
      // Not inline styles
      if (!tinyMCE.getParam("inline_styles"))
         tinyMCE.setAttrib(elm, 'width', width, true);
      if (width && /(pt|em|cm)$/.test(width)) {
         dom.setStyle(elm, 'width', width);
         dom.setAttrib(elm, 'width', '');
      } else {
         dom.setAttrib(elm, 'width', width, true);
         dom.setStyle(elm, 'width', '');
      }
      // Remove these since they are not valid XHTML
      tinyMCE.setAttrib(elm, 'borderColor', '');
      tinyMCE.setAttrib(elm, 'bgColor', '');
      tinyMCE.setAttrib(elm, 'background', '');
      tinyMCE.setAttrib(elm, 'height', '');
      dom.setAttrib(elm, 'borderColor', '');
      dom.setAttrib(elm, 'bgColor', '');
      dom.setAttrib(elm, 'background', '');
      if (height) {
         dom.setStyle(elm, 'height', height);
         dom.setAttrib(elm, 'height', '');
      }
      if (background != '')
         elm.style.backgroundImage = "url('" + background + "')";
      else
         elm.style.backgroundImage = '';
      if (tinyMCE.getParam("inline_styles"))
         elm.style.borderWidth = border + "px";
      if (tinyMCE.getParam("inline_styles")) {
/*      if (tinyMCEPopup.getParam("inline_styles")) {
         if (width != '')
            elm.style.width = getCSSSize(width);
      }
      }*/
      if (bordercolor != "") {
         elm.style.borderColor = bordercolor;
@@ -110,18 +125,17 @@
      elm.style.backgroundColor = bgcolor;
      elm.style.height = getCSSSize(height);
      tinyMCE.handleVisualAid(tinyMCE.tableElm, false, inst.visualAid, inst);
      inst.addVisual();
      // Fix for stange MSIE align bug
      tinyMCE.tableElm.outerHTML = tinyMCE.tableElm.outerHTML;
      //elm.outerHTML = elm.outerHTML;
      tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
      tinyMCE.triggerNodeChange();
      inst.nodeChanged();
      inst.execCommand('mceEndUndoLevel');
      // Repaint if dimensions changed
      if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
         inst.repaint();
         inst.execCommand('mceRepaint');
      tinyMCEPopup.close();
      return true;
@@ -134,26 +148,51 @@
   html += makeAttrib('border', border);
   html += makeAttrib('cellpadding', cellpadding);
   html += makeAttrib('cellspacing', cellspacing);
   html += makeAttrib('width', width);
   if (width && /(pt|em|cm)$/.test(width)) {
      if (style)
         style += '; ';
      style += 'width: ' + width;
   } else
      html += makeAttrib('width', width);
/*   if (height) {
      if (style)
         style += '; ';
      style += 'height: ' + height;
   }*/
   //html += makeAttrib('height', height);
   //html += makeAttrib('bordercolor', bordercolor);
   //html += makeAttrib('bgcolor', bgcolor);
   html += makeAttrib('align', align);
   html += makeAttrib('class', tinyMCE.getVisualAidClass(className, border == 0));
   html += makeAttrib('frame', frame);
   html += makeAttrib('rules', rules);
   html += makeAttrib('class', className);
   html += makeAttrib('style', style);
   html += makeAttrib('summary', summary);
   html += makeAttrib('dir', dir);
   html += makeAttrib('lang', lang);
   html += '>';
   if (caption)
      html += '<caption>&nbsp;</caption>';
   if (caption) {
      if (!tinymce.isIE)
         html += '<caption><br mce_bogus="1"/></caption>';
      else
         html += '<caption></caption>';
   }
   for (var y=0; y<rows; y++) {
      html += "<tr>";
      for (var x=0; x<cols; x++)
         html += '<td>&nbsp;</td>';
      for (var x=0; x<cols; x++) {
         if (!tinymce.isIE)
            html += '<td><br mce_bogus="1"/></td>';
         else
            html += '<td></td>';
      }
      html += "</tr>";
   }
@@ -162,7 +201,7 @@
   inst.execCommand('mceBeginUndoLevel');
   inst.execCommand('mceInsertContent', false, html);
   tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings['visual']);
   inst.addVisual();
   inst.execCommand('mceEndUndoLevel');
   tinyMCEPopup.close();
@@ -199,20 +238,20 @@
   document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
   document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
   var cols = 2, rows = 2, border = tinyMCE.getParam('table_default_border', '0'), cellpadding = tinyMCE.getParam('table_default_cellpadding', ''), cellspacing = tinyMCE.getParam('table_default_cellspacing', '');
   var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', '');
   var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
   var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "";
   var inst = tinyMCE.selectedInstance;
   var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules, frame;
   var inst = tinyMCEPopup.editor, dom = inst.dom;
   var formObj = document.forms[0];
   var elm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
   var elm = dom.getParent(inst.selection.getNode(), "table");
   tinyMCE.tableElm = elm;
   action = tinyMCE.getWindowArg('action');
   if (action == null)
      action = tinyMCE.tableElm ? "update" : "insert";
   action = tinyMCEPopup.getWindowArg('action');
   if (tinyMCE.tableElm && action != "insert") {
      var rowsAr = tinyMCE.tableElm.rows;
   if (!action)
      action = elm ? "update" : "insert";
   if (elm && action != "insert") {
      var rowsAr = elm.rows;
      var cols = 0;
      for (var i=0; i<rowsAr.length; i++)
         if (rowsAr[i].cells.length > cols)
@@ -221,35 +260,41 @@
      cols = cols;
      rows = rowsAr.length;
      st = tinyMCE.parseStyle(tinyMCE.getAttrib(tinyMCE.tableElm, "style"));
      st = dom.parseStyle(dom.getAttrib(elm, "style"));
      border = trimSize(getStyle(elm, 'border', 'borderWidth'));
      cellpadding = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellpadding', "");
      cellspacing = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellspacing', "");
      cellpadding = dom.getAttrib(elm, 'cellpadding', "");
      cellspacing = dom.getAttrib(elm, 'cellspacing', "");
      width = trimSize(getStyle(elm, 'width', 'width'));
      height = trimSize(getStyle(elm, 'height', 'height'));
      bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
      bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
      align = tinyMCE.getAttrib(tinyMCE.tableElm, 'align', align);
      className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm, 'class'), false);
      id = tinyMCE.getAttrib(tinyMCE.tableElm, 'id');
      summary = tinyMCE.getAttrib(tinyMCE.tableElm, 'summary');
      style = tinyMCE.serializeStyle(st);
      dir = tinyMCE.getAttrib(tinyMCE.tableElm, 'dir');
      lang = tinyMCE.getAttrib(tinyMCE.tableElm, 'lang');
      align = dom.getAttrib(elm, 'align', align);
      frame = dom.getAttrib(elm, 'frame');
      rules = dom.getAttrib(elm, 'rules');
      className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, ''));
      id = dom.getAttrib(elm, 'id');
      summary = dom.getAttrib(elm, 'summary');
      style = dom.serializeStyle(st);
      dir = dom.getAttrib(elm, 'dir');
      lang = dom.getAttrib(elm, 'lang');
      background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
      formObj.caption.checked = tinyMCE.tableElm.getElementsByTagName('caption').length > 0;
      formObj.caption.checked = elm.getElementsByTagName('caption').length > 0;
      orgTableWidth = width;
      orgTableHeight = height;
      action = "update";
      formObj.insert.value = inst.getLang('update');
   }
   addClassesToList('class', "table_styles");
   TinyMCE_EditableSelects.init();
   // Update form
   selectByValue(formObj, 'align', align);
   selectByValue(formObj, 'class', className);
   selectByValue(formObj, 'frame', frame);
   selectByValue(formObj, 'rules', rules);
   selectByValue(formObj, 'class', className, true, true);
   formObj.cols.value = cols;
   formObj.rows.value = rows;
   formObj.border.value = border;
@@ -265,7 +310,6 @@
   formObj.dir.value = dir;
   formObj.lang.value = lang;
   formObj.backgroundimage.value = background;
   formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true);
   updateColor('bordercolor_pick', 'bordercolor');
   updateColor('bgcolor_pick', 'bgcolor');
@@ -283,13 +327,13 @@
function changedSize() {
   var formObj = document.forms[0];
   var st = tinyMCE.parseStyle(formObj.style.value);
   var st = dom.parseStyle(formObj.style.value);
   var width = formObj.width.value;
/*   var width = formObj.width.value;
   if (width != "")
      st['width'] = tinyMCE.getParam("inline_styles") ? getCSSSize(width) : "";
      st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : "";
   else
      st['width'] = "";
      st['width'] = "";*/
   var height = formObj.height.value;
   if (height != "")
@@ -297,32 +341,32 @@
   else
      st['height'] = "";
   formObj.style.value = tinyMCE.serializeStyle(st);
   formObj.style.value = dom.serializeStyle(st);
}
function changedBackgroundImage() {
   var formObj = document.forms[0];
   var st = tinyMCE.parseStyle(formObj.style.value);
   var st = dom.parseStyle(formObj.style.value);
   st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
   formObj.style.value = tinyMCE.serializeStyle(st);
   formObj.style.value = dom.serializeStyle(st);
}
function changedBorder() {
   var formObj = document.forms[0];
   var st = tinyMCE.parseStyle(formObj.style.value);
   var st = dom.parseStyle(formObj.style.value);
   // Update border width if the element has a color
   if (formObj.border.value != "" && formObj.bordercolor.value != "")
      st['border-width'] = formObj.border.value + "px";
   formObj.style.value = tinyMCE.serializeStyle(st);
   formObj.style.value = dom.serializeStyle(st);
}
function changedColor() {
   var formObj = document.forms[0];
   var st = tinyMCE.parseStyle(formObj.style.value);
   var st = dom.parseStyle(formObj.style.value);
   st['background-color'] = formObj.bgcolor.value;
@@ -334,12 +378,12 @@
         st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";
   }
   formObj.style.value = tinyMCE.serializeStyle(st);
   formObj.style.value = dom.serializeStyle(st);
}
function changedStyle() {
   var formObj = document.forms[0];
   var st = tinyMCE.parseStyle(formObj.style.value);
   var st = dom.parseStyle(formObj.style.value);
   if (st['background-image'])
      formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
@@ -362,3 +406,5 @@
      updateColor('bordercolor_pick','bordercolor');
   }
}
tinyMCEPopup.onInit.add(init);