- File:
-
- 1 edited
-
trunk/wp-admin/includes/theme-install.php (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/includes/theme-install.php
r14818 r17149 20 20 ); 21 21 22 23 /**24 * Retrieve theme installer pages from WordPress Themes API.25 *26 * It is possible for a theme to override the Themes API result with three27 * filters. Assume this is for themes, which can extend on the Theme Info to28 * offer more choices. This is very powerful and must be used with care, when29 * overridding the filters.30 *31 * The first filter, 'themes_api_args', is for the args and gives the action as32 * the second parameter. The hook for 'themes_api_args' must ensure that an33 * object is returned.34 *35 * The second filter, 'themes_api', is the result that would be returned.36 *37 * @since 2.8.038 *39 * @param string $action40 * @param array|object $args Optional. Arguments to serialize for the Theme Info API.41 * @return mixed42 */43 function themes_api($action, $args = null) {44 45 if ( is_array($args) )46 $args = (object)$args;47 48 if ( !isset($args->per_page) )49 $args->per_page = 24;50 51 $args = apply_filters('themes_api_args', $args, $action); //NOTE: Ensure that an object is returned via this filter.52 $res = apply_filters('themes_api', false, $action, $args); //NOTE: Allows a theme to completely override the builtin WordPress.org API.53 54 if ( ! $res ) {55 $request = wp_remote_post('http://api.wordpress.org/themes/info/1.0/', array( 'body' => array('action' => $action, 'request' => serialize($args))) );56 if ( is_wp_error($request) ) {57 $res = new WP_Error('themes_api_failed', __('An Unexpected HTTP Error occured during the API request.</p> <p><a href="?" onclick="document.location.reload(); return false;">Try again</a>'), $request->get_error_message() );58 } else {59 $res = unserialize($request['body']);60 if ( ! $res )61 $res = new WP_Error('themes_api_failed', __('An unknown error occured'), $request['body']);62 }63 }64 //var_dump(array($args, $res));65 return apply_filters('themes_api_result', $res, $action, $args);66 }67 68 22 /** 69 23 * Retrieve list of WordPress theme features (aka theme tags) 70 24 * 71 25 * @since 2.8.0 26 * 27 * @deprecated since 3.1.0 Use get_theme_feature_list() instead. 72 28 * 73 29 * @return array … … 87 43 88 44 return $feature_list; 89 }90 91 add_action('install_themes_search', 'install_theme_search', 10, 1);92 /**93 * Display theme search results94 *95 * @since 2.8.096 *97 * @param string $page98 */99 function install_theme_search($page) {100 global $theme_field_defaults;101 102 $type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : '';103 $term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : '';104 105 $args = array();106 107 switch( $type ){108 case 'tag':109 $terms = explode(',', $term);110 $terms = array_map('trim', $terms);111 $terms = array_map('sanitize_title_with_dashes', $terms);112 $args['tag'] = $terms;113 break;114 case 'term':115 $args['search'] = $term;116 break;117 case 'author':118 $args['author'] = $term;119 break;120 }121 122 $args['page'] = $page;123 $args['fields'] = $theme_field_defaults;124 125 if ( !empty( $_POST['features'] ) ) {126 $terms = $_POST['features'];127 $terms = array_map( 'trim', $terms );128 $terms = array_map( 'sanitize_title_with_dashes', $terms );129 $args['tag'] = $terms;130 $_REQUEST['s'] = implode( ',', $terms );131 $_REQUEST['type'] = 'tag';132 }133 134 $api = themes_api('query_themes', $args);135 136 if ( is_wp_error($api) )137 wp_die($api);138 139 add_action('install_themes_table_header', 'install_theme_search_form');140 141 display_themes($api->themes, $api->info['page'], $api->info['pages']);142 45 } 143 46 … … 153 56 <p class="install-help"><?php _e('Search for themes by keyword, author, or tag.') ?></p> 154 57 155 <form id="search-themes" method="post" action="<?php echo admin_url( 'theme-install.php?tab=search' ); ?>"> 58 <form id="search-themes" method="get" action=""> 59 <input type="hidden" name="tab" value="search" /> 156 60 <select name="type" id="typeselector"> 157 61 <option value="term" <?php selected('term', $type) ?>><?php _e('Term'); ?></option> … … 160 64 </select> 161 65 <input type="text" name="s" size="30" value="<?php echo esc_attr($term) ?>" /> 162 < input type="submit" name="search" value="<?php esc_attr_e('Search'); ?>" class="button" />66 <?php submit_button( __( 'Search' ), 'button', 'search', false ); ?> 163 67 </form> 164 68 <?php 165 69 } 166 70 167 add_action('install_themes_dashboard', 'install_themes_dashboard');168 71 /** 169 72 * Display tags filter for themes. … … 175 78 ?> 176 79 <h4><?php _e('Feature Filter') ?></h4> 177 <form method="post" action="<?php echo admin_url( 'theme-install.php?tab=search' ); ?>">80 <form method="post" action="<?php echo self_admin_url( 'theme-install.php?tab=search' ); ?>"> 178 81 <p class="install-help"><?php _e('Find a theme based on specific features') ?></p> 179 82 <?php 180 $feature_list = install_themes_feature_list( );83 $feature_list = get_theme_feature_list( ); 181 84 echo '<div class="feature-filter">'; 182 $trans = array ('Colors' => __('Colors'), 'black' => __('Black'), 'blue' => __('Blue'), 'brown' => __('Brown'),183 'green' => __('Green'), 'orange' => __('Orange'), 'pink' => __('Pink'), 'purple' => __('Purple'), 'red' => __('Red'),184 'silver' => __('Silver'), 'tan' => __('Tan'), 'white' => __('White'), 'yellow' => __('Yellow'), 'dark' => __('Dark'),185 'light' => __('Light'), 'Columns' => __('Columns'), 'one-column' => __('One Column'), 'two-columns' => __('Two Columns'),186 'three-columns' => __('Three Columns'), 'four-columns' => __('Four Columns'), 'left-sidebar' => __('Left Sidebar'),187 'right-sidebar' => __('Right Sidebar'), 'Width' => __('Width'), 'fixed-width' => __('Fixed Width'), 'flexible-width' => __('Flexible Width'),188 'Features' => __('Features'), 'custom-colors' => __('Custom Colors'), 'custom-header' => __('Custom Header'), 'theme-options' => __('Theme Options'),189 'threaded-comments' => __('Threaded Comments'), 'sticky-post' => __('Sticky Post'), 'microformats' => __('Microformats'),190 'Subject' => __('Subject'), 'holiday' => __('Holiday'), 'photoblogging' => __('Photoblogging'), 'seasonal' => __('Seasonal'),191 );192 85 193 86 foreach ( (array) $feature_list as $feature_name => $features ) { 194 if ( isset($trans[$feature_name]) )195 $feature_name = $trans[$feature_name];196 87 $feature_name = esc_html( $feature_name ); 197 88 echo '<div class="feature-name">' . $feature_name . '</div>'; 198 89 199 echo '<ol style="float: left; width: 725px;" class="feature-group">'; 200 foreach ( $features as $feature ) { 201 $feature_name = $feature; 202 if ( isset($trans[$feature]) ) 203 $feature_name = $trans[$feature]; 90 echo '<ol class="feature-group">'; 91 foreach ( $features as $feature => $feature_name ) { 204 92 $feature_name = esc_html( $feature_name ); 205 93 $feature = esc_attr($feature); … … 219 107 </div> 220 108 <br class="clear" /> 221 < p><input type="submit" name="search" value="<?php esc_attr_e('Find Themes'); ?>" class="button" /></p>109 <?php submit_button( __( 'Find Themes' ), 'button', 'search' ); ?> 222 110 </form> 223 111 <?php 224 112 } 225 226 add_action('install_themes_featured', 'install_themes_featured', 10, 1); 227 /** 228 * Display featured themes. 229 * 230 * @since 2.8.0 231 * 232 * @param string $page 233 */ 234 function install_themes_featured($page = 1) { 235 global $theme_field_defaults; 236 $args = array('browse' => 'featured', 'page' => $page, 'fields' => $theme_field_defaults); 237 $api = themes_api('query_themes', $args); 238 if ( is_wp_error($api) ) 239 wp_die($api); 240 display_themes($api->themes, $api->info['page'], $api->info['pages']); 241 } 242 243 add_action('install_themes_new', 'install_themes_new', 10, 1); 244 /** 245 * Display new themes/ 246 * 247 * @since 2.8.0 248 * 249 * @param string $page 250 */ 251 function install_themes_new($page = 1) { 252 global $theme_field_defaults; 253 $args = array('browse' => 'new', 'page' => $page, 'fields' => $theme_field_defaults); 254 $api = themes_api('query_themes', $args); 255 if ( is_wp_error($api) ) 256 wp_die($api); 257 display_themes($api->themes, $api->info['page'], $api->info['pages']); 258 } 259 260 add_action('install_themes_updated', 'install_themes_updated', 10, 1); 261 /** 262 * Display recently updated themes. 263 * 264 * @since 2.8.0 265 * 266 * @param string $page 267 */ 268 function install_themes_updated($page = 1) { 269 global $theme_field_defaults; 270 $args = array('browse' => 'updated', 'page' => $page, 'fields' => $theme_field_defaults); 271 $api = themes_api('query_themes', $args); 272 display_themes($api->themes, $api->info['page'], $api->info['pages']); 273 } 274 275 add_action('install_themes_upload', 'install_themes_upload', 10, 1); 113 add_action('install_themes_dashboard', 'install_themes_dashboard'); 114 276 115 function install_themes_upload($page = 1) { 277 116 ?> 278 117 <h4><?php _e('Install a theme in .zip format') ?></h4> 279 118 <p class="install-help"><?php _e('If you have a theme in a .zip format, you may install it by uploading it here.') ?></p> 280 <form method="post" enctype="multipart/form-data" action="<?php echo admin_url('update.php?action=upload-theme') ?>">119 <form method="post" enctype="multipart/form-data" action="<?php echo self_admin_url('update.php?action=upload-theme') ?>"> 281 120 <?php wp_nonce_field( 'theme-upload') ?> 282 121 <input type="file" name="themezip" /> 283 <input type="submit" 284 class="button" value="<?php esc_attr_e('Install Now') ?>" /> 122 <?php submit_button( __( 'Install Now' ), 'button', 'install-theme-submit', false ); ?> 285 123 </form> 286 124 <?php 287 125 } 126 add_action('install_themes_upload', 'install_themes_upload', 10, 1); 288 127 289 128 function display_theme($theme, $actions = null, $show_details = true) { … … 301 140 if ( !is_array($actions) ) { 302 141 $actions = array(); 303 $actions[] = '<a href="' . admin_url('theme-install.php?tab=theme-information&theme=' . $theme->slug .142 $actions[] = '<a href="' . self_admin_url('theme-install.php?tab=theme-information&theme=' . $theme->slug . 304 143 '&TB_iframe=true&tbWidth=500&tbHeight=385') . '" class="thickbox thickbox-preview onclick" title="' . esc_attr(sprintf(__('Install “%s”'), $name)) . '">' . __('Install') . '</a>'; 305 $actions[] = '<a href="' . $preview_link . '" class="thickbox thickbox-preview onclick previewlink" title="' . esc_attr(sprintf(__('Preview “%s”'), $name)) . '">' . __('Preview') . '</a>'; 144 if ( !is_network_admin() ) 145 $actions[] = '<a href="' . $preview_link . '" class="thickbox thickbox-preview onclick previewlink" title="' . esc_attr(sprintf(__('Preview “%s”'), $name)) . '">' . __('Preview') . '</a>'; 306 146 $actions = apply_filters('theme_install_action_links', $actions, $theme); 307 147 } … … 361 201 * 362 202 * @since 2.8.0 363 * 364 * @param array $themes List of themes. 365 * @param string $page 366 * @param int $totalpages Number of pages. 367 */ 368 function display_themes($themes, $page = 1, $totalpages = 1) { 369 $type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : ''; 370 $term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : ''; 371 ?> 372 <div class="tablenav"> 373 <div class="alignleft actions"><?php do_action('install_themes_table_header'); ?></div> 374 <?php 375 $url = esc_url($_SERVER['REQUEST_URI']); 376 if ( ! empty($term) ) 377 $url = add_query_arg('s', $term, $url); 378 if ( ! empty($type) ) 379 $url = add_query_arg('type', $type, $url); 380 381 $page_links = paginate_links( array( 382 'base' => add_query_arg('paged', '%#%', $url), 383 'format' => '', 384 'prev_text' => __('«'), 385 'next_text' => __('»'), 386 'total' => $totalpages, 387 'current' => $page 388 )); 389 390 if ( $page_links ) 391 echo "\t\t<div class='tablenav-pages'>$page_links</div>"; 392 ?> 393 </div> 394 <br class="clear" /> 395 <?php 396 if ( empty($themes) ) { 397 _e('No themes found'); 398 return; 399 } 400 ?> 401 <table id="availablethemes" cellspacing="0" cellpadding="0"> 402 <?php 403 $rows = ceil(count($themes) / 3); 404 $table = array(); 405 $theme_keys = array_keys($themes); 406 for ( $row = 1; $row <= $rows; $row++ ) 407 for ( $col = 1; $col <= 3; $col++ ) 408 $table[$row][$col] = array_shift($theme_keys); 409 410 foreach ( $table as $row => $cols ) { 411 ?> 412 <tr> 413 <?php 414 415 foreach ( $cols as $col => $theme_index ) { 416 $class = array('available-theme'); 417 if ( $row == 1 ) $class[] = 'top'; 418 if ( $col == 1 ) $class[] = 'left'; 419 if ( $row == $rows ) $class[] = 'bottom'; 420 if ( $col == 3 ) $class[] = 'right'; 421 ?> 422 <td class="<?php echo join(' ', $class); ?>"><?php 423 if ( isset($themes[$theme_index]) ) 424 display_theme($themes[$theme_index]); 425 ?></td> 426 <?php } // end foreach $cols ?> 427 </tr> 428 <?php } // end foreach $table ?> 429 </table> 430 431 <div class="tablenav"><?php if ( $page_links ) 432 echo "\t\t<div class='tablenav-pages'>$page_links</div>"; ?> <br 433 class="clear" /> 434 </div> 435 436 <?php 437 } 438 439 add_action('install_themes_pre_theme-information', 'install_theme_information'); 203 */ 204 function display_themes() { 205 global $wp_list_table; 206 207 $wp_list_table->display(); 208 } 209 add_action('install_themes_search', 'display_themes'); 210 add_action('install_themes_featured', 'display_themes'); 211 add_action('install_themes_new', 'display_themes'); 212 add_action('install_themes_updated', 'display_themes'); 440 213 441 214 /** … … 516 289 case 'install': 517 290 if ( current_user_can('install_themes') ) : 518 $buttons .= '<a class="button-primary" id="install" href="' . wp_nonce_url( admin_url('update.php?action=install-theme&theme=' . $api->slug), 'install-theme_' . $api->slug) . '" target="_parent">' . __('Install Now') . '</a>';291 $buttons .= '<a class="button-primary" id="install" href="' . wp_nonce_url(self_admin_url('update.php?action=install-theme&theme=' . $api->slug), 'install-theme_' . $api->slug) . '" target="_parent">' . __('Install Now') . '</a>'; 519 292 endif; 520 293 break; 521 294 case 'update_available': 522 295 if ( current_user_can('update_themes') ) : 523 $buttons .= '<a class="button-primary" id="install" href="' . wp_nonce_url( admin_url('update.php?action=upgrade-theme&theme=' . $update_file), 'upgrade-theme_' . $update_file) . '" target="_parent">' . __('Install Update Now') . '</a>';296 $buttons .= '<a class="button-primary" id="install" href="' . wp_nonce_url(self_admin_url('update.php?action=upgrade-theme&theme=' . $update_file), 'upgrade-theme_' . $update_file) . '" target="_parent">' . __('Install Update Now') . '</a>'; 524 297 endif; 525 298 break; … … 547 320 exit; 548 321 } 322 add_action('install_themes_pre_theme-information', 'install_theme_information'); 323
Note: See TracChangeset
for help on using the changeset viewer.