Ticket #9281: 9281.patch

File 9281.patch, 4.3 KB (added by Garry Yao, 12 years ago)
  • _source/plugins/dialogadvtab/plugin.js

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    145145                                                {
    146146                                                        var styles = this.getValue();
    147147
    148                                                         // Remove the current value.
    149                                                         if ( styles )
    150                                                         {
    151                                                                 styles = styles
    152                                                                         .replace( new RegExp( '\\s*' + name + '\s*:[^;]*(?:$|;\s*)', 'i' ), '' )
    153                                                                         .replace( /^[;\s]+/, '' )
    154                                                                         .replace( /\s+$/, '' );
    155                                                         }
     148                                                        var tmp = editor.document.createElement( 'span' );
     149                                                        tmp.setAttribute( 'style', styles );
     150                                                        tmp.setStyle( name, value );
     151                                                        styles = CKEDITOR.tools.normalizeCssText( tmp.getAttribute( 'style' ) );
    156152
    157                                                         if ( value )
    158                                                         {
    159                                                                 styles && !(/;\s*$/).test( styles ) && ( styles += '; ' );
    160                                                                 styles += name + ': ' + value;
    161                                                         }
    162 
    163153                                                        this.setValue( styles, 1 );
    164 
    165154                                                },
    166155
    167156                                                setup : setupAdvParams,
  • _source/core/tools.js

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    756756                genKey : function()
    757757                {
    758758                        return Array.prototype.slice.call( arguments ).join( '-' );
    759                 }
     759                },
     760
     761                /**
     762                 * Try to avoid differences in the style attribute.
     763                 *
     764                 * @param {String} styleText The style data to be normalized.
     765                 * @param {Boolean} [nativeNormalize=false] Parse the data using the browser.
     766                 * @returns {String} The normalized value.
     767                 */
     768                normalizeCssText: function( styleText, nativeNormalize ) {
     769                        var props = [],
     770                                name,
     771                                parsedProps = CKEDITOR.tools.parseCssText( styleText, true, nativeNormalize );
     772
     773                        for ( name in parsedProps )
     774                                props.push( name + ':' + parsedProps[ name ] );
     775
     776                        props.sort();
     777
     778                        return props.length ? ( props.join( ';' ) + ';' ) : '';
     779                },
     780
     781                /**
     782                 * Find and convert <code>rgb(x,x,x)</code> colors definition to hexadecimal notation.
     783                 * @param {String} styleText The style data (or just a string containing rgb colors) to be converted.
     784                 * @returns {String} The style data with rgb colors converted to hexadecimal equivalents.
     785                 */
     786                convertRgbToHex: function( styleText ) {
     787                        return styleText.replace( /(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi, function( match, red, green, blue ) {
     788                                var color = [ red, green, blue ];
     789                                // Add padding zeros if the hex value is less than 0x10.
     790                                for ( var i = 0; i < 3; i++ )
     791                                        color[ i ] = ( '0' + parseInt( color[ i ], 10 ).toString( 16 ) ).slice( -2 );
     792                                return '#' + color.join( '' );
     793                        });
     794                },
     795
     796                /**
     797                 * Turn inline style text properties into one hash.
     798                 *
     799                 * @param {String} styleText The style data to be parsed.
     800                 * @param {Boolean} [normalize=false] Normalize properties and values
     801                 * (e.g. trim spaces, convert to lower case).
     802                 * @param {Boolean} [nativeNormalize=false] Parse the data using the browser.
     803                 * @returns {String} The object containing parsed properties.
     804                 */
     805                parseCssText: function( styleText, normalize, nativeNormalize ) {
     806                        var retval = {};
     807
     808                        if ( nativeNormalize ) {
     809                                // Injects the style in a temporary span object, so the browser parses it,
     810                                // retrieving its final format.
     811                                var temp = new CKEDITOR.dom.element( 'span' );
     812                                temp.setAttribute( 'style', styleText );
     813                                styleText = CKEDITOR.tools.convertRgbToHex( temp.getAttribute( 'style' ) || '' );
     814                        }
     815
     816                        // IE will leave a single semicolon when failed to parse the style text. (#3891)
     817                        if ( !styleText || styleText == ';' )
     818                                return retval;
     819
     820                        styleText.replace( /&quot;/g, '"' ).replace( /\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function( match, name, value ) {
     821                                if ( normalize ) {
     822                                        name = name.toLowerCase();
     823                                        // Normalize font-family property, ignore quotes and being case insensitive. (#7322)
     824                                        // http://www.w3.org/TR/css3-fonts/#font-family-the-font-family-property
     825                                        if ( name == 'font-family' )
     826                                                value = value.toLowerCase().replace( /["']/g, '' ).replace( /\s*,\s*/g, ',' );
     827                                        value = CKEDITOR.tools.trim( value );
     828                                }
     829
     830                                retval[ name ] = value;
     831                        });
     832                        return retval;
     833                }
     834
    760835        };
    761836})();
    762837
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy