]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-admin/edit-comments.php
Wordpress 2.5.1
[autoinstalls/wordpress.git] / wp-admin / edit-comments.php
index ab1bdbce19440006f637cbadb52422467e651d3b..bc62681bc4b6e415d1bf37694b4082bca21b897b 100644 (file)
@@ -4,76 +4,133 @@ require_once('admin.php');
 $title = __('Edit Comments');
 $parent_file = 'edit-comments.php';
 wp_enqueue_script( 'admin-comments' );
+wp_enqueue_script('admin-forms');
+
+if ( !empty( $_REQUEST['delete_comments'] ) ) {
+       check_admin_referer('bulk-comments');
+
+       $comments_deleted = $comments_approved = $comments_unapproved = $comments_spammed = 0;
+       foreach ($_REQUEST['delete_comments'] as $comment) : // Check the permissions on each
+               $comment = (int) $comment;
+               $post_id = (int) $wpdb->get_var("SELECT comment_post_ID FROM $wpdb->comments WHERE comment_ID = $comment");
+               // $authordata = get_userdata( $wpdb->get_var("SELECT post_author FROM $wpdb->posts WHERE ID = $post_id") );
+               if ( !current_user_can('edit_post', $post_id) )
+                       continue;
+               if ( !empty( $_REQUEST['spamit'] ) ) {
+                       wp_set_comment_status($comment, 'spam');
+                       $comments_spammed++;
+               } elseif ( !empty( $_REQUEST['deleteit'] ) ) {
+                       wp_set_comment_status($comment, 'delete');
+                       $comments_deleted++;
+               } elseif ( !empty( $_REQUEST['approveit'] ) ) {
+                       wp_set_comment_status($comment, 'approve');
+                       $comments_approved++;
+               } elseif ( !empty( $_REQUEST['unapproveit'] ) ) {
+                       wp_set_comment_status($comment, 'hold');
+                       $comments_unapproved++;
+               }
+       endforeach;
+       $redirect_to = basename( __FILE__ ) . '?deleted=' . $comments_deleted . '&approved=' . $comments_approved . '&spam=' . $comments_spammed . '&unapproved=' . $comments_unapproved;
+       if ( !empty($_REQUEST['mode']) )
+               $redirect_to = add_query_arg('mode', $_REQUEST['mode'], $redirect_to);
+       if ( !empty($_REQUEST['comment_status']) )
+               $redirect_to = add_query_arg('comment_status', $_REQUEST['comment_status'], $redirect_to);
+       if ( !empty($_REQUEST['s']) )
+               $redirect_to = add_query_arg('s', $_REQUEST['s'], $redirect_to);
+       wp_redirect( $redirect_to );
+} elseif ( !empty($_GET['_wp_http_referer']) ) {
+        wp_redirect(remove_query_arg(array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI'])));
+        exit;
+}
 
 require_once('admin-header.php');
-if (empty($_GET['mode'])) $mode = 'view';
-else $mode = attribute_escape($_GET['mode']);
+
+if ( empty($_GET['mode']) )
+       $mode = 'detail';
+else
+       $mode = attribute_escape($_GET['mode']);
+
+if ( isset($_GET['comment_status']) )
+       $comment_status = attribute_escape($_GET['comment_status']);
+else
+       $comment_status = '';
+
+if ( isset($_GET['s']) )
+       $search_dirty = $_GET['s'];
+else
+       $search_dirty = '';
+$search = attribute_escape( $search_dirty );
 ?>
+<?php
+if ( isset( $_GET['approved'] ) || isset( $_GET['deleted'] ) || isset( $_GET['spam'] ) ) {
+       $approved = isset( $_GET['approved'] ) ? (int) $_GET['approved'] : 0;
+       $deleted = isset( $_GET['deleted'] ) ? (int) $_GET['deleted'] : 0;
+       $spam = isset( $_GET['spam'] ) ? (int) $_GET['spam'] : 0;
+
+       if ( $approved > 0 || $deleted > 0 || $spam > 0 ) {
+               echo '<div id="moderated" class="updated fade"><p>';
 
-<script type="text/javascript">
-<!--
-function checkAll(form)
-{
-       for (i = 0, n = form.elements.length; i < n; i++) {
-               if(form.elements[i].type == "checkbox") {
-                       if(form.elements[i].checked == true)
-                               form.elements[i].checked = false;
-                       else
-                               form.elements[i].checked = true;
+               if ( $approved > 0 ) {
+                       printf( __ngettext( '%s comment approved', '%s comments approved', $approved ), $approved );
+                       echo '<br />';
                }
-       }
-}
 
-function getNumChecked(form)
-{
-       var num = 0;
-       for (i = 0, n = form.elements.length; i < n; i++) {
-               if(form.elements[i].type == "checkbox") {
-                       if(form.elements[i].checked == true)
-                               num++;
+               if ( $deleted > 0 ) {
+                       printf( __ngettext( '%s comment deleted', '%s comments deleted', $deleted ), $deleted );
+                       echo '<br />';
                }
+
+               if ( $spam > 0 ) {
+                       printf( __ngettext( '%s comment marked as spam', '%s comments marked as spam', $spam ), $spam );
+                       echo '<br />';
+               }
+
+               echo '</p></div>';
        }
-       return num;
 }
-//-->
-</script>
+?>
 <div class="wrap">
-<h2><?php _e('Comments'); ?></h2>
-<form name="searchform" action="" method="get" id="editcomments">
-  <fieldset>
-  <legend><?php _e('Show Comments That Contain...') ?></legend>
-  <input type="text" name="s" value="<?php if (isset($_GET['s'])) echo attribute_escape($_GET['s']); ?>" size="17" />
-  <input type="submit" name="submit" value="<?php _e('Search') ?>"  />
-  <input type="hidden" name="mode" value="<?php echo $mode; ?>" />
-  <?php _e('(Searches within comment text, e-mail, URL, and IP address.)') ?>
-  </fieldset>
-</form>
-<p><a href="?mode=view"><?php _e('View Mode') ?></a> | <a href="?mode=edit"><?php _e('Mass Edit Mode') ?></a></p>
+<form id="posts-filter" action="" method="get">
+<h2><?php _e('Manage Comments'); ?></h2>
+
+<ul class="subsubsub">
 <?php
-if ( !empty( $_POST['delete_comments'] ) ) :
-       check_admin_referer('bulk-comments');
+$status_links = array();
+$num_comments = wp_count_comments();
+$stati = array('moderated' => sprintf(__ngettext('Awaiting Moderation (%s)', 'Awaiting Moderation (%s)', $num_comments->moderated), "<span class='comment-count'>$num_comments->moderated</span>"), 'approved' => _c('Approved|plural'));
+$class = ( '' === $comment_status ) ? ' class="current"' : '';
+$status_links[] = "<li><a href=\"edit-comments.php\"$class>".__('Show All Comments')."</a>";
+foreach ( $stati as $status => $label ) {
+       $class = '';
+
+       if ( $status == $comment_status )
+               $class = ' class="current"';
+
+       $status_links[] = "<li><a href=\"edit-comments.php?comment_status=$status\"$class>" . $label . '</a>';
+}
 
-       $i = 0;
-       foreach ($_POST['delete_comments'] as $comment) : // Check the permissions on each
-               $comment = (int) $comment;
-               $post_id = (int) $wpdb->get_var("SELECT comment_post_ID FROM $wpdb->comments WHERE comment_ID = $comment");
-               // $authordata = get_userdata( $wpdb->get_var("SELECT post_author FROM $wpdb->posts WHERE ID = $post_id") );
-               if ( current_user_can('edit_post', $post_id) ) {
-                       if ( !empty( $_POST['spam_button'] ) )
-                               wp_set_comment_status($comment, 'spam');
-                       else
-                               wp_set_comment_status($comment, 'delete');
-                       ++$i;
-               }
-       endforeach;
-       echo '<div style="background-color: rgb(207, 235, 247);" id="message" class="updated fade"><p>';
-       if ( !empty( $_POST['spam_button'] ) ) {
-               printf(__ngettext('%s comment marked as spam', '%s comments marked as spam.', $i), $i);
-       } else {
-               printf(__ngettext('%s comment deleted.', '%s comments deleted.', $i), $i);
-       }
-       echo '</p></div>';
-endif;
+$status_links = apply_filters( 'comment_status_links', $status_links );
+
+echo implode(' | </li>', $status_links) . '</li>';
+unset($status_links);
+?>
+</ul>
+
+<p id="post-search">
+       <input type="text" id="post-search-input" name="s" value="<?php echo $search; ?>" />
+       <input type="submit" value="<?php _e( 'Search Comments' ); ?>" class="button" />
+</p>
+
+<input type="hidden" name="mode" value="<?php echo $mode; ?>" />
+<input type="hidden" name="comment_status" value="<?php echo $comment_status; ?>" />
+</form>
+
+<ul class="view-switch">
+       <li <?php if ( 'detail' == $mode ) echo "class='current'" ?>><a href="<?php echo clean_url(add_query_arg('mode', 'detail', $_SERVER['REQUEST_URI'])) ?>"><?php _e('Detail View') ?></a></li>
+       <li <?php if ( 'list' == $mode ) echo "class='current'" ?>><a href="<?php echo clean_url(add_query_arg('mode', 'list', $_SERVER['REQUEST_URI'])) ?>"><?php _e('List View') ?></a></li>
+</ul>
+
+<?php
 
 if ( isset( $_GET['apage'] ) )
        $page = abs( (int) $_GET['apage'] );
@@ -82,7 +139,7 @@ else
 
 $start = $offset = ( $page - 1 ) * 20;
 
-list($_comments, $total) = _wp_get_comment_list( isset($_GET['s']) ? $_GET['s'] : false, $start, 25 ); // Grab a few extra
+list($_comments, $total) = _wp_get_comment_list( $comment_status, $search_dirty, $start, 25 ); // Grab a few extra
 
 $comments = array_slice($_comments, 0, 20);
 $extra_comments = array_slice($_comments, 20);
@@ -94,109 +151,94 @@ $page_links = paginate_links( array(
        'current' => $page
 ));
 
-if ( $page_links )
-       echo "<p class='pagenav'>$page_links</p>";
-
-if ('view' == $mode) {
-       if ($comments) {
-               $offset = $offset + 1;
-               $start = " start='$offset'";
-
-               echo "<ol id='the-comment-list' class='commentlist' $start>\n";
-               $i = 0;
-               foreach ( $comments as $comment ) {
-                       get_comment( $comment ); // Cache it
-                       _wp_comment_list_item( $comment->comment_ID, ++$i );
-               }
-               echo "</ol>\n\n";
-
-if ( $extra_comments ) : ?>
-<div id="extra-comments" style="display:none">
-<ul id="the-extra-comment-list" class="commentlist">
-<?php
-       foreach ( $extra_comments as $comment ) {
-               get_comment( $comment ); // Cache it
-               _wp_comment_list_item( $comment->comment_ID, ++$i );
-       }
 ?>
-</ul>
-</div>
-<?php endif; // $extra_comments ?>
 
-<div id="ajax-response"></div>
+<form id="comments-form" action="" method="post">
+
+<div class="tablenav">
 
 <?php
-       } else { //no comments to show
+if ( $page_links )
+       echo "<div class='tablenav-pages'>$page_links</div>";
+?>
 
-               ?>
-               <p>
-                       <strong><?php _e('No comments found.') ?></strong></p>
+<div class="alignleft">
+<?php if ( 'approved' != $comment_status ): ?>
+<input type="submit" value="<?php _e('Approve'); ?>" name="approveit" class="button-secondary" />
+<?php endif; ?>
+<input type="submit" value="<?php _e('Mark as Spam'); ?>" name="spamit" class="button-secondary" />
+<?php if ( 'moderated' != $comment_status ): ?>
+<input type="submit" value="<?php _e('Unapprove'); ?>" name="unapproveit" class="button-secondary" />
+<?php endif; ?>
+<input type="submit" value="<?php _e('Delete'); ?>" name="deleteit" class="button-secondary delete" />
+<?php do_action('manage_comments_nav', $comment_status); ?>
+<?php wp_nonce_field('bulk-comments'); ?>
+</div>
 
-               <?php
-       } // end if ($comments)
-} elseif ('edit' == $mode) {
+<br class="clear" />
 
-       if ($comments) {
-               echo '<form name="deletecomments" id="deletecomments" action="" method="post"> ';
-               wp_nonce_field('bulk-comments');
-               echo '<table class="widefat">
+</div>
+
+<br class="clear" />
+<?php
+if ($comments) {
+?>
+<table class="widefat">
 <thead>
   <tr>
-    <th scope="col" style="text-align: center"><input type="checkbox" onclick="checkAll(document.getElementById(\'deletecomments\'));" /></th>
-    <th scope="col">' .  __('Name') . '</th>
-    <th scope="col">' .  __('E-mail') . '</th>
-    <th scope="col">' . __('IP') . '</th>
-    <th scope="col">' . __('Comment Excerpt') . '</th>
-       <th scope="col" colspan="3" style="text-align: center">' .  __('Actions') . '</th>
+    <th scope="col" class="check-column"><input type="checkbox" onclick="checkAll(document.getElementById('comments-form'));" /></th>
+    <th scope="col"><?php _e('Comment') ?></th>
+    <th scope="col"><?php _e('Date') ?></th>
+    <th scope="col" class="action-links"><?php _e('Actions') ?></th>
   </tr>
-</thead>';
-               foreach ($comments as $comment) {
-               $post = get_post($comment->comment_post_ID);
-               $authordata = get_userdata($post->post_author);
-               $comment_status = wp_get_comment_status($comment->comment_ID);
-               $class = ('alternate' == $class) ? '' : 'alternate';
-               $class .= ('unapproved' == $comment_status) ? ' unapproved' : '';
+</thead>
+<tbody id="the-comment-list" class="list:comment">
+<?php
+       foreach ($comments as $comment)
+               _wp_comment_row( $comment->comment_ID, $mode, $comment_status );
 ?>
-  <tr id="comment-<?php echo $comment->comment_ID; ?>" class='<?php echo $class; ?>'>
-    <td style="text-align: center"><?php if ( current_user_can('edit_post', $comment->comment_post_ID) ) { ?><input type="checkbox" name="delete_comments[]" value="<?php echo $comment->comment_ID; ?>" /><?php } ?></td>
-    <td><?php comment_author_link() ?></td>
-    <td><?php comment_author_email_link() ?></td>
-    <td><a href="edit-comments.php?s=<?php comment_author_IP() ?>&amp;mode=edit"><?php comment_author_IP() ?></a></td>
-    <td><?php comment_excerpt(); ?></td>
-    <td>
-       <?php if ('unapproved' == $comment_status) {
-               _e('Unapproved');
-       } else { ?>
-               <a href="<?php echo get_permalink($comment->comment_post_ID); ?>#comment-<?php comment_ID() ?>" class="edit"><?php _e('View') ?></a>
-       <?php } ?>
-    </td>
-    <td><?php if ( current_user_can('edit_post', $comment->comment_post_ID) ) {
-       echo "<a href='comment.php?action=editcomment&amp;c=$comment->comment_ID' class='edit'>" .  __('Edit') . "</a>"; } ?></td>
-    <td><?php if ( current_user_can('edit_post', $comment->comment_post_ID) ) {
-               echo "<a href=\"comment.php?action=deletecomment&amp;p=".$comment->comment_post_ID."&amp;c=".$comment->comment_ID."\" onclick=\"return deleteSomething( 'comment', $comment->comment_ID, '" . js_escape(sprintf(__("You are about to delete this comment by '%s'. \n  'Cancel' to stop, 'OK' to delete."), $comment->comment_author ))  . "', theCommentList );\" class='delete'>" . __('Delete') . "</a> ";
-               } ?></td>
-  </tr>
-               <?php
-               } // end foreach
-       ?></table>
-<p class="submit"><input type="submit" name="delete_button" class="delete" value="<?php _e('Delete Checked Comments &raquo;') ?>" onclick="var numchecked = getNumChecked(document.getElementById('deletecomments')); if(numchecked < 1) { alert('<?php echo js_escape(__("Please select some comments to delete")); ?>'); return false } return confirm('<?php echo sprintf(js_escape(__("You are about to delete %s comments permanently \n  'Cancel' to stop, 'OK' to delete.")), "' + numchecked + '"); ?>')" />
-                       <input type="submit" name="spam_button" value="<?php _e('Mark Checked Comments as Spam &raquo;') ?>" onclick="var numchecked = getNumChecked(document.getElementById('deletecomments')); if(numchecked < 1) { alert('<?php echo js_escape(__("Please select some comments to mark as spam")); ?>'); return false } return confirm('<?php echo sprintf(js_escape(__("You are about to mark %s comments as spam \n  'Cancel' to stop, 'OK' to mark as spam.")), "' + numchecked + '"); ?>')" /></p>
-  </form>
+</tbody>
+<tbody id="the-extra-comment-list" class="list:comment" style="display: none;">
+<?php
+       foreach ($extra_comments as $comment)
+               _wp_comment_row( $comment->comment_ID, $mode, $comment_status );
+?>
+</tbody>
+</table>
+
+</form>
+
+<form id="get-extra-comments" method="post" action="" class="add:the-extra-comment-list:" style="display: none;">
+       <input type="hidden" name="s" value="<?php echo $search; ?>" />
+       <input type="hidden" name="mode" value="<?php echo $mode; ?>" />
+       <input type="hidden" name="comment_status" value="<?php echo $comment_status; ?>" />
+       <input type="hidden" name="page" value="<?php echo isset($_REQUEST['page']) ? absint( $_REQUEST['page'] ) : 1; ?>" />
+       <?php wp_nonce_field( 'add-comment', '_ajax_nonce', false ); ?>
+</form>
+
 <div id="ajax-response"></div>
 <?php
-       } else {
+} elseif ( 'moderated' == $_GET['comment_status'] ) {
 ?>
 <p>
-<strong><?php _e('No results found.') ?></strong>
+<?php _e('No comments awaiting moderation&hellip; yet.') ?>
+</p>
+<?php
+} else  {
+?>
+<p>
+<?php _e('No results found.') ?>
 </p>
 <?php
-       } // end if ($comments)
 }
-
+?>
+<div class="tablenav">
+<?php
 if ( $page_links )
-       echo "<p class='pagenav'>$page_links</p>";
-
+       echo "<div class='tablenav-pages'>$page_links</div>";
 ?>
+<br class="clear" />
+</div>
 
 </div>