Changeset 1638

Show
Ignore:
Timestamp:
09/11/04 16:12:40 (4 years ago)
Author:
rboren
Message:

Themes.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/wp-admin/admin-functions.php

    r1631 r1638  
    489489} 
    490490 
     491function get_theme_data($theme_file) { 
     492    $theme_data = implode('', file($theme_file)); 
     493    preg_match("|Theme Name:(.*)|i", $theme_data, $theme_name); 
     494    preg_match("|Theme URI:(.*)|i", $theme_data, $theme_uri); 
     495    preg_match("|Description:(.*)|i", $theme_data, $description); 
     496    preg_match("|Author:(.*)|i", $theme_data, $author_name); 
     497    preg_match("|Author URI:(.*)|i", $theme_data, $author_uri); 
     498    preg_match("|Template:(.*)|i", $theme_data, $template); 
     499    if ( preg_match("|Version:(.*)|i", $theme_data, $version) ) 
     500        $version = $version[1]; 
     501    else 
     502        $version =''; 
     503 
     504    $description = wptexturize($description[1]); 
     505 
     506    $name = $theme_name[1]; 
     507    $name = trim($name); 
     508    $theme = $name; 
     509    if ('' != $theme_uri && '' != $name) { 
     510        $theme = __("<a href='{$theme_uri[1]}' title='Visit theme homepage'>{$theme}</a>"); 
     511    } 
     512 
     513    if ('' == $author_uri) { 
     514        $author = $author_name[1]; 
     515    } else { 
     516        $author = __("<a href='{$author_uri[1]}' title='Visit author homepage'>{$author_name[1]}</a>"); 
     517    } 
     518 
     519    return array('Name' => $name, 'Title' => $theme, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template[1]); 
     520} 
     521 
     522function get_themes() { 
     523    $themes = array(); 
     524    $theme_loc = 'wp-content/themes'; 
     525    $theme_root = ABSPATH . $theme_loc; 
     526 
     527    // Files in wp-content/themes directory 
     528    $themes_dir = @ dir($theme_root); 
     529    if ($themes_dir) { 
     530        while(($theme_dir = $themes_dir->read()) !== false) { 
     531            if (is_dir($theme_root . '/' . $theme_dir)) { 
     532                $stylish_dir = @ dir($theme_root . '/' . $theme_dir); 
     533                while(($theme_file = $stylish_dir->read()) !== false) { 
     534                    if ( $theme_file == 'style.css' ) { 
     535                        $theme_files[] = $theme_dir . '/' . $theme_file; 
     536                    } 
     537                } 
     538            } 
     539        } 
     540    } 
     541 
     542    $default_files = array(get_settings('blogfilename'), 'wp-comments.php', 'wp-comments-popup.php', 'wp-comments-post.php', 'wp-footer.php', 'wp-header.php', 'wp-sidebar.php', 'footer.php', 'header.php', 'sidebar.php'); 
     543 
     544    // Get the files for the default template. 
     545    $default_template_files = array(); 
     546    { 
     547        $dirs = array('', 'wp-content'); 
     548        foreach ($dirs as $dir) { 
     549            $template_dir = @ dir(ABSPATH . $dir); 
     550            while(($file = $template_dir->read()) !== false) { 
     551                if ( !preg_match('|^\.+$|', $file) && in_array($file, $default_files))  
     552                    $default_template_files[] = trim("$dir/$file", '/'); 
     553            } 
     554        } 
     555    } 
     556 
     557    // Get the files for the default stylesheet. 
     558    $default_stylesheet_files = array(); 
     559    { 
     560        $stylesheet_dir = @ dir(ABSPATH); 
     561        while(($file = $stylesheet_dir->read()) !== false) { 
     562            if ( !preg_match('|^\.+$|', $file) && preg_match('|\.css$|', $file))  
     563                $default_stylesheet_files[] = "$file"; 
     564        } 
     565    } 
     566     
     567    // The default theme always exists. 
     568    $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); 
     569 
     570    if (!$themes_dir || !$theme_files) { 
     571        return $themes; 
     572    } 
     573 
     574    sort($theme_files); 
     575 
     576    foreach($theme_files as $theme_file) { 
     577        $theme_data = get_theme_data("$theme_root/$theme_file"); 
     578       
     579        $name = $theme_data['Name'];  
     580        $title = $theme_data['Title']; 
     581        $description = wptexturize($theme_data['Description']); 
     582        $version = $theme_data['Version']; 
     583        $author = $theme_data['Author']; 
     584        $template = $theme_data['Template']; 
     585        $stylesheet = dirname($theme_file); 
     586 
     587        if (empty($template)) { 
     588            if (file_exists(dirname("$theme_root/$theme_file/index.php"))) { 
     589                $template = dirname($theme_file); 
     590            } else { 
     591                continue; 
     592            } 
     593        } 
     594 
     595        $template = trim($template); 
     596 
     597        if (($template != 'default') && (! file_exists("$theme_root/$template/index.php"))) { 
     598            continue; 
     599        } 
     600 
     601        if (empty($name)) { 
     602            $name = dirname($theme_file); 
     603            $title = $name; 
     604        } 
     605         
     606        $stylesheet_files = array(); 
     607        if ($stylesheet != 'default') { 
     608            $stylesheet_dir = @ dir("$theme_root/$stylesheet"); 
     609            if ($stylesheet_dir) { 
     610                while(($file = $stylesheet_dir->read()) !== false) { 
     611                    if ( !preg_match('|^\.+$|', $file) && preg_match('|\.css$|', $file) )  
     612                        $stylesheet_files[] = "$theme_loc/$stylesheet/$file"; 
     613                } 
     614            } 
     615        } else { 
     616            $stylesheet_files = $default_stylesheet_files; 
     617        } 
     618 
     619        $template_files = array();       
     620        if ($template != 'default') { 
     621            $template_dir = @ dir("$theme_root/$template"); 
     622            if ($template_dir) { 
     623                while(($file = $template_dir->read()) !== false) { 
     624                    if ( !preg_match('|^\.+$|', $file) && preg_match('|\.php$|', $file) )  
     625                        $template_files[] = "$theme_loc/$template/$file"; 
     626                } 
     627            } 
     628        } else { 
     629            $template_files = $default_template_files; 
     630        } 
     631 
     632        $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); 
     633    } 
     634 
     635    return $themes; 
     636} 
     637 
    491638?> 
  • trunk/wp-admin/menu.php

    r1599 r1638  
    1414$menu[30] = array(__('Options'), 6, 'options-general.php'); 
    1515$menu[35] = array(__('Plugins'), 8, 'plugins.php'); 
    16 $menu[40] = array(__('Templates'), 4, 'templates.php'); 
    17 $menu[45] = array(__('Upload'), get_settings('fileupload_minlevel'), 'upload.php'); 
     16$menu[40] = array(__('Presentation'), 8, 'themes.php'); 
     17$menu[45] = array(__('Templates'), 4, 'templates.php'); 
     18$menu[50] = array(__('Upload'), get_settings('fileupload_minlevel'), 'upload.php'); 
    1819ksort($menu); // So other files can plugin 
    1920 
     
    3940$submenu['options-general.php'][25] = array(__('Permalinks'), 5, 'options-permalink.php'); 
    4041$submenu['options-general.php'][30] = array(__('Miscellaneous'), 5, 'options-misc.php'); 
     42 
     43$submenu['themes.php'][5] = array(__('Themes'), 5, 'themes.php'); 
     44$submenu['themes.php'][10] = array(__('Theme Editor'), 5, 'theme-editor.php'); 
    4145 
    4246$self = preg_replace('|.*/wp-admin/|i', '', $_SERVER['PHP_SELF']); 
  • trunk/wp-admin/upgrade-schema.php

    r1627 r1638  
    216216    add_option('recently_edited'); 
    217217    add_option('use_linksupdate', 0); 
     218    add_option('template', 'default'); 
     219    add_option('stylesheet', 'default'); 
    218220 
    219221    // Delete unused options 
  • trunk/wp-blog-header.php

    r1599 r1638  
    6565        if (isset($_GET['error'])) { 
    6666            unset($_GET['error']); 
     67        } 
     68 
     69        if (isset($error)) { 
     70            unset($error); 
    6771        } 
    6872 
     
    102106// Sending HTTP headers 
    103107 
    104 if ( !isset($doing_rss) || !$doing_rss ) { 
     108if (is_404()) { 
     109    header("HTTP/1.x 404 Not Found"); 
     110} else if ( !isset($doing_rss) || !$doing_rss ) { 
    105111    @header ('X-Pingback: '. get_settings('siteurl') . '/xmlrpc.php'); 
    106112} else { 
     
    184190endif; 
    185191 
     192$wp_template = get_settings('template'); 
     193 
     194if ($wp_template == 'default') { 
     195  $wp_template = ''; 
     196} 
     197 
     198if (! empty($wp_template)) { 
     199  $wp_template = "themes/$wp_template/"; 
     200} 
     201 
    186202// Template redirection 
    187 if (is_single() && (! isset($wp_did_single)) && 
    188     file_exists(ABSPATH . 'wp-content/single.php')) { 
     203if ($pagenow != get_settings('blogfilename')) { 
     204    // Noop. 
     205} else if (is_home() && (! isset($wp_did_home)) && 
     206    file_exists(ABSPATH . "wp-content/${wp_template}index.php")) { 
     207  $wp_did_home = true; 
     208  include(ABSPATH . "wp-content/${wp_template}index.php"); 
     209  exit; 
     210} else if (is_single() && (! isset($wp_did_single)) && 
     211    file_exists(ABSPATH . "wp-content/${wp_template}single.php")) { 
    189212  $wp_did_single = true; 
    190   include(ABSPATH . 'wp-content/single.php'); 
     213  include(ABSPATH . "wp-content/${wp_template}single.php"); 
    191214  exit; 
    192215} else if (is_page() && (! isset($wp_did_page)) && 
    193         file_exists(ABSPATH . 'wp-content/page.php')) { 
     216        file_exists(ABSPATH . "wp-content/${wp_template}page.php")) { 
    194217  $wp_did_page = true; 
    195   include(ABSPATH . 'wp-content/page.php'); 
     218  include(ABSPATH . "wp-content/${wp_template}page.php"); 
    196219  exit; 
    197220} else if (is_category() && (! isset($wp_did_category)) && 
    198        file_exists(ABSPATH . 'wp-content/category.php')) { 
     221       file_exists(ABSPATH . "wp-content/${wp_template}category.php")) { 
    199222  $wp_did_category = true; 
    200   include(ABSPATH . 'wp-content/category.php'); 
     223  include(ABSPATH . "wp-content/${wp_template}category.php"); 
    201224  exit; 
    202225} else if (is_author() && (! isset($wp_did_author)) && 
    203        file_exists(ABSPATH . 'wp-content/author.php')) { 
     226       file_exists(ABSPATH . "wp-content/${wp_template}author.php")) { 
    204227  $wp_did_author = true; 
    205   include(ABSPATH . 'wp-content/author.php'); 
     228  include(ABSPATH . "wp-content/${wp_template}author.php"); 
    206229  exit; 
    207230} else if (is_date() && (! isset($wp_did_date)) && 
    208        file_exists(ABSPATH . 'wp-content/date.php')) { 
     231       file_exists(ABSPATH . "wp-content/${wp_template}date.php")) { 
    209232  $wp_did_date = true; 
    210   include(ABSPATH . 'wp-content/date.php'); 
     233  include(ABSPATH . "wp-content/${wp_template}date.php"); 
    211234  exit; 
    212235} else if (is_archive() && (! isset($wp_did_archive)) && 
    213        file_exists(ABSPATH . 'wp-content/archive.php')) { 
     236       file_exists(ABSPATH . "wp-content/${wp_template}archive.php")) { 
    214237  $wp_did_archive = true; 
    215   include(ABSPATH . 'wp-content/archive.php'); 
     238  include(ABSPATH . "wp-content/${wp_template}archive.php"); 
    216239  exit; 
    217240} else if (is_search() && (! isset($wp_did_search)) && 
    218        file_exists(ABSPATH . 'wp-content/search.php')) { 
     241       file_exists(ABSPATH . "wp-content/${wp_template}search.php")) { 
    219242  $wp_did_search = true; 
    220   include(ABSPATH . 'wp-content/search.php'); 
     243  include(ABSPATH . "wp-content/${wp_template}search.php"); 
    221244  exit; 
    222245} else if (is_404() && (! isset($wp_did_404)) && 
    223        file_exists(ABSPATH . 'wp-content/404.php')) { 
     246       file_exists(ABSPATH . "wp-content/${wp_template}404.php")) { 
    224247  $wp_did_404 = true; 
    225   include(ABSPATH . 'wp-content/404.php'); 
     248  include(ABSPATH . "wp-content/${wp_template}404.php"); 
    226249  exit; 
    227250} else if (is_feed() && $pagenow != 'wp-feed.php') { 
     
    231254  include(dirname(__FILE__) . '/wp-trackback.php'); 
    232255  exit; 
     256} else if ((! isset($wp_did_home)) && file_exists(ABSPATH . "wp-content/${wp_template}index.php")) 
     257{ 
     258    $wp_did_home = true; 
     259    include(ABSPATH . "wp-content/${wp_template}index.php"); 
     260    exit; 
    233261} 
    234262 
  • trunk/wp-includes/template-functions-general.php

    r1632 r1638  
    7878            $output = get_settings('siteurl') .'/xmlrpc.php'; 
    7979            break; 
     80        case 'stylesheet_url': 
     81            $output = get_settings('stylesheet');; 
     82            if (empty($output) || $output == 'default') { 
     83                $output = get_settings('home') . "/wp-layout.css"; 
     84            } else { 
     85                $output = get_settings('home') . "/wp-content/themes/$output/style.css"; 
     86            } 
     87            break; 
     88        case 'template_url': 
     89            $output = get_settings('template');; 
     90            if (empty($output) || $output == 'default') { 
     91                $output = get_settings('home'); 
     92            } else { 
     93                $output = get_settings('home') . "/wp-content/themes/$output"; 
     94            } 
     95            break; 
    8096        case 'admin_email': 
    8197            $output = get_settings('admin_email');