X-Git-Url: https://jasonwoof.com/gitweb/?p=ckeditor.git;a=blobdiff_plain;f=_source%2Fplugins%2Fliststyle%2Fdialogs%2Fliststyle.js;h=67610228d6bf500d63d34ee11b736a8b685e5d7b;hp=43bd2e7848955439a0c594a728f28938890a7212;hb=f0610347140239143439a511ee2bd48cb784f470;hpb=4e70ea24db840898be8cc21c950363a52a2a6aba diff --git a/_source/plugins/liststyle/dialogs/liststyle.js b/_source/plugins/liststyle/dialogs/liststyle.js index 43bd2e7..6761022 100644 --- a/_source/plugins/liststyle/dialogs/liststyle.js +++ b/_source/plugins/liststyle/dialogs/liststyle.js @@ -15,6 +15,8 @@ return range.getCommonAncestor().getAscendant( listTag, 1 ); } + var listItem = function( node ) { return node.type == CKEDITOR.NODE_ELEMENT && node.is( 'li' ); }; + var mapListStyle = { 'a' : 'lower-alpha', 'A' : 'upper-alpha', @@ -46,7 +48,8 @@ type : 'select', label : lang.type, id : 'type', - style : 'width: 150px; margin: auto;', + align : 'center', + style : 'width:150px', items : [ [ lang.notset, '' ], @@ -137,12 +140,30 @@ validate : CKEDITOR.dialog.validate.integer( lang.validateStartNumber ), setup : function( element ) { - var value = element.getAttribute( 'start' ) || 1; + // List item start number dominates. + var value = element.getFirst( listItem ).getAttribute( 'value' ) || element.getAttribute( 'start' ) || 1; value && this.setValue( value ); }, commit : function( element ) { - element.setAttribute( 'start', this.getValue() ); + var firstItem = element.getFirst( listItem ); + var oldStart = firstItem.getAttribute( 'value' ) || element.getAttribute( 'start' ) || 1; + + // Force start number on list root. + element.getFirst( listItem ).removeAttribute( 'value' ); + var val = parseInt( this.getValue(), 10 ); + if ( isNaN( val ) ) + element.removeAttribute( 'start' ); + else + element.setAttribute( 'start', val ); + + // Update consequent list item numbering. + var nextItem = firstItem, conseq = oldStart, startNumber = isNaN( val ) ? 1 : val; + while ( ( nextItem = nextItem.getNext( listItem ) ) && conseq++ ) + { + if ( nextItem.getAttribute( 'value' ) == conseq ) + nextItem.setAttribute( 'value', startNumber + conseq - oldStart ); + } } }, {