Make WordPress Core

Changeset 7092


Ignore:
Timestamp:
02/28/2008 09:29:51 PM (17 years ago)
Author:
ryan
Message:

Media library updates from andy. see #5911

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/css/media.css

    r7062 r7092  
    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%;
     
    5854    padding: 0;
    5955}
    60 
     56/*
    6157.media-upload-form button.button-ok {
    6258    float: right;
     
    7571    margin: 0.5em 1em;
    7672}
    77 
     73*/
    7874/* specific to the image upload form */
    7975.align .field label {
     
    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 {
     
    180175    width: 132px;
    181176}
    182 .describe td.savesend {
    183     text-align: right;
    184 }
    185177.describe input[type="text"], .describe textarea {
    186178    width: 460px;
    187 }
    188 a.delete {
    189     display: block;
    190     text-align: center;
    191     width: 100%;
    192     color: #246;
    193179}
    194180.describe-toggle-on, .describe-toggle-off {
     
    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;
  • trunk/wp-admin/includes/media.php

    r7067 r7092  
    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    );
     
    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']));
    21 
    22     $tabs['attachments'] = sprintf(__('Attachments (%s)'), "<span id='attachments-count'>$attachments</span>");
     20        $attachments = intval($wpdb->get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d", $_REQUEST['post_id'])));
     21
     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() {
     
    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
     
    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' );
     
    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
     
    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
     275    if ( !empty($_POST) ) {
     276        $return = media_upload_form_handler();
     277
     278        if ( is_string($return) )
     279            return $return;
     280        if ( is_array($return) )
     281            $errors = $return;
     282    }
     283
     284    return wp_iframe( 'media_upload_type_form', 'image', $errors, $id );
     285}
     286
     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
     307    if ( !empty($_POST) ) {
     308        $return = media_upload_form_handler();
     309
     310        if ( is_string($return) )
     311            return $return;
     312        if ( is_array($return) )
     313            $errors = $return;
     314    }
     315
     316    return wp_iframe( 'media_upload_type_form', 'audio', $errors, $id );
     317}
     318
     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
     339    if ( !empty($_POST) ) {
     340        $return = media_upload_form_handler();
     341
     342        if ( is_string($return) )
     343            return $return;
     344        if ( is_array($return) )
     345            $errors = $return;
     346    }
     347
     348    return wp_iframe( 'media_upload_type_form', 'video', $errors, $id );
     349}
     350
     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        }
     360    }
     361
     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    }
     370
     371    if ( !empty($_POST) ) {
     372        $return = media_upload_form_handler();
     373
     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 );
     381}
     382
     383function media_upload_gallery() {
    236384    if ( !empty($_POST) ) {
    237385        $return = media_upload_form_handler();
     
    243391    }
    244392
    245     return wp_iframe( 'media_upload_computer_form', $errors );
    246 }
    247 
    248 function media_upload_attachments() {
    249     if ( !empty($_POST) ) {
    250         $return = media_upload_form_handler();
    251    
    252         if ( is_string($return) )
    253             return $return;
    254         if ( is_array($return) )
    255             $errors = $return;
    256     }
    257 
    258     return wp_iframe( 'media_upload_attachments_form', $errors );
     393    return wp_iframe( 'media_upload_gallery_form', $errors );
    259394}
    260395
     
    272407}
    273408
    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;
    281     }
    282 
    283     if ( empty($attachments) )
    284         return '';
    285 
    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>";
    289 
    290     return $output;
    291 }
    292 
    293409function get_attachment_taxonomies($attachment) {
    294410    if ( is_int( $attachment ) )
     
    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',
     
    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',
     
    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']) )
     
    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(
     
    421528            'label'      => __('Title'),
    422529            'value'      => $edit_post->post_title,
     530            'helps'      => __(''),
    423531        ),
    424532        'post_excerpt' => array(
     
    430538            'value'      => $edit_post->post_content,
    431539            'input'      => 'textarea',
    432             'helps'      => array(__('If filled, the default link URL will be the attachment permalink.')),
     540        ),
     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.'),
    433553        ),
    434554    );
     
    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];
     
    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>
     
    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]' />";
    516 
    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     }
     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");
    525668
    526669    $hidden_fields = array();
     
    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>
     
    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;
     743
     744    $flash_action_url = get_option('siteurl') . "/wp-admin/async-upload.php";
    597745
    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'])) { ?>
     
    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",
     
    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; ?>" />
     
    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";
    667 
     811    $form_action_url = get_option('siteurl') . "/wp-admin/media-upload.php?type=$type&tab=type&post_id=$post_id";
     812
     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>
    679 
    680 <?php
    681 }
    682 
    683 function media_upload_attachments_form($errors) {
    684     media_upload_header();
    685 
    686     $post_id = intval($_REQUEST['post_id']);
    687 
    688     $form_action_url = get_option('siteurl') . "/wp-admin/media-upload.php?type=media&tab=attachments&post_id=$post_id";
    689 
    690 ?>
    691 
     822<?php if ( $id && !is_wp_error($id) ) : ?>
    692823<script type="text/javascript">
    693824<!--
     
    701832-->
    702833</script>
    703 
    704 <form enctype="multipart/form-data" method="post" action="<?php echo attribute_escape($form_action_url); ?>" class="media-upload-form" id="attachments-form">
     834<div id="media-items">
     835<?php echo get_media_items( $id, $errors ); ?>
     836</div>
     837
     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>
     850<?php
     851    endif;
     852}
     853
     854function media_upload_gallery_form($errors) {
     855    media_upload_header(__('Browse attached files'));
     856
     857    $post_id = intval($_REQUEST['post_id']);
     858
     859    $form_action_url = get_option('siteurl') . "/wp-admin/media-upload.php?type=media&tab=gallery&post_id=$post_id";
     860
     861?>
     862
     863<script type="text/javascript">
     864<!--
     865jQuery(function($){
     866    var preloaded = $(".media-item.preloaded");
     867    if ( preloaded.length > 0 ) {
     868        preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
     869        updateMediaForm();
     870    }
     871});
     872-->
     873</script>
     874
     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 ); ?>
     
    718889
    719890function media_upload_library_form($errors) {
    720     global $wpdb, $wp_query, $wp_locale;
    721 
    722     media_upload_header();
     891    global $wpdb, $wp_query, $wp_locale, $type, $tab, $post_mime_types;
     892
     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']);
     
    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">
     
    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"' : '';
     
    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";
     
    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">
     1004
     1005<?php wp_nonce_field('media-form'); ?>
     1006<?php //media_upload_form( $errors ); ?>
    8331007
    8341008<script type="text/javascript">
     
    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); ?>
     
    8551026}
    8561027
    857 add_filter('async_upload_media', 'get_media_item', 10, 2);
    858 
    859 add_filter('media_upload_computer', 'media_upload_computer');
    860 add_action('admin_head_media_upload_computer_form', 'media_admin_css');
    861 
    862 add_filter('media_upload_attachments', 'media_upload_attachments');
    863 add_action('admin_head_media_upload_attachments_form', 'media_admin_css');
     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}
     1065
     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}
     1089
     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}
     1113
     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');
    8641151
    8651152add_filter('media_upload_library', 'media_upload_library');
  • trunk/wp-admin/media-upload.php

    r7043 r7092  
    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?>
  • trunk/wp-includes/js/swfupload/handlers.js

    r7067 r7092  
    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
     
    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();});
     
    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
     
    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
     
    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 {
  • trunk/wp-includes/script-loader.php

    r7082 r7092  
    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(
Note: See TracChangeset for help on using the changeset viewer.