WordPress.org

Make WordPress Core

Ticket #19159: 19159.diff

File 19159.diff, 4.5 KB (added by cdog, 22 months ago)
  • wp-admin/admin-ajax.php

     
    4949        'hidden-columns', 'update-welcome-panel', 'menu-get-metabox', 'wp-link-ajax', 
    5050        'menu-locations-save', 'menu-quick-search', 'meta-box-order', 'get-permalink', 
    5151        'sample-permalink', 'inline-save', 'inline-save-tax', 'find_posts', 'widgets-order', 
    52         'save-widget', 'set-post-thumbnail', 'date_format', 'time_format', 'wp-fullscreen-save-post', 
     52        'save-widget', 'delete-inactive-widgets', 'set-post-thumbnail', 'date_format', 'time_format', 'wp-fullscreen-save-post', 
    5353        'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment', 'get-attachment', 'query-attachments', 
    5454); 
    5555 
  • wp-admin/includes/ajax-actions.php

     
    16071607        wp_die(); 
    16081608} 
    16091609 
     1610function wp_ajax_delete_inactive_widgets() { 
     1611        check_ajax_referer( 'remove-inactive-widgets', 'removeinactivewidgets' ); 
     1612 
     1613        if ( !current_user_can('edit_theme_options') ) 
     1614                wp_die( -1 ); 
     1615 
     1616        unset( $_POST['removeinactivewidgets'], $_POST['action'] ); 
     1617 
     1618        do_action('load-widgets.php'); 
     1619        do_action('widgets.php'); 
     1620        do_action('sidebar_admin_setup'); 
     1621 
     1622        $sidebars_widgets = wp_get_sidebars_widgets(); 
     1623        $sidebars_widgets['wp_inactive_widgets'] = array(); 
     1624        wp_set_sidebars_widgets( $sidebars_widgets ); 
     1625 
     1626        wp_die(); 
     1627} 
     1628 
    16101629function wp_ajax_upload_attachment() { 
    16111630        check_ajax_referer( 'media-form' ); 
    16121631 
  • wp-admin/js/widgets.js

     
    6363                        } else if ( target.hasClass('widget-control-close') ) { 
    6464                                wpWidgets.close( target.closest('div.widget') ); 
    6565                                e.preventDefault(); 
     66                        } else if ( target.attr( 'id' ) == 'inactive-widgets-control-remove' ) { 
     67                                wpWidgets.removeInactiveWidgets(); 
     68                                e.preventDefault(); 
    6669                        } 
    6770                }); 
    6871 
     
    247250                }); 
    248251        }, 
    249252 
     253        removeInactiveWidgets : function() { 
     254                var sb = $( '.inactive-sidebar' ), data, a; 
     255 
     256                $( '.ajax-feedback', sb ).css( 'visibility', 'visible' ); 
     257 
     258                a = { 
     259                        action : 'delete-inactive-widgets', 
     260                        removeinactivewidgets : $( '#_wpnonce_remove_inactive_widgets' ).val() 
     261                }; 
     262 
     263                data = $.param( a ); 
     264 
     265                $.post( ajaxurl, data, function() { 
     266                        $( '.ajax-feedback' ).css( 'visibility', 'hidden' ); 
     267                        $( '#wp_inactive_widgets .widget' ).remove(); 
     268                } ); 
     269        }, 
     270 
    250271        appendTitle : function(widget) { 
    251272                var title = $('input[id*="-title"]', widget).val() || ''; 
    252273 
  • wp-admin/css/wp-admin.css

     
    79287928        margin: 5px 15px 10px; 
    79297929} 
    79307930 
     7931.inactive .remove-inactive-widgets { 
     7932        clear: both; 
     7933        margin: 0 15px 15px; 
     7934} 
     7935 
    79317936#available-widgets p.description { 
    79327937        margin: 0 12px 12px; 
    79337938} 
  • wp-admin/widgets.php

     
    191191        exit; 
    192192} 
    193193 
     194// We're removing inactive widgets without js 
     195if ( isset( $_POST['removeinactivewidgets'] ) ) { 
     196        check_admin_referer( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' ); 
     197 
     198        if ( $_POST['removeinactivewidgets'] ) { 
     199                $sidebars_widgets['wp_inactive_widgets'] = array(); 
     200                wp_set_sidebars_widgets( $sidebars_widgets ); 
     201        } 
     202 
     203        wp_redirect( admin_url( 'widgets.php?message=0' ) ); 
     204        exit; 
     205} 
     206 
    194207// Output the widget form without js 
    195208if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) { 
    196209        $widget_id = $_GET['editwidget']; 
     
    365378                        </div> 
    366379                        <div class="widget-holder inactive"> 
    367380                                <?php wp_list_widget_controls( $registered_sidebar['id'] ); ?> 
    368                                 <div class="clear"></div> 
     381                                <div class="remove-inactive-widgets"> 
     382                                        <form action="" method="post"> 
     383                                                <?php submit_button( __( 'Clear Inactive Widgets' ), 'delete', 'removeinactivewidgets', false, array( 'id' => 'inactive-widgets-control-remove' ) ); ?> 
     384                                                <span class="description"><?php _e( 'This will clear all items from the inactive widgets list. You will not be able to restore any customizations.' ); ?></span> 
     385                                                <?php wp_nonce_field( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' ); ?> 
     386                                        </form> 
     387                                </div> 
    369388                        </div> 
    370389                </div> 
    371390<?php