diff options
author | Michael Vogel <icarus@dabo.de> | 2012-03-28 19:52:30 +0200 |
---|---|---|
committer | Michael Vogel <icarus@dabo.de> | 2012-03-28 19:52:30 +0200 |
commit | bdd275474044152a5d9a33ea6b8a8071b931d27e (patch) | |
tree | b10c2b68e0236925992449786d70f45aaca21984 /library/tinymce/jscripts/tiny_mce/plugins/table/js/table.js | |
parent | 792edfe9c834e3daeae598727e4cb15dc0ff8475 (diff) | |
parent | e894775a39920edc0e438364c818357ab809bace (diff) | |
download | volse-hubzilla-bdd275474044152a5d9a33ea6b8a8071b931d27e.tar.gz volse-hubzilla-bdd275474044152a5d9a33ea6b8a8071b931d27e.tar.bz2 volse-hubzilla-bdd275474044152a5d9a33ea6b8a8071b931d27e.zip |
Merge commit 'upstream/master'
Diffstat (limited to 'library/tinymce/jscripts/tiny_mce/plugins/table/js/table.js')
-rw-r--r--[-rwxr-xr-x] | library/tinymce/jscripts/tiny_mce/plugins/table/js/table.js | 90 |
1 files changed, 65 insertions, 25 deletions
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/js/table.js b/library/tinymce/jscripts/tiny_mce/plugins/table/js/table.js index d1b42c2af..0aafb5fda 100755..100644 --- a/library/tinymce/jscripts/tiny_mce/plugins/table/js/table.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/table/js/table.js @@ -12,7 +12,7 @@ function insertTable() { tinyMCEPopup.restoreSelection();
if (!AutoValidator.validate(formObj)) {
- tinyMCEPopup.alert(inst.getLang('invalid_data'));
+ tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');
return false;
}
@@ -21,7 +21,7 @@ function insertTable() { // Get form data
cols = formObj.elements['cols'].value;
rows = formObj.elements['rows'].value;
- border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0;
+ border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0;
cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
align = getSelectValue(formObj, "align");
@@ -58,11 +58,21 @@ function insertTable() { // Update table
if (action == "update") {
- inst.execCommand('mceBeginUndoLevel');
-
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);
@@ -82,7 +92,7 @@ function insertTable() { capEl = elm.ownerDocument.createElement('caption');
if (!tinymce.isIE)
- capEl.innerHTML = '<br _mce_bogus="1"/>';
+ capEl.innerHTML = '<br data-mce-bogus="1"/>';
elm.insertBefore(capEl, elm.firstChild);
}
@@ -121,7 +131,7 @@ function insertTable() { 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 = '';
@@ -134,7 +144,7 @@ function insertTable() { //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)
@@ -148,10 +158,13 @@ function insertTable() { 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('_mce_new', '1');
+ html += makeAttrib('data-mce-new', '1');
if (width && inst.settings.inline_styles) {
if (style)
@@ -187,7 +200,7 @@ function insertTable() { if (caption) {
if (!tinymce.isIE)
- html += '<caption><br _mce_bogus="1"/></caption>';
+ html += '<caption><br data-mce-bogus="1"/></caption>';
else
html += '<caption></caption>';
}
@@ -197,7 +210,7 @@ function insertTable() { for (var x=0; x<cols; x++) {
if (!tinymce.isIE)
- html += '<td><br _mce_bogus="1"/></td>';
+ html += '<td><br data-mce-bogus="1"/></td>';
else
html += '<td></td>';
}
@@ -207,8 +220,6 @@ function insertTable() { html += "</table>";
- inst.execCommand('mceBeginUndoLevel');
-
// Move table
if (inst.settings.fix_table_elements) {
var patt = '';
@@ -231,17 +242,26 @@ function insertTable() { } else
inst.execCommand('mceInsertContent', false, html);
- tinymce.each(dom.select('table[_mce_new]'), function(node) {
- var td = dom.select('td', node);
-
- inst.selection.select(td[0], true);
- inst.selection.collapse();
+ 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.setCursorLocation(tdorth[0], 0);
+ } catch (ex) {
+ // Ignore
+ }
- dom.setAttrib(node, '_mce_new', '');
+ dom.setAttrib(node, 'data-mce-new', '');
});
inst.addVisual();
- inst.execCommand('mceEndUndoLevel');
+ inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true});
tinyMCEPopup.close();
}
@@ -279,7 +299,7 @@ function init() { 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 = "", rules, frame;
+ 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 = dom.getParent(inst.selection.getNode(), "table");
@@ -383,6 +403,20 @@ function changedSize() { 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);
@@ -397,8 +431,14 @@ function changedBorder() { 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);
}
@@ -414,7 +454,7 @@ function changedColor() { // 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);
|