]> git.donarmstrong.com Git - roundcube.git/blobdiff - program/js/tiny_mce/plugins/table/editor_plugin_src.js
Imported Upstream version 0.2~stable
[roundcube.git] / program / js / tiny_mce / plugins / table / editor_plugin_src.js
index 0baafb1f6911622462d0ac911a48483437a376a0..24635826f57169bc6c8eea21db6b2759946d0b1b 100644 (file)
@@ -1,5 +1,5 @@
 /**\r
- * $Id: editor_plugin_src.js 768 2008-04-04 13:52:49Z spocke $\r
+ * $Id: editor_plugin_src.js 853 2008-05-27 08:05:35Z spocke $\r
  *\r
  * @author Moxiecode\r
  * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
 \r
                        // Add undo level when new rows are created using the tab key\r
                        ed.onKeyDown.add(function(ed, e) {\r
-                               if (e.keyCode == 9 && ed.dom.getParent(ed.selection.getNode(), 'TABLE'))\r
+                               if (e.keyCode == 9 && ed.dom.getParent(ed.selection.getNode(), 'TABLE')) {\r
+                                       if (!tinymce.isGecko && !tinymce.isOpera) {\r
+                                               tinyMCE.execInstanceCommand(ed.editorId, "mceTableMoveToNextRow", true);\r
+                                               return tinymce.dom.Event.cancel(e);\r
+                                       }\r
+\r
                                        ed.undoManager.add();\r
+                               }\r
                        });\r
 \r
+                       // Select whole table is a table border is clicked\r
+                       if (!tinymce.isIE) {\r
+                               if (ed.getParam('table_selection', true)) {\r
+                                       ed.onClick.add(function(ed, e) {\r
+                                               e = e.target;\r
+\r
+                                               if (e.nodeName === 'TABLE')\r
+                                                       ed.selection.select(e);\r
+                                       });\r
+                               }\r
+                       }\r
+\r
                        ed.onNodeChange.add(function(ed, cm, n) {\r
                                var p = ed.dom.getParent(n, 'td,th,caption');\r
 \r
-                               cm.setActive('table', !!p);\r
+                               cm.setActive('table', n.nodeName === 'TABLE' || !!p);\r
                                if (p && p.nodeName === 'CAPTION')\r
                                        p = null;\r
 \r
 \r
                        // Is table command\r
                        switch (cmd) {\r
+                               case "mceTableMoveToNextRow":\r
                                case "mceInsertTable":\r
                                case "mceTableRowProps":\r
                                case "mceTableCellProps":\r
                                return null;\r
                        }\r
 \r
+                       function getNextCell(table, cell) {\r
+                               var cells = [], x = 0, i, j, cell, nextCell;\r
+\r
+                               for (i = 0; i < table.rows.length; i++)\r
+                                       for (j = 0; j < table.rows[i].cells.length; j++, x++)\r
+                                               cells[x] = table.rows[i].cells[j];\r
+\r
+                               for (i = 0; i < cells.length; i++)\r
+                                       if (cells[i] == cell)\r
+                                               if (nextCell = cells[i+1])\r
+                                                       return nextCell;\r
+                       }\r
+\r
                        function getTableGrid(table) {\r
                                var grid = [], rows = table.rows, x, y, td, sd, xstart, x2, y2;\r
 \r
 \r
                        // Handle commands\r
                        switch (command) {\r
+                               case "mceTableMoveToNextRow":\r
+                                       var nextCell = getNextCell(tableElm, tdElm);\r
+\r
+                                       if (!nextCell) {\r
+                                               inst.execCommand("mceTableInsertRowAfter", tdElm);\r
+                                               nextCell = getNextCell(tableElm, tdElm);\r
+                                       }\r
+\r
+                                       inst.selection.select(nextCell);\r
+                                       inst.selection.collapse(true);\r
+\r
+                                       return true;\r
+\r
                                case "mceTableRowProps":\r
                                        if (trElm == null)\r
                                                return true;\r
                                                                var cpos = getCellPos(grid, tdElm);\r
 \r
                                                                // Only one row, remove whole table\r
-                                                               if (grid.length == 1) {\r
+                                                               if (grid.length == 1 && tableElm.nodeName == 'TBODY') {\r
                                                                        inst.dom.remove(inst.dom.getParent(tableElm, "table"));\r
                                                                        return true;\r
                                                                }\r
                                                                var lastTDElm = null;\r
 \r
                                                                // Only one col, remove whole table\r
-                                                               if (grid.length > 1 && grid[0].length <= 1) {\r
+                                                               if ((grid.length > 1 && grid[0].length <= 1) && tableElm.nodeName == 'TBODY') {\r
                                                                        inst.dom.remove(inst.dom.getParent(tableElm, "table"));\r
                                                                        return true;\r
                                                                }\r
                                                                        if (!tdElm)\r
                                                                                break;\r
 \r
-                                                                       if (tdElm.nodeName == "TD")\r
+                                                                       if (tdElm.nodeName == "TD" || tdElm.nodeName == "TH")\r
                                                                                cells[cells.length] = tdElm;\r
                                                                }\r
 \r