Ticket #2922: 2922.patch
File 2922.patch, 4.7 KB (added by , 15 years ago) |
---|
-
_source/core/editor.js
149 149 // files to get loaded. 150 150 for ( var pluginName in plugins ) 151 151 { 152 var plugin = plugins[ pluginName ], 153 pluginLangs = plugin.lang, 152 var plugin = plugins[ pluginName ]; 153 154 // Bypass those without definiton. 155 if( !plugin ) 156 continue; 157 158 var pluginLangs = plugin.lang, 154 159 pluginPath = CKEDITOR.plugins.getPath( pluginName ), 155 160 lang = null; 156 161 … … 194 199 for ( var i = 0 ; i < pluginsArray.length ; i++ ) 195 200 { 196 201 var plugin = pluginsArray[ i ]; 202 203 // Bypass those without definiton. 204 if( !plugin ) 205 continue; 197 206 198 207 // Uses the first loop to update the language entries also. 199 208 if ( m === 0 && languageCodes[ i ] && plugin.lang ) … … 199 208 if ( m === 0 && languageCodes[ i ] && plugin.lang ) 200 209 CKEDITOR.tools.extend( editor.lang, plugin.lang[ languageCodes[ i ] ] ); 201 210 202 // Call the plugin method (beforeInit and init) .203 if ( plugin[ methods[ m ] ] )211 // Call the plugin method (beforeInit and init) unless it's failed in loading. 212 if ( !plugin._failed && plugin[ methods[ m ] ] ) 204 213 plugin[ methods[ m ] ]( editor ); 205 214 } 206 215 } -
_source/core/resourcemanager.js
206 206 resources[ name ] = this.get( name ); 207 207 } 208 208 209 CKEDITOR.scriptLoader.load( urls, function( completed, failed )209 CKEDITOR.scriptLoader.load( urls, function( completed, faileds ) 210 210 { 211 if ( failed.length )211 if( faileds.length ) 212 212 { 213 throw '[CKEDITOR.resourceManager.load] Resource name "' + urlsNames[ failed[ 0 ] ].join( ',' ) 214 + '" was not found at "' + failed[ 0 ] + '".'; 213 var failedNames = []; 214 for ( var i = 0; i < faileds.length; i++ ) 215 { 216 var names = urlsNames[ faileds[ i ] ]; 217 for ( var j = 0; j < names.length; j++ ) 218 failedNames.push( names[ j ] ); 219 } 215 220 } 216 217 for ( var i = 0 ; i < completed.length ; i++ ) 221 for ( i = 0 ; i < completed.length ; i++ ) 218 222 { 219 223 var nameList = urlsNames[ completed[ i ] ]; 220 for ( varj = 0 ; j < nameList.length ; j++ )224 for ( j = 0 ; j < nameList.length ; j++ ) 221 225 { 222 226 var name = nameList[ j ]; 223 227 resources[ name ] = this.get( name ); … … 226 230 } 227 231 } 228 232 229 callback.call( scope, resources );233 callback.call( scope, resources, failedNames ); 230 234 } 231 235 , this); 232 236 } -
_source/core/plugins.js
24 24 { 25 25 return function( name, callback, scope ) 26 26 { 27 var allPlugins = {} ;27 var allPlugins = {}, failedPlugins = {}; 28 28 29 29 var loadPlugins = function( names ) 30 30 { 31 originalLoad.call( this, names, function( plugins )31 originalLoad.call( this, names, function( plugins , faileds ) 32 32 { 33 // Record failed plugin names on each load. 34 if( faileds && faileds.length ) 35 { 36 for (var i = 0; i < faileds.length; i++ ) 37 { 38 failedPlugins[ faileds [ i ] ] = 1; 39 } 40 } 41 33 42 CKEDITOR.tools.extend( allPlugins, plugins ); 34 43 35 44 var requiredPlugins = []; 36 45 for ( var pluginName in plugins ) 37 46 { … … 40 49 41 50 if ( requires ) 42 51 { 43 for ( vari = 0 ; i < requires.length ; i++ )52 for ( i = 0 ; i < requires.length ; i++ ) 44 53 { 45 54 if ( !allPlugins[ requires[ i ] ] ) 46 55 requiredPlugins.push( requires[ i ] ); … … 56 65 for ( pluginName in allPlugins ) 57 66 { 58 67 plugin = allPlugins[ pluginName ]; 59 if ( plugin.onLoad && !plugin.onLoad._called ) 68 69 // Bypass those without definiton. 70 if( !plugin ) 71 continue; 72 73 if( plugin.requires ) 74 { 75 // Mark those plugins which depend on failed ones as failed also. 76 for ( var j = 0; j< plugin.requires.length; j++ ) 77 if ( plugin.requires[ j ] in failedPlugins ) 78 plugin._failed = true; 79 } 80 81 if ( plugin.onLoad && !plugin.onLoad._called && !plugin._failed ) 60 82 { 61 83 plugin.onLoad(); 62 84 plugin.onLoad._called = 1;