Ticket #6665: 6665.patch

File 6665.patch, 3.3 KB (added by Garry Yao, 10 years ago)
  • _source/plugins/htmldataprocessor/plugin.js

     
    9292        delete blockLikeTags.pre;
    9393        var defaultDataFilterRules =
    9494        {
    95                 elements : {},
     95                elements : {
     96                        a : function( element )
     97                        {
     98                                var attrs = element.attributes;
     99                                if ( attrs && attrs[ 'data-cke-saved-name' ] )
     100                                        attrs[ 'class' ] = ( attrs[ 'class' ] || '' ) + ' cke_anchor';
     101                        }
     102                },
    96103                attributeNames :
    97104                [
    98105                        // Event attributes (onXYZ) must not be directly set. They can become
     
    273280                defaultHtmlFilterRules.elements[ i ] = unprotectReadyOnly;
    274281        }
    275282
    276         var protectAttributeRegex = /<((?:a|area|img|input)\b[\s\S]*?\s)((href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))([^>]*)>/gi,
     283        var protectElementRegex = /<(a|area|img|input)\b([^>]*)>/,
     284                protectAttributeRegex = /\b(href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,
    277285                findSavedSrcRegex = /\sdata-cke-saved-src\s*=/;
    278286
    279287        var protectElementsRegex = /(?:<style(?=[ >])[^>]*>[\s\S]*<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,
     
    286294
    287295        function protectAttributes( html )
    288296        {
    289                 return html.replace( protectAttributeRegex, function( tag, beginning, fullAttr, attrName, end )
    290                         {
    291                                 // We should not rewrite the _cke_saved_src attribute (#5218)
    292                                 if ( attrName == 'src' && findSavedSrcRegex.test( tag ) )
    293                                         return tag;
    294                                 else
    295                                         return '<' + beginning + fullAttr + ' data-cke-saved-' + fullAttr + end + '>';
    296                         });
     297                return html.replace( protectElementRegex, function( element, tag, attributes )
     298                {
     299                        return '<' +  tag + attributes.replace( protectAttributeRegex, function( fullAttr, attrName )
     300                        {
     301                                // We should not rewrite the existed protected attributes, e.g. clipboard content from editor. (#5218)
     302                                if ( attributes.indexOf( 'data-cke-saved-' + attrName ) == -1 )
     303                                        return ' data-cke-saved-' + fullAttr + ' ' + fullAttr;
     304
     305                                return fullAttr;
     306                        }) + '>';
     307                });
    297308        }
    298309
    299310        function protectElements( html )
  • _source/plugins/link/dialogs/link.js

     
    225225                        advAttr( 'advId', 'id' );
    226226                        advAttr( 'advLangDir', 'dir' );
    227227                        advAttr( 'advAccessKey', 'accessKey' );
    228                         advAttr( 'advName', 'name' );
     228
     229                        retval.adv.advName =
     230                                element.data( 'cke-saved-name' )
     231                                || element.getAttribute( 'name' )
     232                                || '';
     233
    229234                        advAttr( 'advLangCode', 'lang' );
    230235                        advAttr( 'advTabIndex', 'tabindex' );
    231236                        advAttr( 'advTitle', 'title' );
     
    12871292                                        advAttr( 'advId', 'id' );
    12881293                                advAttr( 'advLangDir', 'dir' );
    12891294                                advAttr( 'advAccessKey', 'accessKey' );
    1290                                 advAttr( 'advName', 'name' );
     1295
     1296                                if ( data.adv[ 'advName' ] )
     1297                                        attributes['data-cke-saved-name'] = data.adv[ 'advName' ];
     1298                                else
     1299                                        removeAttributes = removeAttributes.concat( [ 'data-cke-saved-name', 'name' ] );
     1300
    12911301                                advAttr( 'advLangCode', 'lang' );
    12921302                                advAttr( 'advTabIndex', 'tabindex' );
    12931303                                advAttr( 'advTitle', 'title' );
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy