diff --git a/skin.module b/skin.module index a1d1bc96e161cb3bad95b00c9a9af3f8a89dc585..aaaf8297dec0c8bfdef6031bf8186808a99d33fb 100755 --- a/skin.module +++ b/skin.module @@ -83,7 +83,18 @@ function _skin_replace_callback($matches) { $skin_path = file_create_path('skin') . (!$optimized ? '/'. dirname($filepath_minus_query) : ''); if (file_check_directory($skin_path, FILE_CREATE_DIRECTORY) or mkdir($skin_path, 0755, TRUE)) { $filename = $skin_path .'/'. $info['filename'] .'.'. $info['extension']; - $contents = file_get_contents($filepath_minus_query); + // Optimized files have already resolved imports and prefixed paths. + if ($optimized) { + $contents = file_get_contents($filepath_minus_query); + } + // Unoptimized files need to resolve imports and prefix paths. + // See drupal_build_css_cache(). + else { + $contents = drupal_load_stylesheet($filepath_minus_query); + $base = base_path() . dirname($filepath_minus_query) .'/'; + _drupal_build_css_path(NULL, $base); + $contents = preg_replace_callback('/url\([\'"]?(?![a-z]+:|\/+)([^\'")]+)[\'"]?\)/i', '_drupal_build_css_path', $contents); + } if (!file_save_data($contents, $filename, FILE_EXISTS_REPLACE)) { unset($filename); }