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
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