Refactor some theme code.

git-svn-id: https://develop.svn.wordpress.org/trunk@1643 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Ryan Boren 2004-09-14 06:19:50 +00:00
parent 3dc410d34d
commit 80a69481d0
2 changed files with 48 additions and 29 deletions

View File

@ -565,7 +565,7 @@ function get_themes() {
} }
// The default theme always exists. // The default theme always exists.
$themes['Default'] = array('Name' => 'Default', 'Title' => 'Default', 'Description' => 'The default theme', 'Author' => '', 'Version' => '1.3', 'Template' => 'default', 'Stylesheet' => 'default', 'Template Files' => $default_template_files, 'Stylesheet Files' => $default_stylesheet_files); $themes['Default'] = array('Name' => 'Default', 'Title' => 'Default', 'Description' => 'The default theme', 'Author' => '', 'Version' => '1.3', 'Template' => 'default', 'Stylesheet' => 'default', 'Template Files' => $default_template_files, 'Stylesheet Files' => $default_stylesheet_files, 'Template Dir' => '/', 'Stylesheet Dir' => '/', 'Parent Theme' => '');
if (!$themes_dir || !$theme_files) { if (!$themes_dir || !$theme_files) {
return $themes; return $themes;
@ -629,10 +629,50 @@ function get_themes() {
$template_files = $default_template_files; $template_files = $default_template_files;
} }
$themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template, 'Stylesheet' => $stylesheet, 'Template Files' => $template_files, 'Stylesheet Files' => $stylesheet_files); $template_dir = dirname($template_files[0]);
$stylesheet_dir = dirname($stylesheet_files[0]);
if (empty($template_dir)) $template_dir = '/';
if (empty($stylesheet_dir)) $stylesheet_dir = '/';
$themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template, 'Stylesheet' => $stylesheet, 'Template Files' => $template_files, 'Stylesheet Files' => $stylesheet_files, 'Template Dir' => $template_dir, 'Stylesheet Dir' => $stylesheet_dir);
}
// Resolve theme dependencies.
$theme_names = array_keys($themes);
foreach ($theme_names as $theme_name) {
$themes[$theme_name]['Parent Theme'] = '';
if ($themes[$theme_name]['Stylesheet'] != $themes[$theme_name]['Template']) {
foreach ($theme_names as $parent_theme_name) {
if (($themes[$parent_theme_name]['Stylesheet'] == $themes[$parent_theme_name]['Template']) && ($themes[$parent_theme_name]['Template'] == $themes[$theme_name]['Template'])) {
$themes[$theme_name]['Parent Theme'] = $themes[$parent_theme_name]['Name'];
break;
}
}
}
} }
return $themes; return $themes;
} }
function get_current_theme() {
$themes = get_themes();
$theme_names = array_keys($themes);
$current_template = get_settings('template');
$current_stylesheet = get_settings('stylesheet');
$current_theme = 'Default';
if ($themes) {
foreach ($theme_names as $theme_name) {
if ($themes[$theme_name]['Stylesheet'] == $current_stylesheet &&
$themes[$theme_name]['Template'] == $current_template) {
$current_theme = $themes[$theme_name]['Name'];
}
}
}
return $current_theme;
}
?> ?>

View File

@ -30,33 +30,12 @@ if ($user_level < 9) // Must be at least level 9
<?php <?php
$themes = get_themes(); $themes = get_themes();
$theme_names = array_keys($themes); $current_theme = get_current_theme();
natcasesort($theme_names); $current_parent_theme = $themes[$current_theme]['Parent Theme'];
$current_template = get_settings('template'); $current_template_dir = $themes[$current_theme]['Template Dir'];
$current_stylesheet = get_settings('stylesheet'); $current_stylesheet_dir = $themes[$current_theme]['Stylesheet Dir'];
$current_theme = 'Default'; $current_template = $themes[$current_theme]['Template'];
$current_parent_theme = ''; $current_stylesheet = $themes[$current_theme]['Stylesheet'];
$current_template_dir = '/';
$current_stylesheet_dir = '/';
if ($themes) {
foreach ($theme_names as $theme_name) {
if ($themes[$theme_name]['Stylesheet'] == $current_stylesheet &&
$themes[$theme_name]['Template'] == $current_template) {
$current_theme = $themes[$theme_name]['Name'];
if ($current_template != 'default')
$current_template_dir = dirname($themes[$theme_name]['Template Files'][0]);
if ($current_stylesheet != 'default')
$current_stylesheet_dir = dirname($themes[$theme_name]['Stylesheet Files'][0]);
}
if (($current_template != $current_stylesheet) &&
($themes[$theme_name]['Stylesheet'] == $themes[$theme_name]['Template']) &&
($themes[$theme_name]['Template'] == $current_template)) {
$current_parent_theme = $themes[$theme_name]['Name'];
}
}
}
?> ?>
<?php if ($current_parent_theme) { ?> <?php if ($current_parent_theme) { ?>