Changeset 19815 for trunk/wp-admin/custom-header.php
- Timestamp:
- 02/02/2012 11:35:37 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/custom-header.php
r19712 r19815 189 189 if ( isset( $_POST['resetheader'] ) ) { 190 190 check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); 191 remove_theme_mod( 'header_image' ); 191 $this->process_default_headers(); 192 $default = defined( 'HEADER_IMAGE' ) ? HEADER_IMAGE : ''; 193 $default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() ); 194 foreach ( $this->default_headers as $header => $details ) { 195 if ( $details['url'] == $default ) { 196 $default_data = $details; 197 break; 198 } 199 } 200 set_theme_mod( 'header_image', $default ); 201 if ( empty( $default_data['width'] ) ) 202 $default_data['width'] = HEADER_IMAGE_WIDTH; 203 if ( empty( $default_data['height'] ) ) 204 $default_data['height'] = HEADER_IMAGE_HEIGHT; 205 set_theme_mod( 'header_image_data', (object) $default_data ); 192 206 return; 193 207 } … … 226 240 $this->process_default_headers(); 227 241 $uploaded = get_uploaded_header_images(); 228 if ( isset( $uploaded[$_POST['default-header']] ) ) 242 if ( isset( $uploaded[$_POST['default-header']] ) ) { 229 243 set_theme_mod( 'header_image', esc_url( $uploaded[$_POST['default-header']]['url'] ) ); 230 elseif ( isset( $this->default_headers[$_POST['default-header']] ) ) 244 set_theme_mod( 'header_image_data', (object) $uploaded[$_POST['default-header']] ); 245 } elseif ( isset( $this->default_headers[$_POST['default-header']] ) ) { 231 246 set_theme_mod( 'header_image', esc_url( $this->default_headers[$_POST['default-header']]['url'] ) ); 247 if ( empty( $this->default_headers[$_POST['default-header']]['width'] ) ) 248 $this->default_headers[$_POST['default-header']]['width'] = HEADER_IMAGE_WIDTH; 249 if ( empty( $this->default_headers[$_POST['default-header']]['height'] ) ) 250 $this->default_headers[$_POST['default-header']]['height'] = HEADER_IMAGE_HEIGHT; 251 set_theme_mod( 'header_image_data', (object) $this->default_headers[$_POST['default-header']] ); 252 } 232 253 } 233 254 } … … 290 311 echo '<label><input name="default-header" type="radio" value="' . esc_attr( $header_key ) . '" ' . checked( $header_url, get_theme_mod( 'header_image' ), false ) . ' />'; 291 312 $width = ''; 292 if ( !empty( $header[' uploaded'] ) )313 if ( !empty( $header['attachment_id'] ) ) 293 314 $width = ' width="230"'; 294 315 echo '<img src="' . $header_thumbnail . '" alt="' . esc_attr( $header_desc ) .'" title="' . esc_attr( $header_desc ) . '"' . $width . ' /></label>'; … … 420 441 421 442 jQuery(document).ready(function() { 422 var xinit = <?php echo HEADER_IMAGE_WIDTH; ?>; 423 var yinit = <?php echo HEADER_IMAGE_HEIGHT; ?>; 443 <?php 444 $xinit = HEADER_IMAGE_WIDTH; 445 $yinit = HEADER_IMAGE_HEIGHT; 446 $header_support = get_theme_support( 'custom-header' ); 447 if ( !empty( $header_support[ 0 ][ 'suggested-width' ] ) ) 448 $xinit = $header_support[ 0 ][ 'suggested-width' ]; 449 if ( !empty( $header_support[ 0 ][ 'suggested-height' ] ) ) 450 $yinit = $header_support[ 0 ][ 'suggested-height' ]; 451 ?> 452 var xinit = <?php echo absint( $xinit ); ?>; 453 var yinit = <?php echo absint( $yinit ); ?>; 424 454 var ratio = xinit / yinit; 425 455 var ximg = jQuery('img#upload').width(); … … 439 469 handles: true, 440 470 keys: true, 441 aspectRatio: xinit + ':' + yinit,442 471 show: true, 443 472 x1: 0, … … 445 474 x2: xinit, 446 475 y2: yinit, 476 <?php 477 if ( ! current_theme_supports( 'custom-header', 'flex-height' ) && ! current_theme_supports( 'custom-header', 'flex-width' ) ) { 478 ?> 479 aspectRatio: xinit + ':' + yinit, 480 <?php 481 } 482 if ( ! current_theme_supports( 'custom-header', 'flex-height' ) ) { 483 ?> 447 484 maxHeight: <?php echo HEADER_IMAGE_HEIGHT; ?>, 485 <?php 486 } 487 if ( ! current_theme_supports( 'custom-header', 'flex-width' ) ) { 488 ?> 448 489 maxWidth: <?php echo HEADER_IMAGE_WIDTH; ?>, 490 <?php 491 } 492 ?> 449 493 onInit: function () { 450 494 jQuery('#width').val(xinit); … … 493 537 } else { 494 538 ?> 495 <div id="headimg" style=" max-width:<?php echo HEADER_IMAGE_WIDTH; ?>px;height:<?php echo HEADER_IMAGE_HEIGHT; ?>px;background-image:url(<?php esc_url ( header_image() ) ?>);">539 <div id="headimg" style="background-image:url(<?php esc_url ( header_image() ) ?>);max-width:<?php echo get_header_image_width(); ?>px;height:<?php echo get_header_image_height(); ?>px;"> 496 540 <?php 497 541 if ( 'blank' == get_theme_mod('header_textcolor', HEADER_TEXTCOLOR) || '' == get_theme_mod('header_textcolor', HEADER_TEXTCOLOR) || ! $this->header_text() ) … … 511 555 <td> 512 556 <p><?php _e( 'You can upload a custom header image to be shown at the top of your site instead of the default one. On the next screen you will be able to crop the image.' ); ?><br /> 513 <?php printf( __( 'Images of exactly <strong>%1$d × %2$d pixels</strong> will be used as-is.' ), HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT ); ?></p> 557 <?php 558 if ( ! current_theme_supports( 'custom-header', 'flex-height' ) && ! current_theme_supports( 'custom-header', 'flex-width' ) ) { 559 printf( __( 'Images of exactly <strong>%1$d × %2$d pixels</strong> will be used as-is.' ) . '<br />', HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT ); 560 } elseif ( current_theme_supports( 'custom-header', 'flex-height' ) ) { 561 if ( ! current_theme_supports( 'custom-header', 'flex-width' ) ) 562 printf( __( 'Images should be at least <strong>%1$d pixels</strong> wide.' ) . '<br />', HEADER_IMAGE_WIDTH ); 563 } elseif ( current_theme_supports( 'custom-header', 'flex-width' ) ) { 564 if ( ! current_theme_supports( 'custom-header', 'flex-height' ) ) 565 printf( __( 'Images should be at least <strong>%1$d pixels</strong> tall.' ) . '<br />', HEADER_IMAGE_HEIGHT ); 566 } 567 if ( current_theme_supports( 'custom-header', 'flex-height' ) || current_theme_supports( 'custom-header', 'flex-width' ) ) { 568 $header_support = get_theme_support( 'custom-header' ); 569 if ( !empty( $header_support[ 0 ][ 'suggested-width' ] ) ) 570 printf( __( 'Suggested width is <strong>%1$d pixels</strong>.' ) . '<br />', absint( $header_support[ 0 ][ 'suggested-width' ] ) ); 571 if ( !empty( $header_support[ 0 ][ 'suggested-height' ] ) ) 572 printf( __( 'Suggested height is <strong>%1$d pixels</strong>.' ) . '<br />', absint( $header_support[ 0 ][ 'suggested-height' ] ) ); 573 } 574 ?></p> 514 575 <form enctype="multipart/form-data" id="upload-form" method="post" action="<?php echo esc_attr( add_query_arg( 'step', 2 ) ) ?>"> 515 576 <p> … … 663 724 list($width, $height, $type, $attr) = getimagesize( $file ); 664 725 665 if ( $width == HEADER_IMAGE_WIDTH && $height == HEADER_IMAGE_HEIGHT ) { 726 $header_support = get_theme_support( 'custom-header' ); 727 $max_width = 0; 728 // For flex, limit size of image displayed to 1500px unless theme says otherwise 729 if ( current_theme_supports( 'custom-header', 'flex-width' ) ) 730 $max_width = 1500; 731 732 if ( !empty( $header_support[ 0 ][ 'max-width' ] ) ) 733 $max_width = max( $max_width, absint( $header_support[ 0 ][ 'max-width' ] ) ); 734 735 if ( defined( 'HEADER_IMAGE_WIDTH' ) ) 736 $max_width = max( $max_width, HEADER_IMAGE_WIDTH ); 737 // If flexible height isn't supported and the image is the exact right size 738 if ( ! current_theme_supports( 'custom-header', 'flex-height' ) && ! current_theme_supports( 'custom-header', 'flex-width' ) && $width == HEADER_IMAGE_WIDTH && $height == HEADER_IMAGE_HEIGHT ) { 666 739 // Add the meta-data 667 740 wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); … … 671 744 do_action('wp_create_file_in_uploads', $file, $id); // For replication 672 745 return $this->finished(); 673 } elseif ( $width > HEADER_IMAGE_WIDTH) {674 $oitar = $width / HEADER_IMAGE_WIDTH;675 $image = wp_crop_image($file, 0, 0, $width, $height, HEADER_IMAGE_WIDTH, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file));746 } elseif ( $width > $max_width ) { 747 $oitar = $width / $max_width; 748 $image = wp_crop_image($file, 0, 0, $width, $height, $max_width, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file)); 676 749 if ( is_wp_error( $image ) ) 677 750 wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); … … 734 807 $original = get_attached_file($attachment_id); 735 808 736 $cropped = wp_crop_image( $attachment_id, (int) $_POST['x1'], (int) $_POST['y1'], (int) $_POST['width'], (int) $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT ); 809 $header_support = get_theme_support( 'custom-header' ); 810 $max_width = 0; 811 // For flex, limit size of image displayed to 1500px unless theme says otherwise 812 if ( current_theme_supports( 'custom-header', 'flex-width' ) ) 813 $max_width = 1500; 814 815 if ( !empty( $header_support[ 0 ][ 'max-width' ] ) ) 816 $max_width = max( $max_width, absint( $header_support[ 0 ][ 'max-width' ] ) ); 817 818 if ( defined( 'HEADER_IMAGE_WIDTH' ) ) 819 $max_width = max( $max_width, HEADER_IMAGE_WIDTH ); 820 821 if ( ( current_theme_supports( 'custom-header', 'flex-height' ) && ! current_theme_supports( 'custom-header', 'flex-width' ) ) || $_POST['width'] > $max_width ) 822 $dst_height = absint( $_POST['height'] * ( $max_width / $_POST['width'] ) ); 823 elseif ( current_theme_supports( 'custom-header', 'flex-height' ) && current_theme_supports( 'custom-header', 'flex-width' ) ) 824 $dst_height = absint( $_POST['height'] ); 825 else 826 $dst_height = HEADER_IMAGE_HEIGHT; 827 828 if ( ( current_theme_supports( 'custom-header', 'flex-width' ) && ! current_theme_supports( 'custom-header', 'flex-height' ) ) || $_POST['width'] > $max_width ) 829 $dst_width = absint( $_POST['width'] * ( $max_width / $_POST['width'] ) ); 830 elseif ( current_theme_supports( 'custom-header', 'flex-width' ) && current_theme_supports( 'custom-header', 'flex-height' ) ) 831 $dst_width = absint( $_POST['width'] ); 832 else 833 $dst_width = HEADER_IMAGE_WIDTH; 834 835 $cropped = wp_crop_image( $attachment_id, (int) $_POST['x1'], (int) $_POST['y1'], (int) $_POST['width'], (int) $_POST['height'], $dst_width, $dst_height ); 737 836 if ( is_wp_error( $cropped ) ) 738 837 wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); … … 760 859 761 860 set_theme_mod('header_image', $url); 861 862 $header_data = new stdClass(); 863 $header_data->attachment_id = $attachment_id; 864 $header_data->url = $url; 865 $header_data->thumbnail_url = $url; 866 $header_data->width = $dst_width; 867 $header_data->height = $dst_height; 868 869 set_theme_mod( 'header_image_data', $header_data ); 762 870 763 871 // cleanup
Note: See TracChangeset
for help on using the changeset viewer.