Ticket #3731: 3731.patch

File 3731.patch, 3.3 KB (added by Garry Yao, 15 years ago)
  • _source/plugins/styles/plugin.js

     
    213213                        }
    214214
    215215                        // Check if the element can be somehow overriden.
    216                         var override = getOverrides( this )[ element.getName() ] ;
     216                        var overrides = getOverrides( this ),
     217                                override = overrides[ element.getName() ] || overrides[ '*' ];
    217218                        if ( override )
    218219                        {
    219220                                // If no attributes have been defined, remove the element.
     
    681682
    682683                function removeAttrs()
    683684                {
    684                         for ( var attName in attributes )
    685                         {
    686                                 // The 'class' element value must match (#1318).
    687                                 if ( attName == 'class' && element.getAttribute( attName ) != attributes[ attName ] )
    688                                         continue;
    689                                 element.removeAttribute( attName );
    690                         }
     685                        // 'override' attributes is in array form.
     686                        if ( CKEDITOR.tools.isArray( attributes ) )
     687                        {
     688                                for ( var i = 0 ; i < attributes.length ; i++ )
     689                                {
     690                                        attName = attributes[i][0];
     691                                        element.removeAttribute( attName );
     692                                }
     693                        }
     694                        else
     695                                for ( var attName in attributes )
     696                                {
     697                                        // The 'class' element value must match (#1318).
     698                                        if ( attName == 'class' && element.getAttribute(attName) != attributes[ attName ] )
     699                                                continue;
     700                                        element.removeAttribute(attName);
     701                                }
    691702                }
    692703
    693704                // Remove definition attributes/style from the elemnt.
     
    695706                for ( var styleName in styles )
    696707                        element.removeStyle( styleName );
    697708
    698                 // Now remove override styles on the element.
    699                 attributes = overrides[ element.getName() ];
    700                 if( attributes )
     709                // Now remove override attributes on the element.
     710                var override = ( overrides[ element.getName() ] || overrides [ '*' ] );
     711                if( override && override.attributes )
    701712                        removeAttrs();
    702713                removeNoAttribsElement( element );
    703714        }
     
    952963                                var override = definition[i];
    953964                                var elementName;
    954965                                var overrideEl;
    955                                 var attrs;
     966                                var attrs, styles;
    956967
    957968                                // If can be a string with the element name.
    958969                                if ( typeof override == 'string' )
     
    962973                                {
    963974                                        elementName = override.element ? override.element.toLowerCase() : style.element;
    964975                                        attrs = override.attributes;
     976                                        styles = override.styles;
    965977                                }
    966978
    967979                                // We can have more than one override definition for the same
    968980                                // element name, so we attempt to simply append information to
    969981                                // it if it already exists.
    970982                                overrideEl = overrides[ elementName ] || ( overrides[ elementName ] = {} );
    971 
    972983                                if ( attrs )
    973984                                {
    974985                                        // The returning attributes list is an array, because we
     
    980991                                                // Each item in the attributes array is also an array,
    981992                                                // where [0] is the attribute name and [1] is the
    982993                                                // override value.
    983                                                 overrideAttrs.push( [ attName.toLowerCase(), attrs[ attName ] ] );
     994                                                overrideAttrs.push( [ attName.toLowerCase(),attrs[ attName ] ] );
    984995                                        }
    985996                                }
    986                         }
    987                 }
     997                                if ( styles )
     998                                {
     999                                        var overrideAttrs = ( overrideEl.attributes = overrideEl.attributes || new Array() );
     1000                                        overrideAttrs.push( [ 'style', CKEDITOR.style.getStyleText( override ) ] );
     1001                                }
     1002                        }
     1003                }
    9881004
    9891005                return overrides;
    9901006        }
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy