WordPress.org

Make WordPress Core

Ticket #19159: 19159.4.diff

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

     
    5656        'hidden-columns', 'update-welcome-panel', 'menu-get-metabox', 'wp-link-ajax',
    5757        'menu-locations-save', 'menu-quick-search', 'meta-box-order', 'get-permalink',
    5858        'sample-permalink', 'inline-save', 'inline-save-tax', 'find_posts', 'widgets-order',
    59         'save-widget', 'set-post-thumbnail', 'date_format', 'time_format',
     59        'save-widget', 'delete-inactive-widgets', 'set-post-thumbnail', 'date_format', 'time_format',
    6060        'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment', 'get-attachment',
    6161        'query-attachments', 'save-attachment', 'save-attachment-compat', 'send-link-to-editor',
    6262        'send-attachment-to-editor', 'save-attachment-order', 'heartbeat', 'get-revision-diffs',
  • wp-admin/css/widgets.css

     
    203203        margin-top: 40px;
    204204}
    205205
     206#widgets-left .inactive-sidebar .remove-inactive-widgets {
     207        clear: both;
     208}
     209
    206210/* Not sure what this is for... */
    207211div#widgets-left .inactive-sidebar .widget.expanded {
    208212        left: auto;
     
    346350
    347351.js .widgets-holder-wrap.closed .widget,
    348352.js .widgets-holder-wrap.closed .sidebar-description,
     353.js .widgets-holder-wrap.closed .remove-inactive-widgets,
    349354.js .closed br.clear {
    350355        display: none;
    351356}
  • wp-admin/includes/ajax-actions.php

     
    18921892        $wp_customize->widgets->wp_ajax_update_widget();
    18931893}
    18941894
     1895function wp_ajax_delete_inactive_widgets() {
     1896        check_ajax_referer( 'remove-inactive-widgets', 'removeinactivewidgets' );
     1897
     1898        if ( ! current_user_can( 'edit_theme_options' ) )
     1899                wp_die( -1 );
     1900
     1901        unset( $_POST['removeinactivewidgets'], $_POST['action'] );
     1902
     1903        do_action( 'load-widgets.php' );
     1904        do_action( 'widgets.php' );
     1905        do_action( 'sidebar_admin_setup' );
     1906
     1907        $sidebars_widgets = wp_get_sidebars_widgets();
     1908        $sidebars_widgets['wp_inactive_widgets'] = array();
     1909        wp_set_sidebars_widgets( $sidebars_widgets );
     1910
     1911        wp_die();
     1912}
     1913
    18951914/**
    18961915 * Ajax handler for uploading attachments
    18971916 *
  • wp-admin/js/widgets.js

     
    8080                                widget.removeClass( 'open' );
    8181                                wpWidgets.close( widget );
    8282                                e.preventDefault();
     83                        } else if ( target.attr( 'id' ) == 'inactive-widgets-control-remove' ) {
     84                                wpWidgets.removeInactiveWidgets();
     85                                e.preventDefault();
    8386                        }
    8487                });
    8588
     
    445448                });
    446449        },
    447450
     451        removeInactiveWidgets : function() {
     452                var sb = $( '.inactive-sidebar' ), a, data;
     453
     454                $( '.spinner', sb ).addClass( 'is-active' );
     455
     456                a = {
     457                        action : 'delete-inactive-widgets',
     458                        removeinactivewidgets : $( '#_wpnonce_remove_inactive_widgets' ).val()
     459                };
     460
     461                data = $.param( a );
     462
     463                $.post( ajaxurl, data, function() {
     464                        $( '.spinner', sb ).removeClass(' is-active' );
     465                        $( '#wp_inactive_widgets .widget' ).remove();
     466                } );
     467        },
     468
    448469        appendTitle : function(widget) {
    449470                var title = $('input[id*="-title"]', widget).val() || '';
    450471
  • wp-admin/widgets.php

     
    187187        exit;
    188188}
    189189
     190// Remove inactive widgets without js
     191if ( isset( $_POST['removeinactivewidgets'] ) ) {
     192        check_admin_referer( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' );
     193
     194        if ( $_POST['removeinactivewidgets'] ) {
     195                $sidebars_widgets['wp_inactive_widgets'] = array();
     196                wp_set_sidebars_widgets( $sidebars_widgets );
     197        }
     198
     199        wp_redirect( admin_url( 'widgets.php?message=0' ) );
     200        exit;
     201}
     202
    190203// Output the widget form without js
    191204if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) {
    192205        $widget_id = $_GET['editwidget'];
     
    381394                <div class="<?php echo esc_attr( $wrap_class ); ?>">
    382395                        <div class="widget-holder inactive">
    383396                                <?php wp_list_widget_controls( $registered_sidebar['id'], $registered_sidebar['name'] ); ?>
    384                                 <div class="clear"></div>
     397                                <div class="remove-inactive-widgets">
     398                                        <form action="" method="post">
     399                                                <p><?php submit_button( __( 'Clear Inactive Widgets' ), 'delete', 'removeinactivewidgets', false, array( 'id' => 'inactive-widgets-control-remove' ) ); ?></p>
     400                                                <p class="description"><?php _e( 'This will clear all items from the inactive widgets list. You will not be able to restore any customizations.' ); ?></p>
     401                                                <?php wp_nonce_field( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' ); ?>
     402                                        </form>
     403                                </div>
    385404                        </div>
    386405                </div>
    387406                <?php