JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.6.1
[ckeditor.git] / _source / plugins / liststyle / dialogs / liststyle.js
index 43bd2e7..6761022 100644 (file)
@@ -15,6 +15,8 @@
                return range.getCommonAncestor().getAscendant( listTag, 1 );\r
        }\r
 \r
+       var listItem = function( node ) { return node.type == CKEDITOR.NODE_ELEMENT && node.is( 'li' ); };\r
+\r
        var mapListStyle = {\r
                'a' : 'lower-alpha',\r
                'A' : 'upper-alpha',\r
@@ -46,7 +48,8 @@
                                                                type : 'select',\r
                                                                label : lang.type,\r
                                                                id : 'type',\r
-                                                               style : 'width: 150px; margin: auto;',\r
+                                                               align : 'center',\r
+                                                               style : 'width:150px',\r
                                                                items :\r
                                                                [\r
                                                                        [ lang.notset, '' ],\r
                                                                                validate : CKEDITOR.dialog.validate.integer( lang.validateStartNumber ),\r
                                                                                setup : function( element )\r
                                                                                {\r
-                                                                                       var value = element.getAttribute( 'start' ) || 1;\r
+                                                                                       // List item start number dominates.\r
+                                                                                       var value = element.getFirst( listItem ).getAttribute( 'value' ) || element.getAttribute( 'start' ) || 1;\r
                                                                                        value && this.setValue( value );\r
                                                                                },\r
                                                                                commit : function( element )\r
                                                                                {\r
-                                                                                       element.setAttribute( 'start', this.getValue() );\r
+                                                                                       var firstItem = element.getFirst( listItem );\r
+                                                                                       var oldStart = firstItem.getAttribute( 'value' ) || element.getAttribute( 'start' ) || 1;\r
+\r
+                                                                                       // Force start number on list root.\r
+                                                                                       element.getFirst( listItem ).removeAttribute( 'value' );\r
+                                                                                       var val = parseInt( this.getValue(), 10 );\r
+                                                                                       if ( isNaN( val ) )\r
+                                                                                               element.removeAttribute( 'start' );\r
+                                                                                       else\r
+                                                                                               element.setAttribute( 'start', val );\r
+\r
+                                                                                       // Update consequent list item numbering.\r
+                                                                                       var nextItem = firstItem, conseq = oldStart, startNumber = isNaN( val ) ? 1 : val;\r
+                                                                                       while ( ( nextItem = nextItem.getNext( listItem ) ) && conseq++ )\r
+                                                                                       {\r
+                                                                                               if ( nextItem.getAttribute( 'value' ) == conseq )\r
+                                                                                                       nextItem.setAttribute( 'value', startNumber + conseq - oldStart );\r
+                                                                                       }\r
                                                                                }\r
                                                                        },\r
                                                                        {\r