Ticket #9094: 9094.patch

File 9094.patch, 2.1 KB (added by Alfonso Martínez de Lizarrondo, 12 years ago)

patch draft

  • _source/core/dtd.js

     
    4848                L = X({a:1},J),
    4949                M = {tr:1},
    5050                N = {'#':1},
    51                 O = X({param:1},K),
     51                O = X({param:1,embed:1},K),
    5252                P = X({form:1},A,D,E,I),
    5353                Q = {li:1},
    5454                R = {style:1,script:1},
  • _source/core/htmlparser/fragment.js

     
    212212
    213213                parser.onTagOpen = function( tagName, attributes, selfClosing, optionalClose )
    214214                {
    215                         var element = new CKEDITOR.htmlParser.element( tagName, attributes );
     215                        var element = new CKEDITOR.htmlParser.element( tagName, attributes ),
     216                                dtdName = tagName;
    216217
     218                        // Reveal the real semantic of our internal custom tag name (#).
     219                        var internalTag = tagName.match( /^cke:(.*)/ );
     220                        internalTag && ( dtdName = internalTag[ 1 ] );
     221
    217222                        // "isEmpty" will be always "false" for unknown elements, so we
    218223                        // must force it if the parser has identified it as a selfClosing tag.
    219224                        if ( element.isUnknown && selfClosing )
     
    246251
    247252                        while( 1 )
    248253                        {
    249                                 var currentName = currentNode.name;
     254                                var currentName = currentNode.name,
     255                                        currentDtdName = currentName;
    250256
    251                                 var currentDtd = currentName ? ( CKEDITOR.dtd[ currentName ]
     257                                var internalTag = currentName && currentName.match( /^cke:(.*)/ );
     258                                internalTag && ( currentDtdName = internalTag[ 1 ] );
     259
     260                                var currentDtd = currentName ? ( CKEDITOR.dtd[ currentDtdName ]
    252261                                                || ( currentNode._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span ) )
    253262                                                : rootDtd;
    254263
    255264                                // If the element cannot be child of the current element.
    256                                 if ( !element.isUnknown && !currentNode.isUnknown && !currentDtd[ tagName ] )
     265                                if ( !element.isUnknown && !currentNode.isUnknown && !currentDtd[ dtdName ] )
    257266                                {
    258267                                        // Current node doesn't have a close tag, time for a close
    259268                                        // as this element isn't fit in. (#7497)
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy