Ticket #7584: 7584_3.patch

File 7584_3.patch, 2.0 KB (added by garry.yao, 4 years ago)
  • _source/plugins/liststyle/dialogs/liststyle.js

     
    1515                return range.getCommonAncestor().getAscendant( listTag, 1 );
    1616        }
    1717
     18        var listItem = function( node ) { return node.type == CKEDITOR.NODE_ELEMENT && node.is( 'li' ); };
     19
    1820        var mapListStyle = {
    1921                'a' : 'lower-alpha',
    2022                'A' : 'upper-alpha',
     
    138140                                                                                validate : CKEDITOR.dialog.validate.integer( lang.validateStartNumber ),
    139141                                                                                setup : function( element )
    140142                                                                                {
    141                                                                                         var value = element.getAttribute( 'start' ) || 1;
     143                                                                                        // List item start number dominates.
     144                                                                                        var value = element.getFirst( listItem ).getAttribute( 'value' ) || element.getAttribute( 'start' ) || 1;
    142145                                                                                        value && this.setValue( value );
    143146                                                                                },
    144147                                                                                commit : function( element )
    145148                                                                                {
     149                                                                                        var firstItem = element.getFirst( listItem );
     150                                                                                        var oldStart = firstItem.getAttribute( 'value' ) || element.getAttribute( 'start' ) || 1;
     151
     152                                                                                        // Force start number on list root.
     153                                                                                        element.getFirst( listItem ).removeAttribute( 'value' );
    146154                                                                                        var val = parseInt( this.getValue(), 10 );
    147155                                                                                        if ( isNaN( val ) )
    148156                                                                                                element.removeAttribute( 'start' );
    149157                                                                                        else
    150158                                                                                                element.setAttribute( 'start', val );
    151                                                                                 }
     159
     160                                                                                        // Update consequent list item numbering.
     161                                                                                        var nextItem = firstItem, conseq = oldStart, startNumber = isNaN( val ) ? 1 : val;
     162                                                                                        while ( ( nextItem = nextItem.getNext( listItem ) ) && conseq++ )
     163                                                                                        {
     164                                                                                                if ( nextItem.getAttribute( 'value' ) == conseq )
     165                                                                                                        nextItem.setAttribute( 'value', startNumber + conseq - oldStart );
     166                                                                                        }
     167                                                                                }
    152168                                                                        },
    153169                                                                        {
    154170                                                                                type : 'select',
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy