WordPress.org

Make WordPress Core

Ticket #5911: 5911-12.diff

File 5911-12.diff, 36.6 KB (added by andy, 6 years ago)

Button Revival!

  • wp-includes/js/swfupload/handlers.js

     
    99 
    1010// progress and success handlers for media multi uploads 
    1111function fileQueued(fileObj) { 
     12        // Get rid of unused form 
     13        jQuery('.media-blank').remove(); 
    1214        // Create a progress bar containing the filename 
    13         jQuery('#media-items').prepend('<div id="media-item-' + fileObj.id + '" class="media-item"><span class="filename original">' + fileObj.name + '</span><div class="progress"><div class="bar"></div></div></div>'); 
     15        jQuery('#media-items').prepend('<div id="media-item-' + fileObj.id + '" class="media-item child-of-' + post_id + '"><span class="filename original">' + fileObj.name + '</span><div class="progress"><div class="bar"></div></div></div>'); 
    1416 
    1517        // Disable the submit button 
    1618        jQuery('#insert-media').attr('disabled', 'disabled'); 
     
    5052                        action : 'delete-post', 
    5153                        _ajax_nonce : this.href.replace(/^.*wpnonce=/,'')} 
    5254                        }); 
    53                 // Decrement the counter. 
    54                 jQuery('#attachments-count').text(jQuery('#attachments-count').text()-1); 
     55 
     56                // Decrement the counters. 
     57                if ( type = jQuery('#type-of-' + this.id.replace(/[^0-9]/g,'')).val() ) 
     58                        jQuery('#' + type + '-counter').text(jQuery('#' + type + '-counter').text()-1); 
     59                if ( jQuery(this).parents('.media-item').eq(0).hasClass('child-of-'+post_id) ) 
     60                        jQuery('#attachments-count').text(jQuery('#attachments-count').text()-1); 
     61 
    5562                // Vanish it. 
    5663                jQuery(this).parents(".media-item").eq(0).slideToggle(300,function(){jQuery(this).remove();if(jQuery('.media-item').length==0)jQuery('.insert-gallery').hide();updateMediaForm();}); 
    5764                return false; 
     
    6673 
    6774function updateMediaForm() { 
    6875        // Just one file, no need for collapsible part 
    69         if ( jQuery('#computer-form #media-items>*').length == 1 ) { 
     76        if ( jQuery('.type-form #media-items>*').length == 1 ) { 
    7077                jQuery('#media-items .slidetoggle').slideDown(500).parent().eq(0).children('.toggle').toggle(); 
    71                 jQuery('#computer-form .slidetoggle').siblings().addClass('hidden'); 
     78                jQuery('.type-form .slidetoggle').siblings().addClass('hidden'); 
    7279        } else { 
    73                 jQuery('#computer-form .slidetoggle').siblings().removeClass('hidden'); 
     80                jQuery('.type-form .slidetoggle').siblings().removeClass('hidden'); 
    7481        } 
    7582 
    7683        // Only show Gallery button when there are at least two files. 
     
    8895        } 
    8996        prepareMediaItem(fileObj, serverData); 
    9097        updateMediaForm(); 
    91         jQuery('#attachments-count').text(1 * jQuery('#attachments-count').text() + 1); 
     98 
     99        // Increment the counter. 
     100        if ( jQuery('#media-item-' + fileObj.id).hasClass('child-of-' + post_id) ) 
     101                jQuery('#attachments-count').text(1 * jQuery('#attachments-count').text() + 1); 
    92102} 
    93103 
    94104function uploadComplete(fileObj) { 
     
    116126                wpQueueError(swfuploadL10n.queue_limit_exceeded); 
    117127        } 
    118128        else if ( error_code == SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT ) { 
    119                 wpQueueError(swfuploadL10n.file_exceeds_size_limit); 
     129                wpFileError(fileObj, swfuploadL10n.file_exceeds_size_limit); 
    120130        } 
    121131        else if ( error_code == SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE ) { 
    122                 wpQueueError(swfuploadL10n.zero_byte_file); 
     132                wpFileError(fileObj, swfuploadL10n.zero_byte_file); 
    123133        } 
    124134        else if ( error_code == SWFUpload.QUEUE_ERROR.INVALID_FILETYPE ) { 
    125                 wpQueueError(swfuploadL10n.invalid_filetype); 
     135                wpFileError(fileObj, swfuploadL10n.invalid_filetype); 
    126136        } 
    127137        else { 
    128138                wpQueueError(swfuploadL10n.default_error); 
  • wp-includes/script-loader.php

     
    8888                $this->add( 'swfupload', '/wp-includes/js/swfupload/swfupload.js', false, '2.0.2'); 
    8989                $this->add( 'swfupload-degrade', '/wp-includes/js/swfupload/plugins/swfupload.graceful_degradation.js', array('swfupload'), '2.0.2'); 
    9090                $this->add( 'swfupload-queue', '/wp-includes/js/swfupload/plugins/swfupload.queue.js', array('swfupload'), '2.0.2'); 
    91                 $this->add( 'swfupload-handlers', '/wp-includes/js/swfupload/handlers.js', array('swfupload'), '2.0.2-20080225'); 
     91                $this->add( 'swfupload-handlers', '/wp-includes/js/swfupload/handlers.js', array('swfupload'), '2.0.2-20080227'); 
    9292                // these error messages came from the sample swfupload js, they might need changing. 
    9393                $this->localize( 'swfupload-handlers', 'swfuploadL10n', array( 
    9494                                'queue_limit_exceeded' => 'You have attempted to queue too many files.', 
  • wp-admin/includes/media.php

     
    22 
    33function media_upload_tabs() { 
    44        $_default_tabs = array( 
    5                 'computer' => __('From Computer'), // handler action suffix => tab text 
    6                 'attachments' => __('Attachments'), 
     5                'type' => __('Choose File'), // handler action suffix => tab text 
     6                'gallery' => __('Gallery'), 
    77                'library' => __('Media Library'), 
    88        ); 
    99 
    1010        return apply_filters('media_upload_tabs', $_default_tabs); 
    1111} 
    1212 
    13 function update_attachments_tab($tabs) { 
     13function update_gallery_tab($tabs) { 
    1414        global $wpdb; 
    1515        if ( !isset($_REQUEST['post_id']) ) { 
    16                 unset($tabs['attachments']); 
     16                unset($tabs['gallery']); 
    1717                return $tabs; 
    1818        } 
    1919        if ( intval($_REQUEST['post_id']) ) 
    20                 $attachments = $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d", $_REQUEST['post_id'])); 
     20                $attachments = intval($wpdb->get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d", $_REQUEST['post_id']))); 
    2121 
    22         $tabs['attachments'] = sprintf(__('Attachments (%s)'), "<span id='attachments-count'>$attachments</span>"); 
     22        $tabs['gallery'] = sprintf(__('Gallery (%s)'), "<span id='attachments-count'>$attachments</span>"); 
    2323 
    2424        return $tabs; 
    2525} 
    26 add_filter('media_upload_tabs', 'update_attachments_tab'); 
     26add_filter('media_upload_tabs', 'update_gallery_tab'); 
    2727 
    2828function the_media_upload_tabs() { 
    2929        $tabs = media_upload_tabs(); 
     
    5555                $html = "<a href='".attribute_escape($url)."'$rel>$html</a>"; 
    5656        elseif ( $size == 'thumb' || $size == 'medium' ) 
    5757                $html = '<a href="'.get_attachment_link($id).'"'.$rel.'>'.$html.'</a>'; 
    58                  
     58 
    5959        $html = apply_filters( 'image_send_to_editor', $html, $id, $alt, $title, $align, $url ); 
    6060 
    6161        return $html; 
     
    154154function media_buttons() { 
    155155        global $post_ID, $temp_ID; 
    156156        $uploading_iframe_ID = (int) (0 == $post_ID ? $temp_ID : $post_ID); 
    157         $media_upload_iframe_src = "media-upload.php?type=media&amp;post_id=$uploading_iframe_ID"; 
    158         $media_upload_iframe_src = apply_filters('media_upload_iframe_src', $media_upload_iframe_src); 
    159         echo "<a href='$media_upload_iframe_src&amp;TB_iframe=true&amp;height=500&amp;width=640' class='button-secondary thickbox'>" . __('Add media'). '</a>'; 
     157        $media_upload_iframe_src = "media-upload.php?post_id=$uploading_iframe_ID"; 
     158        $media_title = __('Add Media'); 
     159        $image_upload_iframe_src = apply_filters('image_upload_iframe_src', "$media_upload_iframe_src&amp;type=image"); 
     160        $image_title = __('Add an Image'); 
     161        $video_upload_iframe_src = apply_filters('video_upload_iframe_src', "$media_upload_iframe_src&amp;type=video"); 
     162        $video_title = __('Add Video'); 
     163        $audio_upload_iframe_src = apply_filters('audio_upload_iframe_src', "$media_upload_iframe_src&amp;type=audio"); 
     164        $audio_title = __('Add Audio'); 
     165        $out = <<<EOF 
     166 
     167        <a href="{$image_upload_iframe_src}&TB_iframe=true&height=500&width=640" class="thickbox" title='$image_title'><img src='images/media-button-image.gif' alt='$image_title' /></a> 
     168        <a href="{$video_upload_iframe_src}&TB_iframe=true&height=500&width=640" class="thickbox" title='$video_title'><img src='images/media-button-video.gif' alt='$video_title' /></a> 
     169        <a href="{$audio_upload_iframe_src}&TB_iframe=true&height=500&width=640" class="thickbox" title='$audio_title'><img src='images/media-button-music.gif' alt='$audio_title' /></a> 
     170        <a href="{$media_upload_iframe_src}&TB_iframe=true&height=500&width=640" class="thickbox" title='$media_title'><img src='images/media-button-other.gif' alt='$media_title' /></a> 
     171 
     172EOF; 
     173        echo $out; 
    160174} 
    161175add_action( 'media_buttons', 'media_buttons' ); 
    162176 
     
    191205 
    192206                $id = media_handle_upload('async-upload', $_REQUEST['post_id']); 
    193207 
    194                 if ( is_wp_error($id) ) 
     208                if ( is_wp_error($id) ) { 
    195209                        $errors['upload_error'] = $id; 
     210                        $id = false; 
     211                } 
    196212        } 
    197213 
    198214        if ( !empty($_POST['attachments']) ) foreach ( $_POST['attachments'] as $attachment_id => $attachment ) { 
     
    232248        return $errors; 
    233249} 
    234250 
    235 function media_upload_computer() { 
     251function media_upload_image() { 
     252        if ( !empty($_FILES) ) { 
     253                // Upload File button was clicked 
     254                $id = media_handle_upload('async-upload', $_REQUEST['post_id']); 
     255                unset($_FILES); 
     256                if ( is_wp_error($id) ) { 
     257                        $errors['upload_error'] = $id; 
     258                        $id = false; 
     259                } 
     260        } 
     261 
     262        if ( !empty($_POST['insertonlybutton']) ) { 
     263                $src = $_POST['insertonly']['src']; 
     264                if ( !strpos($src, '://') ) 
     265                        $src = "http://$src"; 
     266                $alt = attribute_escape($_POST['insertonly']['alt']); 
     267                if ( isset($_POST['insertonly']['align']) ) { 
     268                        $align = attribute_escape($_POST['insertonly']['align']); 
     269                        $class = " class='align-$align'"; 
     270                } 
     271                $html = "<img src='$src' alt='$alt'$class />"; 
     272                return media_send_to_editor($html); 
     273        } 
     274 
    236275        if ( !empty($_POST) ) { 
    237276                $return = media_upload_form_handler(); 
    238          
     277 
    239278                if ( is_string($return) ) 
    240279                        return $return; 
    241280                if ( is_array($return) ) 
    242281                        $errors = $return; 
    243282        } 
    244283 
    245         return wp_iframe( 'media_upload_computer_form', $errors ); 
     284        return wp_iframe( 'media_upload_type_form', 'image', $errors, $id ); 
    246285} 
    247286 
    248 function media_upload_attachments() { 
     287function media_upload_audio() { 
     288        if ( !empty($_FILES) ) { 
     289                // Upload File button was clicked 
     290                $id = media_handle_upload('async-upload', $_REQUEST['post_id']); 
     291                unset($_FILES); 
     292                if ( is_wp_error($id) ) { 
     293                        $errors['upload_error'] = $id; 
     294                        $id = false; 
     295                } 
     296        } 
     297 
     298        if ( !empty($_POST['insertonlybutton']) ) { 
     299                $href = $_POST['insertonly']['href']; 
     300                if ( !strpos($href, '://') ) 
     301                        $href = "http://$href"; 
     302                $title = attribute_escape($_POST['insertonly']['title']); 
     303                $html = "<a href='$href' >$title</a>"; 
     304                return media_send_to_editor($html); 
     305        } 
     306 
    249307        if ( !empty($_POST) ) { 
    250308                $return = media_upload_form_handler(); 
    251          
     309 
    252310                if ( is_string($return) ) 
    253311                        return $return; 
    254312                if ( is_array($return) ) 
    255313                        $errors = $return; 
    256314        } 
    257315 
    258         return wp_iframe( 'media_upload_attachments_form', $errors ); 
     316        return wp_iframe( 'media_upload_type_form', 'audio', $errors, $id ); 
    259317} 
    260318 
    261 function media_upload_library() { 
     319function media_upload_video() { 
     320        if ( !empty($_FILES) ) { 
     321                // Upload File button was clicked 
     322                $id = media_handle_upload('async-upload', $_REQUEST['post_id']); 
     323                unset($_FILES); 
     324                if ( is_wp_error($id) ) { 
     325                        $errors['upload_error'] = $id; 
     326                        $id = false; 
     327                } 
     328        } 
     329 
     330        if ( !empty($_POST['insertonlybutton']) ) { 
     331                $href = $_POST['insertonly']['href']; 
     332                if ( !strpos($href, '://') ) 
     333                        $href = "http://$href"; 
     334                $title = attribute_escape($_POST['insertonly']['title']); 
     335                $html = "<a href='$href' >$title</a>"; 
     336                return media_send_to_editor($html); 
     337        } 
     338 
    262339        if ( !empty($_POST) ) { 
    263340                $return = media_upload_form_handler(); 
    264          
     341 
    265342                if ( is_string($return) ) 
    266343                        return $return; 
    267344                if ( is_array($return) ) 
    268345                        $errors = $return; 
    269346        } 
    270347 
    271         return wp_iframe( 'media_upload_library_form', $errors ); 
     348        return wp_iframe( 'media_upload_type_form', 'video', $errors, $id ); 
    272349} 
    273350 
    274 function get_media_items( $post_id, $errors ) { 
    275         if ( $post_id ) { 
    276                 $attachments = get_children("post_parent=$post_id&post_type=attachment&orderby=menu_order ASC, ID&order=DESC"); 
    277         } else { 
    278                 if ( is_array($GLOBALS['wp_the_query']->posts) ) 
    279                         foreach ( $GLOBALS['wp_the_query']->posts as $attachment ) 
    280                                 $attachments[$attachment->ID] = $attachment; 
     351function media_upload_file() { 
     352        if ( !empty($_FILES) ) { 
     353                // Upload File button was clicked 
     354                $id = media_handle_upload('async-upload', $_REQUEST['post_id']); 
     355                unset($_FILES); 
     356                if ( is_wp_error($id) ) { 
     357                        $errors['upload_error'] = $id; 
     358                        $id = false; 
     359                } 
    281360        } 
    282361 
    283         if ( empty($attachments) ) 
    284                 return ''; 
     362        if ( !empty($_POST['insertonlybutton']) ) { 
     363                $href = $_POST['insertonly']['href']; 
     364                if ( !strpos($href, '://') ) 
     365                        $href = "http://$href"; 
     366                $title = attribute_escape($_POST['insertonly']['title']); 
     367                $html = "<a href='$href' >$title</a>"; 
     368                return media_send_to_editor($html); 
     369        } 
    285370 
    286         foreach ( $attachments as $id => $attachment ) 
    287                 if ( $item = get_media_item($id, isset($errors[$id]) ? $errors[$id] : null) ) 
    288                         $output .= "\n<div id='media-item-$id' class='media-item preloaded'><div id='media-upload-error-$id'></div><span class='filename'></span><div class='progress'><div class='bar'></div></div>$item<div class='progress clickmask'></div>\n</div>"; 
     371        if ( !empty($_POST) ) { 
     372                $return = media_upload_form_handler(); 
    289373 
    290         return $output; 
     374                if ( is_string($return) ) 
     375                        return $return; 
     376                if ( is_array($return) ) 
     377                        $errors = $return; 
     378        } 
     379 
     380        return wp_iframe( 'media_upload_type_form', 'file', $errors, $id ); 
    291381} 
    292382 
     383function media_upload_gallery() { 
     384        if ( !empty($_POST) ) { 
     385                $return = media_upload_form_handler(); 
     386         
     387                if ( is_string($return) ) 
     388                        return $return; 
     389                if ( is_array($return) ) 
     390                        $errors = $return; 
     391        } 
     392 
     393        return wp_iframe( 'media_upload_gallery_form', $errors ); 
     394} 
     395 
     396function media_upload_library() { 
     397        if ( !empty($_POST) ) { 
     398                $return = media_upload_form_handler(); 
     399         
     400                if ( is_string($return) ) 
     401                        return $return; 
     402                if ( is_array($return) ) 
     403                        $errors = $return; 
     404        } 
     405 
     406        return wp_iframe( 'media_upload_library_form', $errors ); 
     407} 
     408 
    293409function get_attachment_taxonomies($attachment) { 
    294410        if ( is_int( $attachment ) ) 
    295411                $attachment = get_post($attachment); 
     
    331447 
    332448                $thumb = wp_get_attachment_thumb_url(); 
    333449 
    334                 $form_fields['_send']['url'] = array( 
    335                         'label' => __('Link URL'), 
    336                         'input' => 'html', 
    337                         'html'  => '', 
    338                         'helps'  => __('If filled, this will override the default link URL.'), 
    339                 ); 
    340                 $form_fields['_send']['align'] = array( 
     450                $form_fields['align'] = array( 
    341451                        'label' => __('Alignment'), 
    342452                        'input' => 'html', 
    343453                        'html'  => " 
     
    350460                                <input type='radio' name='attachments[$post->ID][align]' id='image-align-right-$post->ID' value='right' /> 
    351461                                <label for='image-align-right-$post->ID' class='align image-align-right-label'>" . __('Right') . "</label>\n", 
    352462                ); 
    353                 $form_fields['_send']['image-size'] = array( 
     463                $form_fields['image-size'] = array( 
    354464                        'label' => __('Size'), 
    355465                        'input' => 'html', 
    356466                        'html'  => " 
     
    383493function image_media_send_to_editor($html, $attachment_id, $attachment) { 
    384494        $post =& get_post($attachment_id); 
    385495        if ( substr($post->post_mime_type, 0, 5) == 'image' ) { 
    386                 if ( !empty($attachment['url']) ) 
    387                         $url = $attachment['url']; 
    388                 elseif ( $rel = strlen(trim($post->post_content)) ) 
    389                         $url = get_attachment_link($attachment_id); 
    390                 else 
    391                         $url = wp_get_attachment_url($attachment_id); 
     496                $url = $attachment['url']; 
    392497 
    393498                if ( isset($attachment['align']) ) 
    394499                        $align = $attachment['align']; 
     
    415520                $post = (object) $post; 
    416521 
    417522        $edit_post = sanitize_post($post, 'edit'); 
     523        $file = wp_get_attachment_url($post->ID); 
     524        $link = get_attachment_link($post->ID); 
    418525 
    419526        $form_fields = array( 
    420527                'post_title'   => array( 
    421528                        'label'      => __('Title'), 
    422529                        'value'      => $edit_post->post_title, 
     530                        'helps'      => __(''), 
    423531                ), 
    424532                'post_excerpt' => array( 
    425533                        'label'      => __('Description'), 
     
    429537                        'label'      => __('Long description'), 
    430538                        'value'      => $edit_post->post_content, 
    431539                        'input'      => 'textarea', 
    432                         'helps'      => array(__('If filled, the default link URL will be the attachment permalink.')), 
    433540                ), 
     541                'url'          => array( 
     542                        'label'      => __('Link URL'), 
     543                        'input'      => 'html', 
     544                        'html'       => " 
     545                                <input type='text' name='attachments[$post->ID][url]' value='" . attribute_escape($file) . "' /> 
     546                                <button type='button' class='button url-$post->ID' value=''>" . __('None') . "</button> 
     547                                <button type='button' class='button url-$post->ID' value='" . attribute_escape($file) . "'>" . __('File URL') . "</button> 
     548                                <button type='button' class='button url-$post->ID' value='" . attribute_escape($link) . "'>" . __('Post URL') . "</button> 
     549                                <script type='text/javascript'> 
     550                                jQuery('button.url-$post->ID').bind('click', function(){jQuery(this).siblings('input').val(this.value);}); 
     551                                </script>\n", 
     552                        'helps'      => __('Enter a link URL or click above for presets.'), 
     553                ), 
    434554        ); 
    435555 
    436556        foreach ( get_attachment_taxonomies($post) as $taxonomy ) { 
     
    462582        return $form_fields; 
    463583} 
    464584 
    465 function get_media_item( $attachment_id, $errors = null, $send = true ) { 
     585function get_media_items( $post_id, $errors ) { 
     586        if ( $post_id && $post = get_post($post_id) ) { 
     587                if ( $post->post_type == 'attachment' ) 
     588                        $attachments = array($post->ID => $post); 
     589                else 
     590                        $attachments = get_children("post_parent=$post_id&post_type=attachment&orderby=menu_order ASC, ID&order=DESC"); 
     591        } else { 
     592                if ( is_array($GLOBALS['wp_the_query']->posts) ) 
     593                        foreach ( $GLOBALS['wp_the_query']->posts as $attachment ) 
     594                                $attachments[$attachment->ID] = $attachment; 
     595        } 
     596 
     597        if ( empty($attachments) ) 
     598                return ''; 
     599 
     600        foreach ( $attachments as $id => $attachment ) 
     601                if ( $item = get_media_item($id, isset($errors[$id]) ? $errors[$id] : null) ) 
     602                        $output .= "\n<div id='media-item-$id' class='media-item child-of-$attachment->post_parent preloaded'><div id='media-upload-error-$id'></div><span class='filename'></span><div class='progress'><div class='bar'></div></div>$item<div class='progress clickmask'></div>\n</div>"; 
     603 
     604        return $output; 
     605} 
     606 
     607function get_media_item( $attachment_id, $errors = null, $send = true, $delete = true ) { 
     608        global $post_mime_types; 
    466609        if ( ( $attachment_id = intval($attachment_id) ) && $thumb_url = get_attachment_icon_src( $attachment_id ) ) 
    467610                $thumb_url = $thumb_url[0]; 
    468611        else 
     
    486629                $tags = attribute_escape(join(', ', $tags)); 
    487630        } 
    488631 
     632        if ( isset($post_mime_types) ) { 
     633                $type = array_shift(array_keys(wp_match_mime_types(array_keys($post_mime_types), $post->post_mime_type))); 
     634                $type = "<input type='hidden' id='type-of-$attachment_id' value='$type' />"; 
     635        } 
     636 
    489637        $form_fields = get_attachment_fields_to_edit($post, $errors); 
    490638 
    491639        $class = empty($errors) ? 'startclosed' : 'startopen'; 
    492640        $item = " 
     641        $type 
    493642        <a class='toggle describe-toggle-on' href='#'>$toggle_on</a> 
    494643        <a class='toggle describe-toggle-off' href='#'>$toggle_off</a> 
    495644        <span class='filename new'>$filename</span> 
     
    510659        ); 
    511660 
    512661        $delete_href = wp_nonce_url("post.php?action=delete-post&amp;post=$attachment_id", 'delete-post_' . $attachment_id); 
    513         $delete = __('Delete'); 
    514         $save = "<input type='submit' value='" . wp_specialchars(__('Save'), 1) . "' />"; 
    515         $send = "<input type='submit' value='" . wp_specialchars(__('Send to Editor'), 1) . "' id='send[$attachment_id]' name='send[$attachment_id]' />"; 
     662        if ( $send ) 
     663                $send = "<button type='submit' class='button' value='1' name='send[$attachment_id]'>" . __('Insert into Post') . '</button>'; 
     664        if ( $delete ) 
     665                $delete = "<a href='$delete_href' id='del[$attachment_id]' disabled='disabled' class='delete'>" . __('Delete') . "</button>"; 
     666        if ( ( $send || $delete ) && !isset($form_fields['buttons']) ) 
     667                $form_fields['buttons'] = array('tr' => "\t\t<tr class='submit'><td colspan='2'></td><td class='savesend'>$send $delete</td></tr>\n"); 
    516668 
    517         if ( empty($form_fields['save']) && empty($form_fields['_send']) ) { 
    518                 $form_fields['save'] = array('tr' => "\t\t<tr class='submit'><td colspan='2' class='del'><a id='del[$attachment_id]' class='delete button' href='$delete_href'>$delete</a></td><td class='savesend'>$save$send</td></tr>\n"); 
    519         } elseif ( empty($form_fields['save']) ) { 
    520                 $form_fields['save'] = array('tr' => "\t\t<tr class='submit'><td></td><td></td><td class='savesend'>$save</td></tr>\n"); 
    521                 foreach ( $form_fields['_send'] as $id => $field ) 
    522                         $form_fields[$id] = $field; 
    523                 $form_fields['send'] = array('tr' => "\t\t<tr class='submit'><td colspan='2' class='del'><a id='del[$attachment_id]' class='delete button' href='$delete_href'>$delete</a></td><td class='savesend'>$send</td>"); 
    524         } 
    525  
    526669        $hidden_fields = array(); 
    527670 
    528671        foreach ( $form_fields as $id => $field ) { 
     
    583726        return $item; 
    584727} 
    585728 
    586 function media_upload_header() { 
     729function media_upload_header($title = false) { 
     730        if ( empty($title) ) 
     731                $title = __('Choose a File'); 
    587732        ?> 
     733        <script type="text/javascript">post_id = <?php echo intval($_REQUEST['post_id']); ?>;</script> 
    588734        <div id="media-upload-header"> 
    589         <h3><?php _e('Add Media'); ?></h3> 
     735        <h3><?php echo $title ?></h3> 
    590736        <?php the_media_upload_tabs(); ?> 
    591737        </div> 
    592738        <?php 
    593739} 
    594740 
    595741function media_upload_form( $errors = null ) { 
    596         $flash_action_url = get_option('siteurl') . '/wp-admin/async-upload.php?type=media'; 
     742        global $type, $tab; 
    597743 
     744        $flash_action_url = get_option('siteurl') . "/wp-admin/async-upload.php"; 
     745 
    598746        $post_id = intval($_REQUEST['post_id']); 
    599747 
    600748?> 
     749<input type='hidden' name='post_id' value='<?php echo $post_id; ?>' /> 
    601750<div id="media-upload-error"> 
    602751<?php if (isset($errors['upload_error']) && is_wp_error($errors['upload_error'])) { ?> 
    603752        <?php echo $errors['upload_error']->get_error_message(); ?> 
     
    614763                        post_params : { 
    615764                                "post_id" : "<?php echo $post_id; ?>", 
    616765                                "auth_cookie" : "<?php echo $_COOKIE[AUTH_COOKIE]; ?>", 
    617                                 "type" : "media" 
     766                                "type" : "<?php echo $type; ?>", 
     767                                "tab" : "<?php echo $tab; ?>" 
    618768                        }, 
    619769                        file_size_limit : "<?php echo wp_max_upload_size(); ?>b", 
    620770                        swfupload_element_id : "flash-upload-ui", // id of the element displayed when swfupload is available 
     
    640790 
    641791<div id="flash-upload-ui"> 
    642792        <p><input id="flash-browse-button" type="button" value="<?php _e('Choose files to upload'); ?>" class="button" /></p> 
    643         <p><?php _e('After a file has been uploaded, you can add titles and descriptions below.'); ?></p> 
     793        <p><?php _e('After a file has been uploaded, you can add titles and descriptions.'); ?></p> 
    644794</div> 
    645795 
    646796<div id="html-upload-ui"> 
    647         <p><label for="async-upload"><?php _e('Choose image'); ?></label> 
    648         <input type="file" name="async-upload" id="async-upload" /> 
    649         <label for="image-file" class="form-help"><?php _e('Only PNG, JPG, GIF'); ?></label> 
    650         </p> 
    651797        <p> 
    652         <button id="upload-button" name="upload-button" value="1" class="button-ok"><?php _e('Add Image'); ?></button> 
    653         <a href="#" onClick="return top.tb_remove();" id="image-cancel" class="button-cancel"><?php _e('Cancel'); ?></a> 
     798        <input type="file" name="async-upload" id="async-upload" /> <input type="submit" class="button" value="<?php echo attribute_escape(__('Upload')); ?>" /> <a href="#" onClick="return top.tb_remove();"><?php _e('Cancel'); ?></a> 
    654799        </p> 
    655800        <input type="hidden" name="post_id" id="post_id" value="<?php echo $post_id; ?>" /> 
    656801        <br style="clear:both" /> 
     
    658803<?php 
    659804} 
    660805 
    661 function media_upload_computer_form( $errors = null ) { 
     806function media_upload_type_form($type = 'file', $errors = null, $id = null) { 
    662807        media_upload_header(); 
    663808 
    664809        $post_id = intval($_REQUEST['post_id']); 
    665810 
    666         $form_action_url = get_option('siteurl') . "/wp-admin/media-upload.php?type=media&tab=computer&post_id=$post_id"; 
     811        $form_action_url = get_option('siteurl') . "/wp-admin/media-upload.php?type=$type&tab=type&post_id=$post_id"; 
    667812 
     813        $callback = "type_form_$type"; 
    668814?> 
    669815 
    670 <form enctype="multipart/form-data" method="post" action="<?php echo attribute_escape($form_action_url); ?>" class="media-upload-form" id="computer-form"> 
     816<form enctype="multipart/form-data" method="post" action="<?php echo attribute_escape($form_action_url); ?>" class="media-upload-form type-form" id="<?php echo $type; ?>-form"> 
     817<input type="hidden" name="post_id" id="post_id" value="<?php echo $post_id; ?>" /> 
    671818<?php wp_nonce_field('media-form'); ?> 
     819<h3><?php _e('From Computer'); ?></h3> 
    672820<?php media_upload_form( $errors ); ?> 
    673821 
    674 <div id="media-items"></div> 
    675 <p class="submit"> 
    676         <input type="submit" class="submit insert-gallery" name="insert-media" value="<?php _e('Insert gallery into post'); ?>" /> 
    677 </p> 
    678 </form> 
     822<?php if ( $id && !is_wp_error($id) ) : ?> 
     823<script type="text/javascript"> 
     824<!-- 
     825jQuery(function($){ 
     826        var preloaded = $(".media-item.preloaded"); 
     827        if ( preloaded.length > 0 ) { 
     828                preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');}); 
     829                updateMediaForm(); 
     830        } 
     831}); 
     832--> 
     833</script> 
     834<div id="media-items"> 
     835<?php echo get_media_items( $id, $errors ); ?> 
     836</div> 
    679837 
     838<?php elseif ( is_callable($callback) ) : ?> 
     839 
     840<div class="media-blank"> 
     841<p style="text-align:center"><?php _e('&mdash; OR &mdash;'); ?></p> 
     842<h3><?php _e('From URL'); ?></h3> 
     843</div> 
     844 
     845<div id="media-items"> 
     846<div class="media-item media-blank"> 
     847<?php echo call_user_func($callback); ?> 
     848</div> 
     849</div> 
    680850<?php 
     851        endif; 
    681852} 
    682853 
    683 function media_upload_attachments_form($errors) { 
    684         media_upload_header(); 
     854function media_upload_gallery_form($errors) { 
     855        media_upload_header(__('Browse attached files')); 
    685856 
    686857        $post_id = intval($_REQUEST['post_id']); 
    687858 
    688         $form_action_url = get_option('siteurl') . "/wp-admin/media-upload.php?type=media&tab=attachments&post_id=$post_id"; 
     859        $form_action_url = get_option('siteurl') . "/wp-admin/media-upload.php?type=media&tab=gallery&post_id=$post_id"; 
    689860 
    690861?> 
    691862 
     
    701872--> 
    702873</script> 
    703874 
    704 <form enctype="multipart/form-data" method="post" action="<?php echo attribute_escape($form_action_url); ?>" class="media-upload-form" id="attachments-form"> 
     875<form enctype="multipart/form-data" method="post" action="<?php echo attribute_escape($form_action_url); ?>" class="media-upload-form" id="gallery-form"> 
    705876<?php wp_nonce_field('media-form'); ?> 
    706877<?php //media_upload_form( $errors ); ?> 
    707878 
     
    717888} 
    718889 
    719890function media_upload_library_form($errors) { 
    720         global $wpdb, $wp_query, $wp_locale; 
     891        global $wpdb, $wp_query, $wp_locale, $type, $tab, $post_mime_types; 
    721892 
    722         media_upload_header(); 
     893        media_upload_header(__('Browse Media Library')); 
    723894 
    724895        $post_id = intval($_REQUEST['post_id']); 
    725896 
    726         $form_action_url = get_option('siteurl') . "/wp-admin/media-upload.php?type=media&tab=library&post_id=$post_id"; 
     897        $form_action_url = get_option('siteurl') . "/wp-admin/media-upload.php"; 
    727898 
    728899        $_GET['paged'] = intval($_GET['paged']); 
    729900        if ( $_GET['paged'] < 1 ) 
     
    738909?> 
    739910 
    740911<form id="filter" action="" method="get"> 
    741 <input type="hidden" name="type" value="media" /> 
    742 <input type="hidden" name="tab" value="library" /> 
     912<input type="hidden" name="type" value="<?php echo $type; ?>" /> 
     913<input type="hidden" name="tab" value="<?php echo $tab; ?>" /> 
    743914<input type="hidden" name="post_id" value="<?php echo $post_id; ?>" /> 
    744 <input type="hidden" name="post_mime_type" value="<?php echo $_GET['post_mime_type']; ?>" /> 
     915<input type="hidden" name="post_mime_type" value="<?php echo wp_specialchars($_GET['post_mime_type'], true); ?>" /> 
    745916 
    746917<div id="search-filter"> 
    747918        <input type="text" id="post-search-input" name="s" value="<?php the_search_query(); ?>" /> 
     
    766937        if ( wp_match_mime_types($mime_type, $_GET['post_mime_type']) ) 
    767938                $class = ' class="current"'; 
    768939 
    769         $type_links[] = "<li><a href='" . add_query_arg(array('post_mime_type'=>$mime_type, 'paged'=>false)) . "'$class>" . sprintf($label[2], $num_posts[$mime_type]) . '</a>'; 
     940        $type_links[] = "<li><a href='" . add_query_arg(array('post_mime_type'=>$mime_type, 'paged'=>false)) . "'$class>" . sprintf($label[2], "<span id='$mime_type-counter'>{$num_posts[$mime_type]}</span>") . '</a>'; 
    770941} 
    771942$class = empty($_GET['post_mime_type']) ? ' class="current"' : ''; 
    772943$type_links[] = "<li><a href='" . remove_query_arg(array('post_mime_type', 'paged', 'm')) . "'$class>".__('All Types')."</a>"; 
     
    807978        if ( $arc_row->yyear == 0 ) 
    808979                continue; 
    809980        $arc_row->mmonth = zeroise( $arc_row->mmonth, 2 ); 
    810          
     981 
    811982        if ( $arc_row->yyear . $arc_row->mmonth == $_GET['m'] ) 
    812983                $default = ' selected="selected"'; 
    813984        else 
    814985                $default = ''; 
    815          
     986 
    816987        echo "<option$default value='$arc_row->yyear$arc_row->mmonth'>"; 
    817988        echo $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear"; 
    818989        echo "</option>\n"; 
     
    8291000</div> 
    8301001</form> 
    8311002 
    832 <form enctype="multipart/form-data" method="post" action="<?php echo attribute_escape($form_action_url); ?>" class="media-upload-form" id="attachments-form"> 
     1003<form enctype="multipart/form-data" method="post" action="<?php echo attribute_escape($form_action_url); ?>" class="media-upload-form" id="library-form"> 
    8331004 
     1005<?php wp_nonce_field('media-form'); ?> 
     1006<?php //media_upload_form( $errors ); ?> 
     1007 
    8341008<script type="text/javascript"> 
    8351009<!-- 
    8361010jQuery(function($){ 
     
    8431017--> 
    8441018</script> 
    8451019 
    846 <?php wp_nonce_field('media-form'); ?> 
    847 <?php //media_upload_form( $errors ); ?> 
    848  
    8491020<div id="media-items"> 
    8501021<?php echo get_media_items(null, $errors); ?> 
    8511022</div> 
     
    8541025<?php 
    8551026} 
    8561027 
    857 add_filter('async_upload_media', 'get_media_item', 10, 2); 
     1028function type_form_image() { 
     1029        return ' 
     1030        <table class="describe"><tbody> 
     1031                <tr> 
     1032                        <td class="label"><label for="insertonly[src]">' . __('Image URL') . '</label></td> 
     1033                        <td class="required"><abbr title="required">*</abbr></td> 
     1034                        <td class="field"><input id="insertonly[src]" name="insertonly[src]" value="" type="text"></td> 
     1035                </tr> 
     1036                <tr> 
     1037                        <td class="label"><label for="insertonly[alt]">' . __('Description') . '</label></td> 
     1038                        <td class="required"><abbr title="required">*</abbr></td> 
     1039                        <td class="field"><input id="insertonly[alt]" name="insertonly[alt]" value="" type="text"></td> 
     1040                </tr> 
     1041                <tr><td colspan="2"></td><td class="help">' . __('Alternate text, e.g. "The Mona Lisa"') . '</td></tr> 
     1042                <tr class="align"> 
     1043                        <td class="label"><label for="insertonly[align]">' . __('Alignment') . '</label></td> 
     1044                        <td class="required"></td> 
     1045                        <td class="field"> 
     1046                                <input name="insertonly[align]" id="image-align-none-0" value="none" type="radio"> 
     1047                                <label for="image-align-none-0" class="align image-align-none-label">' . __('None') . '</label> 
     1048                                <input name="insertonly[align]" id="image-align-left-0" value="left" type="radio"> 
     1049                                <label for="image-align-left-0" class="align image-align-left-label">' . __('Left') . '</label> 
     1050                                <input name="insertonly[align]" id="image-align-center-0" value="center" type="radio"> 
     1051                                <label for="image-align-center-0" class="align image-align-center-label">' . __('Center') . '</label> 
     1052                                <input name="insertonly[align]" id="image-align-right-0" value="right" type="radio"> 
     1053                                <label for="image-align-right-0" class="align image-align-right-label">' . __('Right') . '</label> 
     1054                        </td> 
     1055                </tr> 
     1056                <tr> 
     1057                        <td colspan="2"></td> 
     1058                        <td> 
     1059                                <input type="submit" class="button" name="insertonlybutton" value="' . attribute_escape(__('Insert into Post')) . '" /> 
     1060                        </td> 
     1061                </tr> 
     1062        </tbody></table> 
     1063'; 
     1064} 
    8581065 
    859 add_filter('media_upload_computer', 'media_upload_computer'); 
    860 add_action('admin_head_media_upload_computer_form', 'media_admin_css'); 
     1066function type_form_audio() { 
     1067        return ' 
     1068        <table class="describe"><tbody> 
     1069                <tr> 
     1070                        <td class="label"><label for="insertonly[href]">' . __('Audio File URL') . '</label></td> 
     1071                        <td class="required"><abbr title="required">*</abbr></td> 
     1072                        <td class="field"><input id="insertonly[href]" name="insertonly[href]" value="" type="text"></td> 
     1073                </tr> 
     1074                <tr> 
     1075                        <td class="label"><label for="insertonly[title]">' . __('Title') . '</label></td> 
     1076                        <td class="required"><abbr title="required">*</abbr></td> 
     1077                        <td class="field"><input id="insertonly[title]" name="insertonly[title]" value="" type="text"></td> 
     1078                </tr> 
     1079                <tr><td colspan="2"></td><td class="help">' . __('Link text, e.g. "Still Alive by Jonathan Coulton"') . '</td></tr> 
     1080                <tr> 
     1081                        <td colspan="2"></td> 
     1082                        <td> 
     1083                                <input type="submit" class="button" name="insertonlybutton" value="' . attribute_escape(__('Insert into Post')) . '" /> 
     1084                        </td> 
     1085                </tr> 
     1086        </tbody></table> 
     1087'; 
     1088} 
    8611089 
    862 add_filter('media_upload_attachments', 'media_upload_attachments'); 
    863 add_action('admin_head_media_upload_attachments_form', 'media_admin_css'); 
     1090function type_form_video() { 
     1091        return ' 
     1092        <table class="describe"><tbody> 
     1093                <tr> 
     1094                        <td class="label"><label for="insertonly[href]">' . __('Video URL') . '</label></td> 
     1095                        <td class="required"><abbr title="required">*</abbr></td> 
     1096                        <td class="field"><input id="insertonly[href]" name="insertonly[href]" value="" type="text"></td> 
     1097                </tr> 
     1098                <tr> 
     1099                        <td class="label"><label for="insertonly[title]">' . __('Title') . '</label></td> 
     1100                        <td class="required"><abbr title="required">*</abbr></td> 
     1101                        <td class="field"><input id="insertonly[title]" name="insertonly[title]" value="" type="text"></td> 
     1102                </tr> 
     1103                <tr><td colspan="2"></td><td class="help">' . __('Link text, e.g. "Lucy on YouTube"') . '</td></tr> 
     1104                <tr> 
     1105                        <td colspan="2"></td> 
     1106                        <td> 
     1107                                <input type="submit" class="button" name="insertonlybutton" value="' . attribute_escape(__('Insert into Post')) . '" /> 
     1108                        </td> 
     1109                </tr> 
     1110        </tbody></table> 
     1111'; 
     1112} 
    8641113 
     1114function type_form_file() { 
     1115        return ' 
     1116        <table class="describe"><tbody> 
     1117                <tr> 
     1118                        <td class="label"><label for="insertonly[href]">' . __('URL') . '</label></td> 
     1119                        <td class="required"><abbr title="required">*</abbr></td> 
     1120                        <td class="field"><input id="insertonly[href]" name="insertonly[href]" value="" type="text"></td> 
     1121                </tr> 
     1122                <tr> 
     1123                        <td class="label"><label for="insertonly[title]">' . __('Title') . '</label></td> 
     1124                        <td class="required"><abbr title="required">*</abbr></td> 
     1125                        <td class="field"><input id="insertonly[title]" name="insertonly[title]" value="" type="text"></td> 
     1126                </tr> 
     1127                <tr><td colspan="2"></td><td class="help">' . __('Link text, e.g. "Ransom Demands (PDF)"') . '</td></tr> 
     1128                <tr> 
     1129                        <td colspan="2"></td> 
     1130                        <td> 
     1131                                <input type="submit" class="button" name="insertonlybutton" value="' . attribute_escape(__('Insert into Post')) . '" /> 
     1132                        </td> 
     1133                </tr> 
     1134        </tbody></table> 
     1135'; 
     1136} 
     1137 
     1138add_filter('async_upload_image', 'get_media_item', 10, 2); 
     1139add_filter('async_upload_audio', 'get_media_item', 10, 2); 
     1140add_filter('async_upload_video', 'get_media_item', 10, 2); 
     1141add_filter('async_upload_file', 'get_media_item', 10, 2); 
     1142 
     1143add_action('media_upload_image', 'media_upload_image'); 
     1144add_action('media_upload_audio', 'media_upload_audio'); 
     1145add_action('media_upload_video', 'media_upload_video'); 
     1146add_action('media_upload_file', 'media_upload_file'); 
     1147add_action('admin_head_media_upload_type_form', 'media_admin_css'); 
     1148 
     1149add_filter('media_upload_gallery', 'media_upload_gallery'); 
     1150add_action('admin_head_media_upload_gallery_form', 'media_admin_css'); 
     1151 
    8651152add_filter('media_upload_library', 'media_upload_library'); 
    8661153add_action('admin_head_media_upload_library_form', 'media_admin_css'); 
    8671154 
  • wp-admin/media-upload.php

     
    1919        wp_die(__("You are not allowed to be here")); 
    2020 
    2121// upload type: image, video, file, ..? 
     22if ( isset($_GET['type']) ) 
     23        $type = strval($_GET['type']); 
     24else 
     25        $type = apply_filters('media_upload_default_type', 'file'); 
     26 
     27// tab: gallery, library, or type-specific 
    2228if ( isset($_GET['tab']) ) 
    2329        $tab = strval($_GET['tab']); 
    2430else 
    25         $tab = apply_filters('media_upload_default_tab', 'computer'); 
     31        $tab = apply_filters('media_upload_default_tab', 'type'); 
    2632 
    2733// let the action code decide how to handle the request 
    28 do_action("media_upload_$tab"); 
     34if ( $tab == 'type' ) 
     35        do_action("media_upload_$type"); 
     36else 
     37        do_action("media_upload_$tab"); 
    2938 
    3039?> 
  • wp-admin/css/media.css

     
    4646        margin: 0 1em 1em 0; 
    4747} 
    4848 
    49 .media-upload-form input[type="text"], .media-upload-form input[type="file"] { 
    50         width: 100%; 
    51 } 
    52  
    5349.media-upload-form fieldset { 
    5450        width: 100%; 
    5551        border: none; 
     
    5753        margin: 0 0 1em 0; 
    5854        padding: 0; 
    5955} 
    60  
     56/* 
    6157.media-upload-form button.button-ok { 
    6258        float: right; 
    6359        background-color: #ebebeb; 
     
    7470        text-decoration: underline; 
    7571        margin: 0.5em 1em; 
    7672} 
    77  
     73*/ 
    7874/* specific to the image upload form */ 
    7975.align .field label { 
    8076        display: inline; 
     
    156152        max-width: 40px; 
    157153} 
    158154.describe { 
    159         display: none; 
    160155        border-top: 1px solid #d0d0d0; 
    161156        padding: 5px; 
    162157        width: 100%; 
    163158} 
    164 .startopen .describe { 
    165         display: block; 
     159.describe.startopen, .describe.startclosed { 
     160        display: none; 
    166161} 
    167162.required abbr { 
    168163        color: red; 
     
    179174.describe td.A1 { 
    180175        width: 132px; 
    181176} 
    182 .describe td.savesend { 
    183         text-align: right; 
    184 } 
    185177.describe input[type="text"], .describe textarea { 
    186178        width: 460px; 
    187179} 
    188 a.delete { 
    189         display: block; 
    190         text-align: center; 
    191         width: 100%; 
    192         color: #246; 
    193 } 
    194180.describe-toggle-on, .describe-toggle-off { 
    195181        display: block; 
    196182        line-height: 36px; 
     
    211197        border: none; 
    212198        z-index: 10; 
    213199} 
    214 tr.submit input { 
    215         width: 128px; 
    216 } 
    217200tr.align td.field { 
    218201        text-align: center; 
    219202} 
    220  
     203a.delete { 
     204        color: #666; 
     205} 
    221206.hidden { 
    222207        height: 0px; 
    223208        width: 0px;