WordPress.org

Make WordPress Core

Ticket #11260: 11260-first-run.diff

File 11260-first-run.diff, 7.4 KB (added by caesarsgrunt, 5 years ago)

First attempt at implementing undo for spam.

  • wp-admin/admin-ajax.php

     
    220220                if ( 'spam' == $status ) 
    221221                        die( (string) time() ); 
    222222                $r = wp_set_comment_status( $comment->comment_ID, 'spam' ); 
     223        } elseif ( isset($_POST['unspam']) && ( 0 == $_POST['unspam'] || 1 == $_POST['unspam'] ) ) { 
     224                if ( 'spam' != $status ) 
     225                        die( (string) time() ); 
     226                $r = wp_set_comment_status( $comment->comment_ID, $_POST['unspam'] ); 
    223227        } elseif ( isset($_POST['delete']) && 1 == $_POST['delete'] ) { 
    224228                $r = wp_delete_comment( $comment->comment_ID ); 
    225229        } else { 
  • wp-admin/includes/template.php

     
    23712371 */ 
    23722372function wp_comment_trashnotice() { 
    23732373?> 
    2374 <div class="hidden" id="undo-holder"> 
    2375 <div class="trash-undo-inside"><?php _e('Comment by'); ?> <strong></strong> <?php _e('moved to the trash.'); ?> <span class="untrash"><a class="undo-trash" href="#"><?php _e('Undo'); ?></a></span></div> 
     2374<div class="hidden" id="trash-undo-holder"> 
     2375        <div class="trash-undo-inside"><?php printf(__('Comment by %s moved to the trash.'), '<strong></strong>'); ?> <span class="undo untrash"><a href="#"><?php _e('Undo'); ?></a></span></div> 
    23762376</div> 
     2377<div class="hidden" id="spam-undo-holder"> 
     2378        <div class="spam-undo-inside"><?php printf(__('Comment by %s marked as spam.'), '<strong></strong>'); ?> <span class="undo unspam"><a href="#"><?php _e('Undo'); ?></a></span></div> 
     2379</div> 
    23772380<?php 
    23782381} 
    23792382 
  • wp-admin/js/edit-comments.dev.js

     
    3838                settings.data._per_page = perPageInput.val() || 0; 
    3939                settings.data._page = pageInput.val() || 0; 
    4040                settings.data._url = document.location.href; 
     41                 
     42                var action; 
     43                if ( cl.indexOf(':trash=1') != -1 ) 
     44                        action = 'trash'; 
     45                else if ( cl.indexOf(':spam=1') != -1 ) 
     46                        action = 'spam'; 
    4147 
    42                 if ( cl.indexOf(':trash=1') != -1 ) { 
     48                if ( action == 'trash' || action == 'spam' ) { 
    4349                        id = cl.replace(/.*?comment-([0-9]+).*/, '$1'); 
    4450                        el = $('#comment-' + id); 
    45                         note = $('#undo-holder').html(); 
     51                        note = $('#'+action+'-undo-holder').html(); 
    4652 
    4753                        if ( el.siblings('#replyrow').length && commentReply.cid == id ) 
    4854                                commentReply.close(); 
     
    5056                        if ( el.is('tr') ) { 
    5157                                n = el.children(':visible').length; 
    5258                                author = $('.author strong', el).text(); 
    53                                 h = $('<tr id="trashundo-' + id + '" class="trash-undo" style="display:none;"><td colspan="' + n + '">' + note + '</td></tr>'); 
     59                                h = $('<tr id="undo-' + id + '" class="undo un' + action + '" style="display:none;"><td colspan="' + n + '">' + note + '</td></tr>'); 
    5460                        } else { 
    5561                                author = $('.comment-author', el).text(); 
    56                                 h = $('<div id="trashundo-' + id + '" style="display:none;" class="trash-undo">' + note + '</div>'); 
     62                                h = $('<div id="undo-' + id + '" style="display:none;" class="undo un' + action + '">' + note + '</div>'); 
    5763                        } 
    5864 
    5965                        el.before(h); 
    6066 
    61                         $('strong', '#trashundo-' + id).text(author + ' '); 
    62                         a = $('a.undo-trash', '#trashundo-' + id); 
    63                         a.attr('href', 'comment.php?action=untrashcomment&c=' + id + '&_ajax_nonce=' + settings.data._ajax_nonce); 
    64                         a.attr('className', 'delete:the-comment-list:comment-' + id + '::untrash=1 vim-z vim-destructive'); 
    65                         $('.avatar', el).clone().prependTo('#trashundo-' + id + ' .trash-undo-inside'); 
     67                        $('strong', '#undo-' + id).text(author + ' '); 
     68                        a = $('.undo a', '#undo-' + id); 
     69                        if ( action == 'trash' ) { 
     70                                a.attr('href', 'comment.php?action=untrashcomment&c=' + id + '&_wpnonce=' + settings.data._ajax_nonce); 
     71                                a.attr('className', 'delete:the-comment-list:comment-' + id + '::untrash=1 vim-z vim-destructive'); 
     72                        } 
     73                        else if ( action == 'spam' ) { 
     74                                a.attr('href', 'comment.php?action=deletecomment&dt=unspam&s=' + ($(el).is('.approved') ? '1' : '0') + '&c=' + id + '&_wpnonce=' + settings.data._ajax_nonce); 
     75                                a.attr('className', 'delete:the-comment-list:comment-' + id + '::unspam=' + ($(el).is('.approved') ? '1' : '0') + ' vim-z vim-destructive'); 
     76/* 
     77                                if ( $(el).is('.approved') ) { 
     78                                        a.attr('href', $('.approve a', el).attr('href')); 
     79                                        a.attr('className', $('.approve a', el).attr('className')); 
     80                                } 
     81                                else { 
     82                                        a.attr('href', $('.unapprove a', el).attr('href')); 
     83                                        a.attr('className', $('.unapprove a', el).attr('className')); 
     84                                } 
     85*/ 
     86                        } 
     87                        $('.avatar', el).clone().prependTo('#undo-' + id + ' .' + action + '-undo-inside'); 
    6688 
    6789                        a.click(function(){ 
    6890                                list.wpList.del(this); 
    69                                 $('#trashundo-' + id).fadeOut(300, function(){ 
     91                                $('#undo-' + id).fadeOut(300, function(){ 
    7092                                        $(this).remove(); 
    7193                                        $('#comment-' + id).css('backgroundColor', '').fadeIn(300, function(){ $(this).show() }); 
    7294                                }); 
     
    135157 
    136158        // In admin-ajax.php, we send back the unix time stamp instead of 1 on success 
    137159        delAfter = function( r, settings ) { 
    138                 var total, pageLinks, N, untrash = $(settings.target).parent().is('span.untrash'), spam, trash; 
     160                var total, pageLinks, N, untrash = $(settings.target).parent().is('span.untrash'), unspam = $(settings.target).parent().is('span.unspam'), spam, trash; 
    139161 
    140162                function getUpdate(s) { 
    141163                        if ( $(settings.target).parent().is('span.' + s) ) 
     
    150172 
    151173                if ( untrash ) 
    152174                        trash = -1; 
     175                if ( unspam ) 
     176                        spam = -1; 
    153177 
    154178                $('span.pending-count').each( function() { 
    155179                        var a = $(this), n = getCount(a), unapproved = $('#' + settings.element).is('.unapproved'); 
    156180 
    157                         if ( $(settings.target).parent().is('span.unapprove') || ( untrash && unapproved ) ) { // we "deleted" an approved comment from the approved list by clicking "Unapprove" 
     181                        if ( $(settings.target).parent().is('span.unapprove') || ( (untrash||unspam) && unapproved ) ) { // we "deleted" an approved comment from the approved list by clicking "Unapprove" 
    158182                                n = n + 1; 
    159183                        } else if ( unapproved ) { // we deleted a formerly unapproved comment 
    160184                                n = n - 1; 
     
    212236                .bind('wpListDelEnd', function(e, s){ 
    213237                        var id = s.element.replace(/[^0-9]+/g, ''); 
    214238 
    215                         if ( s.target.className.indexOf(':trash=1') != -1 ) 
    216                                 $('#trashundo-' + id).fadeIn(300, function(){ $(this).show() }); 
     239                        if ( s.target.className.indexOf(':trash=1') != -1 || s.target.className.indexOf(':spam=1') != -1 ) 
     240                                $('#undo-' + id).fadeIn(300, function(){ $(this).show() }); 
    217241                }); 
    218242}; 
    219243 
  • wp-admin/comment.php

     
    153153 
    154154        if ( 'spam' == $_REQUEST['dt'] ) 
    155155                wp_set_comment_status( $comment->comment_ID, 'spam' ); 
     156        elseif ( 'unspam' == $_REQUEST['dt'] && isset($_REQUEST['s']) ) 
     157                wp_set_comment_status( $comment->comment_ID, $_REQUEST['s'] ); 
    156158        else 
    157159                wp_delete_comment( $comment->comment_ID ); 
    158160 
  • wp-admin/wp-admin.dev.css

     
    35243524        font-size: 11px; 
    35253525} 
    35263526 
    3527 .trash-undo-inside { 
     3527.trash-undo-inside, 
     3528.spam-undo-inside { 
    35283529        margin: 1px 8px 1px 0; 
    35293530        line-height: 16px; 
    35303531} 
    35313532 
     3533.spam-undo-inside .avatar, 
    35323534.trash-undo-inside .avatar { 
    35333535        height: 20px; 
    35343536        width: 20px;