diff --git a/wp-admin/async-upload.php b/wp-admin/async-upload.php index c6350aa085..1a37dceb96 100644 --- a/wp-admin/async-upload.php +++ b/wp-admin/async-upload.php @@ -20,13 +20,26 @@ header('Content-Type: text/plain'); if ( !current_user_can('upload_files') ) wp_die(__('You do not have permission to upload files.')); +// just fetch the detail form for that attachment +if ( ($id = intval($_REQUEST['attachment_id'])) && $_REQUEST['fetch'] ) { + echo get_media_item($id); + exit; +} + $id = media_handle_upload('async-upload', $_REQUEST['post_id']); if (is_wp_error($id)) { echo '
'.wp_specialchars($id->get_error_message()).'
'; exit; } -$type = $_REQUEST['type']; -echo apply_filters("async_upload_{$type}", $id); +if ( $_REQUEST['short'] ) { + // short form response - attachment ID only + echo $id; +} +else { + // long form response - big chunk o html + $type = $_REQUEST['type']; + echo apply_filters("async_upload_{$type}", $id); +} ?> diff --git a/wp-admin/includes/media.php b/wp-admin/includes/media.php index 7feceaae12..44e8dbcc5c 100644 --- a/wp-admin/includes/media.php +++ b/wp-admin/includes/media.php @@ -804,7 +804,8 @@ jQuery(function($){ "post_id" : "", "auth_cookie" : "", "type" : "", - "tab" : "" + "tab" : "", + "short" : "1" }, file_size_limit : "b", swfupload_element_id : "flash-upload-ui", // id of the element displayed when swfupload is available diff --git a/wp-includes/js/swfupload/handlers.js b/wp-includes/js/swfupload/handlers.js index 2c39d72919..92eb8ac88c 100644 --- a/wp-includes/js/swfupload/handlers.js +++ b/wp-includes/js/swfupload/handlers.js @@ -35,8 +35,18 @@ function prepareMediaItem(fileObj, serverData) { jQuery('#media-item-' + fileObj.id + ' .bar').remove(); jQuery('#media-item-' + fileObj.id + ' .progress').hide(); - // Append the HTML returned by the server -- thumbnail and form inputs - jQuery('#media-item-' + fileObj.id).append(serverData); + // Old style: Append the HTML returned by the server -- thumbnail and form inputs + if ( isNaN(serverData) || !serverData ) { + jQuery('#media-item-' + fileObj.id).append(serverData); + prepareMediaItemInit(fileObj); + } + // New style: server data is just the attachment ID, fetch the thumbnail and form html from the server + else { + jQuery('#media-item-' + fileObj.id).load('async-upload.php', {attachment_id:serverData, fetch:1}, function(){prepareMediaItemInit(fileObj);updateMediaForm()}); + } +} + +function prepareMediaItemInit(fileObj) { // Clone the thumbnail as a "pinkynail" -- a tiny image to the left of the filename jQuery('#media-item-' + fileObj.id + ' .thumbnail').clone().attr('className', 'pinkynail toggle').prependTo('#media-item-' + fileObj.id); diff --git a/wp-includes/script-loader.php b/wp-includes/script-loader.php index c0dab27583..eadbb2c433 100644 --- a/wp-includes/script-loader.php +++ b/wp-includes/script-loader.php @@ -87,7 +87,7 @@ class WP_Scripts { 'is_lighttpd_before_150' => is_lighttpd_before_150(), ) ); $this->add( 'swfupload-queue', '/wp-includes/js/swfupload/plugins/swfupload.queue.js', array('swfupload'), '2.0.2'); - $this->add( 'swfupload-handlers', '/wp-includes/js/swfupload/handlers.js', array('swfupload'), '2.0.2-20080331'); + $this->add( 'swfupload-handlers', '/wp-includes/js/swfupload/handlers.js', array('swfupload'), '2.0.2-20080407'); // these error messages came from the sample swfupload js, they might need changing. $this->localize( 'swfupload-handlers', 'swfuploadL10n', array( 'queue_limit_exceeded' => __('You have attempted to queue too many files.'),