Changeset 4470


Ignore:
Timestamp:
11/12/09 16:14:03 (5 years ago)
Author:
garry.yao
Message:

Re-fixing #4463 : Added inline CSS support in all places where custom stylesheet could apply.

Location:
CKEditor/branches/versions/3.1.x
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/branches/versions/3.1.x/CHANGES.html

    r4466 r4470  
    6464                <li><a href="http://dev.fckeditor.net/ticket/4219">#4219</a> : Added fallback mechanism for config.language.</li> 
    6565                <li><a href="http://dev.fckeditor.net/ticket/4194">#4194</a> : Added support for using multiple css style sheets within the editor.</li> 
     66                <li><a href="http://dev.fckeditor.net/ticket/4463">#4463</a> : Added inline CSS support in all places where custom stylesheet could apply.</li> 
    6667        </ul> 
    6768        <p> 
  • CKEditor/branches/versions/3.1.x/_source/core/dom/document.js

    r4466 r4470  
    5353                }, 
    5454 
     55                appendStyleText : function( cssStyleText ) 
     56                { 
     57                        if ( this.$.createStyleSheet ) 
     58                        { 
     59                                var styleSheet = this.$.createStyleSheet( "" ); 
     60                                styleSheet.cssText = cssStyleText ; 
     61                        } 
     62                        else 
     63                        { 
     64                                var style = new CKEDITOR.dom.element( 'style', this ); 
     65                                style.append( new CKEDITOR.dom.text( cssStyleText, this ) ); 
     66                                this.getHead().append( style ); 
     67                        } 
     68                }, 
     69 
    5570                createElement : function( name, attribsAndStyles ) 
    5671                { 
  • CKEditor/branches/versions/3.1.x/_source/core/editor.js

    r4466 r4470  
    125125 
    126126                // Load language file. 
    127                 loadLang( editor ); 
     127                loadSkin( editor ); 
    128128        }; 
    129129 
     
    247247                                                // Load the editor skin. 
    248248                                                editor.fire( 'pluginsLoaded' ); 
    249                                                 loadSkin( editor ); 
     249                                                loadTheme( editor ); 
    250250                                        }); 
    251251                        }); 
     
    256256                CKEDITOR.skins.load( editor, 'editor', function() 
    257257                        { 
    258                                 loadTheme( editor ); 
     258                                loadLang( editor ); 
    259259                        }); 
    260260        }; 
  • CKEditor/branches/versions/3.1.x/_source/core/resourcemanager.js

    r4466 r4470  
    8787                        throw '[CKEDITOR.resourceManager.add] The resource name "' + name + '" is already registered.'; 
    8888 
    89                 this.registered[ name ] = definition || {}; 
     89                CKEDITOR.fire( name + CKEDITOR.tools.capitalize( this.fileName ) + 'Ready', 
     90                                this.registered[ name ] = definition || {} ); 
    9091        }, 
    9192 
  • CKEditor/branches/versions/3.1.x/_source/core/skins.js

    r4466 r4470  
    2121        var paths = {}; 
    2222 
    23         var loadedPart = function( skinName, part, callback ) 
     23        var loadPart = function( skinName, part, callback ) 
    2424        { 
    2525                // Get the skin definition. 
     
    3434                }; 
    3535 
     36                function fixCSSTextRelativePath( cssStyleText, baseUrl ) 
     37                { 
     38                        return cssStyleText.replace( /url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g, 
     39                                        function( match, opener, path, closer ) 
     40                                        { 
     41                                                if ( /^\/|^\w?:/.test( path ) ) 
     42                                                        return match; 
     43                                                else 
     44                                                        return 'url(' + baseUrl + opener +  path + closer + ')'; 
     45                                        } ); 
     46                } 
     47                 
    3648                // Check if we need to preload images from it. 
    3749                if ( !preloaded[ skinName ] ) 
     
    4456                                        { 
    4557                                                preloaded[ skinName ] = 1; 
    46                                                 loadedPart( skinName, part, callback ); 
     58                                                loadPart( skinName, part, callback ); 
    4759                                        } ); 
    4860                                return; 
     
    97109                        if ( !cssIsLoaded ) 
    98110                        { 
    99                                 appendSkinPath( part.css ); 
    100  
    101                                 for ( var c = 0 ; c < part.css.length ; c++ ) 
    102                                         CKEDITOR.document.appendStyleSheet( part.css[ c ] ); 
    103  
     111                                var cssPart = part.css; 
     112 
     113                                if ( CKEDITOR.tools.isArray( cssPart ) ) 
     114                                { 
     115                                        appendSkinPath( cssPart ); 
     116                                        for ( var c = 0 ; c < cssPart.length ; c++ ) 
     117                                                CKEDITOR.document.appendStyleSheet( cssPart[ c ] ); 
     118                                } 
     119                                else 
     120                                { 
     121                                        cssPart = fixCSSTextRelativePath( 
     122                                                                cssPart, CKEDITOR.getUrl( paths[ skinName ] ) ); 
     123                                        // Processing Inline CSS part. 
     124                                        CKEDITOR.document.appendStyleText( cssPart ); 
     125                                } 
     126 
     127                                part.css = cssPart; 
     128                                 
    104129                                cssIsLoaded = 1; 
    105130                        } 
     
    157182 
    158183                        if ( loaded[ skinName ] ) 
    159                         { 
    160                                 loadedPart( skinName, skinPart, callback ); 
    161  
    162                                 // Get the skin definition. 
    163                                 var skinDefinition = loaded[ skinName ]; 
    164  
    165                                 // Trigger init function if any. 
    166                                 if ( skinDefinition.init ) 
    167                                         skinDefinition.init( editor ); 
    168                         } 
     184                                loadPart( skinName, skinPart, callback ); 
    169185                        else 
    170186                        { 
     
    172188                                CKEDITOR.scriptLoader.load( skinPath + 'skin.js', function() 
    173189                                                { 
    174                                                         loadedPart( skinName, skinPart, callback ); 
    175  
    176190                                                        // Get the skin definition. 
    177                                                         var skinDefinition = loaded[ skinName ]; 
     191                                                        var skinDefinition = editor.skin = loaded[ skinName ]; 
    178192 
    179193                                                        // Trigger init function if any. 
    180194                                                        if ( skinDefinition.init ) 
    181195                                                                skinDefinition.init( editor ); 
     196 
     197                                                         loadPart( skinName, skinPart, callback ); 
    182198                                                }); 
    183199                        } 
  • CKEditor/branches/versions/3.1.x/_source/core/tools.js

    r4466 r4470  
    9999 
    100100                /** 
     101                 * Turn the first letter of string to upper-case. 
     102                 * @param {String} str 
     103                 */ 
     104                capitalize: function( str ) 
     105                { 
     106                        return str.charAt( 0 ).toUpperCase() + str.substring( 1 ).toLowerCase(); 
     107                }, 
     108 
     109                /** 
    101110                 * Copy the properties from one object to another. By default, properties 
    102111                 * already present in the target object <strong>are not</strong> overwritten. 
     
    230239 
    231240                /** 
     241                 * Build the HTML snippet of a set of <style>/<link>. 
     242                 * @param css {String|Array} Each of which are url (absolute) of a CSS file or 
     243                 * a trunk of style text. 
     244                 */ 
     245                buildStyleHtml : function ( css ) 
     246                { 
     247                        css = [].concat( css ); 
     248                        var item, retval = []; 
     249                        for ( var i = 0; i < css.length; i++ ) 
     250                        { 
     251                                item = css[ i ]; 
     252                                // Is CSS style text ? 
     253                                if ( /@import|[{}]/.test(item) ) 
     254                                        retval.push('<style>' + item + '</style>'); 
     255                                else 
     256                                        retval.push('<link type="text/css" rel=stylesheet href="' + item + '">'); 
     257                        } 
     258                        return retval.join( '' ); 
     259                }, 
     260 
     261                /** 
    232262                 * Replace special HTML characters in a string with their relative HTML 
    233263                 * entity values. 
  • CKEditor/branches/versions/3.1.x/_source/plugins/colorbutton/plugin.js

    r4466 r4470  
    3232                                        panel : 
    3333                                        { 
    34                                                 css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ] 
     34                                                css : editor.skin.editor.css 
    3535                                        }, 
    3636 
  • CKEditor/branches/versions/3.1.x/_source/plugins/dialog/plugin.js

    r4466 r4470  
    77 * @fileOverview The floating dialog plugin. 
    88 */ 
    9  
    10 CKEDITOR.plugins.add( 'dialog', 
    11         { 
    12                 requires : [ 'dialogui' ] 
    13         }); 
    149 
    1510/** 
     
    7368                return null; 
    7469        } 
    75  
    76         // Stores dialog related data from skin definitions. e.g. margin sizes. 
    77         var skinData = {}; 
    7870 
    7971        /** 
     
    14381430                        editor = dialog.getParentEditor(), 
    14391431                        magnetDistance = editor.config.dialog_magnetDistance, 
    1440                         margins = skinData[ editor.skinName ].margins || [ 0, 0, 0, 0 ]; 
     1432                        margins = editor.skin.margins || [ 0, 0, 0, 0 ]; 
    14411433 
    14421434                if ( typeof magnetDistance == 'undefined' ) 
     
    15161508                        minHeight = definition.minHeight || 0, 
    15171509                        resizable = definition.resizable, 
    1518                         margins = skinData[ dialog.getParentEditor().skinName ].margins || [ 0, 0, 0, 0 ]; 
     1510                        margins = dialog.getParentEditor().skin.margins || [ 0, 0, 0, 0 ]; 
    15191511 
    15201512                function topSizer( coords, dy ) 
     
    26732665                }; 
    26742666        })(); 
    2675  
    2676         // Grab the margin data from skin definition and store it away. 
    2677         CKEDITOR.skins.add = ( function() 
    2678         { 
    2679                 var original = CKEDITOR.skins.add; 
    2680                 return function( skinName, skinDefinition ) 
    2681                 { 
    2682                         skinData[ skinName ] = { margins : skinDefinition.margins }; 
    2683                         return original.apply( this, arguments ); 
    2684                 }; 
    2685         } )(); 
    26862667})(); 
    26872668 
     
    27352716                        return null; 
    27362717                } 
     2718        }); 
     2719 
     2720CKEDITOR.plugins.add( 'dialog', 
     2721        { 
     2722                requires : [ 'dialogui' ] 
    27372723        }); 
    27382724 
  • CKEditor/branches/versions/3.1.x/_source/plugins/font/plugin.js

    r4466 r4470  
    3737                                panel : 
    3838                                { 
    39                                         css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ].concat( config.contentsCss ), 
     39                                        css : editor.skin.editor.css.concat( config.contentsCss ), 
    4040                                        voiceLabel : lang.panelVoiceLabel 
    4141                                }, 
  • CKEditor/branches/versions/3.1.x/_source/plugins/format/plugin.js

    r4466 r4470  
    3434                                panel : 
    3535                                { 
    36                                         css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ].concat( config.contentsCss ), 
     36                                        css : editor.skin.editor.css.concat( config.contentsCss ), 
    3737                                        voiceLabel : lang.panelVoiceLabel 
    3838                                }, 
  • CKEditor/branches/versions/3.1.x/_source/plugins/menu/plugin.js

    r4466 r4470  
    133133                                        panel = this._.panel = new CKEDITOR.ui.floatPanel( this.editor, CKEDITOR.document.getBody(), 
    134134                                                { 
    135                                                         css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ], 
     135                                                        css : editor.skin.editor.css, 
    136136                                                        level : this._.level - 1, 
    137137                                                        className : editor.skinClass + ' cke_contextmenu' 
  • CKEditor/branches/versions/3.1.x/_source/plugins/panel/plugin.js

    r4466 r4470  
    161161                                                // after <body>, so it (body) becames immediatelly 
    162162                                                // available. (#3031) 
    163                                                 '<link type="text/css" rel=stylesheet href="' + this.css.join( '"><link type="text/css" rel="stylesheet" href="' ) + '">' + 
     163                                                CKEDITOR.tools.buildStyleHtml( this.css ) + 
    164164                                        '<\/html>' ); 
    165165                                doc.$.close(); 
  • CKEditor/branches/versions/3.1.x/_source/plugins/preview/plugin.js

    r4466 r4470  
    3838                                        baseTag + 
    3939                                        '<title>' + editor.lang.preview + '</title>' + 
    40                                         '<link type="text/css" rel="stylesheet" href="' + 
    41                                         [].concat( editor.config.contentsCss ).join( '"><link type="text/css" rel="stylesheet" href="' ) + 
    42                                         '">' + 
     40                                        CKEDITOR.tools.buildStyleHtml( editor.config.contentsCss ) + 
    4341                                        '</head>' + bodyHtml + 
    4442                                        editor.getData() + 
  • CKEditor/branches/versions/3.1.x/_source/plugins/stylescombo/plugin.js

    r4466 r4470  
    2727                                        panel : 
    2828                                        { 
    29                                                 css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ].concat( config.contentsCss ), 
     29                                                css : editor.skin.editor.css.concat( config.contentsCss ), 
    3030                                                voiceLabel : lang.panelVoiceLabel 
    3131                                        }, 
  • CKEditor/branches/versions/3.1.x/_source/plugins/wysiwygarea/plugin.js

    r4466 r4470  
    564564                                                                        '<html dir="' + editor.config.contentsLangDirection + '">' + 
    565565                                                                        '<head>' + 
    566                                                                                 '<link type="text/css" rel="stylesheet" href="' + 
    567                                                                                 [].concat( editor.config.contentsCss ).join( '"><link type="text/css" rel="stylesheet" href="' ) + 
    568                                                                                 '">' + 
     566                                                                                CKEDITOR.tools.buildStyleHtml( editor.config.contentsCss ) + 
    569567                                                                                '<style type="text/css" _fcktemp="true">' + 
    570568                                                                                        editor._.styles.join( '\n' ) + 
  • CKEditor/branches/versions/3.1.x/_source/skins/kama/skin.js

    r4466 r4470  
    204204})() ); 
    205205 
    206 if ( CKEDITOR.dialog ) 
     206CKEDITOR.on( 'dialogPluginReady', function() 
    207207{ 
    208208        CKEDITOR.dialog.on( 'resize', function( evt ) 
     
    259259                                }, 
    260260                                100 ); 
    261                 }); 
    262 } 
     261                } ); 
     262} ); 
    263263 
    264264/** 
  • CKEditor/branches/versions/3.1.x/_source/skins/office2003/skin.js

    r4466 r4470  
    2424})() ); 
    2525 
    26 if ( CKEDITOR.dialog ) 
     26CKEDITOR.on( 'dialogPluginReady', function() 
    2727{ 
    2828        CKEDITOR.dialog.on( 'resize', function( evt ) 
     
    7474                        if ( evt.editor.lang.dir == 'rtl' ) 
    7575                                setTimeout( fixSize, 1000 ); 
    76                 }); 
    77 } 
     76                } ); 
     77} ); 
  • CKEditor/branches/versions/3.1.x/_source/skins/v2/skin.js

    r4466 r4470  
    2424})() ); 
    2525 
    26 if ( CKEDITOR.dialog ) 
     26CKEDITOR.on( 'dialogPluginReady', function() 
    2727{ 
    2828        CKEDITOR.dialog.on( 'resize', function( evt ) 
     
    7070                                }, 
    7171                                100 ); 
    72                 }); 
    73 } 
     72                } ); 
     73} ); 
  • CKEditor/branches/versions/3.1.x/config.js

    r4036 r4470  
    1 /* 
     1/* 
    22Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved. 
    33For licensing, see LICENSE.html or http://ckeditor.com/license 
     
    99        // config.language = 'fr'; 
    1010        // config.uiColor = '#AADC6E'; 
     11        config.contentsCss = 'body { background-color:#fff; color:#222; font-family:Arial, Verdana, sans-serif; font-size:12px; } html { _overflow-y:scroll; } img:-moz-broken { -moz-force-broken-image-icon:1; height:24px; width:24px; } img,input,textarea { cursor:default; }'; 
    1112}; 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy