diff options
| author | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2008-04-04 16:44:15 +0000 |
|---|---|---|
| committer | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2008-04-04 16:44:15 +0000 |
| commit | 7740e89de3e1bc0cc636120e3ca8ab9e97e4d3cc (patch) | |
| tree | c6fd23b598f3994eddb18cb1c0f2e8d95ff054fa /wp-admin/upload.php | |
| parent | f650f48c048bfbbb2ae702b6425d87e39358d748 (diff) | |
| download | wordpress-mu-7740e89de3e1bc0cc636120e3ca8ab9e97e4d3cc.tar.gz wordpress-mu-7740e89de3e1bc0cc636120e3ca8ab9e97e4d3cc.tar.xz wordpress-mu-7740e89de3e1bc0cc636120e3ca8ab9e97e4d3cc.zip | |
Merged with WordPress 2.5, unstable, only for testing
git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@1218 7be80a69-a1ef-0310-a953-fb0f7c49ff36
Diffstat (limited to 'wp-admin/upload.php')
| -rw-r--r-- | wp-admin/upload.php | 336 |
1 files changed, 225 insertions, 111 deletions
diff --git a/wp-admin/upload.php b/wp-admin/upload.php index bfbd9fc..0f7412d 100644 --- a/wp-admin/upload.php +++ b/wp-admin/upload.php @@ -1,135 +1,249 @@ <?php require_once('admin.php'); -@header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset')); - if (!current_user_can('upload_files')) wp_die(__('You do not have permission to upload files.')); -wp_reset_vars(array('action', 'tab', 'from_tab', 'style', 'post_id', 'ID', 'paged', 'post_title', 'post_content', 'delete')); - -// IDs should be integers -$ID = (int) $ID; -$post_id = (int) $post_id; - -// Require an ID for the edit screen -if ( $action == 'edit' && !$ID ) - wp_die(__("You are not allowed to be here")); - -require_once('includes/upload.php'); -if ( !$tab ) - $tab = 'browse-all'; - -do_action( "upload_files_$tab" ); - -$pid = 0; -if ( $post_id < 0 ) - $pid = $post_id; -elseif ( get_post( $post_id ) ) - $pid = $post_id; -$wp_upload_tabs = array(); -$all_atts = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = 'attachment'"); -$post_atts = 0; - -if ( $pid ) { - // 0 => tab display name, 1 => required cap, 2 => function that produces tab content, 3 => total number objects OR array(total, objects per page), 4 => add_query_args - $wp_upload_tabs['upload'] = array(__('Upload'), 'upload_files', 'wp_upload_tab_upload', 0); - if ( $all_atts && $post_atts = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = '$post_id'") ) - $wp_upload_tabs['browse'] = array(__('Browse'), 'upload_files', "wp_upload_tab_browse", $action ? 0 : $post_atts); - if ( $post_atts < $all_atts ) - $wp_upload_tabs['browse-all'] = array(__('Browse All'), 'upload_files', 'wp_upload_tab_browse', $action ? 0 : $all_atts); -} else - $wp_upload_tabs['browse-all'] = array(__('Browse All'), 'upload_files', 'wp_upload_tab_browse', $action ? 0 : $all_atts); - - $wp_upload_tabs = array_merge($wp_upload_tabs, apply_filters( 'wp_upload_tabs', array() )); - -if ( !is_callable($wp_upload_tabs[$tab][2]) ) { - $to_tab = isset($wp_upload_tabs['upload']) ? 'upload' : 'browse-all'; - wp_redirect( add_query_arg( 'tab', $to_tab ) ); +// Handle bulk deletes +if ( isset($_GET['deleteit']) && isset($_GET['delete']) ) { + check_admin_referer('bulk-media'); + foreach( (array) $_GET['delete'] as $post_id_del ) { + $post_del = & get_post($post_id_del); + + if ( !current_user_can('delete_post', $post_id_del) ) + wp_die( __('You are not allowed to delete this post.') ); + + if ( $post_del->post_type == 'attachment' ) + if ( ! wp_delete_attachment($post_id_del) ) + wp_die( __('Error in deleting...') ); + } + + $location = 'upload.php'; + if ( $referer = wp_get_referer() ) { + if ( false !== strpos($referer, 'upload.php') ) + $location = $referer; + } + + $location = add_query_arg('message', 2, $location); + $location = remove_query_arg('posted', $location); + wp_redirect($location); + exit; +} elseif ( !empty($_GET['_wp_http_referer']) ) { + wp_redirect(remove_query_arg(array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']))); exit; } -foreach ( $wp_upload_tabs as $t => $tab_array ) { - if ( !current_user_can( $tab_array[1] ) ) { - unset($wp_upload_tabs[$t]); - if ( $tab == $t ) - wp_die(__("You are not allowed to be here")); +$title = __('Media Library'); +$parent_file = 'edit.php'; +wp_enqueue_script( 'admin-forms' ); + +list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query(); + +if ( is_singular() ) + wp_enqueue_script( 'admin-comments' ); + +require_once('admin-header.php'); + +if ( !isset( $_GET['paged'] ) ) + $_GET['paged'] = 1; + +?> + +<div class="wrap"> + +<form id="posts-filter" action="" method="get"> +<h2><?php +if ( is_singular() ) { + printf(__('Comments on %s'), apply_filters( "the_title", $post->post_title)); +} else { + $post_mime_type_label = _c('Manage Media|manage media header'); + if ( isset($_GET['post_mime_type']) && in_array( $_GET['post_mime_type'], array_keys($post_mime_types) ) ) + $post_mime_type_label = $post_mime_types[$_GET['post_mime_type']][1]; + if ( $post_listing_pageable && !is_archive() && !is_search() ) + $h2_noun = is_paged() ? sprintf(__( 'Previous %s' ), $post_mime_type_label) : sprintf(__('Latest %s'), $post_mime_type_label); + else + $h2_noun = $post_mime_type_label; + // Use $_GET instead of is_ since they can override each other + $h2_author = ''; + $_GET['author'] = (int) $_GET['author']; + if ( $_GET['author'] != 0 ) { + if ( $_GET['author'] == '-' . $user_ID ) { // author exclusion + $h2_author = ' ' . __('by other authors'); + } else { + $author_user = get_userdata( get_query_var( 'author' ) ); + $h2_author = ' ' . sprintf(__('by %s'), wp_specialchars( $author_user->display_name )); + } } + $h2_search = isset($_GET['s']) && $_GET['s'] ? ' ' . sprintf(__('matching “%s”'), wp_specialchars( get_search_query() ) ) : ''; + $h2_cat = isset($_GET['cat']) && $_GET['cat'] ? ' ' . sprintf( __('in “%s”'), single_cat_title('', false) ) : ''; + $h2_tag = isset($_GET['tag']) && $_GET['tag'] ? ' ' . sprintf( __('tagged with “%s”'), single_tag_title('', false) ) : ''; + $h2_month = isset($_GET['m']) && $_GET['m'] ? ' ' . sprintf( __('during %s'), single_month_title(' ', false) ) : ''; + printf( _c( '%1$s%2$s%3$s%4$s%5$s%6$s|You can reorder these: 1: Posts, 2: by {s}, 3: matching {s}, 4: in {s}, 5: tagged with {s}, 6: during {s}' ), $h2_noun, $h2_author, $h2_search, $h2_cat, $h2_tag, $h2_month ); } +?></h2> -if ( 'inline' == $style ) : ?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>> -<head> -<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" /> -<title><?php bloginfo('name') ?> › <?php _e('Uploads'); ?> — WordPress</title> -<?php wp_admin_css(); ?> -<script type="text/javascript"> -//<![CDATA[ -function addLoadEvent(func) {if ( typeof wpOnload!='function'){wpOnload=func;}else{ var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}} -//]]> -</script> -<?php do_action('admin_print_scripts'); wp_upload_admin_head(); ?> -</head> -<body> +<ul class="subsubsub"> <?php -else : - add_action( 'admin_head', 'wp_upload_admin_head' ); - include_once('admin-header.php'); +$type_links = array(); +$_num_posts = (array) wp_count_attachments(); +$matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts)); +foreach ( $matches as $type => $reals ) + foreach ( $reals as $real ) + $num_posts[$type] += $_num_posts[$real]; +$class = empty($_GET['post_mime_type']) ? ' class="current"' : ''; +$type_links[] = "<li><a href=\"upload.php\"$class>".__('All Types')."</a>"; +foreach ( $post_mime_types as $mime_type => $label ) { + $class = ''; + + if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) ) + continue; + + if ( wp_match_mime_types($mime_type, $_GET['post_mime_type']) ) + $class = ' class="current"'; + + $type_links[] = "<li><a href=\"upload.php?post_mime_type=$mime_type\"$class>" . + sprintf(__ngettext($label[2][0], $label[2][1], $num_posts[$mime_type]), number_format_i18n( $num_posts[$mime_type] )) . '</a>'; +} +echo implode(' | </li>', $type_links) . '</li>'; +unset($type_links); ?> - <div class='wrap'> - <h2><?php _e('Uploads'); ?></h2> +</ul> + <?php +if ( isset($_GET['posted']) && $_GET['posted'] ) : $_GET['posted'] = (int) $_GET['posted']; ?> +<div id="message" class="updated fade"><p><strong><?php _e('Your media has been saved.'); ?></strong> <a href="<?php echo get_permalink( $_GET['posted'] ); ?>"><?php _e('View media'); ?></a> | <a href="media.php?action=edit&attachment_id=<?php echo $_GET['posted']; ?>"><?php _e('Edit media'); ?></a></p></div> +<?php $_SERVER['REQUEST_URI'] = remove_query_arg(array('posted'), $_SERVER['REQUEST_URI']); endif; -echo "<ul id='upload-menu'>\n"; -foreach ( $wp_upload_tabs as $t => $tab_array ) { // We've already done the current_user_can check - $href = add_query_arg( array('tab' => $t, 'ID' => '', 'action' => '', 'paged' => '') ); - if ( isset($tab_array[4]) && is_array($tab_array[4]) ) - $href = add_query_arg( $tab_array[4], $href ); - $_href = clean_url( $href); - $page_links = ''; - $class = 'upload-tab alignleft'; - if ( $tab == $t ) { - $class .= ' current'; - if ( $tab_array[3] ) { - if ( is_array($tab_array[3]) ) { - $total = $tab_array[3][0]; - $per = $tab_array[3][1]; - } else { - $total = $tab_array[3]; - $per = 10; - } - $page_links = paginate_links( array( - 'base' => add_query_arg( 'paged', '%#%' ), - 'format' => '', - 'total' => ceil($total / $per), - 'current' => $paged ? $paged : 1, - 'prev_text' => '«', - 'next_text' => '»' - )); - if ( $page_links ) - $page_links = "<span id='current-tab-nav'>: $page_links</span>"; - } - } +$messages[1] = __('Media updated.'); +$messages[2] = __('Media deleted.'); + +if (isset($_GET['message'])) : ?> +<div id="message" class="updated fade"><p><?php echo $messages[$_GET['message']]; ?></p></div> +<?php $_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']); +endif; +?> + +<p id="post-search"> + <input type="text" id="post-search-input" name="s" value="<?php the_search_query(); ?>" /> + <input type="submit" value="<?php _e( 'Search Media' ); ?>" class="button" /> +</p> + +<?php do_action('restrict_manage_posts'); ?> + +<div class="tablenav"> + +<?php +$page_links = paginate_links( array( + 'base' => add_query_arg( 'paged', '%#%' ), + 'format' => '', + 'total' => $wp_query->max_num_pages, + 'current' => $_GET['paged'] +)); + +if ( $page_links ) + echo "<div class='tablenav-pages'>$page_links</div>"; +?> + +<div class="alignleft"> +<input type="submit" value="<?php _e('Delete'); ?>" name="deleteit" class="button-secondary delete" /> +<?php wp_nonce_field('bulk-media'); ?> +<?php + +if ( !is_singular() ) : + $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"; - echo "\t<li class='$class'><a href='$_href' class='upload-tab-link' title='{$tab_array[0]}'>{$tab_array[0]}</a>$page_links</li>\n"; + $arc_result = $wpdb->get_results( $arc_query ); + + $month_count = count($arc_result); + + if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) : ?> +<select name='m'> +<option<?php selected( @$_GET['m'], 0 ); ?> value='0'><?php _e('Show all dates'); ?></option> +<?php +foreach ($arc_result as $arc_row) { + if ( $arc_row->yyear == 0 ) + continue; + $arc_row->mmonth = zeroise( $arc_row->mmonth, 2 ); + + if ( $arc_row->yyear . $arc_row->mmonth == $_GET['m'] ) + $default = ' selected="selected"'; + else + $default = ''; + + echo "<option$default value='$arc_row->yyear$arc_row->mmonth'>"; + echo $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear"; + echo "</option>\n"; } -unset($t, $tab_array, $href, $_href, $page_links, $total, $per, $class); -echo "</ul>\n\n"; +?> +</select> +<?php endif; // month_count ?> + +<input type="submit" id="post-query-submit" value="<?php _e('Filter'); ?>" class="button-secondary" /> + +<?php endif; // is_singular ?> + +</div> + +<br class="clear" /> +</div> + +<br class="clear" /> + +<?php include( 'edit-attachment-rows.php' ); ?> -echo "<div id='upload-content' class='$tab'>\n"; +</form> -call_user_func( $wp_upload_tabs[$tab][2] ); +<div id="ajax-response"></div> -echo "</div>\n"; +<div class="tablenav"> + +<?php +if ( $page_links ) + echo "<div class='tablenav-pages'>$page_links</div>"; +?> + +</div> + +<br class="clear" /> + +<?php + +if ( 1 == count($posts) && is_singular() ) : + + $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $id AND comment_approved != 'spam' ORDER BY comment_date"); + if ( $comments ) : + // Make sure comments, post, and post_author are cached + update_comment_cache($comments); + $post = get_post($id); + $authordata = get_userdata($post->post_author); + ?> + +<br class="clear" /> + +<table class="widefat" style="margin-top: .5em"> +<thead> + <tr> + <th scope="col"><?php _e('Comment') ?></th> + <th scope="col"><?php _e('Date') ?></th> + <th scope="col"><?php _e('Actions') ?></th> + </tr> +</thead> +<tbody id="the-comment-list" class="list:comment"> +<?php + foreach ($comments as $comment) + _wp_comment_row( $comment->comment_ID, 'detail', false, false ); +?> +</tbody> +</table> + +<?php + +endif; // comments +endif; // posts; + +?> -if ( 'inline' != $style ) : - echo "<div class='clear'></div></div>"; - include_once('admin-footer.php'); -else : ?> -<script type="text/javascript">if(typeof wpOnload=='function')wpOnload();</script> +</div> -</body> -</html> -<?php endif; ?> +<?php include('admin-footer.php'); ?> |
