Make WordPress Core

Changeset 58083

Timestamp:
05/02/2024 05:46:59 PM (3 months ago)
Author:
jorbin
Message:

Plugins: Show an admin notice on successful activation.

Plugin activation on the Plugins > Add New screen is performed using AJAX, no longer performing redirects. This means that users will not see a newly activated plugin's menu items, admin notices, or other UI elements until the user refreshes or navigates to another screen. Without adequate messaging and direction, users may be unsure of what to do next.

This shows an admin notice when a plugin is activated from its plugin card or modal, informing the user that the plugin was activated, and that some changes may not occur until they refresh the page.

Follow-up to [57545].

Reviewed by joedolson.
Merges [58081] to the 6.5 branch.

Props costdev, jorbin, jeherve, flixos90, joedolson, ironprogrammer, audrasjb, alanfuller, kevinwhoffman, devsahadat, afragen, adrianduffell, azaozz, jason_the_adams, JeffPaul, webdevmattcrom, DrewAPicture, justlevine, stevejonesdev, benlk, roytanck.
Fixes #60992. See #22316.

Location:
branches/6.5
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/6.5

  • branches/6.5/src/js/_enqueues/wp/updates.js

    r57714 r58083  
    11061106     * @since 6.5.0
    11071107     *
    1108      * @param {Object} response             Response from the server.
    1109      * @param {string} response.slug        Slug of the activated plugin.
    1110      * @param {string} response.pluginName  Name of the activated plugin.
    1111      * @param {string} response.plugin      The plugin file, relative to the plugins directory.
     1108     * @param {Object} response            Response from the server.
     1109     * @param {string} response.slug       Slug of the activated plugin.
     1110     * @param {string} response.pluginName Name of the activated plugin.
     1111     * @param {string} response.plugin     The plugin file, relative to the plugins directory.
    11121112     */
    11131113    wp.updates.activatePluginSuccess = function( response ) {
    11141114        var $message = $( '.plugin-card-' + response.slug + ', #plugin-information-footer' ).find( '.activating-message' ),
     1115
    11151116            buttonText = _x( 'Activated!', 'plugin' ),
    11161117            ariaLabel = sprintf(
     
    11181119                '%s activated successfully.',
    11191120                response.pluginName
    1120             );
    1121 
    1122         wp.a11y.speak( __( 'Activation completed successfully.' ) );
     1121            ),
     1122            noticeData = {
     1123                id: 'plugin-activated-successfully',
     1124                className: 'notice-success',
     1125                message: sprintf(
     1126                    /* translators: %s: The refresh link's attributes. */
     1127                    __( 'Plugin activated. Some changes may not occur until you refresh the page. <a %s>Refresh Now</a>' ),
     1128                    'href="#" class="button button-secondary refresh-page"'
     1129                ),
     1130                slug: response.slug
     1131            },
     1132            noticeTarget;
     1133
     1134        wp.a11y.speak( __( 'Activation completed successfully. Some changes may not occur until you refresh the page.' ) );
    11231135        $document.trigger( 'wp-plugin-activate-success', response );
    11241136
     
    11291141            .text( buttonText );
    11301142
    1131         if ( 'plugin-information-footer' === $message.parent().attr( 'id' ) ) {
     1143        if ( ) {
    11321144            wp.updates.setCardButtonStatus(
    11331145                {
     
    11401152                }
    11411153            );
     1154
     1155
     1156
     1157
     1158
     1159
     1160
     1161
     1162
     1163
     1164
     1165
     1166
     1167
     1168
     1169
    11421170        }
    11431171
    11441172        setTimeout( function() {
    1145             $message.removeClass( 'activated-message' )
    1146             .text( _x( 'Active', 'plugin' ) );
    1147 
    1148             if ( 'plugin-information-footer' === $message.parent().attr( 'id' ) ) {
     1173            if ( isInModal ) {
    11491174                wp.updates.setCardButtonStatus(
    11501175                    {
     
    11601185                    }
    11611186                );
     1187
     1188
    11621189            }
    11631190        }, 1000 );
     
    32273254            }
    32283255
     3256
     3257
     3258
     3259
     3260
    32293261            if (
    32303262                'undefined' !== typeof message.status &&
     
    34593491            }
    34603492        );
     3493
     3494
     3495
     3496
     3497
     3498
     3499
     3500
     3501
     3502
     3503
     3504
     3505
     3506
     3507
     3508
     3509
    34613510    } );
    34623511})( jQuery, window.wp, window._wpUpdatesSettings );
  • branches/6.5/src/wp-admin/css/common.css

    r57697 r58083  
    15141514}
    15151515
     1516
     1517
     1518
     1519
     1520
     1521
     1522
     1523
     1524
     1525
     1526
     1527
     1528
     1529
     1530
     1531
     1532
     1533
     1534
    15161535.update-message p:before,
    15171536.updating-message p:before,
Note: See TracChangeset for help on using the changeset viewer.