Ticket #4463: 4463_3.patch

File 4463_3.patch, 14.7 KB (added by garry.yao, 6 years ago)
  • _source/core/tools.js

     
    9898                },
    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.
    103112                 * @param {Object} target The object to be extended.
     
    220229                } )(),
    221230
    222231                /**
     232                 * Build the HTML snippet of a set of <style>/<link>.
     233                 * @param css {String|Array} Each of which are url (absolute) of a CSS file or
     234                 * a trunk of style text.
     235                 */
     236                buildStyleHtml : function ( css )
     237                {
     238                        css = [].concat( css );
     239                        var item, retval = [];
     240                        for ( var i = 0; i < css.length; i++ )
     241                        {
     242                                item = css[ i ];
     243                                // Is CSS style text ?
     244                                if ( /@import|[{}]/.test(item) )
     245                                        retval.push('<style>' + item + '</style>');
     246                                else
     247                                        retval.push('<link type="text/css" rel=stylesheet href="' + item + '">');
     248                        }
     249                        return retval.join( '' );
     250                },
     251
     252                /**
    223253                 * Replace special HTML characters in a string with their relative HTML
    224254                 * entity values.
    225255                 * @param {String} text The string to be encoded.
  • _source/plugins/wysiwygarea/plugin.js

     
    560560                                                                        editor.config.docType +
    561561                                                                        '<html dir="' + editor.config.contentsLangDirection + '">' +
    562562                                                                        '<head>' +
    563                                                                                 '<link type="text/css" rel="stylesheet" href="' +
    564                                                                                 [].concat( editor.config.contentsCss ).join( '"><link type="text/css" rel="stylesheet" href="' ) +
    565                                                                                 '">' +
     563                                                                                CKEDITOR.tools.buildStyleHtml( editor.config.contentsCss ) +
    566564                                                                                '<style type="text/css" _fcktemp="true">' +
    567565                                                                                        editor._.styles.join( '\n' ) +
    568566                                                                                '</style>'+
  • _source/plugins/menu/plugin.js

     
    132132                                {
    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'
    138138                                                },
  • _source/core/skins.js

     
    2020        var preloaded = {};
    2121        var paths = {};
    2222
    23         var loadedPart = function( skinName, part, callback )
     23        var loadPart = function( skinName, part, callback )
    2424        {
    2525                // Get the skin definition.
    2626                var skinDefinition = loaded[ skinName ];
     
    3333                        }
    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 ] )
    3850                {
     
    4355                                CKEDITOR.imageCacher.load( preload, function()
    4456                                        {
    4557                                                preloaded[ skinName ] = 1;
    46                                                 loadedPart( skinName, part, callback );
     58                                                loadPart( skinName, part, callback );
    4759                                        } );
    4860                                return;
    4961                        }
     
    96108                        // Load the "css" pieces.
    97109                        if ( !cssIsLoaded )
    98110                        {
    99                                 appendSkinPath( part.css );
     111                                var cssPart = part.css;
    100112
    101                                 for ( var c = 0 ; c < part.css.length ; c++ )
    102                                         CKEDITOR.document.appendStyleSheet( part.css[ c ] );
    103 
     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                        }
    106131
     
    119144                        checkIsLoaded();
    120145                }
    121146        };
    122 
     147
    123148        return /** @lends CKEDITOR.skins */ {
    124149
    125150                /**
     
    156181                                skinPath = editor.skinPath;
    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                        {
    171187                                paths[ skinName ] = skinPath;
    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 ];
    178 
     191                                                        var skinDefinition = editor.skin = loaded[ skinName ];
    179192                                                        // Trigger init function if any.
    180193                                                        if ( skinDefinition.init )
    181194                                                                skinDefinition.init( editor );
     195
     196                                                        loadPart( skinName, skinPart, callback );
    182197                                                });
    183198                        }
    184199                }
  • _source/core/editor.js

     
    124124                editor.fireOnce( 'configLoaded' );
    125125
    126126                // Load language file.
    127                 loadLang( editor );
     127                loadSkin( editor );
    128128        };
    129129
    130130        var loadLang = function( editor )
     
    246246
    247247                                                // Load the editor skin.
    248248                                                editor.fire( 'pluginsLoaded' );
    249                                                 loadSkin( editor );
     249                                                loadTheme( editor );
    250250                                        });
    251251                        });
    252252        };
     
    255255        {
    256256                CKEDITOR.skins.load( editor, 'editor', function()
    257257                        {
    258                                 loadTheme( editor );
     258                                loadLang( editor );
    259259                        });
    260260        };
    261261
  • _source/core/dom/document.js

     
    5252                        }
    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                {
    5772                        var element = new CKEDITOR.dom.element( name, this );
  • _source/plugins/stylescombo/plugin.js

     
    2626
    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                                        },
    3232
  • _source/plugins/panel/plugin.js

     
    160160                                                // It looks strange, but for FF2, the styles must go
    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();
    166166
  • _source/plugins/preview/plugin.js

     
    3737                                        '<head>' +
    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() +
    4543                                        '</body></html>';
  • _source/plugins/dialog/plugin.js

     
    77 * @fileOverview The floating dialog plugin.
    88 */
    99
    10 CKEDITOR.plugins.add( 'dialog',
    11         {
    12                 requires : [ 'dialogui' ]
    13         });
    14 
    1510/**
    1611 * No resize for this dialog.
    1712 * @constant
     
    7368                return null;
    7469        }
    7570
    76         // Stores dialog related data from skin definitions. e.g. margin sizes.
    77         var skinData = {};
    78 
    7971        /**
    8072         * This is the base class for runtime dialog objects. An instance of this
    8173         * class represents a single named dialog for a single editor instance.
     
    14371429                        element = dialog.getElement().getFirst(),
    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' )
    14431435                        magnetDistance = 20;
     
    15151507                        minWidth = definition.minWidth || 0,
    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 )
    15211513                {
     
    26722664                        }
    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         } )();
    2686 })();
     2667})();
    26872668
    26882669// Extend the CKEDITOR.editor class with dialog specific functions.
    26892670CKEDITOR.tools.extend( CKEDITOR.editor.prototype,
     
    27362717                }
    27372718        });
    27382719
     2720CKEDITOR.plugins.add( 'dialog',
     2721        {
     2722                requires : [ 'dialogui' ]
     2723        });
     2724
    27392725// Dialog related configurations.
    27402726
    27412727/**
  • _source/plugins/font/plugin.js

     
    3636
    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                                },
    4242
  • _source/plugins/colorbutton/plugin.js

     
    3131
    3232                                        panel :
    3333                                        {
    34                                                 css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ]
     34                                                css : editor.skin.editor.css
    3535                                        },
    3636
    3737                                        onBlock : function( panel, blockName )
  • _source/core/resourcemanager.js

     
    8686                if ( this.registered[ name ] )
    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
    9293        /**
  • _source/plugins/format/plugin.js

     
    3333
    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                                },
    3939
  • _source/skins/kama/skin.js

     
    203203        };
    204204})() );
    205205
    206 if ( CKEDITOR.dialog )
     206CKEDITOR.on( 'dialogPluginReady', function()
    207207{
    208208        CKEDITOR.dialog.on( 'resize', function( evt )
    209209                {
     
    258258                                        el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
    259259                                },
    260260                                100 );
    261                 });
    262 }
     261                } );
     262} );
    263263
    264264/**
    265265 * The base user interface color to be used by the editor. Not all skins are
  • _source/skins/v2/skin.js

     
    2323        };
    2424})() );
    2525
    26 if ( CKEDITOR.dialog )
     26CKEDITOR.on( 'dialogPluginReady', function()
    2727{
    2828        CKEDITOR.dialog.on( 'resize', function( evt )
    2929                {
     
    6969                                        el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
    7070                                },
    7171                                100 );
    72                 });
    73 }
     72                } );
     73} );
  • _source/skins/office2003/skin.js

     
    2323        };
    2424})() );
    2525
    26 if ( CKEDITOR.dialog )
     26CKEDITOR.on( 'dialogPluginReady', function()
    2727{
    2828        CKEDITOR.dialog.on( 'resize', function( evt )
    2929                {
     
    7373                        // Ensure size is correct for RTL mode. (#4003)
    7474                        if ( evt.editor.lang.dir == 'rtl' )
    7575                                setTimeout( fixSize, 1000 );
    76                 });
    77 }
     76                } );
     77} );
© 2003 – 2015 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy