Commit 55a297d9 authored by Gábor Hojtsy's avatar Gábor Hojtsy
Browse files

#57676 by JohnAlbin et al: properly support theme engine and theme specific...

#57676 by JohnAlbin et al: properly support theme engine and theme specific settings via a theme-settings.php file
parent eb633ace
...@@ -451,19 +451,37 @@ function system_theme_settings(&$form_state, $key = '') { ...@@ -451,19 +451,37 @@ function system_theme_settings(&$form_state, $key = '') {
} }
if ($key) { if ($key) {
// Template-specific settings // Include the theme's theme-settings.php file
$function = $themes[$key]->prefix .'_settings'; $filename = './'. str_replace("/$key.info", '', $themes[$key]->filename) .'/theme-settings.php';
if (!file_exists($filename) and !empty($themes[$key]->info['base theme'])) {
// If the theme doesn't have a theme-settings.php file, use the base theme's.
$base = $themes[$key]->info['base theme'];
$filename = './'. str_replace("/$base.info", '', $themes[$base]->filename) .'/theme-settings.php';
}
if (file_exists($filename)) {
require_once $filename;
}
// Call engine-specific settings.
$function = $themes[$key]->prefix .'_engine_settings';
if (function_exists($function)) { if (function_exists($function)) {
if ($themes[$key]->template) { $group = $function($settings);
// file is a template or a style of a template if (!empty($group)) {
$form['specific'] = array('#type' => 'fieldset', '#title' => t('Engine-specific settings'), '#description' => t('These settings only exist for all the templates and styles based on the %engine theme engine.', array('%engine' => $themes[$key]->prefix))); $form['engine_specific'] = array('#type' => 'fieldset', '#title' => t('Theme-engine-specific settings'), '#description' => t('These settings only exist for all the templates and styles based on the %engine theme engine.', array('%engine' => $themes[$key]->prefix)));
$form['engine_specific'] = array_merge($form['engine_specific'], $group);
} }
else { }
// file is a theme or a style of a theme // Call theme-specific settings.
$form['specific'] = array('#type' => 'fieldset', '#title' => t('Theme-specific settings'), '#description' => t('These settings only exist for the %theme theme and all the styles based on it.', array('%theme' => $themes[$key]->prefix))); $function = $key .'_settings';
if (!function_exists($function)) {
$function = $themes[$key]->prefix .'_settings';
}
if (function_exists($function)) {
$group = $function($settings);
if (!empty($group)) {
$form['theme_specific'] = array('#type' => 'fieldset', '#title' => t('Theme-specific settings'), '#description' => t('These settings only exist for the %theme theme and all the styles based on it.', array('%theme' => $themes[$key]->info['name'])));
$form['theme_specific'] = array_merge($form['theme_specific'], $group);
} }
$group = $function();
$form['specific'] = array_merge($form['specific'], (is_array($group) ? $group : array()));
} }
} }
$form['#attributes'] = array('enctype' => 'multipart/form-data'); $form['#attributes'] = array('enctype' => 'multipart/form-data');
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment