? generate-content.php ? generate-taxonomy.php ? modules/devel Index: includes/common.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/common.inc,v retrieving revision 1.546 diff -u -F^f -r1.546 common.inc --- includes/common.inc 10 Jul 2006 08:12:31 -0000 1.546 +++ includes/common.inc 16 Jul 2006 11:31:04 -0000 @@ -115,7 +115,7 @@ function drupal_set_html_head($data = NU */ function drupal_get_html_head() { $output = "\n"; - $output .= theme('stylesheet_import', base_path() .'misc/drupal.css'); + drupal_add_css('misc/drupal.css', 'core'); return $output . drupal_set_html_head(); } Index: includes/theme.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/theme.inc,v retrieving revision 1.303 diff -u -F^f -r1.303 theme.inc --- includes/theme.inc 13 Jul 2006 13:11:36 -0000 1.303 +++ includes/theme.inc 16 Jul 2006 11:31:05 -0000 @@ -53,19 +53,19 @@ function init_theme() { // If we're using a style, load its appropriate theme, // which is stored in the style's description field. - // Also load the stylesheet using theme_add_style(). + // Also add the stylesheet using drupal_add_css(). // Otherwise, load the theme. if (strpos($themes[$theme]->filename, '.css')) { // File is a style; loads its CSS. // Set theme to its template/theme - theme_add_style($themes[$theme]->filename); + drupal_add_css($themes[$theme]->filename); $theme = basename(dirname($themes[$theme]->description)); } else { // File is a template/theme // Load its CSS, if it exists if (file_exists($stylesheet = dirname($themes[$theme]->filename) .'/style.css')) { - theme_add_style($stylesheet); + drupal_add_css($stylesheet); } } @@ -325,30 +325,39 @@ function theme_get_setting($setting_name } /** - * Add a theme stylesheet to be included later. This is handled separately from - * drupal_set_html_head() to enforce the correct CSS cascading order. + * @param $path + * The path to the CSS file relative to the base_path(), e.g., /modules/devel/devel.css + * @param $type + * The type of stylesheet that is being added. Types are: core, module, and theme + * @param $media + * The media type for the stylesheet, e.g., all, print, screen + * @return + * An array of CSS files */ -function theme_add_style($path = '', $media = 'all') { - static $styles = array(); +function drupal_add_css($path = NULL, $type = 'theme', $media = 'all') { + static $css = array('core' => array(), 'module' => array(), 'theme' => array()); - if ($path && !isset($styles["$media:$path"])) { - $style = new stdClass(); - $style->path = base_path() . $path; - $style->media = $media; - $styles["$media:$path"] = $style; + if (!is_null($path)) { + $css[$type][$path] = theme('stylesheet_import', base_path() . $path, $media); } - return $styles; -} + + return $css; +} /** - * Return the HTML for a theme's stylesheets. + * @param $css + * An array of CSS files + * @return + * A string of XHTML CSS tags */ -function theme_get_styles() { - $output = ''; - foreach (theme_add_style() as $style) { - $output .= theme('stylesheet_import', $style->path, $style->media); - } - return $output; +function drupal_get_css($css) { + // load the CSS in order, with core CSS first, then module CSS, then theme CSS + // this ensures proper cascading of styles for easy overriding + $output = implode($css['core'], "\n"); + $output .= count($css['module']) > 0 ? "\n". implode($css['module'], "\n") : ''; + $output .= count($css['theme']) > 0 ? "\n". implode($css['theme'], "\n") : ''; + + return $output ."\n"; } /** @@ -392,7 +401,7 @@ function theme_page($content) { $output .= '
'; $output .= '