WordPress.org

Make WordPress Core

Ticket #21329: 21329.8.diff

File 21329.8.diff, 45.8 KB (added by martythornley, 6 years ago)

More reorganization and intro wp_upload_form()

  • wp-admin/includes/media.php

     
    66 * @subpackage Administration
    77 */
    88
     9add_action( 'media_buttons',            'media_buttons' );
     10
     11add_filter( 'async_upload_image',       'get_media_item', 10, 2 );
     12add_filter( 'async_upload_audio',       'get_media_item', 10, 2 );
     13add_filter( 'async_upload_video',       'get_media_item', 10, 2 );
     14add_filter( 'async_upload_file',        'get_media_item', 10, 2 );
     15
     16add_action( 'media_upload_image',       'wp_media_upload_handler' );
     17add_action( 'media_upload_audio',       'wp_media_upload_handler' );
     18add_action( 'media_upload_video',       'wp_media_upload_handler' );
     19add_action( 'media_upload_file',        'wp_media_upload_handler' );
     20
     21add_filter( 'media_upload_gallery', 'media_upload_iframe' );
     22add_filter( 'media_upload_library', 'media_upload_iframe' );
     23
     24add_filter( 'media_upload_tabs',        'update_gallery_tab');
     25add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 );
     26
     27
    928/**
    10  * {@internal Missing Short Description}}
     29 * Echoes the html for media upload buttons
     30 * added to the action call for 'media_buttons'
    1131 *
     32 * @uses get_upload_iframe_src()
    1233 * @since 2.5.0
     34 */
     35function media_buttons($editor_id = 'content') {
     36        $context = apply_filters('media_buttons_context', __('Upload/Insert %s'));
     37
     38        $img = '<img src="' . esc_url( admin_url( 'images/media-button.png?ver=20111005' ) ) . '" width="15" height="15" />';
     39
     40        echo '<a href="' . esc_url( get_upload_iframe_src() ) . '" class="thickbox add_media" id="' . esc_attr( $editor_id ) . '-add_media" title="' . esc_attr__( 'Add Media' ) . '" onclick="return false;">' . sprintf( $context, $img ) . '</a>';
     41}
     42
     43/**
     44 * Determine url of the upload thickbox to be used in the media_buttons() link
    1345 *
    14  * @return unknown
     46 * @uses apply_filters() calls $type . '_upload_iframe_src'
     47 * @param string $type
     48 * @param int $post_id
     49 * @param string $tab
     50 * @since unknown
    1551 */
     52function get_upload_iframe_src( $type = null, $post_id = null, $tab = null ) {
     53        global $post_ID;
     54
     55        if ( empty( $post_id ) )
     56                $post_id = $post_ID;
     57
     58        $upload_iframe_src = add_query_arg( 'post_id', (int) $post_id, admin_url('media-upload.php') );
     59
     60        if ( $type && 'media' != $type )
     61                $upload_iframe_src = add_query_arg('type', $type, $upload_iframe_src);
     62
     63        if ( ! empty( $tab ) )
     64                $upload_iframe_src = add_query_arg('tab', $tab, $upload_iframe_src);
     65
     66        $upload_iframe_src = apply_filters($type . '_upload_iframe_src', $upload_iframe_src);
     67
     68        return add_query_arg('TB_iframe', true, $upload_iframe_src);
     69}
     70
     71/**
     72 * Defines media tabs to be used in thickbox
     73 *
     74 * @since 2.5.0
     75 *
     76 * @uses apply_filters() calls media_upload_tabs
     77 *
     78 * @return an associative array of tab names in the form of type=>name
     79 */
    1680function media_upload_tabs() {
    1781        $_default_tabs = array(
    1882                'type' => __('From Computer'), // handler action suffix => tab text
     
    2589}
    2690
    2791/**
    28  * {@internal Missing Short Description}}
     92 * Added to media_upload_tabs filter to define the gallery tab
     93 * checks for attachments and removes gallery tab if the current post has none.
    2994 *
    3095 * @since 2.5.0
    3196 *
    32  * @param unknown_type $tabs
    33  * @return unknown
     97 * @param array $tabs
     98 * @return an associative array of tab names in the form of type=>name
    3499 */
    35100function update_gallery_tab($tabs) {
    36101        global $wpdb;
     
    54119
    55120        return $tabs;
    56121}
    57 add_filter('media_upload_tabs', 'update_gallery_tab');
    58122
    59123/**
    60  * {@internal Missing Short Description}}
     124 * Echoes the thickbox media upload tabs to the screen
    61125 *
    62126 * @since 2.5.0
    63127 */
     
    65129        global $redir_tab;
    66130        $tabs = media_upload_tabs();
    67131        $default = 'type';
    68 
     132        $html = '';
     133       
    69134        if ( !empty($tabs) ) {
    70                 echo "<ul id='sidemenu'>\n";
     135                $html = "<ul id='sidemenu'>\n";
    71136                if ( isset($redir_tab) && array_key_exists($redir_tab, $tabs) )
    72137                        $current = $redir_tab;
    73138                elseif ( isset($_GET['tab']) && array_key_exists($_GET['tab'], $tabs) )
     
    83148
    84149                        $href = add_query_arg(array('tab' => $callback, 's' => false, 'paged' => false, 'post_mime_type' => false, 'm' => false));
    85150                        $link = "<a href='" . esc_url($href) . "'$class>$text</a>";
    86                         echo "\t<li id='" . esc_attr("tab-$callback") . "'>$link</li>\n";
     151                        $html .= "\t<li id='" . esc_attr("tab-$callback") . "'>$link</li>\n";
    87152                }
    88                 echo "</ul>\n";
     153                $html .= "</ul>\n";
    89154        }
     155        echo $html;
    90156}
    91157
    92158/**
    93  * {@internal Missing Short Description}}
     159 * Creates the html for an image as it is added to the editor
    94160 *
    95161 * @since 2.5.0
    96162 *
     163 * @uses apply_filters() calls image_send_to_editor
    97164 * @param unknown_type $id
    98165 * @param unknown_type $alt
    99166 * @param unknown_type $title
     
    101168 * @param unknown_type $url
    102169 * @param unknown_type $rel
    103170 * @param unknown_type $size
    104  * @return unknown
     171 * @return string - the html for an image tag
    105172 */
    106173function get_image_send_to_editor($id, $caption, $title, $align, $url='', $rel = false, $size='medium', $alt = '') {
    107174
     
    118185}
    119186
    120187/**
    121  * {@internal Missing Short Description}}
     188 * Wraps an image in the caption code
    122189 *
    123190 * @since 2.6.0
    124191 *
     
    156223
    157224        return apply_filters( 'image_add_caption_shortcode', $shcode, $html );
    158225}
    159 add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 );
    160226
    161227/**
    162228 * Private preg_replace callback used in image_add_caption()
     
    170236}
    171237
    172238/**
    173  * {@internal Missing Short Description}}
     239 * Echoes the javascript used to send html back to the editor
    174240 *
    175241 * @since 2.5.0
    176242 *
    177  * @param unknown_type $html
     243 * @param string $html
    178244 */
    179245function media_send_to_editor($html) {
    180246?>
     
    189255}
    190256
    191257/**
    192  * {@internal Missing Short Description}}
    193  *
    194258 * This handles the file upload POST itself, creating the attachment post.
    195259 *
    196260 * @since 2.5.0
     
    260324 *
    261325 * @since 2.6.0
    262326 *
     327 * @uses wp_handle_sideload
     328 * @uses wp_read_image_metadata
     329 * @uses wp_insert_attachment
     330 * @uses wp_update_attachment_metadata
     331 * @uses wp_generate_attachment_metadata
    263332 * @param array $file_array Array similar to a {@link $_FILES} upload array
    264333 * @param int $post_id The post ID the media is associated with
    265334 * @param string $desc Description of the sideloaded file
     
    312381}
    313382
    314383/**
    315  * {@internal Missing Short Description}}
     384 * Pass thru to media_upload_iframe() for backcompat - not actually used anywhere
     385 */
     386function media_upload_gallery() {
     387        media_upload_iframe( 'gallery' );
     388}
     389
     390/**
     391 * Pass thru to media_upload_iframe() for backcompat - not actually used anywhere
     392 */
     393function media_upload_library() {
     394        media_upload_iframe( 'library' );
     395}
     396
     397/**
     398 * Returns wp_iframe with the proper upload form for media uploads
     399 * added to the media_upload filter in media-upload.php
    316400 *
     401 * @since 3.5.0
     402 *
     403 * @return HTML from the wp_iframe function
     404 */
     405function media_upload_iframe() {
     406        $errors = array();
     407        $current_filter = current_filter();
     408        $type = str_replace( 'media_upload_' , '' , $current_filter );
     409       
     410        if ( !empty($_POST) || empty($type) ) {
     411                $return = media_upload_form_handler();
     412                if ( is_string($return) )
     413                        return $return;
     414                if ( is_array($return) )
     415                        $errors = $return;
     416        }
     417
     418        wp_enqueue_script('admin-gallery');
     419
     420        wp_iframe( 'media_upload_form_html' , $type , $errors );
     421
     422}
     423
     424/**
     425 * Generates html for the iframe used in the thickbox window for uploads
     426 *
    317427 * Wrap iframe content (produced by $content_func) in a doctype, html head/body
    318428 * etc any additional function args will be passed to content_func.
    319429 *
     
    324434function wp_iframe($content_func /* ... */) {
    325435        _wp_admin_html_begin();
    326436?>
     437
    327438<title><?php bloginfo('name') ?> &rsaquo; <?php _e('Uploads'); ?> &#8212; <?php _e('WordPress'); ?></title>
    328439<?php
    329440
     
    372483<?php
    373484}
    374485
    375 /**
    376  * {@internal Missing Short Description}}
    377  *
    378  * @since 2.5.0
    379  */
    380 function media_buttons($editor_id = 'content') {
    381         $context = apply_filters('media_buttons_context', __('Upload/Insert %s'));
    382486
    383         $img = '<img src="' . esc_url( admin_url( 'images/media-button.png?ver=20111005' ) ) . '" width="15" height="15" />';
    384 
    385         echo '<a href="' . esc_url( get_upload_iframe_src() ) . '" class="thickbox add_media" id="' . esc_attr( $editor_id ) . '-add_media" title="' . esc_attr__( 'Add Media' ) . '" onclick="return false;">' . sprintf( $context, $img ) . '</a>';
    386 }
    387 add_action( 'media_buttons', 'media_buttons' );
    388 
    389 function get_upload_iframe_src( $type = null, $post_id = null, $tab = null ) {
    390         global $post_ID;
    391 
    392         if ( empty( $post_id ) )
    393                 $post_id = $post_ID;
    394 
    395         $upload_iframe_src = add_query_arg( 'post_id', (int) $post_id, admin_url('media-upload.php') );
    396 
    397         if ( $type && 'media' != $type )
    398                 $upload_iframe_src = add_query_arg('type', $type, $upload_iframe_src);
    399 
    400         if ( ! empty( $tab ) )
    401                 $upload_iframe_src = add_query_arg('tab', $tab, $upload_iframe_src);
    402 
    403         $upload_iframe_src = apply_filters($type . '_upload_iframe_src', $upload_iframe_src);
    404 
    405         return add_query_arg('TB_iframe', true, $upload_iframe_src);
    406 }
    407 
    408487/**
    409488 * {@internal Missing Short Description}}
    410489 *
     
    553632
    554633                return media_send_to_editor($html);
    555634        }
    556 
     635       
    557636        if ( !empty($_POST) ) {
    558637                $return = media_upload_form_handler();
    559638
     
    565644
    566645        if ( isset($_POST['save']) ) {
    567646                $errors['upload_notice'] = __('Saved.');
    568                 return media_upload_gallery();
     647                return media_upload('gallery');
    569648        }
    570 
     649       
    571650        if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' ) {
    572                 $type = 'image';
     651                $type = 'url';
    573652                if ( isset( $_GET['type'] ) && in_array( $_GET['type'], array( 'video', 'audio', 'file' ) ) )
    574653                        $type = $_GET['type'];
     654               
    575655                return wp_iframe( 'media_upload_type_url_form', $type, $errors, $id );
    576656        }
    577 
    578657        return wp_iframe( 'media_upload_type_form', 'image', $errors, $id );
    579658}
    580659
     
    625704}
    626705
    627706/**
    628  * {@internal Missing Short Description}}
    629  *
    630  * @since 2.5.0
    631  *
    632  * @return unknown
    633  */
    634 function media_upload_gallery() {
    635         $errors = array();
    636 
    637         if ( !empty($_POST) ) {
    638                 $return = media_upload_form_handler();
    639 
    640                 if ( is_string($return) )
    641                         return $return;
    642                 if ( is_array($return) )
    643                         $errors = $return;
    644         }
    645 
    646         wp_enqueue_script('admin-gallery');
    647         return wp_iframe( 'media_upload_gallery_form', $errors );
    648 }
    649 
    650 /**
    651  * {@internal Missing Short Description}}
    652  *
    653  * @since 2.5.0
    654  *
    655  * @return unknown
    656  */
    657 function media_upload_library() {
    658         $errors = array();
    659         if ( !empty($_POST) ) {
    660                 $return = media_upload_form_handler();
    661 
    662                 if ( is_string($return) )
    663                         return $return;
    664                 if ( is_array($return) )
    665                         $errors = $return;
    666         }
    667 
    668         return wp_iframe( 'media_upload_library_form', $errors );
    669 }
    670 
    671 /**
    672707 * Retrieve HTML for the image alignment radio buttons with the specified one checked.
    673708 *
    674709 * @since 2.7.0
     
    14071442        do_action('post-upload-ui');
    14081443}
    14091444
    1410 /**
    1411  * {@internal Missing Short Description}}
    1412  *
    1413  * @since 2.5.0
    1414  *
    1415  * @param unknown_type $type
    1416  * @param unknown_type $errors
    1417  * @param unknown_type $id
     1445// Start replaced functions
     1446
     1447/*
     1448 * Pass thru for backcompat - cot actually used anywhere
    14181449 */
    1419 function media_upload_type_form($type = 'file', $errors = null, $id = null) {
    1420 
    1421         media_upload_header();
    1422 
    1423         $post_id = isset( $_REQUEST['post_id'] )? intval( $_REQUEST['post_id'] ) : 0;
    1424 
    1425         $form_action_url = admin_url("media-upload.php?type=$type&tab=type&post_id=$post_id");
    1426         $form_action_url = apply_filters('media_upload_form_url', $form_action_url, $type);
    1427         $form_class = 'media-upload-form type-form validate';
    1428 
    1429         if ( get_user_setting('uploader') )
    1430                 $form_class .= ' html-uploader';
    1431 ?>
    1432 
    1433 <form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="<?php echo $form_class; ?>" id="<?php echo $type; ?>-form">
    1434 <?php submit_button( '', 'hidden', 'save', false ); ?>
    1435 <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
    1436 <?php wp_nonce_field('media-form'); ?>
    1437 
    1438 <h3 class="media-title"><?php _e('Add media files from your computer'); ?></h3>
    1439 
    1440 <?php media_upload_form( $errors ); ?>
    1441 
    1442 <script type="text/javascript">
    1443 //<![CDATA[
    1444 jQuery(function($){
    1445         var preloaded = $(".media-item.preloaded");
    1446         if ( preloaded.length > 0 ) {
    1447                 preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
    1448         }
    1449         updateMediaForm();
    1450 });
    1451 //]]>
    1452 </script>
    1453 <div id="media-items"><?php
    1454 
    1455 if ( $id ) {
    1456         if ( !is_wp_error($id) ) {
    1457                 add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2);
    1458                 echo get_media_items( $id, $errors );
    1459         } else {
    1460                 echo '<div id="media-upload-error">'.esc_html($id->get_error_message()).'</div></div>';
    1461                 exit;
    1462         }
     1450function media_upload_type_form($type = 'image', $errors = null, $id = null) {
     1451        media_upload_form_html( $type, $errors, $id);
    14631452}
    1464 ?></div>
    1465 
    1466 <p class="savebutton ml-submit">
    1467 <?php submit_button( __( 'Save all changes' ), 'button', 'save', false ); ?>
    1468 </p>
    1469 </form>
    1470 <?php
     1453/*
     1454 * Pass thru for backcompat - cot actually used anywhere
     1455 */
     1456function media_upload_type_url_form($type = 'url', $errors = null, $id = null) {
     1457        media_upload_form_html( $type , $errors , $id );
    14711458}
    1472 
    1473 /**
    1474  * {@internal Missing Short Description}}
    1475  *
    1476  * @since 2.7.0
    1477  *
    1478  * @param unknown_type $type
    1479  * @param unknown_type $errors
    1480  * @param unknown_type $id
     1459/*
     1460 * Pass thru for backcompat - cot actually used anywhere
    14811461 */
    1482 function media_upload_type_url_form($type = null, $errors = null, $id = null) {
    1483         if ( null === $type )
    1484                 $type = 'image';
     1462function media_upload_gallery_form( $errors ) {
     1463        media_upload_form_html( 'gallery' , $errors );
     1464}
     1465/*
     1466 * Pass thru for backcompat - cot actually used anywhere
     1467 */
     1468function media_upload_library_form($errors) {
     1469        media_upload_form_html( 'library' , $errors );
     1470}
    14851471
     1472// new upload form function
     1473
     1474function media_upload_form_html($type = NULL, $errors = null, $id = null) {
     1475       
     1476        global $wpdb, $wp_query, $wp_locale, $post_mime_types;
     1477       
     1478        if ( $type == 'url' )
     1479                $action = 'image';
     1480        else
     1481                $action = $type;
     1482               
    14861483        media_upload_header();
    1487 
     1484       
    14881485        $post_id = intval($_REQUEST['post_id']);
    14891486
    1490         $form_action_url = admin_url("media-upload.php?type=$type&tab=type&post_id=$post_id");
     1487        $form_action_url = admin_url("media-upload.php?type=$action&tab=type&post_id=$post_id");
    14911488        $form_action_url = apply_filters('media_upload_form_url', $form_action_url, $type);
    14921489        $form_class = 'media-upload-form type-form validate';
    14931490
     
    14951492                $form_class .= ' html-uploader';
    14961493?>
    14971494
    1498 <form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="<?php echo $form_class; ?>" id="<?php echo $type; ?>-form">
    1499 <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
    1500 <?php wp_nonce_field('media-form'); ?>
     1495        <?php if ( $type == 'gallery' ) { ?>
    15011496
    1502 <h3 class="media-title"><?php _e('Insert media from another website'); ?></h3>
     1497                <div id="sort-buttons" class="hide-if-no-js">
     1498                <span>
     1499                <?php _e('All Tabs:'); ?>
     1500                <a href="#" id="showall"><?php _e('Show'); ?></a>
     1501                <a href="#" id="hideall" style="display:none;"><?php _e('Hide'); ?></a>
     1502                </span>
     1503                <?php _e('Sort Order:'); ?>
     1504                <a href="#" id="asc"><?php _e('Ascending'); ?></a> |
     1505                <a href="#" id="desc"><?php _e('Descending'); ?></a> |
     1506                <a href="#" id="clear"><?php _ex('Clear', 'verb'); ?></a>
     1507                </div>
     1508       
     1509        <?php }; ?>
    15031510
    1504 <script type="text/javascript">
    1505 //<![CDATA[
    1506 var addExtImage = {
     1511        <?php if ( $type != 'file' && $type != 'image' ) { ?>
    15071512
    1508         width : '',
    1509         height : '',
    1510         align : 'alignnone',
     1513                <form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="<?php echo $form_class; ?>" id="<?php echo $action; ?>-form">
     1514                <?php submit_button( '', 'hidden', 'save', false ); ?>
     1515                <?php wp_nonce_field('media-form'); ?>
     1516                <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
    15111517
    1512         insert : function() {
    1513                 var t = this, html, f = document.forms[0], cls, title = '', alt = '', caption = '';
     1518        <?php }; ?>
     1519       
     1520        <?php if ( $type == 'file' || $type == 'image' ) { ?>
     1521                               
     1522                <h3 class="media-title"><?php _e('Add media files from your computer'); ?></h3>
     1523               
     1524                <?php
     1525                $form_args = array(
     1526                                'post_id'               => (int) $post_id,
     1527                                'type'                  => 'file',
     1528                                'inline'                => false,
     1529                                'form_class'    => $form_class,
     1530                                'errors'                => $errors,             
     1531                );
     1532                wp_upload_form( $form_args );
     1533                ?>
    15141534
    1515                 if ( '' == f.src.value || '' == t.width )
    1516                         return false;
     1535        <?php } elseif ( $type == 'library' )  { ?>
     1536               
     1537                <?php
     1538                        $_GET['paged'] = isset( $_GET['paged'] ) ? intval($_GET['paged']) : 0;
     1539                        if ( $_GET['paged'] < 1 )
     1540                                $_GET['paged'] = 1;
     1541                        $start = ( $_GET['paged'] - 1 ) * 10;
     1542                        if ( $start < 1 )
     1543                                $start = 0;
     1544                        add_filter( 'post_limits', create_function( '$a', "return 'LIMIT $start, 10';" ) );
     1545               
     1546                        list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query();
     1547                ?>
     1548                <input type="hidden" name="type" value="<?php echo esc_attr( $type ); ?>" />
     1549                <input type="hidden" name="tab" value="<?php echo esc_attr( $tab ); ?>" />
     1550                <input type="hidden" name="post_id" value="<?php echo (int) $post_id; ?>" />
     1551                <input type="hidden" name="post_mime_type" value="<?php echo isset( $_GET['post_mime_type'] ) ? esc_attr( $_GET['post_mime_type'] ) : ''; ?>" />
     1552                <input type="hidden" name="context" value="<?php echo isset( $_GET['context'] ) ? esc_attr( $_GET['context'] ) : ''; ?>" />
    15171553
    1518                 if ( f.title.value ) {
    1519                         title = f.title.value.replace(/'/g, '&#039;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
    1520                         title = ' title="'+title+'"';
     1554                <p id="media-search" class="search-box">
     1555                        <label class="screen-reader-text" for="media-search-input"><?php _e('Search Media');?>:</label>
     1556                        <input type="search" id="media-search-input" name="s" value="<?php the_search_query(); ?>" />
     1557                        <?php submit_button( __( 'Search Media' ), 'button', '', false ); ?>
     1558                </p>
     1559               
     1560                <ul class="subsubsub">
     1561                <?php
     1562                $type_links = array();
     1563                $_num_posts = (array) wp_count_attachments();
     1564                $matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts));
     1565                foreach ( $matches as $_type => $reals )
     1566                        foreach ( $reals as $real )
     1567                                if ( isset($num_posts[$_type]) )
     1568                                        $num_posts[$_type] += $_num_posts[$real];
     1569                                else
     1570                                        $num_posts[$_type] = $_num_posts[$real];
     1571                // If available type specified by media button clicked, filter by that type
     1572                if ( empty($_GET['post_mime_type']) && !empty($num_posts[$type]) ) {
     1573                        $_GET['post_mime_type'] = $type;
     1574                        list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query();
    15211575                }
    1522 
    1523                 if ( f.alt.value )
    1524                         alt = f.alt.value.replace(/'/g, '&#039;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
    1525 
    1526 <?php if ( ! apply_filters( 'disable_captions', '' ) ) { ?>
    1527                 if ( f.caption.value ) {
    1528                         caption = f.caption.value.replace(/\r\n|\r/g, '\n');
    1529                         caption = caption.replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g, function(a){
    1530                                 return a.replace(/[\r\n\t]+/, ' ');
    1531                         });
    1532 
    1533                         caption = caption.replace(/\s*\n\s*/g, '<br />');
     1576                if ( empty($_GET['post_mime_type']) || $_GET['post_mime_type'] == 'all' )
     1577                        $class = ' class="current"';
     1578                else
     1579                        $class = '';
     1580                $type_links[] = "<li><a href='" . esc_url(add_query_arg(array('post_mime_type'=>'all', 'paged'=>false, 'm'=>false))) . "'$class>".__('All Types')."</a>";
     1581                foreach ( $post_mime_types as $mime_type => $label ) {
     1582                        $class = '';
     1583               
     1584                        if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) )
     1585                                continue;
     1586               
     1587                        if ( isset($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) )
     1588                                $class = ' class="current"';
     1589               
     1590                        $type_links[] = "<li><a href='" . esc_url(add_query_arg(array('post_mime_type'=>$mime_type, 'paged'=>false))) . "'$class>" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), "<span id='$mime_type-counter'>" . number_format_i18n( $num_posts[$mime_type] ) . '</span>') . '</a>';
    15341591                }
    1535 <?php } ?>
    1536 
    1537                 cls = caption ? '' : ' class="'+t.align+'"';
    1538 
    1539                 html = '<img alt="'+alt+'" src="'+f.src.value+'"'+title+cls+' width="'+t.width+'" height="'+t.height+'" />';
    1540 
    1541                 if ( f.url.value ) {
    1542                         url = f.url.value.replace(/'/g, '&#039;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
    1543                         html = '<a href="'+url+'">'+html+'</a>';
     1592                echo implode(' | </li>', apply_filters( 'media_upload_mime_type_links', $type_links ) ) . '</li>';
     1593                unset($type_links);
     1594                ?>
     1595                </ul>
     1596               
     1597                <div class="tablenav">
     1598               
     1599                <?php
     1600                $page_links = paginate_links( array(
     1601                        'base' => add_query_arg( 'paged', '%#%' ),
     1602                        'format' => '',
     1603                        'prev_text' => __('&laquo;'),
     1604                        'next_text' => __('&raquo;'),
     1605                        'total' => ceil($wp_query->found_posts / 10),
     1606                        'current' => $_GET['paged']
     1607                ));
     1608               
     1609                if ( $page_links )
     1610                        echo "<div class='tablenav-pages'>$page_links</div>";
     1611                ?>
     1612               
     1613                <div class="alignleft actions">
     1614                <?php
     1615               
     1616                $arc_query = "SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'attachment' ORDER BY post_date DESC";
     1617               
     1618                $arc_result = $wpdb->get_results( $arc_query );
     1619               
     1620                $month_count = count($arc_result);
     1621               
     1622                if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ?>
     1623                <select name='m'>
     1624                <option<?php selected( @$_GET['m'], 0 ); ?> value='0'><?php _e('Show all dates'); ?></option>
     1625                <?php
     1626                foreach ($arc_result as $arc_row) {
     1627                        if ( $arc_row->yyear == 0 )
     1628                                continue;
     1629                        $arc_row->mmonth = zeroise( $arc_row->mmonth, 2 );
     1630               
     1631                        if ( isset($_GET['m']) && ( $arc_row->yyear . $arc_row->mmonth == $_GET['m'] ) )
     1632                                $default = ' selected="selected"';
     1633                        else
     1634                                $default = '';
     1635               
     1636                        echo "<option$default value='" . esc_attr( $arc_row->yyear . $arc_row->mmonth ) . "'>";
     1637                        echo esc_html( $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear" );
     1638                        echo "</option>\n";
    15441639                }
     1640                ?>
     1641                </select>
     1642                <?php } ?>
     1643               
     1644                <?php submit_button( __( 'Filter &#187;' ), 'secondary', 'post-query-submit', false ); ?>
     1645               
     1646                </div>
     1647               
     1648                <br class="clear" />
     1649                </div>
     1650                </form>
     1651               
     1652                <form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="<?php echo $form_class; ?>" id="library-form">
     1653               
     1654                <?php wp_nonce_field('media-form'); ?>
     1655                <?php //media_upload_form( $errors ); ?>
     1656               
     1657                <?php media_upload_form_js('library'); ?>
    15451658
    1546                 if ( caption )
    1547                         html = '[caption id="" align="'+t.align+'" width="'+t.width+'"]'+html+caption+'[/caption]';
     1659               
     1660                <div id="media-items">
     1661                <?php add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2); ?>
     1662                <?php echo get_media_items(null, $errors); ?>
     1663                </div>
     1664                <p class="ml-submit">
     1665                <?php submit_button( __( 'Save all changes' ), 'button savebutton', 'save', false ); ?>
     1666                <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
     1667                </p>
     1668                </form>
     1669               
     1670        <?php } elseif ( $type == 'gallery' )  { ?>
    15481671
    1549                 var win = window.dialogArguments || opener || parent || top;
    1550                 win.send_to_editor(html);
    1551                 return false;
    1552         },
     1672                <?php media_upload_form_js('library'); ?>
    15531673
    1554         resetImageData : function() {
    1555                 var t = addExtImage;
     1674                <table class="widefat" cellspacing="0">
     1675                        <thead><tr>
     1676                                <th><?php _e('Media'); ?></th>
     1677                                <th class="order-head"><?php _e('Order'); ?></th>
     1678                                <th class="actions-head"><?php _e('Actions'); ?></th>
     1679                        </tr></thead>
     1680                </table>
     1681                <div id="media-items">
     1682                <?php add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2); ?>
     1683                <?php echo get_media_items($post_id, $errors); ?>
     1684                </div>
     1685               
     1686                <p class="ml-submit">
     1687                <?php submit_button( __( 'Save all changes' ), 'button savebutton', 'save', false, array( 'id' => 'save-all', 'style' => 'display: none;' ) ); ?>
     1688                <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
     1689                <input type="hidden" name="type" value="<?php echo esc_attr( $GLOBALS['type'] ); ?>" />
     1690                <input type="hidden" name="tab" value="<?php echo esc_attr( $GLOBALS['tab'] ); ?>" />
     1691                </p>
     1692               
     1693                <div id="gallery-settings" style="display:none;">
     1694                <div class="title"><?php _e('Gallery Settings'); ?></div>
     1695                <table id="basic" class="describe"><tbody>
     1696                        <tr>
     1697                        <th scope="row" class="label">
     1698                                <label>
     1699                                <span class="alignleft"><?php _e('Link thumbnails to:'); ?></span>
     1700                                </label>
     1701                        </th>
     1702                        <td class="field">
     1703                                <input type="radio" name="linkto" id="linkto-file" value="file" />
     1704                                <label for="linkto-file" class="radio"><?php _e('Image File'); ?></label>
     1705               
     1706                                <input type="radio" checked="checked" name="linkto" id="linkto-post" value="post" />
     1707                                <label for="linkto-post" class="radio"><?php _e('Attachment Page'); ?></label>
     1708                        </td>
     1709                        </tr>
     1710               
     1711                        <tr>
     1712                        <th scope="row" class="label">
     1713                                <label>
     1714                                <span class="alignleft"><?php _e('Order images by:'); ?></span>
     1715                                </label>
     1716                        </th>
     1717                        <td class="field">
     1718                                <select id="orderby" name="orderby">
     1719                                        <option value="menu_order" selected="selected"><?php _e('Menu order'); ?></option>
     1720                                        <option value="title"><?php _e('Title'); ?></option>
     1721                                        <option value="post_date"><?php _e('Date/Time'); ?></option>
     1722                                        <option value="rand"><?php _e('Random'); ?></option>
     1723                                </select>
     1724                        </td>
     1725                        </tr>
     1726               
     1727                        <tr>
     1728                        <th scope="row" class="label">
     1729                                <label>
     1730                                <span class="alignleft"><?php _e('Order:'); ?></span>
     1731                                </label>
     1732                        </th>
     1733                        <td class="field">
     1734                                <input type="radio" checked="checked" name="order" id="order-asc" value="asc" />
     1735                                <label for="order-asc" class="radio"><?php _e('Ascending'); ?></label>
     1736               
     1737                                <input type="radio" name="order" id="order-desc" value="desc" />
     1738                                <label for="order-desc" class="radio"><?php _e('Descending'); ?></label>
     1739                        </td>
     1740                        </tr>
     1741               
     1742                        <tr>
     1743                        <th scope="row" class="label">
     1744                                <label>
     1745                                <span class="alignleft"><?php _e('Gallery columns:'); ?></span>
     1746                                </label>
     1747                        </th>
     1748                        <td class="field">
     1749                                <select id="columns" name="columns">
     1750                                        <option value="1">1</option>
     1751                                        <option value="2">2</option>
     1752                                        <option value="3" selected="selected">3</option>
     1753                                        <option value="4">4</option>
     1754                                        <option value="5">5</option>
     1755                                        <option value="6">6</option>
     1756                                        <option value="7">7</option>
     1757                                        <option value="8">8</option>
     1758                                        <option value="9">9</option>
     1759                                </select>
     1760                        </td>
     1761                        </tr>
     1762                </tbody></table>
     1763               
     1764                <p class="ml-submit">
     1765                <input type="button" class="button" style="display:none;" onMouseDown="wpgallery.update();" name="insert-gallery" id="insert-gallery" value="<?php esc_attr_e( 'Insert gallery' ); ?>" />
     1766                <input type="button" class="button" style="display:none;" onMouseDown="wpgallery.update();" name="update-gallery" id="update-gallery" value="<?php esc_attr_e( 'Update gallery settings' ); ?>" />
     1767                </p>
     1768                </div>
     1769                </form>         
    15561770
    1557                 t.width = t.height = '';
    1558                 document.getElementById('go_button').style.color = '#bbb';
    1559                 if ( ! document.forms[0].src.value )
    1560                         document.getElementById('status_img').innerHTML = '*';
    1561                 else document.getElementById('status_img').innerHTML = '<img src="<?php echo esc_url( admin_url( 'images/no.png' ) ); ?>" alt="" />';
    1562         },
     1771        <?php } elseif ( $type == 'url' )  { ?>
    15631772
    1564         updateImageData : function() {
    1565                 var t = addExtImage;
     1773                <h3 class="media-title"><?php _e('Insert media from another website'); ?></h3>
     1774               
     1775                <?php media_upload_form_js('url'); ?>
    15661776
    1567                 t.width = t.preloadImg.width;
    1568                 t.height = t.preloadImg.height;
    1569                 document.getElementById('go_button').style.color = '#333';
    1570                 document.getElementById('status_img').innerHTML = '<img src="<?php echo esc_url( admin_url( 'images/yes.png' ) ); ?>" alt="" />';
    1571         },
     1777                <div id="media-items">
     1778                <div class="media-item media-blank">
     1779                <?php echo apply_filters( 'type_url_form_media', wp_media_insert_url_form( 'image' ) ); ?>
     1780                </div>
     1781                </div>
     1782                </form>
     1783               
     1784        <?php }; ?>
    15721785
    1573         getImageData : function() {
    1574                 if ( jQuery('table.describe').hasClass('not-image') )
    1575                         return;
    1576 
    1577                 var t = addExtImage, src = document.forms[0].src.value;
    1578 
    1579                 if ( ! src ) {
    1580                         t.resetImageData();
    1581                         return false;
    1582                 }
    1583 
    1584                 document.getElementById('status_img').innerHTML = '<img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />';
    1585                 t.preloadImg = new Image();
    1586                 t.preloadImg.onload = t.updateImageData;
    1587                 t.preloadImg.onerror = t.resetImageData;
    1588                 t.preloadImg.src = src;
    1589         }
    1590 }
    1591 
    1592 jQuery(document).ready( function($) {
    1593         $('.media-types input').click( function() {
    1594                 $('table.describe').toggleClass('not-image', $('#not-image').prop('checked') );
    1595         });
    1596 });
    1597 
    1598 //]]>
    1599 </script>
    1600 
    1601 <div id="media-items">
    1602 <div class="media-item media-blank">
    1603 <?php echo apply_filters( 'type_url_form_media', wp_media_insert_url_form( $type ) ); ?>
    1604 </div>
    1605 </div>
    1606 </form>
    16071786<?php
    16081787}
    16091788
    1610 /**
    1611  * {@internal Missing Short Description}}
     1789/*
     1790 * Adds javascript for $type of form.
     1791 * Used to be all split and added by each function
    16121792 *
    1613  * @since 2.5.0
    1614  *
    1615  * @param unknown_type $errors
     1793 * @param string $type - which type of upload form - 'file', 'gallery', 'library', 'url'
    16161794 */
    1617 function media_upload_gallery_form($errors) {
    1618         global $redir_tab, $type;
     1795function media_upload_form_js( $type=NULL) {
    16191796
    1620         $redir_tab = 'gallery';
    1621         media_upload_header();
    1622 
    1623         $post_id = intval($_REQUEST['post_id']);
    1624         $form_action_url = admin_url("media-upload.php?type=$type&tab=gallery&post_id=$post_id");
    1625         $form_action_url = apply_filters('media_upload_form_url', $form_action_url, $type);
    1626         $form_class = 'media-upload-form validate';
    1627 
    1628         if ( get_user_setting('uploader') )
    1629                 $form_class .= ' html-uploader';
     1797        if ( $type == 'file' || $type == 'gallery' || $type == 'library' ) {
    16301798?>
    1631 
    1632 <script type="text/javascript">
    1633 <!--
    1634 jQuery(function($){
    1635         var preloaded = $(".media-item.preloaded");
    1636         if ( preloaded.length > 0 ) {
    1637                 preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
     1799        <script type="text/javascript">
     1800        //<![CDATA[
     1801        jQuery(function($){
     1802                var preloaded = $(".media-item.preloaded");
     1803                if ( preloaded.length > 0 ) {
     1804                        preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
     1805                }
    16381806                updateMediaForm();
     1807        });
     1808        //]]>
     1809        </script>
     1810<?php } elseif ( $type == 'url' ) { ?>
     1811        <script type="text/javascript">
     1812        //<![CDATA[
     1813        var addExtImage = {
     1814       
     1815                width : '',
     1816                height : '',
     1817                align : 'alignnone',
     1818       
     1819                insert : function() {
     1820                        var t = this, html, f = document.forms[0], cls, title = '', alt = '', caption = '';
     1821       
     1822                        if ( '' == f.src.value || '' == t.width )
     1823                                return false;
     1824       
     1825                        if ( f.title.value ) {
     1826                                title = f.title.value.replace(/'/g, '&#039;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
     1827                                title = ' title="'+title+'"';
     1828                        }
     1829       
     1830                        if ( f.alt.value )
     1831                                alt = f.alt.value.replace(/'/g, '&#039;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
     1832       
     1833        <?php if ( ! apply_filters( 'disable_captions', '' ) ) { ?>
     1834                        if ( f.caption.value ) {
     1835                                caption = f.caption.value.replace(/\r\n|\r/g, '\n');
     1836                                caption = caption.replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g, function(a){
     1837                                        return a.replace(/[\r\n\t]+/, ' ');
     1838                                });
     1839       
     1840                                caption = caption.replace(/\s*\n\s*/g, '<br />');
     1841                        }
     1842        <?php } ?>
     1843       
     1844                        cls = caption ? '' : ' class="'+t.align+'"';
     1845       
     1846                        html = '<img alt="'+alt+'" src="'+f.src.value+'"'+title+cls+' width="'+t.width+'" height="'+t.height+'" />';
     1847       
     1848                        if ( f.url.value ) {
     1849                                url = f.url.value.replace(/'/g, '&#039;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
     1850                                html = '<a href="'+url+'">'+html+'</a>';
     1851                        }
     1852       
     1853                        if ( caption )
     1854                                html = '[caption id="" align="'+t.align+'" width="'+t.width+'"]'+html+caption+'[/caption]';
     1855       
     1856                        var win = window.dialogArguments || opener || parent || top;
     1857                        win.send_to_editor(html);
     1858                        return false;
     1859                },
     1860       
     1861                resetImageData : function() {
     1862                        var t = addExtImage;
     1863       
     1864                        t.width = t.height = '';
     1865                        document.getElementById('go_button').style.color = '#bbb';
     1866                        if ( ! document.forms[0].src.value )
     1867                                document.getElementById('status_img').innerHTML = '*';
     1868                        else document.getElementById('status_img').innerHTML = '<img src="<?php echo esc_url( admin_url( 'images/no.png' ) ); ?>" alt="" />';
     1869                },
     1870       
     1871                updateImageData : function() {
     1872                        var t = addExtImage;
     1873       
     1874                        t.width = t.preloadImg.width;
     1875                        t.height = t.preloadImg.height;
     1876                        document.getElementById('go_button').style.color = '#333';
     1877                        document.getElementById('status_img').innerHTML = '<img src="<?php echo esc_url( admin_url( 'images/yes.png' ) ); ?>" alt="" />';
     1878                },
     1879       
     1880                getImageData : function() {
     1881                        if ( jQuery('table.describe').hasClass('not-image') )
     1882                                return;
     1883       
     1884                        var t = addExtImage, src = document.forms[0].src.value;
     1885       
     1886                        if ( ! src ) {
     1887                                t.resetImageData();
     1888                                return false;
     1889                        }
     1890       
     1891                        document.getElementById('status_img').innerHTML = '<img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />';
     1892                        t.preloadImg = new Image();
     1893                        t.preloadImg.onload = t.updateImageData;
     1894                        t.preloadImg.onerror = t.resetImageData;
     1895                        t.preloadImg.src = src;
     1896                }
    16391897        }
    1640 });
    1641 -->
    1642 </script>
    1643 <div id="sort-buttons" class="hide-if-no-js">
    1644 <span>
    1645 <?php _e('All Tabs:'); ?>
    1646 <a href="#" id="showall"><?php _e('Show'); ?></a>
    1647 <a href="#" id="hideall" style="display:none;"><?php _e('Hide'); ?></a>
    1648 </span>
    1649 <?php _e('Sort Order:'); ?>
    1650 <a href="#" id="asc"><?php _e('Ascending'); ?></a> |
    1651 <a href="#" id="desc"><?php _e('Descending'); ?></a> |
    1652 <a href="#" id="clear"><?php _ex('Clear', 'verb'); ?></a>
    1653 </div>
    1654 <form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="<?php echo $form_class; ?>" id="gallery-form">
    1655 <?php wp_nonce_field('media-form'); ?>
    1656 <?php //media_upload_form( $errors ); ?>
    1657 <table class="widefat" cellspacing="0">
    1658 <thead><tr>
    1659 <th><?php _e('Media'); ?></th>
    1660 <th class="order-head"><?php _e('Order'); ?></th>
    1661 <th class="actions-head"><?php _e('Actions'); ?></th>
    1662 </tr></thead>
    1663 </table>
    1664 <div id="media-items">
    1665 <?php add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2); ?>
    1666 <?php echo get_media_items($post_id, $errors); ?>
    1667 </div>
    1668 
    1669 <p class="ml-submit">
    1670 <?php submit_button( __( 'Save all changes' ), 'button savebutton', 'save', false, array( 'id' => 'save-all', 'style' => 'display: none;' ) ); ?>
    1671 <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
    1672 <input type="hidden" name="type" value="<?php echo esc_attr( $GLOBALS['type'] ); ?>" />
    1673 <input type="hidden" name="tab" value="<?php echo esc_attr( $GLOBALS['tab'] ); ?>" />
    1674 </p>
    1675 
    1676 <div id="gallery-settings" style="display:none;">
    1677 <div class="title"><?php _e('Gallery Settings'); ?></div>
    1678 <table id="basic" class="describe"><tbody>
    1679         <tr>
    1680         <th scope="row" class="label">
    1681                 <label>
    1682                 <span class="alignleft"><?php _e('Link thumbnails to:'); ?></span>
    1683                 </label>
    1684         </th>
    1685         <td class="field">
    1686                 <input type="radio" name="linkto" id="linkto-file" value="file" />
    1687                 <label for="linkto-file" class="radio"><?php _e('Image File'); ?></label>
    1688 
    1689                 <input type="radio" checked="checked" name="linkto" id="linkto-post" value="post" />
    1690                 <label for="linkto-post" class="radio"><?php _e('Attachment Page'); ?></label>
    1691         </td>
    1692         </tr>
    1693 
    1694         <tr>
    1695         <th scope="row" class="label">
    1696                 <label>
    1697                 <span class="alignleft"><?php _e('Order images by:'); ?></span>
    1698                 </label>
    1699         </th>
    1700         <td class="field">
    1701                 <select id="orderby" name="orderby">
    1702                         <option value="menu_order" selected="selected"><?php _e('Menu order'); ?></option>
    1703                         <option value="title"><?php _e('Title'); ?></option>
    1704                         <option value="post_date"><?php _e('Date/Time'); ?></option>
    1705                         <option value="rand"><?php _e('Random'); ?></option>
    1706                 </select>
    1707         </td>
    1708         </tr>
    1709 
    1710         <tr>
    1711         <th scope="row" class="label">
    1712                 <label>
    1713                 <span class="alignleft"><?php _e('Order:'); ?></span>
    1714                 </label>
    1715         </th>
    1716         <td class="field">
    1717                 <input type="radio" checked="checked" name="order" id="order-asc" value="asc" />
    1718                 <label for="order-asc" class="radio"><?php _e('Ascending'); ?></label>
    1719 
    1720                 <input type="radio" name="order" id="order-desc" value="desc" />
    1721                 <label for="order-desc" class="radio"><?php _e('Descending'); ?></label>
    1722         </td>
    1723         </tr>
    1724 
    1725         <tr>
    1726         <th scope="row" class="label">
    1727                 <label>
    1728                 <span class="alignleft"><?php _e('Gallery columns:'); ?></span>
    1729                 </label>
    1730         </th>
    1731         <td class="field">
    1732                 <select id="columns" name="columns">
    1733                         <option value="1">1</option>
    1734                         <option value="2">2</option>
    1735                         <option value="3" selected="selected">3</option>
    1736                         <option value="4">4</option>
    1737                         <option value="5">5</option>
    1738                         <option value="6">6</option>
    1739                         <option value="7">7</option>
    1740                         <option value="8">8</option>
    1741                         <option value="9">9</option>
    1742                 </select>
    1743         </td>
    1744         </tr>
    1745 </tbody></table>
    1746 
    1747 <p class="ml-submit">
    1748 <input type="button" class="button" style="display:none;" onMouseDown="wpgallery.update();" name="insert-gallery" id="insert-gallery" value="<?php esc_attr_e( 'Insert gallery' ); ?>" />
    1749 <input type="button" class="button" style="display:none;" onMouseDown="wpgallery.update();" name="update-gallery" id="update-gallery" value="<?php esc_attr_e( 'Update gallery settings' ); ?>" />
    1750 </p>
    1751 </div>
    1752 </form>
     1898       
     1899        jQuery(document).ready( function($) {
     1900                $('.media-types input').click( function() {
     1901                        $('table.describe').toggleClass('not-image', $('#not-image').prop('checked') );
     1902                });
     1903        });
     1904       
     1905        //]]>
     1906        </script>
    17531907<?php
     1908        }; // endif
    17541909}
    17551910
    17561911/**
    17571912 * {@internal Missing Short Description}}
    17581913 *
    1759  * @since 2.5.0
    1760  *
    1761  * @param unknown_type $errors
    1762  */
    1763 function media_upload_library_form($errors) {
    1764         global $wpdb, $wp_query, $wp_locale, $type, $tab, $post_mime_types;
    1765 
    1766         media_upload_header();
    1767 
    1768         $post_id = intval($_REQUEST['post_id']);
    1769 
    1770         $form_action_url = admin_url("media-upload.php?type=$type&tab=library&post_id=$post_id");
    1771         $form_action_url = apply_filters('media_upload_form_url', $form_action_url, $type);
    1772         $form_class = 'media-upload-form validate';
    1773 
    1774         if ( get_user_setting('uploader') )
    1775                 $form_class .= ' html-uploader';
    1776 
    1777         $_GET['paged'] = isset( $_GET['paged'] ) ? intval($_GET['paged']) : 0;
    1778         if ( $_GET['paged'] < 1 )
    1779                 $_GET['paged'] = 1;
    1780         $start = ( $_GET['paged'] - 1 ) * 10;
    1781         if ( $start < 1 )
    1782                 $start = 0;
    1783         add_filter( 'post_limits', create_function( '$a', "return 'LIMIT $start, 10';" ) );
    1784 
    1785         list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query();
    1786 
    1787 ?>
    1788 
    1789 <form id="filter" action="" method="get">
    1790 <input type="hidden" name="type" value="<?php echo esc_attr( $type ); ?>" />
    1791 <input type="hidden" name="tab" value="<?php echo esc_attr( $tab ); ?>" />
    1792 <input type="hidden" name="post_id" value="<?php echo (int) $post_id; ?>" />
    1793 <input type="hidden" name="post_mime_type" value="<?php echo isset( $_GET['post_mime_type'] ) ? esc_attr( $_GET['post_mime_type'] ) : ''; ?>" />
    1794 <input type="hidden" name="context" value="<?php echo isset( $_GET['context'] ) ? esc_attr( $_GET['context'] ) : ''; ?>" />
    1795 
    1796 <p id="media-search" class="search-box">
    1797         <label class="screen-reader-text" for="media-search-input"><?php _e('Search Media');?>:</label>
    1798         <input type="search" id="media-search-input" name="s" value="<?php the_search_query(); ?>" />
    1799         <?php submit_button( __( 'Search Media' ), 'button', '', false ); ?>
    1800 </p>
    1801 
    1802 <ul class="subsubsub">
    1803 <?php
    1804 $type_links = array();
    1805 $_num_posts = (array) wp_count_attachments();
    1806 $matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts));
    1807 foreach ( $matches as $_type => $reals )
    1808         foreach ( $reals as $real )
    1809                 if ( isset($num_posts[$_type]) )
    1810                         $num_posts[$_type] += $_num_posts[$real];
    1811                 else
    1812                         $num_posts[$_type] = $_num_posts[$real];
    1813 // If available type specified by media button clicked, filter by that type
    1814 if ( empty($_GET['post_mime_type']) && !empty($num_posts[$type]) ) {
    1815         $_GET['post_mime_type'] = $type;
    1816         list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query();
    1817 }
    1818 if ( empty($_GET['post_mime_type']) || $_GET['post_mime_type'] == 'all' )
    1819         $class = ' class="current"';
    1820 else
    1821         $class = '';
    1822 $type_links[] = "<li><a href='" . esc_url(add_query_arg(array('post_mime_type'=>'all', 'paged'=>false, 'm'=>false))) . "'$class>".__('All Types')."</a>";
    1823 foreach ( $post_mime_types as $mime_type => $label ) {
    1824         $class = '';
    1825 
    1826         if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) )
    1827                 continue;
    1828 
    1829         if ( isset($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) )
    1830                 $class = ' class="current"';
    1831 
    1832         $type_links[] = "<li><a href='" . esc_url(add_query_arg(array('post_mime_type'=>$mime_type, 'paged'=>false))) . "'$class>" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), "<span id='$mime_type-counter'>" . number_format_i18n( $num_posts[$mime_type] ) . '</span>') . '</a>';
    1833 }
    1834 echo implode(' | </li>', apply_filters( 'media_upload_mime_type_links', $type_links ) ) . '</li>';
    1835 unset($type_links);
    1836 ?>
    1837 </ul>
    1838 
    1839 <div class="tablenav">
    1840 
    1841 <?php
    1842 $page_links = paginate_links( array(
    1843         'base' => add_query_arg( 'paged', '%#%' ),
    1844         'format' => '',
    1845         'prev_text' => __('&laquo;'),
    1846         'next_text' => __('&raquo;'),
    1847         'total' => ceil($wp_query->found_posts / 10),
    1848         'current' => $_GET['paged']
    1849 ));
    1850 
    1851 if ( $page_links )
    1852         echo "<div class='tablenav-pages'>$page_links</div>";
    1853 ?>
    1854 
    1855 <div class="alignleft actions">
    1856 <?php
    1857 
    1858 $arc_query = "SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'attachment' ORDER BY post_date DESC";
    1859 
    1860 $arc_result = $wpdb->get_results( $arc_query );
    1861 
    1862 $month_count = count($arc_result);
    1863 
    1864 if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ?>
    1865 <select name='m'>
    1866 <option<?php selected( @$_GET['m'], 0 ); ?> value='0'><?php _e('Show all dates'); ?></option>
    1867 <?php
    1868 foreach ($arc_result as $arc_row) {
    1869         if ( $arc_row->yyear == 0 )
    1870                 continue;
    1871         $arc_row->mmonth = zeroise( $arc_row->mmonth, 2 );
    1872 
    1873         if ( isset($_GET['m']) && ( $arc_row->yyear . $arc_row->mmonth == $_GET['m'] ) )
    1874                 $default = ' selected="selected"';
    1875         else
    1876                 $default = '';
    1877 
    1878         echo "<option$default value='" . esc_attr( $arc_row->yyear . $arc_row->mmonth ) . "'>";
    1879         echo esc_html( $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear" );
    1880         echo "</option>\n";
    1881 }
    1882 ?>
    1883 </select>
    1884 <?php } ?>
    1885 
    1886 <?php submit_button( __( 'Filter &#187;' ), 'secondary', 'post-query-submit', false ); ?>
    1887 
    1888 </div>
    1889 
    1890 <br class="clear" />
    1891 </div>
    1892 </form>
    1893 
    1894 <form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="<?php echo $form_class; ?>" id="library-form">
    1895 
    1896 <?php wp_nonce_field('media-form'); ?>
    1897 <?php //media_upload_form( $errors ); ?>
    1898 
    1899 <script type="text/javascript">
    1900 <!--
    1901 jQuery(function($){
    1902         var preloaded = $(".media-item.preloaded");
    1903         if ( preloaded.length > 0 ) {
    1904                 preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
    1905                 updateMediaForm();
    1906         }
    1907 });
    1908 -->
    1909 </script>
    1910 
    1911 <div id="media-items">
    1912 <?php add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2); ?>
    1913 <?php echo get_media_items(null, $errors); ?>
    1914 </div>
    1915 <p class="ml-submit">
    1916 <?php submit_button( __( 'Save all changes' ), 'button savebutton', 'save', false ); ?>
    1917 <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
    1918 </p>
    1919 </form>
    1920 <?php
    1921 }
    1922 
    1923 /**
    1924  * {@internal Missing Short Description}}
    1925  *
    19261914 * @since 2.7.0
    19271915 *
    19281916 * @return unknown
     
    20952083        echo '<p>' . sprintf( __( 'Sorry, you have used all of your storage quota of %s MB.' ), get_space_allowed() ) . '</p>';
    20962084}
    20972085
    2098 add_filter( 'async_upload_image', 'get_media_item', 10, 2 );
    2099 add_filter( 'async_upload_audio', 'get_media_item', 10, 2 );
    2100 add_filter( 'async_upload_video', 'get_media_item', 10, 2 );
    2101 add_filter( 'async_upload_file',  'get_media_item', 10, 2 );
     2086function wp_upload_form( $args ) {
     2087               
     2088        $defaults = array(
     2089                'post_id'               => NULL,
     2090                'type'                  => 'file',
     2091                'inline'                => false,
     2092                'form_class'    => 'media-upload-form type-form validate',
     2093                'errors'                => array(),
     2094        );
     2095       
     2096        $args = wp_parse_args( $args, $defaults );
     2097       
     2098        extract( $args );
     2099       
     2100        wp_enqueue_script('plupload-handlers');
     2101        wp_enqueue_script('image-edit');
     2102        wp_enqueue_script('set-post-thumbnail' );
     2103        wp_enqueue_style('imgareaselect');
     2104        wp_enqueue_script( 'media-gallery' );
    21022105
    2103 add_action( 'media_upload_image', 'wp_media_upload_handler' );
    2104 add_action( 'media_upload_audio', 'wp_media_upload_handler' );
    2105 add_action( 'media_upload_video', 'wp_media_upload_handler' );
    2106 add_action( 'media_upload_file',  'wp_media_upload_handler' );
     2106        ?>
     2107        <form enctype="multipart/form-data" method="post" action="<?php echo admin_url('media-upload.php?inline=$inline&amp;upload-page-form='); ?>" class="<?php echo $form_class; ?>" id="file-form">
     2108       
    21072109
    2108 add_filter( 'media_upload_gallery', 'media_upload_gallery' );
    2109 add_filter( 'media_upload_library', 'media_upload_library' );
     2110        <?php media_upload_form(); ?>   
     2111       
     2112        <?php wp_nonce_field('media-form'); ?>
     2113       
     2114        <?php if ( $inline !== false ) { ?>
     2115
     2116                <div id="media-items" class="hide-if-no-js"></div>
     2117                <input type="hidden" name="post_id" id="post_id" value="0" />
     2118               
     2119                <script type="text/javascript">
     2120                jQuery(function($){
     2121                        var preloaded = $(".media-item.preloaded");
     2122                        if ( preloaded.length > 0 ) {
     2123                                preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
     2124                        }
     2125                        updateMediaForm();
     2126                        post_id = 0;
     2127                        shortform = 1;
     2128                });
     2129                </script>
     2130               
     2131        <?php } else { ?>
     2132       
     2133                <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
     2134                <div id="media-items">
     2135               
     2136                <?php
     2137                if ( $id ) {
     2138                        if ( !is_wp_error($id) ) {
     2139                                add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2);
     2140                                echo get_media_items( $id, $errors );
     2141                        } else {
     2142                                echo '<div id="media-upload-error">'.esc_html($id->get_error_message()).'</div></div>';
     2143                                exit;
     2144                        }
     2145                }
     2146                ?>
     2147               
     2148                </div>
     2149                <p class="savebutton ml-submit">
     2150                <?php submit_button( __( 'Save all changes' ), 'button', 'save', false ); ?>
     2151                </p>
     2152                </form>
     2153               
     2154                <script type="text/javascript">
     2155                //<![CDATA[
     2156                jQuery(function($){
     2157                        var preloaded = $(".media-item.preloaded");
     2158                        if ( preloaded.length > 0 ) {
     2159                                preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
     2160                        }
     2161                        updateMediaForm();
     2162                });
     2163                //]]>
     2164                </script>
     2165       
     2166        <?php }; ?>
     2167       
     2168        <?php submit_button( __( 'Save all changes' ), 'button savebutton hidden', 'save' ); ?>
     2169        <?php
     2170}
     2171 No newline at end of file