WordPress.org

Make WordPress Core

Ticket #19159: 19159.3.diff

File 19159.3.diff, 4.9 KB (added by cdog, 7 years ago)
  • wp-admin/admin-ajax.php

     
    5353        'hidden-columns', 'update-welcome-panel', 'menu-get-metabox', 'wp-link-ajax',
    5454        'menu-locations-save', 'menu-quick-search', 'meta-box-order', 'get-permalink',
    5555        'sample-permalink', 'inline-save', 'inline-save-tax', 'find_posts', 'widgets-order',
    56         'save-widget', 'set-post-thumbnail', 'date_format', 'time_format', 'wp-fullscreen-save-post',
    57         'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment', 'get-attachment',
    58         'query-attachments', 'save-attachment', 'save-attachment-compat', 'send-link-to-editor',
    59         'send-attachment-to-editor', 'save-attachment-order',
     56        'save-widget', 'delete-inactive-widgets', 'set-post-thumbnail', 'date_format', 'time_format',
     57        'wp-fullscreen-save-post', 'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment',
     58        'get-attachment', 'query-attachments', 'save-attachment', 'save-attachment-compat',
     59        'send-link-to-editor', 'send-attachment-to-editor', 'save-attachment-order',
    6060);
    6161
    6262// Register core Ajax calls.
  • wp-admin/includes/ajax-actions.php

     
    15811581        wp_die();
    15821582}
    15831583
     1584function wp_ajax_delete_inactive_widgets() {
     1585        check_ajax_referer( 'remove-inactive-widgets', 'removeinactivewidgets' );
     1586
     1587        if ( ! current_user_can( 'edit_theme_options' ) )
     1588                wp_die( -1 );
     1589
     1590        unset( $_POST['removeinactivewidgets'], $_POST['action'] );
     1591
     1592        do_action( 'load-widgets.php' );
     1593        do_action( 'widgets.php' );
     1594        do_action( 'sidebar_admin_setup' );
     1595
     1596        $sidebars_widgets = wp_get_sidebars_widgets();
     1597        $sidebars_widgets['wp_inactive_widgets'] = array();
     1598        wp_set_sidebars_widgets( $sidebars_widgets );
     1599
     1600        wp_die();
     1601}
     1602
    15841603function wp_ajax_upload_attachment() {
    15851604        check_ajax_referer( 'media-form' );
    15861605
  • 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' ), a, data;
     255
     256                $( '.spinner', sb ).css( 'display', 'inline-block' );
     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                        $( '.spinner', sb ).hide();
     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

     
    82658265        margin: 5px 15px 10px;
    82668266}
    82678267
     8268.inactive .remove-inactive-widgets {
     8269        clear: both;
     8270        margin: 0 15px 15px;
     8271}
     8272
    82688273#available-widgets p.description {
    82698274        margin: 0 12px 12px;
    82708275}
  • wp-admin/widgets.php

     
    176176        exit;
    177177}
    178178
     179// Remove inactive widgets without js
     180if ( isset( $_POST['removeinactivewidgets'] ) ) {
     181        check_admin_referer( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' );
     182
     183        if ( $_POST['removeinactivewidgets'] ) {
     184                $sidebars_widgets['wp_inactive_widgets'] = array();
     185                wp_set_sidebars_widgets( $sidebars_widgets );
     186        }
     187
     188        wp_redirect( admin_url( 'widgets.php?message=0' ) );
     189        exit;
     190}
     191
    179192// Output the widget form without js
    180193if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) {
    181194        $widget_id = $_GET['editwidget'];
     
    350363                        </div>
    351364                        <div class="widget-holder inactive">
    352365                                <?php wp_list_widget_controls( $registered_sidebar['id'] ); ?>
    353                                 <div class="clear"></div>
     366                                <div class="remove-inactive-widgets">
     367                                        <form action="" method="post">
     368                                                <?php submit_button( __( 'Clear Inactive Widgets' ), 'delete', 'removeinactivewidgets', false, array( 'id' => 'inactive-widgets-control-remove' ) ); ?>
     369                                                <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>
     370                                                <?php wp_nonce_field( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' ); ?>
     371                                        </form>
     372                                </div>
    354373                        </div>
    355374                </div>
    356375<?php