Changeset 21037
- Timestamp:
- 06/10/2012 12:32:19 AM (12 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/custom-background.php
r21009 r21037 384 384 update_post_meta( $id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) ); 385 385 386 set_theme_mod('background_image', esc_url ($url));386 set_theme_mod('background_image', esc_url_raw($url)); 387 387 388 388 $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' ); 389 set_theme_mod('background_image_thumb', esc_url ( $thumbnail[0] ) );389 set_theme_mod('background_image_thumb', esc_url_raw( $thumbnail[0] ) ); 390 390 391 391 do_action('wp_create_file_in_uploads', $file, $id); // For replication … … 426 426 $url = wp_get_attachment_image_src( $attachment_id, $size ); 427 427 $thumbnail = wp_get_attachment_image_src( $attachment_id, 'thumbnail' ); 428 set_theme_mod( 'background_image', esc_url ( $url[0] ) );429 set_theme_mod( 'background_image_thumb', esc_url ( $thumbnail[0] ) );428 set_theme_mod( 'background_image', esc_url_raw( $url[0] ) ); 429 set_theme_mod( 'background_image_thumb', esc_url_raw( $thumbnail[0] ) ); 430 430 exit; 431 431 } -
trunk/wp-admin/custom-header.php
r21009 r21037 212 212 if ( isset( $_POST['resetheader'] ) ) { 213 213 check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); 214 $this->process_default_headers(); 215 $default = get_theme_support( 'custom-header', 'default-image' ); 216 $default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() ); 217 foreach ( $this->default_headers as $header => $details ) { 218 if ( $details['url'] == $default ) { 219 $default_data = $details; 220 break; 221 } 222 } 223 set_theme_mod( 'header_image', $default ); 224 if ( empty( $default_data['width'] ) ) 225 $default_data['width'] = get_theme_support( 'custom-header', 'width' ); 226 if ( empty( $default_data['height'] ) ) 227 $default_data['height'] = get_theme_support( 'custom-header', 'height' ); 228 set_theme_mod( 'header_image_data', (object) $default_data ); 214 $this->reset_header_image(); 229 215 return; 230 216 } … … 238 224 if ( isset( $_POST['removeheader'] ) ) { 239 225 check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); 240 set_theme_mod( 'header_image', 'remove-header');226 $this->remove_header_image(); 241 227 return; 242 228 } … … 257 243 if ( isset( $_POST['default-header'] ) ) { 258 244 check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); 259 if ( 'random-default-image' == $_POST['default-header'] ) { 260 set_theme_mod( 'header_image', 'random-default-image' ); 261 } elseif ( 'random-uploaded-image' == $_POST['default-header'] ) { 262 set_theme_mod( 'header_image', 'random-uploaded-image' ); 263 } else { 264 $this->process_default_headers(); 265 $uploaded = get_uploaded_header_images(); 266 if ( isset( $uploaded[$_POST['default-header']] ) ) { 267 set_theme_mod( 'header_image', esc_url( $uploaded[$_POST['default-header']]['url'] ) ); 268 set_theme_mod( 'header_image_data', (object) $uploaded[$_POST['default-header']] ); 269 } elseif ( isset( $this->default_headers[$_POST['default-header']] ) ) { 270 set_theme_mod( 'header_image', esc_url( $this->default_headers[$_POST['default-header']]['url'] ) ); 271 if ( empty( $this->default_headers[$_POST['default-header']]['width'] ) ) 272 $this->default_headers[$_POST['default-header']]['width'] = get_theme_support( 'custom-header', 'width' ); 273 if ( empty( $this->default_headers[$_POST['default-header']]['height'] ) ) 274 $this->default_headers[$_POST['default-header']]['height'] = get_theme_support( 'custom-header', 'height' ); 275 set_theme_mod( 'header_image_data', (object) $this->default_headers[$_POST['default-header']] ); 276 } 277 } 245 $this->set_header_image( $_POST['default-header'] ); 246 return; 278 247 } 279 248 } … … 719 688 720 689 if ( empty( $_POST ) && isset( $_GET['file'] ) ) { 721 $ id = absint( $_GET['file'] );722 $file = get_attached_file( $ id, true );723 $url = wp_get_attachment_image_src( $ id, 'full');690 $attachment_id = absint( $_GET['file'] ); 691 $file = get_attached_file( $attachment_id, true ); 692 $url = wp_get_attachment_image_src( $attachment_id, 'full'); 724 693 $url = $url[0]; 725 694 } elseif ( isset( $_POST ) ) { … … 730 699 list( $width, $height, $type, $attr ) = getimagesize( $file ); 731 700 } else { 732 $data = wp_get_attachment_metadata( $ id );701 $data = wp_get_attachment_metadata( $attachment_id ); 733 702 $height = $data[ 'height' ]; 734 703 $width = $data[ 'width' ]; … … 751 720 // Add the meta-data 752 721 if ( file_exists( $file ) ) 753 wp_update_attachment_metadata( $ id, wp_generate_attachment_metadata( $id, $file ) );754 update_post_meta( $id, '_wp_attachment_is_custom_header', get_option('stylesheet' ) ); 755 756 set_theme_mod('header_image', esc_url($url)); 757 do_action('wp_create_file_in_uploads', $file, $ id); // For replication722 wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $file ) ); 723 724 $this->set_header_image( compact( 'url', 'attachment_id', 'width', 'height' ) ); 725 726 do_action('wp_create_file_in_uploads', $file, $attachment_id); // For replication 758 727 return $this->finished(); 759 728 } elseif ( $width > $max_width ) { 760 729 $oitar = $width / $max_width; 761 $image = wp_crop_image($ id, 0, 0, $width, $height, $max_width, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file));730 $image = wp_crop_image($attachment_id, 0, 0, $width, $height, $max_width, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file)); 762 731 if ( ! $image || is_wp_error( $image ) ) 763 732 wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); 764 733 765 $image = apply_filters('wp_create_file_in_uploads', $image, $ id); // For replication734 $image = apply_filters('wp_create_file_in_uploads', $image, $attachment_id); // For replication 766 735 767 736 $url = str_replace(basename($url), basename($image), $url); … … 789 758 <input type="hidden" name="width" id="width" value="<?php echo esc_attr( $width ); ?>"/> 790 759 <input type="hidden" name="height" id="height" value="<?php echo esc_attr( $height ); ?>"/> 791 <input type="hidden" name="attachment_id" id="attachment_id" value="<?php echo esc_attr( $ id ); ?>" />760 <input type="hidden" name="attachment_id" id="attachment_id" value="<?php echo esc_attr( $attachment_id ); ?>" /> 792 761 <input type="hidden" name="oitar" id="oitar" value="<?php echo esc_attr( $oitar ); ?>" /> 793 762 <?php if ( empty( $_POST ) && isset( $_GET['file'] ) ) { ?> … … 836 805 837 806 // Save the data 838 $ id = wp_insert_attachment( $object, $file );839 return compact( ' id', 'file', 'filename', 'url', 'type' );807 $attachment_id = wp_insert_attachment( $object, $file ); 808 return compact( 'attachment_id', 'file', 'filename', 'url', 'type' ); 840 809 } 841 810 … … 919 888 $attachment_id = wp_insert_attachment( $object, $cropped ); 920 889 wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $cropped ) ); 921 update_post_meta( $attachment_id, '_wp_attachment_is_custom_header', get_option( 'stylesheet' ) ); 922 923 set_theme_mod('header_image', $url); 924 925 $header_data = new stdClass(); 926 $header_data->attachment_id = $attachment_id; 927 $header_data->url = $url; 928 $header_data->thumbnail_url = $url; 929 $header_data->width = $dst_width; 930 $header_data->height = $dst_height; 931 932 set_theme_mod( 'header_image_data', $header_data ); 890 891 $width = $dst_width; 892 $height = $dst_height; 893 $this->set_header_image( compact( 'url', 'attachment_id', 'width', 'height' ) ); 933 894 934 895 // cleanup … … 998 959 } 999 960 961 /** 962 * Choose a header image, selected from existing uploaded and default headers, 963 * or provide an array of uploaded header data (either new, or from media library). 964 * 965 * @param mixed $choice Which header image to select. Allows for values of 'random-default-image', 966 * for randomly cycling among the default images; 'random-uploaded-image', for randomly cycling 967 * among the uploaded images; the key of a default image registered for that theme; and 968 * the key of an image uploaded for that theme (the basename of the URL). 969 * Or an array of arguments: attachment_id, url, width, height. All are required. 970 * 971 * @since 3.4.0 972 */ 973 final public function set_header_image( $choice ) { 974 if ( is_array( $choice ) || is_object( $choice ) ) { 975 $choice = (array) $choice; 976 if ( ! isset( $choice['attachment_id'] ) || ! isset( $choice['url'] ) ) 977 return; 978 979 $choice['url'] = esc_url_raw( $choice['url'] ); 980 981 $header_image_data = (object) array( 982 'attachment_id' => $choice['attachment_id'], 983 'url' => $choice['url'], 984 'thumbnail_url' => $choice['url'], 985 'height' => $choice['height'], 986 'width' => $choice['width'], 987 ); 988 989 update_post_meta( $choice['attachment_id'], '_wp_attachment_is_custom_header', get_stylesheet() ); 990 set_theme_mod( 'header_image', $choice['url'] ); 991 set_theme_mod( 'header_image_data', $header_image_data ); 992 return; 993 } 994 995 if ( in_array( $choice, array( 'remove-header', 'random-default-image', 'random-uploaded-image' ) ) ) { 996 set_theme_mod( 'header_image', $choice ); 997 remove_theme_mod( 'header_image_data' ); 998 return; 999 } 1000 1001 $uploaded = get_uploaded_header_images(); 1002 if ( $uploaded && isset( $uploaded[ $choice ] ) ) { 1003 $header_image_data = $uploaded[ $choice ]; 1004 1005 } else { 1006 $this->process_default_headers(); 1007 if ( isset( $this->default_headers[ $choice ] ) ) 1008 $header_image_data = $this->default_headers[ $choice ]; 1009 else 1010 return; 1011 } 1012 1013 set_theme_mod( 'header_image', esc_url_raw( $header_image_data['url'] ) ); 1014 set_theme_mod( 'header_image_data', $header_image_data ); 1015 } 1016 1017 /** 1018 * Remove a header image. 1019 * 1020 * @since 3.4.0 1021 */ 1022 final public function remove_header_image() { 1023 return $this->set_header_image( 'remove-header' ); 1024 } 1025 1026 /** 1027 * Reset a header image to the default image for the theme. 1028 * 1029 * This method does not do anything if the theme does not have a default header image. 1030 * 1031 * @since 3.4.0 1032 */ 1033 final public function reset_header_image() { 1034 $this->process_default_headers(); 1035 $default = get_theme_support( 'custom-header', 'default-image' ); 1036 1037 if ( ! $default ) 1038 return $this->remove_header_image(); 1039 1040 $default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() ); 1041 1042 foreach ( $this->default_headers as $header => $details ) { 1043 if ( $details['url'] == $default ) { 1044 $default_data = $details; 1045 break; 1046 } 1047 } 1048 1049 set_theme_mod( 'header_image', $default ); 1050 set_theme_mod( 'header_image_data', (object) $default_data ); 1051 } 1000 1052 } -
trunk/wp-admin/js/customize-controls.dev.js
r21033 r21037 240 240 }); 241 241 242 // Bind events to switch image urls. 242 243 this.library.on( 'click', 'a', function( event ) { 243 244 var value = $(this).data('customizeImageValue'); … … 264 265 this.tabs.uploaded.both.removeClass('hidden'); 265 266 266 $( '<a href="#" class="thumbnail"></a>' )267 attachment.element = $( '<a href="#" class="thumbnail"></a>' ) 267 268 .data( 'customizeImageValue', attachment.url ) 268 269 .append( '<img src="' + attachment.url+ '" />' ) … … 869 870 }); 870 871 872 // Handle header image data 873 api.control( 'header_image', function( control ) { 874 control.setting.bind( function( to ) { 875 if ( to === control.params.removed ) 876 control.settings.data.set( false ); 877 }); 878 879 control.library.on( 'click', 'a', function( event ) { 880 control.settings.data.set( $(this).data('customizeHeaderImageData') ); 881 }); 882 883 control.uploader.success = function( attachment ) { 884 var data; 885 886 api.ImageControl.prototype.success.call( control, attachment ); 887 888 data = { 889 attachment_id: attachment.id, 890 url: attachment.url, 891 thumbnail_url: attachment.url, 892 height: attachment.meta.height, 893 width: attachment.meta.width 894 }; 895 896 attachment.element.data( 'customizeHeaderImageData', data ); 897 control.settings.data.set( data ); 898 } 899 }); 900 871 901 api.trigger( 'ready' ); 872 902 }); -
trunk/wp-includes/class-wp-customize-control.php
r21014 r21037 12 12 public $id; 13 13 14 // All settings tied to the control. 14 15 public $settings; 15 public $setting; 16 17 // The primary setting for the control (if there is one). 18 public $setting = 'default'; 16 19 17 20 public $priority = 10; … … 456 459 parent::__construct( $manager, 'header_image', array( 457 460 'label' => __( 'Header Image' ), 461 'settings' => array( 462 'default' => 'header_image', 463 'data' => 'header_image_data', 464 ), 458 465 'section' => 'header_image', 459 466 'context' => 'custom-header', … … 471 478 } 472 479 480 public function print_header_image( $choice, $header ) { 481 $header['url'] = set_url_scheme( $header['url'] ); 482 $header['thumbnail_url'] = set_url_scheme( $header['thumbnail_url'] ); 483 484 $header_image_data = array( 'choice' => $choice ); 485 foreach ( array( 'attachment_id', 'width', 'height', 'url', 'thumbnail_url' ) as $key ) { 486 if ( isset( $header[ $key ] ) ) 487 $header_image_data[ $key ] = $header[ $key ]; 488 } 489 490 491 ?> 492 <a href="#" class="thumbnail" 493 data-customize-image-value="<?php echo esc_url( $header['url'] ); ?>" 494 data-customize-header-image-data="<?php echo esc_attr( json_encode( $header_image_data ) ); ?>"> 495 <img src="<?php echo esc_url( $header['thumbnail_url'] ); ?>" /> 496 </a> 497 <?php 498 } 499 473 500 public function tab_uploaded() { 474 501 $headers = get_uploaded_header_images(); … … 476 503 ?><div class="uploaded-target"></div><?php 477 504 478 foreach ( $headers as $ header )479 $this->print_ tab_image( $header['url'], $header['thumbnail_url']);505 foreach ( $headers as $choice => $header ) 506 $this->print_header_image( $choice, $header ); 480 507 } 481 508 … … 484 511 $custom_image_header->process_default_headers(); 485 512 486 foreach ( $custom_image_header->default_headers as $ header )487 $this->print_ tab_image( $header['url'], $header['thumbnail_url']);513 foreach ( $custom_image_header->default_headers as $choice => $header ) 514 $this->print_header_image( $choice, $header ); 488 515 } 489 516 } -
trunk/wp-includes/class-wp-customize-manager.php
r21031 r21037 757 757 ) ); 758 758 759 $this->add_setting( 'header_image', array(759 $this->add_setting( new WP_Customize_Filter_Setting( $this, 'header_image', array( 760 760 'default' => get_theme_support( 'custom-header', 'default-image' ), 761 761 'theme_supports' => 'custom-header', 762 ) ); 762 ) ) ); 763 764 $this->add_setting( new WP_Customize_Header_Image_Setting( $this, 'header_image_data', array( 765 // 'default' => get_theme_support( 'custom-header', 'default-image' ), 766 'theme_supports' => 'custom-header', 767 ) ) ); 763 768 764 769 $this->add_control( new WP_Customize_Header_Image_Control( $this ) ); -
trunk/wp-includes/class-wp-customize-setting.php
r20936 r21037 368 368 } 369 369 } 370 371 /** 372 * A setting that is used to filter a value, but will not save the results. 373 * 374 * Results should be properly handled using another setting or callback. 375 */ 376 class WP_Customize_Filter_Setting extends WP_Customize_Setting { 377 public function update() {} 378 } 379 380 /** 381 * A setting that is used to filter a value, but will not save the results. 382 * 383 * Results should be properly handled using another setting or callback. 384 */ 385 class WP_Customize_Header_Image_Setting extends WP_Customize_Setting { 386 public $id = 'header_image_data'; 387 388 public function update( $value ) { 389 global $custom_image_header; 390 391 // If the value doesn't exist (removed or random), 392 // use the header_image value. 393 if ( ! $value ) 394 $value = $this->manager->get_setting('header_image')->post_value(); 395 396 if ( is_array( $value ) && isset( $value['choice'] ) ) 397 $custom_image_header->set_header_image( $value['choice'] ); 398 else 399 $custom_image_header->set_header_image( $value ); 400 } 401 }
Note: See TracChangeset
for help on using the changeset viewer.