/*\r
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\r
var preloaded = {};\r
var paths = {};\r
\r
- var loadedPart = function( skinName, part, callback )\r
+ var loadPart = function( editor, skinName, part, callback )\r
{\r
// Get the skin definition.\r
var skinDefinition = loaded[ skinName ];\r
\r
+ if ( !editor.skin )\r
+ {\r
+ editor.skin = skinDefinition;\r
+\r
+ // Trigger init function if any.\r
+ if ( skinDefinition.init )\r
+ skinDefinition.init( editor );\r
+ }\r
+\r
var appendSkinPath = function( fileNames )\r
{\r
for ( var n = 0 ; n < fileNames.length ; n++ )\r
}\r
};\r
\r
+ function fixCSSTextRelativePath( cssStyleText, baseUrl )\r
+ {\r
+ return cssStyleText.replace( /url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,\r
+ function( match, opener, path, closer )\r
+ {\r
+ if ( /^\/|^\w?:/.test( path ) )\r
+ return match;\r
+ else\r
+ return 'url(' + baseUrl + opener + path + closer + ')';\r
+ } );\r
+ }\r
+\r
// Check if we need to preload images from it.\r
if ( !preloaded[ skinName ] )\r
{\r
CKEDITOR.imageCacher.load( preload, function()\r
{\r
preloaded[ skinName ] = 1;\r
- loadedPart( skinName, part, callback );\r
+ loadPart( editor, skinName, part, callback );\r
} );\r
return;\r
}\r
// Load the "css" pieces.\r
if ( !cssIsLoaded )\r
{\r
- appendSkinPath( part.css );\r
+ var cssPart = part.css;\r
+\r
+ if ( CKEDITOR.tools.isArray( cssPart ) )\r
+ {\r
+ appendSkinPath( cssPart );\r
+ for ( var c = 0 ; c < cssPart.length ; c++ )\r
+ CKEDITOR.document.appendStyleSheet( cssPart[ c ] );\r
+ }\r
+ else\r
+ {\r
+ cssPart = fixCSSTextRelativePath(\r
+ cssPart, CKEDITOR.getUrl( paths[ skinName ] ) );\r
+ // Processing Inline CSS part.\r
+ CKEDITOR.document.appendStyleText( cssPart );\r
+ }\r
\r
- for ( var c = 0 ; c < part.css.length ; c++ )\r
- CKEDITOR.document.appendStyleSheet( part.css[ c ] );\r
+ part.css = cssPart;\r
\r
cssIsLoaded = 1;\r
}\r
skinDefinition.skinPath = paths[ skinName ]\r
|| ( paths[ skinName ] =\r
CKEDITOR.getUrl(\r
+ '_source/' + // @Packager.RemoveLine\r
'skins/' + skinName + '/' ) );\r
},\r
\r
skinPath = editor.skinPath;\r
\r
if ( loaded[ skinName ] )\r
- {\r
- loadedPart( skinName, skinPart, callback );\r
-\r
- // Get the skin definition.\r
- var skinDefinition = loaded[ skinName ];\r
-\r
- // Trigger init function if any.\r
- if ( skinDefinition.init )\r
- skinDefinition.init( editor );\r
- }\r
+ loadPart( editor, skinName, skinPart, callback );\r
else\r
{\r
paths[ skinName ] = skinPath;\r
- CKEDITOR.scriptLoader.load( skinPath + 'skin.js', function()\r
+ CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( skinPath + 'skin.js' ), function()\r
{\r
- loadedPart( skinName, skinPart, callback );\r
-\r
- // Get the skin definition.\r
- var skinDefinition = loaded[ skinName ];\r
-\r
- // Trigger init function if any.\r
- if ( skinDefinition.init )\r
- skinDefinition.init( editor );\r
+ loadPart( editor, skinName, skinPart, callback );\r
});\r
}\r
}\r