Ticket #8132: 8132.patch
| File 8132.patch, 27.1 KB (added by , 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: 9 9 1.0 - Typography and colour 10 10 2.0 - Dashicons 11 11 3.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 16 14 4.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 21 18 5.0 - Media 22 19 6.0 - Media Queries 23 20 6.1 - Desktop Medium 24 6.2 - Desktop Large25 21 ------------------------------------------------------------------------------*/ 26 22 /*------------------------------------------------------------------------------ 27 23 * 1.0 - Typography and colour … … TABLE OF CONTENTS: 32 28 --bp-hello-container-size: 15%; 33 29 } 34 30 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; 42 33 } 43 34 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; 48 37 } 49 38 50 .bp-hello-content p { 51 font-size: 16px; 39 .bp-hello-content h3 { 40 font-size: 1.1em; 41 font-weight: 500; 52 42 } 53 43 54 44 /*------------------------------------------------------------------------------ 55 45 * 2.0 - Dashicons 56 46 *----------------------------------------------------------------------------*/ 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 }76 47 77 48 .bp-hello-social li a:before { 78 49 color: #23282d; … … TABLE OF CONTENTS: 97 68 content: "\f301"; 98 69 } 99 70 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; 71 div.dashicons { 72 width: fit-content; 114 73 } 115 74 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; 75 div.dashicons.big { 76 font-size: 128px; 77 display: block; 78 color: var(--bp-hello-color-primary ); 79 height: 128px; 80 width: 128px; 125 81 } 126 82 83 /*------------------------------------------------------------------------------ 84 * 3.0 - Elements 85 *----------------------------------------------------------------------------*/ 127 86 /* 128 * 3. 2- Modal footer87 * 3.1 - Modal footer 129 88 */ 130 .bp-hello-footer {89 #plugin-information-footer { 131 90 display: flex; 132 91 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; 135 98 } 136 99 137 100 .bp-hello-social-cta, … … TABLE OF CONTENTS: 156 119 } 157 120 158 121 /* 159 * 3. 3 - Modal header122 * 3.2 - Modal content 160 123 */ 161 .bp-hello-header { 162 height: 58px; 163 max-height: 58px; 124 #bp-hello-container { 125 display: none; 164 126 } 165 127 166 /*167 * 3.4 - Modal content168 */169 128 .bp-hello-content { 170 129 padding: 0 25px; 171 height: calc(100% - 58px); 172 overflow-y: auto; 173 -webkit-overflow-scrolling: touch; 130 padding-bottom: 20px; 174 131 } 175 132 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; 185 136 } 186 137 187 # bp-hello-container{188 background-color: white;138 #dynamic-content.show { 139 display: block; 189 140 } 190 141 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; 199 146 } 200 147 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; 203 152 } 204 153 205 .bp-hello- social-cta{206 text-align: left;154 .bp-hello-aligncenter * { 155 margin: 10px auto; 207 156 } 208 157 209 .bp-hello- social-links{210 text-align: right;158 .bp-hello-alignleft { 159 float: left; 211 160 } 212 161 213 .bp-hello-social li a { 214 text-decoration: none; 162 .bp-hello-alignleft::after { 163 content: ''; 164 clear: left; 215 165 } 216 166 217 /* 218 * 4.3 - Header content 219 */ 220 .bp-hello-header { 221 padding: 6px 25px; 167 .bp-hello-alignright { 168 float: right; 222 169 } 223 170 224 .bp-hello-header h1 { 225 width: calc(100% - 51px); 171 .bp-hello-alignright::after { 172 content: ''; 173 clear: right; 226 174 } 227 175 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; 230 180 } 231 181 232 .bp-hello-title { 182 /*------------------------------------------------------------------------------ 183 * 4.0 - Content styles 184 *----------------------------------------------------------------------------*/ 185 /* 186 * 4.1 - Footer content 187 */ 188 189 .bp-hello-social-cta { 233 190 text-align: left; 234 191 } 235 192 236 .bp-hello-close { 237 position: absolute; 238 top: 20px; 239 right: 25px; 193 .bp-hello-social-links { 240 194 text-align: right; 241 195 } 242 196 197 .bp-hello-social li a { 198 text-decoration: none; 199 } 200 243 201 /* 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 245 216 */ 246 217 .bp-hello-content { 247 218 background-color: white; … … TABLE OF CONTENTS: 259 230 width: 100%; 260 231 } 261 232 233 .bp-hello-alignleft img, 234 .bp-hello-alignright img { 235 max-width: 200px; 236 } 237 262 238 /*------------------------------------------------------------------------------ 263 239 * 6.0 - Media Queries 264 240 *----------------------------------------------------------------------------*/ … … TABLE OF CONTENTS: 266 242 * 6.1 - Desktop Medium 267 243 */ 268 244 @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 }305 245 .bp-hello-content { 306 height: calc(100% - 90px); 307 padding: 0 30px; 246 padding: 0 30px 20px; 308 247 } 309 248 .bp-hello-content p { 310 249 font-size: 14px; 311 250 } 312 251 } 313 314 /**315 * 6.2 - Desktop Large316 */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
3 3 * 4 4 * @since 3.0.0 5 5 */ 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 } 29 11 30 12 /** 31 * Close modal if "X" or background is touched. 32 * 33 * @param {Event} event - A click event. 13 * Open the BuddyPress Hello modal. 34 14 */ 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; 39 18 } 40 19 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' ); 47 21 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' ); 50 28 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;' ); 63 30 }; 64 31 65 32 /** 66 * Restrict keyboard focus to elements within the BuddyPress Hello modal.33 * Prints an error message. 67 34 * 68 * @param { Event} event - A keyboard focus event.35 * @param {string} message The error message to display. 69 36 */ 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; 81 40 } 82 41 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 ); 93 49 }; 94 50 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' ); 107 99 } 108 } , false);100 } ); 109 101 110 102 // 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 { 540 540 if ( 0 === strpos( get_current_screen()->id, 'dashboard' ) && ! empty( $_GET['hello'] ) && $_GET['hello'] === 'buddypress' ) { 541 541 wp_enqueue_style( 'bp-hello-css' ); 542 542 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 ) ); 543 546 } 544 547 } 545 548 … … class BP_Admin { 617 620 if ( 0 !== strpos( get_current_screen()->id, 'dashboard' ) || empty( $_GET['hello'] ) || $_GET['hello'] !== 'buddypress' ) { 618 621 return; 619 622 } 620 ?>621 623 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 ?> 624 628 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> 631 634 </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> 635 639 </div> 636 </div>637 640 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> 683 746 684 <div class="bp-hello-footer"> 747 <br /><br /> 748 </div> 749 </div> 750 </div> 751 <div id="plugin-information-footer"> 685 752 <div class="bp-hello-social-cta"> 686 753 <p> 687 754 <?php 688 755 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>', 690 758 esc_url( bp_get_admin_url( 'admin.php?page=bp-credits' ) ), 691 759 number_format_i18n( 35 ) 692 760 ); … … class BP_Admin { 1097 1165 // 3.0 1098 1166 'bp-hello-css' => array( 1099 1167 'file' => "{$url}hello{$min}.css", 1100 'dependencies' => array( 'bp-admin-common-css' ),1168 'dependencies' => array( 'bp-admin-common-css', 'thickbox' ), 1101 1169 ), 1102 1170 ) ); 1103 1171 … … class BP_Admin { 1140 1208 // 3.0 1141 1209 'bp-hello-js' => array( 1142 1210 'file' => "{$url}hello{$min}.js", 1143 'dependencies' => array( ),1211 'dependencies' => array( 'thickbox', 'bp-api-request' ), 1144 1212 'footer' => true, 1145 1213 ), 1146 1214 ) );