JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.6.3
[ckeditor.git] / _source / plugins / table / dialogs / table.js
index 2ceebdc..d4bfb89 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.\r
 For licensing, see LICENSE.html or http://ckeditor.com/license\r
 */\r
 \r
@@ -15,6 +15,43 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                data.info[id] = this.getValue();\r
        };\r
 \r
+       function tableColumns( table )\r
+       {\r
+               var cols = 0, maxCols = 0;\r
+               for ( var i = 0, row, rows = table.$.rows.length; i < rows; i++ )\r
+               {\r
+                       row = table.$.rows[ i ], cols = 0;\r
+                       for ( var j = 0, cell, cells = row.cells.length; j < cells; j++ )\r
+                       {\r
+                               cell = row.cells[ j ];\r
+                               cols += cell.colSpan;\r
+                       }\r
+\r
+                       cols > maxCols && ( maxCols = cols );\r
+               }\r
+\r
+               return maxCols;\r
+       }\r
+\r
+\r
+       // Whole-positive-integer validator.\r
+       function validatorNum( msg )\r
+       {\r
+               return function()\r
+               {\r
+                       var value = this.getValue(),\r
+                               pass = !!( CKEDITOR.dialog.validate.integer()( value ) && value > 0 );\r
+\r
+                       if ( !pass )\r
+                       {\r
+                               alert( msg );\r
+                               this.select();\r
+                       }\r
+\r
+                       return pass;\r
+               };\r
+       }\r
+\r
        function tableDialog( editor, command )\r
        {\r
                var makeElement = function( name )\r
@@ -263,19 +300,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                                                                                        label : editor.lang.table.rows,\r
                                                                                        required : true,\r
                                                                                        controlStyle : 'width:5em',\r
-                                                                                       validate : function()\r
-                                                                                       {\r
-                                                                                               var pass = true,\r
-                                                                                                       value = this.getValue();\r
-                                                                                               pass = pass && CKEDITOR.dialog.validate.integer()( value )\r
-                                                                                                       && value > 0;\r
-                                                                                               if ( !pass )\r
-                                                                                               {\r
-                                                                                                       alert( editor.lang.table.invalidRows );\r
-                                                                                                       this.select();\r
-                                                                                               }\r
-                                                                                               return pass;\r
-                                                                                       },\r
+                                                                                       validate : validatorNum( editor.lang.table.invalidRows ),\r
                                                                                        setup : function( selectedElement )\r
                                                                                        {\r
                                                                                                this.setValue( selectedElement.$.rows.length );\r
@@ -289,22 +314,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                                                                                        label : editor.lang.table.columns,\r
                                                                                        required : true,\r
                                                                                        controlStyle : 'width:5em',\r
-                                                                                       validate : function()\r
-                                                                                       {\r
-                                                                                               var pass = true,\r
-                                                                                                       value = this.getValue();\r
-                                                                                               pass = pass && CKEDITOR.dialog.validate.integer()( value )\r
-                                                                                                       && value > 0;\r
-                                                                                               if ( !pass )\r
-                                                                                               {\r
-                                                                                                       alert( editor.lang.table.invalidCols );\r
-                                                                                                       this.select();\r
-                                                                                               }\r
-                                                                                               return pass;\r
-                                                                                       },\r
+                                                                                       validate : validatorNum( editor.lang.table.invalidCols ),\r
                                                                                        setup : function( selectedTable )\r
                                                                                        {\r
-                                                                                               this.setValue( selectedTable.$.rows[0].cells.length);\r
+                                                                                               this.setValue( tableColumns( selectedTable ) );\r
                                                                                        },\r
                                                                                        commit : commitValue\r
                                                                                },\r
@@ -334,7 +347,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                                                                                                for ( var row = 0 ; row < selectedTable.$.rows.length ; row++ )\r
                                                                                                {\r
                                                                                                        // If just one cell isn't a TH then it isn't a header column\r
-                                                                                                       if ( selectedTable.$.rows[row].cells[0].nodeName.toLowerCase() != 'th' )\r
+                                                                                                       var headCell = selectedTable.$.rows[row].cells[0];\r
+                                                                                                       if ( headCell && headCell.nodeName.toLowerCase() != 'th' )\r
                                                                                                        {\r
                                                                                                                dialog.hasColumnHeaders = false;\r
                                                                                                                break;\r
@@ -409,6 +423,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                                                                                                        id : 'txtWidth',\r
                                                                                                        controlStyle : 'width:5em',\r
                                                                                                        label : editor.lang.common.width,\r
+                                                                                                       title : editor.lang.common.cssLengthTooltip,\r
                                                                                                        'default' : 500,\r
                                                                                                        getValue : defaultToPixel,\r
                                                                                                        validate : CKEDITOR.dialog.validate.cssLength( editor.lang.common.invalidCssLength.replace( '%1', editor.lang.common.width ) ),\r
@@ -436,6 +451,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
                                                                                                        id : 'txtHeight',\r
                                                                                                        controlStyle : 'width:5em',\r
                                                                                                        label : editor.lang.common.height,\r
+                                                                                                       title : editor.lang.common.cssLengthTooltip,\r
                                                                                                        'default' : '',\r
                                                                                                        getValue : defaultToPixel,\r
                                                                                                        validate : CKEDITOR.dialog.validate.cssLength( editor.lang.common.invalidCssLength.replace( '%1', editor.lang.common.height ) ),\r
@@ -447,7 +463,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
 \r
                                                                                                        setup : function( selectedTable )\r
                                                                                                        {\r
-                                                                                                               var val = selectedTable.getStyle( 'width' );\r
+                                                                                                               var val = selectedTable.getStyle( 'height' );\r
                                                                                                                val && this.setValue( val );\r
                                                                                                        },\r
                                                                                                        commit : commitValue\r