WordPress.org

Make WordPress Core

Ticket #19159: 19159.5.diff

File 19159.5.diff, 5.6 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

     
    19281928        $wp_customize->widgets->wp_ajax_update_widget();
    19291929}
    19301930
     1931function wp_ajax_delete_inactive_widgets() {
     1932        check_ajax_referer( 'remove-inactive-widgets', 'removeinactivewidgets' );
     1933
     1934        if ( ! current_user_can( 'edit_theme_options' ) )
     1935                wp_die( -1 );
     1936
     1937        unset( $_POST['removeinactivewidgets'], $_POST['action'] );
     1938
     1939        do_action( 'load-widgets.php' );
     1940        do_action( 'widgets.php' );
     1941        do_action( 'sidebar_admin_setup' );
     1942
     1943        $sidebars_widgets = wp_get_sidebars_widgets();
     1944
     1945        foreach ( $sidebars_widgets['wp_inactive_widgets'] as $key => $widget_id ) {
     1946                $pieces = explode( '-', $widget_id );
     1947                $multi_number = array_pop( $pieces );
     1948                $id_base = implode( '-', $pieces );
     1949                $widget = get_option( 'widget_' . $id_base );
     1950                unset( $widget[$multi_number] );
     1951                update_option( 'widget_' . $id_base, $widget );
     1952                unset( $sidebars_widgets['wp_inactive_widgets'][$key] );
     1953        }
     1954
     1955        wp_set_sidebars_widgets( $sidebars_widgets );
     1956
     1957        wp_die();
     1958}
     1959
    19311960/**
    19321961 * Ajax handler for uploading attachments
    19331962 *
  • 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
     
    446449                });
    447450        },
    448451
     452        removeInactiveWidgets : function() {
     453                var sb = $( '.inactive-sidebar' ), a, data;
     454
     455                $( '.spinner', sb ).addClass( 'is-active' );
     456
     457                a = {
     458                        action : 'delete-inactive-widgets',
     459                        removeinactivewidgets : $( '#_wpnonce_remove_inactive_widgets' ).val()
     460                };
     461
     462                data = $.param( a );
     463
     464                $.post( ajaxurl, data, function() {
     465                        $( '.spinner', sb ).removeClass(' is-active' );
     466                        $( '#wp_inactive_widgets .widget' ).remove();
     467                } );
     468        },
     469
    449470        appendTitle : function(widget) {
    450471                var title = $('input[id*="-title"]', widget).val() || '';
    451472
  • wp-admin/widgets.php

     
    183183        exit;
    184184}
    185185
     186// Remove inactive widgets without js
     187if ( isset( $_POST['removeinactivewidgets'] ) ) {
     188        check_admin_referer( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' );
     189
     190        if ( $_POST['removeinactivewidgets'] ) {
     191                foreach ( $sidebars_widgets['wp_inactive_widgets'] as $key => $widget_id ) {
     192                        $pieces = explode( '-', $widget_id );
     193                        $multi_number = array_pop( $pieces );
     194                        $id_base = implode( '-', $pieces );
     195                        $widget = get_option( 'widget_' . $id_base );
     196                        unset( $widget[$multi_number] );
     197                        update_option( 'widget_' . $id_base, $widget );
     198                        unset( $sidebars_widgets['wp_inactive_widgets'][$key] );
     199                }
     200
     201                wp_set_sidebars_widgets( $sidebars_widgets );
     202        }
     203
     204        wp_redirect( admin_url( 'widgets.php?message=0' ) );
     205        exit;
     206}
     207
    186208// Output the widget form without js
    187209if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) {
    188210        $widget_id = $_GET['editwidget'];
     
    377399                <div class="<?php echo esc_attr( $wrap_class ); ?>">
    378400                        <div class="widget-holder inactive">
    379401                                <?php wp_list_widget_controls( $registered_sidebar['id'], $registered_sidebar['name'] ); ?>
    380                                 <div class="clear"></div>
     402                                <div class="remove-inactive-widgets">
     403                                        <form action="" method="post">
     404                                                <p><?php submit_button( __( 'Clear Inactive Widgets' ), 'delete', 'removeinactivewidgets', false, array( 'id' => 'inactive-widgets-control-remove' ) ); ?></p>
     405                                                <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>
     406                                                <?php wp_nonce_field( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' ); ?>
     407                                        </form>
     408                                </div>
    381409                        </div>
    382410                </div>
    383411                <?php