Changeset 19815
- Timestamp:
- 02/02/2012 11:35:37 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/css/wp-admin.dev.css
r19813 r19815 4495 4495 .appearance_page_custom-header #headimg { 4496 4496 border: 1px solid #DFDFDF; 4497 min-height: 100px;4498 4497 width: 100%; 4499 4498 } -
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 -
trunk/wp-includes/theme.php
r19687 r19815 1352 1352 return apply_filters( "theme_mod_$name", $mods[ $name ] ); 1353 1353 1354 return apply_filters( "theme_mod_$name", sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() ) ); 1354 if ( is_string( $default ) ) 1355 $default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() ); 1356 1357 return apply_filters( "theme_mod_$name", $default ); 1355 1358 } 1356 1359 … … 1458 1461 1459 1462 /** 1460 * Get random header image from registered images in theme. 1463 * Get random header image data from registered images in theme. 1464 * 1465 * @since 3.4.0 1466 * 1467 * @access private 1468 * 1469 * @return string Path to header image 1470 */ 1471 1472 function _get_random_header_data() { 1473 static $_wp_random_header; 1474 1475 if ( empty( $_wp_random_header ) ) { 1476 global $_wp_default_headers; 1477 $header_image_mod = get_theme_mod( 'header_image', '' ); 1478 $headers = array(); 1479 1480 if ( 'random-uploaded-image' == $header_image_mod ) 1481 $headers = get_uploaded_header_images(); 1482 elseif ( ! empty( $_wp_default_headers ) ) { 1483 if ( 'random-default-image' == $header_image_mod ) { 1484 $headers = $_wp_default_headers; 1485 } else { 1486 $is_random = get_theme_support( 'custom-header' ); 1487 if ( isset( $is_random[ 0 ] ) && !empty( $is_random[ 0 ][ 'random-default' ] ) ) 1488 $headers = $_wp_default_headers; 1489 } 1490 } 1491 1492 if ( empty( $headers ) ) 1493 return stdClass(); 1494 1495 $_wp_random_header = (object) $headers[ array_rand( $headers ) ]; 1496 1497 $_wp_random_header->url = sprintf( $_wp_random_header->url, get_template_directory_uri(), get_stylesheet_directory_uri() ); 1498 $_wp_random_header->thumbnail_url = sprintf( $_wp_random_header->thumbnail_url, get_template_directory_uri(), get_stylesheet_directory_uri() ); 1499 } 1500 return $_wp_random_header; 1501 } 1502 1503 /** 1504 * Get random header image url from registered images in theme. 1461 1505 * 1462 1506 * @since 3.2.0 … … 1464 1508 * @return string Path to header image 1465 1509 */ 1510 1466 1511 function get_random_header_image() { 1467 global $_wp_default_headers; 1468 1469 $header_image_mod = get_theme_mod( 'header_image', '' ); 1470 $headers = array(); 1471 1472 if ( 'random-uploaded-image' == $header_image_mod ) 1473 $headers = get_uploaded_header_images(); 1474 elseif ( ! empty( $_wp_default_headers ) ) { 1475 if ( 'random-default-image' == $header_image_mod ) { 1476 $headers = $_wp_default_headers; 1477 } else { 1478 $is_random = get_theme_support( 'custom-header' ); 1479 if ( isset( $is_random[ 0 ] ) && !empty( $is_random[ 0 ][ 'random-default' ] ) ) 1480 $headers = $_wp_default_headers; 1481 } 1482 } 1483 1484 if ( empty( $headers ) ) 1512 $random_image = _get_random_header_data(); 1513 if ( empty( $random_image->url ) ) 1485 1514 return ''; 1486 1487 $random_image = array_rand( $headers ); 1488 $header_url = sprintf( $headers[$random_image]['url'], get_template_directory_uri(), get_stylesheet_directory_uri() ); 1489 1490 return $header_url; 1515 return $random_image->url; 1491 1516 } 1492 1517 … … 1548 1573 foreach ( (array) $headers as $header ) { 1549 1574 $url = esc_url_raw( $header->guid ); 1550 $header = basename($url); 1551 $header_images[$header] = array(); 1552 $header_images[$header]['url'] = $url; 1553 $header_images[$header]['thumbnail_url'] = $url; 1554 $header_images[$header]['uploaded'] = true; 1575 $header_data = wp_get_attachment_metadata( $header->ID ); 1576 $header_index = basename($url); 1577 $header_images[$header_index] = array(); 1578 $header_images[$header_index]['attachment_id'] = $header->ID; 1579 $header_images[$header_index]['url'] = $url; 1580 $header_images[$header_index]['thumbnail_url'] = $url; 1581 $header_images[$header_index]['width'] = $header_data['width']; 1582 $header_images[$header_index]['height'] = $header_data['height']; 1555 1583 } 1556 1584 1557 1585 return $header_images; 1586 } 1587 1588 /** 1589 * Get the header image data. 1590 * 1591 * @since 3.4.0 1592 * 1593 * @return object 1594 */ 1595 function get_current_header_data() { 1596 $data = is_random_header_image()? _get_random_header_data() : get_theme_mod( 'header_image_data' ); 1597 $default = array( 1598 'url' => '', 1599 'thumbnail_url' => '', 1600 'width' => '', 1601 'height' => '', 1602 ); 1603 return (object) wp_parse_args( $data, $default ); 1604 } 1605 1606 /** 1607 * Get the header image width. 1608 * 1609 * @since 3.4.0 1610 * 1611 * @return int 1612 */ 1613 function get_header_image_width() { 1614 return empty( get_current_header_data()->width )? HEADER_IMAGE_WIDTH : get_current_header_data()->width; 1615 } 1616 1617 /** 1618 * Get the header image height. 1619 * 1620 * @since 3.4.0 1621 * 1622 * @return int 1623 */ 1624 function get_header_image_height() { 1625 return empty( get_current_header_data()->height )? HEADER_IMAGE_HEIGHT : get_current_header_data()->height; 1558 1626 } 1559 1627 … … 1956 2024 return in_array( $post_format, $_wp_theme_features[$feature][0] ); 1957 2025 break; 2026 2027 case 'custom-header': 2028 // specific custom header capabilities can be registered by passing 2029 // an array to add_theme_support() 2030 $header_support = $args[0]; 2031 return ( isset( $_wp_theme_features[$feature][0][$header_support] ) && $_wp_theme_features[$feature][0][$header_support] ); 2032 break; 1958 2033 } 1959 2034
Note: See TracChangeset
for help on using the changeset viewer.