- Patch #258846 by casey, Gribnif: CSS aggregation fails to parse some url()'s.

merge-requests/26/head
Dries Buytaert 2010-08-03 02:14:50 +00:00
parent 79caf33568
commit 98ef4e3e4a
1 changed files with 3 additions and 3 deletions

View File

@ -3195,7 +3195,7 @@ function drupal_build_css_cache($css) {
$base = base_path() . dirname($stylesheet['data']) . '/'; $base = base_path() . dirname($stylesheet['data']) . '/';
_drupal_build_css_path(NULL, $base); _drupal_build_css_path(NULL, $base);
// Prefix all paths within this CSS file, ignoring external and absolute paths. // Prefix all paths within this CSS file, ignoring external and absolute paths.
$data .= preg_replace_callback('/url\([\'"]?(?![a-z]+:|\/+)([^\'")]+)[\'"]?\)/i', '_drupal_build_css_path', $contents); $data .= preg_replace_callback('/url\(\s*[\'"]?(?![a-z]+:|\/+)([^\'")]+)[\'"]?\s*\)/i', '_drupal_build_css_path', $contents);
} }
} }
@ -3327,7 +3327,7 @@ function drupal_load_stylesheet_content($contents, $optimize = FALSE) {
// Replaces @import commands with the actual stylesheet content. // Replaces @import commands with the actual stylesheet content.
// This happens recursively but omits external files. // This happens recursively but omits external files.
$contents = preg_replace_callback('/@import\s*(?:url\()?[\'"]?(?![a-z]+:)([^\'"\()]+)[\'"]?\)?;/', '_drupal_load_stylesheet', $contents); $contents = preg_replace_callback('/@import\s*(?:url\(\s*)?[\'"]?(?![a-z]+:)([^\'"\()]+)[\'"]?\s*\)?\s*;/', '_drupal_load_stylesheet', $contents);
return $contents; return $contents;
} }
@ -3351,7 +3351,7 @@ function _drupal_load_stylesheet($matches) {
// Alter all internal url() paths. Leave external paths alone. We don't need // Alter all internal url() paths. Leave external paths alone. We don't need
// to normalize absolute paths here (i.e. remove folder/... segments) because // to normalize absolute paths here (i.e. remove folder/... segments) because
// that will be done later. // that will be done later.
return preg_replace('/url\s*\(([\'"]?)(?![a-z]+:|\/+)/i', 'url(\1'. $directory, $file); return preg_replace('/url\(\s*([\'"]?)(?![a-z]+:|\/+)/i', 'url(\1'. $directory, $file);
} }
/** /**