WordPress.org

Make WordPress Core

Changeset 7062


Ignore:
Timestamp:
02/27/08 08:31:10 (6 years ago)
Author:
ryan
Message:

Add media library uploader tab. Props andy. see #5911

Location:
trunk/wp-admin
Files:
3 edited

Legend:

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

    r7043 r7062  
    11div#media-upload-header { 
    2     background-color: #eaf3fa; 
     2    background-color: #e4f2fd; 
    33    margin: 0; 
    4     padding: 1em 0.5em 0.5em 0.5em; 
     4    padding: 1em 0.5em 0 0.5em; 
    55    font-weight: bold; 
    6 } 
    7  
    8 ul#media-upload-tabs { 
    9     display:inline; 
     6    position: relative; 
     7    border-bottom: 1px solid #c6d9e9; 
     8} 
     9 
     10ul#sidemenu { 
     11    font-weight: normal; 
     12    margin: 0 15px; 
    1013    position: absolute; 
    1114    right: 1em; 
    12     top: 1em; 
    13     font-size: 0.9em; 
    14 } 
    15  
    16 ul#media-upload-tabs li { 
    17     display:inline; 
    18 } 
    19  
    20 ul#media-upload-tabs li:after { 
    21     content: " | "; 
    22 } 
    23  
    24 ul#media-upload-tabs li.last:after { 
    25     content: ""; 
    26 } 
    27  
    28  
     15    bottom: -1px; 
     16} 
    2917 
    3018div#media-upload-error { 
     
    3422} 
    3523 
    36 form.media-upload-form { 
     24form { 
    3725    margin: 1em; 
     26} 
     27 
     28#search-filter { 
     29    text-align: right; 
    3830} 
    3931 
  • trunk/wp-admin/includes/media.php

    r7043 r7062  
    3030 
    3131    if ( !empty($tabs) ) { 
    32         echo "<ul id='media-upload-tabs'>\n"; 
     32        echo "<ul id='sidemenu'>\n"; 
    3333        if ( isset($_GET['tab']) && array_key_exists($_GET['tab'], $tabs) ) 
    3434            $current = $_GET['tab']; 
     
    3636            $current = array_shift(array_keys($tabs)); 
    3737        foreach ( $tabs as $callback => $text ) { 
    38             if ( ++$i == count($tabs) ) 
    39                 $class = ' class="last"'; 
    40             $href = add_query_arg('tab', $callback); 
    41             if ( $callback == $current ) 
    42                 $link = $text; 
    43             else 
    44                 $link = "<a href='$href'>$text</a>"; 
    45             echo "\t<li id='tab-$callback'$class>$link</li>\n"; 
     38            $class = ''; 
     39            if ( $current == $callback ) 
     40                $class = " class='current'"; 
     41            $href = add_query_arg(array('tab'=>$callback, 's'=>false, 'paged'=>false, 'post_mime_type'=>false, 'm'=>false)); 
     42            $link = "<a href='$href'$class>$text</a>"; 
     43            echo "\t<li id='tab-$callback'>$link</li>\n"; 
    4644        } 
    4745        echo "</ul>\n"; 
     
    262260 
    263261function media_upload_library() { 
    264     if ( empty($_POST) ) 
    265         wp_iframe( 'media_upload_library_form', $errors ); 
     262    if ( !empty($_POST) ) { 
     263        $return = media_upload_form_handler(); 
     264     
     265        if ( is_string($return) ) 
     266            return $return; 
     267        if ( is_array($return) ) 
     268            $errors = $return; 
     269    } 
     270 
     271    return wp_iframe( 'media_upload_library_form', $errors ); 
    266272} 
    267273 
    268274function get_media_items( $post_id, $errors ) { 
    269     if ( $post_id ) 
     275    if ( $post_id ) { 
    270276        $attachments = get_children("post_parent=$post_id&post_type=attachment&orderby=menu_order ASC, ID&order=DESC"); 
    271     else 
    272         $attachments = get_paged_attachments(); 
     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    } 
    273282 
    274283    if ( empty($attachments) ) 
     
    708717 
    709718function media_upload_library_form($errors) { 
     719    global $wpdb, $wp_query, $wp_locale; 
     720 
    710721    media_upload_header(); 
     722 
     723    $post_id = intval($_REQUEST['post_id']); 
     724 
     725    $form_action_url = get_option('siteurl') . "/wp-admin/media-upload.php?type=media&tab=library&post_id=$post_id"; 
     726 
     727    $_GET['paged'] = intval($_GET['paged']); 
     728    if ( $_GET['paged'] < 1 ) 
     729        $_GET['paged'] = 1; 
     730    $start = ( $_GET['paged'] - 1 ) * 10; 
     731    if ( $start < 1 ) 
     732        $start = 0; 
     733    add_filter( 'post_limits', $limit_filter = create_function( '$a', "return 'LIMIT $start, 10';" ) ); 
     734 
     735    list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query(); 
     736 
     737?> 
     738 
     739<form id="filter" action="" method="get"> 
     740<input type="hidden" name="type" value="media" /> 
     741<input type="hidden" name="tab" value="library" /> 
     742<input type="hidden" name="post_id" value="<?php echo $post_id; ?>" /> 
     743<input type="hidden" name="post_mime_type" value="<?php echo $_GET['post_mime_type']; ?>" /> 
     744 
     745<div id="search-filter"> 
     746    <input type="text" id="post-search-input" name="s" value="<?php the_search_query(); ?>" /> 
     747    <input type="submit" value="<?php _e( 'Search Media' ); ?>" class="button" /> 
     748</div> 
     749 
     750<p> 
     751<ul class="subsubsub"> 
     752<?php 
     753$type_links = array(); 
     754$_num_posts = (array) wp_count_attachments(); 
     755$matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts)); 
     756foreach ( $matches as $type => $reals ) 
     757    foreach ( $reals as $real ) 
     758        $num_posts[$type] += $_num_posts[$real]; 
     759foreach ( $post_mime_types as $mime_type => $label ) { 
     760    $class = ''; 
     761 
     762    if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) ) 
     763        continue; 
     764 
     765    if ( wp_match_mime_types($mime_type, $_GET['post_mime_type']) ) 
     766        $class = ' class="current"'; 
     767 
     768    $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>'; 
     769} 
     770$class = empty($_GET['post_mime_type']) ? ' class="current"' : ''; 
     771$type_links[] = "<li><a href='" . remove_query_arg(array('post_mime_type', 'paged', 'm')) . "'$class>".__('All Types')."</a>"; 
     772echo implode(' | </li>', $type_links) . '</li>'; 
     773unset($type_links); 
     774?> 
     775</ul> 
     776</p> 
     777 
     778<div class="tablenav"> 
     779 
     780<?php 
     781$page_links = paginate_links( array( 
     782    'base' => add_query_arg( 'paged', '%#%' ), 
     783    'format' => '', 
     784    'total' => ceil($wp_query->found_posts / 10), 
     785    'current' => $_GET['paged'] 
     786)); 
     787 
     788if ( $page_links ) 
     789    echo "<div class='tablenav-pages'>$page_links</div>"; 
     790?> 
     791 
     792<div style="float: left"> 
     793<?php 
     794 
     795$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"; 
     796 
     797$arc_result = $wpdb->get_results( $arc_query ); 
     798 
     799$month_count = count($arc_result); 
     800 
     801if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ?> 
     802<select name='m'> 
     803<option<?php selected( @$_GET['m'], 0 ); ?> value='0'><?php _e('Show all dates'); ?></option> 
     804<?php 
     805foreach ($arc_result as $arc_row) { 
     806    if ( $arc_row->yyear == 0 ) 
     807        continue; 
     808    $arc_row->mmonth = zeroise( $arc_row->mmonth, 2 ); 
     809     
     810    if ( $arc_row->yyear . $arc_row->mmonth == $_GET['m'] ) 
     811        $default = ' selected="selected"'; 
     812    else 
     813        $default = ''; 
     814     
     815    echo "<option$default value='$arc_row->yyear$arc_row->mmonth'>"; 
     816    echo $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear"; 
     817    echo "</option>\n"; 
     818} 
     819?> 
     820</select> 
     821<?php } ?> 
     822 
     823<input type="submit" id="post-query-submit" value="<?php _e('Filter &#187;'); ?>" class="button-secondary" /> 
     824 
     825</div> 
     826 
     827<br style="clear:both;" /> 
     828</div> 
     829</form> 
     830 
     831<form enctype="multipart/form-data" method="post" action="<?php echo attribute_escape($form_action_url); ?>" class="media-upload-form" id="attachments-form"> 
     832 
     833<script type="text/javascript"> 
     834<!-- 
     835jQuery(function($){ 
     836    var preloaded = $(".media-item.preloaded"); 
     837    if ( preloaded.length > 0 ) { 
     838        preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');}); 
     839        updateMediaForm(); 
     840    } 
     841}); 
     842--> 
     843</script> 
     844 
     845<?php wp_nonce_field('media-form'); ?> 
     846<?php //media_upload_form( $errors ); ?> 
     847 
     848<div id="media-items"> 
     849<?php echo get_media_items(null, $errors); ?> 
     850</div> 
     851<input type="hidden" name="post_id" id="post_id" value="<?php echo $post_id; ?>" /> 
     852</form> 
     853<?php 
    711854} 
    712855 
  • trunk/wp-admin/upload.php

    r7057 r7062  
    3838require_once('admin-header.php'); 
    3939 
    40 add_filter( 'post_limits', $limit_filter = create_function( '$a', 'if ( empty($_GET["paged"]) ) $_GET["paged"] = 1; $start = ( intval($_GET["paged"]) - 1 ) * 15; return "LIMIT $start, 20";' ) ); 
     40if ( isset($_GET['paged']) && $start = ( intval($_GET['paged']) - 1 ) * 15 ) 
     41    add_filter( 'post_limits', $limit_filter = create_function( '$a', "return 'LIMIT $start, 15';" ) ); 
    4142list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query(); 
    4243$wp_query->max_num_pages = ceil( $wp_query->found_posts / 15 ); // We grab 20 but only show 15 ( 5 more for ajax extra ) 
     
    8283<ul class="subsubsub"> 
    8384<?php 
    84 $status_links = array(); 
     85$type_links = array(); 
    8586$_num_posts = (array) wp_count_attachments(); 
    8687$matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts)); 
     
    9798        $class = ' class="current"'; 
    9899 
    99     $status_links[] = "<li><a href=\"upload.php?post_mime_type=$mime_type\"$class>" . 
     100    $type_links[] = "<li><a href=\"upload.php?post_mime_type=$mime_type\"$class>" . 
    100101    sprintf($label[2], $num_posts[$mime_type]) . '</a>'; 
    101102} 
    102103$class = empty($_GET['post_mime_type']) ? ' class="current"' : ''; 
    103 $status_links[] = "<li><a href=\"upload.php\"$class>".__('All Types')."</a>"; 
    104 echo implode(' |</li>', $status_links) . '</li>'; 
    105 unset($status_links); 
     104$type_links[] = "<li><a href=\"upload.php\"$class>".__('All Types')."</a>"; 
     105echo implode(' | </li>', $type_links) . '</li>'; 
     106unset($type_links); 
    106107?> 
    107108</ul> 
Note: See TracChangeset for help on using the changeset viewer.