Thomas Bruederli
2012-05-23 b97f21a18f9ffa5306bdccbb77c4b63a09a0e4e7
program/js/tiny_mce/plugins/table/js/table.js
@@ -60,7 +60,19 @@
   if (action == "update") {
      dom.setAttrib(elm, 'cellPadding', cellpadding, true);
      dom.setAttrib(elm, 'cellSpacing', cellspacing, true);
      dom.setAttrib(elm, 'border', border);
      if (!isCssSize(border)) {
         dom.setAttrib(elm, 'border', border);
      } else {
         dom.setAttrib(elm, 'border', '');
      }
      if (border == '') {
         dom.setStyle(elm, 'border-width', '');
         dom.setStyle(elm, 'border', '');
         dom.setAttrib(elm, 'border', '');
      }
      dom.setAttrib(elm, 'align', align);
      dom.setAttrib(elm, 'frame', frame);
      dom.setAttrib(elm, 'rules', rules);
@@ -119,7 +131,7 @@
      if (bordercolor != "") {
         elm.style.borderColor = bordercolor;
         elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
         elm.style.borderWidth = border == "" ? "1px" : border;
         elm.style.borderWidth = cssSize(border);
      } else
         elm.style.borderColor = '';
@@ -132,7 +144,7 @@
      //elm.outerHTML = elm.outerHTML;
      inst.nodeChanged();
      inst.execCommand('mceEndUndoLevel');
      inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true});
      // Repaint if dimensions changed
      if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
@@ -146,7 +158,10 @@
   html += '<table';
   html += makeAttrib('id', id);
   html += makeAttrib('border', border);
   if (!isCssSize(border)) {
      html += makeAttrib('border', border);
   }
   html += makeAttrib('cellpadding', cellpadding);
   html += makeAttrib('cellspacing', cellspacing);
   html += makeAttrib('data-mce-new', '1');
@@ -227,13 +242,17 @@
   } else
      inst.execCommand('mceInsertContent', false, html);
   tinymce.each(dom.select('table[data-mce-new]'), function(node) {
      var td = dom.select('td', node);
   tinymce.each(dom.select('table[data-mce-new]'), function(node) {
      var tdorth = dom.select('td,th', node);
      // Fixes a bug in IE where the caret cannot be placed after the table if the table is at the end of the document
      if (tinymce.isIE && node.nextSibling == null) {
         dom.insertAfter(dom.create('p'), node);
      }
      try {
         // IE9 might fail to do this selection
         inst.selection.select(td[0], true);
         inst.selection.collapse();
         // IE9 might fail to do this selection
         inst.selection.setCursorLocation(tdorth[0], 0);
      } catch (ex) {
         // Ignore
      }
@@ -242,7 +261,7 @@
   });
   inst.addVisual();
   inst.execCommand('mceEndUndoLevel');
   inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true});
   tinyMCEPopup.close();
}
@@ -384,6 +403,20 @@
   formObj.style.value = dom.serializeStyle(st);
}
function isCssSize(value) {
   return /^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)$/.test(value);
}
function cssSize(value, def) {
   value = tinymce.trim(value || def);
   if (!isCssSize(value)) {
      return parseInt(value, 10) + 'px';
   }
   return value;
}
function changedBackgroundImage() {
   var formObj = document.forms[0];
   var st = dom.parseStyle(formObj.style.value);
@@ -398,8 +431,14 @@
   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";
   if (formObj.border.value != "" && (isCssSize(formObj.border.value) || formObj.bordercolor.value != ""))
      st['border-width'] = cssSize(formObj.border.value);
   else {
      if (!formObj.border.value) {
         st['border'] = '';
         st['border-width'] = '';
      }
   }
   formObj.style.value = dom.serializeStyle(st);
}
@@ -415,7 +454,7 @@
      // Add border-width if it's missing
      if (!st['border-width'])
         st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";
         st['border-width'] = cssSize(formObj.border.value, 1);
   }
   formObj.style.value = dom.serializeStyle(st);