Make WordPress Core

Changeset 7961


Ignore:
Timestamp:
05/20/2008 05:19:33 PM (15 years ago)
Author:
ryan
Message:

Theme preview and thickbox CSS cleanup. Props azaozz. see #5486

Location:
trunk
Files:
1 added
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/admin-header.php

    r7951 r7961  
    5050else if ( isset($plugin_page) )
    5151    do_action('admin_print_scripts-' . $plugin_page);
     52else if ( isset($pagenow) )
     53    do_action('admin_print_scripts-' . $pagenow);
    5254do_action('admin_print_scripts');
    5355
     
    5658else if ( isset($plugin_page) )
    5759    do_action('admin_head-' . $plugin_page);
     60else if ( isset($pagenow) )
     61    do_action('admin_head-' . $pagenow);
    5862do_action('admin_head');
    5963?>
  • trunk/wp-admin/comment.php

    r7755 r7961  
    2222
    2323    wp_enqueue_script('comment');
    24     //wp_enqueue_script('thickbox');
     24
    2525    require_once('admin-header.php');
    2626
  • trunk/wp-admin/css/press-this.css

    r7957 r7961  
    1 
    2 /* ---------->>> global settings needed for thickbox <<<-----------------------------------------------------------*/
    3 *{padding: 0; margin: 0;}
    4 
    5 /* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/
    6 #TB_window {
    7 }
    8 
    9 #TB_secondLine {
    10 }
    11 
    12 #TB_overlay {
    13     position: fixed;
    14     z-index:100;
    15     top: 0px;
    16     left: 0px;
    17     background-color:#000;
    18     filter:alpha(opacity=75);
    19     -moz-opacity: 0.75;
    20     opacity: 0.75;
    21     height:100%;
    22     width:100%;
    23 }
    24 
    25 * html #TB_overlay { /* ie6 hack */
    26      position: absolute;
    27      height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
    28 }
    29 
    30 #TB_window {
    31     position: fixed;
    32     background: #ffffff;
    33     z-index: 102;
    34     color:#000000;
    35     display:none;
    36     border: 4px solid #525252;
    37     text-align:left;
    38     top:50%;
    39     left:50%;
    40 }
    41 
    42 * html #TB_window { /* ie6 hack */
    43 position: absolute;
    44 margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
    45 }
    46 
    47 #TB_window img#TB_Image {
    48     display:block;
    49     margin: 15px 0 0 15px;
    50     border-right: 1px solid #ccc;
    51     border-bottom: 1px solid #ccc;
    52     border-top: 1px solid #666;
    53     border-left: 1px solid #666;
    54 }
    55 
    56 #TB_caption{
    57     height:25px;
    58     padding:7px 30px 10px 25px;
    59     float:left;
    60 }
    61 
    62 #TB_closeWindow{
    63     height:25px;
    64     padding:11px 25px 10px 0;
    65     float:right;
    66 }
    67 
    68 #TB_closeAjaxWindow{
    69     padding:7px 10px 5px 0;
    70     margin-bottom:1px;
    71     text-align:right;
    72     float:right;
    73 }
    74 
    75 #TB_ajaxWindowTitle{
    76     float:left;
    77     padding:7px 0 5px 10px;
    78     margin-bottom:1px;
    79 }
    80 
    81 #TB_title{
    82     background-color:#e8e8e8;
    83     height:27px;
    84 }
    85 
    86 #TB_ajaxContent{
    87     clear:both;
    88     padding:2px 15px 15px 15px;
    89     overflow:auto;
    90     text-align:left;
    91     line-height:1.4em;
    92 }
    93 
    94 #TB_ajaxContent.TB_modal{
    95     padding:15px;
    96 }
    97 
    98 #TB_ajaxContent p{
    99     padding:5px 0px 5px 0px;
    100 }
    101 
    102 #TB_load{
    103     position: fixed;
    104     display:none;
    105     height:13px;
    106     width:208px;
    107     z-index:103;
    108     top: 50%;
    109     left: 50%;
    110     margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */
    111 }
    112 
    113 * html #TB_load { /* ie6 hack */
    114 position: absolute;
    115 margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
    116 }
    117 
    118 #TB_HideSelect{
    119     z-index:99;
    120     position:fixed;
    121     top: 0;
    122     left: 0;
    123     background-color:#fff;
    124     border:none;
    125     filter:alpha(opacity=0);
    126     -moz-opacity: 0;
    127     opacity: 0;
    128     height:100%;
    129     width:100%;
    130 }
    131 
    132 * html #TB_HideSelect { /* ie6 hack */
    133      position: absolute;
    134      height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
    135 }
    136 
    137 #TB_iframeContent{
    138     clear:both;
    139     border:none;
    140     margin-bottom:-1px;
    141     margin-top:1px;
    142     _margin-bottom:1px;
    143 }
    144 /* end jquery thickbox css */
    145 
    146 /* quickpost css */
    147 
    148 
    149 
    150 
    1511body {
    152 font: 13px "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif;
     2    font: 13px "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif;
    1533}
    1544/* jquery tabs css */
     
    17020/* Skin */
    17121div.ui-tabs-panel {
    172 border: none;
    173 width: 100%;
    174 height: auto;
    175 margin: 0;
    176 padding: 0;
    177 position: relative;
     22    border: none;
     23    width: 100%;
     24    height: auto;
     25    margin: 0;
     26    padding: 0;
     27    position: relative;
    17828}
    17929.ui-tabs-nav {
     
    257107
    258108#wphead {
    259 border-top: none;
     109    border-top: none;
    260110}
    261111.submit input {
  • trunk/wp-admin/gears-manifest.php

    r7943 r7961  
    3434{
    3535"betaManifestVersion" : 1,
    36 "version" : "<?php echo $version; ?>_20080511",
     36"version" : "<?php echo $version; ?>_20080520",
    3737"entries" : [
    3838<?php echo $default_js; ?>
     
    4040{ "url" : "wp-admin.css?version=2.6-bleeding" },
    4141{ "url" : "rtl.css?version=2.6-bleeding" },
    42 { "url" : "../wp-includes/js/thickbox/thickbox.css?ver=20080430" },
     42{ "url" : "../wp-includes/js/thickbox/thickbox.css?version=2.6-bleeding" },
    4343{ "url" : "css/colors-classic-rtl.css?version=2.6-bleeding" },
    4444{ "url" : "css/colors-classic.css?version=2.6-bleeding" },
     
    5757{ "url" : "css/media-rtl.css?version=2.6-bleeding" },
    5858{ "url" : "css/media.css?version=2.6-bleeding" },
     59{ "url" : "css/press-this.css?version=2.6-bleeding" },
    5960{ "url" : "css/theme-editor-rtl.css?version=2.6-bleeding" },
    6061{ "url" : "css/theme-editor.css?version=2.6-bleeding" },
  • trunk/wp-admin/includes/media.php

    r7922 r7961  
    168168    $out = <<<EOF
    169169
    170     <a href="{$image_upload_iframe_src}&amp;TB_iframe=true&amp;height=500&amp;width=640" class="thickbox" title='$image_title'><img src='images/media-button-image.gif' alt='$image_title' /></a>
    171     <a href="{$video_upload_iframe_src}&amp;TB_iframe=true&amp;height=500&amp;width=640" class="thickbox" title='$video_title'><img src='images/media-button-video.gif' alt='$video_title' /></a>
    172     <a href="{$audio_upload_iframe_src}&amp;TB_iframe=true&amp;height=500&amp;width=640" class="thickbox" title='$audio_title'><img src='images/media-button-music.gif' alt='$audio_title' /></a>
    173     <a href="{$media_upload_iframe_src}&amp;TB_iframe=true&amp;height=500&amp;width=640" class="thickbox" title='$media_title'><img src='images/media-button-other.gif' alt='$media_title' /></a>
     170    <a href="{$image_upload_iframe_src}&amp;TB_iframe=true" class="thickbox" title='$image_title'><img src='images/media-button-image.gif' alt='$image_title' /></a>
     171    <a href="{$video_upload_iframe_src}&amp;TB_iframe=true" class="thickbox" title='$video_title'><img src='images/media-button-video.gif' alt='$video_title' /></a>
     172    <a href="{$audio_upload_iframe_src}&amp;TB_iframe=true" class="thickbox" title='$audio_title'><img src='images/media-button-music.gif' alt='$audio_title' /></a>
     173    <a href="{$media_upload_iframe_src}&amp;TB_iframe=true" class="thickbox" title='$media_title'><img src='images/media-button-other.gif' alt='$media_title' /></a>
    174174
    175175EOF;
     
    178178add_action( 'media_buttons', 'media_buttons' );
    179179
    180 function media_buttons_head() {
    181 $siteurl = get_option('siteurl');
    182 echo "<style type='text/css' media='all'>
    183     @import '{$siteurl}/wp-includes/js/thickbox/thickbox.css?ver=20080430';
    184     div#TB_title {
    185         background-color: #222222;
    186         color: #cfcfcf;
    187     }
    188     div#TB_title a, div#TB_title a:visited {
    189         color: #cfcfcf;
    190     }
    191     #TB_window {
    192         top: 20px;
    193     }
    194 </style>\n";
    195 }
    196 
    197 add_action( 'admin_print_scripts', 'media_buttons_head' );
     180add_action( 'admin_print_scripts-post-new.php', 'add_thickbox' );
     181add_action( 'admin_print_scripts-post.php', 'add_thickbox' );
     182add_action( 'admin_print_scripts-page-new.php', 'add_thickbox' );
     183add_action( 'admin_print_scripts-page.php', 'add_thickbox' );
    198184
    199185function media_admin_css() {
  • trunk/wp-admin/js/media-upload.js

    r7862 r7961  
    2222            tbWindow.width( W - 50 ).height( H - 45 );
    2323            $('#TB_iframeContent').width( W - 50 ).height( H - 75 );
    24             tbWindow.css({marginLeft: '-' + parseInt((( W - 50 ) / 2),10) + 'px'});
     24            tbWindow.css({'margin-left': '-' + parseInt((( W - 50 ) / 2),10) + 'px','top':'20px','margin-top':'0'});
     25            $('#TB_title').css({'background-color':'#222','color':'#cfcfcf'});
     26            if ( $.browser.msie && $.browser.version.substr(0,1) < 7 )
     27                tbWindow.css({'margin-top':document.documentElement.scrollTop+'px'});
    2528        };
    2629
  • trunk/wp-admin/link-add.php

    r7196 r7961  
    1414wp_enqueue_script('link');
    1515wp_enqueue_script('xfn');
    16 wp_enqueue_script('thickbox');
    1716
    1817require('admin-header.php');
  • trunk/wp-admin/link.php

    r7196 r7961  
    8686        wp_enqueue_script('link');
    8787        wp_enqueue_script('xfn');
    88         wp_enqueue_script('thickbox');
    8988
    9089        $parent_file = 'edit.php';
  • trunk/wp-admin/page-new.php

    r7854 r7961  
    88if ( user_can_richedit() )
    99    wp_enqueue_script('editor');
    10 wp_enqueue_script('thickbox');
    1110wp_enqueue_script('media-upload');
    1211wp_enqueue_script('word-count');
  • trunk/wp-admin/page.php

    r7854 r7961  
    8282    if ( user_can_richedit() )
    8383        wp_enqueue_script('editor');
    84     wp_enqueue_script('thickbox');
    8584    wp_enqueue_script('media-upload');
    8685    wp_enqueue_script('word-count');
  • trunk/wp-admin/post-new.php

    r7854 r7961  
    88if ( user_can_richedit() )
    99    wp_enqueue_script('editor');
    10 wp_enqueue_script('thickbox');
    1110wp_enqueue_script('media-upload');
    1211wp_enqueue_script('word-count');
  • trunk/wp-admin/post.php

    r7854 r7961  
    8989    if ( user_can_richedit() )
    9090        wp_enqueue_script('editor');
    91     wp_enqueue_script('thickbox');
    9291    wp_enqueue_script('media-upload');
    9392    wp_enqueue_script('word-count');
  • trunk/wp-admin/press-this.php

    r7957 r7961  
    195195<?php
    196196    wp_enqueue_script('jquery-ui-tabs');
    197     wp_enqueue_script('thickbox');
     197    add_thickbox();
    198198    wp_enqueue_script('post');
    199199    do_action('admin_print_scripts');
  • trunk/wp-admin/themes.php

    r7522 r7961  
    1414$title = __('Manage Themes');
    1515$parent_file = 'themes.php';
     16
     17add_thickbox();
     18wp_enqueue_script( 'theme-preview' );
     19
    1620require_once('admin-header.php');
    1721?>
     
    3034<div class="wrap">
    3135<h2><?php _e('Current Theme'); ?></h2>
    32 <div id="currenttheme">
     36<div id="current-theme">
    3337<?php if ( $ct->screenshot ) : ?>
    3438<img src="<?php echo get_option('siteurl') . '/' . $ct->stylesheet_dir . '/' . $ct->screenshot; ?>" alt="<?php _e('Current theme preview'); ?>" />
    3539<?php endif; ?>
    3640<h3><?php printf(_c('%1$s %2$s by %3$s|1: theme title, 2: theme version, 3: theme author'), $ct->title, $ct->version, $ct->author) ; ?></h3>
    37 <p><?php echo $ct->description; ?></p>
     41<p class="description"><?php echo $ct->description; ?></p>
    3842<?php if ($ct->parent_theme) { ?>
    3943    <p><?php printf(__('The template files are located in <code>%2$s</code>.  The stylesheet files are located in <code>%3$s</code>.  <strong>%4$s</strong> uses templates from <strong>%5$s</strong>.  Changes made to the templates will affect both themes.'), $ct->title, $ct->template_dir, $ct->stylesheet_dir, $ct->title, $ct->parent_theme); ?></p>
     
    4852<h2><?php _e('Available Themes'); ?></h2>
    4953<?php if ( 1 < count($themes) ) { ?>
    50 
     54<table id="availablethemes" cellspacing="0" cellpadding="0">
    5155<?php
    5256$style = '';
     
    5559natcasesort($theme_names);
    5660
    57 foreach ($theme_names as $theme_name) {
    58     if ( $theme_name == $ct->name )
    59         continue;
     61$rows = ceil(count($theme_names) / 3);
     62for ( $row = 1; $row <= $rows; $row++ )
     63    for ( $col = 1; $col <= 3; $col++ )
     64        $table[$row][$col] = array_shift($theme_names);
     65
     66foreach ( $table as $row => $cols ) {
     67?>
     68<tr>
     69<?php
     70foreach ( $cols as $col => $theme_name ) {
     71    $class = array('available-theme');
     72    if ( $row == 1 ) $class[] = 'top';
     73    if ( $col == 1 ) $class[] = 'left';
     74    if ( $row == $rows ) $class[] = 'bottom';
     75    if ( $col == 3 ) $class[] = 'right';
     76?>
     77    <td class="<?php echo join(' ', $class); ?>">
     78<?php if ( !empty($theme_name) ) :
    6079    $template = $themes[$theme_name]['Template'];
    6180    $stylesheet = $themes[$theme_name]['Stylesheet'];
     
    6685    $screenshot = $themes[$theme_name]['Screenshot'];
    6786    $stylesheet_dir = $themes[$theme_name]['Stylesheet Dir'];
     87    $preview_link = clean_url( get_option('home') . '/');
     88    $preview_link = add_query_arg( array('preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'TB_iframe' => 'true', 'width' => 600, 'height' => 400 ), $preview_link );
     89    $preview_text = attribute_escape( sprintf( __('Preview of "%s"'), $title ) );
    6890    $tags = $themes[$theme_name]['Tags'];
     91    $thickbox_class = 'thickbox';
    6992    $activate_link = wp_nonce_url("themes.php?action=activate&amp;template=".urlencode($template)."&amp;stylesheet=".urlencode($stylesheet), 'switch-theme_' . $template);
     93    $activate_text = attribute_escape( sprintf( __('Activate "%s"'), $title ) );
    7094?>
    71 <div class="available-theme">
    72 <h3><a href="<?php echo $activate_link; ?>"><?php echo $title; ?></a></h3>
    73 
    74 <a href="<?php echo $activate_link; ?>" class="screenshot">
     95        <a href="<?php echo $activate_link; ?>" class="<?php echo $thickbox_class; ?> screenshot">
    7596<?php if ( $screenshot ) : ?>
    76 <img src="<?php echo get_option('siteurl') . '/' . $stylesheet_dir . '/' . $screenshot; ?>" alt="" />
     97            <img src="<?php echo ( $tpage == 'stage' ) ? $screenshot : get_option('siteurl') . '/' . $stylesheet_dir . '/' . $screenshot; ?>" alt="" />
    7798<?php endif; ?>
    78 </a>
    79 
    80 <p><?php echo $description; ?></p>
     99        </a>
     100        <h3><a class="<?php echo $thickbox_class; ?>" href="<?php echo $activate_link; ?>"><?php echo $title; ?></a></h3>
     101        <p><?php echo $description; ?></p>
    81102<?php if ( $tags ) : ?>
    82 <p><?php _e('Tags:'); ?> <?php echo join(', ', $tags); ?></p>
     103        <p><?php _e('Tags:'); ?> <?php echo join(', ', $tags); ?></p>
     104        <noscript><p class="themeactions"><a href="<?php echo $preview_link; ?>" title="<?php echo $preview_text; ?>"><?php _e('Preview'); ?></a> <a href="<?php echo $activate_link; ?>" title="<?php echo $activate_text; ?>"><?php _e('Activate'); ?></a></p></noscript>
    83105<?php endif; ?>
    84 </div>
    85 <?php } // end foreach theme_names ?>
    86 
     106        <div style="display:none;"><a class="previewlink" href="<?php echo $preview_link; ?>"><?php echo $preview_text; ?></a> <a class="activatelink" href="<?php echo $activate_link; ?>"><?php echo $activate_text; ?></a></div>
     107<?php endif; // end if not empty theme_name ?>
     108    </td>
     109<?php } // end foreach $cols ?>
     110</tr>
     111<?php } // end foreach $table ?>
     112</table>
    87113<?php } ?>
    88114
  • trunk/wp-admin/wp-admin.css

    r7951 r7961  
    5353}
    5454
    55 .available-theme {
    56     width: 30%;
    57     margin: 0 1em;
    58     float: left;
    59     text-align: center;
    60     height: 28em;
    61     overflow: hidden;
     55table#availablethemes {
     56    border-spacing: 0px;
     57    border: none;
     58    border-top: 1px solid #ccc;
     59    border-bottom: 1px solid #ccc;
     60    margin: 10px auto;
     61}
     62td.available-theme {
     63    vertical-align: top;
     64    width: 240px;
     65    margin: 0;
     66    padding: 20px;
     67    text-align: left;
     68}
     69table#availablethemes td {
     70    border: 1px solid #eee;
     71    border-top: none;
     72}
     73table#availablethemes td.top {
     74    border-top: none;
     75}
     76table#availablethemes td.right {
     77    border-right: none;
     78    border-left: none;
     79}
     80table#availablethemes td.bottom {
     81    border-bottom: none;
     82}
     83table#availablethemes td.left {
     84    border-right: none;
     85    border-left: none;
    6286}
    6387
    6488.available-theme a.screenshot {
    65     width: 250px;
    66     height: 200px;
     89    width: 240px;
     90    height: 180px;
    6791    display: block;
    68     margin: auto;
     92    border: 1px solid #efefef;
    6993    margin-bottom: 10px;
    7094    overflow: hidden;
    71     border-width: 1px;
    72     border-style: solid;
    73 }
    74 
     95}
    7596.available-theme img {
    76     width: 100%;
     97    width: 240px;
     98}
     99.available-theme h3 {
     100    margin: 15px 0 5px;
     101}
     102
     103#current-theme {
     104    margin-top: 1em;
     105}
     106
     107#current-theme a {
     108    border-bottom: none;
     109}
     110
     111#current-theme h3 {
     112    font-size: 17px;
     113    font-weight: normal;
     114    margin: 0;
     115}
     116
     117#current-theme .description {
     118    margin-top: 5px;
     119}
     120
     121#current-theme img {
     122    float: left;
     123    border: 1px solid #666;
     124    margin-right: 1em;
     125    margin-bottom: 1.5em;
     126    width: 150px;
     127}
     128
     129#TB_window #TB_title a.tb-theme-preview-link,
     130#TB_window #TB_title a.tb-theme-preview-link:visited {
     131    font-weight: bold;
     132    color: #999;
     133    text-decoration: none;
     134}
     135
     136#TB_window #TB_title a.tb-theme-preview-link:hover,
     137#TB_window #TB_title a.tb-theme-preview-link:focus {
     138    color: #ccc;
    77139}
    78140
     
    248310    border-width: 1px;
    249311    border-collapse: separate;
    250 }
    251 
    252 #currenttheme img {
    253     float: left;
    254     margin-right: 1em;
    255     margin-bottom: 1.5em;
    256     width: 300px;
    257     border-width: 1px;
    258     border-style: solid;
    259312}
    260313
  • trunk/wp-includes/general-template.php

    r7959 r7961  
    11401140            $_file = $color->url;
    11411141            $_file = ('css/colors-rtl' == $file) ? str_replace('.css','-rtl.css',$_file) : $_file;
     1142        } elseif ( 'css/thickbox' == $file ) {
     1143            $_file = get_option( 'siteurl' ) . "/wp-includes/js/thickbox/thickbox.css";
    11421144        } else {
    11431145            $_file = get_option( 'siteurl' ) . "/wp-admin/$file.css";
     
    11561158        echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . wp_admin_css_uri( $rtl ) . "' type='text/css' />\n", $rtl );
    11571159    }
     1160}
     1161
     1162function add_thickbox() {
     1163    wp_enqueue_script( 'thickbox' );
     1164    add_action( 'admin_print_scripts', 'add_thickbox_css' );
     1165}
     1166
     1167function add_thickbox_css() {
     1168    wp_admin_css( 'css/thickbox' );
    11581169}
    11591170
  • trunk/wp-includes/js/thickbox/thickbox.css

    r7862 r7961  
    4646#TB_window {
    4747    position: fixed;
     48    background: #ffffff;
    4849    z-index: 102;
    4950    color:#000000;
    5051    display:none;
     52    border: 4px solid #525252;
    5153    text-align:left;
    52     top:20px;
     54    top:50%;
    5355    left:50%;
    5456}
     
    5658* html #TB_window { /* ie6 hack */
    5759position: absolute;
    58 margin-top: expression(20) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
     60margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
    5961}
    6062
     
    8183
    8284#TB_closeAjaxWindow{
    83     padding:7px 10px 5px 0;
    84     margin-bottom:1px;
     85    padding:6px 10px 0;
    8586    text-align:right;
    8687    float:right;
     
    8990#TB_ajaxWindowTitle{
    9091    float:left;
    91     padding:7px 0 5px 10px;
    92     margin-bottom:1px;
     92    padding:6px 10px 0;
    9393}
    9494
     
    9696    background-color:#e8e8e8;
    9797    height:27px;
    98     border-width: 4px;
    99     border-color: #525252;
    100     border-style: solid solid none;
    10198}
    10299
     
    156153    border:none;
    157154    margin-bottom:-1px;
    158     margin-top:1px;
    159155    _margin-bottom:1px;
    160156}
  • trunk/wp-includes/script-loader.php

    r7956 r7961  
    206206                'error' => __('Error:')
    207207            ));
     208           
     209            $this->add( 'theme-preview', '/wp-admin/js/theme-preview.js', array( 'thickbox', 'dimensions' ), '20080515' );
    208210        }
    209211    }
  • trunk/wp-includes/theme.php

    r7921 r7961  
    480480}
    481481
     482function preview_theme() {
     483    if ( ! (isset($_GET['template']) && isset($_GET['preview'])) )
     484        return;
     485
     486    if ( !current_user_can( 'switch_themes' ) )
     487        return;
     488
     489    $_GET[template] = preg_replace('|[^a-z0-9]|i', '', $_GET[template]);
     490
     491    add_filter('template', create_function('', "return '$_GET[template]';") );
     492
     493    if ( isset($_GET['stylesheet']) ) {
     494        $_GET[stylesheet] = preg_replace('|[^a-z0-9]|i', '', $_GET[stylesheet]);
     495        add_filter('stylesheet', create_function('', "return '$_GET[stylesheet]';") );
     496    }
     497
     498    ob_start( 'preview_theme_ob_filter' );
     499}
     500add_action('setup_theme', 'preview_theme');
     501
     502function preview_theme_ob_filter( $content ) {
     503    return preg_replace_callback( "|(<a.*?href=([\"']))(.*?)([\"'].*?>)|", 'preview_theme_ob_filter_callback', $content );
     504}
     505
     506function preview_theme_ob_filter_callback( $matches ) {
     507    if (
     508        ( false !== strpos($matches[3], '/wp-admin/') )
     509    ||
     510        ( false !== strpos($matches[3], '://') && 0 !== strpos($matches[3], get_option('home')) )
     511    ||
     512        ( false !== strpos($matches[3], '/feed/') )
     513    ||
     514        ( false !== strpos($matches[3], '/trackback/') )
     515    )
     516        return $matches[1] . "#$matches[2] onclick=$matches[2]return false;" . $matches[4];
     517
     518    $link = add_query_arg( array('preview' => 1, 'template' => $_GET['template'], 'stylesheet' => @$_GET['stylesheet'] ), $matches[3] );
     519    if ( 0 === strpos($link, 'preview=1') )
     520        $link = "?$link";
     521    return $matches[1] . attribute_escape( $link ) . $matches[4];
     522}
     523
    482524function switch_theme($template, $stylesheet) {
    483525    update_option('template', $template);
  • trunk/wp-settings.php

    r7947 r7961  
    426426$wp           =& new WP();
    427427
     428do_action('setup_theme');
    428429
    429430/**
Note: See TracChangeset for help on using the changeset viewer.