Index: /trunk/wp-admin/custom-background.php
===================================================================
--- /trunk/wp-admin/custom-background.php (revision 20357)
+++ /trunk/wp-admin/custom-background.php (revision 20358)
@@ -56,4 +56,5 @@
add_action( 'admin_menu', array( $this, 'init' ) );
+ add_action( 'wp_ajax_set-background-image', array( $this, 'wp_set_background_image' ) );
}
@@ -72,4 +73,6 @@
add_action("load-$page", array(&$this, 'take_action'), 49);
add_action("load-$page", array(&$this, 'handle_upload'), 49);
+ add_filter( 'attachment_fields_to_edit', array( $this, 'attachment_fields_to_edit' ), 10, 2 );
+ add_filter( 'media_upload_tabs', array( $this, 'filter_upload_tabs' ) );
if ( $this->admin_header_callback )
@@ -99,4 +102,6 @@
);
+ add_thickbox();
+ wp_enqueue_script('media-upload');
wp_enqueue_script('custom-background');
wp_enqueue_style('farbtastic');
@@ -127,4 +132,5 @@
set_theme_mod('background_image_thumb', '');
$this->updated = true;
+ wp_safe_redirect( $_POST['_wp_http_referer'] );
return;
}
@@ -249,5 +255,11 @@
-
+ 'custom-background', 'TB_iframe' => 1 ), $image_library_url );
+?>
+
+
@@ -369,3 +381,35 @@
}
+ function attachment_fields_to_edit( $form_fields, $post ) {
+ if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-background' ) {
+ $form_fields = array( 'image-size' => $form_fields['image-size'] );
+ $form_fields['buttons'] = array( 'tr' => '
| ' . _( 'Set as background' ) . ' |
' );
+ $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-background' );
+ }
+
+ return $form_fields;
+ }
+
+ function filter_upload_tabs ( $tabs ){
+ if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-background' )
+ return array( 'library' => __('Media Library') );
+
+ return $tabs;
+ }
+
+ public function wp_set_background_image() {
+ if ( ! current_user_can('edit_theme_options') || ! isset( $_POST['attachment_id'] ) ) exit;
+ $attachment_id = absint($_POST['attachment_id']);
+ $sizes = array_keys(apply_filters( 'image_size_names_choose', array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full Size')) ));
+ $size = 'thumbnail';
+ if ( in_array( $_POST['size'], $sizes ) )
+ $size = esc_attr( $_POST['size'] );
+
+ update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) );
+ $url = wp_get_attachment_image_src( $attachment_id, $size );
+ $thumbnail = wp_get_attachment_image_src( $attachment_id, 'thumbnail' );
+ set_theme_mod( 'background_image', esc_url( $url[0] ) );
+ set_theme_mod( 'background_image_thumb', esc_url( $thumbnail[0] ) );
+ exit;
+ }
}
Index: /trunk/wp-admin/custom-header.php
===================================================================
--- /trunk/wp-admin/custom-header.php (revision 20357)
+++ /trunk/wp-admin/custom-header.php (revision 20358)
@@ -93,4 +93,7 @@
add_action("admin_head-$page", array(&$this, 'js'), 50);
add_action("admin_head-$page", $this->admin_header_callback, 51);
+
+ add_filter( 'attachment_fields_to_edit', array( $this, 'attachment_fields_to_edit' ), 10, 2 );
+ add_filter( 'media_upload_tabs', array( $this, 'filter_upload_tabs' ) );
}
@@ -129,6 +132,9 @@
$step = (int) $_GET['step'];
- if ( $step < 1 || 3 < $step )
- $step = 1;
+ if ( $step < 1 || 3 < $step ||
+ ( 2 == $step && ! wp_verify_nonce( $_REQUEST['_wpnonce-custom-header-upload'], 'custom-header-upload' ) ) ||
+ ( 3 == $step && ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'custom-header-crop-image' ) )
+ )
+ return 1;
return $step;
@@ -143,8 +149,13 @@
$step = $this->step();
- if ( ( 1 == $step || 3 == $step ) && current_theme_supports( 'custom-header', 'header-text' ) )
- wp_enqueue_script('farbtastic');
- elseif ( 2 == $step )
+ if ( ( 1 == $step || 3 == $step ) ) {
+ add_thickbox();
+ wp_enqueue_script( 'media-upload' );
+ wp_enqueue_script( 'custom-header' );
+ if ( current_theme_supports( 'custom-header', 'header-text' ) )
+ wp_enqueue_script('farbtastic');
+ } elseif ( 2 == $step ) {
wp_enqueue_script('imgareaselect');
+ }
}
@@ -396,5 +407,5 @@
pickColor('#');
- toggle_text();
+ toggle_text();
});
@@ -554,4 +565,10 @@
+ 'custom-header', 'TB_iframe' => 1 ), $image_library_url );
+ ?>
+
@@ -675,26 +692,12 @@
wp_die( __( 'Cheatin’ uh?' ) );
- $overrides = array('test_form' => false);
- $file = wp_handle_upload($_FILES['import'], $overrides);
-
- if ( isset($file['error']) )
- wp_die( $file['error'], __( 'Image Upload Error' ) );
-
- $url = $file['url'];
- $type = $file['type'];
- $file = $file['file'];
- $filename = basename($file);
-
- // Construct the object array
- $object = array(
- 'post_title' => $filename,
- 'post_content' => $url,
- 'post_mime_type' => $type,
- 'guid' => $url,
- 'context' => 'custom-header'
- );
-
- // Save the data
- $id = wp_insert_attachment($object, $file);
+ if ( empty( $_POST ) && isset( $_GET['file'] ) ) {
+ $id = absint( $_GET['file'] );
+ $file = get_attached_file( $id, true );
+ $url = wp_get_attachment_image_src( $id, 'full');
+ $url = $url[0];
+ } elseif ( isset( $_POST ) ) {
+ extract($this->step_2_manage_upload());
+ }
list($width, $height, $type, $attr) = getimagesize( $file );
@@ -754,4 +757,7 @@
+
+
+
@@ -761,4 +767,31 @@
false);
+ $file = wp_handle_upload($_FILES['import'], $overrides);
+
+ if ( isset($file['error']) )
+ wp_die( $file['error'], __( 'Image Upload Error' ) );
+
+ $url = $file['url'];
+ $type = $file['type'];
+ $file = $file['file'];
+ $filename = basename($file);
+
+ // Construct the object array
+ $object = array(
+ 'post_title' => $filename,
+ 'post_content' => $url,
+ 'post_mime_type' => $type,
+ 'guid' => $url,
+ 'context' => 'custom-header'
+ );
+
+ // Save the data
+ $id = wp_insert_attachment( $object, $file );
+ return compact( 'id', 'file', 'filename', 'url', 'type' );
}
@@ -827,7 +860,9 @@
'context' => 'custom-header'
);
+ if ( isset( $_POST['new-attachment'] ) && $_POST['new-attachment'] )
+ unset($object['ID']);
// Update the attachment
- wp_insert_attachment($object, $cropped);
+ $attachment_id = wp_insert_attachment( $object, $cropped );
wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $cropped ) );
update_post_meta( $attachment_id, '_wp_attachment_is_custom_header', get_option('stylesheet' ) );
@@ -846,6 +881,8 @@
// cleanup
$medium = str_replace(basename($original), 'midsize-'.basename($original), $original);
- @unlink( apply_filters( 'wp_delete_file', $medium ) );
- @unlink( apply_filters( 'wp_delete_file', $original ) );
+ if ( file_exists( $medium ) )
+ @unlink( apply_filters( 'wp_delete_file', $medium ) );
+ if ( empty ( $_POST['new-attachment'] ) )
+ @unlink( apply_filters( 'wp_delete_file', $original ) );
return $this->finished();
@@ -871,10 +908,34 @@
wp_die(__('You do not have permission to customize headers.'));
$step = $this->step();
- if ( 1 == $step || ! $_POST )
- $this->step_1();
- elseif ( 2 == $step )
+ if ( 2 == $step )
$this->step_2();
elseif ( 3 == $step )
$this->step_3();
+ else
+ $this->step_1();
+ }
+
+ function attachment_fields_to_edit( $form_fields, $post ) {
+ if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-header' ) {
+ $form_fields = array();
+ $href = esc_url(add_query_arg(array(
+ 'page' => 'custom-header',
+ 'step' => 2,
+ '_wpnonce-custom-header-upload' => wp_create_nonce('custom-header-upload'),
+ 'file' => $post->ID
+ ), admin_url('themes.php')));
+
+ $form_fields['buttons'] = array( 'tr' => ' | |
' );
+ $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-header' );
+ }
+
+ return $form_fields;
+ }
+
+ function filter_upload_tabs( $tabs ) {
+ if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-header' )
+ return array( 'library' => __('Media Library') );
+
+ return $tabs;
}
Index: /trunk/wp-admin/includes/media.php
===================================================================
--- /trunk/wp-admin/includes/media.php (revision 20357)
+++ /trunk/wp-admin/includes/media.php (revision 20358)
@@ -404,5 +404,5 @@
}
-function get_upload_iframe_src( $type = null, $post_id = null ) {
+function get_upload_iframe_src( $type = null, $post_id = null, $tab = null ) {
global $post_ID;
@@ -410,9 +410,11 @@
$post_id = $post_ID;
- $uploading_iframe_ID = (int) $post_id;
- $upload_iframe_src = add_query_arg( 'post_id', $uploading_iframe_ID, admin_url('media-upload.php') );
+ $upload_iframe_src = add_query_arg( 'post_id', (int) $post_id, admin_url('media-upload.php') );
if ( $type && 'media' != $type )
$upload_iframe_src = add_query_arg('type', $type, $upload_iframe_src);
+
+ if ( ! empty( $tab ) )
+ $upload_iframe_src = add_query_arg('tab', $tab, $upload_iframe_src);
$upload_iframe_src = apply_filters($type . '_upload_iframe_src', $upload_iframe_src);
@@ -498,5 +500,5 @@
$attachment = stripslashes_deep( $_POST['attachments'][$send_id] );
- $html = $attachment['post_title'];
+ $html = isset( $attachment['post_title'] ) ? $attachment['post_title'] : '';
if ( !empty($attachment['url']) ) {
$rel = '';
Index: /trunk/wp-admin/media-upload.php
===================================================================
--- /trunk/wp-admin/media-upload.php (revision 20357)
+++ /trunk/wp-admin/media-upload.php (revision 20358)
@@ -23,4 +23,5 @@
wp_enqueue_script('set-post-thumbnail' );
wp_enqueue_style('imgareaselect');
+wp_enqueue_script( 'media-gallery' );
@header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
Index: /trunk/wp-includes/script-loader.php
===================================================================
--- /trunk/wp-includes/script-loader.php (revision 20357)
+++ /trunk/wp-includes/script-loader.php (revision 20358)
@@ -418,4 +418,5 @@
$scripts->add( 'custom-background', "/wp-admin/js/custom-background$suffix.js", array('farbtastic'), false, 1 );
+ $scripts->add( 'media-gallery', "/wp-admin/js/media-gallery$suffix.js", array('jquery'), false, 1 );
}
}