Ticket #3731: 3731.patch
File 3731.patch, 3.3 KB (added by , 15 years ago) |
---|
-
_source/plugins/styles/plugin.js
213 213 } 214 214 215 215 // 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[ '*' ]; 217 218 if ( override ) 218 219 { 219 220 // If no attributes have been defined, remove the element. … … 681 682 682 683 function removeAttrs() 683 684 { 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 } 691 702 } 692 703 693 704 // Remove definition attributes/style from the elemnt. … … 695 706 for ( var styleName in styles ) 696 707 element.removeStyle( styleName ); 697 708 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 ) 701 712 removeAttrs(); 702 713 removeNoAttribsElement( element ); 703 714 } … … 952 963 var override = definition[i]; 953 964 var elementName; 954 965 var overrideEl; 955 var attrs ;966 var attrs, styles; 956 967 957 968 // If can be a string with the element name. 958 969 if ( typeof override == 'string' ) … … 962 973 { 963 974 elementName = override.element ? override.element.toLowerCase() : style.element; 964 975 attrs = override.attributes; 976 styles = override.styles; 965 977 } 966 978 967 979 // We can have more than one override definition for the same 968 980 // element name, so we attempt to simply append information to 969 981 // it if it already exists. 970 982 overrideEl = overrides[ elementName ] || ( overrides[ elementName ] = {} ); 971 972 983 if ( attrs ) 973 984 { 974 985 // The returning attributes list is an array, because we … … 980 991 // Each item in the attributes array is also an array, 981 992 // where [0] is the attribute name and [1] is the 982 993 // override value. 983 overrideAttrs.push( [ attName.toLowerCase(), 994 overrideAttrs.push( [ attName.toLowerCase(),attrs[ attName ] ] ); 984 995 } 985 996 } 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 } 988 1004 989 1005 return overrides; 990 1006 }