Index: modules/system.module =================================================================== RCS file: /cvs/drupal/drupal/modules/system.module,v retrieving revision 1.187 diff -u -F^f -r1.187 system.module --- modules/system.module 24 Nov 2004 22:44:01 -0000 1.187 +++ modules/system.module 25 Nov 2004 04:30:14 -0000 @@ -309,12 +309,13 @@ function system_theme_data() { // Remove all theme engines from the system table db_query("DELETE FROM {system} WHERE type = 'theme_engine'"); - // Add templates to the site listing foreach ($engines as $engine) { + // Insert theme engine into system table drupal_get_filename('theme_engine', $engine->name, $engine->filename); drupal_load('theme_engine', $engine->name); db_query("INSERT INTO {system} (name, type, filename, status, throttle, bootstrap) VALUES ('%s', '%s', '%s', %d, %d, %d)", $engine->name, 'theme_engine', $engine->filename, 1, 0, 0); + // Add templates to the site listing foreach (call_user_func($engine->name . '_templates') as $template) { $template->template = TRUE; $template->name = basename(dirname($template->filename)); @@ -322,6 +323,12 @@ function system_theme_data() { $template->description = dirname($template->filename); $template->owner = $engine->filename; $template->prefix = $engine->name; + // do not double-insert templates with theme files in their directory + foreach ($themes as $theme) { + if (dirname($template->filename) == dirname($theme->filename)) { + continue 2; + } + } $themes[$template->name] = $template; } } @@ -332,10 +339,11 @@ function system_theme_data() { // do not double-insert themes with css files in their directory if (dirname($style->filename) != dirname($theme->filename)) { $style->style = TRUE; + $style->template = $theme->template; $style->name = basename(dirname($style->filename)); $style->description = dirname($style->filename); $style->owner = $theme->filename; - $style->prefix = $theme->name; + $style->prefix = $theme->template ? $theme->prefix : $theme->name; $themes[$style->name] = $style; } } @@ -674,11 +682,13 @@ function system_theme_settings() { $function = $themes[$key]->prefix .'_settings'; if (function_exists($function)) { $group = $function(); - if (strpos($themes[$key]->description, '.theme') || ($themes[$key]->description == '')) { - $form .= form_group(t('Theme-specific settings'), $group, t('These settings only exist for the %theme theme and all the styles based on it.', array('%theme' => $themes[$key]->prefix))); + if ($themes[$key]->template) { + // file is a template or a style of a template + $form .= form_group(t('Engine-specific settings'), $group, t('These settings only exist for all the templates and styles based on the %engine theme engine.', array('%engine' => $themes[$key]->prefix))); } else { - $form .= form_group(t('Engine-specific settings'), $group, t('These settings only exist for all the templates and styles based on the %engine theme engine.', array('%engine' => $themes[$key]->prefix))); + // file is a theme or a style of a theme + $form .= form_group(t('Theme-specific settings'), $group, t('These settings only exist for the %theme theme and all the styles based on it.', array('%theme' => $themes[$key]->prefix))); } } }