Upgrade TinyMCE to v3.4.5
[citadel.git] / webcit / tiny_mce / plugins / table / js / row.js
index d25f635f6835d1c6c79e00592c5c1dc8ce703118..a13d69592d5af7467eee68259b930ab110975ed8 100644 (file)
@@ -8,7 +8,7 @@ function init() {
 \r
        var inst = tinyMCEPopup.editor;\r
        var dom = inst.dom;\r
-       var trElm = dom.getParent(inst.selection.getNode(), "tr");\r
+       var trElm = dom.getParent(inst.selection.getStart(), "tr");\r
        var formObj = document.forms[0];\r
        var st = dom.parseStyle(dom.getAttrib(trElm, "style"));\r
 \r
@@ -19,43 +19,71 @@ function init() {
        var height = trimSize(getStyle(trElm, 'height', 'height'));\r
        var className = dom.getAttrib(trElm, 'class');\r
        var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));\r
-       var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;\r
+       var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");\r
        var id = dom.getAttrib(trElm, 'id');\r
        var lang = dom.getAttrib(trElm, 'lang');\r
        var dir = dom.getAttrib(trElm, 'dir');\r
 \r
-       // Setup form\r
-       addClassesToList('class', 'table_row_styles');\r
-       TinyMCE_EditableSelects.init();\r
-\r
-       formObj.bgcolor.value = bgcolor;\r
-       formObj.backgroundimage.value = backgroundimage;\r
-       formObj.height.value = height;\r
-       formObj.id.value = id;\r
-       formObj.lang.value = lang;\r
-       formObj.style.value = dom.serializeStyle(st);\r
-       selectByValue(formObj, 'align', align);\r
-       selectByValue(formObj, 'valign', valign);\r
-       selectByValue(formObj, 'class', className, true, true);\r
        selectByValue(formObj, 'rowtype', rowtype);\r
-       selectByValue(formObj, 'dir', dir);\r
 \r
-       // Resize some elements\r
-       if (isVisible('backgroundimagebrowser'))\r
-               document.getElementById('backgroundimage').style.width = '180px';\r
-\r
-       updateColor('bgcolor_pick', 'bgcolor');\r
+       // Any cells selected\r
+       if (dom.select('td.mceSelected,th.mceSelected', trElm).length == 0) {\r
+               // Setup form\r
+               addClassesToList('class', 'table_row_styles');\r
+               TinyMCE_EditableSelects.init();\r
+\r
+               formObj.bgcolor.value = bgcolor;\r
+               formObj.backgroundimage.value = backgroundimage;\r
+               formObj.height.value = height;\r
+               formObj.id.value = id;\r
+               formObj.lang.value = lang;\r
+               formObj.style.value = dom.serializeStyle(st);\r
+               selectByValue(formObj, 'align', align);\r
+               selectByValue(formObj, 'valign', valign);\r
+               selectByValue(formObj, 'class', className, true, true);\r
+               selectByValue(formObj, 'dir', dir);\r
+\r
+               // Resize some elements\r
+               if (isVisible('backgroundimagebrowser'))\r
+                       document.getElementById('backgroundimage').style.width = '180px';\r
+\r
+               updateColor('bgcolor_pick', 'bgcolor');\r
+       } else\r
+               tinyMCEPopup.dom.hide('action');\r
 }\r
 \r
 function updateAction() {\r
        var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];\r
        var action = getSelectValue(formObj, 'action');\r
 \r
+       if (!AutoValidator.validate(formObj)) {\r
+               tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');\r
+               return false;\r
+       }\r
+\r
        tinyMCEPopup.restoreSelection();\r
-       trElm = dom.getParent(inst.selection.getNode(), "tr");\r
-       tableElm = dom.getParent(inst.selection.getNode(), "table");\r
+       trElm = dom.getParent(inst.selection.getStart(), "tr");\r
+       tableElm = dom.getParent(inst.selection.getStart(), "table");\r
+\r
+       // Update all selected rows\r
+       if (dom.select('td.mceSelected,th.mceSelected', trElm).length > 0) {\r
+               tinymce.each(tableElm.rows, function(tr) {\r
+                       var i;\r
+\r
+                       for (i = 0; i < tr.cells.length; i++) {\r
+                               if (dom.hasClass(tr.cells[i], 'mceSelected')) {\r
+                                       updateRow(tr, true);\r
+                                       return;\r
+                               }\r
+                       }\r
+               });\r
 \r
-       inst.execCommand('mceBeginUndoLevel');\r
+               inst.addVisual();\r
+               inst.nodeChanged();\r
+               inst.execCommand('mceEndUndoLevel');\r
+               tinyMCEPopup.close();\r
+               return;\r
+       }\r
 \r
        switch (action) {\r
                case "row":\r
@@ -98,19 +126,19 @@ function updateRow(tr_elm, skip_id, skip_parent) {
 \r
        // Update row element\r
        if (!skip_id)\r
-               tr_elm.setAttribute('id', formObj.id.value);\r
+               dom.setAttrib(tr_elm, 'id', formObj.id.value);\r
 \r
-       tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));\r
-       tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));\r
-       tr_elm.setAttribute('lang', formObj.lang.value);\r
-       tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));\r
-       tr_elm.setAttribute('style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));\r
+       dom.setAttrib(tr_elm, 'align', getSelectValue(formObj, 'align'));\r
+       dom.setAttrib(tr_elm, 'vAlign', getSelectValue(formObj, 'valign'));\r
+       dom.setAttrib(tr_elm, 'lang', formObj.lang.value);\r
+       dom.setAttrib(tr_elm, 'dir', getSelectValue(formObj, 'dir'));\r
+       dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));\r
        dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));\r
 \r
        // Clear deprecated attributes\r
-       tr_elm.setAttribute('background', '');\r
-       tr_elm.setAttribute('bgColor', '');\r
-       tr_elm.setAttribute('height', '');\r
+       dom.setAttrib(tr_elm, 'background', '');\r
+       dom.setAttrib(tr_elm, 'bgColor', '');\r
+       dom.setAttrib(tr_elm, 'height', '');\r
 \r
        // Set styles\r
        tr_elm.style.height = getCSSSize(formObj.height.value);\r
@@ -138,13 +166,10 @@ function updateRow(tr_elm, skip_id, skip_parent) {
                if (newParent == null) {\r
                        newParent = doc.createElement(dest);\r
 \r
-                       if (dest == "thead") {\r
-                               if (theTable.firstChild.nodeName == 'CAPTION')\r
-                                       inst.dom.insertAfter(newParent, theTable.firstChild);\r
-                               else\r
-                                       theTable.insertBefore(newParent, theTable.firstChild);\r
-                       } else\r
-                               theTable.appendChild(newParent);\r
+                       if (theTable.firstChild.nodeName == 'CAPTION')\r
+                               inst.dom.insertAfter(newParent, theTable.firstChild);\r
+                       else\r
+                               theTable.insertBefore(newParent, theTable.firstChild);\r
                }\r
 \r
                // append the row to the new parent\r