Skip to:
Content

BuddyPress.org

Ticket #8132: 8132.patch

File 8132.patch, 27.1 KB (added by imath, 6 years ago)
  • src/bp-core/admin/css/hello.css

    diff --git src/bp-core/admin/css/hello.css src/bp-core/admin/css/hello.css
    index 63704edc7..26ba667c7 100644
    TABLE OF CONTENTS: 
    991.0 - Typography and colour
    10102.0 - Dashicons
    11113.0 - Elements
    12         3.1 - Backdrop and container
    13         3.2 - Modal footer
    14         3.3 - Modal header
    15         3.4 - Modal content
     12        3.1 - Modal footer
     13        3.2 - Modal content
    16144.0 - Content styles
    17         4.1 - Backdrop and container
    18         4.2 - Footer content
    19         4.3 - Header content
    20         4.4 - Content content
     15        4.1 - Footer content
     16        4.2 - Header content
     17        4.3 - Content content
    21185.0 - Media
    22196.0 - Media Queries
    2320        6.1 - Desktop Medium
    24         6.2 - Desktop Large
    2521------------------------------------------------------------------------------*/
    2622/*------------------------------------------------------------------------------
    2723 * 1.0 - Typography and colour
    TABLE OF CONTENTS: 
    3228        --bp-hello-container-size: 15%;
    3329}
    3430
    35 #bp-hello-container a {
    36         color: var(--bp-hello-color-primary);
    37 }
    38 
    39 #bp-hello-container a:hover {
    40         transition: all 0.1s ease-in-out;
    41         color: black;
     31.bp-hello-content p {
     32        font-size: 16px;
    4233}
    4334
    44 #bp-hello-container .bp-hello-header h1 {
    45         line-height: 1.7;
    46         font-size: 21px;
    47         font-weight: 400;
     35.bp-hello-content ul, .bp-hello-content ol {
     36        list-style: inherit;
    4837}
    4938
    50 .bp-hello-content p {
    51         font-size: 16px;
     39.bp-hello-content h3 {
     40        font-size: 1.1em;
     41        font-weight: 500;
    5242}
    5343
    5444/*------------------------------------------------------------------------------
    5545 * 2.0 - Dashicons
    5646 *----------------------------------------------------------------------------*/
    57 .bp-hello-close .button {
    58         padding: 5px !important;
    59 }
    60 
    61 .bp-hello-close .close-modal:before {
    62         content: "\f158";
    63         color: #23282d;
    64         /* wp toolbar */
    65         font: 400 1.5em/1 dashicons;
    66         speak: none;
    67         -webkit-font-smoothing: antialiased;
    68         -moz-osx-font-smoothing: grayscale;
    69         background-image: none !important;
    70 }
    71 
    72 .bp-hello-close .close-modal:focus:before, .bp-hello-close .close-modal:hover:before {
    73         transition: all 0.1s ease-in-out;
    74         color: var(--bp-hello-color-primary);
    75 }
    7647
    7748.bp-hello-social li a:before {
    7849        color: #23282d;
    TABLE OF CONTENTS: 
    9768        content: "\f301";
    9869}
    9970
    100 /*------------------------------------------------------------------------------
    101  * 3.0 - Elements
    102  *----------------------------------------------------------------------------*/
    103 /*
    104  * 3.1 - Backdrop and container
    105  */
    106 #bp-hello-backdrop {
    107         position: fixed;
    108         top: 0;
    109         left: 0;
    110         right: 0;
    111         bottom: 0;
    112         z-index: 9998;
    113         display: none;
     71div.dashicons {
     72        width: fit-content;
    11473}
    11574
    116 #bp-hello-container {
    117         position: fixed;
    118         top: 0;
    119         bottom: 80px;
    120         z-index: 99999;
    121 }
    122 
    123 .bp-disable-scroll {
    124         overflow: hidden;
     75div.dashicons.big {
     76        font-size: 128px;
     77        display: block;
     78        color: var(--bp-hello-color-primary );
     79        height: 128px;
     80        width: 128px;
    12581}
    12682
     83/*------------------------------------------------------------------------------
     84 * 3.0 - Elements
     85 *----------------------------------------------------------------------------*/
    12786/*
    128  * 3.2 - Modal footer
     87 * 3.1 - Modal footer
    12988 */
    130 .bp-hello-footer {
     89#plugin-information-footer {
    13190        display: flex;
    13291        flex-wrap: wrap;
    133         height: 58px;
    134         max-height: 58px;
     92        padding: 0 16px;
     93        height: auto;
     94}
     95
     96#plugin-information-footer .dashicons-heart {
     97        color: #be3631;
    13598}
    13699
    137100.bp-hello-social-cta,
    TABLE OF CONTENTS: 
    156119}
    157120
    158121/*
    159  * 3.3 - Modal header
     122 * 3.2 - Modal content
    160123 */
    161 .bp-hello-header {
    162         height: 58px;
    163         max-height: 58px;
     124#bp-hello-container {
     125        display: none;
    164126}
    165127
    166 /*
    167  * 3.4 - Modal content
    168  */
    169128.bp-hello-content {
    170129        padding: 0 25px;
    171         height: calc(100% - 58px);
    172         overflow-y: auto;
    173         -webkit-overflow-scrolling: touch;
     130        padding-bottom: 20px;
    174131}
    175132
    176 /*------------------------------------------------------------------------------
    177  * 4.0 - Content styles
    178  *----------------------------------------------------------------------------*/
    179 /*
    180  * 4.1 - Backdrop and container
    181  */
    182 #bp-hello-backdrop {
    183         background-color: rgba(0, 0, 0, 0.8);
    184         transition: opacity 0.15s ease-out;
     133#dynamic-content {
     134        padding-bottom: 40px;
     135        display: none;
    185136}
    186137
    187 #bp-hello-container {
    188         background-color: white;
     138#dynamic-content.show {
     139        display: block;
    189140}
    190141
    191 /*
    192  * 4.2 - Footer content
    193  */
    194 .bp-hello-footer {
    195         border-radius: 0 0 3px 3px;
    196         background-color: white;
    197         border-top: 1px solid var(--bp-hello-color-secondary);
    198         padding: 6px 25px;
     142.plugin-details-modal #TB_title {
     143        height: 0;
     144        background: none;
     145        border: none;
    199146}
    200147
    201 .bp-hello-footer p {
    202         font-size: 15px;
     148#TB_window.plugin-details-modal.thickbox-loading:before {
     149        z-index: 10;
     150        margin-top: 40px;
     151        background-color: none;
    203152}
    204153
    205 .bp-hello-social-cta {
    206         text-align: left;
     154.bp-hello-aligncenter * {
     155        margin: 10px auto;
    207156}
    208157
    209 .bp-hello-social-links {
    210         text-align: right;
     158.bp-hello-alignleft {
     159        float: left;
    211160}
    212161
    213 .bp-hello-social li a {
    214         text-decoration: none;
     162.bp-hello-alignleft::after {
     163        content: '';
     164        clear: left;
    215165}
    216166
    217 /*
    218  * 4.3 - Header content
    219  */
    220 .bp-hello-header {
    221         padding: 6px 25px;
     167.bp-hello-alignright {
     168        float: right;
    222169}
    223170
    224 .bp-hello-header h1 {
    225         width: calc(100% - 51px);
     171.bp-hello-alignright::after {
     172        content: '';
     173        clear: right;
    226174}
    227175
    228 #bp-hello-container .bp-hello-header {
    229         border-bottom: 1px solid var(--bp-hello-color-secondary);
     176.bp-hello-divider {
     177        clear: both;
     178        border: none;
     179        margin-bottom: 20px;
    230180}
    231181
    232 .bp-hello-title {
     182/*------------------------------------------------------------------------------
     183 * 4.0 - Content styles
     184 *----------------------------------------------------------------------------*/
     185/*
     186 * 4.1 - Footer content
     187 */
     188
     189.bp-hello-social-cta {
    233190        text-align: left;
    234191}
    235192
    236 .bp-hello-close {
    237         position: absolute;
    238         top: 20px;
    239         right: 25px;
     193.bp-hello-social-links {
    240194        text-align: right;
    241195}
    242196
     197.bp-hello-social li a {
     198        text-decoration: none;
     199}
     200
    243201/*
    244  * 4.4 - Content content
     202 * 4.2 - Header content
     203 */
     204#plugin-information-title.with-banner {
     205        background-image: url( 'https://ps.w.org/buddypress/assets/banner-772x250.png' );
     206}
     207
     208@media only screen and ( -webkit-min-device-pixel-ratio: 1.5 ) {
     209        #plugin-information-title.with-banner {
     210                background-image: url( 'https://ps.w.org/buddypress/assets/banner-1544x500.png' );
     211        }
     212}
     213
     214/*
     215 * 4.3 - Content content
    245216 */
    246217.bp-hello-content {
    247218        background-color: white;
    TABLE OF CONTENTS: 
    259230        width: 100%;
    260231}
    261232
     233.bp-hello-alignleft img,
     234.bp-hello-alignright img {
     235        max-width: 200px;
     236}
     237
    262238/*------------------------------------------------------------------------------
    263239 * 6.0 - Media Queries
    264240 *----------------------------------------------------------------------------*/
    TABLE OF CONTENTS: 
    266242 * 6.1 - Desktop Medium
    267243 */
    268244@media only screen and (min-width: 1024px) {
    269         #bp-hello-backdrop {
    270                 display: block;
    271         }
    272         #bp-hello-container {
    273                 position: fixed;
    274                 top: 60px;
    275                 left: var(--bp-hello-container-size);
    276                 right: var(--bp-hello-container-size);
    277                 bottom: 30px;
    278                 z-index: 9999;
    279                 border-radius: 3px;
    280         }
    281         #bp-hello-container .bp-hello-header h1 {
    282                 line-height: inherit;
    283         }
    284         .bp-hello-header {
    285                 height: auto;
    286                 max-height: inherit;
    287                 padding: 6px 30px;
    288         }
    289         .bp-hello-close {
    290                 right: 30px;
    291         }
    292         .bp-hello-close .close-modal:before {
    293                 line-height: 0.7;
    294         }
    295         .bp-hello-footer {
    296                 position: fixed;
    297                 left: var(--bp-hello-container-size);
    298                 right: var(--bp-hello-container-size);
    299                 bottom: 30px;
    300                 z-index: 10000;
    301                 height: auto;
    302                 max-height: inherit;
    303                 padding: 6px 30px;
    304         }
    305245        .bp-hello-content {
    306                 height: calc(100% - 90px);
    307                 padding: 0 30px;
     246                padding: 0 30px 20px;
    308247        }
    309248        .bp-hello-content p {
    310249                font-size: 14px;
    311250        }
    312251}
    313 
    314 /**
    315  * 6.2 - Desktop Large
    316  */
    317 @media screen and (min-width: 1280px) {
    318         #bp-hello-container,
    319         .bp-hello-footer {
    320                 left: calc((100% - 896px) / 2);
    321                 right: calc((100% - 896px) / 2);
    322         }
    323 }
  • src/bp-core/admin/js/hello.js

    diff --git src/bp-core/admin/js/hello.js src/bp-core/admin/js/hello.js
    index 5805472cd..eb52b578d 100644
     
    33 *
    44 * @since 3.0.0
    55 */
    6 (function() {
    7         /**
    8          * Open the BuddyPress Hello modal.
    9          */
    10         var bp_hello_open_modal = function() {
    11                 var backdrop = document.getElementById( 'bp-hello-backdrop' ),
    12                         modal = document.getElementById( 'bp-hello-container' );
    13 
    14                 document.body.classList.add( 'bp-disable-scroll' );
    15 
    16                 // Show modal and overlay.
    17                 backdrop.style.display = '';
    18                 modal.style.display    = '';
    19 
    20                 // Focus the "X" so bp_hello_handle_keyboard_events() works.
    21                 var focus_target = modal.querySelectorAll( 'a[href], button' );
    22                 focus_target     = Array.prototype.slice.call( focus_target );
    23                 focus_target[0].focus();
    24 
    25                 // Events.
    26                 modal.addEventListener( 'keydown', bp_hello_handle_keyboard_events );
    27                 backdrop.addEventListener( 'click', bp_hello_close_modal );
    28         };
     6(function( $, bp ) {
     7        // Bail if not set
     8        if ( typeof bpHelloStrings === 'undefined' ) {
     9                return;
     10        }
    2911
    3012        /**
    31          * Close modal if "X" or background is touched.
    32          *
    33          * @param {Event} event - A click event.
     13         * Open the BuddyPress Hello modal.
    3414         */
    35         document.addEventListener( 'click', function( event ) {
    36                 var backdrop = document.getElementById( 'bp-hello-backdrop' );
    37                 if ( ! backdrop || ! document.getElementById( 'bp-hello-container' ) ) {
    38                         return;
     15        var bpHelloOpenModal = function() {
     16                if ( 'function' !== typeof window.tb_show ) {
     17                        return false;
    3918                }
    4019
    41                 var backdrop_click    = backdrop.contains( event.target ),
    42                         modal_close_click = event.target.classList.contains( 'close-modal' );
    43 
    44                 if ( ! modal_close_click && ! backdrop_click ) {
    45                         return;
    46                 }
     20                window.tb_show( 'BuddyPress', '#TB_inline?inlineId=bp-hello-container' );
    4721
    48                 bp_hello_close_modal();
    49         }, false );
     22                $( '#TB_window' ).attr( {
     23                                                        'role': 'dialog',
     24                                                        'aria-label': plugininstallL10n.plugin_modal_label
     25                                                } )
     26                                                .addClass( 'plugin-details-modal' )
     27                                                .removeClass( 'thickbox-loading' );
    5028
    51         /**
    52          * Close the Hello modal.
    53          */
    54         var bp_hello_close_modal = function() {
    55                 var backdrop = document.getElementById( 'bp-hello-backdrop' ),
    56                         modal = document.getElementById( 'bp-hello-container' );
    57 
    58                 document.body.classList.remove( 'bp-disable-scroll' );
    59 
    60                 // Remove modal and overlay.
    61                 modal.parentNode.removeChild( modal );
    62                 backdrop.parentNode.removeChild( backdrop );
     29                $( '#TB_ajaxContent' ).prop( 'style', 'height: 100%; width: auto; padding: 0; border: none;' );
    6330        };
    6431
    6532        /**
    66          * Restrict keyboard focus to elements within the BuddyPress Hello modal.
     33         * Prints an error message.
    6734         *
    68          * @param {Event} event - A keyboard focus event.
     35         * @param {string} message The error message to display.
    6936         */
    70         var bp_hello_handle_keyboard_events = function( event ) {
    71                 var modal = document.getElementById( 'bp-hello-container' ),
    72                         focus_targets = Array.prototype.slice.call(
    73                                 modal.querySelectorAll( 'a[href], button' )
    74                         ),
    75                         first_tab_stop = focus_targets[0],
    76                         last_tab_stop  = focus_targets[ focus_targets.length - 1 ];
    77 
    78                 // Check for TAB key press.
    79                 if ( event.keyCode !== 9 ) {
    80                         return;
     37        var printErrorMessage = function( message ) {
     38                if ( ! message ) {
     39                        message = bpHelloStrings.pageNotFound;
    8140                }
    8241
    83                 // When SHIFT+TAB on first tab stop, go to last tab stop in modal.
    84                 if ( event.shiftKey && document.activeElement === first_tab_stop ) {
    85                         event.preventDefault();
    86                         last_tab_stop.focus();
    87 
    88                 // When TAB reaches last tab stop, go to first tab stop in modal.
    89                 } else if ( document.activeElement === last_tab_stop ) {
    90                         event.preventDefault();
    91                         first_tab_stop.focus();
    92                 }
     42                $( '#dynamic-content' ).html(
     43                        $('<div></div>' ).prop( 'id', 'message' )
     44                                        .addClass( 'notice notice-error error' )
     45                                        .html(
     46                                                $( '<p></p>' ).html( message )
     47                                        )
     48                );
    9349        };
    9450
    95         /**
    96          * Close modal if escape key is presssed.
    97          *
    98          * @param {Event} event - A keyboard focus event.
    99          */
    100         document.addEventListener( 'keyup', function( event ) {
    101                 if ( event.keyCode === 27 ) {
    102                         if ( ! document.getElementById( 'bp-hello-backdrop' ) || ! document.getElementById( 'bp-hello-container' ) ) {
    103                                 return;
    104                         }
    105 
    106                         bp_hello_close_modal();
     51        // Listen to Tab Menu clicks to display the different screens.
     52        $( '#plugin-information-tabs').on( 'click', 'a', function( event ) {
     53                event.preventDefault();
     54
     55                var anchor = $( event.currentTarget ), target = $( '#dynamic-content' );
     56
     57                if ( anchor.hasClass( 'dynamic' ) ) {
     58                        $( '#top-features' ).hide();
     59                        target.html( '' );
     60                        target.addClass( 'show' );
     61
     62                        $( '#TB_window' ).addClass( 'thickbox-loading' );
     63
     64                        bp.apiRequest( {
     65                                url: anchor.data( 'endpoint' ),
     66                                type: 'GET',
     67                                beforeSend: function( xhr, settings ) {
     68                                        settings.url = settings.url.replace( '&_wpnonce=none', '' );
     69                                },
     70                                data: {
     71                                        context: 'view',
     72                                        slug: anchor.data( 'slug' ),
     73                                        _wpnonce: 'none',
     74                                }
     75                        } ).done( function( data ) {
     76                                var page = _.first( data );
     77
     78                                if ( page && page.content ) {
     79                                        target.html( page.content.rendered );
     80                                } else {
     81                                        printErrorMessage();
     82                                }
     83
     84                        } ).fail( function( error ) {
     85                                if ( ! error || ! error.message ) {
     86                                        return false;
     87                                }
     88
     89                                printErrorMessage( error.message );
     90
     91                        } ).always( function() {
     92                                $( '#TB_window' ).removeClass( 'thickbox-loading' );
     93                        } );
     94
     95                } else {
     96                        $( '#top-features' ).show();
     97                        target.html( '' );
     98                        target.removeClass( 'show' );
    10799                }
    108         }, false );
     100        } );
    109101
    110102        // Init modal after the screen's loaded.
    111         if ( document.attachEvent ? document.readyState === 'complete' : document.readyState !== 'loading' ) {
    112                 bp_hello_open_modal();
    113         } else {
    114                 document.addEventListener( 'DOMContentLoaded', bp_hello_open_modal );
    115         }
    116 }());
     103        $( document ).ready( function() {
     104                bpHelloOpenModal();
     105        } );
     106
     107}( jQuery, window.bp || {} ) );
  • src/bp-core/classes/class-bp-admin.php

    diff --git src/bp-core/classes/class-bp-admin.php src/bp-core/classes/class-bp-admin.php
    index 4f0bd257a..e7ebdb436 100644
    class BP_Admin { 
    540540                if ( 0 === strpos( get_current_screen()->id, 'dashboard' ) && ! empty( $_GET['hello'] ) && $_GET['hello'] === 'buddypress' ) {
    541541                        wp_enqueue_style( 'bp-hello-css' );
    542542                        wp_enqueue_script( 'bp-hello-js' );
     543                        wp_localize_script( 'bp-hello-js', 'bpHelloStrings', array(
     544                                'pageNotFound' => __( 'Sorry, the page you requested was not found', 'buddypress' ),
     545                        ) );
    543546                }
    544547        }
    545548
    class BP_Admin { 
    617620                if ( 0 !== strpos( get_current_screen()->id, 'dashboard' ) || empty( $_GET['hello'] ) || $_GET['hello'] !== 'buddypress' ) {
    618621                        return;
    619622                }
    620         ?>
    621623
    622                 <div id="bp-hello-backdrop" style="display: none;">
    623                 </div>
     624                // Get BuddyPress stable version.
     625                $version      =  preg_replace( '/-.*/', '', bp_get_version() );
     626                $version_slug = 'version-' . str_replace( '.', '-', $version );
     627        ?>
    624628
    625                 <div id="bp-hello-container" role="dialog" aria-labelledby="bp-hello-title" style="display: none;">
    626                         <div class="bp-hello-header" role="document">
    627                                 <div class="bp-hello-close">
    628                                         <button type="button" class="close-modal button bp-tooltip" data-bp-tooltip="<?php esc_attr_e( 'Close pop-up', 'buddypress' ); ?>">
    629                                                 <span class="screen-reader-text"><?php esc_html_e( 'Close pop-up', 'buddypress' ); ?></span>
    630                                         </button>
     629                <div id="bp-hello-container">
     630                        <div id="plugin-information-scrollable">
     631                                <div id='plugin-information-title' class="with-banner">
     632                                        <div class='vignette'></div>
     633                                        <h2><?php printf( esc_html__( 'BuddyPress %s', 'buddypress' ), $version ); ?></h2>
    631634                                </div>
    632 
    633                                 <div class="bp-hello-title">
    634                                         <h1 id="bp-hello-title" tabindex="-1"><?php echo esc_html( _x( 'New in BuddyPress', 'section heading', 'buddypress' ) ); ?></h1>
     635                                <div id="plugin-information-tabs">
     636                                        <a name="whats-new" href="#whats-new" class="current"><?php esc_html_e( 'What\'s new?', 'buddypress' ); ?></a>
     637                                        <a name="changelog" href="#changelog" class="dynamic" data-slug="<?php echo esc_attr( $version_slug ); ?>" data-endpoint="https://codex.buddypress.org/wp-json/wp/v2/pages"><?php esc_html_e( 'Changelog', 'buddypress' ); ?></a>
     638                                        <a name="get-involved" href="#get-involved" class="dynamic" data-slug="participate-and-contribute" data-endpoint="https://codex.buddypress.org/wp-json/wp/v2/pages"><?php esc_html_e( 'Get involved', 'buddypress' ); ?></a>
    635639                                </div>
    636                         </div>
    637640
    638                         <div class="bp-hello-content">
    639                                 <h2><?php esc_html_e( 'New tools for data control and privacy', 'buddypress' ); ?></h2>
    640                                 <p>
    641                                         <?php esc_html_e( 'BuddyPress boasts a proud history of letting community members and managers control their data, independent of third-party, commercial entities. In this spirit, as well as the spirit of recent regulations like the EU\'s General Data Protection Regulation (GDPR), BuddyPress 4.0 introduces a suite of tools allowing users and site admins to manage member data and privacy.', 'buddypress' ); ?>
    642                                 </p>
    643 
    644                                 <figure class="bp-hello-alignright">
    645                                         <img class="bp-hello-img-border" src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/images/data-export.png' ); ?>" alt="<?php esc_attr_e( 'Screenshot of Export Data settings panel', 'buddypress' ); ?>" />
    646                                         <figcaption>
    647                                                 <?php esc_html_e( 'Improved user control over data exports', 'buddypress' ); ?>
    648                                         </figcaption>
    649                                 </figure>
    650 
    651                                 <p><?php esc_html_e( 'The new "Export Data" Settings panel lets users request an export of all BuddyPress data they\'ve created. BuddyPress integrates seamlessly with the data export functionality introduced in WordPress 4.9.8, and BP data is included in exports that are initiated either from the Export Data panel or via WP\'s Tools > Export Personal Data interface.', 'buddypress' ); ?></p>
    652 
    653                                 <p><?php esc_html_e( 'BuddyPress 4.0 also integrates with WordPress 4.9.8\'s Privacy Policy tools. When you create or update your Privacy Policy, BP will suggest text that\'s specifically tailored to the kinds of social data generated on a BuddyPress site. And will prompt registering users to agree to the Privacy Policy, if your theme supports it.', 'buddypress' ); ?></p>
    654 
    655                                 <h2><?php esc_html_e( 'Nouveau template improvements', 'buddypress' ); ?></h2>
    656                                 <p><?php esc_html_e( 'BuddyPress 3.0 introduced a new set of default templates, which we call "Nouveau". In 4.0, we\'ve fixed bugs and smoothed the edges in these templates, including more accessible markup and improved appearance on mobile devices.', 'buddypress' ); ?></p>
    657 
    658                                 <h2><?php esc_html_e( "BuddyPress: leaner, faster, stronger", 'buddypress' ); ?></h2>
    659                                 <p><?php esc_html_e( 'With every BuddyPress version, we strive to make internal improvements to performance and code quality in addition to introducing new features and fixes. In BuddyPress 4.0, we\'ve improved PHP compatibility both in our codebase and in our automated testing tools; we\'ve reworked some automated tests for faster performance; we\'ve ensured compatibility with upcoming changes in WordPress; and we\'ve fixed a number of bugs in the formatting and sending of emails.', 'buddypress' ); ?></p>
    660 
    661                                 <p><em>
    662                                         <?php
    663                                         printf(
    664                                                 __( 'To read the full list of features, fixes, and changes in this version of BuddyPress, <a href="%s">visit Trac</a>.', 'buddypress' ),
    665                                                 esc_url( 'https://buddypress.trac.wordpress.org/query?group=status&milestone=4.0' )
    666                                         );
    667                                         ?>
    668                                 </em></p>
    669 
    670                                 <h2><?php echo esc_html( _x( 'Your feedback', 'screen heading', 'buddypress' ) ); ?></h2>
    671                                 <p>
    672                                         <?php
    673                                         printf(
    674                                                 __( ' How are you using BuddyPress? Receiving your feedback and suggestions for future versions of BuddyPress genuinely motivates and encourages our contributors. Please <a href="%s">share your feedback</a> about this version of BuddyPress on our website. ', 'buddypress' ),
    675                                                 esc_url( 'https://buddypress.org/support/' )
    676                                         );
    677                                         ?>
    678                                 </p>
    679                                 <p><?php esc_html_e( 'Thank you for using BuddyPress! 😊', 'buddypress' ); ?></p>
    680 
    681                                 <br /><br />
    682                         </div>
     641                                <div class="bp-hello-content">
     642                                        <div id="dynamic-content"></div>
     643                                        <div id="top-features">
     644                                                <h2><?php esc_html_e( 'Introducing the BP REST API', 'buddypress' ); ?></h2>
     645                                                <figure class="bp-hello-alignleft">
     646                                                        <div class="dashicons dashicons-rest-api big"></div>
     647                                                </figure>
     648                                                <p>
     649                                                        <?php esc_html_e( 'BuddyPress 5.0.0 comes with REST API endpoints for members, groups, activities, users, private messages, screen notifications and extended profiles', 'buddypress' ); ?>
     650                                                        <?php esc_html_e( '(The remaining endpoints are planned to ship in our next major release).', 'buddypress' ); ?>
     651                                                </p>
     652                                                <p>
     653                                                        <?php esc_html_e( 'BuddyPress endpoints provide machine-readable external access to your WordPress site with a clear, standards-driven interface, paving the way for new and innovative methods of interacting with your community through plugins, themes, apps, and beyond.', 'buddypress' ); ?>
     654                                                        <?php printf(
     655                                                                esc_html__( 'Ready to get started with development? Check out the %s.', 'buddypress' ),
     656                                                                sprintf(
     657                                                                        '<a href="%1$s">%2$s</a>',
     658                                                                        'https://imath-buddydocs.pf1.wpserveur.net/bp-rest-api/', // @todo replace with the URL to the definitive site.
     659                                                                        esc_html__( 'BP REST API reference', 'buddypress' )
     660                                                                )
     661                                                        ); ?>
     662                                                </p>
     663
     664                                                <hr class="bp-hello-divider"/>
     665
     666                                                <h2><?php esc_html_e( 'A new UI to manage Group members.', 'buddypress' ); ?></h2>
     667                                                <p>
     668                                                        <?php esc_html_e( 'The best way to show the great powers of the BP REST API is to start using it for one of our Core features.', 'buddypress' ); ?>
     669                                                </p>
     670                                                <figure class="bp-hello-aligncenter">
     671                                                        <img src="https://cldup.com/5YjHovFxjy.png" alt="<?php esc_attr_e( 'Screenshot of the Group Members management interface in the administration and on the front-end of your site.', 'buddypress' ); ?>" />
     672                                                </figure>
     673                                                <p>
     674                                                        <?php esc_html_e( 'Whether you need to manage group members from the group screen of your WordPress Administration or from the single group management area on front-end: it\'s now more dynamic & faster in both places.', 'buddypress' ); ?>
     675                                                        <?php esc_html_e( 'Thanks to the BP REST API and JavaScript, the same UI is used in both contexts!', 'buddypress' ); ?>
     676                                                </p>
     677
     678                                                <hr class="bp-hello-divider"/>
     679
     680                                                <h2><?php esc_html_e( 'Improved Group invites and membership requests.', 'buddypress' ); ?></h2>
     681                                                <figure class="bp-hello-alignright">
     682                                                        <div class="dashicons dashicons-buddicons-groups big"></div>
     683                                                </figure>
     684                                                <p>
     685                                                        <?php esc_html_e( 'Thanks to the new BP Invitations API, Group invites and membership requests are now managed in a more consistent way.', 'buddypress' ); ?>
     686                                                </p>
     687                                                <p>
     688                                                        <?php esc_html_e( 'The BP Invitations API abstracts how these two actions are handled and allow developers to use them for any object of your site (eg: Sites of a WordPress network).', 'buddypress' ); ?>
     689                                                </p>
     690
     691                                                <hr class="bp-hello-divider"/>
     692
     693                                                <h2><?php esc_html_e( 'Help our support volunteers help you.', 'buddypress' ); ?></h2>
     694                                                <p>
     695                                                        <?php esc_html_e( 'Knowing your WordPress & BuddyPress configuration is very important when one of our beloved support volunteers tries to help you fix an issue. That\'s why we added a BuddyPress section to the Site Health Info Administration screen.', 'buddypress' ); ?>
     696                                                </p>
     697                                                <figure class="bp-hello-aligncenter">
     698                                                        <img src="https://cldup.com/tSdzjxw2RK.png" alt="<?php esc_attr_e( 'Screenshot of the BuddyPress section of the Site Health Info Administration screen.', 'buddypress' ); ?>" />
     699                                                </figure>
     700                                                <p>
     701                                                        <?php esc_html_e( 'The panel is displayed at the bottom of the screen. It includes the BuddyPress version, active components, active template pack, and a list of other component-specific settings information.', 'buddypress' ); ?>
     702                                                </p>
     703
     704                                                <hr class="bp-hello-divider"/>
     705
     706                                                <h2><?php esc_html_e( 'Improved Integrations with WordPress', 'buddypress' ); ?></h2>
     707                                                <figure class="bp-hello-aligncenter">
     708                                                        <img src="https://cldup.com/0ZByeFT35M.png" alt="<?php esc_attr_e( 'Screenshot of the BuddyPress members directory & Password control in Twenty Ninteen.', 'buddypress' ); ?>" />
     709                                                </figure>
     710
     711                                                <p>
     712                                                        <?php esc_html_e( 'First, we\'ve polished The BP Nouveau template pack\'s integration with the Twenty Nineteen WordPress theme.', 'buddypress' ); ?>
     713                                                        <?php esc_html_e( 'Second, this template pack is now using the same password control as the one used in WordPress Core.', 'buddypress' ); ?>
     714                                                </p>
     715
     716                                                <p>
     717                                                        <strong><?php esc_html_e( 'Third, we made available a new BuddyPress Blocks category in the Block Editor.', 'buddypress' ); ?></strong>
     718                                                </p>
     719                                                <figure class="bp-hello-aligncenter">
     720                                                        <img src="https://cldup.com/gtIaHT6wnQ.png" alt="<?php esc_attr_e( 'Screenshot of the BuddyPress block category.', 'buddypress' ); ?>" />
     721                                                </figure>
     722                                                <p>
     723                                                        <?php esc_html_e( 'Keeping things organized inside the block inserter is important. Having a specific BuddyPress category will help our end-users find BuddyPress blocks faster.', 'buddypress' ); ?>
     724                                                        <?php printf(
     725                                                                esc_html__( 'If you\'re a Block developer, please use this category for your BuddyPress blocks. You can read more about it in this %s.', 'buddypress' ),
     726                                                                sprintf(
     727                                                                        '<a href="%1$s">%2$s</a>',
     728                                                                        'https://bpdevel.wordpress.com/2019/07/31/a-category-to-store-your-buddypress-blocks/',
     729                                                                        esc_html__( 'development note', 'buddypress' )
     730                                                                )
     731                                                        ); ?>
     732                                                </p>
     733
     734                                                <hr class="bp-hello-divider"/>
     735
     736                                                <h2><?php echo esc_html( _x( 'Your feedback', 'screen heading', 'buddypress' ) ); ?></h2>
     737                                                <p>
     738                                                        <?php
     739                                                        printf(
     740                                                                __( ' How are you using BuddyPress? Receiving your feedback and suggestions for future versions of BuddyPress genuinely motivates and encourages our contributors. Please <a href="%s">share your feedback</a> about this version of BuddyPress on our website. ', 'buddypress' ),
     741                                                                esc_url( 'https://buddypress.org/support/' )
     742                                                        );
     743                                                        ?>
     744                                                </p>
     745                                                <p><?php esc_html_e( 'Thank you for using BuddyPress! 😊', 'buddypress' ); ?></p>
    683746
    684                         <div class="bp-hello-footer">
     747                                                <br /><br />
     748                                        </div>
     749                                </div>
     750                        </div>
     751                        <div id="plugin-information-footer">
    685752                                <div class="bp-hello-social-cta">
    686753                                        <p>
    687754                                                <?php
    688755                                                printf(
    689                                                         _n( 'Built by <a href="%s">%s volunteer</a>.', 'Built by <a href="%s">%s volunteers</a>.', 35, 'buddypress' ),
     756                                                        _n( 'Built with %1$s by <a href="%2$s">%3$d volunteer</a>.', 'Built with %1$s by <a href="%2$s">%3$d volunteers</a>.', 35, 'buddypress' ),
     757                                                        '<span class="dashicons dashicons-heart"></span>',
    690758                                                        esc_url( bp_get_admin_url( 'admin.php?page=bp-credits' ) ),
    691759                                                        number_format_i18n( 35 )
    692760                                                );
    class BP_Admin { 
    10971165                        // 3.0
    10981166                        'bp-hello-css' => array(
    10991167                                'file'         => "{$url}hello{$min}.css",
    1100                                 'dependencies' => array( 'bp-admin-common-css' ),
     1168                                'dependencies' => array( 'bp-admin-common-css', 'thickbox' ),
    11011169                        ),
    11021170                ) );
    11031171
    class BP_Admin { 
    11401208                        // 3.0
    11411209                        'bp-hello-js' => array(
    11421210                                'file'         => "{$url}hello{$min}.js",
    1143                                 'dependencies' => array(),
     1211                                'dependencies' => array( 'thickbox', 'bp-api-request' ),
    11441212                                'footer'       => true,
    11451213                        ),
    11461214                ) );