Make WordPress Core

Changeset 6993


Ignore:
Timestamp:
02/23/2008 08:01:51 AM (18 years ago)
Author:
ryan
Message:

Manage comments rework. WIP.

Location:
trunk/wp-admin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/edit-comments.php

    r6980 r6993  
    77wp_enqueue_script('admin-forms');
    88
    9 require_once('admin-header.php');
    10 if (empty($_GET['mode'])) $mode = 'view';
    11 else $mode = attribute_escape($_GET['mode']);
    12 ?>
    13 <div class="wrap">
    14 <h2><?php _e('Comments'); ?></h2>
    15 <form name="searchform" action="" method="get" id="editcomments">
    16   <fieldset>
    17   <legend><?php _e('Show Comments That Contain...') ?></legend>
    18   <input type="text" name="s" value="<?php if (isset($_GET['s'])) echo attribute_escape($_GET['s']); ?>" size="17" />
    19   <input type="submit" name="submit" value="<?php _e('Search') ?>" class="button" />
    20   <input type="hidden" name="mode" value="<?php echo $mode; ?>" />
    21   <?php _e('(Searches within comment text, e-mail, URL, and IP address.)') ?>
    22   </fieldset>
    23 </form>
    24 <p><a href="?mode=view"><?php _e('View Mode') ?></a> | <a href="?mode=edit"><?php _e('Mass Edit Mode') ?></a></p>
    25 <?php
    269if ( !empty( $_POST['delete_comments'] ) ) :
    2710        check_admin_referer('bulk-comments');
     
    4023                }
    4124        endforeach;
     25        /*
    4226        echo '<div style="background-color: rgb(207, 235, 247);" id="message" class="updated fade"><p>';
    4327        if ( !empty( $_POST['spam_button'] ) ) {
     
    4731        }
    4832        echo '</p></div>';
     33        */
     34        // TODO redirect with message
    4935endif;
     36
     37require_once('admin-header.php');
     38if (empty($_GET['mode'])) $mode = 'view';
     39else $mode = attribute_escape($_GET['mode']);
     40?>
     41
     42<div class="wrap">
     43<form id="posts-filter" action="" method="get">
     44<h2><?php _e('Manage Comments'); ?></h2>
     45
     46<ul class="subsubsub">
     47<?php
     48if ( isset($_GET['comment_status']) )
     49        $comment_status = $_GET['comment_status'];
     50else
     51        $comment_status = '';
     52$status_links = array();
     53$num_posts = wp_count_posts('post');
     54$stati = array('moderated' => __('Awaiting Moderation'), 'approved' => __('Approved'));
     55foreach ( $stati as $status => $label ) {
     56        $class = '';
     57
     58        if ( $status == $comment_status )
     59                $class = ' class="current"';
     60
     61        $status_links[] = "<li><a href=\"edit-comments.php?comment_status=$status\"$class>" . $label . '</a>';
     62}
     63$class = ( '' === $comment_status ) ? ' class="current"' : '';
     64$status_links[] = "<li><a href=\"edit-comments.php\"$class>".__('All Comments')."</a>";
     65echo implode(' |</li>', $status_links) . '</li>';
     66unset($status_links);
     67?>
     68</ul>
     69
     70<p id="post-search">
     71        <input type="text" id="post-search-input" name="s" value="<?php if (isset($_GET['s'])) echo attribute_escape($_GET['s']); ?>" />
     72        <input type="submit" value="<?php _e( 'Search Comments' ); ?>" class="button" />
     73</p>
     74
     75<input type="hidden" name="mode" value="<?php echo $mode; ?>" />
     76
     77<p><a href="?mode=view"><?php _e('View Mode') ?></a> | <a href="?mode=edit"><?php _e('Mass Edit Mode') ?></a></p>
     78
     79<?php
    5080
    5181if ( isset( $_GET['apage'] ) )
     
    5686$start = $offset = ( $page - 1 ) * 20;
    5787
    58 list($_comments, $total) = _wp_get_comment_list( isset($_GET['s']) ? $_GET['s'] : false, $start, 25 ); // Grab a few extra
     88list($_comments, $total) = _wp_get_comment_list( $comment_status, isset($_GET['s']) ? $_GET['s'] : false, $start, 25 ); // Grab a few extra
    5989
    6090$comments = array_slice($_comments, 0, 20);
     
    6898));
    6999
    70 if ( $page_links )
    71         echo "<p class='pagenav'>$page_links</p>";
     100?>
    72101
    73 if ('view' == $mode) {
    74         if ($comments) {
    75                 $offset = $offset + 1;
    76                 $start = " start='$offset'";
     102<br style="clear:both;" />
    77103
    78                 echo "<ol id='the-comment-list' class='list:comment commentlist' $start>\n";
    79                 $i = 0;
    80                 foreach ( $comments as $comment ) {
    81                         _wp_comment_list_item( $comment->comment_ID, ++$i );
    82                 }
    83                 echo "</ol>\n\n";
    84 
    85 if ( $extra_comments ) : ?>
    86 <div id="extra-comments" style="display:none">
    87 <ol id="the-extra-comment-list" class="list:comment commentlist" style="color:red">
    88 <?php
    89         foreach ( $extra_comments as $comment ) {
    90                 get_comment( $comment ); // Cache it
    91                 _wp_comment_list_item( $comment->comment_ID, 0 );
    92         }
    93 ?>
    94 </ol>
    95 <form action="" method="get" id="get-extra-comments" class="add:the-extra-comment-list:">
    96 <input type="hidden" name="page" value="<?php echo $page; ?>" />
    97 <input type="hidden" name="s" value="<?php echo attribute_escape(@$_GET['s']); ?>" />
    98 <?php wp_nonce_field( 'add-comment', '_ajax_nonce', false ); ?>
    99 </form>
    100 </div>
    101 <?php endif; // $extra_comments ?>
    102 
    103 <div id="ajax-response"></div>
     104<div class="tablenav">
    104105
    105106<?php
    106         } else { //no comments to show
     107if ( $page_links )
     108        echo "<div class='tablenav-pages'>$page_links</div>";
     109?>
    107110
    108                 ?>
    109                 <p>
    110                         <strong><?php _e('No comments found.') ?></strong></p>
     111<div style="float: left">
     112<input type="submit" value="<?php _e('Approve'); ?>" name="approveit" class="button-secondary" />
     113<input type="submit" value="<?php _e('Mark as Spam'); ?>" name="spamit" class="button-secondary" />
     114<input type="submit" value="<?php _e('Delete'); ?>" name="deleteit" class="button-secondary" />
     115<?php wp_nonce_field('bulk-comments'); ?>
     116</div>
    111117
    112                 <?php
    113         } // end if ($comments)
    114 } elseif ('edit' == $mode) {
     118<br style="clear:both;" />
     119</div>
    115120
    116         if ($comments) {
    117                 echo '<form name="deletecomments" id="deletecomments" action="" method="post"> ';
    118                 wp_nonce_field('bulk-comments');
    119                 echo '<table class="widefat">
     121<br style="clear:both;" />
     122<?php
     123if ($comments) {
     124?>
     125<table class="widefat">
    120126<thead>
    121127  <tr>
    122     <th scope="col" style="text-align: center"><input type="checkbox" onclick="checkAll(document.getElementById(\'deletecomments\'));" /></th>
    123     <th scope="col">' .  __('Name') . '</th>
    124     <th scope="col">' .  __('E-mail') . '</th>
    125     <th scope="col">' . __('IP') . '</th>
    126     <th scope="col">' . __('Comment Excerpt') . '</th>
    127         <th scope="col" colspan="3" style="text-align: center">' .  __('Actions') . '</th>
     128    <th scope="col" style="text-align: center"><input type="checkbox" onclick="checkAll(document.getElementById('posts-filter'));" /></th>
     129    <th scope="col"><?php _e('Comment') ?></th>
     130    <th scope="col"><?php _e('Date') ?></th>
     131    <th scope="col"><?php _e('Actions') ?></th>
    128132  </tr>
    129133</thead>
    130 <tbody id="the-comment-list" class="list:comment">';
    131                 foreach ($comments as $comment) {
     134<tbody id="the-comment-list" class="list:comment">
     135<?php
     136        foreach ($comments as $comment) {
    132137                $post = get_post($comment->comment_post_ID);
    133138                $authordata = get_userdata($post->post_author);
     
    135140                $class = ('alternate' == $class) ? '' : 'alternate';
    136141                $class .= ('unapproved' == $comment_status) ? ' unapproved' : '';
     142                $post_link = '<a href="' . get_comment_link() . '">' . get_the_title($comment->comment_post_ID) . '</a>';
     143                $author_url = get_comment_author_url();
     144                if ( 'http://' == $author_url )
     145                        $author_url = '';
    137146?>
    138147  <tr id="comment-<?php echo $comment->comment_ID; ?>" class='<?php echo $class; ?>'>
    139     <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>
    140     <td class="comment-author"><?php comment_author_link() ?></td>
    141     <td><?php comment_author_email_link() ?></td>
    142     <td><a href="edit-comments.php?s=<?php comment_author_IP() ?>&amp;mode=edit"><?php comment_author_IP() ?></a></td>
    143     <td><?php comment_excerpt(); ?></td>
    144     <td>
    145         <?php if ('unapproved' == $comment_status) {
    146                 _e('Unapproved');
    147         } else { ?>
    148                 <a href="<?php echo get_permalink($comment->comment_post_ID); ?>#comment-<?php comment_ID() ?>" class="edit"><?php _e('View') ?></a>
    149         <?php } ?>
     148    <td style="text-align: center; vertical-align: text-top"><?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>
     149    <td style="vertical-align: text-top">
     150    <?php comment_author_link(); ?><br />
     151    <?php if ( !empty($author_url) ) : ?>
     152    <a href="<?php echo $author_url ?>"><?php echo $author_url; ?></a> |
     153    <?php endif; ?>
     154    <?php if ( !empty($comment->comment_author_email) ): ?>
     155    <?php comment_author_email_link() ?> |
     156    <?php endif; ?>
     157    <a href="edit-comments.php?s=<?php comment_author_IP() ?>&amp;mode=edit"><?php comment_author_IP() ?></a>
     158    <p><?php comment_excerpt(); ?></p>
     159        <?php printf(__('From %1$s, %2$s at %3$s'), $post_link, get_the_time(get_option('date_format')), get_the_time()) ?>
    150160    </td>
    151     <td><?php if ( current_user_can('edit_post', $comment->comment_post_ID) ) {
    152         echo "<a href='comment.php?action=editcomment&amp;c=$comment->comment_ID' class='edit'>" .  __('Edit') . "</a>"; } ?></td>
    153     <td><?php if ( current_user_can('edit_post', $comment->comment_post_ID) ) {
     161    <td style="vertical-align: text-top"><?php comment_date(); ?></td>
     162    <td style="vertical-align: text-top">
     163    <?php if ( current_user_can('edit_post', $comment->comment_post_ID) ) {
     164        echo "<a href='comment.php?action=editcomment&amp;c=$comment->comment_ID' class='edit'>" .  __('Edit') . "</a> | ";
    154165                $url = clean_url( wp_nonce_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID", "delete-comment_$comment->comment_ID" ) );
    155166                echo "<a href='$url' class='delete:the-comment-list:comment-$comment->comment_ID delete'>" . __('Delete') . "</a> ";
    156                 } ?></td>
     167        }
     168        ?>
     169        </td>
    157170  </tr>
    158171                <?php
     
    160173        ?></tbody>
    161174</table>
    162 <p class="submit"><input type="submit" name="delete_button" class="delete" value="<?php _e('Delete Checked Comments') ?>" 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 + '"); ?>')" />
    163                         <input type="submit" name="spam_button" value="<?php _e('Mark Checked Comments as Spam') ?>" 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>
    164   </form>
     175
    165176<div id="ajax-response"></div>
    166177<?php
    167         } else {
     178} else {
    168179?>
    169180<p>
     
    171182</p>
    172183<?php
    173         } // end if ($comments)
    174184}
    175 
     185?>
     186<div class="tablenav">
     187<?php
    176188if ( $page_links )
    177         echo "<p class='pagenav'>$page_links</p>";
    178 
     189        echo "<div class='tablenav-pages'>$page_links</div>";
    179190?>
    180 
     191<br style="clear:both;" />
    181192</div>
    182193
  • trunk/wp-admin/includes/template.php

    r6989 r6993  
    568568}
    569569
    570 function _wp_get_comment_list( $s = false, $start, $num ) {
     570function _wp_get_comment_list( $status = '', $s = false, $start, $num ) {
    571571        global $wpdb;
    572572
     
    574574        $num = (int) $num;
    575575
     576        if ( 'moderated' == $status )
     577                $approved = "comment_approved = '0'";
     578        elseif ( 'approved' == $status )
     579                $approved = "comment_approved = '1'";
     580        elseif ( 'spam' == $status )
     581                $approved = "comment_approved = 'spam'";
     582        else
     583                $approved = "comment_approved != 'spam'";
     584       
    576585        if ( $s ) {
    577586                $s = $wpdb->escape($s);
     
    582591                        comment_author_IP LIKE ('%$s%') OR
    583592                        comment_content LIKE ('%$s%') ) AND
    584                         comment_approved != 'spam'
     593                        $approved
    585594                        ORDER BY comment_date_gmt DESC LIMIT $start, $num");
    586595        } else {
    587                 $comments = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->comments USE INDEX (comment_date_gmt) WHERE comment_approved = '0' OR comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT $start, $num" );
     596                $comments = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->comments USE INDEX (comment_date_gmt) WHERE $approved ORDER BY comment_date_gmt DESC LIMIT $start, $num" );
    588597        }
    589598
Note: See TracChangeset for help on using the changeset viewer.