WordPress.org

Make WordPress Core

Ticket #4529: upload-trash-undo.diff

File upload-trash-undo.diff, 6.6 KB (added by caesarsgrunt, 9 years ago)

Undo in the upload and gallery dialogs.

  • wp-includes/post.php

     
    12501250
    12511251        if ( !$post = wp_get_single_post($post_id, ARRAY_A) )
    12521252                return $post;
     1253        elseif ($post['post_status'] == 'trash')
     1254                return false;
    12531255
    12541256        do_action('trash_post', $post_id);
    12551257
     
    12771279function wp_untrash_post($post_id = 0) {
    12781280        if ( !$post = wp_get_single_post($post_id, ARRAY_A) )
    12791281                return $post;
     1282        elseif ($post['post_status'] != 'trash')
     1283                return false;
    12801284
    12811285        do_action('untrash_post', $post_id);
    12821286
  • wp-includes/js/swfupload/handlers.dev.js

     
    8383                        });
    8484                return false;
    8585        });
     86        // Bind AJAX to the new Undo button
     87        jQuery('#media-item-' + fileObj.id + ' a.undo').click(function(){
     88                // Tell the server to untrash it. TODO: handle exceptions
     89                jQuery.ajax({url:'admin-ajax.php',type:'post',id:fileObj.id,data:{
     90                        id : this.id.replace(/[^0-9]/g,''),
     91                        action : 'untrash-post',
     92                        _ajax_nonce : this.href.replace(/^.*wpnonce=/,'')},
     93                        success:function(data, textStatus){
     94                                if ( type = jQuery('#type-of-' + fileObj.id).val() )
     95                                        jQuery('#' + type + '-counter').text(jQuery('#' + type + '-counter').text()-0+1);
     96                                if ( jQuery('#media-item-' + fileObj.id).hasClass('child-of-'+post_id) )
     97                                        jQuery('#attachments-count').text(jQuery('#attachments-count').text()-0+1);
     98                               
     99                                jQuery('#media-item-' + fileObj.id + ' .filename .trashnotice').remove();
     100                                jQuery('#media-item-' + fileObj.id + ' a.undo').addClass('hidden');
     101                                jQuery('#media-item-' + fileObj.id + ' .filename').siblings('a.toggle.describe-toggle-on').show();
     102                                jQuery('#media-item-' + fileObj.id).animate({backgroundColor:'#fff'}, {queue:false,duration:200,complete:function(){jQuery(this).css({backgroundColor:''})}});
     103                                jQuery('#media-item-' + this.id + ' .menu_order_input').show();
     104                        }
     105                        });
     106                return false;
     107        });
    86108
    87109        // Open this item if it says to start open (e.g. to display an error)
    88110        jQuery('#media-item-' + fileObj.id + '.startopen').removeClass('startopen').slideToggle(500).parent().children('.toggle').toggle();
     
    101123        if ( data == '0' )
    102124                return itemAjaxError(this.id, 'Could not be deleted. Has it been deleted already?');
    103125
     126        var id = this.id;
    104127        var item = jQuery('#media-item-' + this.id);
    105128
    106129        // Decrement the counters.
     
    109132        if ( item.hasClass('child-of-'+post_id) )
    110133                jQuery('#attachments-count').text(jQuery('#attachments-count').text()-1);
    111134
    112         if ( jQuery('.type-form #media-items>*').length == 1 && jQuery('#media-items .hidden').length > 0 ) {
    113                 jQuery('.toggle').toggle();
    114                 jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden');
    115         }
    116 
    117         // Vanish it.
     135        jQuery('#media-item-' + this.id + ' .toggle').toggle();
     136        jQuery('#media-item-' + this.id + ' .slidetoggle').slideUp(200).siblings().removeClass('hidden');
     137        jQuery('#media-item-' + this.id).css({backgroundColor:'#fff'}).animate({backgroundColor:'#ffc0c0'}, {queue:false,duration:500});
    118138        jQuery('#media-item-' + this.id + ' .filename:empty').remove();
    119         jQuery('#media-item-' + this.id + ' .filename').append(' <span class="file-error">'+swfuploadL10n.deleted+'</span>').siblings('a.toggle').remove();
    120         jQuery('#media-item-' + this.id).children('.describe').css({backgroundColor:'#fff'}).end()
    121                         .animate({backgroundColor:'#ffc0c0'}, {queue:false,duration:50})
    122                         .animate({minHeight:0,height:36}, 400, null, function(){jQuery(this).children('.describe').remove()})
    123                         .animate({backgroundColor:'#fff'}, 400)
    124                         .animate({height:0}, 800, null, function(){jQuery(this).remove();updateMediaForm();});
     139        jQuery('#media-item-' + this.id + ' .filename').append('<span class="trashnotice"> '+swfuploadL10n.deleted+' </span>').siblings('a.toggle').hide();
     140        jQuery('#media-item-' + this.id + ' .filename').append(jQuery('#media-item-' + this.id + ' a.undo').removeClass('hidden'));
     141        jQuery('#media-item-' + this.id + ' .menu_order_input').hide();
    125142
    126143        return;
    127144}
  • wp-includes/script-loader.php

     
    204204                        'upload_stopped' => __('Upload stopped.'),
    205205                        'dismiss' => __('Dismiss'),
    206206                        'crunching' => __('Crunching&hellip;'),
    207                         'deleted' => __('Moved to Trash'),
     207                        'deleted' => __('moved to the trash.'),
    208208                        'l10n_print_after' => 'try{convertEntities(swfuploadL10n);}catch(e){};'
    209209        ) );
    210210
  • wp-admin/admin-ajax.php

     
    346346        else
    347347                die('0');
    348348        break;
     349case 'untrash-post' :
     350        check_ajax_referer( "{$action}_$id" );
     351        if ( !current_user_can( 'delete_post', $id ) )
     352                die('-1');
     353
     354        if ( !get_post( $id ) )
     355                die('1');
     356
     357        if ( wp_untrash_post( $id ) )
     358                die('1');
     359        else
     360                die('0');
     361        break;
    349362case 'delete-page' :
    350363        check_ajax_referer( "{$action}_$id" );
    351364        if ( !current_user_can( 'delete_page', $id ) )
  • wp-admin/includes/media.php

     
    12031203                'extra_rows' => array(),
    12041204        );
    12051205
    1206         $delete_href = wp_nonce_url("post.php?action=trash&amp;post=$attachment_id", 'trash-post_' . $attachment_id);
     1206        $trash_href = wp_nonce_url("post.php?action=trash&amp;post=$attachment_id", 'trash-post_' . $attachment_id);
     1207        $untrash_href = wp_nonce_url("post.php?action=untrash&amp;post=$attachment_id", 'untrash-post_' . $attachment_id);
    12071208        if ( $send )
    12081209                $send = "<input type='submit' class='button' name='send[$attachment_id]' value='" . esc_attr__( 'Insert into Post' ) . "' />";
    12091210        if ( $delete )
    1210                 $delete = current_user_can('delete_post', $attachment_id) ? "<a href=\"$delete_href\" id=\"del[$attachment_id]\" class=\"delete\">" . __('Move to Trash') . "</a>" : "";
     1211                $delete = current_user_can('delete_post', $attachment_id) ? "<a href=\"$trash_href\" id=\"del[$attachment_id]\" class=\"delete\">" . __('Move to Trash') . "</a> <a href=\"$untrash_href\" id=\"undo[$attachment_id]\" class=\"undo hidden\">" . __('Undo?') . "</a>" : "";
    12111212        if ( 'image' == $type && get_post_image_id($_GET['post_id']) != $attachment_id )
    12121213                $thumbnail = "<a class='wp-post-thumbnail' href='#' onclick='WPSetAsThumbnail(\"$attachment_id\");return false;'>" . esc_html__( "Use as thumbnail" ) . "</a>";
    12131214