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