From 8a4cc52bd62bdf7b06bf8919f208cdfb035a5816 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Tue, 08 May 2012 06:17:09 -0400 Subject: [PATCH] TinyMCE 3.5 --- program/js/tiny_mce/plugins/table/js/table.js | 65 ++++++++++++++++++++++++++------ 1 files changed, 52 insertions(+), 13 deletions(-) diff --git a/program/js/tiny_mce/plugins/table/js/table.js b/program/js/tiny_mce/plugins/table/js/table.js index 520d857..0aafb5f 100644 --- a/program/js/tiny_mce/plugins/table/js/table.js +++ b/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); -- Gitblit v1.9.1