Changeset 7223


Ignore:
Timestamp:
08/24/2011 04:49:55 PM (3 years ago)
Author:
garry.yao
Message:

#7894: enhanced handling of nested links.

Location:
CKEditor/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/CHANGES.html

    r7222 r7223  
    7070                <li><a href="http://dev.ckeditor.com/ticket/8087">#8087</a> : Indenting list items may add redundant text direction attributes.</li> 
    7171                <li><a href="http://dev.ckeditor.com/ticket/6200">#6200</a> : Styling for certain dialog element type that miss focus outline like checkbox.</li> 
     72                <li><a href="http://dev.ckeditor.com/ticket/7894">#7894</a> : Fault tolerance when parsing malformed link.</li> 
    7273                <li>Updated the following language files:<ul> 
    7374                        <li><a href="http://dev.ckeditor.com/ticket/8128">#8128</a> : Italian;</li> 
  • CKEditor/trunk/_source/core/htmlparser/fragment.js

    r7008 r7223  
    4949        // Dtd of the fragment element, basically it accept anything except for intermediate structure, e.g. orphan <li>. 
    5050        var rootDtd = CKEDITOR.tools.extend( {}, { html: 1 }, CKEDITOR.dtd.html, CKEDITOR.dtd.body, CKEDITOR.dtd.head, { style:1,script:1 } ); 
     51 
     52        function isRemoveEmpty( node ) 
     53        { 
     54                // Empty link is to be removed when empty but not anchor. (#7894) 
     55                return node.name == 'a' && node.attributes.href 
     56                        || CKEDITOR.dtd.$removeEmpty[ node.name ]; 
     57        } 
    5158 
    5259        /** 
     
    105112                                                i--; 
    106113                                        } 
     114                                        else 
     115                                        { 
     116                                                // Some element of the same type cannot be nested, flat them, 
     117                                                // e.g. <a href="#">foo<a href="#">bar</a></a>. (#7894) 
     118                                                if ( pendingName == currentNode.name ) 
     119                                                        addElement( currentNode, currentNode.parent, 1 ), i--; 
     120                                        } 
    107121                                } 
    108122                        } 
     
    201215 
    202216                        // This is a tag to be removed if empty, so do not add it immediately. 
    203                         if ( CKEDITOR.dtd.$removeEmpty[ tagName ] ) 
     217                        if ( isRemoveEmpty( element ) ) 
    204218                        { 
    205219                                pendingInline.push( element ); 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy