diff --git a/wp-content/plugins/buddypress/bp-activity/admin/css/admin-rtl.css b/wp-content/plugins/buddypress/bp-activity/admin/css/admin-rtl.css index d2633a0ed306cd6886d46ffe47eba1b46d1f5e5e..34150bb55d19d005afc67daf924fdecad14c7292 100644 --- a/wp-content/plugins/buddypress/bp-activity/admin/css/admin-rtl.css +++ b/wp-content/plugins/buddypress/bp-activity/admin/css/admin-rtl.css @@ -97,6 +97,11 @@ width: 12%; } +ul.bp-activity-delete-list { + list-style-type: disc; + margin: 4px 26px; +} + @media screen and (max-width: 782px) { body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column) { diff --git a/wp-content/plugins/buddypress/bp-activity/admin/css/admin-rtl.min.css b/wp-content/plugins/buddypress/bp-activity/admin/css/admin-rtl.min.css index 1169cc0f99e8619e9d44a55c82d578cd9d8152da..f6a1b488048f36604bf452ca990d0859a30992ab 100644 --- a/wp-content/plugins/buddypress/bp-activity/admin/css/admin-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-activity/admin/css/admin-rtl.min.css @@ -1 +1 @@ -.akismet-status{float:left}.akismet-status a{color:#aaa;font-style:italic}.akismet-history{margin:13px}.akismet-history div{margin-bottom:13px}.akismet-history span{color:#999}#wp-bp-activities-wrap{padding:5px 0}#bp-activities{height:120px}#bp-replyhead{font-size:1em;line-height:1.4;margin:0}#bp-replysubmit{margin:0;padding:0 0 3px;text-align:center}#bp-replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center}#bp-replysubmit img.waiting{float:left;padding:4px 10px 0;vertical-align:top}#bp-activities-form .column-response img{float:right;margin-bottom:5px;margin-left:10px;margin-top:1px}.activity-errors{list-style-type:disc;margin-right:2em}#bp_activity_action div.inside,#bp_activity_content div.inside{line-height:0}#bp_activity_action h3,#bp_activity_content h3{cursor:auto}#bp_activity_action td.mceIframeContainer,#bp_activity_content td.mceIframeContainer{background-color:#fff}#post-body #bp-activities-action_resize,#post-body #bp-activities-content_resize{position:inherit;margin-top:-2px}#bp_activity_link input{width:99%}#bp-activities-primaryid{margin-bottom:1em}.column-action{width:12%}@media screen and (max-width:782px){body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}} \ No newline at end of file +.akismet-status{float:left}.akismet-status a{color:#aaa;font-style:italic}.akismet-history{margin:13px}.akismet-history div{margin-bottom:13px}.akismet-history span{color:#999}#wp-bp-activities-wrap{padding:5px 0}#bp-activities{height:120px}#bp-replyhead{font-size:1em;line-height:1.4;margin:0}#bp-replysubmit{margin:0;padding:0 0 3px;text-align:center}#bp-replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center}#bp-replysubmit img.waiting{float:left;padding:4px 10px 0;vertical-align:top}#bp-activities-form .column-response img{float:right;margin-bottom:5px;margin-left:10px;margin-top:1px}.activity-errors{list-style-type:disc;margin-right:2em}#bp_activity_action div.inside,#bp_activity_content div.inside{line-height:0}#bp_activity_action h3,#bp_activity_content h3{cursor:auto}#bp_activity_action td.mceIframeContainer,#bp_activity_content td.mceIframeContainer{background-color:#fff}#post-body #bp-activities-action_resize,#post-body #bp-activities-content_resize{position:inherit;margin-top:-2px}#bp_activity_link input{width:99%}#bp-activities-primaryid{margin-bottom:1em}.column-action{width:12%}ul.bp-activity-delete-list{list-style-type:disc;margin:4px 26px}@media screen and (max-width:782px){body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/admin/css/admin.css b/wp-content/plugins/buddypress/bp-activity/admin/css/admin.css index b68791e7eb5988ecf4218014ed6543c7fdeb6286..51d870eb200000722608407a367869176427bdd7 100644 --- a/wp-content/plugins/buddypress/bp-activity/admin/css/admin.css +++ b/wp-content/plugins/buddypress/bp-activity/admin/css/admin.css @@ -97,6 +97,11 @@ width: 12%; } +ul.bp-activity-delete-list { + list-style-type: disc; + margin: 4px 26px; +} + @media screen and (max-width: 782px) { body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column) { diff --git a/wp-content/plugins/buddypress/bp-activity/admin/css/admin.min.css b/wp-content/plugins/buddypress/bp-activity/admin/css/admin.min.css index fbe629ce81bd93217fc9d57a4a5b67e7d6f93ef0..590396bf0d2b4c13ee11e17f84b630457fb6fb9e 100644 --- a/wp-content/plugins/buddypress/bp-activity/admin/css/admin.min.css +++ b/wp-content/plugins/buddypress/bp-activity/admin/css/admin.min.css @@ -1 +1 @@ -.akismet-status{float:right}.akismet-status a{color:#aaa;font-style:italic}.akismet-history{margin:13px}.akismet-history div{margin-bottom:13px}.akismet-history span{color:#999}#wp-bp-activities-wrap{padding:5px 0}#bp-activities{height:120px}#bp-replyhead{font-size:1em;line-height:1.4;margin:0}#bp-replysubmit{margin:0;padding:0 0 3px;text-align:center}#bp-replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center}#bp-replysubmit img.waiting{float:right;padding:4px 10px 0;vertical-align:top}#bp-activities-form .column-response img{float:left;margin-bottom:5px;margin-right:10px;margin-top:1px}.activity-errors{list-style-type:disc;margin-left:2em}#bp_activity_action div.inside,#bp_activity_content div.inside{line-height:0}#bp_activity_action h3,#bp_activity_content h3{cursor:auto}#bp_activity_action td.mceIframeContainer,#bp_activity_content td.mceIframeContainer{background-color:#fff}#post-body #bp-activities-action_resize,#post-body #bp-activities-content_resize{position:inherit;margin-top:-2px}#bp_activity_link input{width:99%}#bp-activities-primaryid{margin-bottom:1em}.column-action{width:12%}@media screen and (max-width:782px){body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}} \ No newline at end of file +.akismet-status{float:right}.akismet-status a{color:#aaa;font-style:italic}.akismet-history{margin:13px}.akismet-history div{margin-bottom:13px}.akismet-history span{color:#999}#wp-bp-activities-wrap{padding:5px 0}#bp-activities{height:120px}#bp-replyhead{font-size:1em;line-height:1.4;margin:0}#bp-replysubmit{margin:0;padding:0 0 3px;text-align:center}#bp-replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center}#bp-replysubmit img.waiting{float:right;padding:4px 10px 0;vertical-align:top}#bp-activities-form .column-response img{float:left;margin-bottom:5px;margin-right:10px;margin-top:1px}.activity-errors{list-style-type:disc;margin-left:2em}#bp_activity_action div.inside,#bp_activity_content div.inside{line-height:0}#bp_activity_action h3,#bp_activity_content h3{cursor:auto}#bp_activity_action td.mceIframeContainer,#bp_activity_content td.mceIframeContainer{background-color:#fff}#post-body #bp-activities-action_resize,#post-body #bp-activities-content_resize{position:inherit;margin-top:-2px}#bp_activity_link input{width:99%}#bp-activities-primaryid{margin-bottom:1em}.column-action{width:12%}ul.bp-activity-delete-list{list-style-type:disc;margin:4px 26px}@media screen and (max-width:782px){body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-admin.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-admin.php index 47b2d5bb1976a8c42d49b72984cdbc3e3325fad1..d9672590165860f7e87914a2ba690e20b2eb0255 100644 --- a/wp-content/plugins/buddypress/bp-activity/bp-activity-admin.php +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-admin.php @@ -85,12 +85,12 @@ function bp_activity_admin_reply() { // Check that a reply has been entered. if ( empty( $_REQUEST['content'] ) ) - die( __( 'ERROR: Please type a reply.', 'buddypress' ) ); + die( __( 'Error: Please type a reply.', 'buddypress' ) ); // Check parent activity exists. $parent_activity = new BP_Activity_Activity( $parent_id ); if ( empty( $parent_activity->component ) ) - die( __( 'ERROR: The item you are trying to reply to cannot be found, or it has been deleted.', 'buddypress' ) ); + die( __( 'Error: The item you are trying to reply to cannot be found, or it has been deleted.', 'buddypress' ) ); // @todo: Check if user is allowed to create new activity items // if ( ! current_user_can( 'bp_new_activity' ) ) @@ -323,14 +323,14 @@ function bp_activity_admin_load() { do_action( 'bp_activity_admin_enqueue_scripts' ); // Handle spam/un-spam/delete of activities. - if ( !empty( $doaction ) && ! in_array( $doaction, array( '-1', 'edit', 'save', ) ) ) { + if ( ! empty( $doaction ) && ! in_array( $doaction, array( '-1', 'edit', 'save', 'delete', 'bulk_delete' ) ) ) { // Build redirection URL. $redirect_to = remove_query_arg( array( 'aid', 'deleted', 'error', 'spammed', 'unspammed', ), wp_get_referer() ); $redirect_to = add_query_arg( 'paged', $bp_activity_list_table->get_pagenum(), $redirect_to ); // Get activity IDs. - $activity_ids = array_map( 'absint', (array) $_REQUEST['aid'] ); + $activity_ids = wp_parse_id_list( $_REQUEST['aid'] ); /** * Filters list of IDs being spammed/un-spammed/deleted. @@ -349,7 +349,11 @@ function bp_activity_admin_load() { // Trim 'bulk_' off the action name to avoid duplicating a ton of code. $doaction = substr( $doaction, 5 ); - // This is a request to delete, spam, or un-spam, a single item. + // This is a request to delete single or multiple item. + } elseif ( 'do_delete' === $doaction && ! empty( $_REQUEST['aid'] ) ) { + check_admin_referer( 'bp-activities-delete' ); + + // This is a request to spam, or un-spam, a single item. } elseif ( !empty( $_REQUEST['aid'] ) ) { // Check this is a valid form submission. @@ -375,31 +379,37 @@ function bp_activity_admin_load() { } switch ( $doaction ) { - case 'delete' : - if ( 'activity_comment' == $activity->type ) - bp_activity_delete_comment( $activity->item_id, $activity->id ); - else - bp_activity_delete( array( 'id' => $activity->id ) ); - - $deleted++; + case 'do_delete' : + if ( 'activity_comment' === $activity->type ) { + $delete_result = bp_activity_delete_comment( $activity->item_id, $activity->id ); + } else { + $delete_result = bp_activity_delete( array( 'id' => $activity->id ) ); + } + + if ( ! $delete_result ) { + $errors[] = $activity->id; + } else { + $deleted++; + } break; case 'ham' : /** - * Remove moderation and blacklist checks in case we want to ham an activity + * Remove moderation and disallowed keyword checks in case we want to ham an activity * which contains one of these listed keys. */ remove_action( 'bp_activity_before_save', 'bp_activity_check_moderation_keys', 2 ); - remove_action( 'bp_activity_before_save', 'bp_activity_check_blacklist_keys', 2 ); + remove_action( 'bp_activity_before_save', 'bp_activity_check_disallowed_keys', 2 ); bp_activity_mark_as_ham( $activity ); $result = $activity->save(); // Check for any error during activity save. - if ( ! $result ) + if ( ! $result ) { $errors[] = $activity->id; - else + } else { $unspammed++; + } break; case 'spam' : @@ -407,10 +417,11 @@ function bp_activity_admin_load() { $result = $activity->save(); // Check for any error during activity save. - if ( ! $result ) + if ( ! $result ) { $errors[] = $activity->id; - else + } else { $spammed++; + } break; default: @@ -435,18 +446,22 @@ function bp_activity_admin_load() { do_action( 'bp_activity_admin_action_after', array( $spammed, $unspammed, $deleted, $errors ), $redirect_to, $activity_ids ); // Add arguments to the redirect URL so that on page reload, we can easily display what we've just done. - if ( $spammed ) + if ( $spammed ) { $redirect_to = add_query_arg( 'spammed', $spammed, $redirect_to ); + } - if ( $unspammed ) + if ( $unspammed ) { $redirect_to = add_query_arg( 'unspammed', $unspammed, $redirect_to ); + } - if ( $deleted ) + if ( $deleted ) { $redirect_to = add_query_arg( 'deleted', $deleted, $redirect_to ); + } // If an error occurred, pass back the activity ID that failed. - if ( ! empty( $errors ) ) + if ( ! empty( $errors ) ) { $redirect_to = add_query_arg( 'error', implode ( ',', array_map( 'absint', $errors ) ), $redirect_to ); + } /** * Filters redirect URL after activity spamming/un-spamming/deletion occurs. @@ -604,17 +619,100 @@ function bp_activity_admin_load() { */ function bp_activity_admin() { // Decide whether to load the index or edit screen. - $doaction = ! empty( $_REQUEST['action'] ) ? $_REQUEST['action'] : ''; + $doaction = bp_admin_list_table_current_bulk_action(); // Display the single activity edit screen. - if ( 'edit' == $doaction && ! empty( $_GET['aid'] ) ) + if ( 'edit' === $doaction && ! empty( $_GET['aid'] ) ) { bp_activity_admin_edit(); + // Display the activty delete confirmation screen. + } elseif ( in_array( $doaction, array( 'bulk_delete', 'delete' ) ) && ! empty( $_GET['aid'] ) ) { + bp_activity_admin_delete(); + // Otherwise, display the Activity index screen. - else + } else { bp_activity_admin_index(); + } +} + +/** + * Display the Activity delete confirmation screen. + * + * @since 7.0.0 + */ +function bp_activity_admin_delete() { + + if ( ! bp_current_user_can( 'bp_moderate' ) ) { + die( '-1' ); + } + + $activity_ids = isset( $_REQUEST['aid'] ) ? $_REQUEST['aid'] : 0; + + if ( ! is_array( $activity_ids ) ) { + $activity_ids = explode( ',', $activity_ids ); + } + + $activities = bp_activity_get( array( + 'in' => $activity_ids, + 'show_hidden' => true, + 'spam' => 'all', + 'display_comments' => 0, + 'per_page' => null + ) ); + + // Create a new list of activity ids, based on those that actually exist. + $aids = array(); + foreach ( $activities['activities'] as $activity ) { + $aids[] = $activity->id; + } + + $base_url = remove_query_arg( array( 'action', 'action2', 'paged', 's', '_wpnonce', 'aid' ), $_SERVER['REQUEST_URI'] ); ?> + + <div class="wrap"> + <h1 class="wp-heading-inline"><?php esc_html_e( 'Delete Activities', 'buddypress' ) ?></h1> + <hr class="wp-header-end"> + + <p><?php esc_html_e( 'You are about to delete the following activities:', 'buddypress' ) ?></p> + + <ul class="bp-activity-delete-list"> + <?php foreach ( $activities['activities'] as $activity ) : ?> + <li> + <?php + $actions = bp_activity_admin_get_activity_actions(); + + if ( isset( $actions[ $activity->type ] ) ) { + $activity_type = $actions[ $activity->type ]; + } else { + /* translators: %s: the name of the activity type */ + $activity_type = sprintf( __( 'Unregistered action - %s', 'buddypress' ), $activity->type ); + } + + printf( + /* translators: 1: activity type. 2: activity author. 3: activity date and time. */ + __( '"%1$s" activity submitted by %2$s on %3$s', 'buddypress' ), + esc_html( $activity_type ), + bp_core_get_userlink( $activity->user_id ), + sprintf( + '<a href="%1$s">%2$s</a>', + esc_url( bp_activity_get_permalink( $activity->id, $activity ) ), + date_i18n( bp_get_option( 'date_format' ), strtotime( $activity->date_recorded ) ) + ) + ); + ?> + </li> + <?php endforeach; ?> + </ul> + + <p><strong><?php esc_html_e( 'This action cannot be undone.', 'buddypress' ) ?></strong></p> + + <a class="button-primary" href="<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'action' => 'do_delete', 'aid' => implode( ',', $aids ) ), $base_url ), 'bp-activities-delete' ) ); ?>"><?php esc_html_e( 'Delete Permanently', 'buddypress' ) ?></a> + <a class="button" href="<?php echo esc_attr( $base_url ); ?>"><?php esc_html_e( 'Cancel', 'buddypress' ) ?></a> + </div> + + <?php } + /** * Display the single activity edit screen. * @@ -660,13 +758,15 @@ function bp_activity_admin_edit() { do_action_ref_array( 'bp_activity_admin_edit', array( &$activity ) ); ?> <div class="wrap"> - <h1> + <h1 class="wp-heading-inline"> <?php /* translators: %s: the activity ID */ printf( __( 'Editing Activity (ID #%s)', 'buddypress' ), number_format_i18n( (int) $_REQUEST['aid'] ) ); ?> </h1> + <hr class="wp-header-end"> + <?php if ( ! empty( $activity ) ) : ?> <form action="<?php echo esc_url( $form_url ); ?>" id="bp-activities-edit-form" method="post"> @@ -741,6 +841,10 @@ function bp_activity_admin_edit() { * @param object $item Activity item. */ function bp_activity_admin_edit_metabox_status( $item ) { + $base_url = add_query_arg( array( + 'page' => 'bp-activity', + 'aid' => $item->id + ), bp_get_admin_url( 'admin.php' ) ); ?> <div class="submitbox" id="submitcomment"> @@ -783,6 +887,10 @@ function bp_activity_admin_edit_metabox_status( $item ) { </div><!-- #minor-publishing --> <div id="major-publishing-actions"> + <div id="delete-action"> + <a class="submitdelete deletion" href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'action', 'delete', $base_url ), 'bp-activities-delete' ) ); ?>"><?php esc_html_e( 'Delete Permanently', 'buddypress' ) ?></a> + </div> + <div id="publishing-action"> <?php submit_button( __( 'Update', 'buddypress' ), 'primary', 'save', false ); ?> </div> @@ -1045,7 +1153,7 @@ function bp_activity_admin_index() { do_action( 'bp_activity_admin_index', $messages ); ?> <div class="wrap"> - <h1> + <h1 class="wp-heading-inline"> <?php if ( !empty( $_REQUEST['aid'] ) ) : ?> <?php /* translators: %s: the activity ID */ @@ -1065,9 +1173,11 @@ function bp_activity_admin_index() { <?php endif; ?> </h1> + <hr class="wp-header-end"> + <?php // If the user has just made a change to an activity item, display the status messages. ?> <?php if ( !empty( $messages ) ) : ?> - <div id="moderated" class="<?php echo ( ! empty( $_REQUEST['error'] ) ) ? 'error' : 'updated'; ?>"><p><?php echo implode( "<br/>\n", $messages ); ?></p></div> + <div id="moderated" class="<?php echo ( ! empty( $_REQUEST['error'] ) ) ? 'error' : 'updated'; ?> notice is-dismissible"><p><?php echo implode( "<br/>\n", $messages ); ?></p></div> <?php endif; ?> <?php // Display each activity on its own row. ?> diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-blocks.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-blocks.php new file mode 100644 index 0000000000000000000000000000000000000000..655362a923b5574e47b496d368c3cf750eda8d15 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-blocks.php @@ -0,0 +1,33 @@ +<?php +/** + * BP Activity Blocks Functions. + * + * @package BuddyPress + * @subpackage ActvityBlocks + * @since 7.0.0 + */ + +// Exit if accessed directly. +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +/** + * Add BP Activity blocks specific settings to the BP Blocks Editor ones. + * + * @since 7.0.0 + * + * @param array $bp_editor_settings BP blocks editor settings. + * @return array BP Activity blocks editor settings. + */ +function bp_activity_editor_settings( $bp_editor_settings = array() ) { + return array_merge( + $bp_editor_settings, + array( + 'activity' => array( + 'embedScriptURL' => includes_url( 'js/wp-embed.min.js' ), + ), + ) + ); +} +add_filter( 'bp_blocks_editor_settings', 'bp_activity_editor_settings' ); diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-embeds.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-embeds.php index 30181cc80e75ebfbd7e9143b25fe2407d9d8d297..ae69a96225c9756e498794bfbafa8eff91722ef5 100644 --- a/wp-content/plugins/buddypress/bp-activity/bp-activity-embeds.php +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-embeds.php @@ -267,7 +267,7 @@ EOD; $float_width = 350; // Set up thumb. - $content = sprintf( '<div class="thumb" style="max-width:%1$spx">%2$s<a href="%3$s" rel="nofollow" onclick="top.location.href=\'%3$s\'"><img src="%4$s" /></a></div>', $thumb_width, $play_icon, esc_url( $url ), esc_url( $thumbnail ) ); + $content = sprintf( '<div class="thumb" style="max-width:%1$spx">%2$s<a href="%3$s" rel="nofollow" onclick="top.location.href=\'%3$s\'"><img loading="lazy" src="%4$s" alt="" /></a></div>', $thumb_width, $play_icon, esc_url( $url ), esc_url( $thumbnail ) ); // Show title. if ( isset( $oembed->title ) ) { diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-filters.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-filters.php index 494143ec08cedc100a9d31dad95ad345cbb5cf73..064614a979da324ae35e956e09b7fbba827972a4 100644 --- a/wp-content/plugins/buddypress/bp-activity/bp-activity-filters.php +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-filters.php @@ -31,9 +31,7 @@ add_filter( 'bp_get_activity_feed_item_description', 'force_balance_tags' ); add_filter( 'bp_activity_content_before_save', 'force_balance_tags' ); add_filter( 'bp_activity_action_before_save', 'force_balance_tags' ); -if ( function_exists( 'wp_encode_emoji' ) ) { - add_filter( 'bp_activity_content_before_save', 'wp_encode_emoji' ); -} +add_filter( 'bp_activity_content_before_save', 'wp_encode_emoji' ); add_filter( 'bp_get_activity_action', 'wptexturize' ); add_filter( 'bp_get_activity_content_body', 'wptexturize' ); @@ -93,6 +91,9 @@ add_filter( 'bp_get_activity_latest_update', 'bp_activity_make_nofollow_ add_filter( 'bp_get_activity_latest_update_excerpt', 'bp_activity_make_nofollow_filter' ); add_filter( 'bp_get_activity_feed_item_description', 'bp_activity_make_nofollow_filter' ); +add_filter( 'bp_get_activity_content_body', 'bp_core_add_loading_lazy_attribute' ); +add_filter( 'bp_activity_comment_content', 'bp_core_add_loading_lazy_attribute' ); + add_filter( 'pre_comment_content', 'bp_activity_at_name_filter' ); add_filter( 'the_content', 'bp_activity_at_name_filter' ); add_filter( 'bp_activity_get_embed_excerpt', 'bp_activity_at_name_filter' ); @@ -117,7 +118,7 @@ add_action( 'bp_activity_before_save', 'bp_activity_at_name_filter_updates' ); // Activity stream moderation. add_action( 'bp_activity_before_save', 'bp_activity_check_moderation_keys', 2, 1 ); -add_action( 'bp_activity_before_save', 'bp_activity_check_blacklist_keys', 2, 1 ); +add_action( 'bp_activity_before_save', 'bp_activity_check_disallowed_keys', 2, 1 ); /** Functions *****************************************************************/ @@ -170,13 +171,13 @@ function bp_activity_check_moderation_keys( $activity ) { } /** - * Mark the posted activity as spam, if it contains blacklist keywords. + * Mark the posted activity as spam, if it contains disallowed keywords. * - * @since 1.6.0 + * @since 7.0.0 * * @param BP_Activity_Activity $activity The activity object to check. */ -function bp_activity_check_blacklist_keys( $activity ) { +function bp_activity_check_disallowed_keys( $activity ) { // Only check specific types of activity updates. if ( ! in_array( $activity->type, bp_activity_get_moderated_activity_types() ) ) { @@ -185,9 +186,9 @@ function bp_activity_check_blacklist_keys( $activity ) { // Send back the error so activity update fails. // @todo This is temporary until some kind of trash status is built. - $blacklist = bp_core_check_for_blacklist( $activity->user_id, '', $activity->content, 'wp_error' ); - if ( is_wp_error( $blacklist ) ) { - $activity->errors = $blacklist; + $disallowed = bp_core_check_for_disallowed_keys( $activity->user_id, '', $activity->content, 'wp_error' ); + if ( is_wp_error( $disallowed ) ) { + $activity->errors = $disallowed; // Backpat. $activity->component = false; @@ -376,17 +377,20 @@ function bp_activity_make_nofollow_filter( $text ) { } /** - * Add rel=nofollow to a link. + * Adds `rel="nofollow ugc"` to a link. * - * @since 1.2.0 + * @since 1.2.0 Adds the nofollow rel attribute. + * @since 7.0.0 Adds the ugc rel attribute. * * @param array $matches Items matched by preg_replace_callback() in bp_activity_make_nofollow_filter(). * @return string $text Link with rel=nofollow added. */ function bp_activity_make_nofollow_filter_callback( $matches ) { $text = $matches[1]; - $text = str_replace( array( ' rel="nofollow"', " rel='nofollow'"), '', $text ); - return "<a $text rel=\"nofollow\">"; + + // The WP `make_clickable()` formatting function is adding the rel="nofollow" attribute. + $text = str_replace( array( ' rel="nofollow"', " rel='nofollow'" ), '', $text ); + return "<a $text rel=\"nofollow ugc\">"; } /** diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-functions.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-functions.php index b35660869bd1d268376e04eaed8f00fb3c6ff29e..fc05f2a5a74117d5d81944452ee76da5970de412 100644 --- a/wp-content/plugins/buddypress/bp-activity/bp-activity-functions.php +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-functions.php @@ -847,7 +847,7 @@ function bp_activity_get_types() { * * The "context" is the current view type, corresponding roughly to the * current component. Use this context to determine which activity actions - * should be whitelisted for the filter dropdown. + * should be permitted in the filter dropdown. * * @since 2.8.0 * @@ -4143,7 +4143,7 @@ function bp_activity_transition_post_type_comment_status( $new_status, $old_stat bp_activity_mark_as_ham( $activity ); } - // Add "new_post_type_comment" to the whitelisted activity types, so that the activity's Akismet history is generated. + // Add "new_post_type_comment" to the allowed activity types, so that the activity's Akismet history is generated. $post_type_comment_action = $activity_comment_object->action_id; $comment_akismet_history = function ( $activity_types ) use ( $post_type_comment_action ) { $activity_types[] = $post_type_comment_action; @@ -4161,7 +4161,7 @@ function bp_activity_transition_post_type_comment_status( $new_status, $old_stat // Restore the action. add_action( 'bp_activity_before_save', 'bp_blogs_sync_activity_edit_to_post_comment', 20 ); - // Remove the "new_blog_comment" activity type whitelist so we don't break anything. + // Remove the dynamic permitting of the "new_blog_comment" activity type so we don't break anything. remove_filter( 'bp_akismet_get_activity_types', $comment_akismet_history ); } add_action( 'transition_comment_status', 'bp_activity_transition_post_type_comment_status', 10, 3 ); diff --git a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-component.php b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-component.php index af864ddcf592662380bfde3f3687ff74a7fb5b0e..d44879fd3cc8340574253658149f5fde0ea598d7 100644 --- a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-component.php +++ b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-component.php @@ -55,7 +55,8 @@ class BP_Activity_Component extends BP_Component { 'adminbar', 'template', 'functions', - 'cache' + 'cache', + 'blocks', ); // Notifications support. @@ -472,4 +473,33 @@ class BP_Activity_Component extends BP_Component { public function rest_api_init( $controllers = array() ) { parent::rest_api_init( array( 'BP_REST_Activity_Endpoint' ) ); } + + /** + * Register the BP Activity Blocks. + * + * @since 7.0.0 + * + * @param array $blocks Optional. See BP_Component::blocks_init() for + * description. + */ + public function blocks_init( $blocks = array() ) { + parent::blocks_init( + array( + 'bp/embed-activity' => array( + 'name' => 'bp/embed-activity', + 'editor_script' => 'bp-embed-activity-block', + 'editor_script_url' => plugins_url( 'js/blocks/embed-activity.js', dirname( __FILE__ ) ), + 'editor_script_deps' => array( + 'wp-blocks', + 'wp-element', + 'wp-i18n', + 'wp-components', + 'wp-block-editor', + 'wp-data', + 'wp-compose', + ), + ), + ) + ); + } } diff --git a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-list-table.php b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-list-table.php index b9f447a405859d5a67c6af0a1022748db122dbeb..e735f6445daaa97203b43eb1142624a1c4b02de2 100644 --- a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-list-table.php +++ b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-list-table.php @@ -648,23 +648,24 @@ class BP_Activity_List_Table extends WP_List_Table { // Reply - JavaScript only; implemented by AJAX. if ( 'spam' != $item_status ) { if ( $this->can_comment( $item ) ) { - $actions['reply'] = sprintf( '<a href="#" class="reply hide-if-no-js">%s</a>', __( 'Reply', 'buddypress' ) ); + $actions['reply'] = sprintf( '<a href="#" class="reply hide-if-no-js">%s</a>', esc_html__( 'Reply', 'buddypress' ) ); } else { - $actions['reply'] = sprintf( '<span class="form-input-tip">%s</span>', __( 'Replies disabled', 'buddypress' ) ); + $actions['reply'] = sprintf( '<span class="form-input-tip">%s</span>', esc_html__( 'Replies disabled', 'buddypress' ) ); } // Edit. - $actions['edit'] = sprintf( '<a href="%s">%s</a>', $edit_url, __( 'Edit', 'buddypress' ) ); + $actions['edit'] = sprintf( '<a href="%s">%s</a>', esc_url( $edit_url ), esc_html__( 'Edit', 'buddypress' ) ); } // Spam/unspam. - if ( 'spam' == $item_status ) - $actions['unspam'] = sprintf( '<a href="%s">%s</a>', $ham_url, __( 'Not Spam', 'buddypress' ) ); - else - $actions['spam'] = sprintf( '<a href="%s">%s</a>', $spam_url, __( 'Spam', 'buddypress' ) ); + if ( 'spam' == $item_status ) { + $actions['unspam'] = sprintf( '<a href="%s">%s</a>', esc_url( $ham_url ), esc_html__( 'Not Spam', 'buddypress' ) ); + } else { + $actions['spam'] = sprintf( '<a href="%s">%s</a>', esc_url( $spam_url ), esc_html__( 'Spam', 'buddypress' ) ); + } // Delete. - $actions['delete'] = sprintf( '<a href="%s" onclick="%s">%s</a>', $delete_url, "javascript:return confirm('" . esc_js( __( 'Are you sure?', 'buddypress' ) ) . "'); ", __( 'Delete Permanently', 'buddypress' ) ); + $actions['delete'] = sprintf( '<a href="%1$s">%2$s</a>', esc_url( $delete_url ), esc_html__( 'Delete Permanently', 'buddypress' ) ); // Start timestamp. echo '<div class="submitted-on">'; diff --git a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-query.php b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-query.php index 4e48264cefa77f7f5535923c9cabdb55e6a19f34..aaa2ac603153f12e335c41b477f59b8080aacc6c 100644 --- a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-query.php +++ b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-query.php @@ -229,7 +229,7 @@ class BP_Activity_Query extends BP_Recursive_Query { /** * Validates a column name parameter. * - * Column names are checked against a whitelist of known tables. + * Column names are checked against a list of known tables. * See {@link BP_Activity_Query::db_tables}. * * @since 2.2.0 diff --git a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-akismet.php b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-akismet.php index 9ce0ba1a787e5081ae6cdfb47ef847d3e29a4d27..f8c05ae243bf485677b82d222c5e31ee105739ab 100644 --- a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-akismet.php +++ b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-akismet.php @@ -562,7 +562,7 @@ class BP_Akismet { // Keys to ignore. $ignore = array( 'HTTP_COOKIE', 'HTTP_COOKIE2', 'PHP_AUTH_PW' ); - // Loop through _SERVER args and remove whitelisted keys. + // Loop through _SERVER args and remove specified keys. foreach ( $_SERVER as $key => $value ) { // Key should not be ignored. diff --git a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-rest-activity-endpoint.php b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-rest-activity-endpoint.php index 9b87d6566f5c471eb3efaf3396ceab902ae8e0d5..fe5b04c02a46f04f4ac8c93ba9bc5cbba84e039b 100644 --- a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-rest-activity-endpoint.php +++ b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-rest-activity-endpoint.php @@ -164,7 +164,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { $args['since'] = $request['after']; } - if ( isset( $request['user_id'] ) ) { + if ( ! empty( $request['user_id'] ) ) { $args['filter']['user_id'] = $request['user_id']; } @@ -173,6 +173,10 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { $args['filter']['object'] = 'groups'; $args['filter']['primary_id'] = $args['group_id']; + if ( empty( $request['component'] ) ) { + $request['component'] = 'groups'; + } + $item_id = $args['group_id']; } @@ -184,7 +188,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { } if ( empty( $args['group_id'] ) && empty( $args['site_id'] ) ) { - if ( isset( $request['component'] ) ) { + if ( ! empty( $request['component'] ) ) { $args['filter']['object'] = $request['component']; } @@ -257,7 +261,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_items_permissions_check( $request ) { @@ -266,7 +270,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_activity_get_items_permissions_check', true, $request ); @@ -321,19 +325,19 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you cannot view the activities.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( ! $this->can_see( $request ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you cannot view the activities.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( $this->can_see( $request ) ) { + $retval = true; } /** @@ -341,7 +345,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_activity_get_item_permissions_check', $retval, $request ); @@ -363,7 +367,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { 'bp_rest_create_activity_empty_content', __( 'Please, enter some content.', 'buddypress' ), array( - 'status' => 500, + 'status' => 400, ) ); } @@ -421,7 +425,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { array( 'in' => $activity_id, 'display_comments' => 'stream', - 'show_hidden' => $request['hidden'], + 'show_hidden' => true, ) ); @@ -432,6 +436,9 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { return $fields_update; } + // Update current user's last activity. + bp_update_user_last_activity(); + $retval = array( $this->prepare_response_for_collection( $this->prepare_item_for_response( $activity, $request ) @@ -460,33 +467,34 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { - $retval = true; + $error = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to create activities.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to create activities.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } + $retval = $error; - $item_id = $request['primary_item_id']; - $component = $request['component']; + if ( is_user_logged_in() ) { + $user_id = $request->get_param( 'user_id' ); - if ( true === $retval && bp_is_active( 'groups' ) && buddypress()->groups->id === $component && ! is_null( $item_id ) ) { - if ( ! $this->show_hidden( $component, $item_id ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to create activities.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( empty( $user_id ) || (int) bp_loggedin_user_id() === (int) $user_id ) { + $item_id = $request->get_param( 'primary_item_id' ); + $component = $request->get_param( 'component' ); + + // The current user can create an activity. + $retval = true; + + if ( bp_is_active( 'groups' ) && buddypress()->groups->id === $component && ! is_null( $item_id ) ) { + if ( ! $this->show_hidden( $component, $item_id ) ) { + $retval = $error; + } + } } } @@ -495,7 +503,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_activity_create_item_permissions_check', $retval, $request ); @@ -517,7 +525,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { 'bp_rest_update_activity_empty_content', __( 'Please, enter some content.', 'buddypress' ), array( - 'status' => 500, + 'status' => 400, ) ); } @@ -569,41 +577,31 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function update_item_permissions_check( $request ) { - $retval = true; - - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to update this activity.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } - - $activity = $this->get_activity_object( $request ); + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to update this activity.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( true === $retval && empty( $activity->id ) ) { - $retval = new WP_Error( - 'bp_rest_invalid_id', - __( 'Invalid activity ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } + if ( is_user_logged_in() ) { + $activity = $this->get_activity_object( $request ); - if ( true === $retval && ! bp_activity_user_can_delete( $activity ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to update this activity.', 'buddypress' ), - array( - 'status' => 500, - ) - ); + if ( empty( $activity->id ) ) { + $retval = new WP_Error( + 'bp_rest_invalid_id', + __( 'Invalid activity ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( bp_activity_user_can_delete( $activity ) ) { + $retval = true; + } } /** @@ -611,7 +609,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_activity_update_item_permissions_check', $retval, $request ); @@ -682,41 +680,31 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { - $retval = true; - - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to delete this activity.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } - - $activity = $this->get_activity_object( $request ); + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to delete this activity.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( true === $retval && empty( $activity->id ) ) { - $retval = new WP_Error( - 'bp_rest_invalid_id', - __( 'Invalid activity ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } + if ( is_user_logged_in() ) { + $activity = $this->get_activity_object( $request ); - if ( true === $retval && ! bp_activity_user_can_delete( $activity ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to delete this activity.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( empty( $activity->id ) ) { + $retval = new WP_Error( + 'bp_rest_invalid_id', + __( 'Invalid activity ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( bp_activity_user_can_delete( $activity ) ) { + $retval = true; + } } /** @@ -724,7 +712,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_activity_delete_item_permissions_check', $retval, $request ); @@ -828,19 +816,19 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function update_favorite_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to update favorites.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( ! ( is_user_logged_in() && bp_activity_can_favorite() ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to update favorites.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( is_user_logged_in() && bp_activity_can_favorite() && $this->can_see( $request ) ) { + $retval = true; } /** @@ -848,7 +836,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_activity_update_favorite_permissions_check', $retval, $request ); @@ -1035,8 +1023,8 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { } // Activity author ID. - if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) { - $prepared_activity->user_id = (int) $request['user_id']; + if ( ! empty( $activity->user_id ) ) { + $prepared_activity->user_id = (int) $activity->user_id; } else { $prepared_activity->user_id = get_current_user_id(); } @@ -1239,7 +1227,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { * @return array Endpoint arguments. */ public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { - $args = WP_REST_Controller::get_endpoint_args_for_item_schema( $method ); + $args = parent::get_endpoint_args_for_item_schema( $method ); $key = 'get_item'; if ( WP_REST_Server::CREATABLE === $method || WP_REST_Server::EDITABLE === $method ) { @@ -1298,6 +1286,7 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { 'user_id' => array( 'context' => array( 'view', 'edit' ), 'description' => __( 'The ID for the author of the activity.', 'buddypress' ), + 'readonly' => true, 'type' => 'integer', ), 'link' => array( @@ -1546,9 +1535,12 @@ class BP_REST_Activity_Endpoint extends WP_REST_Controller { $params['type'] = array( 'description' => __( 'Limit result set to items with a specific activity type.', 'buddypress' ), - 'type' => 'string', - 'enum' => array_keys( bp_activity_get_types() ), - 'sanitize_callback' => 'sanitize_key', + 'type' => 'array', + 'items' => array( + 'enum' => array_keys( bp_activity_get_types() ), + 'type' => 'string', + ), + 'sanitize_callback' => 'wp_parse_list', 'validate_callback' => 'rest_validate_request_arg', ); diff --git a/wp-content/plugins/buddypress/bp-activity/js/blocks/embed-activity.js b/wp-content/plugins/buddypress/bp-activity/js/blocks/embed-activity.js new file mode 100644 index 0000000000000000000000000000000000000000..e8686a5f7a1406d259fd9034b8273136f53f0c31 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/js/blocks/embed-activity.js @@ -0,0 +1,20 @@ +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"dEOc":[function(require,module,exports) { +function r(r){if(Array.isArray(r))return r}module.exports=r; +},{}],"RonT":[function(require,module,exports) { +function r(r,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(r)){var e=[],n=!0,o=!1,l=void 0;try{for(var i,u=r[Symbol.iterator]();!(n=(i=u.next()).done)&&(e.push(i.value),!t||e.length!==t);n=!0);}catch(a){o=!0,l=a}finally{try{n||null==u.return||u.return()}finally{if(o)throw l}}return e}}module.exports=r; +},{}],"LGpM":[function(require,module,exports) { +function n(n,r){(null==r||r>n.length)&&(r=n.length);for(var e=0,l=new Array(r);e<r;e++)l[e]=n[e];return l}module.exports=n; +},{}],"Vzqv":[function(require,module,exports) { +var r=require("./arrayLikeToArray");function t(t,e){if(t){if("string"==typeof t)return r(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(o):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?r(t,e):void 0}}module.exports=t; +},{"./arrayLikeToArray":"LGpM"}],"sa4T":[function(require,module,exports) { +function e(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}module.exports=e; +},{}],"xkYc":[function(require,module,exports) { +var r=require("./arrayWithHoles"),e=require("./iterableToArrayLimit"),t=require("./unsupportedIterableToArray"),i=require("./nonIterableRest");function u(u,a){return r(u)||e(u,a)||t(u,a)||i()}module.exports=u; +},{"./arrayWithHoles":"dEOc","./iterableToArrayLimit":"RonT","./unsupportedIterableToArray":"Vzqv","./nonIterableRest":"sa4T"}],"Sjre":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("@babel/runtime/helpers/slicedToArray"));function t(e){return e&&e.__esModule?e:{default:e}}var i=wp,r=i.element,n=r.createElement,o=r.Fragment,s=r.useState,l=i.i18n.__,a=i.components,d=a.Placeholder,u=a.Disabled,c=a.SandBox,p=a.Button,b=a.ExternalLink,m=a.Spinner,y=a.ToolbarGroup,v=a.ToolbarButton,h=i.compose.compose,f=i.data.withSelect,g=i.blockEditor,_=g.RichText,w=g.BlockControls,E=function(t){var i=t.attributes,r=t.setAttributes,a=t.isSelected,h=t.bpSettings,f=t.preview,g=t.fetching,E=i.url,k=i.caption,S=h.embedScriptURL,x=l("BuddyPress Activity URL","buddypress"),P=s(E),L=(0,e.default)(P,2),N=L[0],R=L[1],B=s(!E),T=(0,e.default)(B,2),U=T[0],A=T[1],C=n(w,null,n(y,null,n(v,{icon:"edit",title:l("Edit URL","buddypress"),onClick:function(e){e&&e.preventDefault(),A(!0)}})));return U?n(d,{icon:"buddicons-activity",label:x,className:"wp-block-embed",instructions:l("Paste the link to the activity content you want to display on your site.","buddypress")},n("form",{onSubmit:function(e){e&&e.preventDefault(),A(!1),r({url:N})}},n("input",{type:"url",value:N||"",className:"components-placeholder__input","aria-label":x,placeholder:l("Enter URL to embed here…","buddypress"),onChange:function(e){return R(e.target.value)}}),n(p,{isPrimary:!0,type:"submit"},l("Embed","buddypress"))),n("div",{className:"components-placeholder__learn-more"},n(b,{href:l("https://codex.buddypress.org/activity-embeds/")},l("Learn more about activity embeds","buddypress")))):g?n("div",{className:"wp-block-embed is-loading"},n(m,null),n("p",null,l("Embedding…","buddypress"))):f&&f.x_buddypress&&"activity"===f.x_buddypress?n(o,null,!U&&C,n("figure",{className:"wp-block-embed is-type-bp-activity"},n("div",{className:"wp-block-embed__wrapper"},n(u,null,n(c,{html:f&&f.html?f.html:"",scripts:[S]}))),(!_.isEmpty(k)||a)&&n(_,{tagName:"figcaption",placeholder:l("Write caption…","buddypress"),value:k,onChange:function(e){return r({caption:e})},inlineToolbar:!0}))):n(o,null,C,n(d,{icon:"buddicons-activity",label:x},n("p",{className:"components-placeholder__error"},l("The URL you provided is not a permalink to a public BuddyPress Activity. Please use another URL.","buddypress"))))},k=h([f(function(e,t){var i=t.attributes.url,r=e("core/editor").getEditorSettings(),n=e("core"),o=n.getEmbedPreview,s=n.isRequestingEmbedPreview,l=!!i&&o(i),a=!!i&&s(i);return{bpSettings:r.bp.activity||{},preview:l,fetching:a}})])(E),S=k;exports.default=S; +},{"@babel/runtime/helpers/slicedToArray":"xkYc"}],"zmBI":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=wp,t=e.blockEditor.RichText,a=e.element.createElement,r=function(e){var r=e.attributes,i=r.url,c=r.caption;return i?a("figure",{className:"wp-block-embed is-type-bp-activity"},a("div",{className:"wp-block-embed__wrapper"},"\n".concat(i,"\n")),!t.isEmpty(c)&&a(t.Content,{tagName:"figcaption",value:c})):null},i=r;exports.default=i; +},{}],"hBDw":[function(require,module,exports) { +"use strict";var t=i(require("./embed-activity/edit")),e=i(require("./embed-activity/save"));function i(t){return t&&t.__esModule?t:{default:t}}var s=wp,r=s.i18n.__,d=s.blocks.registerBlockType;d("bp/embed-activity",{title:r("Embed an activity","buddypress"),description:r("Add a block that displays the activity content pulled from this or other community sites.","buddypress"),icon:"buddicons-activity",category:"buddypress",attributes:{url:{type:"string"},caption:{type:"string",source:"html",selector:"figcaption"}},supports:{align:!0},edit:t.default,save:e.default}); +},{"./embed-activity/edit":"Sjre","./embed-activity/save":"zmBI"}]},{},["hBDw"], null) +//# sourceMappingURL=/bp-activity/js/blocks/embed-activity.js.map \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/js/blocks/embed-activity.js.map b/wp-content/plugins/buddypress/bp-activity/js/blocks/embed-activity.js.map new file mode 100644 index 0000000000000000000000000000000000000000..94aed9ba96c447a41b00b25969e585d4f6c5f2cf --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/js/blocks/embed-activity.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","bp-activity/js/blocks/embed-activity/edit.js","bp-activity/js/blocks/embed-activity/save.js","bp-activity/js/blocks/embed-activity.js"],"names":["editEmbedActivityBlock","wp","element","createElement","Fragment","useState","__","i18n","components","Placeholder","Disabled","SandBox","Button","ExternalLink","Spinner","ToolbarGroup","ToolbarButton","compose","withSelect","data","blockEditor","RichText","BlockControls","EditEmbedActivity","attributes","setAttributes","isSelected","bpSettings","preview","fetching","url","caption","embedScriptURL","label","value","setURL","isEditingURL","setIsEditingURL","editToolbar","event","preventDefault","target","html","isEmpty","select","ownProps","editorSettings","getEditorSettings","getEmbedPreview","isRequestingEmbedPreview","bp","activity","saveEmbedActivityBlock","registerBlockType","blocks","title","description","icon","category","type","source","selector","supports","align","edit","save"],"mappings":";AAAA,SAAA,EAAA,GACA,GAAA,MAAA,QAAA,GAAA,OAAA,EAGA,OAAA,QAAA;;ACJA,SAAA,EAAA,EAAA,GACA,GAAA,oBAAA,QAAA,OAAA,YAAA,OAAA,GAAA,CACA,IAAA,EAAA,GACA,GAAA,EACA,GAAA,EACA,OAAA,EAEA,IACA,IAAA,IAAA,EAAA,EAAA,EAAA,OAAA,cAAA,GAAA,EAAA,EAAA,QAAA,QACA,EAAA,KAAA,EAAA,QAEA,GAAA,EAAA,SAAA,GAHA,GAAA,IAKA,MAAA,GACA,GAAA,EACA,EAAA,EACA,QACA,IACA,GAAA,MAAA,EAAA,QAAA,EAAA,SACA,QACA,GAAA,EAAA,MAAA,GAIA,OAAA,GAGA,OAAA,QAAA;;AC3BA,SAAA,EAAA,EAAA,IACA,MAAA,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,QAEA,IAAA,IAAA,EAAA,EAAA,EAAA,IAAA,MAAA,GAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAAA,GAGA,OAAA,EAGA,OAAA,QAAA;;ACVA,IAAA,EAAA,QAAA,sBAEA,SAAA,EAAA,EAAA,GACA,GAAA,EAAA,CACA,GAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,GACA,IAAA,EAAA,OAAA,UAAA,SAAA,KAAA,GAAA,MAAA,GAAA,GAEA,MADA,WAAA,GAAA,EAAA,cAAA,EAAA,EAAA,YAAA,MACA,QAAA,GAAA,QAAA,EAAA,MAAA,KAAA,GACA,cAAA,GAAA,2CAAA,KAAA,GAAA,EAAA,EAAA,QAAA,GAGA,OAAA,QAAA;;ACXA,SAAA,IACA,MAAA,IAAA,UAAA,6IAGA,OAAA,QAAA;;ACJA,IAAA,EAAA,QAAA,oBAEA,EAAA,QAAA,0BAEA,EAAA,QAAA,gCAEA,EAAA,QAAA,qBAEA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,IAGA,OAAA,QAAA;;AC0KeA,aAAAA,OAAAA,eAAAA,QAAAA,aAAAA,CAAAA,OAAAA,IAAAA,QAAAA,aAAAA,EAAAA,IAAAA,EAAAA,EAAAA,QAAAA,yCAAAA,SAAAA,EAAAA,GAAAA,OAAAA,GAAAA,EAAAA,WAAAA,EAAAA,CAAAA,QAAAA,GAtJXC,IAAAA,EAAAA,GA5BHC,EAAAA,EAAAA,QACCC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,SAGAC,EADDC,EAAAA,KACCD,GAEDE,EAAAA,EAAAA,WACCC,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,cAGAC,EADDA,EAAAA,QACCA,QAGAC,EADDC,EAAAA,KACCD,WAEDE,EAAAA,EAAAA,YACCC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,cAIIC,EAAoB,SAOnB,GANNC,IAAAA,EAAAA,EAAAA,WACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,WACAC,EAAAA,EAAAA,WACAC,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,SAEQC,EAAiBN,EAAjBM,IAAKC,EAAYP,EAAZO,QACLC,EAAmBL,EAAnBK,eACFC,EAAQ3B,EAAI,0BAA2B,cACnBD,EAAAA,EAAUyB,GAJ9B,GAAA,EAAA,EAAA,SAAA,EAAA,GAIEI,EAJF,EAAA,GAISC,EAJT,EAAA,GAKoC9B,EAAAA,GAAYyB,GALhD,GAAA,EAAA,EAAA,SAAA,EAAA,GAKEM,EALF,EAAA,GAKgBC,EALhB,EAAA,GAwBAC,EACL,EAAC,EACA,KAAA,EAAC,EACA,KAAA,EAAC,EAAD,CACC,KAAK,OACL,MAAQhC,EAAI,WAAY,cACxB,QAdyB,SAAEiC,GACzBA,GACJA,EAAMC,iBAGPH,GAAiB,QAebD,OAAAA,EAEH,EAAC,EAAD,CACC,KAAK,qBACL,MAAQH,EACR,UAAU,iBACV,aAAe3B,EAAI,2EAA4E,eAE/F,EAAA,OAAA,CAAM,SArCQ,SAAEiC,GACbA,GACJA,EAAMC,iBAGPH,GAAiB,GACjBZ,EAAe,CAAEK,IAAKI,MAgCnB,EAAA,QAAA,CACC,KAAK,MACL,MAAQA,GAAS,GACjB,UAAU,gCACGD,aAAAA,EACb,YAAc3B,EAAI,2BAA4B,cAC9C,SAAW,SAAEiC,GAAWJ,OAAAA,EAAQI,EAAME,OAAOP,UAE9C,EAAC,EAAD,CAAQ,WAAR,EAAkB,KAAK,UACpB5B,EAAI,QAAS,gBAGjB,EAAA,MAAA,CAAK,UAAU,sCACd,EAAC,EAAD,CACC,KAAOA,EACN,kDAGCA,EAAI,mCAAoC,iBAO1CuB,EAEH,EAAA,MAAA,CAAK,UAAU,6BACd,EAAC,EADF,MAEC,EAAKvB,IAAAA,KAAAA,EAAI,aAAc,gBAKnBsB,GAAaA,EAAO,cAAoB,aAAeA,EAAO,aAiBpE,EAAC,EACE,MAAEQ,GAAgBE,EACpB,EAAA,SAAA,CAAQ,UAAU,sCACjB,EAAA,MAAA,CAAK,UAAU,2BACd,EAAC,EACA,KAAA,EAAC,EAAD,CACC,KAAOV,GAAWA,EAAQc,KAAOd,EAAQc,KAAO,GAChD,QAAU,CAAEV,SAITX,EAASsB,QAASZ,IAAaL,IACpC,EAAC,EAAD,CACC,QAAQ,aACR,YAAcpB,EAAI,iBAAkB,cACpC,MAAQyB,EACR,SAAW,SAAEG,GAAWT,OAAAA,EAAe,CAAEM,QAASG,KAClD,eAAa,MAhChB,EAAC,EACEI,KAAAA,EACF,EAAC,EAAD,CACC,KAAK,qBACL,MAAQL,GAER,EAAA,IAAA,CAAG,UAAU,iCACV3B,EAAI,mGAAoG,kBAiC1GN,EAAyBiB,EAAS,CACvCC,EAAY,SAAE0B,EAAQC,GACbf,IAAAA,EAAQe,EAASrB,WAAjBM,IACFgB,EAAiBF,EAAQ,eAAgBG,oBAI3CH,EAAAA,EAAQ,QAFXI,EAAAA,EAAAA,gBACAC,EAAAA,EAAAA,yBAGKrB,IAAaE,GAAOkB,EAAiBlB,GACrCD,IAAcC,GAAOmB,EAA0BnB,GAE9C,MAAA,CACNH,WAAYmB,EAAeI,GAAGC,UAAY,GAC1CvB,QAASA,EACTC,SAAUA,MAfkBZ,CAkB1BM,GAEUvB,EAAAA,EAAAA,QAAAA,QAAAA;;AClJAoD,aAAAA,OAAAA,eAAAA,QAAAA,aAAAA,CAAAA,OAAAA,IAAAA,QAAAA,aAAAA,EA1BXnD,IAAAA,EAAAA,GALFoB,EADDD,EAAAA,YACCC,SAGAlB,EADDD,EAAAA,QACCC,cAIIiD,EAAyB,SAAsB,GAAlB5B,IAAAA,EAAAA,EAAAA,WAC1BM,EAAiBN,EAAjBM,IAAKC,EAAYP,EAAZO,QAER,OAAED,EAKN,EAAA,SAAA,CAAQ,UAAU,sCACjB,EAAA,MAAA,CAAK,UAAU,2BAERA,KAAAA,OAAAA,EAFP,QAKIT,EAASsB,QAASZ,IACrB,EAAC,EAAS,QAAV,CACC,QAAQ,aACR,MAAQA,KAbJ,MAoBMqB,EAAAA,EAAAA,QAAAA,QAAAA;;AClBf,aAHA,IAAA,EAAA,EAAA,QAAA,0BACA,EAAA,EAAA,QAAA,0BAEA,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GARInD,IAAAA,EAAAA,GALFK,EADDC,EAAAA,KACCD,GAGA+C,EADDC,EAAAA,OACCD,kBAUFA,EAAmB,oBAAqB,CACvCE,MAAOjD,EAAI,oBAAqB,cAChCkD,YAAalD,EAAI,4FAA6F,cAC9GmD,KAAM,qBACNC,SAAU,aACVlC,WAAY,CACXM,IAAK,CACJ6B,KAAM,UAEP5B,QAAS,CACR4B,KAAM,SACNC,OAAQ,OACRC,SAAU,eAGZC,SAAU,CACTC,OAAO,GAERC,KAAMhE,EAlBiC,QAmBvCiE,KAAMb,EAAAA","file":"embed-activity.js","sourceRoot":"../src/js","sourcesContent":["function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","/**\n * WordPress dependencies.\n */\nconst {\n\telement: {\n\t\tcreateElement,\n\t\tFragment,\n\t\tuseState,\n\t},\n\ti18n: {\n\t\t__,\n\t},\n\tcomponents: {\n\t\tPlaceholder,\n\t\tDisabled,\n\t\tSandBox,\n\t\tButton,\n\t\tExternalLink,\n\t\tSpinner,\n\t\tToolbarGroup,\n\t\tToolbarButton,\n\t},\n\tcompose: {\n\t\tcompose,\n\t},\n\tdata: {\n\t\twithSelect,\n\t},\n\tblockEditor: {\n\t\tRichText,\n\t\tBlockControls,\n\t}\n} = wp;\n\nconst EditEmbedActivity = ( {\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tbpSettings,\n\tpreview,\n\tfetching\n} ) => {\n\tconst { url, caption } = attributes;\n\tconst { embedScriptURL } = bpSettings;\n\tconst label = __( 'BuddyPress Activity URL', 'buddypress' );\n\tconst [ value, setURL ] = useState( url );\n\tconst [ isEditingURL, setIsEditingURL ] = useState( ! url );\n\n\tconst onSubmit = ( event ) => {\n\t\tif ( event ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tsetIsEditingURL( false );\n\t\tsetAttributes( { url: value } );\n\t};\n\n\tconst switchBackToURLInput = ( event ) => {\n\t\tif ( event ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tsetIsEditingURL( true );\n\t};\n\n\tconst editToolbar = (\n\t\t<BlockControls>\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon=\"edit\"\n\t\t\t\t\ttitle={ __( 'Edit URL', 'buddypress' ) }\n\t\t\t\t\tonClick={ switchBackToURLInput }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n\n\tif ( isEditingURL ) {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\ticon=\"buddicons-activity\"\n\t\t\t\tlabel={ label }\n\t\t\t\tclassName=\"wp-block-embed\"\n\t\t\t\tinstructions={ __( 'Paste the link to the activity content you want to display on your site.', 'buddypress' ) }\n\t\t\t>\n\t\t\t\t<form onSubmit={ onSubmit }>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"url\"\n\t\t\t\t\t\tvalue={ value || '' }\n\t\t\t\t\t\tclassName=\"components-placeholder__input\"\n\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\tplaceholder={ __( 'Enter URL to embed here…', 'buddypress' ) }\n\t\t\t\t\t\tonChange={ ( event ) => setURL( event.target.value ) }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button isPrimary type=\"submit\">\n\t\t\t\t\t\t{ __( 'Embed', 'buddypress' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</form>\n\t\t\t\t<div className=\"components-placeholder__learn-more\">\n\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t'https://codex.buddypress.org/activity-embeds/'\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Learn more about activity embeds', 'buddypress' ) }\n\t\t\t\t\t</ExternalLink>\n\t\t\t\t</div>\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\tif ( fetching ) {\n\t\treturn (\n\t\t\t<div className=\"wp-block-embed is-loading\">\n\t\t\t\t<Spinner />\n\t\t\t\t<p>{ __( 'Embedding…', 'buddypress' ) }</p>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( ! preview || ! preview['x_buddypress'] || 'activity' !== preview['x_buddypress'] ) {\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t{ editToolbar }\n\t\t\t\t<Placeholder\n\t\t\t\t\ticon=\"buddicons-activity\"\n\t\t\t\t\tlabel={ label }\n\t\t\t\t>\n\t\t\t\t\t<p className=\"components-placeholder__error\">\n\t\t\t\t\t\t{ __( 'The URL you provided is not a permalink to a public BuddyPress Activity. Please use another URL.', 'buddypress' ) }\n\t\t\t\t\t</p>\n\t\t\t\t</Placeholder>\n\t\t\t</Fragment>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Fragment>\n\t\t\t{ ! isEditingURL && editToolbar }\n\t\t\t<figure className=\"wp-block-embed is-type-bp-activity\">\n\t\t\t\t<div className=\"wp-block-embed__wrapper\">\n\t\t\t\t\t<Disabled>\n\t\t\t\t\t\t<SandBox\n\t\t\t\t\t\t\thtml={ preview && preview.html ? preview.html : '' }\n\t\t\t\t\t\t\tscripts={ [ embedScriptURL ] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Disabled>\n\t\t\t\t</div>\n\t\t\t\t{ ( ! RichText.isEmpty( caption ) || isSelected ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\tplaceholder={ __( 'Write caption…', 'buddypress' ) }\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\tonChange={ ( value ) => setAttributes( { caption: value } ) }\n\t\t\t\t\t\tinlineToolbar\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</figure>\n\t\t</Fragment>\n\t);\n}\n\nconst editEmbedActivityBlock = compose( [\n\twithSelect( ( select, ownProps ) => {\n\t\tconst { url } = ownProps.attributes;\n\t\tconst editorSettings = select( 'core/editor' ).getEditorSettings();\n\t\tconst {\n\t\t\tgetEmbedPreview,\n\t\t\tisRequestingEmbedPreview,\n\t\t} = select( 'core' );\n\n\t\tconst preview = !! url && getEmbedPreview( url );\n\t\tconst fetching = !! url && isRequestingEmbedPreview( url );\n\n\t\treturn {\n\t\t\tbpSettings: editorSettings.bp.activity || {},\n\t\t\tpreview: preview,\n\t\t\tfetching: fetching,\n\t\t};\n\t} ),\n] )( EditEmbedActivity );\n\nexport default editEmbedActivityBlock;\n","/**\n * WordPress dependencies.\n */\nconst {\n\tblockEditor: {\n\t\tRichText,\n\t},\n\telement: {\n\t\tcreateElement,\n\t},\n} = wp;\n\nconst saveEmbedActivityBlock = ( { attributes } ) => {\n\tconst { url, caption } = attributes;\n\n\tif ( ! url ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<figure className=\"wp-block-embed is-type-bp-activity\">\n\t\t\t<div className=\"wp-block-embed__wrapper\">\n\t\t\t{\n\t\t\t\t`\\n${ url }\\n` /* URL needs to be on its own line. */\n\t\t\t}\n\t\t\t</div>\n\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t<RichText.Content\n\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\tvalue={ caption }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</figure>\n\t);\n};\n\nexport default saveEmbedActivityBlock;\n","/**\n * WordPress dependencies.\n */\nconst {\n\ti18n: {\n\t\t__,\n\t},\n\tblocks: {\n\t\tregisterBlockType,\n\t},\n} = wp;\n\n/**\n * Internal dependencies.\n */\nimport editEmbedActivityBlock from './embed-activity/edit';\nimport saveEmbedActivityBlock from './embed-activity/save';\n\nregisterBlockType( 'bp/embed-activity', {\n\ttitle: __( 'Embed an activity', 'buddypress' ),\n\tdescription: __( 'Add a block that displays the activity content pulled from this or other community sites.', 'buddypress' ),\n\ticon: 'buddicons-activity',\n\tcategory: 'buddypress',\n\tattributes: {\n\t\turl: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcaption: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'figcaption',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: true,\n\t},\n\tedit: editEmbedActivityBlock,\n\tsave: saveEmbedActivityBlock,\n} );\n"]} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/js/mentions.js b/wp-content/plugins/buddypress/bp-activity/js/mentions.js index 1c1126ae6da23b93aeea3977ccd017c82e23ae1a..17407faaf528ced7dca6323308d7207cbd363c5c 100644 --- a/wp-content/plugins/buddypress/bp-activity/js/mentions.js +++ b/wp-content/plugins/buddypress/bp-activity/js/mentions.js @@ -232,7 +232,7 @@ window.bp = window.bp || {}; at: '@', searchKey: 'search', - displayTpl: '<li data-value="@${ID}"><img src="${image}" /><span class="username">@${ID}</span><small>${name}</small></li>' + displayTpl: '<li data-value="@${ID}"><img src="${image}" alt="" /><span class="username">@${ID}</span><small>${name}</small></li>' }, opts = $.extend( true, {}, suggestionsDefaults, mentionsDefaults, options ); diff --git a/wp-content/plugins/buddypress/bp-activity/js/mentions.min.js b/wp-content/plugins/buddypress/bp-activity/js/mentions.min.js index 54ecc6d5059b96fe2590efbcdc36ae160ddb6c16..67bf40f760fbd9bc5eb734441412ad9dcbe450a5 100644 --- a/wp-content/plugins/buddypress/bp-activity/js/mentions.min.js +++ b/wp-content/plugins/buddypress/bp-activity/js/mentions.min.js @@ -1 +1 @@ -window.bp=window.bp||{},function(t,e,i){var n,s=[];t.mentions=t.mentions||{},t.mentions.users=window.bp.mentions.users||[],"object"==typeof window.BP_Suggestions&&(t.mentions.users=window.BP_Suggestions.friends||t.mentions.users),e.fn.bp_mentions=function(t){e.isArray(t)&&(t={data:t});var i={delay:200,hideWithoutSuffix:!0,insertTpl:"@${ID}",limit:10,startWithSpace:!1,suffix:"",callbacks:{filter:function(t,e,i){var n,s,r,o=[],a=new RegExp("^"+t+"| "+t,"ig");for(s=0,r=e.length;s<r;s++)(n=e[s])[i].toLowerCase().match(a)&&o.push(n);return o},highlighter:function(t,e){if(!e)return t;var i=new RegExp(">(\\s*|[\\w\\s]*)("+this.at.replace("+","\\+")+"?"+e.replace("+","\\+")+")([\\w ]*)\\s*<","ig");return t.replace(i,function(t,e,i,n){return">"+e+"<strong>"+i+"</strong>"+n+"<"})},before_reposition:function(t){var i,n,s,r,o=e("#atwho-ground-"+this.id+" .atwho-view"),a=e("body"),u=this.$inputor.data("atwho");"undefined"!==u&&"undefined"!==u.iframe&&null!==u.iframe?(i=this.$inputor.caret("offset",{iframe:u.iframe}),"undefined"!==(s=e(u.iframe).offset())&&(i.left+=s.left,i.top+=s.top)):i=this.$inputor.caret("offset"),i.left>a.width()/2?(o.addClass("right"),r=i.left-t.left-this.view.$el.width()):(o.removeClass("right"),r=i.left-t.left+1),a.width()<=400&&e(document).scrollTop(i.top-6),(!(n=parseInt(this.$inputor.css("line-height").substr(0,this.$inputor.css("line-height").length-2),10))||n<5)&&(n=19),t.top=i.top+n,t.left+=r},inserting_wrapper:function(t,e,i){return""+e+i}}},r={callbacks:{remoteFilter:function(t,i){var r=e(this),o={};"object"!=typeof(n=s[t])?(r.xhr&&r.xhr.abort(),o={action:"bp_get_suggestions",term:t,type:"members"},e.isNumeric(this.$inputor.data("suggestions-group-id"))&&(o["group-id"]=parseInt(this.$inputor.data("suggestions-group-id"),10)),r.xhr=e.getJSON(ajaxurl,o).done(function(n){if(n.success){var r=e.map(n.data,function(t){return t.search=t.search||t.ID+" "+t.name,t});s[t]=r,i(r)}})):i(n)}},data:e.map(t.data,function(t){return t.search=t.search||t.ID+" "+t.name,t}),at:"@",searchKey:"search",displayTpl:'<li data-value="@${ID}"><img src="${image}" /><span class="username">@${ID}</span><small>${name}</small></li>'},o=e.extend(!0,{},i,r,t);return e.fn.atwho.call(this,o)},e(document).ready(function(){e(".bp-suggestions, #comments form textarea, .wp-editor-area").bp_mentions(t.mentions.users)}),t.mentions.tinyMCEinit=function(){void 0!==window.tinyMCE&&null!==window.tinyMCE.activeEditor&&void 0!==window.tinyMCE.activeEditor&&e(window.tinyMCE.activeEditor.contentDocument.activeElement).atwho("setIframe",e(".wp-editor-wrap iframe")[0]).bp_mentions(t.mentions.users)}}(bp,jQuery); \ No newline at end of file +window.bp=window.bp||{},function(t,e,i){var n,s=[];t.mentions=t.mentions||{},t.mentions.users=window.bp.mentions.users||[],"object"==typeof window.BP_Suggestions&&(t.mentions.users=window.BP_Suggestions.friends||t.mentions.users),e.fn.bp_mentions=function(t){e.isArray(t)&&(t={data:t});var i={delay:200,hideWithoutSuffix:!0,insertTpl:"@${ID}",limit:10,startWithSpace:!1,suffix:"",callbacks:{filter:function(t,e,i){var n,s,r,o=[],a=new RegExp("^"+t+"| "+t,"ig");for(s=0,r=e.length;s<r;s++)(n=e[s])[i].toLowerCase().match(a)&&o.push(n);return o},highlighter:function(t,e){if(!e)return t;var i=new RegExp(">(\\s*|[\\w\\s]*)("+this.at.replace("+","\\+")+"?"+e.replace("+","\\+")+")([\\w ]*)\\s*<","ig");return t.replace(i,function(t,e,i,n){return">"+e+"<strong>"+i+"</strong>"+n+"<"})},before_reposition:function(t){var i,n,s,r,o=e("#atwho-ground-"+this.id+" .atwho-view"),a=e("body"),u=this.$inputor.data("atwho");"undefined"!==u&&"undefined"!==u.iframe&&null!==u.iframe?(i=this.$inputor.caret("offset",{iframe:u.iframe}),"undefined"!==(s=e(u.iframe).offset())&&(i.left+=s.left,i.top+=s.top)):i=this.$inputor.caret("offset"),i.left>a.width()/2?(o.addClass("right"),r=i.left-t.left-this.view.$el.width()):(o.removeClass("right"),r=i.left-t.left+1),a.width()<=400&&e(document).scrollTop(i.top-6),(!(n=parseInt(this.$inputor.css("line-height").substr(0,this.$inputor.css("line-height").length-2),10))||n<5)&&(n=19),t.top=i.top+n,t.left+=r},inserting_wrapper:function(t,e,i){return""+e+i}}},r={callbacks:{remoteFilter:function(t,i){var r=e(this),o={};"object"!=typeof(n=s[t])?(r.xhr&&r.xhr.abort(),o={action:"bp_get_suggestions",term:t,type:"members"},e.isNumeric(this.$inputor.data("suggestions-group-id"))&&(o["group-id"]=parseInt(this.$inputor.data("suggestions-group-id"),10)),r.xhr=e.getJSON(ajaxurl,o).done(function(n){if(n.success){var r=e.map(n.data,function(t){return t.search=t.search||t.ID+" "+t.name,t});s[t]=r,i(r)}})):i(n)}},data:e.map(t.data,function(t){return t.search=t.search||t.ID+" "+t.name,t}),at:"@",searchKey:"search",displayTpl:'<li data-value="@${ID}"><img src="${image}" alt="" /><span class="username">@${ID}</span><small>${name}</small></li>'},o=e.extend(!0,{},i,r,t);return e.fn.atwho.call(this,o)},e(document).ready(function(){e(".bp-suggestions, #comments form textarea, .wp-editor-area").bp_mentions(t.mentions.users)}),t.mentions.tinyMCEinit=function(){void 0!==window.tinyMCE&&null!==window.tinyMCE.activeEditor&&void 0!==window.tinyMCE.activeEditor&&e(window.tinyMCE.activeEditor.contentDocument.activeElement).atwho("setIframe",e(".wp-editor-wrap iframe")[0]).bp_mentions(t.mentions.users)}}(bp,jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-filters.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-filters.php index 40934e043fbf3e6cb9fd94930daba3baebc370a8..7138347b1104e80e6742375dfb4bbd5ec6e88db0 100644 --- a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-filters.php +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-filters.php @@ -136,6 +136,31 @@ function bp_blogs_register_custom_site_icon_size( $sizes ) { } add_filter( 'site_icon_image_sizes', 'bp_blogs_register_custom_site_icon_size' ); +/** + * Use the mystery blog avatar for blogs. + * + * @since 7.0.0 + * + * @param string $avatar Current avatar src. + * @param array $params Avatar params. + * @return string + */ +function bp_blogs_default_avatar( $avatar, $params ) { + if ( isset( $params['object'] ) && 'blog' === $params['object'] ) { + if ( isset( $params['type'] ) && 'thumb' === $params['type'] ) { + $file = 'mystery-blog-50.png'; + } else { + $file = 'mystery-blog.png'; + } + + $avatar = buddypress()->plugin_url . "bp-core/images/$file"; + } + + return $avatar; +} +add_filter( 'bp_core_avatar_default', 'bp_blogs_default_avatar', 10, 2 ); +add_filter( 'bp_core_avatar_default_thumb', 'bp_blogs_default_avatar', 10, 2 ); + /** * Filters the column name during blog metadata queries. * diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-functions.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-functions.php index 7170003848ddda2de277756cab859f8b5aebed9c..b27de8ac103e4658edc96d324efa96c09b4060db 100644 --- a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-functions.php +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-functions.php @@ -549,13 +549,15 @@ add_action( 'update_option_comment_moderation', 'bp_blogs_update_option_comment_ * @param int|string $new_value New value */ function bp_blogs_update_option_site_icon( $old_value, $new_value ) { + $blog_id = get_current_blog_id(); + if ( 0 === $new_value ) { - bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_thumb', 0 ); - bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_full', 0 ); + bp_blogs_update_blogmeta( $blog_id, 'site_icon_url_thumb', 0 ); + bp_blogs_update_blogmeta( $blog_id, 'site_icon_url_full', 0 ); } else { // Save site icon URL as blogmeta. - bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_thumb', get_site_icon_url( bp_core_avatar_thumb_width() ) ); - bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_full', get_site_icon_url( bp_core_avatar_full_width() ) ); + bp_blogs_update_blogmeta( $blog_id, 'site_icon_url_thumb', bp_blogs_get_site_icon_url( $blog_id, bp_core_avatar_thumb_width() ) ); + bp_blogs_update_blogmeta( $blog_id, 'site_icon_url_full', bp_blogs_get_site_icon_url( $blog_id, bp_core_avatar_full_width() ) ); } } add_action( 'update_option_site_icon', 'bp_blogs_update_option_site_icon', 10, 2 ); @@ -575,7 +577,7 @@ function bp_blogs_delete_url_blogmeta( $site_id = 0 ) { bp_blogs_delete_blogmeta( (int) $site_id, 'url' ); } -if ( function_exists( 'wp_switch_roles_and_user' ) ) { +if ( bp_is_running_wp( '4.9.0' ) ) { add_action( 'clean_site_cache', 'bp_blogs_delete_url_blogmeta' ); } else { add_action( 'refresh_blog_details', 'bp_blogs_delete_url_blogmeta' ); @@ -1476,3 +1478,139 @@ function bp_blogs_restore_data( $user_id = 0 ) { } } add_action( 'bp_make_ham_user', 'bp_blogs_restore_data', 10, 1 ); + +/** + * Checks whether blog creation is enabled. + * + * Returns true when blog creation is enabled for logged-in users only, or + * when it's enabled for new registrations. + * + * @since 1.0.0 + * @since 7.0.0 The function has been moved into `bp-blogs/bp-blogs-functions.php`. + * + * @return bool True if blog registration is enabled. + */ +function bp_blog_signup_enabled() { + $bp = buddypress(); + $retval = true; + $active_signup = 'all'; + + if ( isset( $bp->site_options['registration'] ) ) { + $active_signup = $bp->site_options['registration']; + } + + /** + * Filters whether or not blog creation is enabled. + * + * Return "all", "none", "blog" or "user". + * + * @since 1.0.0 + * + * @param string $active_signup Value of the registration site option creation status. + */ + $active_signup = apply_filters( 'wpmu_active_signup', $active_signup ); + + if ( 'none' === $active_signup || 'user' === $active_signup ) { + $retval = false; + } + + return $retval; +} + +/** + * Returns the Blog signup's submitted vars. + * + * @since 7.0.0 + * + * @return array An associative array containing the Blog signup's submitted vars. + */ +function bp_blogs_get_signup_form_submitted_vars() { + $exprected_vars = array( + 'blogname' => '', + 'blog_title' => '', + 'blog_public' => 0, + ); + + $submitted_vars = wp_parse_args( $_POST, $exprected_vars ); + + return array_map( 'wp_unslash', array_intersect_key( $submitted_vars, $exprected_vars ) ); +} + +/** + * Validate a blog creation submission. + * + * Essentially, a wrapper for {@link wpmu_validate_blog_signup()}. + * + * @since 1.0.0 + * @since 7.0.0 Add the blog_name and blog_title parameters. + * The function has been moved into `bp-blogs/bp-blogs-functions.php`. + * + * @return array Contains the new site data and error messages. + */ +function bp_blogs_validate_blog_form( $blog_name = '', $blog_title = '' ) { + $user = ''; + + if ( is_user_logged_in() ) { + $user = wp_get_current_user(); + } + + if ( ! $blog_name && ! $blog_title ) { + $submitted_vars = bp_blogs_get_signup_form_submitted_vars(); + + if ( array_filter( $submitted_vars ) ) { + $blog_name = $submitted_vars['blogname']; + $blog_title = $submitted_vars['blog_title']; + } + } + + return wpmu_validate_blog_signup( $blog_name, $blog_title, $user ); +} + +/** + * Gets the site icon URL even when BuddyPress is not network activated. + * + * @since 7.0.0 + * + * @param integer $blog_id The ID of the blog to get the site icon URL for. + * @param integer $size The size of the site icon. + * @return string The site icon URL + */ +function bp_blogs_get_site_icon_url( $blog_id = 0, $size = 512 ) { + if ( is_multisite() && ! bp_is_network_activated() && ! bp_is_root_blog( $blog_id ) ) { + $switched_blog = false; + $url = ''; + + if ( $blog_id && get_current_blog_id() !== (int) $blog_id ) { + switch_to_blog( $blog_id ); + $switched_blog = true; + } + + $site_icon_id = get_option( 'site_icon' ); + + if ( $site_icon_id ) { + $site_icon_data = wp_get_attachment_metadata( $site_icon_id ); + $sizes = wp_list_pluck( $site_icon_data['sizes'], 'width' ); + + sort( $sizes ); + $closest = 'full'; + + foreach ( $sizes as $width ) { + $closest = array( $width, $width ); + + if ( (int) $size < (int) $width ) { + break; + } + } + + $url = wp_get_attachment_image_url( $site_icon_id, $closest ); + } + + if ( $switched_blog ) { + restore_current_blog(); + } + + return $url; + } + + return get_site_icon_url( $size, '', $blog_id ); +} diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-template.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-template.php index 65e044a42497dd24c5e4dbd69f6a20d4515ba5cc..ac4dd83a73179ba5405ba5c0f9ad47367aa194b4 100644 --- a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-template.php +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-template.php @@ -298,11 +298,14 @@ function bp_blog_avatar( $args = '' ) { /** * Get a blog's avatar. * - * At the moment, blog avatars are simply the user avatars of the blog - * admin. Filter 'bp_get_blog_avatar_' . $blog_id to customize. + * At the moment, unless the blog has a site icon, the blog's avatar defaults + * to the /bp-core/images/mystery-blog.png image or the Blog's Admin user avatar + * if the `admin_user_id` argument contains the Blog's Admin user ID. * * @since 2.4.0 Introduced `$title` argument. * @since 6.0.0 Introduced the `$blog_id`, `$admin_user_id` and `html` arguments. + * @since 7.0.0 Introduced the Blog's default avatar {@see bp_blogs_default_avatar()}. + * Removed the `'bp_get_blog_avatar_' . $blog_id` filter (it was deprecated since 1.5). * * @see bp_core_fetch_avatar() For a description of arguments and * return values. @@ -333,40 +336,44 @@ function bp_blog_avatar( $args = '' ) { return false; } - // Set default values. - $author_displayname = ''; - $admin_user_id = 0; - $blog_id = 0; - - if ( ! $blogs_template && isset( $args['admin_user_id'] ) && $args['admin_user_id'] ) { - $admin_user_id = (int) $args['admin_user_id']; - $author_displayname = bp_core_get_user_displayname( $admin_user_id ); - } else { - $admin_user_id = $blogs_template->blog->admin_user_id; - $author_displayname = bp_core_get_user_displayname( $blogs_template->blog->admin_user_id ); - } + // Set default value for the `alt` attribute. + $alt_attribute = __( 'Site icon for the blog', 'buddypress' ); if ( ! $blogs_template && isset( $args['blog_id'] ) && $args['blog_id'] ) { $blog_id = (int) $args['blog_id']; } else { $blog_id = bp_get_blog_id(); + + /* translators: %s is the blog name */ + $alt_attribute = sprintf( __( 'Site icon for %s', 'buddypress' ), bp_get_blog_name() ); } // Parse the arguments. $r = bp_parse_args( $args, array( - 'type' => 'full', - 'width' => false, - 'height' => false, - 'class' => 'avatar', - 'id' => false, - 'alt' => sprintf( - /* translators: %s: the author display name */ - __( 'Profile picture of site author %s', 'buddypress' ), - esc_attr( $author_displayname ) - ), - 'no_grav' => false, - 'html' => true, - ) ); + 'item_id' => $blog_id, + 'avatar_dir' => 'blog-avatars', + 'object' => 'blog', + 'type' => 'full', + 'width' => false, + 'height' => false, + 'class' => 'avatar', + 'id' => false, + 'alt' => $alt_attribute, + 'no_grav' => false, + 'html' => true, + ), 'blog_avatar' ); + + /** + * If the `admin_user_id` was provided, make the Blog avatar + * defaults to the Blog's Admin user one. + */ + if ( isset( $r['admin_user_id'] ) && $r['admin_user_id'] ) { + $r['item_id'] = (int) $r['admin_user_id']; + $r['avatar_dir'] = 'avatars'; + $r['object'] = 'user'; + } elseif ( ! $r['no_grav'] ) { + $r['no_grav'] = true; + } // Use site icon if available. $avatar = ''; @@ -375,8 +382,6 @@ function bp_blog_avatar( $args = '' ) { // Never attempted to fetch site icon before; do it now! if ( '' === $site_icon ) { - switch_to_blog( $blog_id ); - // Fetch the other size first. if ( 'full' === $r['type'] ) { $size = bp_core_avatar_thumb_width(); @@ -386,7 +391,8 @@ function bp_blog_avatar( $args = '' ) { $save_size = 'full'; } - $site_icon = get_site_icon_url( $size ); + $site_icon = bp_blogs_get_site_icon_url( $blog_id, $size ); + // Empty site icons get saved as integer 0. if ( empty( $site_icon ) ) { $site_icon = 0; @@ -398,13 +404,11 @@ function bp_blog_avatar( $args = '' ) { // Now, fetch the size we want. if ( 0 !== $site_icon ) { $size = 'full' === $r['type'] ? bp_core_avatar_full_width() : bp_core_avatar_thumb_width(); - $site_icon = get_site_icon_url( $size ); + $site_icon = bp_blogs_get_site_icon_url( $blog_id, $size ); } // Sync site icon to blogmeta. bp_blogs_update_blogmeta( $blog_id, "site_icon_url_{$r['type']}", $site_icon ); - - restore_current_blog(); } // We have a site icon. @@ -420,12 +424,6 @@ function bp_blog_avatar( $args = '' ) { $size = (int) $r['width']; } - $alt_attribute = __( 'Site icon for the blog', 'buddypress' ); - if ( $blogs_template ) { - /* translators: %s is the placeholder for the name of the blog */ - $alt_attribute = sprintf( __( 'Site icon for %s', 'buddypress' ), bp_get_blog_name() ); - } - $avatar = sprintf( '<img src="%1$s" class="%2$s" width="%3$s" height="%3$s" alt="%4$s" />', esc_url( $site_icon ), esc_attr( "{$r['class']} avatar-{$size}" ), @@ -435,33 +433,11 @@ function bp_blog_avatar( $args = '' ) { } } - // Fallback to user ID avatar. + // Fallback to Default blog avatar. if ( '' === $avatar ) { - $avatar = bp_core_fetch_avatar( array( - 'item_id' => $admin_user_id, - // 'avatar_dir' => 'blog-avatars', - // 'object' => 'blog', - 'type' => $r['type'], - 'alt' => $r['alt'], - 'css_id' => $r['id'], - 'class' => $r['class'], - 'width' => $r['width'], - 'height' => $r['height'], - 'no_grav' => $r['no_grav'], - 'html' => $r['html'], - ) ); + $avatar = bp_core_fetch_avatar( $r ); } - /** - * In future BuddyPress versions you will be able to set the avatar for a blog. - * Right now you can use a filter with the ID of the blog to change it if you wish. - * By default it will return the avatar for the primary blog admin. - * - * This filter is deprecated as of BuddyPress 1.5 and may be removed in a future version. - * Use the 'bp_get_blog_avatar' filter instead. - */ - $avatar = apply_filters( 'bp_get_blog_avatar_' . $blog_id, $avatar ); - /** * Filters a blog's avatar. * @@ -662,7 +638,7 @@ function bp_blog_last_active( $args = array() ) { // Backwards compatibility for anyone forcing a 'true' active_format. if ( true === $r['active_format'] ) { /* translators: %s: human time diff of the last time the site was active. */ - $r['active_format'] = _x( 'active %s', 'last time the site was active', 'buddypress' ); + $r['active_format'] = _x( 'Active %s', 'last time the site was active', 'buddypress' ); } // Blog has been posted to at least once. @@ -1001,53 +977,24 @@ function bp_total_blog_count_for_user( $user_id = 0 ) { /** Blog Registration ********************************************************/ -/** - * Checks whether blog creation is enabled. - * - * Returns true when blog creation is enabled for logged-in users only, or - * when it's enabled for new registrations. - * - * @return bool True if blog registration is enabled. - */ -function bp_blog_signup_enabled() { - $bp = buddypress(); - - $active_signup = isset( $bp->site_options['registration'] ) - ? $bp->site_options['registration'] - : 'all'; - - /** - * Filters whether or not blog creation is enabled. - * - * Return "all", "none", "blog" or "user". - * - * @since 1.0.0 - * - * @param string $active_signup Value of the registration site option creation status. - */ - $active_signup = apply_filters( 'wpmu_active_signup', $active_signup ); - - if ( 'none' == $active_signup || 'user' == $active_signup ) - return false; - - return true; -} - /** * Output the wrapper markup for the blog signup form. * + * @since 1.0.0 + * * @param string $blogname Optional. The default blog name (path or domain). * @param string $blog_title Optional. The default blog title. * @param string|WP_Error $errors Optional. The WP_Error object returned by a previous * submission attempt. */ -function bp_show_blog_signup_form($blogname = '', $blog_title = '', $errors = '') { - global $current_user; +function bp_show_blog_signup_form( $blogname = '', $blog_title = '', $errors = '' ) { + $blog_id = bp_blogs_validate_blog_signup(); - if ( isset($_POST['submit']) ) { - bp_blogs_validate_blog_signup(); - } else { - if ( ! is_wp_error($errors) ) { + // Display the signup form. + if ( false === $blog_id || is_wp_error( $blog_id ) ) { + if ( is_wp_error( $blog_id ) ) { + $errors = $blog_id; + } else { $errors = new WP_Error(); } @@ -1063,17 +1010,35 @@ function bp_show_blog_signup_form($blogname = '', $blog_title = '', $errors = '' * } */ $filtered_results = apply_filters('signup_another_blog_init', array('blogname' => $blogname, 'blog_title' => $blog_title, 'errors' => $errors )); - $blogname = $filtered_results['blogname']; - $blog_title = $filtered_results['blog_title']; - $errors = $filtered_results['errors']; + $blogname = $filtered_results['blogname']; + $blog_title = $filtered_results['blog_title']; + $errors = $filtered_results['errors']; if ( $errors->get_error_code() ) { - echo "<p>" . __('There was a problem; please correct the form below and try again.', 'buddypress') . "</p>"; + if ( in_array( $errors->get_error_code(), array( 'blogname', 'blog_title' ), true ) ) { + printf( + '<p class="error">%s</p>', + esc_html__( 'There was a problem; please correct the form below and try again.', 'buddypress' ) + ); + } else { + printf( + '<p class="error">%s</p>', + $errors->get_error_message() + ); + } } + + printf( + '<p>%1$s <strong>%2$s</strong>. %3$s</p>', + esc_html__( 'By filling out the form below, you can', 'buddypress' ), + esc_html__( 'add a site to your account', 'buddypress' ), + esc_html__( 'There is no limit to the number of sites that you can have, so create to your heart’s content, but blog responsibly!', 'buddypress' ) + ); ?> - <p><?php printf(__("By filling out the form below, you can <strong>add a site to your account</strong>. There is no limit to the number of sites that you can have, so create to your heart's content, but blog responsibly!", 'buddypress'), $current_user->display_name) ?></p> - <p><?php _e("If you’re not going to use a great domain, leave it for a new user. Now have at it!", 'buddypress') ?></p> + <p> + <?php esc_html_e( 'If you’re not going to use a great domain, leave it for a new user. Now have at it!', 'buddypress' ); ?> + </p> <form class="standard-form" id="setupform" method="post" action=""> @@ -1087,81 +1052,145 @@ function bp_show_blog_signup_form($blogname = '', $blog_title = '', $errors = '' */ do_action( 'signup_hidden_fields' ); ?> - <?php bp_blogs_signup_blog($blogname, $blog_title, $errors); ?> + <?php bp_blogs_signup_blog( $blogname, $blog_title, $errors ); ?> <p> - <input id="submit" type="submit" name="submit" class="submit" value="<?php esc_attr_e('Create Site', 'buddypress') ?>" /> + <input id="submit" type="submit" name="submit" class="submit" value="<?php esc_attr_e( 'Create Site', 'buddypress' ); ?>" /> </p> <?php wp_nonce_field( 'bp_blog_signup_form' ) ?> </form> <?php + + // Display the confirmation form. + } elseif ( is_numeric( $blog_id ) ) { + // Validate the site. + $site = get_site( $blog_id ); + + if ( isset( $site->id ) && $site->id ) { + $current_user = wp_get_current_user(); + + bp_blogs_confirm_blog_signup( + $site->domain, + $site->path, + $site->blogname, + $current_user->user_login, + $current_user->user_email, + '', + $site->id + ); + } } } /** * Output the input fields for the blog creation form. * + * @since 1.0.0 + * * @param string $blogname Optional. The default blog name (path or domain). * @param string $blog_title Optional. The default blog title. * @param string|WP_Error $errors Optional. The WP_Error object returned by a previous * submission attempt. */ function bp_blogs_signup_blog( $blogname = '', $blog_title = '', $errors = '' ) { - global $current_site; - - // Blog name. - if( !is_subdomain_install() ) - echo '<label for="blogname">' . __('Site Name:', 'buddypress') . '</label>'; - else - echo '<label for="blogname">' . __('Site Domain:', 'buddypress') . '</label>'; + $current_site = get_current_site(); - if ( $errmsg = $errors->get_error_message('blogname') ) { ?> + if ( ! $blogname && ! $blog_title ) { + $submitted_vars = bp_blogs_get_signup_form_submitted_vars(); - <p class="error"><?php echo $errmsg ?></p> + if ( array_filter( $submitted_vars ) ) { + $blogname = $submitted_vars['blogname']; + $blog_title = $submitted_vars['blog_title']; + } + } + ?> - <?php } + <p> + <?php + // Blog name. + if ( ! is_subdomain_install() ) { + printf( '<label for="blogname">%s</label>', esc_html__( 'Site Name:', 'buddypress' ) ); + } else { + printf( '<label for="blogname">%s</label>', esc_html__( 'Site Domain:', 'buddypress' ) ); + } - if ( !is_subdomain_install() ) - echo '<span class="prefix_address">' . $current_site->domain . $current_site->path . '</span> <input name="blogname" type="text" id="blogname" value="'.$blogname.'" maxlength="63" /><br />'; - else - echo '<input name="blogname" type="text" id="blogname" value="'.$blogname.'" maxlength="63" ' . bp_get_form_field_attributes( 'blogname' ) . '/> <span class="suffix_address">.' . bp_signup_get_subdomain_base() . '</span><br />'; + if ( ! is_subdomain_install() ) { + printf( + '<span class="prefix_address">%1$s</span> <input name="blogname" type="text" id="blogname" value="%2$s" maxlength="63" style="width: auto!important" /><br />', + esc_html( $current_site->domain . $current_site->path ), + esc_attr( $blogname ) + ); + } else { + printf( + '<input name="blogname" type="text" id="blogname" value="%1$s" maxlength="63" style="width: auto!important" %2$s/> <span class="suffix_address">.%3$s</span><br />', + esc_attr( $blogname ), + bp_get_form_field_attributes( 'blogname' ), + bp_signup_get_subdomain_base() + ); + } + if ( is_wp_error( $errors ) && $errors->get_error_message( 'blogname' ) ) { + printf( '<div class="error">%s</div>', $errors->get_error_message( 'blogname' ) ); + } + ?> + </p> - if ( !is_user_logged_in() ) { - print '(<strong>' . __( 'Your address will be ' , 'buddypress'); + <?php + if ( ! is_user_logged_in() ) { + $url = sprintf( + /* translators: %s is the site domain and path. */ + __( 'domain.%s' , 'buddypress' ), + $current_site->domain . $current_site->path + ); - if ( !is_subdomain_install() ) { - print $current_site->domain . $current_site->path . __( 'blogname' , 'buddypress'); - } else { - print __( 'domain.' , 'buddypress') . $current_site->domain . $current_site->path; + if ( ! is_subdomain_install() ) { + $url = sprintf( + /* translators: %s is the site domain and path. */ + __( '%sblogname' , 'buddypress'), + $current_site->domain . $current_site->path + ); } - echo '.</strong> ' . __( 'Must be at least 4 characters, letters and numbers only. It cannot be changed so choose carefully!)' , 'buddypress') . '</p>'; + printf( + '<p>(<strong>%1$s.</strong> %2$s)</p>', + sprintf( + /* translators: %s is the site url. */ + esc_html__( 'Your address will be %s' , 'buddypress' ), $url + ), + esc_html__( 'Must be at least 4 characters, letters and numbers only. It cannot be changed so choose carefully!' , 'buddypress' ) + ); } // Blog Title. ?> + <p> + <label for="blog_title"><?php esc_html_e('Site Title:', 'buddypress') ?></label> + <input name="blog_title" type="text" id="blog_title" value="<?php echo esc_html( $blog_title ); ?>" /> - <label for="blog_title"><?php _e('Site Title:', 'buddypress') ?></label> + <?php + if ( is_wp_error( $errors ) && $errors->get_error_message( 'blog_title' ) ) { + printf( '<div class="error">%s</div>', $errors->get_error_message( 'blog_title' ) ); + } + ?> + </p> + + <fieldset class="create-site"> - <?php if ( $errmsg = $errors->get_error_message('blog_title') ) { ?> + <legend class="label"><?php esc_html_e( 'Privacy: I would like my site to appear in search engines, and in public listings around this network', 'buddypress' ) ?></legend> - <p class="error"><?php echo $errmsg ?></p> + <p> + <label class="checkbox" for="blog_public_on"> + <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php checked( ! isset( $_POST['blog_public'] ) || 1 === (int) $_POST['blog_public'] ); ?> /> + <strong><?php esc_html_e( 'Yes' , 'buddypress'); ?></strong> + </label> + </p> - <?php } - echo '<input name="blog_title" type="text" id="blog_title" value="'.esc_html($blog_title, 1).'" /></p>'; - ?> + <p> + <label class="checkbox" for="blog_public_off"> + <input type="radio" id="blog_public_off" name="blog_public" value="0" <?php checked( isset( $_POST['blog_public'] ) && 0 === (int) $_POST['blog_public'] ); ?> /> + <strong><?php esc_html_e( 'No' , 'buddypress'); ?></strong> + </label> + </p> - <fieldset class="create-site"> - <legend class="label"><?php _e('Privacy: I would like my site to appear in search engines, and in public listings around this network', 'buddypress') ?></legend> - - <label class="checkbox" for="blog_public_on"> - <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php if( !isset( $_POST['blog_public'] ) || '1' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> /> - <strong><?php _e( 'Yes' , 'buddypress'); ?></strong> - </label> - <label class="checkbox" for="blog_public_off"> - <input type="radio" id="blog_public_off" name="blog_public" value="0" <?php if( isset( $_POST['blog_public'] ) && '0' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> /> - <strong><?php _e( 'No' , 'buddypress'); ?></strong> - </label> </fieldset> <?php @@ -1173,7 +1202,7 @@ function bp_blogs_signup_blog( $blogname = '', $blog_title = '', $errors = '' ) * * @param WP_Error $errors WP_Error object if any present. */ - do_action('signup_blogform', $errors); + do_action( 'signup_blogform', $errors ); } /** @@ -1181,32 +1210,38 @@ function bp_blogs_signup_blog( $blogname = '', $blog_title = '', $errors = '' ) * * Passes submitted values to {@link wpmu_create_blog()}. * - * @return bool True on success, false on failure. + * @since 1.0.0 + * + * @return bool|int|WP_Error False if not a form submission, the Blog ID on success, a WP_Error object on failure. */ function bp_blogs_validate_blog_signup() { - global $wpdb, $current_user, $blogname, $blog_title, $errors, $domain, $path, $current_site; - - if ( !check_admin_referer( 'bp_blog_signup_form' ) ) + if ( ! isset( $_POST['submit'] ) ) { return false; + } + $current_site = get_current_site(); $current_user = wp_get_current_user(); + $blog_name = ''; + $blog_title = ''; + $public = 1; - if( !is_user_logged_in() ) - die(); + if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( wp_unslash( $_POST['_wpnonce'] ), 'bp_blog_signup_form' ) || ! $current_user->ID ) { + return new WP_Error( 'bp_blogs_doing_it_wrong', __( 'Sorry, we cannot create the site. Please try again later.', 'buddypress' ) ); + } - $result = bp_blogs_validate_blog_form(); - extract($result); + $submitted_vars = bp_blogs_get_signup_form_submitted_vars(); - if ( $errors->get_error_code() ) { - unset($_POST['submit']); - bp_show_blog_signup_form( $blogname, $blog_title, $errors ); - return false; + if ( array_filter( $submitted_vars ) ) { + $blog_name = $submitted_vars['blogname']; + $blog_title = $submitted_vars['blog_title']; + $public = (int) $submitted_vars['blog_public']; } - $public = (int) $_POST['blog_public']; + $blog = bp_blogs_validate_blog_form( $blog_name, $blog_title ); - // Depreciated. - $meta = apply_filters( 'signup_create_blog_meta', array( 'lang_id' => 1, 'public' => $public ) ); + if ( is_wp_error( $blog['errors'] ) && $blog['errors']->get_error_code() ) { + return $blog['errors']; + } /** * Filters the default values for Blog meta. @@ -1218,35 +1253,21 @@ function bp_blogs_validate_blog_signup() { * string $public Default public status. * } */ - $meta = apply_filters( 'add_signup_meta', $meta ); - - // If this is a subdomain install, set up the site inside the root domain. - if ( is_subdomain_install() ) - $domain = $blogname . '.' . preg_replace( '|^www\.|', '', $current_site->domain ); - - $blog_id = wpmu_create_blog( $domain, $path, $blog_title, $current_user->ID, $meta, $wpdb->siteid ); - bp_blogs_confirm_blog_signup( $domain, $path, $blog_title, $current_user->user_login, $current_user->user_email, $meta, $blog_id ); - return true; -} - -/** - * Validate a blog creation submission. - * - * Essentially, a wrapper for {@link wpmu_validate_blog_signup()}. - * - * @return array Contains the new site data and error messages. - */ -function bp_blogs_validate_blog_form() { - $user = ''; - if ( is_user_logged_in() ) - $user = wp_get_current_user(); - - return wpmu_validate_blog_signup($_POST['blogname'], $_POST['blog_title'], $user); + $meta = apply_filters( 'add_signup_meta', array( 'lang_id' => 1, 'public' => $public ) ); + + return wpmu_create_blog( + $blog['domain'], + $blog['path'], + $blog['blog_title'], + $current_user->ID, $meta, + $current_site->id + ); } /** * Display a message after successful blog registration. * + * @since 1.0.0 * @since 2.6.0 Introduced `$blog_id` parameter. * * @param string $domain The new blog's domain. @@ -1264,7 +1285,7 @@ function bp_blogs_confirm_blog_signup( $domain, $path, $blog_title, $user_name, restore_current_blog(); ?> - <p><?php _e( 'Congratulations! You have successfully registered a new site.', 'buddypress' ) ?></p> + <p class="success"><?php esc_html_e( 'Congratulations! You have successfully registered a new site.', 'buddypress' ) ?></p> <p> <?php printf( '%s %s', @@ -1289,7 +1310,7 @@ function bp_blogs_confirm_blog_signup( $domain, $path, $blog_title, $user_name, * * @since 1.0.0 */ - do_action('signup_finished'); + do_action( 'signup_finished' ); } /** diff --git a/wp-content/plugins/buddypress/bp-blogs/classes/class-bp-blogs-component.php b/wp-content/plugins/buddypress/bp-blogs/classes/class-bp-blogs-component.php index 787ce402e67fb1cb3e4f9ca2360837b2724b8844..9ad5e6d1f736dc320a41c07bb6aa3c6a332a6490 100644 --- a/wp-content/plugins/buddypress/bp-blogs/classes/class-bp-blogs-component.php +++ b/wp-content/plugins/buddypress/bp-blogs/classes/class-bp-blogs-component.php @@ -224,7 +224,7 @@ class BP_Blogs_Component extends BP_Component { sprintf( '<span class="%s">%s</span>', esc_attr( $class ), - bp_core_number_format( $count ) + esc_html( $count ) ) ); $main_nav = array( diff --git a/wp-content/plugins/buddypress/bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php b/wp-content/plugins/buddypress/bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php index ca61f66d3a0cd21dd54146a3f9a4616d080216d3..6820a4b606a1573f0a4a1c5785c67a2ac7c91738 100644 --- a/wp-content/plugins/buddypress/bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php +++ b/wp-content/plugins/buddypress/bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php @@ -83,7 +83,9 @@ class BP_REST_Attachments_Blog_Avatar_Endpoint extends WP_REST_Controller { * @return WP_REST_Response|WP_Error */ public function get_item( $request ) { - if ( empty( $this->blog->admin_user_id ) ) { + $no_user_grav = (bool) $request->get_param( 'no_user_gravatar' ); + + if ( empty( $this->blog->admin_user_id ) && ! $no_user_grav ) { return new WP_Error( 'bp_rest_blog_avatar_get_item_user_failed', __( 'There was a problem confirming the blog\'s user admin is valid.', 'buddypress' ), @@ -93,20 +95,29 @@ class BP_REST_Attachments_Blog_Avatar_Endpoint extends WP_REST_Controller { ); } - $admin_user_admin = (int) $this->blog->admin_user_id; + // Set the requested args. + $requested_args = array( + 'blog_id' => $request['id'], + 'no_grav' => $no_user_grav, + 'html' => (bool) $request['html'], + ); + + if ( $request['alt'] ) { + $requested_args['alt'] = $request['alt']; + } + + if ( ! $no_user_grav ) { + $requested_args['admin_user_id'] = (int) $this->blog->admin_user_id; + + if ( ! isset( $requested_args['alt'] ) ) { + $requested_args['alt'] = ''; + } + } $args = array(); foreach ( array( 'full', 'thumb' ) as $type ) { - $args[ $type ] = bp_get_blog_avatar( - array( - 'type' => $type, - 'blog_id' => $request['id'], - 'admin_user_id' => $admin_user_admin, - 'html' => (bool) $request['html'], - 'alt' => $request['alt'], - 'no_grav' => (bool) $request['no_user_gravatar'], - ) - ); + $requested_args['type'] = $type; + $args[ $type ] = bp_get_blog_avatar( $requested_args ); } // Get the avatar object. @@ -150,13 +161,20 @@ class BP_REST_Attachments_Blog_Avatar_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + $this->blog = $this->blogs_endpoint->get_blog_object( $request['id'] ); - if ( true === $retval && ! is_object( $this->blog ) ) { + if ( ! is_object( $this->blog ) ) { $retval = new WP_Error( 'bp_rest_blog_invalid_id', __( 'Invalid group ID.', 'buddypress' ), @@ -164,9 +182,9 @@ class BP_REST_Attachments_Blog_Avatar_Endpoint extends WP_REST_Controller { 'status' => 404, ) ); - } - - if ( true === $retval && ! buddypress()->avatar->show_avatars ) { + } elseif ( buddypress()->avatar->show_avatars ) { + $retval = true; + } else { $retval = new WP_Error( 'bp_rest_attachments_blog_avatar_disabled', __( 'Sorry, blog avatar is disabled.', 'buddypress' ), @@ -181,7 +199,7 @@ class BP_REST_Attachments_Blog_Avatar_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_blog_avatar_get_item_permissions_check', $retval, $request ); diff --git a/wp-content/plugins/buddypress/bp-blogs/classes/class-bp-rest-blogs-endpoint.php b/wp-content/plugins/buddypress/bp-blogs/classes/class-bp-rest-blogs-endpoint.php index c7b4d30ed87dd8d5599575c13006123905b0e5c3..bf7fac2e93909bcd7745f29430b8178ad6250415 100644 --- a/wp-content/plugins/buddypress/bp-blogs/classes/class-bp-rest-blogs-endpoint.php +++ b/wp-content/plugins/buddypress/bp-blogs/classes/class-bp-rest-blogs-endpoint.php @@ -44,6 +44,12 @@ class BP_REST_Blogs_Endpoint extends WP_REST_Controller { 'permission_callback' => array( $this, 'get_items_permissions_check' ), 'args' => $this->get_collection_params(), ), + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => array( $this, 'create_item' ), + 'permission_callback' => array( $this, 'create_item_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ), + ), 'schema' => array( $this, 'get_item_schema' ), ) ); @@ -111,14 +117,14 @@ class BP_REST_Blogs_Endpoint extends WP_REST_Controller { } // Check if user is valid. - if ( 0 !== $request['user_id'] ) { - $user = get_user_by( 'id', $request['user_id'] ); + if ( 0 !== absint( $args['user_id'] ) ) { + $user = get_user_by( 'id', absint( $args['user_id'] ) ); if ( ! $user instanceof WP_User ) { return new WP_Error( 'bp_rest_blogs_get_items_user_failed', __( 'There was a problem confirming if user ID provided is a valid one.', 'buddypress' ), array( - 'status' => 500, + 'status' => 404, ) ); } @@ -157,7 +163,7 @@ class BP_REST_Blogs_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function get_items_permissions_check( $request ) { @@ -166,7 +172,7 @@ class BP_REST_Blogs_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_blogs_get_items_permissions_check', true, $request ); @@ -181,7 +187,7 @@ class BP_REST_Blogs_Endpoint extends WP_REST_Controller { * @return WP_REST_Response|WP_Error */ public function get_item( $request ) { - $blog = $this->get_blog_object( $request['id'] ); + $blog = $this->get_blog_object( $request->get_param( 'id' ) ); if ( empty( $blog->blog_id ) || empty( $blog->admin_user_id ) ) { return new WP_Error( @@ -221,7 +227,7 @@ class BP_REST_Blogs_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { @@ -230,12 +236,163 @@ class BP_REST_Blogs_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_blogs_get_item_permissions_check', true, $request ); } + /** + * Create a new blog. + * + * @since 7.0.0 + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error + */ + public function create_item( $request ) { + $request->set_param( 'context', 'edit' ); + + // Get WP_User object. + $user = bp_rest_get_user( $request->get_param( 'user_id' ) ); + + // Validate blog signup. + $blog_meta = wpmu_validate_blog_signup( + $request->get_param( 'name' ), + $request->get_param( 'title' ), + $user + ); + + // Check if validation failed. + if ( is_wp_error( $blog_meta['errors'] ) && ! empty( $blog_meta['errors']->errors ) ) { + return new WP_Error( + 'bp_rest_blog_validation_failed', + $blog_meta['errors']->get_error_message(), + array( + 'status' => 500, + ) + ); + } + + $site_id = $request->get_param( 'site_id' ); + $meta = $request->get_param( 'meta' ); + + // Assign blog meta. + if ( empty( $meta['public'] ) ) { + $meta['public'] = 1; + } + + if ( empty( $meta['lang_id'] ) ) { + $meta['lang_id'] = 1; + } + + /** + * Filter the meta arguments for the new Blog. + * + * @since 7.0.0 + * + * @param array $args Key value array of query var to query value. + * @param WP_REST_Request $request The request sent to the API. + */ + $meta = apply_filters( 'bp_rest_blogs_create_item_meta', $meta, $request ); + + // Create blog. + $blog_id = wpmu_create_blog( + $blog_meta['domain'], + $blog_meta['path'], + $blog_meta['blog_title'], + $user->ID, + $meta, + $site_id + ); + + // If something went wrong, bail it. + if ( is_wp_error( $blog_id ) ) { + return new WP_Error( + 'bp_rest_blogs_create_error', + __( 'There was a problem creating blog.', 'buddypress' ), + array( + 'status' => 500, + ) + ); + } + + $blog = $this->get_blog_object( $blog_id ); + + if ( empty( $blog->blog_id ) || empty( $blog->admin_user_id ) ) { + return new WP_Error( + 'bp_rest_blog_invalid_id', + __( 'Invalid blog ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } + + $retval = array( + $this->prepare_response_for_collection( + $this->prepare_item_for_response( $blog, $request ) + ), + ); + + $response = rest_ensure_response( $retval ); + + /** + * Fires after a blog is created via the REST API. + * + * @since 7.0.0 + * + * @param stdClass $blog Created blog. + * @param WP_REST_Response $response The response data. + * @param WP_REST_Request $request The request sent to the API. + */ + do_action( 'bp_rest_blogs_create_item', $blog, $response, $request ); + + return $response; + } + + /** + * Check if a given request has access to create a blog. + * + * @since 7.0.0 + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error + */ + public function create_item_permissions_check( $request ) { + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + + if ( is_user_logged_in() ) { + if ( true === bp_blog_signup_enabled() ) { + $retval = true; + } else { + $retval = new WP_Error( + 'bp_rest_blogs_signup_disabled', + __( 'Sorry, blog creation is disabled.', 'buddypress' ), + array( + 'status' => 500, + ) + ); + } + } + + /** + * Filter the blogs `create_item` permissions check. + * + * @since 7.0.0 + * + * @param true|WP_Error $retval Returned value. + * @param WP_REST_Request $request The request sent to the API. + */ + return apply_filters( 'bp_rest_blogs_create_item_permissions_check', $retval, $request ); + } + /** * Prepares blogs data for return as an object. * @@ -280,11 +437,11 @@ class BP_REST_Blogs_Endpoint extends WP_REST_Controller { ); } - $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; - $data = $this->add_additional_fields_to_object( $data, $request ); - $data = $this->filter_response_by_context( $data, $context ); - + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); $response = rest_ensure_response( $data ); + $response->add_links( $this->prepare_links( $blog ) ); /** @@ -383,6 +540,78 @@ class BP_REST_Blogs_Endpoint extends WP_REST_Controller { return 0; } + /** + * Edit the type of the some properties for the CREATABLE method. + * + * @since 7.0.0 + * + * @param string $method Optional. HTTP method of the request. + * @return array Endpoint arguments. + */ + public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { + $args = parent::get_endpoint_args_for_item_schema( $method ); + $key = 'get_item'; + + if ( WP_REST_Server::CREATABLE === $method ) { + $key = 'create_item'; + + unset( $args['last_activity'] ); + + $args['name'] = array( + 'required' => true, + 'description' => __( 'The new site\'s name (used for the site URL).', 'buddypress' ), + 'type' => 'string', + 'sanitize_callback' => 'sanitize_key', + 'validate_callback' => 'rest_validate_request_arg', + ); + + $args['title'] = array( + 'required' => true, + 'description' => __( 'The new site\'s title.', 'buddypress' ), + 'type' => 'string', + 'sanitize_callback' => 'sanitize_text_field', + 'validate_callback' => 'rest_validate_request_arg', + ); + + $args['site_id'] = array( + 'required' => false, + 'default' => get_current_network_id(), + 'description' => __( 'The new site\'s network ID. (Only relevant on multi-network installations)', 'buddypress' ), + 'type' => 'integer', + 'sanitize_callback' => 'absint', + 'validate_callback' => 'rest_validate_request_arg', + ); + + $args['user_id'] = array( + 'required' => false, + 'default' => bp_loggedin_user_id(), + 'description' => __( 'The user ID of the new site\'s admin.', 'buddypress' ), + 'type' => 'integer', + 'sanitize_callback' => 'absint', + 'validate_callback' => 'rest_validate_request_arg', + ); + + $args['meta'] = array( + 'required' => false, + 'description' => __( 'Set initial Blog options.', 'buddypress' ), + 'default' => array(), + 'type' => 'array', + 'items' => array( 'type' => 'string' ), + 'validate_callback' => 'rest_validate_request_arg', + ); + } + + /** + * Filters the method query arguments. + * + * @since 7.0.0 + * + * @param array $args Query arguments. + * @param string $method HTTP method of the request. + */ + return apply_filters( "bp_rest_blogs_{$key}_query_arguments", $args, $method ); + } + /** * Get the blogs schema, conforming to JSON Schema. * diff --git a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-components.php b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-components.php index 5ba7d1d56d7d2407f2180a8b640ba56bd662dcbf..cfa8102647c5bdfca891ac1db77fc8d3ec1b5f14 100644 --- a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-components.php +++ b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-components.php @@ -21,7 +21,8 @@ function bp_core_admin_components_settings() { <div class="wrap"> - <h1><?php _e( 'BuddyPress Settings', 'buddypress' ); ?> </h1> + <h1 class="wp-heading-inline"><?php _e( 'BuddyPress Settings', 'buddypress' ); ?> </h1> + <hr class="wp-header-end"> <h2 class="nav-tab-wrapper"><?php bp_core_admin_tabs( __( 'Components', 'buddypress' ) ); ?></h2> <form action="" method="post" id="bp-admin-component-form"> diff --git a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-functions.php b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-functions.php index 5bb10b6565d89cac59539ae88748024ce5469459..c9a5259e964329109702ed35aac79e80c37ae0bf 100644 --- a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-functions.php +++ b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-functions.php @@ -102,9 +102,10 @@ function bp_core_admin_backpat_page() { $settings_url = add_query_arg( 'page', 'bp-components', $url ); ?> <div class="wrap"> - <h2><?php _e( 'Why have all my BuddyPress menus disappeared?', 'buddypress' ); ?></h2> + <h1 class="wp-heading-inline"><?php esc_html_e( 'Why have all my BuddyPress menus disappeared?', 'buddypress' ); ?></h1> + <hr class="wp-header-end"> - <p><?php _e( "Don't worry! We've moved the BuddyPress options into more convenient and easier to find locations. You're seeing this page because you are running a legacy BuddyPress plugin which has not been updated.", 'buddypress' ); ?></p> + <p><?php esc_html_e( "Don't worry! We've moved the BuddyPress options into more convenient and easier to find locations. You're seeing this page because you are running a legacy BuddyPress plugin which has not been updated.", 'buddypress' ); ?></p> <p> <?php printf( @@ -151,7 +152,7 @@ function bp_core_print_admin_notices() { foreach ( $notice_types as $type ) { $notices = wp_list_filter( buddypress()->admin->notices, array( 'type' => $type ) ); - printf( '<div id="message" class="fade %s">', sanitize_html_class( $type ) ); + printf( '<div id="message" class="fade %s notice is-dismissible">', sanitize_html_class( $type ) ); foreach ( $notices as $notice ) { printf( '<p>%s</p>', $notice['message'] ); @@ -755,96 +756,167 @@ function bp_admin_wp_nav_menu_meta_box() { return; } - add_meta_box( 'add-buddypress-nav-menu', __( 'BuddyPress', 'buddypress' ), 'bp_admin_do_wp_nav_menu_meta_box', 'nav-menus', 'side', 'default' ); + add_meta_box( 'add-buddypress-nav-menu', __( 'BuddyPress Member', 'buddypress' ), 'bp_admin_do_wp_nav_menu_meta_box', 'nav-menus', 'side', 'default' ); add_action( 'admin_print_footer_scripts', 'bp_admin_wp_nav_menu_restrict_items' ); } +/** + * BP Member nav menu filter to short-circuit WP's query. + * + * @since 7.0.0 + * + * @param null $null A null value. + * @param WP_Query $wp_query The WP_Query instance (passed by reference). + * @return array The BP Member nav items to short-circuit WP's query, + */ +function bp_admin_get_wp_nav_menu_items( $null, $wp_query ) { + if ( isset( $wp_query->query['orderby'], $wp_query->query['order'] ) && 'post_date' === $wp_query->query['orderby'] && 'DESC' === $wp_query->query['order'] ) { + return bp_nav_menu_get_loggedin_pages(); + } elseif ( isset( $wp_query->query['nopaging'] ) && true === $wp_query->query['nopaging'] ) { + return array_merge( bp_nav_menu_get_loggedin_pages(), bp_nav_menu_get_loggedout_pages() ); + } + + return bp_nav_menu_get_loggedout_pages(); +} + /** * Build and populate the BuddyPress accordion on Appearance > Menus. * * @since 1.9.0 + * @since 7.0.0 Uses wp_nav_menu_item_post_type_meta_box() * * @global $nav_menu_selected_id */ -function bp_admin_do_wp_nav_menu_meta_box() { +function bp_admin_do_wp_nav_menu_meta_box( $object = '', $box = array() ) { global $nav_menu_selected_id; - $walker = new BP_Walker_Nav_Menu_Checklist( false ); - $args = array( 'walker' => $walker ); + $box['args'] = (object) array( + 'name' => 'bp_nav_menu_item', + '_default_query' => array(), + ); - $post_type_name = 'buddypress'; + // Temporarly register a post type. + register_post_type( + 'bp_nav_menu_item', + array( + 'label' => 'BuddyPress', + 'labels' => array( + 'search_items' => __( 'Search BuddyPress member menu items', 'buddypress' ), + 'all_items' => __( 'All BuddyPress Member menu items', 'buddypress' ), + ), + 'public' => true, + 'hierarchical' => false, + 'has_archive' => false, + 'rewrite' => false, + ) + ); - $tabs = array(); + // Temporarly override the posts query results. + add_filter( 'posts_pre_query', 'bp_admin_get_wp_nav_menu_items', 10, 2 ); - $tabs['loggedin']['label'] = __( 'Logged-In', 'buddypress' ); - $tabs['loggedin']['pages'] = bp_nav_menu_get_loggedin_pages(); + ob_start(); + wp_nav_menu_item_post_type_meta_box( 'buddypress', $box ); + $output = ob_get_clean(); - $tabs['loggedout']['label'] = __( 'Logged-Out', 'buddypress' ); - $tabs['loggedout']['pages'] = bp_nav_menu_get_loggedout_pages(); + $get_bp_items = new WP_Query; + $all_bp_items = $get_bp_items->query( array( 'nopaging' => true ) ); + $walker = new Walker_Nav_Menu_Checklist(); + $all_bp_tabs = sprintf( + '<div id="bp_nav_menu_item-all" class="tabs-panel tabs-panel-view-all tabs-panel-inactive" role="region" aria-label="%1$s" tabindex="0"> + <ul id="bp_nav_menu_itemchecklist" data-wp-lists="list:bp_nav_menu_item" class="categorychecklist form-no-clear"> + %2$s + </ul> + </div>', + esc_html__( 'All BuddyPress Member menu items', 'buddypress' ), + walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $all_bp_items ), 0, (object) array( 'walker' => $walker ) ) + ); - ?> + // Remove temporary post type and filter. + unregister_post_type( 'bp_nav_menu_item' ); + remove_filter( 'posts_pre_query', 'bp_admin_get_wp_nav_menu_items', 10, 2 ); - <div id="buddypress-menu" class="posttypediv"> - <h4><?php _e( 'Logged-In', 'buddypress' ); ?></h4> - <p><?php _e( '<em>Logged-In</em> links are relative to the current user, and are not visible to visitors who are not logged in.', 'buddypress' ); ?></p> + $tab_name = 'bp_nav_menu_item-tab'; + $current_tab = 'logged-in'; + $tabs = array( + 'logged-in' => __( 'Logged-In', 'buddypress' ), + 'logged-out' => __( 'Logged-Out', 'buddypress' ), + 'all' => __( 'All', 'buddypress' ), + ); + $tab_urls = array( + 'all' => '', + 'logged-in' => '', + 'logged-out' => '', + ); - <div id="tabs-panel-posttype-<?php echo $post_type_name; ?>-loggedin" class="tabs-panel tabs-panel-active"> - <ul id="buddypress-menu-checklist-loggedin" class="categorychecklist form-no-clear"> - <?php echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $tabs['loggedin']['pages'] ), 0, (object) $args ); ?> - </ul> - </div> + if ( isset( $_REQUEST[ $tab_name ] ) && in_array( $_REQUEST[ $tab_name ], array_keys( $tabs ), true ) ) { + $current_tab = $_REQUEST[ $tab_name ]; + } - <h4><?php _e( 'Logged-Out', 'buddypress' ); ?></h4> - <p><?php _e( '<em>Logged-Out</em> links are not visible to users who are logged in.', 'buddypress' ); ?></p> + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); - <div id="tabs-panel-posttype-<?php echo $post_type_name; ?>-loggedout" class="tabs-panel tabs-panel-active"> - <ul id="buddypress-menu-checklist-loggedout" class="categorychecklist form-no-clear"> - <?php echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $tabs['loggedout']['pages'] ), 0, (object) $args ); ?> - </ul> - </div> + if ( $nav_menu_selected_id ) { + $tab_urls['all'] = esc_url( add_query_arg( $tab_name, 'all', remove_query_arg( $removed_args ) ) ); + $tab_urls['logged-in'] = esc_url( add_query_arg( $tab_name, 'logged-in', remove_query_arg( $removed_args ) ) ); + $tab_urls['logged-out'] = esc_url( add_query_arg( $tab_name, 'logged-out', remove_query_arg( $removed_args ) ) ); + } + + $bp_tabs_nav = ''; + foreach ( $tabs as $tab => $tab_text ) { + $class = ''; + $datatype = 'bp_nav_menu_item-' . $tab; + + if ( $current_tab === $tab ) { + $class = ' class="tabs"'; + } + + if ( 'all' !== $tab ) { + $datatype = 'tabs-panel-posttype-bp_nav_menu_item-' . $tab; + } - <?php - $removed_args = array( - 'action', - 'customlink-tab', - 'edit-menu-item', - 'menu-item', - 'page-tab', - '_wpnonce', + $bp_tabs_nav .= sprintf( + '<li%1$s> + <a class="nav-tab-link" data-type="%2$s" href="%3$s"> + %4$s + </a> + </li>', + $class, + $datatype, + esc_url( $tab_urls[ $tab ] ) . '#' . $datatype, + esc_html( $tab_text ) ); - ?> + } - <p class="button-controls"> - <span class="list-controls"> - <a href=" - <?php - echo esc_url( - add_query_arg( - array( - $post_type_name . '-tab' => 'all', - 'selectall' => 1, - ), - remove_query_arg( $removed_args ) - ) - ); - ?> - #buddypress-menu" class="select-all"><?php _e( 'Select All', 'buddypress' ); ?></a> - </span> - <span class="add-to-menu"> - <input type="submit" - <?php - if ( function_exists( 'wp_nav_menu_disabled_check' ) ) : - wp_nav_menu_disabled_check( $nav_menu_selected_id ); -endif; - ?> - class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu', 'buddypress' ); ?>" name="add-custom-menu-item" id="submit-buddypress-menu" /> - <span class="spinner"></span> - </span> - </p> - </div><!-- /#buddypress-menu --> + $output = str_replace( + array( + 'tabs-panel-posttype-bp_nav_menu_item-most-recent', + 'bp_nav_menu_itemchecklist-most-recent', + 'bp_nav_menu_item-all', + 'bp_nav_menu_itemchecklist', + ), + array( + 'tabs-panel-posttype-bp_nav_menu_item-logged-in', + 'bp_nav_menu_itemchecklist-logged-in', + 'tabs-panel-posttype-bp_nav_menu_item-logged-out', + 'bp_nav_menu_itemchecklist-logged-out', + ), + $output + ); - <?php + preg_match( '/\<ul\sid=\"posttype-bp_nav_menu_item-tabs\"[^>]*>(.*?)\<\/ul\>\<!-- \.posttype-tabs --\>/s', $output, $tabs_nav ); + + if ( isset( $tabs_nav[1] ) ) { + $output = str_replace( $tabs_nav[1], $bp_tabs_nav, $output ); + } + + echo preg_replace( '/\<div\sclass=\".*\"\sid=\"tabs-panel-posttype-bp_nav_menu_item-search\"[^>]*>(.*?)\<\/div\>/s', $all_bp_tabs, $output ); } /** diff --git a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-settings.php b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-settings.php index cf8d434683423081963ac4f7bc0d5d3c9b3e5cfb..c09f809ca1e918bdab0545c9295af4d49acbcc55 100644 --- a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-settings.php +++ b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-settings.php @@ -272,9 +272,10 @@ function bp_core_admin_settings() { <div class="wrap"> - <h1><?php _e( 'BuddyPress Settings', 'buddypress' ); ?> </h1> + <h1 class="wp-heading-inline"><?php esc_html_e( 'BuddyPress Settings', 'buddypress' ); ?></h1> + <hr class="wp-header-end"> - <h2 class="nav-tab-wrapper"><?php bp_core_admin_tabs( __( 'Options', 'buddypress' ) ); ?></h2> + <h2 class="nav-tab-wrapper"><?php bp_core_admin_tabs( esc_html__( 'Options', 'buddypress' ) ); ?></h2> <form action="<?php echo esc_url( $form_action ) ?>" method="post"> diff --git a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-slugs.php b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-slugs.php index 8831e7189983a12f0a0dcb3ed642a7871b310dbf..8fb9b9a407bd5286d9084a247147f02d1f2b3181 100644 --- a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-slugs.php +++ b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-slugs.php @@ -21,9 +21,10 @@ function bp_core_admin_slugs_settings() { <div class="wrap"> - <h1><?php _e( 'BuddyPress Settings', 'buddypress' ); ?> </h1> + <h1 class="wp-heading-inline"><?php esc_html_e( 'BuddyPress Settings', 'buddypress' ); ?> </h1> + <hr class="wp-header-end"> - <h2 class="nav-tab-wrapper"><?php bp_core_admin_tabs( __( 'Pages', 'buddypress' ) ); ?></h2> + <h2 class="nav-tab-wrapper"><?php bp_core_admin_tabs( esc_html__( 'Pages', 'buddypress' ) ); ?></h2> <form action="" method="post" id="bp-admin-page-form"> <?php bp_core_admin_slugs_options(); ?> @@ -143,7 +144,7 @@ function bp_core_admin_slugs_options() { 'selected' => !empty( $existing_pages[$name] ) ? $existing_pages[$name] : false ) ); ?> - <?php if ( !empty( $existing_pages[$name] ) ) : ?> + <?php if ( ! empty( $existing_pages[ $name ] ) && get_post( $existing_pages[ $name ] ) ) : ?> <a href="<?php echo esc_url( get_permalink( $existing_pages[$name] ) ); ?>" class="button-secondary" target="_bp"> <?php _e( 'View', 'buddypress' ); ?> <span class="dashicons dashicons-external" aria-hidden="true"></span> @@ -227,7 +228,7 @@ function bp_core_admin_slugs_options() { 'selected' => !empty( $existing_pages[$name] ) ? $existing_pages[$name] : false ) ) ?> - <?php if ( !empty( $existing_pages[$name] ) ) : ?> + <?php if ( ! empty( $existing_pages[ $name ] ) && get_post( $existing_pages[ $name ] ) ) : ?> <a href="<?php echo get_permalink( $existing_pages[$name] ); ?>" class="button-secondary" target="_bp"><?php _e( 'View', 'buddypress' ); ?></a> diff --git a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-tools.php b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-tools.php index c9f41a0df0f0abf671c4788bf0e852a30e8f6c59..0d49c0d6f0ffcb974bca8cabd63a1697ace46d0b 100644 --- a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-tools.php +++ b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-tools.php @@ -19,23 +19,29 @@ function bp_core_admin_tools() { ?> <div class="wrap"> - <h1><?php esc_html_e( 'BuddyPress Tools', 'buddypress' ) ?></h1> + <h1 class="wp-heading-inline"><?php esc_html_e( 'BuddyPress Tools', 'buddypress' ) ?></h1> + <hr class="wp-header-end"> - <p><?php esc_html_e( 'BuddyPress keeps track of various relationships between members, groups, and activity items. Occasionally these relationships become out of sync, most often after an import, update, or migration.', 'buddypress' ); ?></p> + <p><?php esc_html_e( 'BuddyPress keeps track of various relationships between members, groups, and activity items.', 'buddypress' ); ?></p> + <p><?php esc_html_e( 'Occasionally these relationships become out of sync, most often after an import, update, or migration.', 'buddypress' ); ?></p> <p><?php esc_html_e( 'Use the tools below to manually recalculate these relationships.', 'buddypress' ); ?> </p> - <p class="description"><?php esc_html_e( 'Some of these tools create substantial database overhead. Avoid running more than one repair job at a time.', 'buddypress' ); ?></p> + <p class="attention"><?php esc_html_e( 'Some of these tools create substantial database overhead. Avoid running more than one repair job at a time.', 'buddypress' ); ?></p> + + <h2><?php esc_html_e( 'Activate checkboxe(s) to select the operation(s) to perform', 'buddypress' ); ?></h2> <form class="settings" method="post" action=""> <fieldset> - <legend><?php esc_html_e( 'Repair tools', 'buddypress' ) ?></legend> + <legend class="screen-reader-text"><?php esc_html_e( 'Repair tools', 'buddypress' ); ?></legend> - <div class="checkbox"> <?php foreach ( bp_admin_repair_list() as $item ) : ?> - <label for="<?php echo esc_attr( str_replace( '_', '-', $item[0] ) ); ?>"><input type="checkbox" class="checkbox" name="<?php echo esc_attr( $item[0] ) . '" id="' . esc_attr( str_replace( '_', '-', $item[0] ) ); ?>" value="1" /> <?php echo esc_html( $item[1] ); ?></label> + <p> + <label for="<?php echo esc_attr( str_replace( '_', '-', $item[0] ) ); ?>"> + <input type="checkbox" class="checkbox" name="<?php echo esc_attr( $item[0] ) . '" id="' . esc_attr( str_replace( '_', '-', $item[0] ) ); ?>" value="1" /> <?php echo esc_html( $item[1] ); ?> + </label> + </p> <?php endforeach; ?> - </div> <p class="submit"> <input class="button-primary" type="submit" name="bp-tools-submit" value="<?php esc_attr_e( 'Repair Items', 'buddypress' ); ?>" /> @@ -137,6 +143,14 @@ function bp_admin_repair_list() { __( 'Repopulate site tracking records.', 'buddypress' ), 'bp_admin_repair_blog_records', ); + + if ( is_multisite() && bp_is_active( 'blogs', 'site-icon' ) ) { + $repair_list[91] = array( + 'bp-blog-site-icons', + __( 'Repair site tracking site icons/blog avatars synchronization.', 'buddypress' ), + 'bp_admin_repair_blog_site_icons', + ); + } } // Emails: @@ -306,6 +320,63 @@ function bp_admin_repair_blog_records() { return array( 0, sprintf( $statement, $result ) ); } +/** + * Repair site icons/blog avatars synchronization. + * + * @since 7.0.0 + * + * @return array + */ +function bp_admin_repair_blog_site_icons() { + + /* translators: %s: the result of the action performed by the repair tool */ + $statement = __( 'Repairing site icons/blog avatars synchronization… %s', 'buddypress' ); + + if ( ! is_multisite() ) { + return array( 0, sprintf( $statement, __( 'Failed!', 'buddypress' ) ) ); + } + + // Run function if blogs component is active. + if ( bp_is_active( 'blogs', 'site-icon' ) ) { + $blog_ids = get_sites( + array( + 'fields' => 'ids', + 'archived' => 0, + 'mature' => 0, + 'spam' => 0, + 'deleted' => 0, + ) + ); + + $sizes = array( + array( + 'key' => 'site_icon_url_full', + 'size' => bp_core_avatar_full_width(), + ), + array( + 'key' => 'site_icon_url_thumb', + 'size' => bp_core_avatar_thumb_width(), + ), + ); + + foreach ( $blog_ids as $blog_id ) { + $site_icon = 0; + + foreach ( $sizes as $size ) { + $site_icon = bp_blogs_get_site_icon_url( $blog_id, $size['size'] ); + if ( ! $site_icon ) { + $site_icon = 0; + } + + bp_blogs_update_blogmeta( $blog_id, $size['key'], $site_icon ); + } + } + } + + // All done! + return array( 0, sprintf( $statement, __( 'Complete!', 'buddypress' ) ) ); +} + /** * Recalculate the total number of active site members. * @@ -354,8 +425,7 @@ function bp_admin_invitations_table() { bp_core_install_invitations(); // Check for existence of invitations table. - $bp_prefix = bp_core_get_table_prefix(); - $table_name = "{$bp_prefix}bp_invitations"; + $table_name = BP_Invitation_Manager::get_table_name(); $query = $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $table_name ) ); if ( ! $wpdb->get_var( $query ) == $table_name ) { // Early return if table creation failed. @@ -422,7 +492,7 @@ function bp_admin_tools_feedback( $message, $class = false ) { return false; } - $message = '<div id="message" class="' . esc_attr( $class ) . '">' . $message . '</div>'; + $message = '<div id="message" class="' . esc_attr( $class ) . ' notice is-dismissible">' . $message . '</div>'; $message = str_replace( "'", "\'", $message ); $lambda = function() use ( $message ) { echo $message; }; @@ -442,7 +512,8 @@ function bp_admin_tools_feedback( $message, $class = false ) { function bp_core_admin_available_tools_page() { ?> <div class="wrap"> - <h1><?php esc_attr_e( 'Tools', 'buddypress' ) ?></h1> + <h1 class="wp-heading-inline"><?php esc_html_e( 'Tools', 'buddypress' ) ?></h1> + <hr class="wp-header-end"> <?php @@ -626,7 +697,7 @@ function bp_core_admin_debug_information( $debug_info = array() ) { ), 'active_components' => array( 'label' => __( 'Active components', 'buddypress' ), - 'value' => implode( wp_list_pluck( $active_components, 'title' ), ', ' ), + 'value' => implode( ', ', wp_list_pluck( $active_components, 'title' ) ), ), 'template_pack' => array( 'label' => __( 'Active template pack', 'buddypress' ), diff --git a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-types.php b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-types.php new file mode 100644 index 0000000000000000000000000000000000000000..6b8db3f7aa96b4105115e931b038294cc2fccac1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-types.php @@ -0,0 +1,298 @@ +<?php +/** + * BuddyPress Types Admin functions. + * + * @package BuddyPress + * @subpackage Core + * @since 7.0.0 + */ + +// Exit if accessed directly. +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +/** + * Get default values for the taxonomy registered metadata. + * + * @since 7.0.0 + * + * @param string $type_taxonomy The type's taxonomy name. + * @return array Default values for the taxonomy registered metadata. + */ +function bp_core_admin_get_type_default_meta_values( $type_taxonomy ) { + $metadata_schema = bp_get_type_metadata_schema( false, $type_taxonomy ); + $metadata = wp_list_pluck( $metadata_schema, 'type' ); + + // Set default values according to their schema type. + foreach ( $metadata as $meta_key => $meta_value ) { + if ( in_array( $meta_value, array( 'boolean', 'integer' ), true ) ) { + $metadata[ $meta_key ] = 0; + } else { + $metadata[ $meta_key ] = ''; + } + } + + return $metadata; +} + +/** + * Insert a new type into the database. + * + * @since 7.0.0 + * + * @param array $args { + * Array of arguments describing the object type. + * + * @type string $taxonomy The Type's taxonomy. Required. + * @type string $bp_type_id Unique string identifier for the member type. Required. + * @see keys of the array returned by bp_get_type_metadata_schema() for the other arguments. + * } + * @return integer|WP_Error The Type's term ID on success. A WP_Error object otherwise. + */ +function bp_core_admin_insert_type( $args = array() ) { + $default_args = array( + 'taxonomy' => '', + 'bp_type_id' => '', + ); + + $args = array_map( 'wp_unslash', $args ); + $args = bp_parse_args( + $args, + $default_args, + 'admin_insert_type' + ); + + if ( ! $args['bp_type_id'] || ! $args['taxonomy'] ) { + return new WP_Error( + 'invalid_type_taxonomy', + __( 'The Type ID value is missing', 'buddypress' ), + array( + 'message' => 1, + ) + ); + } + + $type_id = sanitize_title( $args['bp_type_id'] ); + $type_taxonomy = sanitize_key( $args['taxonomy'] ); + + /** + * Filter here to check for an already existing type. + * + * @since 7.0.0 + * + * @param boolean $value True if the type exists. False otherwise. + * @param string $type_id The Type's ID. + */ + $type_exists = apply_filters( "{$type_taxonomy}_check_existing_type", false, $type_id ); + + if ( false !== $type_exists ) { + return new WP_Error( + 'type_already_exists', + __( 'The Type already exists', 'buddypress' ), + array( + 'message' => 5, + ) + ); + } + + // Get defaulte values for metadata. + $metadata = bp_core_admin_get_type_default_meta_values( $type_taxonomy ); + + // Validate metadata + $metas = array_filter( array_intersect_key( $args, $metadata ) ); + + // Insert the Type into the database. + $type_term_id = bp_insert_term( + $type_id, + $type_taxonomy, + array( + 'slug' => $type_id, + 'metas' => $metas, + ) + ); + + if ( is_wp_error( $type_term_id ) ) { + $type_term_id->add_data( + array( + 'message' => 3, + ) + ); + + return $type_term_id; + } + + /** + * Hook here to add code once the type has been inserted. + * + * @since 7.0.0 + * + * @param integer $type_term_id The Type's term_ID. + * @param string $type_taxonomy The Type's taxonomy name. + * @param string $type_id The Type's ID. + */ + do_action( 'bp_type_inserted', $type_term_id, $type_taxonomy, $type_id ); + + // Finally return the inserted Type's term ID. + return $type_term_id; +} + +/** + * Update a type into the database. + * + * @since 7.0.0 + * + * @param array $args { + * Array of arguments describing the object type. + * + * @type string $taxonomy The Type's taxonomy. Required. + * @type integer $type_term_id The Type's term ID. Required. + * @see keys of the array returned by bp_get_type_metadata_schema() for the other arguments. + * } + * @return boolean|WP_Error True on success. A WP_Error object otherwise. + */ +function bp_core_admin_update_type( $args = array() ) { + $default_args = array( + 'taxonomy' => '', + 'type_term_id' => 0, + ); + + $args = array_map( 'wp_unslash', $args ); + $args = bp_parse_args( + $args, + $default_args, + 'admin_update_type' + ); + + if ( ! $args['type_term_id'] || ! $args['taxonomy'] ) { + return new WP_Error( + 'invalid_type_taxonomy', + __( 'The Term Type ID value is missing', 'buddypress' ), + array( + 'message' => 10, + ) + ); + } + + $type_term_id = (int) $args['type_term_id']; + $type_taxonomy = sanitize_key( $args['taxonomy'] ); + + // Get defaulte values for metadata. + $metadata = bp_core_admin_get_type_default_meta_values( $type_taxonomy ); + + // Merge customs with defaults. + $metas = wp_parse_args( $args, $metadata ); + + // Validate metadata + $metas = array_intersect_key( $metas, $metadata ); + + foreach ( $metas as $meta_key => $meta_value ) { + if ( '' === $meta_value ) { + delete_term_meta( $type_term_id, $meta_key ); + } else { + update_term_meta( $type_term_id, $meta_key, $meta_value ); + } + } + + /** + * Hook here to add code once the type has been updated. + * + * @since 7.0.0 + * + * @param integer $type_term_id The Type's term_ID. + * @param string $type_taxonomy The Type's taxonomy name. + */ + do_action( 'bp_type_updated', $type_term_id, $type_taxonomy ); + + // Finally informs about the successfull update. + return true; +} + +/** + * Delete a type from the database. + * + * @since 7.0.0 + * + * @param array $args { + * Array of arguments describing the object type. + * + * @type string $taxonomy The Type's taxonomy. Required. + * @type integer $type_term_id The Type's term ID. Required. + * } + * @return boolean|WP_Error True on success. A WP_Error object otherwise. + */ +function bp_core_admin_delete_type( $args = array() ) { + $default_args = array( + 'taxonomy' => '', + 'type_term_id' => 0, + ); + + $args = array_map( 'wp_unslash', $args ); + $args = bp_parse_args( + $args, + $default_args, + 'admin_delete_type' + ); + + if ( ! $args['type_term_id'] || ! $args['taxonomy'] ) { + return new WP_Error( + 'invalid_type_taxonomy', + __( 'The Term Type ID value is missing', 'buddypress' ), + array( + 'message' => 10, + ) + ); + } + + $type_term_id = (int) $args['type_term_id']; + $type_taxonomy = sanitize_key( $args['taxonomy'] ); + $type_term = bp_get_term_by( 'id', $type_term_id, $type_taxonomy ); + + if ( ! $type_term ) { + return new WP_Error( + 'type_doesnotexist', + __( 'The type was not deleted: it does not exist.', 'buddypress' ), + array( + 'message' => 6, + ) + ); + } + + /** This filter is documented in bp-core/classes/class-bp-admin-types.php */ + $registered_by_code_types = apply_filters( "{$type_taxonomy}_registered_by_code", array() ); + + if ( isset( $registered_by_code_types[ $type_term->name ] ) ) { + return new WP_Error( + 'type_register_by_code', + __( 'This type is registered using code, deactivate the plugin or remove the custom code before trying to delete it again.', 'buddypress' ), + array( + 'message' => 7, + ) + ); + } + + $deleted = bp_delete_term( $type_term_id, $type_taxonomy ); + + if ( true !== $deleted ) { + return new WP_Error( + 'type_not_deleted', + __( 'There was an error while trying to delete this type.', 'buddypress' ), + array( + 'message' => 8, + ) + ); + } + + /** + * Hook here to add code once the type has been deleted. + * + * @since 7.0.0 + * + * @param integer $type_term_id The Type's term_ID. + * @param string $type_taxonomy The Type's taxonomy name. + */ + do_action( 'bp_type_deleted', $type_term_id, $type_taxonomy ); + + // Finally informs about the successfull delete. + return true; +} diff --git a/wp-content/plugins/buddypress/bp-core/admin/css/common-rtl.css b/wp-content/plugins/buddypress/bp-core/admin/css/common-rtl.css index 35765881121ead4d7f7eb3b62c0e83b912c5e509..dbb83a22c7d5c4e10b4ecc1a504126285d8b3239 100644 --- a/wp-content/plugins/buddypress/bp-core/admin/css/common-rtl.css +++ b/wp-content/plugins/buddypress/bp-core/admin/css/common-rtl.css @@ -21,8 +21,7 @@ TABLE OF CONTENTS: 3.1 Users List 3.2 Site Notices 4.0 Emails - Edit page -5.0 Tools - BuddyPress -6.0 Plugins page +5.0 Plugins page ------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------ @@ -523,55 +522,7 @@ body.post-type-bp-email .categorydiv label { } /*------------------------------------------------------------------------------ - * 5.0 Tools - BuddyPress - *----------------------------------------------------------------------------*/ -.tools_page_bp-tools .wrap { - max-width: 950px; -} - -.tools_page_bp-tools p { - line-height: 2; -} - -.tools_page_bp-tools fieldset { - margin: 2em 0 0; -} - -.tools_page_bp-tools legend { - color: #23282d; - font-size: 1.3em; - font-weight: 600; - margin: 1em 0; -} - -.tools_page_bp-tools label { - clear: right; - display: block; - line-height: 1.5; - margin: 0 0 1em; - vertical-align: middle; -} - -@media screen and (max-width: 782px) { - - .tools_page_bp-tools p { - line-height: 1.5; - } - - .tools_page_bp-tools label { - margin-bottom: 1em; - padding-left: 25px; - text-indent: -33px; - } - - .tools_page_bp-tools .checkbox { - padding: 0 30px 0 0; - } -} - - -/*------------------------------------------------------------------------------ - * 6.0 Plugins page + * 5.0 Plugins page *----------------------------------------------------------------------------*/ #buddypress-update.not-shiny .update-message { border-right: 0; diff --git a/wp-content/plugins/buddypress/bp-core/admin/css/common-rtl.min.css b/wp-content/plugins/buddypress/bp-core/admin/css/common-rtl.min.css index 2479b5679730ab301906d094bf56e67eee3784d3..c3a928e6798d5529ef13621ac7a8c429d4e9a4b2 100644 --- a/wp-content/plugins/buddypress/bp-core/admin/css/common-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-core/admin/css/common-rtl.min.css @@ -1 +1 @@ -.bp-badge{color:#d84800;display:inline-block;font:400 150px/1 dashicons!important}.bp-badge:before{content:"\f448"}.index_page_bp-about code,.settings_page_bp-credits code{background-color:#e0e0e0;color:#636363;font-size:1em}.bp-about-wrap{position:relative;max-width:1050px;font-size:15px}.bp-about-wrap img{margin:0;max-width:100%;height:auto;vertical-align:middle}.bp-about-wrap p{line-height:1.5;font-size:14px}.bp-about-wrap h2{margin:40px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.bp-about-wrap h3{margin:1.25em 0 .6em;font-size:1.4em;line-height:1.5}.bp-about-wrap code{font-size:14px;font-weight:400}.bp-about-wrap .about-description{margin-top:1.4em;font-weight:400;line-height:1.6;font-size:19px}.bp-about-wrap h3.wp-people-group{margin:2.6em 0 1.33em;padding:0;font-size:16px;line-height:inherit}.bp-about-wrap .wp-people-group{padding:0 5px;margin:0 -5px 0 -15px}.bp-about-wrap .compact{margin-bottom:0}.bp-about-wrap .wp-person{display:inline-block;vertical-align:top;margin-left:10px;padding-bottom:15px;height:70px;width:280px}.bp-about-wrap .compact .wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.bp-about-wrap .wp-person .gravatar{float:right;margin:0 0 10px 10px;padding:1px;width:60px;height:60px}.bp-about-wrap .compact .wp-person .gravatar{width:30px;height:30px}.bp-about-wrap .wp-person .web{margin:6px 0 2px;font-size:16px;font-weight:400;line-height:2;text-decoration:none}.bp-about-wrap .wp-person .title{display:block}.bp-about-wrap p.wp-credits-list a{white-space:nowrap}@media only screen and (max-width:500px){.bp-about-wrap{margin-left:20px;margin-right:10px}.bp-about-wrap .bp-about-wrap h1{margin-left:0}}#adminmenu #toplevel_page_bp-activity .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_user .wp-menu-image:before{content:"\f452"}#adminmenu #toplevel_page_bp-groups .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_user .wp-menu-image:before{content:"\f456"}#adminmenu #toplevel_page_bp-notifications .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_user .wp-menu-image:before{content:"\f439"}#adminmenu #toplevel_page_bp-messages .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_user .wp-menu-image:before{content:"\f457"}#adminmenu #toplevel_page_bp-friends .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before{content:"\f454"}#adminmenu #toplevel_page_bp-settings .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_user .wp-menu-image:before{content:"\f108"}#adminmenu li.toplevel_page_bp-components .wp-menu-image,#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image{content:"\f448"}.settings_page_bp-components td.plugin-title span{float:right;width:18px;height:18px;margin-left:5px}.settings_page_bp-components td.plugin-title span:before{font-family:dashicons;font-size:18px}.settings_page_bp-components tr.activity td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.notifications td.plugin-title span:before{content:"\f339"}.settings_page_bp-components tr.xprofile td.plugin-title span:before{content:"\f336"}.settings_page_bp-components tr.settings td.plugin-title span:before{content:"\f108"}.settings_page_bp-components tr.groups td.plugin-title span:before{content:"\f456"}.settings_page_bp-components tr.messages td.plugin-title span:before{content:"\f457"}.settings_page_bp-components tr.blogs td.plugin-title span:before{content:"\f120"}.settings_page_bp-components tr.friends td.plugin-title span:before{content:"\f454"}.settings_page_bp-components tr.core td.plugin-title span:before{content:"\f448"}.settings_page_bp-components tr.members td.plugin-title span:before{content:"\f307"}.settings_page_bp-page-settings .button-secondary .dashicons{position:relative;top:3px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{width:25%}@media screen and (max-width:782px){.settings_page_bp-components td.plugin-title span{margin-top:5px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{display:block;width:auto}#bp-admin-component-form .subsubsub{margin-bottom:0;padding-bottom:35px}}#adminmenu .toplevel_page_network-tools div.wp-menu-image:before{content:""}.bp-tooltip{position:relative}.bp-tooltip:after{background:#fff;border:1px solid #aaa;border-collapse:separate;border-radius:1px;box-shadow:-1px 1px 0 1px rgba(132,132,132,.3);color:#000;content:attr(data-bp-tooltip);display:none;font-family:sans-serif;font-size:11px;font-weight:400;letter-spacing:normal;line-height:1.5;margin-top:10px;max-width:240px;opacity:0;padding:3px 6px;position:absolute;left:50%;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;top:100%;transform:translateX(-50%);transition:opacity 2s ease-out;white-space:pre;word-wrap:break-word;z-index:998}.bp-hello-close .bp-tooltip:after{left:0;text-align:left;transform:translateX(0)}.bp-hello-social .bp-tooltip:after{bottom:120%;margin-bottom:20px;margin-top:0;top:auto;transform:translateX(-15%)}.bp-tooltip:active:after,.bp-tooltip:focus:after,.bp-tooltip:hover:after{display:inline-block;opacity:1;overflow:visible;text-decoration:none;z-index:999}body.site-users-php th#role,body.users-php th#role,body.users_page_bp-signups th#count_sent{width:10%}body.site-users-php th#email,body.site-users-php th#name,body.users-php th#email,body.users-php th#name,body.users-php th#registered,body.users_page_bp-signups th#date_sent,body.users_page_bp-signups th#email,body.users_page_bp-signups th#name,body.users_page_bp-signups th#registered{width:15%}body.users-php th#blogs,body.users_page_bp-signups th#blogs{width:20%}body.users_page_bp-signups td.count_sent,body.users_page_bp-signups th.column-count_sent{text-align:center}.bp-signups-list table{margin:1em 0}.bp-signups-list .column-fields{font-weight:700}.bp-new-notice-panel{background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);font-size:13px;line-height:2.1;margin:1.5em 0 3em;overflow:auto;padding:10px 25px 25px;position:relative}.bp-new-notice-panel label{clear:both;float:right;margin-left:3%;width:20%}.bp-new-notice-panel input,.bp-new-notice-panel textarea{clear:none;margin-bottom:1em;width:75%}.bp-new-notice-panel input[type=text]:after,.bp-new-notice-panel textarea:after{clear:both;content:" ";display:table}.bp-new-notice-panel .button-primary{margin-right:23%;width:auto}.bp-notice-about{font-size:1em;margin-bottom:1em}.bp-new-notice{margin-bottom:1em;margin-top:0}.bp-notices-list{margin-bottom:0}@media screen and (max-width:782px){.bp-new-notice-panel{margin-bottom:1.5em}.bp-new-notice-panel input,.bp-new-notice-panel textarea{margin-right:0;width:100%}.bp-new-notice-panel .button-primary{margin-right:0;width:auto}.bp-new-notice-panel .button{max-width:45%;word-wrap:break-word}.bp-notice-about{margin-top:0;margin-bottom:1em}.bp-new-notice{margin-bottom:.5em}}body.post-type-bp-email #excerpt{height:auto}body.post-type-bp-email th#situation{width:20%}body.post-type-bp-email td.column-situation ul{margin:0}body.post-type-bp-email .categorydiv label{display:block;float:right;padding-right:25px;text-indent:-25px}.tools_page_bp-tools .wrap{max-width:950px}.tools_page_bp-tools p{line-height:2}.tools_page_bp-tools fieldset{margin:2em 0 0}.tools_page_bp-tools legend{color:#23282d;font-size:1.3em;font-weight:600;margin:1em 0}.tools_page_bp-tools label{clear:right;display:block;line-height:1.5;margin:0 0 1em;vertical-align:middle}@media screen and (max-width:782px){.tools_page_bp-tools p{line-height:1.5}.tools_page_bp-tools label{margin-bottom:1em;padding-left:25px;text-indent:-33px}.tools_page_bp-tools .checkbox{padding:0 30px 0 0}}#buddypress-update.not-shiny .update-message{border-right:0;padding-right:36px}#buddypress-update.not-shiny .update-message:before{content:"\f534"} \ No newline at end of file +.bp-badge{color:#d84800;display:inline-block;font:400 150px/1 dashicons!important}.bp-badge:before{content:"\f448"}.index_page_bp-about code,.settings_page_bp-credits code{background-color:#e0e0e0;color:#636363;font-size:1em}.bp-about-wrap{position:relative;max-width:1050px;font-size:15px}.bp-about-wrap img{margin:0;max-width:100%;height:auto;vertical-align:middle}.bp-about-wrap p{line-height:1.5;font-size:14px}.bp-about-wrap h2{margin:40px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.bp-about-wrap h3{margin:1.25em 0 .6em;font-size:1.4em;line-height:1.5}.bp-about-wrap code{font-size:14px;font-weight:400}.bp-about-wrap .about-description{margin-top:1.4em;font-weight:400;line-height:1.6;font-size:19px}.bp-about-wrap h3.wp-people-group{margin:2.6em 0 1.33em;padding:0;font-size:16px;line-height:inherit}.bp-about-wrap .wp-people-group{padding:0 5px;margin:0 -5px 0 -15px}.bp-about-wrap .compact{margin-bottom:0}.bp-about-wrap .wp-person{display:inline-block;vertical-align:top;margin-left:10px;padding-bottom:15px;height:70px;width:280px}.bp-about-wrap .compact .wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.bp-about-wrap .wp-person .gravatar{float:right;margin:0 0 10px 10px;padding:1px;width:60px;height:60px}.bp-about-wrap .compact .wp-person .gravatar{width:30px;height:30px}.bp-about-wrap .wp-person .web{margin:6px 0 2px;font-size:16px;font-weight:400;line-height:2;text-decoration:none}.bp-about-wrap .wp-person .title{display:block}.bp-about-wrap p.wp-credits-list a{white-space:nowrap}@media only screen and (max-width:500px){.bp-about-wrap{margin-left:20px;margin-right:10px}.bp-about-wrap .bp-about-wrap h1{margin-left:0}}#adminmenu #toplevel_page_bp-activity .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_user .wp-menu-image:before{content:"\f452"}#adminmenu #toplevel_page_bp-groups .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_user .wp-menu-image:before{content:"\f456"}#adminmenu #toplevel_page_bp-notifications .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_user .wp-menu-image:before{content:"\f439"}#adminmenu #toplevel_page_bp-messages .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_user .wp-menu-image:before{content:"\f457"}#adminmenu #toplevel_page_bp-friends .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before{content:"\f454"}#adminmenu #toplevel_page_bp-settings .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_user .wp-menu-image:before{content:"\f108"}#adminmenu li.toplevel_page_bp-components .wp-menu-image,#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image{content:"\f448"}.settings_page_bp-components td.plugin-title span{float:right;width:18px;height:18px;margin-left:5px}.settings_page_bp-components td.plugin-title span:before{font-family:dashicons;font-size:18px}.settings_page_bp-components tr.activity td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.notifications td.plugin-title span:before{content:"\f339"}.settings_page_bp-components tr.xprofile td.plugin-title span:before{content:"\f336"}.settings_page_bp-components tr.settings td.plugin-title span:before{content:"\f108"}.settings_page_bp-components tr.groups td.plugin-title span:before{content:"\f456"}.settings_page_bp-components tr.messages td.plugin-title span:before{content:"\f457"}.settings_page_bp-components tr.blogs td.plugin-title span:before{content:"\f120"}.settings_page_bp-components tr.friends td.plugin-title span:before{content:"\f454"}.settings_page_bp-components tr.core td.plugin-title span:before{content:"\f448"}.settings_page_bp-components tr.members td.plugin-title span:before{content:"\f307"}.settings_page_bp-page-settings .button-secondary .dashicons{position:relative;top:3px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{width:25%}@media screen and (max-width:782px){.settings_page_bp-components td.plugin-title span{margin-top:5px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{display:block;width:auto}#bp-admin-component-form .subsubsub{margin-bottom:0;padding-bottom:35px}}#adminmenu .toplevel_page_network-tools div.wp-menu-image:before{content:""}.bp-tooltip{position:relative}.bp-tooltip:after{background:#fff;border:1px solid #aaa;border-collapse:separate;border-radius:1px;box-shadow:-1px 1px 0 1px rgba(132,132,132,.3);color:#000;content:attr(data-bp-tooltip);display:none;font-family:sans-serif;font-size:11px;font-weight:400;letter-spacing:normal;line-height:1.5;margin-top:10px;max-width:240px;opacity:0;padding:3px 6px;position:absolute;left:50%;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;top:100%;transform:translateX(-50%);transition:opacity 2s ease-out;white-space:pre;word-wrap:break-word;z-index:998}.bp-hello-close .bp-tooltip:after{left:0;text-align:left;transform:translateX(0)}.bp-hello-social .bp-tooltip:after{bottom:120%;margin-bottom:20px;margin-top:0;top:auto;transform:translateX(-15%)}.bp-tooltip:active:after,.bp-tooltip:focus:after,.bp-tooltip:hover:after{display:inline-block;opacity:1;overflow:visible;text-decoration:none;z-index:999}body.site-users-php th#role,body.users-php th#role,body.users_page_bp-signups th#count_sent{width:10%}body.site-users-php th#email,body.site-users-php th#name,body.users-php th#email,body.users-php th#name,body.users-php th#registered,body.users_page_bp-signups th#date_sent,body.users_page_bp-signups th#email,body.users_page_bp-signups th#name,body.users_page_bp-signups th#registered{width:15%}body.users-php th#blogs,body.users_page_bp-signups th#blogs{width:20%}body.users_page_bp-signups td.count_sent,body.users_page_bp-signups th.column-count_sent{text-align:center}.bp-signups-list table{margin:1em 0}.bp-signups-list .column-fields{font-weight:700}.bp-new-notice-panel{background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);font-size:13px;line-height:2.1;margin:1.5em 0 3em;overflow:auto;padding:10px 25px 25px;position:relative}.bp-new-notice-panel label{clear:both;float:right;margin-left:3%;width:20%}.bp-new-notice-panel input,.bp-new-notice-panel textarea{clear:none;margin-bottom:1em;width:75%}.bp-new-notice-panel input[type=text]:after,.bp-new-notice-panel textarea:after{clear:both;content:" ";display:table}.bp-new-notice-panel .button-primary{margin-right:23%;width:auto}.bp-notice-about{font-size:1em;margin-bottom:1em}.bp-new-notice{margin-bottom:1em;margin-top:0}.bp-notices-list{margin-bottom:0}@media screen and (max-width:782px){.bp-new-notice-panel{margin-bottom:1.5em}.bp-new-notice-panel input,.bp-new-notice-panel textarea{margin-right:0;width:100%}.bp-new-notice-panel .button-primary{margin-right:0;width:auto}.bp-new-notice-panel .button{max-width:45%;word-wrap:break-word}.bp-notice-about{margin-top:0;margin-bottom:1em}.bp-new-notice{margin-bottom:.5em}}body.post-type-bp-email #excerpt{height:auto}body.post-type-bp-email th#situation{width:20%}body.post-type-bp-email td.column-situation ul{margin:0}body.post-type-bp-email .categorydiv label{display:block;float:right;padding-right:25px;text-indent:-25px}#buddypress-update.not-shiny .update-message{border-right:0;padding-right:36px}#buddypress-update.not-shiny .update-message:before{content:"\f534"} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/admin/css/common.css b/wp-content/plugins/buddypress/bp-core/admin/css/common.css index c5f7aa6fbe1caea47488764da4142faa3a354d88..c0af4884c0290f006cb5ac8ff3bf517d91e5d555 100644 --- a/wp-content/plugins/buddypress/bp-core/admin/css/common.css +++ b/wp-content/plugins/buddypress/bp-core/admin/css/common.css @@ -21,8 +21,7 @@ TABLE OF CONTENTS: 3.1 Users List 3.2 Site Notices 4.0 Emails - Edit page -5.0 Tools - BuddyPress -6.0 Plugins page +5.0 Plugins page ------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------ @@ -523,55 +522,7 @@ body.post-type-bp-email .categorydiv label { } /*------------------------------------------------------------------------------ - * 5.0 Tools - BuddyPress - *----------------------------------------------------------------------------*/ -.tools_page_bp-tools .wrap { - max-width: 950px; -} - -.tools_page_bp-tools p { - line-height: 2; -} - -.tools_page_bp-tools fieldset { - margin: 2em 0 0; -} - -.tools_page_bp-tools legend { - color: #23282d; - font-size: 1.3em; - font-weight: 600; - margin: 1em 0; -} - -.tools_page_bp-tools label { - clear: left; - display: block; - line-height: 1.5; - margin: 0 0 1em; - vertical-align: middle; -} - -@media screen and (max-width: 782px) { - - .tools_page_bp-tools p { - line-height: 1.5; - } - - .tools_page_bp-tools label { - margin-bottom: 1em; - padding-right: 25px; - text-indent: -33px; - } - - .tools_page_bp-tools .checkbox { - padding: 0 0 0 30px; - } -} - - -/*------------------------------------------------------------------------------ - * 6.0 Plugins page + * 5.0 Plugins page *----------------------------------------------------------------------------*/ #buddypress-update.not-shiny .update-message { border-left: 0; diff --git a/wp-content/plugins/buddypress/bp-core/admin/css/common.min.css b/wp-content/plugins/buddypress/bp-core/admin/css/common.min.css index 7019c5c086a8a822915dda66ae2da8faa91079f5..6eb81d12efbd8e21a20f5343ed76026c42ce6b62 100644 --- a/wp-content/plugins/buddypress/bp-core/admin/css/common.min.css +++ b/wp-content/plugins/buddypress/bp-core/admin/css/common.min.css @@ -1 +1 @@ -.bp-badge{color:#d84800;display:inline-block;font:400 150px/1 dashicons!important}.bp-badge:before{content:"\f448"}.index_page_bp-about code,.settings_page_bp-credits code{background-color:#e0e0e0;color:#636363;font-size:1em}.bp-about-wrap{position:relative;max-width:1050px;font-size:15px}.bp-about-wrap img{margin:0;max-width:100%;height:auto;vertical-align:middle}.bp-about-wrap p{line-height:1.5;font-size:14px}.bp-about-wrap h2{margin:40px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.bp-about-wrap h3{margin:1.25em 0 .6em;font-size:1.4em;line-height:1.5}.bp-about-wrap code{font-size:14px;font-weight:400}.bp-about-wrap .about-description{margin-top:1.4em;font-weight:400;line-height:1.6;font-size:19px}.bp-about-wrap h3.wp-people-group{margin:2.6em 0 1.33em;padding:0;font-size:16px;line-height:inherit}.bp-about-wrap .wp-people-group{padding:0 5px;margin:0 -15px 0 -5px}.bp-about-wrap .compact{margin-bottom:0}.bp-about-wrap .wp-person{display:inline-block;vertical-align:top;margin-right:10px;padding-bottom:15px;height:70px;width:280px}.bp-about-wrap .compact .wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.bp-about-wrap .wp-person .gravatar{float:left;margin:0 10px 10px 0;padding:1px;width:60px;height:60px}.bp-about-wrap .compact .wp-person .gravatar{width:30px;height:30px}.bp-about-wrap .wp-person .web{margin:6px 0 2px;font-size:16px;font-weight:400;line-height:2;text-decoration:none}.bp-about-wrap .wp-person .title{display:block}.bp-about-wrap p.wp-credits-list a{white-space:nowrap}@media only screen and (max-width:500px){.bp-about-wrap{margin-right:20px;margin-left:10px}.bp-about-wrap .bp-about-wrap h1{margin-right:0}}#adminmenu #toplevel_page_bp-activity .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_user .wp-menu-image:before{content:"\f452"}#adminmenu #toplevel_page_bp-groups .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_user .wp-menu-image:before{content:"\f456"}#adminmenu #toplevel_page_bp-notifications .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_user .wp-menu-image:before{content:"\f439"}#adminmenu #toplevel_page_bp-messages .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_user .wp-menu-image:before{content:"\f457"}#adminmenu #toplevel_page_bp-friends .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before{content:"\f454"}#adminmenu #toplevel_page_bp-settings .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_user .wp-menu-image:before{content:"\f108"}#adminmenu li.toplevel_page_bp-components .wp-menu-image,#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image{content:"\f448"}.settings_page_bp-components td.plugin-title span{float:left;width:18px;height:18px;margin-right:5px}.settings_page_bp-components td.plugin-title span:before{font-family:dashicons;font-size:18px}.settings_page_bp-components tr.activity td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.notifications td.plugin-title span:before{content:"\f339"}.settings_page_bp-components tr.xprofile td.plugin-title span:before{content:"\f336"}.settings_page_bp-components tr.settings td.plugin-title span:before{content:"\f108"}.settings_page_bp-components tr.groups td.plugin-title span:before{content:"\f456"}.settings_page_bp-components tr.messages td.plugin-title span:before{content:"\f457"}.settings_page_bp-components tr.blogs td.plugin-title span:before{content:"\f120"}.settings_page_bp-components tr.friends td.plugin-title span:before{content:"\f454"}.settings_page_bp-components tr.core td.plugin-title span:before{content:"\f448"}.settings_page_bp-components tr.members td.plugin-title span:before{content:"\f307"}.settings_page_bp-page-settings .button-secondary .dashicons{position:relative;top:3px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{width:25%}@media screen and (max-width:782px){.settings_page_bp-components td.plugin-title span{margin-top:5px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{display:block;width:auto}#bp-admin-component-form .subsubsub{margin-bottom:0;padding-bottom:35px}}#adminmenu .toplevel_page_network-tools div.wp-menu-image:before{content:""}.bp-tooltip{position:relative}.bp-tooltip:after{background:#fff;border:1px solid #aaa;border-collapse:separate;border-radius:1px;box-shadow:1px 1px 0 1px rgba(132,132,132,.3);color:#000;content:attr(data-bp-tooltip);display:none;font-family:sans-serif;font-size:11px;font-weight:400;letter-spacing:normal;line-height:1.5;margin-top:10px;max-width:240px;opacity:0;padding:3px 6px;position:absolute;right:50%;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;top:100%;transform:translateX(50%);transition:opacity 2s ease-out;white-space:pre;word-wrap:break-word;z-index:998}.bp-hello-close .bp-tooltip:after{right:0;text-align:right;transform:translateX(0)}.bp-hello-social .bp-tooltip:after{bottom:120%;margin-bottom:20px;margin-top:0;top:auto;transform:translateX(15%)}.bp-tooltip:active:after,.bp-tooltip:focus:after,.bp-tooltip:hover:after{display:inline-block;opacity:1;overflow:visible;text-decoration:none;z-index:999}body.site-users-php th#role,body.users-php th#role,body.users_page_bp-signups th#count_sent{width:10%}body.site-users-php th#email,body.site-users-php th#name,body.users-php th#email,body.users-php th#name,body.users-php th#registered,body.users_page_bp-signups th#date_sent,body.users_page_bp-signups th#email,body.users_page_bp-signups th#name,body.users_page_bp-signups th#registered{width:15%}body.users-php th#blogs,body.users_page_bp-signups th#blogs{width:20%}body.users_page_bp-signups td.count_sent,body.users_page_bp-signups th.column-count_sent{text-align:center}.bp-signups-list table{margin:1em 0}.bp-signups-list .column-fields{font-weight:700}.bp-new-notice-panel{background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);font-size:13px;line-height:2.1;margin:1.5em 0 3em;overflow:auto;padding:10px 25px 25px;position:relative}.bp-new-notice-panel label{clear:both;float:left;margin-right:3%;width:20%}.bp-new-notice-panel input,.bp-new-notice-panel textarea{clear:none;margin-bottom:1em;width:75%}.bp-new-notice-panel input[type=text]:after,.bp-new-notice-panel textarea:after{clear:both;content:" ";display:table}.bp-new-notice-panel .button-primary{margin-left:23%;width:auto}.bp-notice-about{font-size:1em;margin-bottom:1em}.bp-new-notice{margin-bottom:1em;margin-top:0}.bp-notices-list{margin-bottom:0}@media screen and (max-width:782px){.bp-new-notice-panel{margin-bottom:1.5em}.bp-new-notice-panel input,.bp-new-notice-panel textarea{margin-left:0;width:100%}.bp-new-notice-panel .button-primary{margin-left:0;width:auto}.bp-new-notice-panel .button{max-width:45%;word-wrap:break-word}.bp-notice-about{margin-top:0;margin-bottom:1em}.bp-new-notice{margin-bottom:.5em}}body.post-type-bp-email #excerpt{height:auto}body.post-type-bp-email th#situation{width:20%}body.post-type-bp-email td.column-situation ul{margin:0}body.post-type-bp-email .categorydiv label{display:block;float:left;padding-left:25px;text-indent:-25px}.tools_page_bp-tools .wrap{max-width:950px}.tools_page_bp-tools p{line-height:2}.tools_page_bp-tools fieldset{margin:2em 0 0}.tools_page_bp-tools legend{color:#23282d;font-size:1.3em;font-weight:600;margin:1em 0}.tools_page_bp-tools label{clear:left;display:block;line-height:1.5;margin:0 0 1em;vertical-align:middle}@media screen and (max-width:782px){.tools_page_bp-tools p{line-height:1.5}.tools_page_bp-tools label{margin-bottom:1em;padding-right:25px;text-indent:-33px}.tools_page_bp-tools .checkbox{padding:0 0 0 30px}}#buddypress-update.not-shiny .update-message{border-left:0;padding-left:36px}#buddypress-update.not-shiny .update-message:before{content:"\f534"} \ No newline at end of file +.bp-badge{color:#d84800;display:inline-block;font:400 150px/1 dashicons!important}.bp-badge:before{content:"\f448"}.index_page_bp-about code,.settings_page_bp-credits code{background-color:#e0e0e0;color:#636363;font-size:1em}.bp-about-wrap{position:relative;max-width:1050px;font-size:15px}.bp-about-wrap img{margin:0;max-width:100%;height:auto;vertical-align:middle}.bp-about-wrap p{line-height:1.5;font-size:14px}.bp-about-wrap h2{margin:40px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.bp-about-wrap h3{margin:1.25em 0 .6em;font-size:1.4em;line-height:1.5}.bp-about-wrap code{font-size:14px;font-weight:400}.bp-about-wrap .about-description{margin-top:1.4em;font-weight:400;line-height:1.6;font-size:19px}.bp-about-wrap h3.wp-people-group{margin:2.6em 0 1.33em;padding:0;font-size:16px;line-height:inherit}.bp-about-wrap .wp-people-group{padding:0 5px;margin:0 -15px 0 -5px}.bp-about-wrap .compact{margin-bottom:0}.bp-about-wrap .wp-person{display:inline-block;vertical-align:top;margin-right:10px;padding-bottom:15px;height:70px;width:280px}.bp-about-wrap .compact .wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.bp-about-wrap .wp-person .gravatar{float:left;margin:0 10px 10px 0;padding:1px;width:60px;height:60px}.bp-about-wrap .compact .wp-person .gravatar{width:30px;height:30px}.bp-about-wrap .wp-person .web{margin:6px 0 2px;font-size:16px;font-weight:400;line-height:2;text-decoration:none}.bp-about-wrap .wp-person .title{display:block}.bp-about-wrap p.wp-credits-list a{white-space:nowrap}@media only screen and (max-width:500px){.bp-about-wrap{margin-right:20px;margin-left:10px}.bp-about-wrap .bp-about-wrap h1{margin-right:0}}#adminmenu #toplevel_page_bp-activity .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_user .wp-menu-image:before{content:"\f452"}#adminmenu #toplevel_page_bp-groups .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_user .wp-menu-image:before{content:"\f456"}#adminmenu #toplevel_page_bp-notifications .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_user .wp-menu-image:before{content:"\f439"}#adminmenu #toplevel_page_bp-messages .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_user .wp-menu-image:before{content:"\f457"}#adminmenu #toplevel_page_bp-friends .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before{content:"\f454"}#adminmenu #toplevel_page_bp-settings .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_user .wp-menu-image:before{content:"\f108"}#adminmenu li.toplevel_page_bp-components .wp-menu-image,#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image{content:"\f448"}.settings_page_bp-components td.plugin-title span{float:left;width:18px;height:18px;margin-right:5px}.settings_page_bp-components td.plugin-title span:before{font-family:dashicons;font-size:18px}.settings_page_bp-components tr.activity td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.notifications td.plugin-title span:before{content:"\f339"}.settings_page_bp-components tr.xprofile td.plugin-title span:before{content:"\f336"}.settings_page_bp-components tr.settings td.plugin-title span:before{content:"\f108"}.settings_page_bp-components tr.groups td.plugin-title span:before{content:"\f456"}.settings_page_bp-components tr.messages td.plugin-title span:before{content:"\f457"}.settings_page_bp-components tr.blogs td.plugin-title span:before{content:"\f120"}.settings_page_bp-components tr.friends td.plugin-title span:before{content:"\f454"}.settings_page_bp-components tr.core td.plugin-title span:before{content:"\f448"}.settings_page_bp-components tr.members td.plugin-title span:before{content:"\f307"}.settings_page_bp-page-settings .button-secondary .dashicons{position:relative;top:3px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{width:25%}@media screen and (max-width:782px){.settings_page_bp-components td.plugin-title span{margin-top:5px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{display:block;width:auto}#bp-admin-component-form .subsubsub{margin-bottom:0;padding-bottom:35px}}#adminmenu .toplevel_page_network-tools div.wp-menu-image:before{content:""}.bp-tooltip{position:relative}.bp-tooltip:after{background:#fff;border:1px solid #aaa;border-collapse:separate;border-radius:1px;box-shadow:1px 1px 0 1px rgba(132,132,132,.3);color:#000;content:attr(data-bp-tooltip);display:none;font-family:sans-serif;font-size:11px;font-weight:400;letter-spacing:normal;line-height:1.5;margin-top:10px;max-width:240px;opacity:0;padding:3px 6px;position:absolute;right:50%;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;top:100%;transform:translateX(50%);transition:opacity 2s ease-out;white-space:pre;word-wrap:break-word;z-index:998}.bp-hello-close .bp-tooltip:after{right:0;text-align:right;transform:translateX(0)}.bp-hello-social .bp-tooltip:after{bottom:120%;margin-bottom:20px;margin-top:0;top:auto;transform:translateX(15%)}.bp-tooltip:active:after,.bp-tooltip:focus:after,.bp-tooltip:hover:after{display:inline-block;opacity:1;overflow:visible;text-decoration:none;z-index:999}body.site-users-php th#role,body.users-php th#role,body.users_page_bp-signups th#count_sent{width:10%}body.site-users-php th#email,body.site-users-php th#name,body.users-php th#email,body.users-php th#name,body.users-php th#registered,body.users_page_bp-signups th#date_sent,body.users_page_bp-signups th#email,body.users_page_bp-signups th#name,body.users_page_bp-signups th#registered{width:15%}body.users-php th#blogs,body.users_page_bp-signups th#blogs{width:20%}body.users_page_bp-signups td.count_sent,body.users_page_bp-signups th.column-count_sent{text-align:center}.bp-signups-list table{margin:1em 0}.bp-signups-list .column-fields{font-weight:700}.bp-new-notice-panel{background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);font-size:13px;line-height:2.1;margin:1.5em 0 3em;overflow:auto;padding:10px 25px 25px;position:relative}.bp-new-notice-panel label{clear:both;float:left;margin-right:3%;width:20%}.bp-new-notice-panel input,.bp-new-notice-panel textarea{clear:none;margin-bottom:1em;width:75%}.bp-new-notice-panel input[type=text]:after,.bp-new-notice-panel textarea:after{clear:both;content:" ";display:table}.bp-new-notice-panel .button-primary{margin-left:23%;width:auto}.bp-notice-about{font-size:1em;margin-bottom:1em}.bp-new-notice{margin-bottom:1em;margin-top:0}.bp-notices-list{margin-bottom:0}@media screen and (max-width:782px){.bp-new-notice-panel{margin-bottom:1.5em}.bp-new-notice-panel input,.bp-new-notice-panel textarea{margin-left:0;width:100%}.bp-new-notice-panel .button-primary{margin-left:0;width:auto}.bp-new-notice-panel .button{max-width:45%;word-wrap:break-word}.bp-notice-about{margin-top:0;margin-bottom:1em}.bp-new-notice{margin-bottom:.5em}}body.post-type-bp-email #excerpt{height:auto}body.post-type-bp-email th#situation{width:20%}body.post-type-bp-email td.column-situation ul{margin:0}body.post-type-bp-email .categorydiv label{display:block;float:left;padding-left:25px;text-indent:-25px}#buddypress-update.not-shiny .update-message{border-left:0;padding-left:36px}#buddypress-update.not-shiny .update-message:before{content:"\f534"} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/admin/js/types-admin.js b/wp-content/plugins/buddypress/bp-core/admin/js/types-admin.js new file mode 100644 index 0000000000000000000000000000000000000000..077fdcf3d879d8eff449249371d14f8042d84c5b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/js/types-admin.js @@ -0,0 +1,41 @@ +( function() { + var bpTypesCustomizeForm = function() { + if ( document.querySelector( '#addtag input[name="post_type"]' ) ) { + document.querySelector( '#addtag input[name="post_type"]' ).remove(); + } + + if ( document.querySelectorAll( '.form-field' ) ) { + document.querySelectorAll( '.form-field' ).forEach( function( element ) { + if ( -1 === element.classList.value.indexOf( 'bp-types-form' ) ) { + element.remove(); + } + } ); + } + + if ( document.querySelector( '#bp_type_has_directory' ) ) { + if ( true === document.querySelector( '#bp_type_has_directory' ).checked ) { + document.querySelector( '.term-bp_type_directory_slug-wrap' ).classList.add( 'bp-set-directory-slug' ); + } + + document.querySelector( '#bp_type_has_directory' ).addEventListener( 'change', function( event ) { + if ( true === event.target.checked ) { + document.querySelector( '.term-bp_type_directory_slug-wrap' ).classList.add( 'bp-set-directory-slug' ); + document.querySelector( '#bp_type_directory_slug' ).removeAttribute( 'disabled' ); + } else { + document.querySelector( '.term-bp_type_directory_slug-wrap' ).classList.remove( 'bp-set-directory-slug' ); + document.querySelector( '#bp_type_directory_slug' ).setAttribute( 'disabled', 'disabled' ); + } + } ); + } + + if ( document.querySelector( '#delete-link' ) ) { + document.querySelector( '#delete-link' ).remove(); + } + }; + + if ( 'loading' === document.readyState ) { + document.addEventListener( 'DOMContentLoaded', bpTypesCustomizeForm ); + } else { + bpTypesCustomizeForm; + } +} )(); diff --git a/wp-content/plugins/buddypress/bp-core/admin/js/types-admin.min.js b/wp-content/plugins/buddypress/bp-core/admin/js/types-admin.min.js new file mode 100644 index 0000000000000000000000000000000000000000..643a5963b8a06c271cd3cda0a0ab557bf7caa8b3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/js/types-admin.min.js @@ -0,0 +1 @@ +!function(){var e=function(){document.querySelector('#addtag input[name="post_type"]')&&document.querySelector('#addtag input[name="post_type"]').remove(),document.querySelectorAll(".form-field")&&document.querySelectorAll(".form-field").forEach(function(e){-1===e.classList.value.indexOf("bp-types-form")&&e.remove()}),document.querySelector("#bp_type_has_directory")&&(!0===document.querySelector("#bp_type_has_directory").checked&&document.querySelector(".term-bp_type_directory_slug-wrap").classList.add("bp-set-directory-slug"),document.querySelector("#bp_type_has_directory").addEventListener("change",function(e){!0===e.target.checked?(document.querySelector(".term-bp_type_directory_slug-wrap").classList.add("bp-set-directory-slug"),document.querySelector("#bp_type_directory_slug").removeAttribute("disabled")):(document.querySelector(".term-bp_type_directory_slug-wrap").classList.remove("bp-set-directory-slug"),document.querySelector("#bp_type_directory_slug").setAttribute("disabled","disabled"))})),document.querySelector("#delete-link")&&document.querySelector("#delete-link").remove()};"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",e)}(); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-actions.php b/wp-content/plugins/buddypress/bp-core/bp-core-actions.php index 89296dd79e7e1fe765de7bab49db84a7c64e2f88..caf628b970027bd1493587f1ef7571da66ed6196 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-actions.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-actions.php @@ -82,9 +82,10 @@ add_action( 'bp_init', 'bp_add_rewrite_rules', 30 ); add_action( 'bp_init', 'bp_add_permastructs', 40 ); /** - * The bp_register_taxonomies hook - Attached to 'bp_init' @ priority 2 above. + * The bp_register_taxonomies hooks - Attached to 'bp_init' @ priority 2 above. */ add_action( 'bp_register_taxonomies', 'bp_register_member_types' ); +add_action( 'bp_register_taxonomies', 'bp_register_type_metadata', 20 ); /** * Late includes. diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-blocks.php b/wp-content/plugins/buddypress/bp-core/bp-core-blocks.php index d2cda8de1cad7422406ceaa50c0329e5084206a2..62e4080605ff2f1ba883fa5429da849c6d272895 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-blocks.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-blocks.php @@ -19,7 +19,7 @@ defined( 'ABSPATH' ) || exit; * False otherwise. */ function bp_support_blocks() { - return function_exists( 'register_block_type' ) && bp_rest_api_is_available(); + return bp_is_running_wp( '5.0.0' ) && bp_rest_api_is_available(); } /** @@ -36,6 +36,7 @@ function bp_register_block_components() { 'wp-components', 'wp-i18n', 'wp-api-fetch', + 'wp-url', ), bp_get_version() ); diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-cache.php b/wp-content/plugins/buddypress/bp-core/bp-core-cache.php index 2868eb87f2845610965c3711feea352d01b3452e..12c6742412c917763af3038b2c364434a373359c 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-cache.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-cache.php @@ -390,3 +390,28 @@ function bp_invitations_reset_cache_incrementor() { } add_action( 'bp_invitation_after_save', 'bp_invitations_reset_cache_incrementor' ); add_action( 'bp_invitation_after_delete', 'bp_invitations_reset_cache_incrementor' ); + +/** + * Add a cache group for Database object types. + * + * @since 7.0.0 + */ +function bp_set_object_type_terms_cache_group() { + wp_cache_add_global_groups( 'bp_object_terms' ); +} +add_action( 'bp_setup_cache_groups', 'bp_set_object_type_terms_cache_group' ); + +/** + * Clear the Database object types cache. + * + * @since 7.0.0 + * + * @param int $type_id The Type's term ID. + * @param string $taxonomy The Type's taxonomy name. + */ +function bp_clear_object_type_terms_cache( $type_id = 0, $taxonomy = '' ) { + wp_cache_delete( $taxonomy, 'bp_object_terms' ); +} +add_action( 'bp_type_inserted', 'bp_clear_object_type_terms_cache' ); +add_action( 'bp_type_updated', 'bp_clear_object_type_terms_cache' ); +add_action( 'bp_type_deleted', 'bp_clear_object_type_terms_cache' ); diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-caps.php b/wp-content/plugins/buddypress/bp-core/bp-core-caps.php index 7d1d00482b1c405a179df44e74a9c88eb63907b9..e5a6440ddc4e5d88ba8faa43e5c2f094814edcc3 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-caps.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-caps.php @@ -344,6 +344,49 @@ function bp_user_can( $user_id, $capability, $args = array() ) { return $retval; } +/** + * Adds the `bp_moderate` cap to Roles having the `manage_options` cap when + * BuddyPress is not active on the network. + * + * @since 7.0.0 + * + * @access private + * + * @param WP_Roles $wp_roles The WordPress roles object. + */ +function _bp_roles_init( WP_Roles $wp_roles ) { + $roles_list = array(); + $caps_list = wp_list_pluck( $wp_roles->role_objects, 'capabilities' ); + + // Look for roles having the `manage_options` capability set to true. + $filtered_list = wp_list_filter( $caps_list, array( 'manage_options' => true ) ); + + if ( $filtered_list ) { + $roles_list = array_keys( $filtered_list ); + + // Loop into roles list to add the `bp_moderate` capability. + foreach ( $roles_list as $role ) { + if ( isset( $wp_roles->roles[ $role ] ) ) { + $wp_roles->roles[ $role ]['capabilities']['bp_moderate'] = true; + } + + if ( isset( $wp_roles->role_objects[ $role ] ) ) { + $wp_roles->role_objects[ $role ]->capabilities['bp_moderate'] = true; + } + } + } + + // Make sure to remove the `bp_moderate` capability from roles when BuddyPress is network activated. + if ( bp_is_network_activated() ) { + foreach ( $roles_list as $role ) { + unset( $wp_roles->roles[ $role ]['capabilities']['bp_moderate'], $wp_roles->role_objects[ $role ]->capabilities['bp_moderate'] ); + } + } +} +add_action( 'wp_roles_init', '_bp_roles_init', 10, 1 ); + +/** Deprecated ****************************************************************/ + /** * Temporary implementation of 'bp_moderate' cap. * @@ -363,6 +406,7 @@ function bp_user_can( $user_id, $capability, $args = array() ) { * Plugin authors: Please do not use this function; thank you. :) * * @since 1.6.0 + * @deprecated 7.0.0 * * @access private * @@ -375,6 +419,7 @@ function bp_user_can( $user_id, $capability, $args = array() ) { * @return array $allcaps The user's cap list, with 'bp_moderate' appended, if relevant. */ function _bp_enforce_bp_moderate_cap_for_admins( $caps = array(), $cap = '', $user_id = 0, $args = array() ) { + _deprecated_function( __FUNCTION__, '7.0.0' ); // Bail if not checking the 'bp_moderate' cap. if ( 'bp_moderate' !== $cap ) { @@ -394,9 +439,6 @@ function _bp_enforce_bp_moderate_cap_for_admins( $caps = array(), $cap = '', $us // Only users that can 'manage_options' on this site can 'bp_moderate'. return array( 'manage_options' ); } -add_filter( 'map_meta_cap', '_bp_enforce_bp_moderate_cap_for_admins', 10, 4 ); - -/** Deprecated ****************************************************************/ /** * Adds BuddyPress-specific user roles. diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-catchuri.php b/wp-content/plugins/buddypress/bp-core/bp-core-catchuri.php index 198d423931f32f418b4d007c8b5be5f30ad1b236..df857d4641021f83dbb0ef87626f1ac2331292a2 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-catchuri.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-catchuri.php @@ -463,7 +463,7 @@ function bp_core_load_template( $templates ) { * Wiping out the bp-default template allows WordPress to use their special * embed template, which is what we want. */ - if ( function_exists( 'is_embed' ) && is_embed() ) { + if ( is_embed() ) { $located_template = ''; } diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-dependency.php b/wp-content/plugins/buddypress/bp-core/bp-core-dependency.php index cb3a3f4f5d67ecefece941465e3c50d99d83629c..91d2566b3e054ae7ba7632368c48a74df5e9f364 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-dependency.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-dependency.php @@ -95,6 +95,21 @@ function bp_register_taxonomies() { do_action( 'bp_register_taxonomies' ); } +/** + * Fire the 'bp_register_type_metadata' action, where plugins should register metadata for their custom BuddyPress types. + * + * @since 7.0.0 + */ +function bp_register_type_metadata() { + + /** + * Fires inside the 'bp_register_type_metadata' function, where plugins should register metadata for their custom BuddyPress types. + * + * @since 7.0.0 + */ + do_action( 'bp_register_type_metadata' ); +} + /** * Fire the 'bp_register_post_types' action, where plugins should register post types. * diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-filters.php b/wp-content/plugins/buddypress/bp-core/bp-core-filters.php index d84cdb1f709b7dd8e1f5fb97872d34913e2b6d5a..735c7090a4c96551f1aeb4b91a965903cde7664c 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-filters.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-filters.php @@ -59,6 +59,9 @@ add_filter( 'bp_email_set_content_html', 'stripslashes', 8 ); add_filter( 'bp_email_set_content_plaintext', 'wp_strip_all_tags', 6 ); add_filter( 'bp_email_set_subject', 'sanitize_text_field', 6 ); +// Avatars. +add_filter( 'bp_core_fetch_avatar', 'bp_core_add_loading_lazy_attribute' ); + /** * Template Compatibility. * @@ -691,6 +694,16 @@ add_filter( 'document_title_parts', 'bp_modify_document_title_parts', 20, 1 ); */ function bp_setup_nav_menu_item( $menu_item ) { if ( is_admin() ) { + if ( 'bp_nav_menu_item' === $menu_item->object ) { + $menu_item->type = 'custom'; + $menu_item->url = $menu_item->guid; + + if ( ! in_array( array( 'bp-menu', 'bp-'. $menu_item->post_excerpt .'-nav' ), $menu_item->classes ) ) { + $menu_item->classes[] = 'bp-menu'; + $menu_item->classes[] = 'bp-'. $menu_item->post_excerpt .'-nav'; + } + } + return $menu_item; } @@ -889,6 +902,31 @@ function bp_core_filter_edit_post_link( $edit_link = '', $post_id = 0 ) { return $edit_link; } +/** + * Add 'loading="lazy"' attribute into images and iframes. + * + * @since 7.0.0 + * + * @string $content Content to inject attribute into. + * @return string + */ +function bp_core_add_loading_lazy_attribute( $content = '' ) { + if ( false === strpos( $content, '<img ' ) && false === strpos( $content, '<iframe ' ) ) { + return $content; + } + + $content = str_replace( '<img ', '<img loading="lazy" ', $content ); + $content = str_replace( '<iframe ', '<iframe loading="lazy" ', $content ); + + // WordPress posts need their position absolute removed for lazyloading. + $find_pos_absolute = ' style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" '; + if ( false !== strpos( $content, 'data-secret=' ) && false !== strpos( $content, $find_pos_absolute ) ) { + $content = str_replace( $find_pos_absolute, '', $content ); + } + + return $content; +} + /** * Should BuddyPress load the mentions scripts and related assets, including results to prime the * mentions suggestions? diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-functions.php b/wp-content/plugins/buddypress/bp-core/bp-core-functions.php index 4fd977039914ab3fd552154e47acc1b34b7b4cb5..592f5b155121b0f5a5d950f8c24d94421d55e309 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-functions.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-functions.php @@ -70,6 +70,19 @@ function bp_db_version_raw() { return !empty( $bp->db_version_raw ) ? $bp->db_version_raw : 0; } +/** + * Check whether the current version of WP exceeds a given version. + * + * @since 7.0.0 + * + * @param string $version WP version, in "PHP-standardized" format. + * @param string $compare Optional. Comparison operator. Default '>='. + * @return bool + */ +function bp_is_running_wp( $version, $compare = '>=' ) { + return version_compare( $GLOBALS['wp_version'], $version, $compare ); +} + /** Functions *****************************************************************/ /** @@ -515,7 +528,7 @@ function bp_core_get_directory_page_ids( $status = 'active' ) { unset( $page_ids[ $component_name ] ); } - // 'register' and 'activate' do not have components, but should be whitelisted. + // 'register' and 'activate' do not have components, but are allowed as special cases. if ( in_array( $component_name, array( 'register', 'activate' ), true ) ) { continue; } @@ -1562,7 +1575,7 @@ add_action( 'wp_head', 'bp_core_record_activity' ); * @since 1.0.0 * * @param int|string $last_activity_date The date of last activity. - * @param string $string A sprintf()-able statement of the form 'active %s'. + * @param string $string A sprintf()-able statement of the form 'Active %s'. * @return string $last_active A string of the form '3 years ago'. */ function bp_core_get_last_activity( $last_activity_date = '', $string = '' ) { @@ -1584,7 +1597,7 @@ function bp_core_get_last_activity( $last_activity_date = '', $string = '' ) { * * @param string $last_active Last activity string based on time since date given. * @param string $last_activity_date The date of last activity. - * @param string $string A sprintf()-able statement of the form 'active %s'. + * @param string $string A sprintf()-able statement of the form 'Active %s'. */ return apply_filters( 'bp_core_get_last_activity', $last_active, $last_activity_date, $string ); } @@ -2580,7 +2593,7 @@ function bp_nav_menu_get_loggedin_pages() { 'post_author' => 0, 'post_date' => 0, 'post_excerpt' => $bp_item['slug'], - 'post_type' => 'page', + 'post_type' => 'bp_nav_menu_item', 'post_status' => 'publish', 'comment_status' => 'closed', 'guid' => $bp_item['link'] @@ -2655,7 +2668,7 @@ function bp_nav_menu_get_loggedout_pages() { 'post_author' => 0, 'post_date' => 0, 'post_excerpt' => $bp_item['slug'], - 'post_type' => 'page', + 'post_type' => 'bp_nav_menu_item', 'post_status' => 'publish', 'comment_status' => 'closed', 'guid' => $bp_item['link'] @@ -2936,6 +2949,41 @@ function bp_get_email_post_type_supports() { /** Taxonomies *****************************************************************/ +/** + * Returns the BP Taxonomy common arguments. + * + * @since 7.0.0 + * + * @return array The BP Taxonomy common arguments. + */ +function bp_get_taxonomy_common_args() { + return array( + 'public' => false, + 'show_in_rest' => false, + 'query_var' => false, + 'rewrite' => false, + 'show_in_menu' => false, + 'show_tagcloud' => false, + 'show_ui' => bp_is_root_blog() && bp_current_user_can( 'bp_moderate' ), + ); +} + +/** + * Returns the BP Taxonomy common labels. + * + * @since 7.0.0 + * + * @return array The BP Taxonomy common labels. + */ +function bp_get_taxonomy_common_labels() { + return array( + 'bp_type_name' => _x( 'Plural Name', 'BP Type name label', 'buddypress' ), + 'bp_type_singular_name' => _x( 'Singular name', 'BP Type singular name label', 'buddypress' ), + 'bp_type_has_directory' => _x( 'Has Directory View', 'BP Type has directory checkbox label', 'buddypress' ), + 'bp_type_directory_slug' => _x( 'Custom type directory slug', 'BP Type slug label', 'buddypress' ), + ); +} + /** * Output the name of the email type taxonomy. * @@ -2998,6 +3046,233 @@ function bp_get_email_tax_type_labels() { ) ); } +/** + * Return arguments used by the email type taxonomy. + * + * @since 7.0.0 + * + * @return array + */ +function bp_get_email_tax_type_args() { + + /** + * Filters emails type taxonomy args. + * + * @since 7.0.0 + * + * @param array $value Associative array (key => arg). + */ + return apply_filters( + 'bp_register_email_tax_type', + array_merge( + array( + 'description' => _x( 'BuddyPress email types', 'email type taxonomy description', 'buddypress' ), + 'labels' => bp_get_email_tax_type_labels(), + 'meta_box_cb' => 'bp_email_tax_type_metabox', + ), + bp_get_taxonomy_common_args() + ) + ); +} + +/** + * Returns the default BuddyPress type metadata schema. + * + * @since 7.0.0 + * + * @param boolean $suppress_filters Whether to suppress filters. Default `false`. + * @param string $type_taxonomy Optional. the Type's taxonomy name. + * @return array The default BuddyPress type metadata schema. + */ +function bp_get_type_metadata_schema( $suppress_filters = false, $type_taxonomy = '' ) { + $schema = array( + 'bp_type_singular_name' => array( + 'description' => __( 'The name of this type in singular form. ', 'buddypress' ), + 'type' => 'string', + 'single' => true, + 'sanitize_callback' => 'sanitize_text_field', + ), + 'bp_type_name' => array( + 'description' => __( 'The name of this type in plural form.', 'buddypress' ), + 'type' => 'string', + 'single' => true, + 'sanitize_callback' => 'sanitize_text_field', + ), + 'bp_type_has_directory' => array( + 'description' => __( 'Make a list matching this type available on the directory.', 'buddypress' ), + 'type' => 'boolean', + 'single' => true, + 'sanitize_callback' => 'absint', + ), + 'bp_type_directory_slug' => array( + 'label' => __( 'Type slug', 'buddypress' ), + 'description' => __( 'Enter if you want the type slug to be different from its ID.', 'buddypress' ), + 'type' => 'string', + 'single' => true, + 'sanitize_callback' => 'sanitize_title', + ), + ); + + if ( true === $suppress_filters ) { + return $schema; + } + + /** + * Filter here to add new meta to the BuddyPress type metadata. + * + * @since 7.0.0 + * + * @param array $schema Associative array (name => arguments). + * @param string $type_taxonomy The Type's taxonomy name. + */ + return apply_filters( 'bp_get_type_metadata_schema', $schema, $type_taxonomy ); +} + +/** + * Registers a meta key for BuddyPress types. + * + * @since 7.0.0 + * + * @param string $type_tax The BuddyPress type taxonomy. + * @param string $meta_key The meta key to register. + * @param array $args Data used to describe the meta key when registered. See + * {@see register_meta()} for a list of supported arguments. + * @return bool True if the meta key was successfully registered, false if not. + */ +function bp_register_type_meta( $type_tax, $meta_key, array $args ) { + $taxonomies = wp_list_pluck( bp_get_default_taxonomies(), 'component' ); + + if ( ! isset( $taxonomies[ $type_tax ] ) ) { + return false; + } + + // register_term_meta() was introduced in WP 4.9.8. + if ( ! bp_is_running_wp( '4.9.8' ) ) { + $args['object_subtype'] = $type_tax; + + return register_meta( 'term', $meta_key, $args ); + } + + return register_term_meta( $type_tax, $meta_key, $args ); +} + +/** + * Update a list of metadata for a given type ID and a given taxonomy. + * + * @since 7.0.0 + * + * @param integer $type_id The database ID of the BP Type. + * @param string $taxonomy The BP Type taxonomy. + * @param array $type_metas An associative array (meta_key=>meta_value). + * @return boolean False on failure. True otherwise. + */ +function bp_update_type_metadata( $type_id = 0, $taxonomy = '', $type_metas = array() ) { + if ( ! $type_id || ! $taxonomy || ! is_array( $type_metas ) ) { + return false; + } + + foreach ( $type_metas as $meta_key => $meta_value ) { + if ( ! registered_meta_key_exists( 'term', $meta_key, $taxonomy ) ) { + continue; + } + + update_term_meta( $type_id, $meta_key, $meta_value ); + } + + return true; +} + +/** + * Get types for a given BP Taxonomy. + * + * @since 7.0.0 + * + * @param string $taxonomy The taxonomy to transform terms in types for. + * @param array $types Existing types to merge with the types found into the database. + * For instance this function is used internally to merge Group/Member + * types registered using code with the ones created by the administrator + * from the Group/Member types Administration screen. If not provided, only + * Types created by the administrator will be returned. + * Optional. + * @return array The types of the given taxonomy. + */ +function bp_get_taxonomy_types( $taxonomy = '', $types = array() ) { + if ( ! $taxonomy ) { + return $types; + } + + $db_types = wp_cache_get( $taxonomy, 'bp_object_terms' ); + + if ( ! $db_types ) { + $terms = bp_get_terms( + array( + 'taxonomy' => $taxonomy, + ) + ); + + if ( ! is_array( $terms ) || ! $terms ) { + return $types; + } + + $type_metadata = array_keys( get_registered_meta_keys( 'term', $taxonomy ) ); + + foreach ( $terms as $term ) { + $type_name = $term->name; + $db_types[ $type_name ] = new stdClass(); + $db_types[ $type_name ]->db_id = $term->term_id; + $db_types[ $type_name ]->labels = array(); + $db_types[ $type_name ]->name = $type_name; + + if ( $type_metadata ) { + foreach ( $type_metadata as $meta_key ) { + $type_key = str_replace( 'bp_type_', '', $meta_key ); + if ( in_array( $type_key, array( 'name', 'singular_name' ), true ) ) { + $db_types[ $type_name ]->labels[ $type_key ] = get_term_meta( $term->term_id, $meta_key, true ); + } else { + $db_types[ $type_name ]->{$type_key} = get_term_meta( $term->term_id, $meta_key, true ); + } + } + + if ( ! empty( $db_types[ $type_name ]->has_directory ) && empty( $db_types[ $type_name ]->directory_slug ) ) { + $db_types[ $type_name ]->directory_slug = $term->slug; + } + } + } + + wp_cache_set( $taxonomy, $db_types, 'bp_object_terms' ); + } + + if ( is_array( $db_types ) ) { + foreach ( $db_types as $db_type_name => $db_type ) { + // Override props of registered by code types if customized by the admun user. + if ( isset( $types[ $db_type_name ] ) && isset( $types[ $db_type_name ]->code ) && $types[ $db_type_name ]->code ) { + // Merge Labels. + if ( $db_type->labels ) { + foreach ( $db_type->labels as $key_label => $value_label ) { + if ( '' !== $value_label ) { + $types[ $db_type_name ]->labels[ $key_label ] = $value_label; + } + } + } + + // Merge other properties. + foreach ( get_object_vars( $types[ $db_type_name ] ) as $key_prop => $value_prop ) { + if ( 'labels' === $key_prop || 'name' === $key_prop ) { + continue; + } + + if ( isset( $db_type->{$key_prop} ) && '' !== $db_type->{$key_prop} ) { + $types[ $db_type_name ]->{$key_prop} = $db_type->{$key_prop}; + } + } + + unset( $db_types[ $db_type_name ] ); + } + } + } + + return array_merge( $types, (array) $db_types ); +} /** Email *****************************************************************/ @@ -3280,7 +3555,7 @@ function bp_email_get_appearance_settings() { ) ); - if ( version_compare( $GLOBALS['wp_version'], '4.9.6', '>=' ) ) { + if ( bp_is_running_wp( '4.9.6' ) ) { $privacy_policy_url = get_privacy_policy_url(); if ( $privacy_policy_url ) { $footer_text[] = sprintf( @@ -3400,7 +3675,15 @@ function bp_core_replace_tokens_in_text( $text, $tokens ) { * @return array */ function bp_email_get_schema() { - return array( + + /** + * Filters the list of `bp_email_get_schema()` allowing anyone to add/remove emails. + * + * @since 7.0.0 + * + * @param array $emails The array of emails schema. + */ + return (array) apply_filters( 'bp_email_get_schema', array( 'activity-comment' => array( /* translators: do not remove {} brackets or translate its contents. */ 'post_title' => __( '[{{{site.name}}}] {{poster.name}} replied to one of your updates', 'buddypress' ), @@ -3532,7 +3815,7 @@ function bp_email_get_schema() { /* translators: do not remove {} brackets or translate its contents. */ 'post_excerpt' => __( "Your membership request for the group \"{{group.name}}\" has been rejected.\n\nTo request membership again, visit: {{{group.url}}}", 'buddypress' ), ), - ); + ) ); } /** @@ -3559,7 +3842,7 @@ function bp_email_get_type_schema( $field = 'description' ) { 'unsubscribe' => array( 'meta_key' => 'notification_activity_new_reply', 'message' => __( 'You will no longer receive emails when someone replies to an update or comment you posted.', 'buddypress' ), - ), + ), ); $activity_comment_author = array( @@ -3567,7 +3850,7 @@ function bp_email_get_type_schema( $field = 'description' ) { 'unsubscribe' => array( 'meta_key' => 'notification_activity_new_reply', 'message' => __( 'You will no longer receive emails when someone replies to an update or comment you posted.', 'buddypress' ), - ), + ), ); $activity_at_message = array( diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-moderation.php b/wp-content/plugins/buddypress/bp-core/bp-core-moderation.php index 8d2a9c775095da82f99572c49db26ea4de73d5b1..16e3a4ebd7ac2a824a665273d6568fc882b4076c 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-moderation.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-moderation.php @@ -141,13 +141,13 @@ function bp_core_check_for_moderation( $user_id = 0, $title = '', $content = '', */ // Get the moderation keys. - $blacklist = trim( get_option( 'moderation_keys' ) ); + $disallowed = trim( get_option( 'moderation_keys' ) ); - // Bail if blacklist is empty. - if ( ! empty( $blacklist ) ) { + // Bail if list is empty. + if ( ! empty( $disallowed ) ) { // Get words separated by new lines. - $words = explode( "\n", $blacklist ); + $words = explode( "\n", $disallowed ); // Loop through words. foreach ( (array) $words as $word ) { @@ -187,10 +187,7 @@ function bp_core_check_for_moderation( $user_id = 0, $title = '', $content = '', /** * Check for blocked keys. * - * @since 1.6.0 - * @since 2.6.0 Added $error_type parameter. - * - * @todo Why don't we use wp_blacklist_check() for this? + * @since 7.0.0 * * @param int $user_id User ID. * @param string $title The title of the content. @@ -198,19 +195,34 @@ function bp_core_check_for_moderation( $user_id = 0, $title = '', $content = '', * @param string $error_type The error type to return. Either 'bool' or 'wp_error'. * @return bool|WP_Error True if test is passed, false if fail. */ -function bp_core_check_for_blacklist( $user_id = 0, $title = '', $content = '', $error_type = 'bool' ) { +function bp_core_check_for_disallowed_keys( $user_id = 0, $title = '', $content = '', $error_type = 'bool' ) { /** * Filters whether or not to bypass checking for blocked keys. * * @since 2.2.0 + * @deprecated 7.0.0 Use 'bp_bypass_check_for_disallowed_keys' instead. + * + * @param bool $value Whether or not to bypass checking. Default false. + * @param int $user_id Topic of reply author ID. + * @param string $title The title of the content. + * @param string $content $the content being posted. + */ + if ( apply_filters_deprecated( 'bp_bypass_check_for_blacklist', array( false, $user_id, $title, $content ), '7.0.0', 'bp_bypass_check_for_disallowed_keys' ) ) { + return true; + } + + /** + * Filters whether or not to bypass checking for blocked keys. + * + * @since 7.0.0 * * @param bool $value Whether or not to bypass checking. Default false. * @param int $user_id Topic of reply author ID. * @param string $title The title of the content. * @param string $content $the content being posted. */ - if ( apply_filters( 'bp_bypass_check_for_blacklist', false, $user_id, $title, $content ) ) { + if ( apply_filters( 'bp_bypass_check_for_disallowed_keys', false, $user_id, $title, $content ) ) { return true; } @@ -226,10 +238,17 @@ function bp_core_check_for_blacklist( $user_id = 0, $title = '', $content = '', */ // Get the moderation keys. - $blacklist = trim( get_option( 'blacklist_keys' ) ); + $disallowed = get_option( 'disallowed_keys' ); + + // Support for WP < 5.5. + if ( false === $disallowed ) { + $disallowed = get_option( 'blacklist_keys' ); + } + + $disallowed = trim( $disallowed ); - // Bail if blacklist is empty. - if ( empty( $blacklist ) ) { + // Bail if disallowed list is empty. + if ( empty( $disallowed ) ) { return true; } @@ -262,7 +281,7 @@ function bp_core_check_for_blacklist( $user_id = 0, $title = '', $content = '', */ // Get words separated by new lines. - $words = explode( "\n", $blacklist ); + $words = explode( "\n", $disallowed ); // Loop through words. foreach ( (array) $words as $word ) { @@ -286,7 +305,7 @@ function bp_core_check_for_blacklist( $user_id = 0, $title = '', $content = '', if ( 'bool' === $error_type ) { return false; } else { - return new WP_Error( 'bp_moderation_blacklist_match', _x( 'You have posted an inappropriate word.', 'Comment blacklist', 'buddypress' ) ); + return new WP_Error( 'bp_moderation_disallowed_key_match', _x( 'You have posted an inappropriate word.', 'Comment disallowed key', 'buddypress' ) ); } } } diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-rest-api.php b/wp-content/plugins/buddypress/bp-core/bp-core-rest-api.php index 3246b10b47c1b2642ec850dc92a9162f404c7618..40771ef342c2b2be78252d79561ab6a7ba510bae 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-rest-api.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-rest-api.php @@ -56,7 +56,7 @@ function bp_rest_api_is_available() { * * @param boolean $value True if the BP REST API is available. False otherwise. */ - return apply_filters( 'bp_rest_api_is_available', function_exists( 'create_initial_rest_routes' ) && bp_rest_in_buddypress() ) || bp_rest_is_plugin_active(); + return apply_filters( 'bp_rest_api_is_available', bp_is_running_wp( '4.7.0' ) && bp_rest_in_buddypress() ) || bp_rest_is_plugin_active(); } /** diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-taxonomy.php b/wp-content/plugins/buddypress/bp-core/bp-core-taxonomy.php index 14334e00ddd764c0859d3eddd90bc05d3b39f4dd..69932c9530d9ad64fa3dd042b3cf7daf7e785931 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-taxonomy.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-taxonomy.php @@ -14,33 +14,58 @@ // Exit if accessed directly. defined( 'ABSPATH' ) || exit; +/** + * Returns default BuddyPress taxonomies. + * + * @since 7.0.0 + * + * @return array The BuddyPress default taxonomies. + */ +function bp_get_default_taxonomies() { + $taxonomies = array( + // Member Type. + bp_get_member_type_tax_name() => array( + 'object' => 'user', + 'component' => 'members', + 'args' => bp_get_member_type_tax_args(), + ), + // Email type. + bp_get_email_tax_type() => array( + 'object' => bp_get_email_post_type(), + 'component' => 'core', + 'args' => bp_get_email_tax_type_args(), + ), + ); + + /** + * This filter should only be used by built-in BuddyPress Components. + * + * @since 7.0.0 + * + * @param array $taxonomies The taxonomy arguments used for WordPress registration. + */ + return apply_filters( 'bp_get_default_taxonomies', $taxonomies ); +} + /** * Register our default taxonomies. * * @since 2.2.0 */ function bp_register_default_taxonomies() { - // Member Type. - register_taxonomy( bp_get_member_type_tax_name(), 'user', array( - 'public' => false, - ) ); - - // Email type. - register_taxonomy( - bp_get_email_tax_type(), - bp_get_email_post_type(), - apply_filters( 'bp_register_email_tax_type', array( - 'description' => _x( 'BuddyPress email types', 'email type taxonomy description', 'buddypress' ), - 'labels' => bp_get_email_tax_type_labels(), - 'meta_box_cb' => 'bp_email_tax_type_metabox', - 'public' => false, - 'query_var' => false, - 'rewrite' => false, - 'show_in_menu' => false, - 'show_tagcloud' => false, - 'show_ui' => bp_is_root_blog() && bp_current_user_can( 'bp_moderate' ), - ) ) - ); + $taxonomies = bp_get_default_taxonomies(); + + foreach ( $taxonomies as $taxonomy_name => $taxonomy_params ) { + if ( ! isset( $taxonomy_params['object'] ) || ! isset( $taxonomy_params['args'] ) ) { + continue; + } + + register_taxonomy( + $taxonomy_name, + $taxonomy_params['object'], + $taxonomy_params['args'] + ); + } } add_action( 'bp_register_taxonomies', 'bp_register_default_taxonomies' ); @@ -277,3 +302,201 @@ function bp_get_term_by( $field, $value, $taxonomy = '', $output = OBJECT, $filt return $term; } + +/** + * Add a new taxonomy term to the database. + * + * @since 7.0.0 + * + * @param string $term The BP term name to add. + * @param string $taxonomy The BP taxonomy to which to add the BP term. + * @param array $args { + * Optional. Array of arguments for inserting a BP term. + * @type string $description The term description. Default empty string. + * @type string $slug The term slug to use. Default empty string. + * @type array $metas The term metas to add. Default empty array. + * } + * @return array|WP_Error An array containing the `term_id` and `term_taxonomy_id`, + * WP_Error otherwise. + */ +function bp_insert_term( $term, $taxonomy = '', $args = array() ) { + if ( ! taxonomy_exists( $taxonomy ) ) { + return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.', 'buddypress' ) ); + } + + $site_id = bp_get_taxonomy_term_site_id( $taxonomy ); + + $switched = false; + if ( $site_id !== get_current_blog_id() ) { + switch_to_blog( $site_id ); + bp_register_taxonomies(); + $switched = true; + } + + $term_metas = array(); + if ( isset( $args['metas'] ) ) { + $term_metas = (array) $args['metas']; + unset( $args['metas'] ); + } + + /** + * Fires before a BP Term is added to the database. + * + * @since 7.0.0 + * + * @param string $term The BP term name to add. + * @param string $taxonomy The BP taxonomy to which to add the term. + * @param array $args Array of arguments for inserting a BP term. + */ + do_action( 'bp_before_insert_term', $term, $taxonomy, $args ); + + $tt_id = wp_insert_term( $term, $taxonomy, $args ); + + if ( is_wp_error( $tt_id ) ) { + return $tt_id; + } + + $term_id = reset( $tt_id ); + + if ( $term_metas ) { + bp_update_type_metadata( $term_id, $taxonomy, $term_metas ); + } + + if ( $switched ) { + restore_current_blog(); + } + + /** + * Fires when taxonomy terms have been set on BuddyPress objects. + * + * @since 7.0.0 + * + * @param array $tt_ids An array containing the `term_id` and `term_taxonomy_id`. + * @param string $taxonomy Taxonomy name. + * @param array $term_metas The term metadata. + */ + do_action( 'bp_insert_term', $tt_id, $taxonomy, $term_metas ); + + return $tt_id; +} + +/** + * Get taxonomy BP Terms from the database. + * + * @since 7.0.0 + * + * @param array $args { + * Array of arguments to query BP Terms. + * @see `get_terms()` for full description of arguments in case of a member type. + * } + * @return array The list of terms matching arguments. + */ +function bp_get_terms( $args = array() ) { + $args = bp_parse_args( + $args, + array( + 'taxonomy' => '', + 'number' => '', + 'hide_empty' => false, + ), + 'get_terms' + ); + + if ( ! $args['taxonomy'] ) { + return array(); + } + + $site_id = bp_get_taxonomy_term_site_id( $args['taxonomy'] ); + + $switched = false; + if ( $site_id !== get_current_blog_id() ) { + switch_to_blog( $site_id ); + bp_register_taxonomies(); + $switched = true; + } + + $terms = get_terms( $args ); + + if ( $switched ) { + restore_current_blog(); + } + + /** + * Filter here to modify the BP Terms found into the database. + * + * @since 7.0.0 + * + * @param array $terms The list of terms matching arguments. + * @param array $args Array of arguments used to query BP Terms. + */ + return apply_filters( + 'bp_get_terms', + $terms, + $args + ); +} + +/** + * Deletes a BP Term. + * + * @since 7.0.0 + * + * @param int $term_id The BP Term ID. Required. + * @param string $taxonomy The BP Taxonomy Name. Required. + * @return bool|WP_Error True on success, WP_Error on failure. + */ +function bp_delete_term( $term_id = 0, $taxonomy = '' ) { + if ( ! $term_id || ! $taxonomy ) { + return new WP_Error( 'missing_arguments', __( 'Sorry, the term ID and the taxonomy are required arguments.', 'buddypress' ) ); + } + + $site_id = bp_get_taxonomy_term_site_id( $taxonomy ); + + $switched = false; + if ( $site_id !== get_current_blog_id() ) { + switch_to_blog( $site_id ); + bp_register_taxonomies(); + $switched = true; + } + + /** + * Fires before a BP Term is deleted from the database. + * + * @since 7.0.0 + * + * @param int $term_id The BP Term ID. + * @param string $taxonomy The BP Taxonomy Name. + */ + do_action( 'bp_before_delete_term', $term_id, $taxonomy ); + + $deleted = wp_delete_term( $term_id, $taxonomy ); + + if ( $switched ) { + restore_current_blog(); + } + + if ( is_wp_error( $deleted ) ) { + return $deleted; + } + + if ( false === $deleted ) { + return new WP_Error( 'inexistant_term', __( 'Sorry, the term does not exist.', 'buddypress' ) ); + } + + if ( 0 === $deleted ) { + return new WP_Error( 'default_term', __( 'Sorry, the default term cannot be deleted.', 'buddypress' ) ); + } + + /** + * Fires once a BP Term has been deleted from the database. + * + * @since 7.0.0 + * + * @param boolean $deleted True. + * @param int $term_id The deleted BP Term ID. + * @param string $taxonomy The BP Taxonomy Name of the deleted BP Term ID. + */ + do_action( 'bp_delete_term', $deleted, $term_id, $taxonomy ); + + return $deleted; +} diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-template-loader.php b/wp-content/plugins/buddypress/bp-core/bp-core-template-loader.php index 2c1000a1aa8ed1309f7a8c31cc8973795f550a8c..9191e2915d97488b0aa3f2e2f845c3b9adb36193 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-template-loader.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-template-loader.php @@ -18,14 +18,16 @@ defined( 'ABSPATH' ) || exit; * Get a BuddyPress template part for display in a theme. * * @since 1.7.0 + * @since 7.0.0 Added $args parameter. * * @param string $slug Template part slug. Used to generate filenames, * eg 'friends' for 'friends.php'. * @param string|null $name Optional. Template part name. Used to generate * secondary filenames, eg 'personal' for 'activity-personal.php'. + * @param array $args Optional. Extra args to pass to locate_template(). * @return false|string Path to located template. See {@link bp_locate_template()}. */ -function bp_get_template_part( $slug, $name = null ) { +function bp_get_template_part( $slug, $name = null, $args = array() ) { /** * Fires at the start of bp_get_template_part(). @@ -33,11 +35,13 @@ function bp_get_template_part( $slug, $name = null ) { * This is a variable hook that is dependent on the slug passed in. * * @since 1.7.0 + * @since 7.0.0 Added $args parameter. * * @param string $slug Template part slug requested. * @param string $name Template part name requested. + * @param array $args Extra args to pass to locate_template(). */ - do_action( 'get_template_part_' . $slug, $slug, $name ); + do_action( 'get_template_part_' . $slug, $slug, $name, $args ); // Setup possible parts. $templates = array(); @@ -50,15 +54,17 @@ function bp_get_template_part( $slug, $name = null ) { * Filters the template parts to be loaded. * * @since 1.7.0 + * @since 7.0.0 Added $args parameter. * * @param array $templates Array of templates located. * @param string $slug Template part slug requested. * @param string $name Template part name requested. + * @param array $args Extra args to pass to locate_template(). */ - $templates = apply_filters( 'bp_get_template_part', $templates, $slug, $name ); + $templates = apply_filters( 'bp_get_template_part', $templates, $slug, $name, $args ); // Return the part that is found. - return bp_locate_template( $templates, true, false ); + return bp_locate_template( $templates, true, false, $args ); } /** @@ -68,15 +74,17 @@ function bp_get_template_part( $slug, $name = null ) { * prepended to the slug. * * @since 2.6.0 + * @since 7.0.0 Added $args parameter. * * @see bp_get_template_part() for full documentation. * * @param string $slug Template slug. * @param string|null $name Template name. + * @param array $args Optional. Extra args to pass to locate_template(). * @return false|string */ -function bp_get_asset_template_part( $slug, $name = null ) { - return bp_get_template_part( "assets/{$slug}", $name ); +function bp_get_asset_template_part( $slug, $name = null, $args = array() ) { + return bp_get_template_part( "assets/{$slug}", $name, $args ); } /** @@ -87,15 +95,17 @@ function bp_get_asset_template_part( $slug, $name = null ) { * not found in either of those, it looks in the theme-compat folder last. * * @since 1.7.0 + * @since 7.0.0 Added $args parameter. * * @param string|array $template_names Template file(s) to search for, in order. * @param bool $load Optional. If true, the template file will be loaded when * found. If false, the path will be returned. Default: false. * @param bool $require_once Optional. Whether to require_once or require. Has * no effect if $load is false. Default: true. + * @param array $args Optional. Extra args to pass to locate_template(). * @return string The template filename if one is located. */ -function bp_locate_template( $template_names, $load = false, $require_once = true ) { +function bp_locate_template( $template_names, $load = false, $require_once = true, $args = array() ) { // Bail when there are no templates to locate. if ( empty( $template_names ) ) { @@ -140,7 +150,7 @@ function bp_locate_template( $template_names, $load = false, $require_once = tru * If you want to override a specific template part, please either filter * 'bp_get_template_part' or add a new location to the template stack. */ - do_action( 'bp_locate_template', $located, $template_name, $template_names, $template_locations, $load, $require_once ); + do_action( 'bp_locate_template', $located, $template_name, $template_names, $template_locations, $load, $require_once, $args ); /** * Filter here to allow/disallow template loading. @@ -152,7 +162,7 @@ function bp_locate_template( $template_names, $load = false, $require_once = tru $load_template = (bool) apply_filters( 'bp_locate_template_and_load', true ); if ( $load_template && $load && ! empty( $located ) ) { - load_template( $located, $require_once ); + load_template( $located, $require_once, $args ); } return $located; @@ -320,22 +330,24 @@ function bp_get_template_stack() { * Put a template part into an output buffer, and return it. * * @since 1.7.0 + * @since 7.0.0 Added $args parameter. * - * @see bp_get_template_part() for a description of $slug and $name params. + * @see bp_get_template_part() for a description of $slug, $name and $args params. * * @param string $slug See {@link bp_get_template_part()}. * @param string|null $name See {@link bp_get_template_part()}. * @param bool $echo If true, template content will be echoed. If false, * returned. Default: true. + * @param array $args See {@link bp_get_template_part()}. * @return string|null If $echo, returns the template content. */ -function bp_buffer_template_part( $slug, $name = null, $echo = true ) { +function bp_buffer_template_part( $slug, $name = null, $echo = true, $args = array() ) { ob_start(); // Remove 'bp_replace_the_content' filter to prevent infinite loops. remove_filter( 'the_content', 'bp_replace_the_content' ); - bp_get_template_part( $slug, $name ); + bp_get_template_part( $slug, $name, $args ); // Remove 'bp_replace_the_content' filter to prevent infinite loops. add_filter( 'the_content', 'bp_replace_the_content' ); diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-template.php b/wp-content/plugins/buddypress/bp-core/bp-core-template.php index 9fc92249a59b04c011d4555bb085979cb9ded57f..799a69cdc8a6144c29600a99cdc791f41283388f 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-template.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-template.php @@ -988,7 +988,7 @@ function bp_create_excerpt( $text, $length = 225, $options = array() ) { * * @since 1.1.0 * - * @param string $truncate Generated excerpt. + * @param string $text Generated excerpt. * @param string $original_text Original text provided. * @param int $length Length of returned string, including ellipsis. * @param array $options Array of HTML attributes and options. diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-theme-compatibility.php b/wp-content/plugins/buddypress/bp-core/bp-core-theme-compatibility.php index 787c6b5b03d8e75a6d51f2eba96e60c323a9ec8e..f6a40e22b5c15eb402a3d9d279efce16a99dad1b 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-theme-compatibility.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-theme-compatibility.php @@ -665,7 +665,7 @@ function bp_theme_compat_reset_post( $args = array() ) { */ function bp_template_include_theme_compat( $template = '' ) { // If embed template, bail. - if ( true === function_exists( 'is_embed' ) && is_embed() ) { + if ( is_embed() ) { return $template; } diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-wpabstraction.php b/wp-content/plugins/buddypress/bp-core/bp-core-wpabstraction.php index 726e96ce9b773fac9f8e2da7b3eb924e925275b0..ebeb1fbc3607d58980dd46e10a5f6778af14a2c8 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-wpabstraction.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-wpabstraction.php @@ -312,7 +312,7 @@ if ( !function_exists( 'mb_strrpos' ) ) { * Returns the name of the hook to use once a WordPress Site is inserted into the Database. * * WordPress 5.1.0 deprecated the `wpmu_new_blog` action. As BuddyPress is supporting WordPress back - * to 4.8.0, this function makes sure we are using the new hook `wp_initialize_site` when the current + * to 4.9.0, this function makes sure we are using the new hook `wp_initialize_site` when the current * WordPress version is upper or equal to 5.1.0 and that we keep on using `wpmu_new_blog` for earlier * versions of WordPress. * @@ -405,7 +405,7 @@ add_action( bp_insert_site_hook(), 'bp_insert_site' ); * Returns the name of the hook to use once a WordPress Site is deleted. * * WordPress 5.1.0 deprecated the `delete_blog` action. As BuddyPress is supporting WordPress back - * to 4.8.0, this function makes sure we are using the new hook `wp_validate_site_deletion` when the + * to 4.9.0, this function makes sure we are using the new hook `wp_validate_site_deletion` when the * current WordPress version is upper or equal to 5.1.0 and that we keep on using `delete_blog` for * earlier versions of WordPress. * @@ -472,3 +472,24 @@ function bp_delete_site( $site_id_or_error, $drop_or_site = false ) { do_action( 'bp_delete_site', $site_id, $drop ); } add_action( bp_delete_site_hook(), 'bp_delete_site', 10, 2 ); + +if ( ! function_exists( 'wp_parse_list' ) ) { + /** + * Cleans up an array, comma- or space-separated list of scalar values. + * + * As BuddyPress supports older WordPress versions than 5.1 (4.9 & 5.0), + * the BP REST API needs this function to be available. + * + * @since 7.0.0 + * + * @param array|string $list List of values. + * @return array Sanitized array of values. + */ + function wp_parse_list( $list ) { + if ( ! is_array( $list ) ) { + return preg_split( '/[\s,]+/', $list, -1, PREG_SPLIT_NO_EMPTY ); + } + + return $list; + } +} diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-admin-types.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-admin-types.php new file mode 100644 index 0000000000000000000000000000000000000000..341352906e19d605af5057c5f376633e6d790eb4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-admin-types.php @@ -0,0 +1,618 @@ +<?php +/** + * BuddyPress Types Admin Class. + * + * @package BuddyPress + * @subpackage CoreAdministration + * @since 7.0.0 + */ + +// Exit if accessed directly. +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( 'BP_Admin_Types' ) ) : + +/** + * Load BuddyPress Types admin area. + * + * @since 7.O.0 + */ +class BP_Admin_Types { + /** + * Current BuddyPress taxonomy. + * + * @since 7.0.0 + * @var string + */ + public $taxonomy = ''; + + /** + * All registered BuddyPress taxonomies. + * + * @since 7.0.0 + * @var array() + */ + public $taxonomies = array(); + + /** + * Current screen ID. + * + * @since 7.0.0 + * @var string + */ + public $screen_id = ''; + + /** + * The main BuddyPress Types admin loader. + * + * @since 7.0.0 + */ + public function __construct() { + $this->setup_globals(); + + if ( $this->taxonomy && $this->screen_id ) { + $this->includes(); + $this->setup_hooks(); + + if ( isset( $_POST['action'] ) || isset( $_GET['action'] ) ) { + if ( isset( $_GET['action'] ) ) { + $action = wp_unslash( $_GET['action'] ); + } else { + $action = wp_unslash( $_POST['action'] ); + } + + $this->handle_action( $action ); + } + } + } + + /** + * Register BP Types Admin. + * + * @since 7.0.0 + * + * @return BP_Admin_Types + */ + public static function register_types_admin() { + if ( ! is_admin() ) { + return; + } + + $bp = buddypress(); + + if ( empty( $bp->core->types_admin ) ) { + $bp->core->types_admin = new self; + } + + return $bp->core->types_admin; + } + + /** + * Set the globals. + * + * @since 7.0.0 + */ + private function setup_globals() { + $current_screen = get_current_screen(); + + if ( isset( $current_screen->taxonomy ) && $current_screen->taxonomy ) { + $this->taxonomies = bp_get_default_taxonomies(); + + if ( isset( $this->taxonomies[ $current_screen->taxonomy ] ) ) { + $this->taxonomy = $current_screen->taxonomy; + $this->screen_id = $current_screen->id; + } + } + } + + /** + * Include Admin functions. + * + * @since 7.0.0 + */ + private function includes() { + require plugin_dir_path( dirname( __FILE__ ) ) . 'admin/bp-core-admin-types.php'; + } + + /** + * Set hooks. + * + * @since 7.0.0 + */ + private function setup_hooks() { + // Actions. + add_action( 'admin_head-edit-tags.php', array( $this, 'screen_head' ) ); + add_action( 'admin_head-term.php', array( $this, 'screen_head' ) ); + add_action( 'bp_admin_enqueue_scripts', array( $this, 'screen_scripts' ) ); + add_action( "{$this->taxonomy}_add_form_fields", array( $this, 'add_form_fields' ), 10, 1 ); + add_action( "{$this->taxonomy}_edit_form_fields", array( $this, 'edit_form_fields' ), 10, 2 ); + + // Filters + add_filter( 'bp_core_admin_register_scripts', array( $this, 'register_scripts' ) ); + add_filter( "manage_{$this->screen_id}_columns", array( $this, 'column_headers' ), 10, 1 ); + add_filter( "manage_{$this->taxonomy}_custom_column", array( $this, 'column_contents' ), 10, 3 ); + add_filter( "{$this->taxonomy}_row_actions", array( $this, 'row_actions' ), 10, 2 ); + add_filter( "bulk_actions-{$this->screen_id}", '__return_empty_array', 10, 1 ); + } + + /** + * Handle BP Type actions. + * + * @since 7.0.0 + * + * @param string $action Required. The action to handle ('add-tag', 'editedtag' or 'delete' ). + */ + private function handle_action( $action ) { + $referer = wp_get_referer(); + + if ( ! bp_current_user_can( 'bp_moderate' ) ) { + return; + } + + // Adding a new type into the database. + if ( 'add-tag' === $action ) { + check_admin_referer( 'add-tag', '_wpnonce_add-tag' ); + + $result = bp_core_admin_insert_type( $_POST ); + + if ( is_wp_error( $result ) ) { + $referer = add_query_arg( + array_merge( + $result->get_error_data(), + array( + 'error' => 1, + ) + ), + $referer + ); + + wp_safe_redirect( $referer ); + exit; + } + + wp_safe_redirect( add_query_arg( 'message', 2, $referer ) ); + exit; + + // Updating an existing type intot the Database. + } elseif ( 'editedtag' === $action ) { + $args = $_POST; + $args['type_term_id'] = 0; + unset( $args['tag_ID'] ); + + if ( isset( $_POST['tag_ID'] ) ) { + $args['type_term_id'] = $_POST['tag_ID']; + } + + if ( isset( $_POST['taxonomy'] ) ) { + $args['taxonomy'] = $_POST['taxonomy']; + } + + check_admin_referer( 'update-tag_' . $args['type_term_id'] ); + + $result = bp_core_admin_update_type( $args ); + + if ( is_wp_error( $result ) ) { + $referer = add_query_arg( + array_merge( + $result->get_error_data(), + array( + 'error' => 1, + ) + ), + $referer + ); + + wp_safe_redirect( $referer ); + exit; + } + + wp_safe_redirect( add_query_arg( 'message', 4, $referer ) ); + exit; + + // Deletes a type. + } elseif ( 'delete' === $action ) { + $args = $_GET; + $args['type_term_id'] = 0; + unset( $args['tag_ID'] ); + + if ( isset( $_GET['tag_ID'] ) ) { + $args['type_term_id'] = $_GET['tag_ID']; + } + + if ( isset( $_GET['taxonomy'] ) ) { + $args['taxonomy'] = $_GET['taxonomy']; + } + + check_admin_referer( 'delete-tag_' . $args['type_term_id'] ); + $referer = remove_query_arg( array( 'action', 'tag_ID', '_wpnonce' ), $referer ); + + // Delete the type. + $result = bp_core_admin_delete_type( $args ); + + if ( is_wp_error( $result ) ) { + $referer = add_query_arg( + array_merge( + $result->get_error_data(), + array( + 'error' => 1, + ) + ), + $referer + ); + + wp_safe_redirect( $referer ); + exit; + } + + wp_safe_redirect( add_query_arg( 'message', 9, $referer ) ); + exit; + } + } + + /** + * Override the Admin parent file to highlight the right menu. + * + * @since 7.0.0 + */ + public function screen_head() { + global $parent_file; + + if ( 'members' === $this->taxonomies[ $this->taxonomy ]['component'] ) { + $parent_file = 'users.php'; + } else { + $parent_file = 'bp-' . $this->taxonomies[ $this->taxonomy ]['component']; + } + } + + /** + * Registers script. + * + * @since 7.0.0 + */ + public function register_scripts( $scripts = array() ) { + // Neutralize WordPress Taxonomy scripts. + wp_dequeue_script( 'admin-tags' ); + wp_dequeue_script( 'inline-edit-tax' ); + + // Adapt some styles. + wp_add_inline_style( + 'common', + '.form-field:not(.bp-types-form), .term-bp_type_directory_slug-wrap:not(.bp-set-directory-slug), .edit-tag-actions #delete-link { display: none; }' + ); + + // Register the Types admin script. + return array_merge( + $scripts, + array( + 'bp-admin-types' => array( + 'file' => sprintf( + '%1$sadmin/js/types-admin%2$s.js', + plugin_dir_url( dirname( __FILE__ ) ), + bp_core_get_minified_asset_suffix() + ), + 'dependencies' => array(), + 'footer' => true, + ), + ) + ); + } + + /** + * Enqueues script. + * + * @since 7.0.0 + */ + public function screen_scripts() { + wp_enqueue_script( 'bp-admin-types' ); + } + + /** + * Outputs the BP type add form. + * + * @since 7.0.0 + * + * @param string $taxonomy The type taxonomy name. + * @param null|object $type The type object, `null` if not passed to the method. + */ + public function add_form_fields( $taxonomy = '', $type = null ) { + $taxonomy_object = get_taxonomy( $taxonomy ); + $labels = get_taxonomy_labels( $taxonomy_object ); + + // Default values for the Type ID field. + $type_id_label = __( 'Type ID', 'buddypress' ); + $type_id_desc = __( 'Enter a lower-case string without spaces or special characters (used internally to identify the type).', 'buddypress' ); + + if ( isset( $labels->bp_type_id_label ) && $labels->bp_type_id_label ) { + $type_id_label = $labels->bp_type_id_label; + } + + if ( isset( $labels->bp_type_id_description ) && $labels->bp_type_id_description ) { + $type_id_desc = $labels->bp_type_id_description; + } + + // Outputs the Type ID field. + if ( isset( $type->name ) ) { + printf( + '<tr class="form-field bp-types-form form-required term-bp_type_id-wrap"> + <th scope="row"><label for="bp_type_id">%1$s</label></th> + <td> + <input name="bp_type_id" id="bp_type_id" type="text" value="%2$s" size="40" disabled="disabled"> + </td> + </tr>', + esc_html( $type_id_label ), + esc_attr( $type->name ), + esc_html( $type_id_desc ) + ); + } else { + printf( + '<div class="form-field bp-types-form form-required term-bp_type_id-wrap"> + <label for="bp_type_id">%1$s</label> + <input name="bp_type_id" id="bp_type_id" type="text" value="" size="40" aria-required="true"> + <p>%2$s</p> + </div>', + esc_html( $type_id_label ), + esc_html( $type_id_desc ) + ); + } + + // Gets the Type's metadata. + $metafields = get_registered_meta_keys( 'term', $taxonomy ); + + foreach ( $metafields as $meta_key => $meta_schema ) { + if ( ! isset( $labels->{ $meta_key } ) || ! $labels->{ $meta_key } ) { + _doing_it_wrong( + __METHOD__, + __( 'Type metadata labels need to be set into the labels argument when registering your taxonomy using the meta key as the label’s key.', 'buddypress' ) + . ' ' . + sprintf( + /* translators: %s is the name of the Type meta key */ + __( 'As a result, the form elements for the "%s" meta key cannot be displayed', 'buddypress' ), $meta_key ), + '7.0.0' + ); + continue; + } + + $type_key = str_replace( 'bp_type_', '', $meta_key ); + + if ( 'string' === $meta_schema['type'] ) { + if ( isset( $type->name ) ) { + $type_prop_value = null; + if ( in_array( $type_key, array( 'name', 'singular_name' ), true ) ) { + if ( isset( $type->labels[ $type_key ] ) ) { + $type_prop_value = $type->labels[ $type_key ]; + } + + } elseif ( isset( $type->{$type_key} ) ) { + $type_prop_value = $type->{$type_key}; + } + + printf( + '<tr class="form-field bp-types-form form-required term-%1$s-wrap"> + <th scope="row"><label for="%1$s">%2$s</label></th> + <td> + <input name="%1$s" id="%1$s" type="text" value="%3$s" size="40" aria-required="true"> + <p class="description">%4$s</p> + </td> + </tr>', + esc_attr( $meta_key ), + esc_html( $labels->{ $meta_key } ), + esc_attr( $type_prop_value ), + esc_html( $meta_schema['description'] ) + ); + + } else { + printf( + '<div class="form-field bp-types-form form-required term-%1$s-wrap"> + <label for="%1$s">%2$s</label> + <input name="%1$s" id="%1$s" type="text" value="" size="40"> + <p>%3$s</p> + </div>', + esc_attr( $meta_key ), + esc_html( $labels->{ $meta_key } ), + esc_html( $meta_schema['description'] ) + ); + } + } else { + if ( isset( $type->name ) ) { + $checked = ''; + if ( isset( $type->{$type_key} ) && true === (bool) $type->{$type_key} ) { + $checked = ' checked="checked"'; + } + + printf( + '<tr class="form-field bp-types-form term-%1$s-wrap"> + <th scope="row"><label for="%1$s">%2$s</label></th> + <td> + <input name="%1$s" id="%1$s" type="checkbox" value="1"%3$s> %4$s + <p class="description">%5$s</p> + </td> + </tr>', + esc_attr( $meta_key ), + esc_html( $labels->{ $meta_key } ), + $checked, + esc_html__( 'Yes', 'buddypress' ), + esc_html( $meta_schema['description'] ) + ); + } else { + printf( + '<div class="form-field bp-types-form term-%1$s-wrap"> + <label for="%1$s"> + <input name="%1$s" id="%1$s" type="checkbox" value="1"> %2$s + </label> + <p>%3$s</p> + </div>', + esc_attr( $meta_key ), + esc_html( $labels->{ $meta_key } ), + esc_html( $meta_schema['description'] ) + ); + } + } + } + } + + /** + * Outputs the BP type edit form. + * + * @since 7.0.0 + * + * @param WP_Term $term The term object for the BP Type. + * @param string $taxonomy The type taxonomy name. + * @return string HTML Output. + */ + public function edit_form_fields( $term = null, $taxonomy = '' ) { + if ( ! isset( $term->name ) || ! $term->name || ! $taxonomy ) { + return; + } + + $type = new stdClass(); + $type->name = $term->name; + $type->labels = array(); + $metadatas = get_metadata( 'term', $term->term_id ); + + foreach ( $metadatas as $meta_key => $meta_values ) { + $meta_value = reset( $meta_values ); + $type_key = str_replace( 'bp_type_', '', $meta_key ); + + if ( in_array( $type_key, array( 'name', 'singular_name' ), true ) ) { + $type->labels[ $type_key ] = $meta_value; + } else { + $type->{$type_key} = $meta_value; + } + } + + return $this->add_form_fields( $taxonomy, $type ); + } + + /** + * Filters the terms list table column headers to customize them for BuddyPress Types. + * + * @since 7.0.0 + * + * @param array $column_headers The column header labels keyed by column ID. + * @return array The column header labels keyed by column ID. + */ + public function column_headers( $column_headers = array() ) { + if ( isset( $column_headers['name'] ) ) { + $column_headers['name'] = __( 'Type ID', 'buddypress' ); + } + + unset( $column_headers['cb'], $column_headers['description'], $column_headers['posts'] ); + + $column_headers['plural_name'] = __( 'Name', 'buddypress' ); + $column_headers['counts'] = _x( 'Count', 'Number/count of types', 'buddypress' ); + + return $column_headers; + } + + /** + * Sets the content for the Plural name & Counts columns. + * + * @since 7.0.0 + * + * @param string $string Blank string. + * @param string $column_name Name of the column. + * @param int $type_id The type's term ID. + * @return string The Type Plural name. + */ + public function column_contents( $column_content = '', $column_name = '', $type_id = 0 ) { + if ( 'plural_name' !== $column_name && 'counts' !== $column_name || ! $type_id ) { + return $column_content; + } + + // Set the Plural name column. + if ( 'plural_name' === $column_name ) { + $type_plural_name = get_term_meta( $type_id, 'bp_type_name', true ); + + // Plural name meta is not set? Let's check register by code types! + if ( ! $type_plural_name ) { + $type_name = get_term_field( 'name', $type_id, $this->taxonomy ); + + /** + * Filter here to set missing term meta for registered by code types. + * + * @see bp_set_registered_by_code_member_type_metadata() for an example of use. + * + * @since 7.0.0 + * + * @param string $value Metadata for the BP Type. + */ + $metadata = apply_filters( "{$this->taxonomy}_set_registered_by_code_metada", array(), $type_name ); + + if ( isset( $metadata['bp_type_name'] ) ) { + $type_plural_name = $metadata['bp_type_name']; + } + } + + echo esc_html( $type_plural_name ); + + // Set the Totals column. + } elseif ( 'counts' === $column_name ) { + global $parent_file; + $type = bp_get_term_by( 'id', $type_id, $this->taxonomy ); + if ( 0 === (int) $type->count ) { + return 0; + } + + // Format the count. + $count = number_format_i18n( $type->count ); + + $args = array( + str_replace( '_', '-', $this->taxonomy ) => $type->slug, + ); + + $base_url = $parent_file; + if ( false === strpos( $parent_file, '.php' ) ) { + $base_url = add_query_arg( 'page', $parent_file, 'admin.php' ); + } + + printf( + '<a href="%1$s">%2$s</a>', + esc_url( add_query_arg( $args, bp_get_admin_url( $base_url ) ) ), + esc_html( $count ) + ); + } + } + + /** + * Customizes the Types Admin list table row actions. + * + * @since 7.0.0 + * + * @param array $actions The table row actions. + * @param WP_Term $type The current BP Type for the row. + * @return array The table row actions for the current BP type. + */ + public function row_actions( $actions = array(), $type = null ) { + if ( ! isset( $type->taxonomy ) || ! $type->taxonomy ) { + return $actions; + } + + /** + * Filter here to set the types "registered by code". + * + * @see bp_get_member_types_registered_by_code() for an example of use. + * + * @since 7.0.0 + */ + $registered_by_code_types = apply_filters( "{$type->taxonomy}_registered_by_code", array() ); + + // Types registered by code cannot be deleted as long as the custom registration code exists. + if ( isset( $registered_by_code_types[ $type->name ] ) ) { + unset( $actions['delete'] ); + } + + // Inline edits are disabled for all types. + unset( $actions['inline hide-if-no-js'] ); + + // Removes the post type query argument for the edit action. + if ( isset( $actions['edit'] ) ) { + $actions['edit'] = str_replace( '&post_type=post', '', $actions['edit'] ); + } + + return $actions; + } +} + +endif; diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-admin.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-admin.php index 5457a816c11cd7bccaad8acf41c1c1529afa0383..32dd0768d8f0e0f279025dc89d4e667a62018315 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-admin.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-admin.php @@ -175,6 +175,9 @@ class BP_Admin { // BuddyPress Hello. add_action( 'admin_footer', array( $this, 'about_screen' ) ); + // BuddyPress Types administration. + add_action( 'load-edit-tags.php', array( 'BP_Admin_Types', 'register_types_admin' ) ); + /* Filters ***********************************************************/ // Add link to settings page. @@ -559,7 +562,7 @@ class BP_Admin { */ public function add_privacy_policy_content() { // Nothing to do if we're running < WP 4.9.6. - if ( version_compare( $GLOBALS['wp_version'], '4.9.6', '<' ) ) { + if ( bp_is_running_wp( '4.9.6', '<' ) ) { return; } @@ -653,108 +656,139 @@ class BP_Admin { <div class="bp-hello-content"> <div id="dynamic-content"></div> <div id="top-features"> - <h2><?php esc_html_e( 'Say hello to the first two BuddyPress blocks!', 'buddypress' ); ?></h2> + <h2><?php esc_html_e( 'Manage Member Types and Group Types right from your WordPress Dashboard.', 'buddypress' ); ?></h2> <figure class="bp-hello-aligncenter"> - <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/images/bp-blocks.gif' ); ?>" alt="<?php esc_attr_e( 'Gif Animation showing how to insert the BuddyPress Group Block.', 'buddypress' ); ?>" /> + <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/images/bp-types-illustration.png' ); ?>" alt="<?php esc_attr_e( 'Illustration showing how to access to the BP Types Admin areas.', 'buddypress' ); ?>" /> </figure> <p> - <?php esc_html_e( 'BuddyPress 6.0.0 comes with two awesome blocks for your WordPress Editor: the BP Member and BP Group Blocks.', 'buddypress' ); ?> - <?php esc_html_e( 'Available from the BuddyPress blocks category of your WordPress Block menu, these lovely blocks let you insert a rich content block featuring a specific member or group from your community site in a WordPress post or page.', 'buddypress' ); ?> - <br/> + <?php esc_html_e( 'Playing with BP Types just became much easier! The Member Types and Group Types were primarily introduced in BuddyPress as features for advanced users, just like the WordPress Custom Post Type feature.', 'buddypress' ); ?> <?php printf( - /* translators: %s is the placeholder for the link to the Advanced section of the BP Blocks development note. */ - esc_html__( 'If you\'re an Advanced BuddyPresser and wish to fine tune the BuddyPress blocks for your community site, learn more in %s about the new BP Blocks.', 'buddypress' ), + /* translators: %s is the placeholder for the link to the BP Types Admin developer note. */ + esc_html__( 'Thanks to the two new %s, adding, editing and deleting Member & Group Types has never been so easy!', 'buddypress' ), sprintf( '<a href="%1$s">%2$s</a>', - esc_url( 'https://bpdevel.wordpress.com/2020/03/30/welcome-to-the-first-buddypress-blocks/#advanced-customizations' ), - esc_html__( 'this section of our development note', 'buddypress' ) + esc_url( 'https://bpdevel.wordpress.com/2020/09/21/bp-types-admin-ui/' ), + esc_html__( 'WordPress Administration Screens', 'buddypress' ) + ) + ); ?> + <?php esc_html_e( 'Now you can set up BP Types using custom code or by simply using the Administration interfaces.', 'buddypress' ); ?> + </p> + <h3><?php esc_html_e( 'Multiple Member Type assignment.', 'buddypress' ); ?></h3> + <p> + <?php printf( + /* translators: %s is the placeholder for the link to the BP Types Admin developer note. */ + esc_html__( 'As we were pretty hot on the subject, we also improved Member Types assignment. You can now %s to users from their extended profile in the WordPress Dashboard.', 'buddypress' ), + sprintf( + '<a href="%1$s">%2$s</a>', + esc_url( 'https://bpdevel.wordpress.com/2020/10/26/assigning-multiple-member-types-to-a-user/' ), + esc_html__( 'add more than one member type', 'buddypress' ) ) ); ?> </p> <hr class="bp-hello-divider"/> - <h2><?php esc_html_e( 'The BP REST API is now completed!', 'buddypress' ); ?></h2> + <h2><?php esc_html_e( 'The BP Blocks category now includes 5 blocks!', 'buddypress' ); ?></h2> + <figure class="bp-hello-aligncenter"> + <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/images/bp-new-blocks.png' ); ?>" alt="<?php esc_attr_e( 'Illustration showing the BuddyPress Blocks category inside the Block Editor Inserter.', 'buddypress' ); ?>" /> + </figure> + <p> + <?php esc_html_e( '3 new BP Blocks are now available via your WordPress Editor.', 'buddypress' ); ?> + <?php esc_html_e( 'From the BuddyPress blocks category of the WordPress Block Inserter, you can pick a BP Block to feature a list of members, a list of groups or embed a public BuddyPress Activity into your post or page.', 'buddypress' ); ?> + <?php printf( + /* translators: %s is the placeholder for the link to the BP Blocks developer note. */ + esc_html__( 'Read more about it in this %s.', 'buddypress' ), + sprintf( + '<a href="%1$s">%2$s</a>', + esc_url( 'https://bpdevel.wordpress.com/2020/10/14/three-new-blocks-to-expect-in-buddypress-7-0-0/' ), + esc_html__( 'development note', 'buddypress' ) + ) + ); ?> + </p> + + <hr class="bp-hello-divider"/> + + <h2><?php esc_html_e( 'Get the best of the BP REST API improvements!', 'buddypress' ); ?></h2> <figure class="bp-hello-alignright"> <div class="dashicons dashicons-rest-api big"></div> </figure> <p> <?php printf( /* translators: %s is the placeholder for the link to the BP REST API documentation. */ - esc_html__( 'In 5.0.0, we introduced the first endpoints and provided %s for them.', 'buddypress' ), + esc_html__( 'The %s has been updated according to the latest improvements we’ve brought to the BuddyPress REST API.', 'buddypress' ), sprintf( '<a href="%1$s">%2$s</a>', esc_url( 'https://developer.buddypress.org/bp-rest-api/' ), - esc_html__( 'reference documentation', 'buddypress' ) + esc_html__( 'Developer documentation', 'buddypress' ) + ) + ); ?> + </p> + <p> + <?php esc_html_e( 'To name two: get the groups the logged in user is a member of, and create a blog when BuddyPress is activated on a network of WordPress sites.', 'buddypress' ); ?> + <?php printf( + /* translators: %s is the placeholder for the link to the BP REST API developer note. */ + esc_html__( 'Read this %s to learn about all the others.', 'buddypress' ), + sprintf( + '<a href="%1$s">%2$s</a>', + esc_url( 'https://bpdevel.wordpress.com/2020/11/14/buddypress-rest-api-whats-new-in-7-0-0/' ), + esc_html__( 'development note', 'buddypress' ) ) ); ?> - <?php esc_html_e( 'In 6.0.0, we are adding the 6 remaining endpoints you were waiting for: Blogs, Blog avatar, Friends, Group Cover Image, Member Cover Image and User Signups. You can now build full-featured BuddyPress Apps!', 'buddypress' ); ?> </p> <hr class="bp-hello-divider"/> - <h2><?php esc_html_e( 'BP Nouveau has been improved', 'buddypress' ); ?></h2> + <h2><?php esc_html_e( 'BP Nouveau is ready for Twenty Twenty-One', 'buddypress' ); ?></h2> <p> - <?php esc_html_e( 'Your active theme supports wide layouts? Awesome! BP Nouveau now supports wide (and really, really wide) content areas, too!', 'buddypress' ); ?> + <?php esc_html_e( 'You love the latest default WordPress Theme, so do we!', 'buddypress' ); ?> + <?php esc_html_e( 'It’s important for us to make sure the BP Nouveau template pack looks great in the default themes included in the WordPress package.', 'buddypress' ); ?> + <?php esc_html_e( 'This is the first of the many improvements we are bringing to our default Template Pack.', 'buddypress' ); ?> </p> <figure class="bp-hello-aligncenter"> - <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/images/bp-nouveau-wide-aligns.png' ); ?>" alt="<?php esc_attr_e( 'Screenshot of the BP Nouveau customizer setting to take advantage of wide layouts', 'buddypress' ); ?>" /> + <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/images/bp-nouveau-2021.png' ); ?>" alt="<?php esc_attr_e( 'Screenshot of the BuddyPress Members directory', 'buddypress' ); ?>" /> </figure> - <p> - <?php esc_html_e( 'This is the first of the many improvements we are bringing to our default Template Pack. It never looked so beautiful in your theme.', 'buddypress' ); ?> - </p> <hr class="bp-hello-divider"/> - <h2><?php esc_html_e( 'Under the hood', 'buddypress' ); ?></h2> - <figure class="bp-hello-alignright"> - <div class="dashicons dashicons-buddicons-buddypress-logo big"></div> + <h2><?php esc_html_e( 'Improved support for WP CLI.', 'buddypress' ); ?></h2> + <figure class="bp-hello-alignleft"> + <div class="dashicons dashicons-arrow-right-alt2 big"></div> </figure> <p> - <?php esc_html_e( '6.0.0 includes more than 80 changes to improve your BuddyPress experience as users, as contributors to our code and as contributors to our translations.', 'buddypress' ); ?> + <?php esc_html_e( 'WP-CLI is the command-line interface for WordPress. You can update plugins, configure multisite installs, and much more, all without using a web browser.', 'buddypress' ); ?> + <?php esc_html_e( 'In 7.0.0, you will be able to use new BuddyPress CLI commands to manage BuddyPress Group Meta, BuddyPress Activity Meta, activate or deactivate the BuddyPress signup feature and create BuddyPress-specific testing code for plugins.', 'buddypress' ); ?> </p> <p> <?php printf( - /* translators: %s is the placeholder for the link to the Avatar changes development note. */ - esc_html__( 'The biggest change moves local avatar management to the Members component. Read more about it in %s.', 'buddypress' ), + /* translators: %s is the placeholder for the link to the WP BP CLI developer note. */ + esc_html__( 'Discover more about it from this %s.', 'buddypress' ), sprintf( '<a href="%1$s">%2$s</a>', - esc_url( 'https://bpdevel.wordpress.com/2020/03/01/the-profile-photo-cover-image-features-belong-to-members/' ), - esc_html__( 'this development note', 'buddypress' ) + esc_url( 'https://bpdevel.wordpress.com/2020/10/09/wp-cli-buddypress-2-0/' ), + esc_html__( 'developer note', 'buddypress' ) ) ); ?> </p> <hr class="bp-hello-divider"/> - <h2><?php esc_html_e( 'We want to hear your voice', 'buddypress' ); ?></h2> - <figure class="bp-hello-alignleft"> - <div class="dashicons dashicons-microphone big"></div> - </figure> - <p class="aligncenter"> - <strong><?php printf( - /* translators: %s is the placeholder for the link to the 2020 BuddyPress survey. */ - esc_html__( 'Take the %s.', 'buddypress' ), - sprintf( - '<a href="%1$s">%2$s</a>', - esc_url( 'https://mercime.survey.fm/2020-buddypress-survey' ), - esc_html__( '2020 BuddyPress Survey', 'buddypress' ) - ) - ); ?></strong> - </p> + <h2><?php esc_html_e( 'Under the hood', 'buddypress' ); ?></h2> <p> - <?php esc_html_e( 'Knowing how you use BuddyPress and getting your point of view about future BuddyPress development is very important to us.', 'buddypress' ); ?> - <?php esc_html_e( 'Please, take some time to help us decide what\'s best for the BuddyPress project.', 'buddypress' ); ?> + <?php esc_html_e( '7.0.0 includes more than 65 changes to improve your BuddyPress experience as users, and as contributors to our project; click on the “Changelog” tab to discover them all!', 'buddypress' ); ?> </p> + <figure class="bp-hello-aligncenter"> + <div class="dashicons dashicons-buddicons-buddypress-logo big"></div> + </figure> <hr class="bp-hello-divider"/> <h2><?php echo esc_html( _x( 'Your feedback', 'screen heading', 'buddypress' ) ); ?></h2> <p> + <?php esc_html_e( 'How are you using BuddyPress? Receiving your feedback and suggestions for future versions of BuddyPress genuinely motivates and encourages our contributors.', 'buddypress' ); ?> <?php printf( /* translators: %s is the placeholder for the link to BuddyPress support forums. */ - esc_html__( ' How are you using BuddyPress? Receiving your feedback and suggestions for future versions of BuddyPress genuinely motivates and encourages our contributors. Please %s about this version of BuddyPress on our website. ', 'buddypress' ), + esc_html__( 'Please %s about this version of BuddyPress on our website.', 'buddypress' ), sprintf( '<a href="%1$s">%2$s</a>', esc_url( 'https://buddypress.org/support/' ), @@ -775,10 +809,10 @@ class BP_Admin { <?php printf( /* translators: 1: heart dashicons. 2: BP Credits screen url. 3: number of BuddyPress contributors to this version. */ - _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>.', 42, 'buddypress' ), + _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>.', 55, 'buddypress' ), '<span class="dashicons dashicons-heart"></span>', esc_url( bp_get_admin_url( 'admin.php?page=bp-credits' ) ), - number_format_i18n( 42 ) + number_format_i18n( 55 ) ); ?> </p> @@ -828,7 +862,8 @@ class BP_Admin { <div class="wrap bp-about-wrap"> - <h1><?php esc_html_e( 'BuddyPress Settings', 'buddypress' ); ?> </h1> + <h1 class="wp-heading-inline"><?php esc_html_e( 'BuddyPress Settings', 'buddypress' ); ?></h1> + <hr class="wp-header-end"> <h2 class="nav-tab-wrapper"><?php bp_core_admin_tabs( esc_html__( 'Credits', 'buddypress' ) ); ?></h2> @@ -847,33 +882,33 @@ class BP_Admin { <span class="title"><?php esc_html_e( 'Lead Developer', 'buddypress' ); ?></span> </li> <li class="wp-person" id="wp-person-djpaul"> - <a class="web" href="https://profiles.wordpress.org/djpaul"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/3bc9ab796299d67ce83dceb9554f75df?s=120"> + <a class="web" href="https://profiles.wordpress.org/djpaul"><img alt="" class="gravatar" src="https://avatars2.githubusercontent.com/u/1275914?s=120"> Paul Gibbs</a> <span class="title"><?php esc_html_e( 'Lead Developer', 'buddypress' ); ?></span> </li> - </ul> - - <h3 class="wp-people-group"><?php esc_html_e( 'BuddyPress Team', 'buddypress' ); ?></h3> - <ul class="wp-people-group " id="wp-people-group-core-team"> <li class="wp-person" id="wp-person-r-a-y"> <a class="web" href="https://profiles.wordpress.org/r-a-y"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/3bfa556a62b5bfac1012b6ba5f42ebfa?s=120"> Ray</a> - <span class="title"><?php esc_html_e( 'Core Developer', 'buddypress' ); ?></span> - </li> - <li class="wp-person" id="wp-person-hnla"> - <a class="web" href="https://profiles.wordpress.org/hnla"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/3860c955aa3f79f13b92826ae47d07fe?s=120"> - Hugo Ashmore</a> - <span class="title"><?php esc_html_e( 'Core Developer', 'buddypress' ); ?></span> + <span class="title"><?php esc_html_e( 'Lead Developer', 'buddypress' ); ?></span> </li> <li class="wp-person" id="wp-person-imath"> <a class="web" href="https://profiles.wordpress.org/imath"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/8b208ca408dad63888253ee1800d6a03?s=120"> Mathieu Viet</a> - <span class="title"><?php esc_html_e( 'Core Developer', 'buddypress' ); ?></span> + <span class="title"><?php esc_html_e( 'Lead Developer', 'buddypress' ); ?></span> </li> <li class="wp-person" id="wp-person-mercime"> <a class="web" href="https://profiles.wordpress.org/mercime"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/fae451be6708241627983570a1a1817a?s=120"> Mercime</a> - <span class="title"><?php esc_html_e( 'Navigator', 'buddypress' ); ?></span> + <span class="title"><?php esc_html_e( 'Lead Developer', 'buddypress' ); ?></span> + </li> + </ul> + + <h3 class="wp-people-group"><?php esc_html_e( 'BuddyPress Team', 'buddypress' ); ?></h3> + <ul class="wp-people-group " id="wp-people-group-core-team"> + <li class="wp-person" id="wp-person-hnla"> + <a class="web" href="https://profiles.wordpress.org/hnla"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/3860c955aa3f79f13b92826ae47d07fe?s=120"> + Hugo Ashmore</a> + <span class="title"><?php esc_html_e( 'Core Developer', 'buddypress' ); ?></span> </li> <li class="wp-person" id="wp-person-dcavins"> <a class="web" href="https://profiles.wordpress.org/dcavins"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/a5fa7e83d59cb45ebb616235a176595a?s=120"> @@ -937,9 +972,9 @@ class BP_Admin { ?> </h3> <ul class="wp-people-group " id="wp-people-group-noteworthy"> - <li class="wp-person" id="wp-person-passoniate"> - <a class="web" href="https://profiles.wordpress.org/passoniate/"><img alt="" class="gravatar" src="//gravatar.com/avatar/df262cbc82caecc7302849e8d591b32c?s=120"> - Arslan Ahmed</a> + <li class="wp-person" id="wp-person-oztaser"> + <a class="web" href="https://profiles.wordpress.org/oztaser/"><img alt="" class="gravatar" src="//gravatar.com/avatar/06eb4dd13c0113bf826968ae16a13e52?s=120"> + Adil Oztaser</a> </li> <li class="wp-person" id="wp-person-iamthewebb"> <a class="web" href="https://profiles.wordpress.org/iamthewebb/"><img alt="" class="gravatar" src="//gravatar.com/avatar/990bac871caf6d6e179b2753226d8f4a?s=120&d=mm"> @@ -961,48 +996,61 @@ class BP_Admin { ?> </h3> <p class="wp-credits-list"> - <a href="https://profiles.wordpress.org/oztaser">Adil Oztaser (oztaser)</a>, - <a href="https://profiles.wordpress.org/wpamitkumar">Amit Dudhat (wpamitkumar)</a>, - <a href="https://profiles.wordpress.org/dontdream">Andrea Tarantini (dontdream)</a>, - <a href="https://profiles.wordpress.org/ankitmaru">Ankit Panchal (ankitmaru)</a>, - <a href="https://profiles.wordpress.org/passoniate">Arslan Ahmed (passoniate)</a>, + <a href="https://profiles.wordpress.org/oztaser/">Adil Oztaser (oztaser)</a>, <a href="https://profiles.wordpress.org/boonebgorges/">Boone B Gorges (boonebgorges)</a>, <a href="https://profiles.wordpress.org/sbrajesh/">Brajesh Singh (sbrajesh)</a>, - <a href="https://profiles.wordpress.org/bhargavbhandari90">Bunty (bhargavbhandari90)</a>, + <a href="https://profiles.wordpress.org/corsky/">corsky</a>, <a href="https://profiles.wordpress.org/dancaragea/">Dan Caragea (dancaragea)</a>, <a href="https://profiles.wordpress.org/dcavins/">David Cavins (dcavins)</a>, - <a href="https://profiles.wordpress.org/ocean90">Dominik Schilling (ocean90)</a>, - <a href="https://profiles.wordpress.org/etatus">etatus</a>, - <a href="https://profiles.wordpress.org/fayazgabol">Fayaz Gabol (fayazgabol)</a>, - <a href="https://profiles.wordpress.org/hnla">Hugo Ashmore (hnla)</a>, - <a href="https://profiles.wordpress.org/audrasjb">Jb Audras (audrasjb)</a>, - <a href="https://profiles.wordpress.org/jenfraggle/">Jennifer Burnett (jenfraggle)</a>, + <a href="https://profiles.wordpress.org/devnik/">devnik</a>, + <a href="https://profiles.wordpress.org/dilipbheda/">Dilip Bheda</a>, + <a href="https://profiles.wordpress.org/dd32/">Dion Hulse (dd32)</a>, + <a href="https://profiles.wordpress.org/dragoeco/">dragoeco</a>, + <a href="https://profiles.wordpress.org/kebbet/">Erik Betshammar (kebbet)</a>, + <a href="https://profiles.wordpress.org/etatus/">etatus</a>, + <a href="https://github.com/ExoGeek/">Didier Saintes (ExoGeek)</a>, + <a href="https://profiles.wordpress.org/f2010525/">诗语 (f2010525)</a>, + <a href="https://profiles.wordpress.org/mamaduka/">George Mamadashvili</a>, + <a href="https://profiles.wordpress.org/mociofiletto/">Giuseppe (mociofiletto)</a>, + <a href="https://profiles.wordpress.org/hareesh-pillai/">Hareesh</a>, + <a href="https://profiles.wordpress.org/iamthewebb/">iamthewebb</a>, + <a href="https://profiles.wordpress.org/nobnob/">Javier Esteban (nobnob)</a>, + <a href="https://profiles.wordpress.org/audrasjb/">Jb Audras (audrasjb)</a>, <a href="https://profiles.wordpress.org/johnjamesjacoby/">John James Jacoby (johnjamesjacoby)</a>, - <a href="https://profiles.wordpress.org/greenshady">Justin Tadlock (greenshady)</a>, - <a href="https://profiles.wordpress.org/kashifgabol">Kashif Gabol (kashifgabol)</a>, - <a href="https://profiles.wordpress.org/laudag">laudag</a>, - <a href="https://profiles.wordpress.org/marbaque/">Mario Badilla (marbaque)</a>, + <a href="https://profiles.wordpress.org/joost-abrahams/">Joost Abrahams (joost-abrahams)</a>, + <a href="https://profiles.wordpress.org/k3690/">k3690</a>, + <a href="https://profiles.wordpress.org/knutsp/">Knut Sparhell (knutsp)</a>, + <a href="https://profiles.wordpress.org/laxman-prajapati/">Laxman Prajapati</a>, + <a href="https://profiles.wordpress.org/lidialab/">Lidia Pellizzaro (lidialab)</a>, + <a href="https://profiles.wordpress.org/marbaque/">marbaque</a>, + <a href="https://github.com/geckse/">Marcel Claus (geckse)</a>, + <a href="https://profiles.wordpress.org/marioshtika/">marioshtika</a>, + <a href="https://profiles.wordpress.org/markscottrobson/">Mark Robson (markscottrobson)</a>, <a href="https://profiles.wordpress.org/imath/">Mathieu Viet (imath)</a>, - <a href="https://profiles.wordpress.org/mattjones2207">mattjones2207</a>, - <a href="https://profiles.wordpress.org/mercime">mercime</a>, - <a href="https://profiles.wordpress.org/mo3aser">mo3aser</a>, - <a href="https://profiles.wordpress.org/modemlooper">modemlooper</a>, - <a href="https://profiles.wordpress.org/man4toman">Morteza Geransayeh (man4toman)</a>, - <a href="https://profiles.wordpress.org/mukesh27">Mukesh Panchal (mukesh27)</a>, + <a href="https://profiles.wordpress.org/mercime/">mercime</a>, + <a href="https://profiles.wordpress.org/immeet94/">Meet Makadia</a>, + <a href="https://profiles.wordpress.org/tw2113/">Michael Beckwith</a>, + <a href="https://profiles.wordpress.org/man4toman/">Morteza Geransayeh (man4toman)</a>, + <a href="https://profiles.wordpress.org/morenolq/">morenolq</a>, + <a href="https://profiles.wordpress.org/n33d/">N33D</a>, + <a href="https://profiles.wordpress.org/oddev56/">oddev56</a>, <a href="https://profiles.wordpress.org/DJPaul/">Paul Gibbs (DJPaul)</a>, - <a href="https://profiles.wordpress.org/pooja1210">Pooja N Muchandikar (pooja1210)</a>, + <a href="https://profiles.wordpress.org/walbo/">Petter Walbø Johnsgård (walbo)</a>, + <a href="https://profiles.wordpress.org/psmits1567/">Peter Smits (psmits1567)</a>, + <a href="https://profiles.wordpress.org/pooja1210/">Pooja N Muchandikar (pooja1210)</a>, + <a href="https://profiles.wordpress.org/raruto/">Raruto</a>, <a href="https://profiles.wordpress.org/r-a-y/">r-a-y</a>, <a href="https://profiles.wordpress.org/espellcaste/">Renato Alves (espellcaste)</a>, - <a href="https://profiles.wordpress.org/santiazpi2">santiazpi2</a>, - <a href="https://profiles.wordpress.org/shanebp">shanebp</a>, - <a href="https://profiles.wordpress.org/sharaz">Sharaz Shahid (sharaz)</a>, - <a href="https://github.com/sjregan">sjregan</a>, + <a href="https://profiles.wordpress.org/scipi/">scipi</a>, + <a href="https://profiles.wordpress.org/scottopolis/">Scott Bolinger (scottopolis)</a>, + <a href="https://profiles.wordpress.org/shanebp/">shanebp</a>, + <a href="https://profiles.wordpress.org/shawfactor/">shawfactor</a>, + <a href="https://profiles.wordpress.org/sjregan/">sjregan</a>, <a href="https://profiles.wordpress.org/netweb/">Stephen Edgar (netweb)</a>, - <a href="https://profiles.wordpress.org/karmatosed">Tammie Lister (karmatosed)</a>, - <a href="https://profiles.wordpress.org/tobifjellner">Tor-Bjorn Fjellner (tobifjellner)</a>, - <a href="https://profiles.wordpress.org/itowhid06">Towhidul Islam (itowhid06)</a>, - <a href="https://profiles.wordpress.org/twmcmahan">twmcmahan</a>, - <a href="https://profiles.wordpress.org/zishanj">Zishan (zishanj)</a> + <a href="https://profiles.wordpress.org/tharsheblows/">tharsheblows</a>, + <a href="https://profiles.wordpress.org/tobifjellner/">Tor-Bjorn Fjellner (tobifjellner)</a>, + <a href="https://profiles.wordpress.org/vapvarun/">Varun Dubey (vapvarun)</a>, + <a href="https://profiles.wordpress.org/podporawebu/">wp24.cz (podporawebu)</a>. </p> <h3 class="wp-people-group"><?php esc_html_e( 'With our thanks to these Open Source projects', 'buddypress' ); ?></h3> diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-block.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-block.php index 3f75a3644a4d3f7272f91bbf8332e1380a489f16..baf31c8371f4e47e9d21415e1ebdf18dc28d97d4 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-block.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-block.php @@ -186,10 +186,10 @@ class BP_Block { * @param string $editor_script The editor's script handle. * @param string $name The block's name. */ - $domain = apply_filters( 'bp_block_translation_dir', 'buddypress', $this->block->editor_script, $name ); + $translation_domain = apply_filters( 'bp_block_translation_domain', 'buddypress', $this->block->editor_script, $name ); // Try to load the translation. - $translated = wp_set_script_translations( $this->block->editor_script, $domain, $translation_dir ); + $translated = wp_set_script_translations( $this->block->editor_script, $translation_domain, $translation_dir ); } } } diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-notification.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-notification.php index c944a5ad0e2ea14818a6eb39e9d6e6d743ce7d6f..870aeeb5cdff5e5eefd3ece00d7dbd21925108f0 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-notification.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-notification.php @@ -24,14 +24,14 @@ class BP_Core_Notification { * * @var int */ - public $id; + public $id = 0; /** * The ID to which the notification relates to within the component. * * @var int */ - public $item_id; + public $item_id = 0; /** * The secondary ID to which the notification relates to within the component. @@ -45,35 +45,35 @@ class BP_Core_Notification { * * @var int */ - public $user_id; + public $user_id = 0; /** * The name of the component that the notification is for. * * @var string */ - public $component_name; + public $component_name = ''; /** * The action within the component which the notification is related to. * * @var string */ - public $component_action; + public $component_action = ''; /** * The date the notification was created. * * @var string */ - public $date_notified; + public $date_notified = ''; /** * Is the notification new or has it already been read. * * @var boolean */ - public $is_new; + public $is_new = false; /** Public Methods ********************************************************/ @@ -83,10 +83,14 @@ class BP_Core_Notification { * @param int $id ID for the notification. */ public function __construct( $id = 0 ) { - if ( !empty( $id ) ) { - $this->id = $id; - $this->populate(); + + // Bail if no ID + if ( empty( $id ) ) { + return; } + + $this->id = absint( $id ); + $this->populate(); } /** @@ -102,16 +106,21 @@ class BP_Core_Notification { $bp = buddypress(); // Update. - if ( !empty( $this->id ) ) { - $sql = $wpdb->prepare( "UPDATE {$bp->core->table_name_notifications} SET item_id = %d, secondary_item_id = %d, user_id = %d, component_name = %s, component_action = %d, date_notified = %s, is_new = %d ) WHERE id = %d", $this->item_id, $this->secondary_item_id, $this->user_id, $this->component_name, $this->component_action, $this->date_notified, $this->is_new, $this->id ); + if ( ! empty( $this->id ) ) { + $query = "UPDATE {$bp->notifications->table_name} SET item_id = %d, secondary_item_id = %d, user_id = %d, component_name = %s, component_action = %d, date_notified = %s, is_new = %d ) WHERE id = %d"; + $sql = $wpdb->prepare( $query, $this->item_id, $this->secondary_item_id, $this->user_id, $this->component_name, $this->component_action, $this->date_notified, $this->is_new, $this->id ); // Save. } else { - $sql = $wpdb->prepare( "INSERT INTO {$bp->core->table_name_notifications} ( item_id, secondary_item_id, user_id, component_name, component_action, date_notified, is_new ) VALUES ( %d, %d, %d, %s, %s, %s, %d )", $this->item_id, $this->secondary_item_id, $this->user_id, $this->component_name, $this->component_action, $this->date_notified, $this->is_new ); + $query = "INSERT INTO {$bp->notifications->table_name} ( item_id, secondary_item_id, user_id, component_name, component_action, date_notified, is_new ) VALUES ( %d, %d, %d, %s, %s, %s, %d )"; + $sql = $wpdb->prepare( $query, $this->item_id, $this->secondary_item_id, $this->user_id, $this->component_name, $this->component_action, $this->date_notified, $this->is_new ); } - if ( !$result = $wpdb->query( $sql ) ) + $result = $wpdb->query( $sql ); + + if ( empty( $result ) || is_wp_error( $result ) ) { return false; + } $this->id = $wpdb->insert_id; @@ -130,14 +139,18 @@ class BP_Core_Notification { $bp = buddypress(); - if ( $notification = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->core->table_name_notifications} WHERE id = %d", $this->id ) ) ) { - $this->item_id = $notification->item_id; - $this->secondary_item_id = $notification->secondary_item_id; - $this->user_id = $notification->user_id; - $this->component_name = $notification->component_name; - $this->component_action = $notification->component_action; - $this->date_notified = $notification->date_notified; - $this->is_new = $notification->is_new; + $query = "SELECT * FROM {$bp->notifications->table_name} WHERE id = %d"; + $prepare = $wpdb->prepare( $query, $this->id ); + $result = $wpdb->get_row( $prepare ); + + if ( ! empty( $result ) ) { + $this->item_id = $result->item_id; + $this->secondary_item_id = $result->secondary_item_id; + $this->user_id = $result->user_id; + $this->component_name = $result->component_name; + $this->component_action = $result->component_action; + $this->date_notified = $result->date_notified; + $this->is_new = $result->is_new; } } @@ -150,12 +163,16 @@ class BP_Core_Notification { * @param int $notification_id Notification ID to check for. * @return string */ - public static function check_access( $user_id, $notification_id ) { + public static function check_access( $user_id = 0, $notification_id = 0 ) { global $wpdb; $bp = buddypress(); - return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->core->table_name_notifications} WHERE id = %d AND user_id = %d", $notification_id, $user_id ) ); + $query = "SELECT COUNT(id) FROM {$bp->notifications->table_name} WHERE id = %d AND user_id = %d"; + $prepare = $wpdb->prepare( $query, $notification_id, $user_id ); + $result = $wpdb->get_var( $prepare ); + + return $result; } /** @@ -178,7 +195,11 @@ class BP_Core_Notification { ? ' AND is_new = 1 ' : ''; - return $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->core->table_name_notifications} WHERE user_id = %d {$is_new}", $user_id ) ); + $query = "SELECT * FROM {$bp->notifications->table_name} WHERE user_id = %d {$is_new}"; + $prepare = $wpdb->prepare( $query, $user_id ); + $result = $wpdb->get_results( $prepare ); + + return $result; } /** @@ -198,7 +219,11 @@ class BP_Core_Notification { $bp = buddypress(); - return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->core->table_name_notifications} WHERE user_id = %d AND component_name = %s AND component_action = %s", $user_id, $component_name, $component_action ) ); + $query = "DELETE FROM {$bp->notifications->table_name} WHERE user_id = %d AND component_name = %s AND component_action = %s"; + $prepare = $wpdb->prepare( $query, $user_id, $component_name, $component_action ); + $result = $wpdb->query( $prepare ); + + return $result; } /** @@ -212,20 +237,24 @@ class BP_Core_Notification { * @param int $item_id The item ID of the notifications we wish to delete. * @param string $component_name The name of the component that the notifications we wish to delete. * @param string $component_action The action of the component that the notifications we wish to delete. - * @param int|bool $secondary_item_id (optional) The secondary item id of the notifications that we wish to + * @param int $secondary_item_id (optional) The secondary item id of the notifications that we wish to * use to delete. * @return mixed */ - public static function delete_for_user_by_item_id( $user_id, $item_id, $component_name, $component_action, $secondary_item_id = false ) { + public static function delete_for_user_by_item_id( $user_id, $item_id, $component_name, $component_action, $secondary_item_id = 0 ) { global $wpdb; $bp = buddypress(); - $secondary_item_sql = !empty( $secondary_item_id ) + $secondary_item_sql = ! empty( $secondary_item_id ) ? $wpdb->prepare( " AND secondary_item_id = %d", $secondary_item_id ) : ''; - return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->core->table_name_notifications} WHERE user_id = %d AND item_id = %d AND component_name = %s AND component_action = %s{$secondary_item_sql}", $user_id, $item_id, $component_name, $component_action ) ); + $query = "DELETE FROM {$bp->notifications->table_name} WHERE user_id = %d AND item_id = %d AND component_name = %s AND component_action = %s{$secondary_item_sql}"; + $prepare = $wpdb->prepare( $query, $user_id, $item_id, $component_name, $component_action ); + $result = $wpdb->query( $prepare ); + + return $result; } /** @@ -245,7 +274,11 @@ class BP_Core_Notification { $bp = buddypress(); - return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->core->table_name_notifications} WHERE item_id = %d AND component_name = %s AND component_action = %s", $user_id, $component_name, $component_action ) ); + $query = "DELETE FROM {$bp->notifications->table_name} WHERE item_id = %d AND component_name = %s AND component_action = %s"; + $prepare = $wpdb->prepare( $query, $user_id, $component_name, $component_action ); + $result = $wpdb->query( $prepare ); + + return $result; } /** @@ -256,27 +289,29 @@ class BP_Core_Notification { * * @static * - * @param string $item_id The item id that they notifications are to be for. + * @param int $item_id The item id that they notifications are to be for. * @param string $component_name The component that the notifications are to be from. * @param string $component_action The action that the notifications are to be from. - * @param string $secondary_item_id Optional secondary item id that the notifications are to have. + * @param int $secondary_item_id Optional secondary item id that the notifications are to have. * @return mixed */ - public static function delete_all_by_type( $item_id, $component_name, $component_action, $secondary_item_id ) { + public static function delete_all_by_type( $item_id, $component_name, $component_action = '', $secondary_item_id = 0 ) { global $wpdb; - if ( $component_action ) - $component_action_sql = $wpdb->prepare( "AND component_action = %s", $component_action ); - else - $component_action_sql = ''; + $component_action_sql = ! empty( $component_action ) + ? $wpdb->prepare( "AND component_action = %s", $component_action ) + : ''; - if ( $secondary_item_id ) - $secondary_item_sql = $wpdb->prepare( "AND secondary_item_id = %d", $secondary_item_id ); - else - $secondary_item_sql = ''; + $secondary_item_sql = ! empty( $secondary_item_id ) + ? $wpdb->prepare( "AND secondary_item_id = %d", $secondary_item_id ) + : ''; $bp = buddypress(); - return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->core->table_name_notifications} WHERE item_id = %d AND component_name = %s {$component_action_sql} {$secondary_item_sql}", $item_id, $component_name ) ); + $query = "DELETE FROM {$bp->notifications->table_name} WHERE item_id = %d AND component_name = %s {$component_action_sql} {$secondary_item_sql}"; + $prepare = $wpdb->prepare( $query, $item_id, $component_name ); + $result = $wpdb->query( $prepare ); + + return $result; } } diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-oembed-extension.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-oembed-extension.php index 72fa60caeb18c873e525d474fa2a1b0caf4ead10..b2a480965ce1e513a7503d1aac35e3bc88e07792 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-oembed-extension.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-oembed-extension.php @@ -230,9 +230,10 @@ abstract class BP_Core_oEmbed_Extension { register_rest_route( 'oembed/1.0', "/embed/{$this->slug_endpoint}", array( array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_item' ), - 'args' => $args + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_item' ), + 'permission_callback' => '__return_true', + 'args' => $args ), ) ); } diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-user.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-user.php index 6b618bf4211a1920ef742137b00fb2ee385ccb51..ce4a6d1282fcaa835f2aa82cd8696ea714361f18 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-user.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-user.php @@ -205,7 +205,7 @@ class BP_Core_User { ); /* translators: %s: human time diff of the last time the user was active on the site. */ - $this->last_active = bp_core_get_last_activity( bp_get_user_last_activity( $this->id ), _x( 'active %s', 'last time the user was active', 'buddypress' ) ); + $this->last_active = bp_core_get_last_activity( bp_get_user_last_activity( $this->id ), _x( 'Active %s', 'last time the user was active', 'buddypress' ) ); } /** @@ -760,11 +760,12 @@ class BP_Core_User { // Fetch the user's last_activity. if ( 'active' != $type ) { - $user_activity = $wpdb->get_results( $wpdb->prepare( "SELECT user_id as id, meta_value as last_activity FROM {$wpdb->usermeta} WHERE meta_key = %s AND user_id IN ( {$user_ids} )", bp_get_user_meta_key( 'last_activity' ) ) ); + $user_activity = self::get_last_activity( $user_ids ); for ( $i = 0, $count = count( $paged_users ); $i < $count; ++$i ) { foreach ( (array) $user_activity as $activity ) { - if ( $activity->id == $paged_users[$i]->id ) - $paged_users[$i]->last_activity = $activity->last_activity; + if ( ! empty( $activity['user_id'] ) && (int) $activity['user_id'] === (int) $paged_users[$i]->id ) { + $paged_users[$i]->last_activity = $activity['date_recorded']; + } } } } diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-core.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-core.php index 7a322133aca06e28317805f616f2d65d0ba9fbfc..ca6fa8b2de67c029d3d4946f41967acad3ef1ed8 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-core.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-core.php @@ -35,6 +35,31 @@ class BP_Core extends BP_Component { $this->bootstrap(); } + /** + * Magic getter. + * + * This exists specifically for supporting deprecated object vars. + * + * @since 7.0.0 + * + * @param string $key + * @return mixed + */ + public function __get( $key = '' ) { + + // Backwards compatibility for the original Notifications table var + if ( 'table_name_notifications' === $key ) { + return bp_is_active( 'notifications' ) + ? buddypress()->notifications->table_name + : buddypress()->table_prefix . 'bp_notifications'; + } + + // Return object var if set, else null + return isset( $this->{$key} ) + ? $this->{$key} + : null; + } + /** * Populate the global data needed before BuddyPress can continue. * @@ -249,10 +274,6 @@ class BP_Core extends BP_Component { */ $bp->grav_default->blog = apply_filters( 'bp_blog_gravatar_default', $bp->grav_default->user ); - // Notifications table. Included here for legacy purposes. Use - // bp-notifications instead. - $bp->core->table_name_notifications = $bp->table_prefix . 'bp_notifications'; - // Backward compatibility for plugins modifying the legacy bp_nav and bp_options_nav global properties. $bp->bp_nav = new BP_Core_BP_Nav_BackCompat(); $bp->bp_options_nav = new BP_Core_BP_Options_Nav_BackCompat(); diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-embed.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-embed.php index b605ae700375e18a8b7da4c51d2b43dbf720d794..4b1d160f5f56f4a42326d995d9d1490980a825d0 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-embed.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-embed.php @@ -117,14 +117,9 @@ class BP_Embed extends WP_Embed { */ $id = apply_filters( 'embed_post_id', 0 ); - $unfiltered_html = current_user_can( 'unfiltered_html' ); - $default_discovery = false; - // Since 4.4, WordPress is now an oEmbed provider. - if ( function_exists( 'wp_oembed_register_route' ) ) { - $unfiltered_html = true; - $default_discovery = true; - } + $unfiltered_html = true; + $default_discovery = true; /** * Filters whether or not oEmbed discovery is on. diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-invitation-manager.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-invitation-manager.php index 904fe3e4e2812640f7762f306f1e5114d4a49fef..a8bb047ceedc69167e211b3abbde2fdffc3dae43 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-invitation-manager.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-invitation-manager.php @@ -50,7 +50,7 @@ abstract class BP_Invitation_Manager { * @return string */ public static function get_table_name() { - return buddypress()->table_prefix . 'bp_invitations'; + return buddypress()->members->table_name_invitations; } /** Create ********************************************************************/ @@ -611,7 +611,7 @@ abstract class BP_Invitation_Manager { * @param int $id The ID of the invitation to mark as sent. * @return bool True on success, false on failure. */ - abstract public function run_acceptance_action( $type = 'invite', $r ); + abstract public function run_acceptance_action( $type, $r ); /** * Mark invitation as accepted by invitation ID. diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-phpmailer.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-phpmailer.php index ab0b3e14e661bc7af708229840ae273eaa162734..df91f26e863c846eb922a993720b9cc3b49364ee 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-phpmailer.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-phpmailer.php @@ -26,6 +26,7 @@ class BP_PHPMailer implements BP_Email_Delivery { */ public function bp_email( BP_Email $email ) { static $phpmailer = null; + $phpmailer_is_6_0 = false; /** * Filter PHPMailer object to use. @@ -38,16 +39,33 @@ class BP_PHPMailer implements BP_Email_Delivery { */ $phpmailer = apply_filters( 'bp_phpmailer_object', $phpmailer ); - if ( ! ( $phpmailer instanceof PHPMailer ) ) { - if ( ! class_exists( 'PHPMailer' ) ) { - require_once ABSPATH . WPINC . '/class-phpmailer.php'; - require_once ABSPATH . WPINC . '/class-smtp.php'; + /** + * WordPress 5.5 deprecated version 5.2 of PHPMailer + * and is now using version 6.0 of PHPMailer. + */ + if ( bp_get_major_wp_version() >= 5.5 ) { + $phpmailer_is_6_0 = true; + + if ( ! ( $phpmailer instanceof PHPMailer\PHPMailer\PHPMailer ) ) { + if ( ! class_exists( 'PHPMailer\\PHPMailer\\PHPMailer' ) ) { + require_once ABSPATH . WPINC . '/PHPMailer/PHPMailer.php'; + require_once ABSPATH . WPINC . '/PHPMailer/SMTP.php'; + require_once ABSPATH . WPINC . '/PHPMailer/Exception.php'; + } + + $phpmailer = new PHPMailer\PHPMailer\PHPMailer( true ); } + } else { + if ( ! ( $phpmailer instanceof PHPMailer ) ) { + if ( ! class_exists( 'PHPMailer' ) ) { + require_once ABSPATH . WPINC . '/class-phpmailer.php'; + require_once ABSPATH . WPINC . '/class-smtp.php'; + } - $phpmailer = new PHPMailer( true ); + $phpmailer = new PHPMailer( true ); + } } - /* * Resets. */ @@ -58,21 +76,21 @@ class BP_PHPMailer implements BP_Email_Delivery { $phpmailer->clearReplyTos(); $phpmailer->Sender = ''; - /* * Set up. */ - $phpmailer->IsMail(); $phpmailer->CharSet = bp_get_option( 'blog_charset' ); - /* * Content. */ - $phpmailer->Subject = $email->get_subject( 'replace-tokens' ); - $content_plaintext = PHPMailer::normalizeBreaks( $email->get_content_plaintext( 'replace-tokens' ) ); + if ( $phpmailer_is_6_0 ) { + $content_plaintext = PHPMailer\PHPMailer\PHPMailer::normalizeBreaks( $email->get_content_plaintext( 'replace-tokens' ) ); + } else { + $content_plaintext = PHPMailer::normalizeBreaks( $email->get_content_plaintext( 'replace-tokens' ) ); + } if ( $email->get( 'content_type' ) === 'html' ) { $phpmailer->msgHTML( $email->get_template( 'add-content' ) ); @@ -84,38 +102,79 @@ class BP_PHPMailer implements BP_Email_Delivery { } $recipient = $email->get_from(); - try { - $phpmailer->SetFrom( $recipient->get_address(), $recipient->get_name(), false ); - } catch ( phpmailerException $e ) { + if ( $phpmailer_is_6_0 ) { + try { + $phpmailer->setFrom( $recipient->get_address(), $recipient->get_name(), false ); + } catch ( PHPMailer\PHPMailer\Exception $e ) { + } + } else { + try { + $phpmailer->SetFrom( $recipient->get_address(), $recipient->get_name(), false ); + } catch ( phpmailerException $e ) { + } } $recipient = $email->get_reply_to(); - try { - $phpmailer->addReplyTo( $recipient->get_address(), $recipient->get_name() ); - } catch ( phpmailerException $e ) { + if ( $phpmailer_is_6_0 ) { + try { + $phpmailer->addReplyTo( $recipient->get_address(), $recipient->get_name() ); + } catch ( PHPMailer\PHPMailer\Exception $e ) { + } + } else { + try { + $phpmailer->addReplyTo( $recipient->get_address(), $recipient->get_name() ); + } catch ( phpmailerException $e ) { + } } $recipients = $email->get_to(); - foreach ( $recipients as $recipient ) { - try { - $phpmailer->AddAddress( $recipient->get_address(), $recipient->get_name() ); - } catch ( phpmailerException $e ) { + if ( $phpmailer_is_6_0 ) { + foreach ( $recipients as $recipient ) { + try { + $phpmailer->AddAddress( $recipient->get_address(), $recipient->get_name() ); + } catch ( PHPMailer\PHPMailer\Exception $e ) { + } + } + } else { + foreach ( $recipients as $recipient ) { + try { + $phpmailer->AddAddress( $recipient->get_address(), $recipient->get_name() ); + } catch ( phpmailerException $e ) { + } } } $recipients = $email->get_cc(); - foreach ( $recipients as $recipient ) { - try { - $phpmailer->AddCc( $recipient->get_address(), $recipient->get_name() ); - } catch ( phpmailerException $e ) { + if ( $phpmailer_is_6_0 ) { + foreach ( $recipients as $recipient ) { + try { + $phpmailer->AddCc( $recipient->get_address(), $recipient->get_name() ); + } catch ( PHPMailer\PHPMailer\Exception $e ) { + } + } + } else { + foreach ( $recipients as $recipient ) { + try { + $phpmailer->AddCc( $recipient->get_address(), $recipient->get_name() ); + } catch ( phpmailerException $e ) { + } } } $recipients = $email->get_bcc(); - foreach ( $recipients as $recipient ) { - try { - $phpmailer->AddBcc( $recipient->get_address(), $recipient->get_name() ); - } catch ( phpmailerException $e ) { + if ( $phpmailer_is_6_0 ) { + foreach ( $recipients as $recipient ) { + try { + $phpmailer->AddBcc( $recipient->get_address(), $recipient->get_name() ); + } catch ( PHPMailer\PHPMailer\Exception $e ) { + } + } + } else { + foreach ( $recipients as $recipient ) { + try { + $phpmailer->AddBcc( $recipient->get_address(), $recipient->get_name() ); + } catch ( phpmailerException $e ) { + } } } @@ -124,7 +183,6 @@ class BP_PHPMailer implements BP_Email_Delivery { $phpmailer->AddCustomHeader( $name, $content ); } - /** * Fires after PHPMailer is initialised. * @@ -137,14 +195,21 @@ class BP_PHPMailer implements BP_Email_Delivery { /** This filter is documented in wp-includes/pluggable.php */ do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) ); - try { - return $phpmailer->Send(); - } catch ( phpmailerException $e ) { - return new WP_Error( $e->getCode(), $e->getMessage(), $email ); + if ( $phpmailer_is_6_0 ) { + try { + return $phpmailer->Send(); + } catch ( PHPMailer\PHPMailer\Exception $e ) { + return new WP_Error( $e->getCode(), $e->getMessage(), $email ); + } + } else { + try { + return $phpmailer->Send(); + } catch ( phpmailerException $e ) { + return new WP_Error( $e->getCode(), $e->getMessage(), $email ); + } } } - /* * Utility/helper functions. */ diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-rest-components-endpoint.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-rest-components-endpoint.php index e90b08652b4d7d8abc55ddd54c7bb4f7afc9f7f4..274e4b23a65a5ae9fa524aab5448a680353997ed 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-rest-components-endpoint.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-rest-components-endpoint.php @@ -156,19 +156,19 @@ class BP_REST_Components_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_items_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( ! ( is_user_logged_in() && bp_current_user_can( 'bp_moderate' ) ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( bp_current_user_can( 'manage_options' ) ) { + $retval = true; } /** @@ -176,7 +176,7 @@ class BP_REST_Components_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_components_get_items_permissions_check', $retval, $request ); @@ -198,7 +198,7 @@ class BP_REST_Components_Endpoint extends WP_REST_Controller { 'bp_rest_component_nonexistent', __( 'Sorry, this component does not exist.', 'buddypress' ), array( - 'status' => 500, + 'status' => 404, ) ); } @@ -209,7 +209,7 @@ class BP_REST_Components_Endpoint extends WP_REST_Controller { 'bp_rest_component_already_active', __( 'Sorry, this component is already active.', 'buddypress' ), array( - 'status' => 500, + 'status' => 400, ) ); } @@ -221,7 +221,7 @@ class BP_REST_Components_Endpoint extends WP_REST_Controller { 'bp_rest_component_inactive', __( 'Sorry, this component is not active.', 'buddypress' ), array( - 'status' => 500, + 'status' => 400, ) ); } @@ -231,7 +231,7 @@ class BP_REST_Components_Endpoint extends WP_REST_Controller { 'bp_rest_required_component', __( 'Sorry, you cannot deactivate a required component.', 'buddypress' ), array( - 'status' => 500, + 'status' => 400, ) ); } @@ -267,7 +267,7 @@ class BP_REST_Components_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function update_item_permissions_check( $request ) { $retval = $this->get_items_permissions_check( $request ); @@ -277,7 +277,7 @@ class BP_REST_Components_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_components_update_item_permissions_check', $retval, $request ); diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-user-query.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-user-query.php index 23d49b79d922394e1944f35e57d0cd2093484cc9..68b4fbf56d4917faf2271ad651bd5e2ed5a35601 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-user-query.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-user-query.php @@ -573,10 +573,12 @@ class BP_User_Query { ), $this ) ); - // We calculate total_users using a standalone query, except - // when a whitelist of user_ids is passed to the constructor. - // This clause covers the latter situation, and ensures that - // pagination works when querying by $user_ids. + /* + * We calculate total_users using a standalone query, except + * when a list of specific user_ids is passed to the constructor. + * This clause covers the latter situation, and ensures that + * pagination works when querying by $user_ids. + */ if ( empty( $this->total_users ) ) { $this->total_users = count( $wp_user_query->results ); } diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-walker-nav-menu-checklist.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-walker-nav-menu-checklist.php index 545a6ddf079d540300e05b42fee40b47e86c167e..a82833dda7cb3714d8648da30e4354b68b69ac75 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-walker-nav-menu-checklist.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-walker-nav-menu-checklist.php @@ -5,11 +5,15 @@ * @package BuddyPress * @subpackage Core * @since 1.9.0 + * @deprecated 7.0.0 This file is no longer used as of the improved way to generate BuddyPress Member's nav menu items in #8291. + * @todo Remove this file as it is no longer used. */ // Exit if accessed directly. defined( 'ABSPATH' ) || exit; +_deprecated_file( basename( __FILE__ ), '7.0.0' ); + /** * Create a set of BuddyPress-specific links for use in the Menus admin UI. * @@ -17,17 +21,21 @@ defined( 'ABSPATH' ) || exit; * to require an actual post type or taxonomy, and to force certain CSS classes. * * @since 1.9.0 + * @deprecated 7.0.0 This class is no longer used as of the improved way to generate BuddyPress Member's nav menu items in #8291. */ class BP_Walker_Nav_Menu_Checklist extends Walker_Nav_Menu { /** * Constructor. * + * @deprecated 7.0.0 + * * @see Walker_Nav_Menu::__construct() for a description of parameters. * * @param array|bool $fields See {@link Walker_Nav_Menu::__construct()}. */ public function __construct( $fields = false ) { + _deprecated_function( __METHOD__, '7.0.0' ); if ( $fields ) { $this->db_fields = $fields; } @@ -36,6 +44,8 @@ class BP_Walker_Nav_Menu_Checklist extends Walker_Nav_Menu { /** * Create the markup to start a tree level. * + * @deprecated 7.0.0 + * * @see Walker_Nav_Menu::start_lvl() for description of parameters. * * @param string $output See {@Walker_Nav_Menu::start_lvl()}. @@ -43,6 +53,7 @@ class BP_Walker_Nav_Menu_Checklist extends Walker_Nav_Menu { * @param array $args See {@Walker_Nav_Menu::start_lvl()}. */ public function start_lvl( &$output, $depth = 0, $args = array() ) { + _deprecated_function( __METHOD__, '7.0.0' ); $indent = str_repeat( "\t", $depth ); $output .= "\n$indent<ul class='children'>\n"; } @@ -50,6 +61,8 @@ class BP_Walker_Nav_Menu_Checklist extends Walker_Nav_Menu { /** * Create the markup to end a tree level. * + * @deprecated 7.0.0 + * * @see Walker_Nav_Menu::end_lvl() for description of parameters. * * @param string $output See {@Walker_Nav_Menu::end_lvl()}. @@ -57,6 +70,7 @@ class BP_Walker_Nav_Menu_Checklist extends Walker_Nav_Menu { * @param array $args See {@Walker_Nav_Menu::end_lvl()}. */ public function end_lvl( &$output, $depth = 0, $args = array() ) { + _deprecated_function( __METHOD__, '7.0.0' ); $indent = str_repeat( "\t", $depth ); $output .= "\n$indent</ul>"; } @@ -64,6 +78,8 @@ class BP_Walker_Nav_Menu_Checklist extends Walker_Nav_Menu { /** * Create the markup to start an element. * + * @deprecated 7.0.0 + * * @see Walker::start_el() for description of parameters. * * @param string $output Passed by reference. Used to append additional @@ -74,6 +90,7 @@ class BP_Walker_Nav_Menu_Checklist extends Walker_Nav_Menu { * @param int $id See {@Walker::start_el()}. */ function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { + _deprecated_function( __METHOD__, '7.0.0' ); global $_nav_menu_placeholder; $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1; diff --git a/wp-content/plugins/buddypress/bp-core/classes/trait-attachments.php b/wp-content/plugins/buddypress/bp-core/classes/trait-attachments.php index 70700a83bc97df288b958c42ad5b79a027e81c1d..739cc83549e7a8e1e4df20670ebd1f9c63390ad4 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/trait-attachments.php +++ b/wp-content/plugins/buddypress/bp-core/classes/trait-attachments.php @@ -53,6 +53,7 @@ trait BP_REST_Attachments { ), array( 'status' => 500, + 'reason' => 'upload_error', ) ); } @@ -73,6 +74,7 @@ trait BP_REST_Attachments { __( 'The BuddyPress attachments uploads directory is not set.', 'buddypress' ), array( 'status' => 500, + 'reason' => 'attachments_upload_dir', ) ); } @@ -81,12 +83,13 @@ trait BP_REST_Attachments { $cover_dir = $bp_attachments_uploads_dir['basedir'] . $cover_subdir; // If upload path doesn't exist, stop. - if ( 0 !== validate_file( $cover_dir ) || ! is_dir( $cover_dir ) ) { + if ( 1 === validate_file( $cover_dir ) || ! is_dir( $cover_dir ) ) { return new WP_Error( "bp_rest_attachments_{$this->object}_cover_upload_error", __( 'The cover image directory is not valid.', 'buddypress' ), array( 'status' => 500, + 'reason' => 'cover_image_dir', ) ); } @@ -107,6 +110,7 @@ trait BP_REST_Attachments { __( 'There was a problem uploading the cover image.', 'buddypress' ), array( 'status' => 500, + 'reason' => 'unknown', ) ); } @@ -126,7 +130,10 @@ trait BP_REST_Attachments { (int) $cover_dimensions['height'] ), array( - 'status' => 500, + 'status' => 400, + 'reason' => 'image_too_small', + 'min_width' => (int) $cover_dimensions['width'], + 'min_height' => (int) $cover_dimensions['height'], ) ); } @@ -178,6 +185,7 @@ trait BP_REST_Attachments { ), array( 'status' => 500, + 'reason' => 'upload_error', ) ); } @@ -190,16 +198,22 @@ trait BP_REST_Attachments { // If the uploaded image is smaller than the "full" dimensions, throw a warning. if ( $avatar_attachment->is_too_small( $image_file ) ) { + $full_width = bp_core_avatar_full_width(); + $full_height = bp_core_avatar_full_height(); + return new WP_Error( "bp_rest_attachments_{$this->object}_avatar_error", sprintf( /* translators: %1$s and %2$s is replaced with the correct sizes. */ __( 'You have selected an image that is smaller than recommended. For best results, upload a picture larger than %1$s x %2$s pixels.', 'buddypress' ), - bp_core_avatar_full_width(), - bp_core_avatar_full_height() + $full_width, + $full_height ), array( - 'status' => 500, + 'status' => 400, + 'reason' => 'image_too_small', + 'min_width' => $full_width, + 'min_height' => $full_height, ) ); } @@ -281,6 +295,7 @@ trait BP_REST_Attachments { ), array( 'status' => 500, + 'reason' => 'resize_error', ) ); } diff --git a/wp-content/plugins/buddypress/bp-core/deprecated/7.0.php b/wp-content/plugins/buddypress/bp-core/deprecated/7.0.php new file mode 100644 index 0000000000000000000000000000000000000000..7c3a7eb0167230912bc34c7cc2ac4613957944e2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/deprecated/7.0.php @@ -0,0 +1,45 @@ +<?php + +/** + * Deprecated functions. + * + * @deprecated 7.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Mark the posted activity as spam, if it contains disallowed keywords. + * + * Use bp_activity_check_disallowed_keys() instead. + * + * @since 1.6.0 + * @deprecated 7.0.0 + * + * @param BP_Activity_Activity $activity The activity object to check. + */ +function bp_activity_check_blacklist_keys( $activity ) { + _deprecated_function( __FUNCTION__, '7.0.0', 'bp_activity_check_disallowed_keys()' ); + return bp_activity_check_disallowed_keys( $activity ); +} + +/** + * Check for blocked keys. + * + * Use bp_core_check_for_disallowed_keys() instead. + * + * @since 1.6.0 + * @since 2.6.0 Added $error_type parameter. + * @deprecated 7.0.0 + * + * @param int $user_id User ID. + * @param string $title The title of the content. + * @param string $content The content being posted. + * @param string $error_type The error type to return. Either 'bool' or 'wp_error'. + * @return bool|WP_Error True if test is passed, false if fail. + */ +function bp_core_check_for_blacklist( $user_id = 0, $title = '', $content = '', $error_type = 'bool' ) { + _deprecated_function( __FUNCTION__, '7.0.0', 'bp_core_check_for_disallowed_keys()' ); + return bp_core_check_for_disallowed_keys( $user_id, $title, $content, $error_type ); +} diff --git a/wp-content/plugins/buddypress/bp-core/images/bp-new-blocks.png b/wp-content/plugins/buddypress/bp-core/images/bp-new-blocks.png new file mode 100644 index 0000000000000000000000000000000000000000..2d95f41119722f3215dbb14742a19b05596cbe03 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/bp-new-blocks.png differ diff --git a/wp-content/plugins/buddypress/bp-core/images/bp-nouveau-2021.png b/wp-content/plugins/buddypress/bp-core/images/bp-nouveau-2021.png new file mode 100644 index 0000000000000000000000000000000000000000..bdbbf8f97007d4120271e3f54f32342957184e2a Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/bp-nouveau-2021.png differ diff --git a/wp-content/plugins/buddypress/bp-core/images/bp-types-illustration.png b/wp-content/plugins/buddypress/bp-core/images/bp-types-illustration.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e914ccafaf3ae70bee2a5c5e05ba27fd24508e Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/bp-types-illustration.png differ diff --git a/wp-content/plugins/buddypress/bp-core/images/mystery-blog-50.png b/wp-content/plugins/buddypress/bp-core/images/mystery-blog-50.png new file mode 100644 index 0000000000000000000000000000000000000000..15c1d0a5dbdf0ecb88ddb5b8bdcf84c3a4336256 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/mystery-blog-50.png differ diff --git a/wp-content/plugins/buddypress/bp-core/images/mystery-blog.png b/wp-content/plugins/buddypress/bp-core/images/mystery-blog.png new file mode 100644 index 0000000000000000000000000000000000000000..b01042fe6438e86c69bc6efe1c42a85c380327be Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/mystery-blog.png differ diff --git a/wp-content/plugins/buddypress/bp-core/js/block-components.js b/wp-content/plugins/buddypress/bp-core/js/block-components.js index a8ecc496ded1d5526083e21230cba260849004d2..8d5cc8b3e6277b1c440026928342d3c79c858b07 100644 --- a/wp-content/plugins/buddypress/bp-core/js/block-components.js +++ b/wp-content/plugins/buddypress/bp-core/js/block-components.js @@ -15,7 +15,7 @@ function t(o,e){return module.exports=t=Object.setPrototypeOf||function(t,o){ret },{}],"RISo":[function(require,module,exports) { var e=require("./setPrototypeOf");function r(r,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");r.prototype=Object.create(t&&t.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),t&&e(r,t)}module.exports=r; },{"./setPrototypeOf":"zqo5"}],"W80x":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=o(require("@babel/runtime/helpers/classCallCheck")),t=o(require("@babel/runtime/helpers/createClass")),r=o(require("@babel/runtime/helpers/assertThisInitialized")),a=o(require("@babel/runtime/helpers/possibleConstructorReturn")),s=o(require("@babel/runtime/helpers/getPrototypeOf")),n=o(require("@babel/runtime/helpers/inherits"));function o(e){return e&&e.__esModule?e:{default:e}}function u(e){return function(){var t,r=(0,s.default)(e);if(l()){var n=(0,s.default)(this).constructor;t=Reflect.construct(r,arguments,n)}else t=r.apply(this,arguments);return(0,a.default)(this,t)}}function l(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}var i=wp.element,c=i.Component,m=i.Fragment,p=i.createElement,h=wp.components.Popover,f=wp,d=f.apiFetch,b=wp.i18n.__,_=function(a){(0,n.default)(o,a);var s=u(o);function o(){var t;return(0,e.default)(this,o),(t=s.apply(this,arguments)).state={search:"",items:[],error:""},t.searchItemName=t.searchItemName.bind((0,r.default)(t)),t.selectItemName=t.selectItemName.bind((0,r.default)(t)),t}return(0,t.default)(o,[{key:"searchItemName",value:function(e){var t=this,r=this.state.search,a=this.props,s=a.component,n=a.objectStatus;this.setState({search:e}),e.length<r.length&&this.setState({items:[]});var o="/buddypress/v1/"+s;e&&(o+="?search="+encodeURIComponent(e)),n&&(o+="&status="+n),d({path:o}).then(function(e){t.setState({items:e})},function(e){t.setState({error:e.message})})}},{key:"selectItemName",value:function(e,t){var r=this.props.onSelectItem;return e.preventDefault(),this.setState({search:"",items:[],error:""}),r({itemID:t})}},{key:"render",value:function(){var e,t=this,r=this.state,a=r.search,s=r.items,n=this.props,o=n.ariaLabel,u=n.placeholder,l=n.useAvatar;return o||(o=b("Item's name","buddypress")),u||(u=b("Enter Item's name here…","buddypress")),s.length&&(e=s.map(function(e){return p("button",{type:"button",key:"editor-autocompleters__item-item-"+e.id,role:"option","aria-selected":"true",className:"components-button components-autocomplete__result editor-autocompleters__user",onClick:function(r){return t.selectItemName(r,e.id)}},l&&p("img",{key:"avatar",className:"editor-autocompleters__user-avatar",alt:"",src:e.avatar_urls.thumb}),p("span",{key:"name",className:"editor-autocompleters__user-name"},e.name),e.mention_name&&p("span",{key:"slug",className:"editor-autocompleters__user-slug"},e.mention_name))})),p(m,null,p("input",{type:"text",value:a,className:"components-placeholder__input","aria-label":o,placeholder:u,onChange:function(e){return t.searchItemName(e.target.value)}}),0!==s.length&&p(h,{className:"components-autocomplete__popover",focusOnMount:!1,position:"bottom left"},p("div",{className:"components-autocomplete__results"},e)))}}]),o}(c),v=_;exports.default=v; +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=o(require("@babel/runtime/helpers/classCallCheck")),t=o(require("@babel/runtime/helpers/createClass")),r=o(require("@babel/runtime/helpers/assertThisInitialized")),a=o(require("@babel/runtime/helpers/possibleConstructorReturn")),s=o(require("@babel/runtime/helpers/getPrototypeOf")),n=o(require("@babel/runtime/helpers/inherits"));function o(e){return e&&e.__esModule?e:{default:e}}function u(e){var t=l();return function(){var r,n=(0,s.default)(e);if(t){var o=(0,s.default)(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return(0,a.default)(this,r)}}function l(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}var i=wp,c=i.apiFetch,m=i.components.Popover,p=i.element,h=p.Component,f=p.Fragment,d=p.createElement,b=i.i18n.__,v=i.url.addQueryArgs,_=function(a){(0,n.default)(o,a);var s=u(o);function o(){var t;return(0,e.default)(this,o),(t=s.apply(this,arguments)).state={search:"",items:[],error:""},t.searchItemName=t.searchItemName.bind((0,r.default)(t)),t.selectItemName=t.selectItemName.bind((0,r.default)(t)),t}return(0,t.default)(o,[{key:"searchItemName",value:function(e){var t=this,r=this.state.search,a=this.props,s=a.component,n=a.objectQueryArgs;this.setState({search:e}),e.length<r.length&&this.setState({items:[]});var o="/buddypress/v1/"+s,u={};e&&(u.search=encodeURIComponent(e)),n&&(u=Object.assign(u,n)),c({path:v(o,u)}).then(function(e){t.setState({items:e})},function(e){t.setState({error:e.message})})}},{key:"selectItemName",value:function(e,t){var r=this.props.onSelectItem;return e.preventDefault(),this.setState({search:"",items:[],error:""}),r({itemID:t})}},{key:"render",value:function(){var e,t=this,r=this.state,a=r.search,s=r.items,n=this.props,o=n.ariaLabel,u=n.placeholder,l=n.useAvatar,i=n.slugValue;return o||(o=b("Item's name","buddypress")),u||(u=b("Enter Item's name here…","buddypress")),s.length&&(e=s.map(function(e){return d("button",{type:"button",key:"editor-autocompleters__item-item-"+e.id,role:"option","aria-selected":"true",className:"components-button components-autocomplete__result editor-autocompleters__user",onClick:function(r){return t.selectItemName(r,e.id)}},l&&d("img",{key:"avatar",className:"editor-autocompleters__user-avatar",alt:"",src:e.avatar_urls.thumb}),d("span",{key:"name",className:"editor-autocompleters__user-name"},e.name),i&&null!==i(e)&&d("span",{key:"slug",className:"editor-autocompleters__user-slug"},i(e)))})),d(f,null,d("input",{type:"text",value:a,className:"components-placeholder__input","aria-label":o,placeholder:u,onChange:function(e){return t.searchItemName(e.target.value)}}),0!==s.length&&d(m,{className:"components-autocomplete__popover",focusOnMount:!1,position:"bottom left"},d("div",{className:"components-autocomplete__results"},e)))}}]),o}(h),y=_;exports.default=y; },{"@babel/runtime/helpers/classCallCheck":"IC7x","@babel/runtime/helpers/createClass":"WiqS","@babel/runtime/helpers/assertThisInitialized":"NS7G","@babel/runtime/helpers/possibleConstructorReturn":"oXYo","@babel/runtime/helpers/getPrototypeOf":"goD2","@babel/runtime/helpers/inherits":"RISo"}],"iA92":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("./autocompleter"));function t(e){return e&&e.__esModule?e:{default:e}}var r={AutoCompleter:e.default};exports.default=r; },{"./autocompleter":"W80x"}],"Ee8M":[function(require,module,exports) { diff --git a/wp-content/plugins/buddypress/bp-core/js/block-components.js.map b/wp-content/plugins/buddypress/bp-core/js/block-components.js.map index 08586762280b1d6dcd5c9038a4830b6928a7f26e..2986785c511d64672c6ea9278745f8b8015e28ec 100644 --- a/wp-content/plugins/buddypress/bp-core/js/block-components.js.map +++ b/wp-content/plugins/buddypress/bp-core/js/block-components.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../../../../node_modules/@babel/runtime/helpers/createClass.js","../../../../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../../../../node_modules/@babel/runtime/helpers/typeof.js","../../../../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../../../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../../../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../../../../node_modules/@babel/runtime/helpers/inherits.js","components/autocompleter.js","components/index.js","block-components.js"],"names":["AutoCompleter","wp","element","Component","Fragment","createElement","Popover","components","apiFetch","__","i18n","arguments","state","search","items","error","searchItemName","bind","selectItemName","value","props","component","objectStatus","setState","length","path","encodeURIComponent","then","message","event","itemID","onSelectItem","preventDefault","itemsList","ariaLabel","placeholder","useAvatar","map","item","id","avatar_urls","thumb","name","mention_name","target"],"mappings":";AAAA,SAAA,EAAA,EAAA,GACA,KAAA,aAAA,GACA,MAAA,IAAA,UAAA,qCAIA,OAAA,QAAA;;ACNA,SAAA,EAAA,EAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,GACA,EAAA,WAAA,EAAA,aAAA,EACA,EAAA,cAAA,EACA,UAAA,IAAA,EAAA,UAAA,GACA,OAAA,eAAA,EAAA,EAAA,IAAA,IAIA,SAAA,EAAA,EAAA,EAAA,GAGA,OAFA,GAAA,EAAA,EAAA,UAAA,GACA,GAAA,EAAA,EAAA,GACA,EAGA,OAAA,QAAA;;AChBA,SAAA,EAAA,GACA,QAAA,IAAA,EACA,MAAA,IAAA,eAAA,6DAGA,OAAA,EAGA,OAAA,QAAA;;ACRA,SAAA,EAAA,GAaA,MAVA,mBAAA,QAAA,iBAAA,OAAA,SACA,OAAA,QAAA,EAAA,SAAA,GACA,cAAA,GAGA,OAAA,QAAA,EAAA,SAAA,GACA,OAAA,GAAA,mBAAA,QAAA,EAAA,cAAA,QAAA,IAAA,OAAA,UAAA,gBAAA,GAIA,EAAA,GAGA,OAAA,QAAA;;AChBA,IAAA,EAAA,QAAA,qBAEA,EAAA,QAAA,2BAEA,SAAA,EAAA,EAAA,GACA,OAAA,GAAA,WAAA,EAAA,IAAA,mBAAA,EAIA,EAAA,GAHA,EAMA,OAAA,QAAA;;ACZA,SAAA,EAAA,GAIA,OAHA,OAAA,QAAA,EAAA,OAAA,eAAA,OAAA,eAAA,SAAA,GACA,OAAA,EAAA,WAAA,OAAA,eAAA,IAEA,EAAA,GAGA,OAAA,QAAA;;ACPA,SAAA,EAAA,EAAA,GAMA,OALA,OAAA,QAAA,EAAA,OAAA,gBAAA,SAAA,EAAA,GAEA,OADA,EAAA,UAAA,EACA,GAGA,EAAA,EAAA,GAGA,OAAA,QAAA;;ACTA,IAAA,EAAA,QAAA,oBAEA,SAAA,EAAA,EAAA,GACA,GAAA,mBAAA,GAAA,OAAA,EACA,MAAA,IAAA,UAAA,sDAGA,EAAA,UAAA,OAAA,OAAA,GAAA,EAAA,UAAA,CACA,YAAA,CACA,MAAA,EACA,UAAA,EACA,cAAA,KAGA,GAAA,EAAA,EAAA,GAGA,OAAA,QAAA;;AC0GeA,aAAAA,OAAAA,eAAAA,QAAAA,aAAAA,CAAAA,OAAAA,IAAAA,QAAAA,aAAAA,EAAAA,IAAAA,EAAAA,EAAAA,QAAAA,0CAAAA,EAAAA,EAAAA,QAAAA,uCAAAA,EAAAA,EAAAA,QAAAA,iDAAAA,EAAAA,EAAAA,QAAAA,qDAAAA,EAAAA,EAAAA,QAAAA,0CAAAA,EAAAA,EAAAA,QAAAA,oCAAAA,SAAAA,EAAAA,GAAAA,OAAAA,GAAAA,EAAAA,WAAAA,EAAAA,CAAAA,QAAAA,GAAAA,SAAAA,EAAAA,GAAAA,OAAAA,WAAAA,IAAAA,EAAAA,GAAAA,EAAAA,EAAAA,SAAAA,GAAAA,GAAAA,IAAAA,CAAAA,IAAAA,GAAAA,EAAAA,EAAAA,SAAAA,MAAAA,YAAAA,EAAAA,QAAAA,UAAAA,EAAAA,UAAAA,QAAAA,EAAAA,EAAAA,MAAAA,KAAAA,WAAAA,OAAAA,EAAAA,EAAAA,SAAAA,KAAAA,IAAAA,SAAAA,IAAAA,GAAAA,oBAAAA,UAAAA,QAAAA,UAAAA,OAAAA,EAAAA,GAAAA,QAAAA,UAAAA,KAAAA,OAAAA,EAAAA,GAAAA,mBAAAA,MAAAA,OAAAA,EAAAA,IAAAA,OAAAA,KAAAA,UAAAA,SAAAA,KAAAA,QAAAA,UAAAA,KAAAA,GAAAA,gBAAAA,EAAAA,MAAAA,GAAAA,OAAAA,GAxHgCC,IAAAA,EAAAA,GAAGC,QAA1CC,EAAAA,EAAAA,UAAWC,EAAAA,EAAAA,SAAUC,EAAAA,EAAAA,cACrBC,EAAYL,GAAGM,WAAfD,QACaL,EAAAA,GAAbO,EAAAA,EAAAA,SACAC,EAAOR,GAAGS,KAAVD,GAEFT,EAAAA,SAAAA,IAmHSA,EAAAA,EAAAA,SAAAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,GAlHA,SAAA,IAAA,IAAA,EAAA,OAAA,EAAA,EAAA,SAAA,KAAA,IACHW,EAAAA,EAAAA,MAAAA,KAAAA,YAELC,MAAQ,CACZC,OAAQ,GACRC,MAAO,GACPC,MAAO,IAGHC,EAAAA,eAAiB,EAAKA,eAAeC,MAA1C,EAAA,EAAA,SAAA,IACKC,EAAAA,eAAiB,EAAKA,eAAeD,MAA1C,EAAA,EAAA,SAAA,IAVa,EAkHAjB,OAAAA,EAAAA,EAAAA,SAAAA,EAAAA,CAAAA,CAAAA,IAAAA,iBArGEmB,MAAAA,SAAAA,GAAQ,IAAA,EAAA,KACfN,EAAW,KAAKD,MAAhBC,OAC4B,EAAA,KAAKO,MAAjCC,EAAAA,EAAAA,UAAWC,EAAAA,EAAAA,aACdC,KAAAA,SAAU,CAAEV,OAAQM,IAEpBA,EAAMK,OAASX,EAAOW,QACrBD,KAAAA,SAAU,CAAET,MAAO,KAGrBW,IAAAA,EAAM,kBAAoBJ,EAEzBF,IACJM,GAAQ,WAAaC,mBAAoBP,IAGrCG,IACJG,GAAQ,WAAaH,GAGtBd,EAAU,CAAEiB,KAAOA,IAASE,KAAM,SAAAb,GACjC,EAAKS,SAAU,CAAET,MAAOA,KACtB,SAAAC,GACF,EAAKQ,SAAU,CAAER,MAAOA,EAAMa,cA+ElB5B,CAAAA,IAAAA,iBA3EE6B,MAAAA,SAAAA,EAAOC,GACdC,IAAAA,EAAiB,KAAKX,MAAtBW,aASDA,OARPF,EAAMG,iBAEDT,KAAAA,SAAU,CACdV,OAAQ,GACRC,MAAO,GACPC,MAAO,KAGDgB,EAAc,CAAED,OAAQA,MAiElB9B,CAAAA,IAAAA,SA9DL,MAAA,WAAA,IAGJiC,EAHI,EAAA,KACkB,EAAA,KAAKrB,MAAvBC,EAAAA,EAAAA,OAAQC,EAAAA,EAAAA,MAC4B,EAAA,KAAKM,MAA3Cc,EAAAA,EAAAA,UAAWC,EAAAA,EAAAA,YAAaC,EAAAA,EAAAA,UAmC7B,OAhCMF,IACNA,EAAYzB,EAAI,cAAgB,eAG1B0B,IACNA,EAAc1B,EAAI,0BAA4B,eAG1CK,EAAMU,SACVS,EAAYnB,EAAMuB,IAAK,SAAEC,GAEvB,OAAA,EAAA,SAAA,CACC,KAAK,SAAS,IAAM,oCAAsCA,EAAKC,GAC/D,KAAK,SACS,gBAAA,OACd,UAAU,gFACV,QAAU,SAAEV,GAAW,OAAA,EAAKX,eAAgBW,EAAOS,EAAKC,MAEtDH,GACD,EAAA,MAAA,CAAK,IAAI,SAAS,UAAU,qCAAqC,IAAI,GAAG,IAAME,EAAKE,YAAYC,QAEhG,EAAA,OAAA,CAAM,IAAI,OAAO,UAAU,oCAAqCH,EAAKI,MAEnEJ,EAAKK,cACN,EAAA,OAAA,CAAM,IAAI,OAAO,UAAU,oCAAqCL,EAAKK,kBAQzE,EAAC,EACA,KAAA,EAAA,QAAA,CACC,KAAK,OACL,MAAQ9B,EACR,UAAU,gCACGqB,aAAAA,EACb,YAAcC,EACd,SAAW,SAAEN,GAAW,OAAA,EAAKb,eAAgBa,EAAMe,OAAOzB,UAEzD,IAAML,EAAMU,QACb,EAAC,EAAD,CACC,UAAU,mCACV,cAAe,EACf,SAAS,eAET,EAAA,MAAA,CAAK,UAAU,oCACZS,SASMjC,EAnHTA,CAAsBG,GAmHbH,EAAAA,EAAAA,QAAAA,QAAAA;;ACxHA,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,aAAA,EAFf,IAAA,EAAA,EAAA,QAAA,oBAEe,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GAAA,IAAA,EAAA,CACdA,cAAAA,EAAAA,SADc,QAAA,QAAA;;ACHf,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,OAAA,eAAA,QAAA,kBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,WAAA,IAAA,EAAA,EAAA,QAAA,iBAAA,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA","file":"block-components.js","sourceRoot":"../../../src/js/bp-core/js/block-components","sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","/**\n * WordPress dependencies.\n */\nconst { Component, Fragment, createElement } = wp.element;\nconst { Popover } = wp.components;\nconst { apiFetch } = wp;\nconst { __ } = wp.i18n;\n\nclass AutoCompleter extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.state = {\n\t\t\tsearch: '',\n\t\t\titems: [],\n\t\t\terror: '',\n\t\t};\n\n\t\tthis.searchItemName = this.searchItemName.bind( this );\n\t\tthis.selectItemName = this.selectItemName.bind( this );\n\t}\n\n\tsearchItemName( value ) {\n\t\tconst { search } = this.state;\n\t\tconst { component, objectStatus } = this.props;\n\t\tthis.setState( { search: value } );\n\n\t\tif ( value.length < search.length ) {\n\t\t\tthis.setState( { items: [] } );\n\t\t}\n\n\t\tlet path= '/buddypress/v1/' + component;\n\n\t\tif ( value ) {\n\t\t\tpath += '?search=' + encodeURIComponent( value );\n\t\t}\n\n\t\tif ( objectStatus ) {\n\t\t\tpath += '&status=' + objectStatus;\n\t\t}\n\n\t\tapiFetch( { path: path } ).then( items => {\n\t\t\tthis.setState( { items: items } );\n\t\t}, error => {\n\t\t\tthis.setState( { error: error.message } );\n\t\t} );\n\t}\n\n\tselectItemName( event, itemID ) {\n\t\tconst { onSelectItem } = this.props;\n\t\tevent.preventDefault();\n\n\t\tthis.setState( {\n\t\t\tsearch: '',\n\t\t\titems: [],\n\t\t\terror: '',\n\t\t} );\n\n\t\treturn onSelectItem( { itemID: itemID } );\n\t}\n\n\trender() {\n\t\tconst { search, items } = this.state;\n\t\tlet { ariaLabel, placeholder, useAvatar } = this.props;\n\t\tlet itemsList;\n\n\t\tif ( ! ariaLabel ) {\n\t\t\tariaLabel = __( 'Item\\'s name', 'buddypress' );\n\t\t}\n\n\t\tif ( ! placeholder ) {\n\t\t\tplaceholder = __( 'Enter Item\\'s name here…', 'buddypress' );\n\t\t}\n\n\t\tif ( items.length ) {\n\t\t\titemsList = items.map( ( item ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\" key={ 'editor-autocompleters__item-item-' + item.id }\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\taria-selected=\"true\"\n\t\t\t\t\t\tclassName=\"components-button components-autocomplete__result editor-autocompleters__user\"\n\t\t\t\t\t\tonClick={ ( event ) => this.selectItemName( event, item.id ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ useAvatar && (\n\t\t\t\t\t\t\t<img key=\"avatar\" className=\"editor-autocompleters__user-avatar\" alt=\"\" src={ item.avatar_urls.thumb } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<span key=\"name\" className=\"editor-autocompleters__user-name\">{ item.name }</span>\n\n\t\t\t\t\t\t{ item.mention_name && (\n\t\t\t\t\t\t\t<span key=\"slug\" className=\"editor-autocompleters__user-slug\">{ item.mention_name }</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={ search }\n\t\t\t\t\tclassName=\"components-placeholder__input\"\n\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tonChange={ ( event ) => this.searchItemName( event.target.value ) }\n\t\t\t\t/>\n\t\t\t\t{ 0 !== items.length &&\n\t\t\t\t\t<Popover\n\t\t\t\t\t\tclassName=\"components-autocomplete__popover\"\n\t\t\t\t\t\tfocusOnMount={ false }\n\t\t\t\t\t\tposition=\"bottom left\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"components-autocomplete__results\">\n\t\t\t\t\t\t\t{ itemsList }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Popover>\n\t\t\t\t}\n\t\t\t</Fragment>\n\t\t);\n\t}\n}\n\nexport default AutoCompleter;\n","// Components\nimport AutoCompleter from './autocompleter'\n\nexport default {\n\tAutoCompleter\n};\n","export { default as blockComponents } from './components';\n"]} \ No newline at end of file +{"version":3,"sources":["../../../../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../../../../node_modules/@babel/runtime/helpers/createClass.js","../../../../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../../../../node_modules/@babel/runtime/helpers/typeof.js","../../../../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../../../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../../../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../../../../node_modules/@babel/runtime/helpers/inherits.js","components/autocompleter.js","components/index.js","block-components.js"],"names":["AutoCompleter","wp","apiFetch","Popover","components","element","Component","Fragment","createElement","__","i18n","addQueryArgs","url","arguments","state","search","items","error","searchItemName","bind","selectItemName","value","props","component","objectQueryArgs","setState","length","path","queryArgs","encodeURIComponent","Object","assign","then","message","event","itemID","onSelectItem","preventDefault","itemsList","ariaLabel","placeholder","useAvatar","slugValue","map","item","id","avatar_urls","thumb","name","target"],"mappings":";AAAA,SAAA,EAAA,EAAA,GACA,KAAA,aAAA,GACA,MAAA,IAAA,UAAA,qCAIA,OAAA,QAAA;;ACNA,SAAA,EAAA,EAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,GACA,EAAA,WAAA,EAAA,aAAA,EACA,EAAA,cAAA,EACA,UAAA,IAAA,EAAA,UAAA,GACA,OAAA,eAAA,EAAA,EAAA,IAAA,IAIA,SAAA,EAAA,EAAA,EAAA,GAGA,OAFA,GAAA,EAAA,EAAA,UAAA,GACA,GAAA,EAAA,EAAA,GACA,EAGA,OAAA,QAAA;;AChBA,SAAA,EAAA,GACA,QAAA,IAAA,EACA,MAAA,IAAA,eAAA,6DAGA,OAAA,EAGA,OAAA,QAAA;;ACRA,SAAA,EAAA,GAaA,MAVA,mBAAA,QAAA,iBAAA,OAAA,SACA,OAAA,QAAA,EAAA,SAAA,GACA,cAAA,GAGA,OAAA,QAAA,EAAA,SAAA,GACA,OAAA,GAAA,mBAAA,QAAA,EAAA,cAAA,QAAA,IAAA,OAAA,UAAA,gBAAA,GAIA,EAAA,GAGA,OAAA,QAAA;;AChBA,IAAA,EAAA,QAAA,qBAEA,EAAA,QAAA,2BAEA,SAAA,EAAA,EAAA,GACA,OAAA,GAAA,WAAA,EAAA,IAAA,mBAAA,EAIA,EAAA,GAHA,EAMA,OAAA,QAAA;;ACZA,SAAA,EAAA,GAIA,OAHA,OAAA,QAAA,EAAA,OAAA,eAAA,OAAA,eAAA,SAAA,GACA,OAAA,EAAA,WAAA,OAAA,eAAA,IAEA,EAAA,GAGA,OAAA,QAAA;;ACPA,SAAA,EAAA,EAAA,GAMA,OALA,OAAA,QAAA,EAAA,OAAA,gBAAA,SAAA,EAAA,GAEA,OADA,EAAA,UAAA,EACA,GAGA,EAAA,EAAA,GAGA,OAAA,QAAA;;ACTA,IAAA,EAAA,QAAA,oBAEA,SAAA,EAAA,EAAA,GACA,GAAA,mBAAA,GAAA,OAAA,EACA,MAAA,IAAA,UAAA,sDAGA,EAAA,UAAA,OAAA,OAAA,GAAA,EAAA,UAAA,CACA,YAAA,CACA,MAAA,EACA,UAAA,EACA,cAAA,KAGA,GAAA,EAAA,EAAA,GAGA,OAAA,QAAA;;ACyHeA,aAAAA,OAAAA,eAAAA,QAAAA,aAAAA,CAAAA,OAAAA,IAAAA,QAAAA,aAAAA,EAAAA,IAAAA,EAAAA,EAAAA,QAAAA,0CAAAA,EAAAA,EAAAA,QAAAA,uCAAAA,EAAAA,EAAAA,QAAAA,iDAAAA,EAAAA,EAAAA,QAAAA,qDAAAA,EAAAA,EAAAA,QAAAA,0CAAAA,EAAAA,EAAAA,QAAAA,oCAAAA,SAAAA,EAAAA,GAAAA,OAAAA,GAAAA,EAAAA,WAAAA,EAAAA,CAAAA,QAAAA,GAAAA,SAAAA,EAAAA,GAAAA,IAAAA,EAAAA,IAAAA,OAAAA,WAAAA,IAAAA,EAAAA,GAAAA,EAAAA,EAAAA,SAAAA,GAAAA,GAAAA,EAAAA,CAAAA,IAAAA,GAAAA,EAAAA,EAAAA,SAAAA,MAAAA,YAAAA,EAAAA,QAAAA,UAAAA,EAAAA,UAAAA,QAAAA,EAAAA,EAAAA,MAAAA,KAAAA,WAAAA,OAAAA,EAAAA,EAAAA,SAAAA,KAAAA,IAAAA,SAAAA,IAAAA,GAAAA,oBAAAA,UAAAA,QAAAA,UAAAA,OAAAA,EAAAA,GAAAA,QAAAA,UAAAA,KAAAA,OAAAA,EAAAA,GAAAA,mBAAAA,MAAAA,OAAAA,EAAAA,IAAAA,OAAAA,KAAAA,UAAAA,SAAAA,KAAAA,QAAAA,UAAAA,KAAAA,GAAAA,gBAAAA,EAAAA,MAAAA,GAAAA,OAAAA,GAvHXC,IAAAA,EAAAA,GAfHC,EAAAA,EAAAA,SAECC,EADDC,EAAAA,WACCD,QAEDE,EAAAA,EAAAA,QACCC,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,cAGAC,EADDC,EAAAA,KACCD,GAGAE,EADDC,EAAAA,IACCD,aAIIX,EAAAA,SAAAA,IAqHSA,EAAAA,EAAAA,SAAAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,GApHA,SAAA,IAAA,IAAA,EAAA,OAAA,EAAA,EAAA,SAAA,KAAA,IACHa,EAAAA,EAAAA,MAAAA,KAAAA,YAELC,MAAQ,CACZC,OAAQ,GACRC,MAAO,GACPC,MAAO,IAGHC,EAAAA,eAAiB,EAAKA,eAAeC,MAA1C,EAAA,EAAA,SAAA,IACKC,EAAAA,eAAiB,EAAKA,eAAeD,MAA1C,EAAA,EAAA,SAAA,IAVa,EAoHAnB,OAAAA,EAAAA,EAAAA,SAAAA,EAAAA,CAAAA,CAAAA,IAAAA,iBAvGEqB,MAAAA,SAAAA,GAAQ,IAAA,EAAA,KACfN,EAAW,KAAKD,MAAhBC,OAC+B,EAAA,KAAKO,MAApCC,EAAAA,EAAAA,UAAWC,EAAAA,EAAAA,gBACdC,KAAAA,SAAU,CAAEV,OAAQM,IAEpBA,EAAMK,OAASX,EAAOW,QACrBD,KAAAA,SAAU,CAAET,MAAO,KAGrBW,IAAAA,EAAM,kBAAoBJ,EAC1BK,EAAY,GAEXP,IACJO,EAAUb,OAASc,mBAAoBR,IAGnCG,IACJI,EAAYE,OAAOC,OAAQH,EAAWJ,IAGvCtB,EAAU,CAAEyB,KAAOhB,EAAcgB,EAAMC,KAAgBI,KAAM,SAAAhB,GAC5D,EAAKS,SAAU,CAAET,MAAOA,KACtB,SAAAC,GACF,EAAKQ,SAAU,CAAER,MAAOA,EAAMgB,cAgFlBjC,CAAAA,IAAAA,iBA5EEkC,MAAAA,SAAAA,EAAOC,GACdC,IAAAA,EAAiB,KAAKd,MAAtBc,aASDA,OARPF,EAAMG,iBAEDZ,KAAAA,SAAU,CACdV,OAAQ,GACRC,MAAO,GACPC,MAAO,KAGDmB,EAAc,CAAED,OAAQA,MAkElBnC,CAAAA,IAAAA,SA/DL,MAAA,WAAA,IAGJsC,EAHI,EAAA,KACkB,EAAA,KAAKxB,MAAvBC,EAAAA,EAAAA,OAAQC,EAAAA,EAAAA,MACuC,EAAA,KAAKM,MAAtDiB,EAAAA,EAAAA,UAAWC,EAAAA,EAAAA,YAAaC,EAAAA,EAAAA,UAAWC,EAAAA,EAAAA,UAoCxC,OAjCMH,IACNA,EAAY9B,EAAI,cAAgB,eAG1B+B,IACNA,EAAc/B,EAAI,0BAA4B,eAG1CO,EAAMU,SACVY,EAAYtB,EAAM2B,IAAK,SAAEC,GAEvB,OAAA,EAAA,SAAA,CACC,KAAK,SAAS,IAAM,oCAAsCA,EAAKC,GAC/D,KAAK,SACS,gBAAA,OACd,UAAU,gFACV,QAAU,SAAEX,GAAW,OAAA,EAAKd,eAAgBc,EAAOU,EAAKC,MAEtDJ,GACD,EAAA,MAAA,CAAK,IAAI,SAAS,UAAU,qCAAqC,IAAI,GAAG,IAAMG,EAAKE,YAAYC,QAGhG,EAAA,OAAA,CAAM,IAAI,OAAO,UAAU,oCAAqCH,EAAKI,MAEnEN,GAAa,OAASA,EAAWE,IAClC,EAAA,OAAA,CAAM,IAAI,OAAO,UAAU,oCAAqCF,EAAWE,QAQ/E,EAAC,EACA,KAAA,EAAA,QAAA,CACC,KAAK,OACL,MAAQ7B,EACR,UAAU,gCACGwB,aAAAA,EACb,YAAcC,EACd,SAAW,SAAEN,GAAW,OAAA,EAAKhB,eAAgBgB,EAAMe,OAAO5B,UAEzD,IAAML,EAAMU,QACb,EAAC,EAAD,CACC,UAAU,mCACV,cAAe,EACf,SAAS,eAET,EAAA,MAAA,CAAK,UAAU,oCACZY,SASMtC,EArHTA,CAAsBM,GAqHbN,EAAAA,EAAAA,QAAAA,QAAAA;;ACvIA,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,aAAA,EAFf,IAAA,EAAA,EAAA,QAAA,oBAEe,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GAAA,IAAA,EAAA,CACdA,cAAAA,EAAAA,SADc,QAAA,QAAA;;ACHf,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,OAAA,eAAA,QAAA,kBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,WAAA,IAAA,EAAA,EAAA,QAAA,iBAAA,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA","file":"block-components.js","sourceRoot":"../../../src/js/bp-core/js/block-components","sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","/**\n * WordPress dependencies.\n */\nconst {\n\tapiFetch,\n\tcomponents: {\n\t\tPopover,\n\t},\n\telement: {\n\t\tComponent,\n\t\tFragment,\n\t\tcreateElement,\n\t},\n\ti18n: {\n\t\t__,\n\t},\n\turl: {\n\t\taddQueryArgs,\n\t},\n} = wp;\n\nclass AutoCompleter extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.state = {\n\t\t\tsearch: '',\n\t\t\titems: [],\n\t\t\terror: '',\n\t\t};\n\n\t\tthis.searchItemName = this.searchItemName.bind( this );\n\t\tthis.selectItemName = this.selectItemName.bind( this );\n\t}\n\n\tsearchItemName( value ) {\n\t\tconst { search } = this.state;\n\t\tconst { component, objectQueryArgs } = this.props;\n\t\tthis.setState( { search: value } );\n\n\t\tif ( value.length < search.length ) {\n\t\t\tthis.setState( { items: [] } );\n\t\t}\n\n\t\tlet path= '/buddypress/v1/' + component;\n\t\tlet queryArgs = {};\n\n\t\tif ( value ) {\n\t\t\tqueryArgs.search = encodeURIComponent( value );\n\t\t}\n\n\t\tif ( objectQueryArgs ) {\n\t\t\tqueryArgs = Object.assign( queryArgs, objectQueryArgs );\n\t\t}\n\n\t\tapiFetch( { path: addQueryArgs( path, queryArgs ) } ).then( items => {\n\t\t\tthis.setState( { items: items } );\n\t\t}, error => {\n\t\t\tthis.setState( { error: error.message } );\n\t\t} );\n\t}\n\n\tselectItemName( event, itemID ) {\n\t\tconst { onSelectItem } = this.props;\n\t\tevent.preventDefault();\n\n\t\tthis.setState( {\n\t\t\tsearch: '',\n\t\t\titems: [],\n\t\t\terror: '',\n\t\t} );\n\n\t\treturn onSelectItem( { itemID: itemID } );\n\t}\n\n\trender() {\n\t\tconst { search, items } = this.state;\n\t\tlet { ariaLabel, placeholder, useAvatar, slugValue } = this.props;\n\t\tlet itemsList;\n\n\t\tif ( ! ariaLabel ) {\n\t\t\tariaLabel = __( 'Item\\'s name', 'buddypress' );\n\t\t}\n\n\t\tif ( ! placeholder ) {\n\t\t\tplaceholder = __( 'Enter Item\\'s name here…', 'buddypress' );\n\t\t}\n\n\t\tif ( items.length ) {\n\t\t\titemsList = items.map( ( item ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\" key={ 'editor-autocompleters__item-item-' + item.id }\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\taria-selected=\"true\"\n\t\t\t\t\t\tclassName=\"components-button components-autocomplete__result editor-autocompleters__user\"\n\t\t\t\t\t\tonClick={ ( event ) => this.selectItemName( event, item.id ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ useAvatar && (\n\t\t\t\t\t\t\t<img key=\"avatar\" className=\"editor-autocompleters__user-avatar\" alt=\"\" src={ item.avatar_urls.thumb } />\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t<span key=\"name\" className=\"editor-autocompleters__user-name\">{ item.name }</span>\n\n\t\t\t\t\t\t{ slugValue && null !== slugValue( item ) && (\n\t\t\t\t\t\t\t<span key=\"slug\" className=\"editor-autocompleters__user-slug\">{ slugValue( item ) }</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={ search }\n\t\t\t\t\tclassName=\"components-placeholder__input\"\n\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tonChange={ ( event ) => this.searchItemName( event.target.value ) }\n\t\t\t\t/>\n\t\t\t\t{ 0 !== items.length &&\n\t\t\t\t\t<Popover\n\t\t\t\t\t\tclassName=\"components-autocomplete__popover\"\n\t\t\t\t\t\tfocusOnMount={ false }\n\t\t\t\t\t\tposition=\"bottom left\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"components-autocomplete__results\">\n\t\t\t\t\t\t\t{ itemsList }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Popover>\n\t\t\t\t}\n\t\t\t</Fragment>\n\t\t);\n\t}\n}\n\nexport default AutoCompleter;\n","// Components\nimport AutoCompleter from './autocompleter'\n\nexport default {\n\tAutoCompleter\n};\n","export { default as blockComponents } from './components';\n"]} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-filters.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-filters.php index 24ecea0ea6787a3c1c2ac3708ecf7021cb7d3280..edcbcdef4a493cd2ea8e732b893fd6e620881cca 100644 --- a/wp-content/plugins/buddypress/bp-friends/bp-friends-filters.php +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-filters.php @@ -10,6 +10,10 @@ // Exit if accessed directly. defined( 'ABSPATH' ) || exit; +// Format numerical output. +add_filter( 'friends_get_total_friend_count', 'bp_core_number_format' ); +add_filter( 'bp_get_total_friend_count', 'bp_core_number_format' ); + /** * Filter BP_User_Query::populate_extras to add confirmed friendship status. * diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-template.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-template.php index 851c1508b1a5fe76daf92eb39428f1d675fed0db..98efc47eca0d6e17aa1a7b59348b0fcdd0e03a66 100644 --- a/wp-content/plugins/buddypress/bp-friends/bp-friends-template.php +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-template.php @@ -649,7 +649,6 @@ function bp_total_friend_count( $user_id = 0 ) { */ return apply_filters( 'bp_get_total_friend_count', friends_get_total_friend_count( $user_id ), $user_id ); } - add_filter( 'bp_get_total_friend_count', 'bp_core_number_format' ); /** * Output the total friendship request count for a given user. diff --git a/wp-content/plugins/buddypress/bp-friends/classes/class-bp-friends-component.php b/wp-content/plugins/buddypress/bp-friends/classes/class-bp-friends-component.php index cd54427e468b017a7acde824b2ad2933a0be93f1..d29f416dd0b502c670a06fe8859ea680411e7c03 100644 --- a/wp-content/plugins/buddypress/bp-friends/classes/class-bp-friends-component.php +++ b/wp-content/plugins/buddypress/bp-friends/classes/class-bp-friends-component.php @@ -176,7 +176,7 @@ class BP_Friends_Component extends BP_Component { sprintf( '<span class="%s">%s</span>', esc_attr( $class ), - bp_core_number_format( $count ) + esc_html( $count ) ) ); diff --git a/wp-content/plugins/buddypress/bp-friends/classes/class-bp-rest-friends-endpoint.php b/wp-content/plugins/buddypress/bp-friends/classes/class-bp-rest-friends-endpoint.php index ee26c837358fc60b6418db1a747493a99e33ea59..14f8f3fadb2056000ed21960e250068df19716ac 100644 --- a/wp-content/plugins/buddypress/bp-friends/classes/class-bp-rest-friends-endpoint.php +++ b/wp-content/plugins/buddypress/bp-friends/classes/class-bp-rest-friends-endpoint.php @@ -131,7 +131,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { 'bp_rest_friends_get_items_user_failed', __( 'There was a problem confirming if user is valid.', 'buddypress' ), array( - 'status' => 500, + 'status' => 404, ) ); } @@ -169,19 +169,19 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function get_items_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( is_user_logged_in() ) { + $retval = true; } /** @@ -189,7 +189,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_friends_get_items_permissions_check', $retval, $request ); @@ -260,19 +260,19 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( is_user_logged_in() ) { + $retval = true; } /** @@ -280,7 +280,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_friends_get_item_permissions_check', $retval, $request ); @@ -303,30 +303,47 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { return new WP_Error( 'bp_rest_friends_create_item_failed', __( 'There was a problem confirming if user is valid.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } + + // Check if users are friends or if there is a friendship request. + if ( 'not_friends' !== friends_check_friendship_status( $initiator_id->ID, $friend_id->ID ) ) { + return new WP_Error( + 'bp_rest_friends_create_item_failed', + __( 'Those users are already friends or have sent friendship request(s) recently.', 'buddypress' ), array( 'status' => 500, ) ); } - $is_moderator = bp_current_user_can( 'bp_moderate' ); + $is_moderator = bp_current_user_can( 'bp_moderate' ); + $current_user_id = bp_loggedin_user_id(); - // Only admins can create friendship requests for other people. - if ( ! in_array( bp_loggedin_user_id(), [ $initiator_id->ID, $friend_id->ID ], true ) && ! $is_moderator ) { + /** + * - Only admins can create friendship requests for other people. + * - Admins can't create friendship requests to themselves from other people. + * - Users can't create friendship requests to themselves from other people. + */ + if ( + ( $current_user_id !== $initiator_id->ID && ! $is_moderator ) + || ( $current_user_id === $friend_id->ID && $is_moderator ) + || ( ! in_array( $current_user_id, [ $initiator_id->ID, $friend_id->ID ], true ) && ! $is_moderator ) + ) { return new WP_Error( 'bp_rest_friends_create_item_failed', __( 'You are not allowed to perform this action.', 'buddypress' ), array( - 'status' => 500, + 'status' => 403, ) ); } // Only admins can force a friendship request. - $force = false; - if ( true === $request->get_param( 'force' ) && $is_moderator ) { - $force = true; - } + $force = ( true === $request->get_param( 'force' ) && $is_moderator ); // Adding friendship. if ( ! friends_add_friend( $initiator_id->ID, $friend_id->ID, $force ) ) { @@ -382,7 +399,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { $retval = $this->get_item_permissions_check( $request ); @@ -392,7 +409,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_friends_create_item_permissions_check', $retval, $request ); @@ -415,7 +432,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { 'bp_rest_friends_update_item_failed', __( 'There was a problem confirming if user is valid.', 'buddypress' ), array( - 'status' => 500, + 'status' => 404, ) ); } @@ -477,7 +494,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function update_item_permissions_check( $request ) { $retval = $this->get_item_permissions_check( $request ); @@ -487,7 +504,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_friends_update_item_permissions_check', $retval, $request ); @@ -510,7 +527,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { 'bp_rest_friends_delete_item_failed', __( 'There was a problem confirming if user is valid.', 'buddypress' ), array( - 'status' => 500, + 'status' => 404, ) ); } @@ -593,7 +610,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { $retval = $this->get_item_permissions_check( $request ); @@ -603,7 +620,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_friends_delete_item_permissions_check', $retval, $request ); @@ -696,7 +713,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { * @return BP_Friends_Friendship */ public function get_friendship_object( $friendship_id ) { - return new BP_Friends_Friendship( $friendship_id ); + return new BP_Friends_Friendship( (int) $friendship_id ); } /** @@ -708,7 +725,7 @@ class BP_REST_Friends_Endpoint extends WP_REST_Controller { * @return array Endpoint arguments. */ public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { - $args = WP_REST_Controller::get_endpoint_args_for_item_schema( $method ); + $args = parent::get_endpoint_args_for_item_schema( $method ); $context = 'view'; $args['id']['required'] = true; diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-admin.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-admin.php index 5f445e1f1b9abd05c9eab2e1033a45ad6625c958..30966fb50955ba66f890674a2e949efb0177fb0b 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-admin.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-admin.php @@ -14,11 +14,14 @@ defined( 'ABSPATH' ) || exit; // Include WP's list table class. -if ( !class_exists( 'WP_List_Table' ) ) require( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' ); +if ( ! class_exists( 'WP_List_Table' ) ) { + require ABSPATH . 'wp-admin/includes/class-wp-list-table.php'; +} // The per_page screen option. Has to be hooked in extremely early. -if ( is_admin() && ! empty( $_REQUEST['page'] ) && 'bp-groups' == $_REQUEST['page'] ) +if ( is_admin() && ! empty( $_REQUEST['page'] ) && 'bp-groups' == $_REQUEST['page'] ) { add_filter( 'set-screen-option', 'bp_groups_admin_screen_options', 10, 3 ); +} /** * Register the Groups component admin screen. @@ -42,6 +45,63 @@ function bp_groups_add_admin_menu() { } add_action( bp_core_admin_hook(), 'bp_groups_add_admin_menu' ); +/** + * Redirects the user on the Goups network admin screen when BuddyPress is network activated. + * + * @since 7.0.0 + */ +function bp_group_site_admin_network_admin_redirect() { + wp_safe_redirect( add_query_arg( 'page', 'bp-groups', network_admin_url( 'admin.php' ) ) ); + exit(); +} + +/** + * Create Groups submenu to manage BuddyPress types. + * + * @since 7.0.0 + */ +function bp_groups_admin_types_menu() { + if ( ! bp_is_root_blog() ) { + return; + } + + if ( bp_is_network_activated() && ! bp_is_multiblog_mode() && is_network_admin() ) { + // Adds a 'bp-groups' submenu to go to the root blog Group types screen. + $group_type_admin_url = add_query_arg( 'taxonomy', 'bp_group_type', get_admin_url( bp_get_root_blog_id(), 'edit-tags.php' ) ); + add_submenu_page( + 'bp-groups', + __( 'Group Types', 'buddypress' ), + __( 'Group Types', 'buddypress' ), + 'bp_moderate', + esc_url( $group_type_admin_url ) + ); + } elseif ( ! is_network_admin() ) { + if ( bp_is_network_activated() && ! bp_is_multiblog_mode() ) { + // Adds a 'bp-groups' menu to the root blog menu. + $redirect_hook = add_menu_page( + _x( 'Groups', 'Admin Groups page title', 'buddypress' ), + _x( 'Groups', 'Admin Groups menu', 'buddypress' ), + 'bp_moderate', + 'bp-groups', + '__return_empty_string', + 'div' + ); + + add_action( "load-{$redirect_hook}", 'bp_group_site_admin_network_admin_redirect' ); + } + + // Add the submenu to manage Group Types. + add_submenu_page( + 'bp-groups', + __( 'Group Types', 'buddypress' ), + __( 'Group Types', 'buddypress' ), + 'bp_moderate', + basename( add_query_arg( 'taxonomy', 'bp_group_type', bp_get_admin_url( 'edit-tags.php' ) ) ) + ); + } +} +add_action( 'bp_admin_menu', 'bp_groups_admin_types_menu' ); + /** * Add groups component to custom menus array. * @@ -582,31 +642,17 @@ function bp_groups_admin_edit() { do_action_ref_array( 'bp_groups_admin_edit', array( &$group ) ); ?> <div class="wrap"> - <?php if ( version_compare( $GLOBALS['wp_version'], '4.8', '>=' ) ) : ?> - - <h1 class="wp-heading-inline"><?php _e( 'Edit Group', 'buddypress' ); ?></h1> - - <?php if ( is_user_logged_in() && bp_user_can_create_groups() ) : ?> - <a class="page-title-action" href="<?php echo trailingslashit( bp_get_groups_directory_permalink() . 'create' ); ?>"><?php _e( 'Add New', 'buddypress' ); ?></a> - <?php endif; ?> - - <hr class="wp-header-end"> - - <?php else : ?> - - <h1><?php _e( 'Edit Group', 'buddypress' ); ?> - - <?php if ( is_user_logged_in() && bp_user_can_create_groups() ) : ?> - <a class="add-new-h2" href="<?php echo trailingslashit( bp_get_groups_directory_permalink() . 'create' ); ?>"><?php _e( 'Add New', 'buddypress' ); ?></a> - <?php endif; ?> - - </h1> + <h1 class="wp-heading-inline"><?php _e( 'Edit Group', 'buddypress' ); ?></h1> + <?php if ( is_user_logged_in() && bp_user_can_create_groups() ) : ?> + <a class="page-title-action" href="<?php echo trailingslashit( bp_get_groups_directory_permalink() . 'create' ); ?>"><?php _e( 'Add New', 'buddypress' ); ?></a> <?php endif; ?> + <hr class="wp-header-end"> + <?php // If the user has just made a change to an group, display the status messages. ?> <?php if ( !empty( $messages ) ) : ?> - <div id="moderated" class="<?php echo ( $is_error ) ? 'error' : 'updated'; ?>"><p><?php echo implode( "</p><p>", $messages ); ?></p></div> + <div id="moderated" class="<?php echo ( $is_error ) ? 'error' : 'updated'; ?> notice is-dismissible"><p><?php echo implode( "</p><p>", $messages ); ?></p></div> <?php endif; ?> <?php if ( $group->id ) : ?> @@ -711,7 +757,9 @@ function bp_groups_admin_delete() { $base_url = remove_query_arg( array( 'action', 'action2', 'paged', 's', '_wpnonce', 'gid' ), $_SERVER['REQUEST_URI'] ); ?> <div class="wrap"> - <h1><?php _e( 'Delete Groups', 'buddypress' ) ?></h1> + <h1 class="wp-heading-inline"><?php _e( 'Delete Groups', 'buddypress' ) ?></h1> + <hr class="wp-header-end"> + <p><?php _e( 'You are about to delete the following groups:', 'buddypress' ) ?></p> <ul class="bp-group-delete-list"> @@ -769,39 +817,22 @@ function bp_groups_admin_index() { do_action( 'bp_groups_admin_index', $messages ); ?> <div class="wrap"> - <?php if ( version_compare( $GLOBALS['wp_version'], '4.8', '>=' ) ) : ?> - <h1 class="wp-heading-inline"><?php _e( 'Groups', 'buddypress' ); ?></h1> + <h1 class="wp-heading-inline"><?php _e( 'Groups', 'buddypress' ); ?></h1> - <?php if ( is_user_logged_in() && bp_user_can_create_groups() ) : ?> - <a class="page-title-action" href="<?php echo trailingslashit( bp_get_groups_directory_permalink() . 'create' ); ?>"><?php _e( 'Add New', 'buddypress' ); ?></a> - <?php endif; ?> - - <?php if ( !empty( $_REQUEST['s'] ) ) : ?> - <span class="subtitle"><?php printf( __( 'Search results for “%s”', 'buddypress' ), wp_html_excerpt( esc_html( stripslashes( $_REQUEST['s'] ) ), 50 ) ); ?></span> - <?php endif; ?> - - <hr class="wp-header-end"> - - <?php else : ?> - - <h1> - <?php _e( 'Groups', 'buddypress' ); ?> - - <?php if ( is_user_logged_in() && bp_user_can_create_groups() ) : ?> - <a class="add-new-h2" href="<?php echo trailingslashit( bp_get_groups_directory_permalink() . 'create' ); ?>"><?php _e( 'Add New', 'buddypress' ); ?></a> - <?php endif; ?> - - <?php if ( !empty( $_REQUEST['s'] ) ) : ?> - <span class="subtitle"><?php printf( __( 'Search results for “%s”', 'buddypress' ), wp_html_excerpt( esc_html( stripslashes( $_REQUEST['s'] ) ), 50 ) ); ?></span> - <?php endif; ?> - </h1> + <?php if ( is_user_logged_in() && bp_user_can_create_groups() ) : ?> + <a class="page-title-action" href="<?php echo trailingslashit( bp_get_groups_directory_permalink() . 'create' ); ?>"><?php _e( 'Add New', 'buddypress' ); ?></a> + <?php endif; ?> + <?php if ( !empty( $_REQUEST['s'] ) ) : ?> + <span class="subtitle"><?php printf( __( 'Search results for “%s”', 'buddypress' ), wp_html_excerpt( esc_html( stripslashes( $_REQUEST['s'] ) ), 50 ) ); ?></span> <?php endif; ?> + <hr class="wp-header-end"> + <?php // If the user has just made a change to an group, display the status messages. ?> <?php if ( !empty( $messages ) ) : ?> - <div id="moderated" class="<?php echo ( ! empty( $_REQUEST['error'] ) ) ? 'error' : 'updated'; ?>"><p><?php echo implode( "<br/>\n", $messages ); ?></p></div> + <div id="moderated" class="<?php echo ( ! empty( $_REQUEST['error'] ) ) ? 'error' : 'updated'; ?> notice is-dismissible"><p><?php echo implode( "<br/>\n", $messages ); ?></p></div> <?php endif; ?> <?php // Display each group on its own row. ?> @@ -1351,24 +1382,21 @@ function bp_groups_admin_process_group_type_bulk_changes( $doaction ) { $group_id = (int) $group_id; // Get the old group type to check against. - $group_type = bp_groups_get_group_type( $group_id ); - - if ( 'remove_group_type' === $new_type ) { - // Remove the current group type, if there's one to remove. - if ( $group_type ) { - $removed = bp_groups_remove_group_type( $group_id, $group_type ); - if ( false === $removed || is_wp_error( $removed ) ) { - $error = true; - } - } - } else { - // Set the new group type. - if ( $new_type !== $group_type ) { - $set = bp_groups_set_group_type( $group_id, $new_type ); - if ( false === $set || is_wp_error( $set ) ) { - $error = true; - } + $current_types = bp_groups_get_group_type( $group_id, false ); + + if ( $current_types && 'remove_group_type' === $new_type ) { + $group_types = array(); + } elseif ( ! $current_types || 1 !== count( $current_types ) || $new_type !== $current_types[0] ) { + $group_types = array( $new_type ); + } + + // Set the new group type. + if ( isset( $group_types ) ) { + $set = bp_groups_set_group_type( $group_id, $group_types ); + if ( false === $set || is_wp_error( $set ) ) { + $error = true; } + unset( $group_types ); } } } @@ -1408,3 +1436,51 @@ function bp_groups_admin_groups_type_change_notice() { } } add_action( bp_core_admin_hook(), 'bp_groups_admin_groups_type_change_notice' ); + +/** + * Checks whether a group type already exists. + * + * @since 7.0.0 + * + * @param boolean $exists True if the group type already exists. False otherwise. + * @param string $type_id The group type identifier. + * @return boolean True if the group type already exists. False otherwise. + */ +function bp_groups_type_admin_type_exists( $exists = false, $type_id = '' ) { + if ( ! $type_id ) { + return $exists; + } + + return ! is_null( bp_groups_get_group_type_object( $type_id ) ); +} +add_filter( bp_get_group_type_tax_name() . '_check_existing_type', 'bp_groups_type_admin_type_exists', 1, 2 ); + +/** + * Set the feedback messages for the Group Types Admin actions. + * + * @since 7.0.0 + * + * @param array $messages The feedback messages. + * @return array The feedback messages including the ones for the Group Types Admin actions. + */ +function bp_groups_type_admin_updated_messages( $messages = array() ) { + $type_taxonomy = bp_get_group_type_tax_name(); + + $messages[ $type_taxonomy ] = array( + 0 => '', + 1 => __( 'Please define the Group Type ID field.', 'buddypress' ), + 2 => __( 'Group type successfully added.', 'buddypress' ), + 3 => __( 'Sorry, there was an error and the Group type wasn’t added.', 'buddypress' ), + // The following one needs to be != 5. + 4 => __( 'Group type successfully updated.', 'buddypress' ), + 5 => __( 'Sorry, this Group type already exists.', 'buddypress' ), + 6 => __( 'Sorry, the Group type was not deleted: it does not exist.', 'buddypress' ), + 7 => __( 'Sorry, This Group type is registered using code, deactivate the plugin or remove the custom code before trying to delete it again.', 'buddypress' ), + 8 => __( 'Sorry, there was an error while trying to delete this Group type.', 'buddypress' ), + 9 => __( 'Group type successfully deleted.', 'buddypress' ), + 10 => __( 'Group type could not be updated due to missing required information.', 'buddypress' ), + ); + + return $messages; +} +add_filter( 'term_updated_messages', 'bp_groups_type_admin_updated_messages' ); diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-blocks.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-blocks.php index cd9e41993ee1050ef9e912f96aed7aa1f6d00735..063868ee5d5594d36601e7fcab1c4fbe334e0e95 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-blocks.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-blocks.php @@ -110,12 +110,12 @@ function bp_groups_render_group_block( $attributes = array() ) { $avatar_container = sprintf( '<div class="item-header-avatar"> <a href="%1$s"> - <img src="%2$s" alt="%3$s" class="avatar"> + <img loading="lazy" src="%2$s" alt="%3$s" class="avatar"> </a> </div>', esc_url( $group_link ), esc_url( $avatar ), - // Translators: %s is the group's name. + /* Translators: %s is the group's name. */ sprintf( esc_html__( 'Group Profile photo of %s', 'buddypress' ), $group_name ) ); } @@ -201,3 +201,135 @@ function bp_groups_render_group_block( $attributes = array() ) { */ return apply_filters( 'bp_groups_render_group_block_output', $output, $group, $params ); } + +/** + * Callback function to render the BP Groups Block. + * + * @since 7.0.0 + * + * @param array $attributes The block attributes. + * @return string HTML output. + */ +function bp_groups_render_groups_block( $attributes = array() ) { + $bp = buddypress(); + + $block_args = wp_parse_args( + $attributes, + array( + 'itemIDs' => array(), + 'avatarSize' => 'full', + 'displayGroupName' => true, + 'extraInfo' => 'none', + 'layoutPreference' => 'list', + 'columns' => '2', + ) + ); + + $group_ids = wp_parse_id_list( $block_args['itemIDs'] ); + if ( ! array_filter( $group_ids ) ) { + return ''; + } + + $container_classes = sprintf( 'bp-block-groups avatar-%s', $block_args['avatarSize'] ); + if ( 'grid' === $block_args['layoutPreference'] ) { + $container_classes .= sprintf( ' is-grid columns-%d', (int) $block_args['columns'] ); + } + + $query = groups_get_groups( + array( + 'include' => $group_ids, + ) + ); + + // Initialize the output and the groups. + $output = ''; + $groups = $query['groups']; + + foreach ( $groups as $group ) { + $has_description = false; + $group_item_classes = 'group-content'; + + if ( 'list' === $block_args['layoutPreference'] && 'description' === $block_args['extraInfo'] && isset( $group->description ) && $group->description ) { + $has_description = true; + $group_item_classes = 'group-content has-description'; + } + + $output .= sprintf( '<div class="%s">', $group_item_classes ); + + // Get Member link. + $group_link = bp_get_group_permalink( $group ); + + // Set the Avatar output. + if ( $bp->avatar && $bp->avatar->show_avatars && ! bp_disable_group_avatar_uploads() && 'none' !== $block_args['avatarSize'] ) { + $output .= sprintf( + '<div class="item-header-avatar"> + <a href="%1$s"> + <img class="avatar" alt="%2$s" src="%3$s" /> + </a> + </div>', + esc_url( $group_link ), + /* Translators: %s is the group's name. */ + sprintf( esc_attr__( 'Group Profile photo of %s', 'buddypress' ), $group->display_name ), + esc_url( + bp_core_fetch_avatar( + array( + 'item_id' => $group->id, + 'object' => 'group', + 'type' => $block_args['avatarSize'], + 'html' => false, + ) + ) + ) + ); + } + + $output .= '<div class="group-description">'; + + if ( $block_args['displayGroupName'] ) { + $output .= sprintf( + '<strong><a href="%1$s">%2$s</a></strong>', + esc_url( $group_link ), + esc_html( $group->name ) + ); + } + + // Add the latest activity the group posted. + if ( $has_description && $group->description ) { + $output .= sprintf( + '<div class="group-description-content">%s</div>', + bp_get_group_description( $group ) + ); + } elseif ( 'active' === $block_args['extraInfo'] ) { + $output .= sprintf( + '<time datetime="%1$s">%2$s</time>', + esc_attr( bp_core_get_iso8601_date( $group->last_activity ) ), + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + sprintf( esc_html__( 'Active %s', 'buddypress' ), bp_get_group_last_active( $group ) ) + ); + } elseif ( 'popular' === $block_args['extraInfo'] ) { + $total_member_count = $group->total_member_count; + + $output .= sprintf( + '<div class="group-meta">%s</div>', + /* translators: %d: the number of group members. */ + esc_html( sprintf( _n( '%d member', '%d members', $total_member_count, 'buddypress' ), $total_member_count ) ) + ); + } + + $output .= '</div></div>'; + } + + // Set the final output. + $output = sprintf( '<div class="%1$s">%2$s</div>', $container_classes, $output ); + + /** + * Filter here to edit the output of the groups block. + * + * @since 7.0.0 + * + * @param string $output The HTML output of the block. + * @param array $block_args The block arguments. + * @param array $groups The list of BP_Groups_Group objects. + */ + return apply_filters( 'bp_groups_render_groups_block_output', $output, $block_args, $groups ); +} diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-cssjs.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-cssjs.php index a160fa3ee817df3f505ac34877bcbc68de2612ae..4a222148694d5cb160b517001f75ae4da5345d53 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-cssjs.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-cssjs.php @@ -50,7 +50,7 @@ function bp_groups_get_group_manage_members_script_data( $group_id = 0 ) { ); $preloaded_members = array(); - if ( function_exists( 'rest_preload_api_request' ) ) { + if ( bp_is_running_wp( '5.0.0' ) ) { $preloaded_members = rest_preload_api_request( '', $path ); } diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-filters.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-filters.php index a3bd2e70f65fe908942474a6ed1ae4375dd404d3..29b424d2087fc5c2205775254fc077b2e5ce3eb6 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-filters.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-filters.php @@ -53,9 +53,7 @@ add_filter( 'groups_group_name_before_save', 'trim' ); add_filter( 'groups_group_description_before_save', 'trim' ); // Support emoji. -if ( function_exists( 'wp_encode_emoji' ) ) { - add_filter( 'groups_group_description_before_save', 'wp_encode_emoji' ); -} +add_filter( 'groups_group_description_before_save', 'wp_encode_emoji' ); // Escape output of new group creation details. add_filter( 'bp_get_new_group_name', 'esc_attr' ); diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-functions.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-functions.php index 1d2f3913c8ef08cf421d0a68e2254e9433f805d6..50b7b399d1ea64d303ba02f95b4231d148e08cb8 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-functions.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-functions.php @@ -415,7 +415,7 @@ function groups_delete_group( $group_id ) { } /** - * Check a group status (eg 'private') against the whitelist of registered statuses. + * Check a group status (eg 'private') against the list of registered statuses. * * @since 1.1.0 * @@ -1415,9 +1415,8 @@ function groups_get_invites_for_user( $user_id = 0, $limit = false, $page = fals 'per_page' => $limit, 'page' => $page, ); - $groups = groups_get_groups( $args ); - return array( 'groups' => $groups['groups'], 'total' => groups_get_invite_count_for_user( $user_id ) ); + return groups_get_groups( $args ); } /** @@ -1433,7 +1432,8 @@ function groups_get_invite_count_for_user( $user_id = 0 ) { $user_id = bp_loggedin_user_id(); } - return count( groups_get_invited_to_group_ids( $user_id ) ); + $invites = groups_get_invites_for_user( $user_id ); + return $invites['total']; } /** @@ -2463,6 +2463,138 @@ add_action( 'bp_groups_delete_group', 'bp_groups_update_orphaned_groups_on_group /** Group Types ***************************************************************/ +/** + * Output the slug of the Group type taxonomy. + * + * @since 7.0.0 + */ +function bp_group_type_tax_name() { + echo bp_get_group_type_tax_name(); +} + + /** + * Return the slug of the Group type taxonomy. + * + * @since 7.0.0 + * + * @return string The unique Group taxonomy slug. + */ + function bp_get_group_type_tax_name() { + /** + * Filters the slug of the Group type taxonomy. + * + * @since 7.0.0 + * + * @param string $value Group type taxonomy slug. + */ + return apply_filters( 'bp_get_group_type_tax_name', 'bp_group_type' ); + } + +/** + * Returns labels used by the Group type taxonomy. + * + * @since 7.0.0 + * + * @return array + */ +function bp_get_group_type_tax_labels() { + + /** + * Filters Group type taxonomy labels. + * + * @since 7.0.0 + * + * @param array $value Associative array (name => label). + */ + return apply_filters( + 'bp_get_group_type_tax_labels', + array( + + // General labels + 'name' => _x( 'Group Types', 'Group type taxonomy name', 'buddypress' ), + 'singular_name' => _x( 'Group Type', 'Group type taxonomy singular name', 'buddypress' ), + 'search_items' => _x( 'Search Group Types', 'Group type taxonomy search items label', 'buddypress' ), + 'popular_items' => _x( 'Popular Group Types', 'Group type taxonomy popular items label', 'buddypress' ), + 'all_items' => _x( 'All Group Types', 'Group type taxonomy all items label', 'buddypress' ), + 'parent_item' => _x( 'Parent Group Type', 'Group type taxonomy parent item label', 'buddypress' ), + 'parent_item_colon' => _x( 'Parent Group Type:', 'Group type taxonomy parent item label', 'buddypress' ), + 'edit_item' => _x( 'Edit Group Type', 'Group type taxonomy edit item label', 'buddypress' ), + 'view_item' => _x( 'View Group Type', 'Group type taxonomy view item label', 'buddypress' ), + 'update_item' => _x( 'Update Group Type', 'Group type taxonomy update item label', 'buddypress' ), + 'add_new_item' => _x( 'Add New Group Type', 'Group type taxonomy add new item label', 'buddypress' ), + 'new_item_name' => _x( 'New Group Type Name', 'Group type taxonomy new item name label', 'buddypress' ), + 'separate_items_with_commas' => _x( 'Separate group types with commas', 'Group type taxonomy separate items with commas label', 'buddypress' ), + 'add_or_remove_items' => _x( 'Add or remove group types', 'Group type taxonomy add or remove items label', 'buddypress' ), + 'choose_from_most_used' => _x( 'Choose from the most used group types', 'Group type taxonomy choose from most used label', 'buddypress' ), + 'not_found' => _x( 'No group types found.', 'Group type taxonomy not found label', 'buddypress' ), + 'no_terms' => _x( 'No group types', 'Group type taxonomy no terms label', 'buddypress' ), + 'items_list_navigation' => _x( 'Group Types list navigation', 'Group type taxonomy items list navigation label', 'buddypress' ), + 'items_list' => _x( 'Group Types list', 'Group type taxonomy items list label', 'buddypress' ), + + /* translators: Tab heading when selecting from the most used terms. */ + 'most_used' => _x( 'Most Used', 'Group type taxonomy most used items label', 'buddypress' ), + 'back_to_items' => _x( '← Back to Group Types', 'Group type taxonomy back to items label', 'buddypress' ), + + // Specific to BuddyPress. + 'bp_type_id_label' => _x( 'Group Type ID', 'BP Member type ID label', 'buddypress' ), + 'bp_type_id_description' => _x( 'Lower-case string, no spaces or special characters. Used to identify the group type.', 'BP Group type ID description', 'buddypress' ), + 'bp_type_show_in_create_screen' => _x( 'Show on Group Creation', 'BP Group type show in create screen', 'buddypress' ), + 'bp_type_show_in_list' => _x( 'Show on Group', 'BP Group type show in list', 'buddypress' ), + ) + ); +} + +/** + * Returns arguments used by the Group type taxonomy. + * + * @since 7.0.0 + * + * @return array + */ +function bp_get_group_type_tax_args() { + + /** + * Filters Group type taxonomy args. + * + * @since 7.0.0 + * + * @param array $value Associative array (key => arg). + */ + return apply_filters( + 'bp_get_group_type_tax_args', + array_merge( + array( + 'description' => _x( 'BuddyPress Group Types', 'Group type taxonomy description', 'buddypress' ), + 'labels' => array_merge( bp_get_group_type_tax_labels(), bp_get_taxonomy_common_labels() ), + ), + bp_get_taxonomy_common_args() + ) + ); +} + +/** + * Register the Group Types taxonomy. + * + * @since 7.0.0 + * + * @param array $taxonomies BuddyPress default taxonomies. + * @return array BuddyPress default taxonomies. + */ +function bp_groups_register_group_type_taxonomy( $taxonomies = array() ) { + return array_merge( + $taxonomies, + array( + // Group Type. + bp_get_group_type_tax_name() => array( + 'object' => 'bp_group', + 'component' => 'groups', + 'args' => bp_get_group_type_tax_args(), + ), + ) + ); +} +add_filter( 'bp_get_default_taxonomies', 'bp_groups_register_group_type_taxonomy', 1 ); + /** * Fire the 'bp_groups_register_group_types' action. * @@ -2478,6 +2610,63 @@ function bp_groups_register_group_types() { } add_action( 'bp_register_taxonomies', 'bp_groups_register_group_types' ); +/** + * Extend generic Type metadata schema to match Group Type needs. + * + * @since 7.0.0 + * + * @param array $schema The generic Type metadata schema. + * @param string $taxonomy The taxonomy name the schema applies to. + * @return array The Group Type metadata schema. + */ +function bp_get_group_type_metadata_schema( $schema = array(), $taxonomy = '' ) { + if ( bp_get_group_type_tax_name() === $taxonomy ) { + + // Directory + if ( isset( $schema['bp_type_has_directory']['description'] ) ) { + $schema['bp_type_has_directory']['description'] = __( 'Make a list of groups matching this type available on the groups directory.', 'buddypress' ); + } + + // Slug + if ( isset( $schema['bp_type_directory_slug']['description'] ) ) { + $schema['bp_type_directory_slug']['description'] = __( 'Enter if you want the type slug to be different from its ID.', 'buddypress' ); + } + + // Create + $schema['bp_type_show_in_create_screen'] = array( + 'description' => __( 'Show during group creation, and when a group admin is on the group’s settings page.', 'buddypress' ), + 'type' => 'boolean', + 'single' => true, + 'sanitize_callback' => 'absint', + ); + + // List + $schema['bp_type_show_in_list'] = array( + 'description' => __( 'Show where group types may be listed, like in the group header.', 'buddypress' ), + 'type' => 'boolean', + 'single' => true, + 'sanitize_callback' => 'absint', + ); + } + + return $schema; +} +add_filter( 'bp_get_type_metadata_schema', 'bp_get_group_type_metadata_schema', 1, 2 ); + +/** + * Registers the Group type metadata. + * + * @since 7.0.0 + */ +function bp_register_group_type_metadata() { + $type_taxonomy = bp_get_group_type_tax_name(); + + foreach ( bp_get_type_metadata_schema( false, $type_taxonomy ) as $meta_key => $meta_args ) { + bp_register_type_meta( $type_taxonomy, $meta_key, $meta_args ); + } +} +add_action( 'bp_register_type_metadata', 'bp_register_group_type_metadata', 11 ); + /** * Register a group type. * @@ -2525,6 +2714,8 @@ function bp_groups_register_group_type( $group_type, $args = array() ) { 'description' => '', 'create_screen_checked' => false, 'labels' => array(), + 'code' => true, + 'db_id' => 0, ), 'register_group_type' ); $group_type = sanitize_key( $group_type ); @@ -2615,6 +2806,11 @@ function bp_groups_register_group_type( $group_type, $args = array() ) { function bp_groups_get_group_types( $args = array(), $output = 'names', $operator = 'and' ) { $types = buddypress()->groups->types; + // Merge with types available into the database. + if ( ! isset( $args['code'] ) || true !== $args['code'] ) { + $types = bp_get_taxonomy_types( bp_get_group_type_tax_name(), $types ); + } + $types = wp_filter_object_list( $types, $args, $operator ); /** @@ -2656,6 +2852,78 @@ function bp_groups_get_group_type_object( $group_type ) { return $types[ $group_type ]; } +/** + * Only gets the group types registered by code. + * + * @since 7.0.0 + * + * @return array The group types registered by code. + */ +function bp_get_group_types_registered_by_code() { + return bp_groups_get_group_types( + array( + 'code' => true, + ), + 'objects' + ); +} +add_filter( bp_get_group_type_tax_name() . '_registered_by_code', 'bp_get_group_types_registered_by_code' ); + +/** + * Generates missing metadata for a type registered by code. + * + * @since 7.0.0 + * + * @return array The group type metadata. + */ +function bp_set_registered_by_code_group_type_metadata( $metadata = array(), $type = '' ) { + $group_type = bp_groups_get_group_type_object( $type ); + + foreach ( get_object_vars( $group_type ) as $object_key => $object_value ) { + if ( 'labels' === $object_key ) { + foreach ( $object_value as $label_key => $label_value ) { + $metadata[ 'bp_type_' . $label_key ] = $label_value; + } + } elseif ( ! in_array( $object_key, array( 'name', 'code', 'db_id' ), true ) ) { + $metadata[ 'bp_type_' . $object_key ] = $object_value; + } + } + + /** + * Save metadata into database to avoid generating metadata + * each time a type is listed into the Types Admin screen. + */ + if ( isset( $group_type->db_id ) && $group_type->db_id ) { + bp_update_type_metadata( $group_type->db_id, bp_get_group_type_tax_name(), $metadata ); + } + + return $metadata; +} +add_filter( bp_get_group_type_tax_name() . '_set_registered_by_code_metada', 'bp_set_registered_by_code_group_type_metadata', 10, 2 ); + +/** + * Insert group types registered by code not yet saved into the database as WP Terms. + * + * @since 7.0.0 + */ +function bp_insert_group_types_registered_by_code() { + $all_types = bp_groups_get_group_types( array(), 'objects' ); + $unsaved_types = wp_filter_object_list( $all_types, array( 'db_id' => 0 ), 'and', 'name' ); + + if ( $unsaved_types ) { + foreach ( $unsaved_types as $type_name ) { + bp_insert_term( + $type_name, + bp_get_group_type_tax_name(), + array( + 'slug' => $type_name, + ) + ); + } + } +} +add_action( bp_get_group_type_tax_name() . '_add_form', 'bp_insert_group_types_registered_by_code', 1 ); + /** * Set type for a group. * @@ -2685,7 +2953,7 @@ function bp_groups_set_group_type( $group_id, $group_type, $append = false ) { } } - $retval = bp_set_object_terms( $group_id, $group_type, 'bp_group_type', $append ); + $retval = bp_set_object_terms( $group_id, $group_type, bp_get_group_type_tax_name(), $append ); // Bust the cache if the type has been updated. if ( ! is_wp_error( $retval ) ) { @@ -2710,18 +2978,21 @@ function bp_groups_set_group_type( $group_id, $group_type, $append = false ) { * Get type for a group. * * @since 2.6.0 + * @since 7.0.0 Adds the `$use_db` parameter. * * @param int $group_id ID of the group. * @param bool $single Optional. Whether to return a single type string. If multiple types are found * for the group, the oldest one will be returned. Default: true. + * @param bool $use_db Optional. Whether to request all group types or only the ones registered by code. + * Default: true. * @return string|array|bool On success, returns a single group type (if `$single` is true) or an array of group * types (if `$single` is false). Returns false on failure. */ -function bp_groups_get_group_type( $group_id, $single = true ) { +function bp_groups_get_group_type( $group_id, $single = true, $use_db = true ) { $types = wp_cache_get( $group_id, 'bp_groups_group_type' ); if ( false === $types ) { - $raw_types = bp_get_object_terms( $group_id, 'bp_group_type' ); + $raw_types = bp_get_object_terms( $group_id, bp_get_group_type_tax_name() ); if ( ! is_wp_error( $raw_types ) ) { $types = array(); @@ -2737,6 +3008,12 @@ function bp_groups_get_group_type( $group_id, $single = true ) { } } + if ( false === $use_db && $types ) { + $registred_by_code = bp_get_group_types_registered_by_code(); + $ctype_names = wp_list_pluck( $registred_by_code, 'name' ); + $types = array_intersect( $types, $ctype_names ); + } + $type = false; if ( ! empty( $types ) ) { if ( $single ) { @@ -2778,7 +3055,7 @@ function bp_groups_remove_group_type( $group_id, $group_type ) { return false; } - $deleted = bp_remove_object_terms( $group_id, $group_type, 'bp_group_type' ); + $deleted = bp_remove_object_terms( $group_id, $group_type, bp_get_group_type_tax_name() ); // Bust the case, if the type has been removed. if ( ! is_wp_error( $deleted ) ) { diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-notifications.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-notifications.php index 4fd15a023dfb87c7667cbaef0a1c4a14eb7417cc..ebe99d8b0412a28244b77f2685454c97be6cacc4 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-notifications.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-notifications.php @@ -151,8 +151,13 @@ function groups_notification_new_membership_request( $requesting_user_id = 0, $a 'user_id' => $requesting_user_id, 'item_id' => $group_id, ) ); + if ( $requests ) { $request_message = current( $requests )->content; + + if ( $request_message ) { + $request_message = "\n" . $request_message . "\n"; + } } $group = groups_get_group( $group_id ); diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-template.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-template.php index ee8a57ed0de8b03d1a89585f6960025e713a326f..dec4dd3e20b8d78e06f30eff18bb6e1790159c70 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-template.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-template.php @@ -190,7 +190,26 @@ function bp_group_type_directory_link( $group_type = '' ) { return ''; } - return sprintf( '<a href="%s">%s</a>', esc_url( bp_get_group_type_directory_permalink( $group_type ) ), bp_groups_get_group_type_object( $group_type )->labels['name'] ); + $group_type_object = bp_groups_get_group_type_object( $group_type ); + + if ( ! isset( $group_type_object->labels['name'] ) ) { + return ''; + } + + $group_type_text = $group_type_object->labels['name']; + if ( isset( $group_type_object->labels['singular_name'] ) && $group_type_object->labels['singular_name'] ) { + $group_type_text = $group_type_object->labels['singular_name']; + } + + if ( empty( $group_type_object->has_directory ) ) { + return esc_html( $group_type_text ); + } + + return sprintf( + '<a href="%s">%s</a>', + esc_url( bp_get_group_type_directory_permalink( $group_type ) ), + esc_html( $group_type_text ) + ); } /** @@ -206,19 +225,23 @@ function bp_group_type_list( $group_id = 0, $r = array() ) { * Return a comma-delimited list of group types. * * @since 2.7.0 + * @since 7.0.0 The `$r['label']` argument now also accept an array containing the + * plural & singular labels to use according to the Group's number of + * group types it is assigned to. * * @param int $group_id Group ID. Defaults to current group ID if on a group page. * @param array|string $r { * Array of parameters. All items are optional. - * @type string $parent_element Element to wrap around the list. Defaults to 'p'. - * @type array $parent_attr Element attributes for parent element. Defaults to - * array( 'class' => 'bp-group-type-list' ). - * @type string $label Label to add before the list. Defaults to 'Group Types:'. - * @type string $label_element Element to wrap around the label. Defaults to 'strong'. - * @type array $label_attr Element attributes for label element. Defaults to array(). - * @type bool $show_all Whether to show all registered group types. Defaults to 'false'. If - * 'false', only shows group types with the 'show_in_list' parameter set to - * true. See bp_groups_register_group_type() for more info. + * @type string $parent_element Element to wrap around the list. Defaults to 'p'. + * @type array $parent_attr Element attributes for parent element. Defaults to + * array( 'class' => 'bp-group-type-list' ). + * @type string|array $label Plural and singular labels to add before the list. Defaults to + * array( 'plural' => 'Group Types:', 'singular' => 'Group Type:' ). + * @type string $label_element Element to wrap around the label. Defaults to 'strong'. + * @type array $label_attr Element attributes for label element. Defaults to array(). + * @type bool $show_all Whether to show all registered group types. Defaults to 'false'. If + * 'false', only shows group types with the 'show_in_list' parameter set to + * true. See bp_groups_register_group_type() for more info. * } * @return string */ @@ -227,16 +250,40 @@ function bp_group_type_list( $group_id = 0, $r = array() ) { $group_id = bp_get_current_group_id(); } - $r = bp_parse_args( $r, array( - 'parent_element' => 'p', - 'parent_attr' => array( - 'class' => 'bp-group-type-list', + $r = bp_parse_args( + $r, + array( + 'parent_element' => 'p', + 'parent_attr' => array( + 'class' => 'bp-group-type-list', + ), + 'label' => array(), + 'label_element' => 'strong', + 'label_attr' => array(), + 'show_all' => false, + 'list_element' => '', + 'list_element_attr' => array(), ), - 'label' => __( 'Group Types:', 'buddypress' ), - 'label_element' => 'strong', - 'label_attr' => array(), - 'show_all' => false, - ), 'group_type_list' ); + 'group_type_list' + ); + + // Should the label be output? + $has_label = ! empty( $r['label'] ); + + // Ensure backward compatibility in case developers are still using a string. + if ( ! is_array( $r['label'] ) ) { + $r['label'] = array( + 'plural' => __( 'Group Types:', 'buddypress' ), + ); + } + + $labels = wp_parse_args( + $r['label'], + array( + 'plural' => __( 'Group Types:', 'buddypress' ), + 'singular' => __( 'Group Type:', 'buddypress' ), + ) + ); $retval = ''; @@ -250,12 +297,19 @@ function bp_group_type_list( $group_id = 0, $r = array() ) { } $before = $after = $label = ''; + $count = count( $types ); + + if ( 1 === $count ) { + $label_text = $labels['singular']; + } else { + $label_text = $labels['plural']; + } // Render parent element. if ( ! empty( $r['parent_element'] ) ) { $parent_elem = new BP_Core_HTML_Element( array( 'element' => $r['parent_element'], - 'attr' => $r['parent_attr'] + 'attr' => $r['parent_attr'], ) ); // Set before and after. @@ -268,17 +322,31 @@ function bp_group_type_list( $group_id = 0, $r = array() ) { $label = new BP_Core_HTML_Element( array( 'element' => $r['label_element'], 'attr' => $r['label_attr'], - 'inner_html' => esc_html( $r['label'] ) + 'inner_html' => esc_html( $label_text ), ) ); $label = $label->contents() . ' '; // No element, just the label. - } else { - $label = esc_html( $r['label'] ); + } elseif ( $has_label ) { + $label = esc_html( $label_text ); + } + + // The list of types. + $list = implode( ', ', array_map( 'bp_get_group_type_directory_link', $types ) ); + + // Render the list of types element. + if ( ! empty( $r['list_element'] ) ) { + $list_element = new BP_Core_HTML_Element( array( + 'element' => $r['list_element'], + 'attr' => $r['list_element_attr'], + 'inner_html' => $list, + ) ); + + $list = $list_element->contents(); } // Comma-delimit each type into the group type directory link. - $label .= implode( ', ', array_map( 'bp_get_group_type_directory_link', $types ) ); + $label .= $list; // Retval time! $retval = $before . $label . $after; @@ -293,6 +361,7 @@ function bp_group_type_list( $group_id = 0, $r = array() ) { * @since 1.0.0 * @since 2.6.0 Added `$group_type`, `$group_type__in`, and `$group_type__not_in` parameters. * @since 2.7.0 Added `$update_admin_cache` parameter. + * @since 7.0.0 Added `$status` parameter. * * @param array|string $args { * Array of parameters. All items are optional. @@ -319,6 +388,7 @@ function bp_group_type_list( $group_id = 0, $r = array() ) { * @type array|string $group_type__in Array or comma-separated list of group types to limit results to. * @type array|string $group_type__not_in Array or comma-separated list of group types that will be * excluded from results. + * @type array|string $status Array or comma-separated list of group statuses to limit results to. * @type array $meta_query An array of meta_query conditions. * See {@link WP_Meta_Query::queries} for description. * @type array|string $include Array or comma-separated list of group IDs. Results will be limited @@ -372,6 +442,16 @@ function bp_has_groups( $args = '' ) { } } + $status = array(); + if ( ! empty( $_GET['status'] ) ) { + if ( is_array( $_GET['status'] ) ) { + $status = $_GET['status']; + } else { + // Can be a comma-separated list. + $status = explode( ',', $_GET['status'] ); + } + } + // Default search string (too soon to escape here). $search_query_arg = bp_core_get_component_search_query_arg( 'groups' ); if ( ! empty( $_REQUEST[ $search_query_arg ] ) ) { @@ -398,6 +478,7 @@ function bp_has_groups( $args = '' ) { 'group_type' => $group_type, 'group_type__in' => '', 'group_type__not_in' => '', + 'status' => $status, 'meta_query' => false, 'include' => false, 'exclude' => false, @@ -422,6 +503,7 @@ function bp_has_groups( $args = '' ) { 'group_type' => $r['group_type'], 'group_type__in' => $r['group_type__in'], 'group_type__not_in' => $r['group_type__not_in'], + 'status' => $r['status'], 'meta_query' => $r['meta_query'], 'include' => $r['include'], 'exclude' => $r['exclude'], @@ -2003,21 +2085,29 @@ function bp_group_total_members( $group = false ) { * Output the "x members" count string for a group. * * @since 1.2.0 + * @since 7.0.0 Adds the `$group` optional parameter. + * + * @param object|bool $group Optional. Group object. Default: current group in loop. */ -function bp_group_member_count() { - echo bp_get_group_member_count(); +function bp_group_member_count( $group = false ) { + echo bp_get_group_member_count( $group ); } /** * Generate the "x members" count string for a group. * * @since 1.2.0 * + * @since 7.0.0 Adds the `$group` optional parameter. + * + * @param object|bool $group Optional. Group object. Default: current group in loop. * @return string */ - function bp_get_group_member_count() { + function bp_get_group_member_count( $group = false ) { global $groups_template; - if ( isset( $groups_template->group->total_member_count ) ) { + if ( isset( $group->total_member_count ) ) { + $count = (int) $group->total_member_count; + } elseif ( isset( $groups_template->group->total_member_count ) ) { $count = (int) $groups_template->group->total_member_count; } else { $count = 0; diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-widgets.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-widgets.php index 333398f52a09a5edc87a550a395738d258ee7b14..937bb14cb41db5af3b6570e10d6883b2b7224666 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-widgets.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-widgets.php @@ -76,8 +76,8 @@ function groups_ajax_widget_groups_list() { <?php else : ?> <span class="activity" data-livestamp="<?php bp_core_iso8601_date( bp_get_group_last_active( 0, array( 'relative' => false ) ) ); ?>"> <?php - /* translators: %s: last activity timestamp (e.g. "active 1 hour ago") */ - printf( _x( 'active %s', 'last time the group was active', 'buddypress' ), bp_get_group_last_active() ); + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + printf( _x( 'Active %s', 'last time the group was active', 'buddypress' ), bp_get_group_last_active() ); ?> </span> <?php endif; ?> diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-component.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-component.php index a7c2f5c5ca2b60a2a8f6457ca7b92ab970ea8a82..15c3f4939d94712a42e20447208aee4979ea82d6 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-component.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-component.php @@ -892,7 +892,7 @@ class BP_Groups_Component extends BP_Component { ) ); if ( empty( $bp->bp_options_avatar ) ) { - $bp->bp_options_avatar = '<img src="' . esc_url( bp_core_avatar_default_thumb() ) . '" alt="' . esc_attr__( 'No Group Profile Photo', 'buddypress' ) . '" class="avatar" />'; + $bp->bp_options_avatar = '<img loading="lazy" src="' . esc_url( bp_core_avatar_default_thumb() ) . '" alt="' . esc_attr__( 'No Group Profile Photo', 'buddypress' ) . '" class="avatar" />'; } } } @@ -924,12 +924,12 @@ class BP_Groups_Component extends BP_Component { * Set up taxonomies. * * @since 2.6.0 + * @since 7.0.0 The Group Type taxonomy is registered using the `bp_groups_register_group_type_taxonomy()` function. */ public function register_taxonomies() { - // Group Type. - register_taxonomy( 'bp_group_type', 'bp_group', array( - 'public' => false, - ) ); + + // Just let BP Component fire 'bp_groups_register_taxonomies'. + return parent::register_taxonomies(); } /** @@ -1010,6 +1010,57 @@ class BP_Groups_Component extends BP_Component { ), ), ), + 'bp/groups' => array( + 'name' => 'bp/groups', + 'editor_script' => 'bp-groups-block', + 'editor_script_url' => plugins_url( 'js/blocks/groups.js', dirname( __FILE__ ) ), + 'editor_script_deps' => array( + 'wp-blocks', + 'wp-element', + 'wp-components', + 'wp-i18n', + 'wp-compose', + 'wp-data', + 'wp-api-fetch', + 'wp-url', + 'wp-block-editor', + 'bp-block-components', + 'lodash', + ), + 'style' => 'bp-groups-block', + 'style_url' => plugins_url( 'css/blocks/groups.css', dirname( __FILE__ ) ), + 'attributes' => array( + 'itemIDs' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + ), + 'avatarSize' => array( + 'type' => 'string', + 'default' => 'full', + ), + 'displayGroupName' => array( + 'type' => 'boolean', + 'default' => true, + ), + 'extraInfo' => array( + 'type' => 'string', + 'default' => 'none', + 'enum' => array( 'description', 'popular', 'active', 'none' ), + ), + 'layoutPreference' => array( + 'type' => 'string', + 'default' => 'list', + 'enum' => array( 'list', 'grid' ), + ), + 'columns' => array( + 'type' => 'number', + 'default' => 2, + ), + ), + 'render_callback' => 'bp_groups_render_groups_block', + ), ) ); } diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-group.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-group.php index 0102e41e75d8b3c17f5bd26765094eea3e25710a..f06ec80550410e2f18cd69d3937402e05162e822 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-group.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-group.php @@ -1746,14 +1746,14 @@ class BP_Groups_Group { $tax_query = new WP_Tax_Query( array( array( - 'taxonomy' => 'bp_group_type', + 'taxonomy' => bp_get_group_type_tax_name(), 'field' => 'name', 'operator' => $operator, 'terms' => $types, ), ) ); - $site_id = bp_get_taxonomy_term_site_id( 'bp_group_type' ); + $site_id = bp_get_taxonomy_term_site_id( bp_get_group_type_tax_name() ); $switched = false; if ( $site_id !== get_current_blog_id() ) { switch_to_blog( $site_id ); diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-invitation-manager.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-invitation-manager.php index d22cd0977c660f5916aedb1bcccdeb9fc41dac59..76d4e13c78bb52cd7ad4f441cff306c0aa6be497 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-invitation-manager.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-invitation-manager.php @@ -67,7 +67,11 @@ class BP_Groups_Invitation_Manager extends BP_Invitation_Manager { * @param array $r Parameters that describe the invitation being accepted. * @return bool True on success, false on failure. */ - public function run_acceptance_action( $type = 'invite', $r ) { + public function run_acceptance_action( $type, $r ) { + if ( ! $type || ! in_array( $type, array( 'request', 'invite' ), true ) ) { + return false; + } + // If the user is already a member (because BP at one point allowed two invitations to // slip through), return early. if ( groups_is_user_member( $r['user_id'], $r['item_id'] ) ) { diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-invite-template.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-invite-template.php index dc36224cc8f6e8d4488e7da15472f8f8a9214396..c0d9050d614c05646ebcb17a32277a5312ef62c9 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-invite-template.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-invite-template.php @@ -275,8 +275,8 @@ class BP_Groups_Invite_Template { $this->invite->user->user_url = bp_core_get_user_domain( $user_id, $this->invite->user->user_nicename, $this->invite->user->user_login ); $this->invite->user->user_link = "<a href='{$this->invite->user->user_url}'>{$this->invite->user->fullname}</a>"; - /* translators: %s: last activity timestamp (e.g. "active 1 hour ago") */ - $this->invite->user->last_active = bp_core_get_last_activity( $this->invite->user->last_activity, __( 'active %s', 'buddypress' ) ); + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + $this->invite->user->last_active = bp_core_get_last_activity( $this->invite->user->last_activity, __( 'Active %s', 'buddypress' ) ); if ( bp_is_active( 'groups' ) ) { $total_groups = BP_Groups_Member::total_group_count( $user_id ); diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-list-table.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-list-table.php index e5b97eb7931e6ccd6c720daa5ed81c5233e5f466..be3864b32ae8f69e221d76fb353c701f1cdb8780 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-list-table.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-list-table.php @@ -789,7 +789,7 @@ class BP_Groups_List_Table extends WP_List_Table { * @param array $item The current group item in the loop. * @return string */ - public function column_content_group_type( $retval = '', $column_name, $item ) { + public function column_content_group_type( $retval = '', $column_name = '', $item = array() ) { if ( 'bp_group_type' !== $column_name ) { return $retval; } diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-template.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-template.php index d9aeb00c203a8b93ec6a1bd915d503399e5bf0e6..5ad3cc0463daa74a25185da773e49fb486f2666a 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-template.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-template.php @@ -171,6 +171,7 @@ class BP_Groups_Template { 'group_type' => '', 'group_type__in' => '', 'group_type__not_in' => '', + 'status' => array(), 'meta_query' => false, 'update_meta_cache' => true, 'update_admin_cache' => false, @@ -224,6 +225,7 @@ class BP_Groups_Template { 'group_type' => $group_type, 'group_type__in' => $group_type__in, 'group_type__not_in' => $group_type__not_in, + 'status' => $status, 'include' => $include, 'exclude' => $exclude, 'parent_id' => $parent_id, diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-widget.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-widget.php index 90862063a4000470a50abee466063983536a5170..08eadf14e5df4237f03297389db82e29ecafc6bf 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-widget.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-widget.php @@ -149,8 +149,8 @@ class BP_Groups_Widget extends WP_Widget { } elseif ( 'popular' == $instance['group_default'] ) { bp_group_member_count(); } else { - /* translators: %s: last activity timestamp (e.g. "active 1 hour ago") */ - printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + printf( __( 'Active %s', 'buddypress' ), bp_get_group_last_active() ); } ?> </span> diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php index ef4306f72076f1ddfeb3a09c576310c35d8ba42f..54cd82d422ca0ba2d4980a6e80a6578b5ee1a4bb 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php @@ -166,20 +166,20 @@ class BP_REST_Attachments_Group_Avatar_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_group_invalid_id', + __( 'Invalid group ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); $this->group = $this->groups_endpoint->get_group_object( $request ); - if ( ! $this->group ) { - $retval = new WP_Error( - 'bp_rest_group_invalid_id', - __( 'Invalid group ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); + if ( false !== $this->group ) { + $retval = true; } /** @@ -187,7 +187,7 @@ class BP_REST_Attachments_Group_Avatar_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_group_avatar_get_item_permissions_check', $retval, $request ); @@ -251,32 +251,31 @@ class BP_REST_Attachments_Group_Avatar_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { $retval = $this->get_item_permissions_check( $request ); - if ( true === $retval && ( bp_disable_group_avatar_uploads() || false === buddypress()->avatar->show_avatars ) ) { - $retval = new WP_Error( - 'bp_rest_attachments_group_avatar_disabled', - __( 'Sorry, group avatar upload is disabled.', 'buddypress' ), - array( - 'status' => 500, - ) - ); - } - - if ( true === $retval - && ! groups_is_user_admin( bp_loggedin_user_id(), $this->group->id ) - && ! current_user_can( 'bp_moderate' ) - ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not authorized to perform this action.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( ! is_wp_error( $retval ) ) { + if ( bp_disable_group_avatar_uploads() || false === buddypress()->avatar->show_avatars ) { + $retval = new WP_Error( + 'bp_rest_attachments_group_avatar_disabled', + __( 'Sorry, group avatar upload is disabled.', 'buddypress' ), + array( + 'status' => 500, + ) + ); + } elseif ( groups_is_user_admin( bp_loggedin_user_id(), $this->group->id ) || current_user_can( 'bp_moderate' ) ) { + $retval = true; + } else { + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not authorized to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } } /** @@ -284,7 +283,7 @@ class BP_REST_Attachments_Group_Avatar_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_group_avatar_create_item_permissions_check', $retval, $request ); @@ -373,7 +372,7 @@ class BP_REST_Attachments_Group_Avatar_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { $retval = $this->create_item_permissions_check( $request ); @@ -383,7 +382,7 @@ class BP_REST_Attachments_Group_Avatar_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_group_avatar_delete_item_permissions_check', $retval, $request ); diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-attachments-group-cover-endpoint.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-attachments-group-cover-endpoint.php index 9f5d0b48716132c9c88c9a6e54321ccbb080cf94..bd513c8e80691027fc6437ee1ad0f12a91544da1 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-attachments-group-cover-endpoint.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-attachments-group-cover-endpoint.php @@ -152,20 +152,20 @@ class BP_REST_Attachments_Group_Cover_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_group_invalid_id', + __( 'Invalid group id.', 'buddypress' ), + array( + 'status' => 404, + ) + ); $this->group = $this->groups_endpoint->get_group_object( $request ); - if ( ! $this->group ) { - $retval = new WP_Error( - 'bp_rest_group_invalid_id', - __( 'Invalid group id.', 'buddypress' ), - array( - 'status' => 404, - ) - ); + if ( false !== $this->group ) { + $retval = true; } /** @@ -173,7 +173,7 @@ class BP_REST_Attachments_Group_Cover_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_group_cover_get_item_permissions_check', $retval, $request ); @@ -237,12 +237,12 @@ class BP_REST_Attachments_Group_Cover_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { $retval = $this->delete_item_permissions_check( $request ); - if ( true === $retval && bp_disable_group_cover_image_uploads() ) { + if ( ! is_wp_error( $retval ) && bp_disable_group_cover_image_uploads() ) { $retval = new WP_Error( 'bp_rest_attachments_group_cover_disabled', __( 'Sorry, group cover upload is disabled.', 'buddypress' ), @@ -257,7 +257,7 @@ class BP_REST_Attachments_Group_Cover_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_group_cover_create_item_permissions_check', $retval, $request ); @@ -322,37 +322,43 @@ class BP_REST_Attachments_Group_Cover_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { $retval = $this->get_item_permissions_check( $request ); - $args = array(); - - if ( isset( $this->group->id ) ) { - $args = array( - 'item_id' => (int) $this->group->id, - 'object' => $this->object, - ); - } - if ( true === $retval && ! is_user_logged_in() ) { - $retval = new WP_Error( + if ( ! is_wp_error( $retval ) ) { + $args = array(); + $error = new WP_Error( 'bp_rest_authorization_required', - __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), array( 'status' => rest_authorization_required_code(), ) ); - } - if ( true === $retval && ! empty( $args ) && ! bp_attachments_current_user_can( 'edit_cover_image', $args ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not authorized to perform this action.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( ! isset( $this->group->id ) || ! isset( $this->object ) ) { + $retval = $error; + } else { + $args = array( + 'item_id' => (int) $this->group->id, + 'object' => $this->object, + ); + + if ( ! is_user_logged_in() ) { + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } elseif ( bp_attachments_current_user_can( 'edit_cover_image', $args ) ) { + $retval = true; + } else { + $retval = $error; + } + } } /** @@ -360,7 +366,7 @@ class BP_REST_Attachments_Group_Cover_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_group_cover_delete_item_permissions_check', $retval, $request ); diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-group-invites-endpoint.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-group-invites-endpoint.php index d04492d1be054193a3dcf9391ce413edc385a0f3..f2014f8a39c9f0913d1fcba53ce06c36fd62e81e 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-group-invites-endpoint.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-group-invites-endpoint.php @@ -182,19 +182,20 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { * @return bool|WP_Error */ public function get_items_permissions_check( $request ) { - $retval = true; - $user_id = bp_loggedin_user_id(); - $user_id_arg = $request['user_id']; - $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); - $inviter = bp_rest_get_user( $request['inviter_id'] ); - - // If the query is not restricted by group or user, limit it to the current user, if not an admin. - if ( ! $request['group_id'] && ! $request['user_id'] && ! bp_current_user_can( 'bp_moderate' ) ) { - $user_id_arg = $user_id; - } - $user = bp_rest_get_user( $user_id_arg ); + $error = new WP_Error( + 'bp_rest_group_invites_cannot_get_items', + __( 'Sorry, you are not allowed to fetch group invitations with those arguments.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + $retval = $error; + $group_id = (int) $request['group_id']; + $current_user_id = (int) bp_loggedin_user_id(); + $user_id_arg = (int) $request['user_id']; + $inviter_id = (int) $request['inviter_id']; - if ( ! $user_id ) { + if ( ! is_user_logged_in() ) { $retval = new WP_Error( 'bp_rest_authorization_required', __( 'Sorry, you need to be logged in to see the group invitations.', 'buddypress' ), @@ -202,63 +203,89 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); - } - - // If a group ID has been passed, check that it is valid. - if ( true === $retval && $request['group_id'] && ! $group instanceof BP_Groups_Group ) { - $retval = new WP_Error( - 'bp_rest_group_invalid_id', - __( 'Invalid group ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - // If a user ID has been passed, check that it is valid. - if ( true === $retval && $user_id_arg && ! $user instanceof WP_User ) { - $retval = new WP_Error( - 'bp_rest_member_invalid_id', - __( 'Invalid member ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - // If an inviter ID has been passed, check that it is valid. - if ( true === $retval && $request['inviter_id'] && ! $inviter instanceof WP_User ) { - $retval = new WP_Error( - 'bp_rest_member_invalid_id', - __( 'Invalid member ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); + } elseif ( $group_id ) { + if ( ! $user_id_arg ) { + $user_id_arg = $current_user_id; + } - } + $user = bp_rest_get_user( $user_id_arg ); - /** - * Users can see invitations if they - * - are a site admin - * - are a group admin of the subject group (group_id must be specified) - * - are the invite recipient (user_id must be specified) - * - are the inviter (inviter_id must be specified) - * So, the request must be scoped if the user is not a site admin. - */ - if ( true === $retval - && ! bp_current_user_can( 'bp_moderate' ) - && ( $request['group_id'] && ! $this->can_see( $request['group_id'] ) ) - && $user_id_arg !== $user_id - && $request['inviter_id'] !== $user_id - ) { - $retval = new WP_Error( - 'bp_rest_group_invites_cannot_get_items', - __( 'Sorry, you are not allowed to fetch group invitations with those arguments.', 'buddypress' ), - array( - 'status' => 500, - ) - ); + // Check the user is valid. + if ( ! $user instanceof WP_User ) { + $retval = new WP_Error( + 'bp_rest_member_invalid_id', + __( 'Invalid member ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } else { + $group = $this->groups_endpoint->get_group_object( $group_id ); + + // Check the group is valid. + if ( ! $group instanceof BP_Groups_Group ) { + $retval = new WP_Error( + 'bp_rest_group_invalid_id', + __( 'Invalid group ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( bp_current_user_can( 'bp_moderate' ) || $this->can_see( $group->id ) ) { + /* + * Users can see invitations if they + * - are a site admin, + * - are a group admin of the subject group (group_id must be specified). + */ + $retval = true; + } else { + $retval = $error; + } + } + } elseif ( $user_id_arg ) { + $user = bp_rest_get_user( $user_id_arg ); + + // Check the user is valid. + if ( ! $user instanceof WP_User ) { + $retval = new WP_Error( + 'bp_rest_member_invalid_id', + __( 'Invalid member ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( bp_current_user_can( 'bp_moderate' ) || $user->ID === $current_user_id ) { + /* + * Users can see invitations if they: + * - are a site admin, + * - are the invite recipient (user_id must be specified). + */ + $retval = true; + } else { + $retval = $error; + } + } elseif ( $request['inviter_id'] ) { + $inviter = bp_rest_get_user( $request['inviter_id'] ); + + // Check the inviter is valid. + if ( ! $inviter instanceof WP_User ) { + $retval = new WP_Error( + 'bp_rest_member_invalid_id', + __( 'Invalid member ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( bp_current_user_can( 'bp_moderate' ) || $inviter->ID === $current_user_id ) { + /* + * Users can see invitations if they: + * - are a site admin, + * - are the inviter (inviter_id must be specified). + */ + $retval = true; + } else { + $retval = $error; + } } /** @@ -266,7 +293,7 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Whether the request can continue. + * @param true|WP_Error $retval Whether the request can continue. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_invites_get_items_permissions_check', $retval, $request ); @@ -308,12 +335,17 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { $user_id = bp_loggedin_user_id(); - $invite = $this->fetch_single_invite( $request['invite_id'] ); - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); if ( ! $user_id ) { $retval = new WP_Error( @@ -323,36 +355,35 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); - } - - if ( true === $retval && ! $invite ) { - $retval = new WP_Error( - 'bp_rest_group_invite_invalid_id', - __( 'Invalid group invitation ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - /** - * Users can see a specific invitation if they - * - are a site admin - * - are a group admin of the subject group - * - are the invite recipient - * - are the inviter - */ - if ( true === $retval - && ! bp_current_user_can( 'bp_moderate' ) - && ! $this->can_see( $invite->item_id ) - && ! in_array( $user_id, array( $invite->user_id, $invite->inviter_id ), true ) ) { - $retval = new WP_Error( - 'bp_rest_group_invites_cannot_get_item', - __( 'Sorry, you are not allowed to fetch an invitation.', 'buddypress' ), - array( - 'status' => 500, - ) - ); + } else { + $invite = $this->fetch_single_invite( $request['invite_id'] ); + + if ( ! $invite ) { + $retval = new WP_Error( + 'bp_rest_group_invite_invalid_id', + __( 'Invalid group invitation ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( bp_current_user_can( 'bp_moderate' ) || $this->can_see( $invite->item_id ) || in_array( $user_id, array( $invite->user_id, $invite->inviter_id ), true ) ) { + /* + * Users can see a specific invitation if they + * - are a site admin + * - are a group admin of the subject group + * - are the invite recipient + * - are the inviter + */ + $retval = true; + } else { + $retval = new WP_Error( + 'bp_rest_group_invites_cannot_get_item', + __( 'Sorry, you are not allowed to fetch an invitation.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } } /** @@ -360,7 +391,7 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Whether the request can continue. + * @param true|WP_Error $retval Whether the request can continue. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_invites_get_item_permissions_check', $retval, $request ); @@ -436,14 +467,17 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { $inviter_id_arg = $request['inviter_id'] ? $request['inviter_id'] : bp_loggedin_user_id(); - $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); - $user = bp_rest_get_user( $request['user_id'] ); - $inviter = bp_rest_get_user( $inviter_id_arg ); - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); if ( ! is_user_logged_in() ) { $retval = new WP_Error( @@ -453,37 +487,43 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); - } - - if ( true === $retval && empty( $group->id ) ) { - $retval = new WP_Error( - 'bp_rest_group_invalid_id', - __( 'Invalid group ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - if ( true === $retval && ( empty( $user->ID ) || empty( $inviter->ID ) || $user->ID === $inviter->ID ) ) { - $retval = new WP_Error( - 'bp_rest_member_invalid_id', - __( 'Invalid member ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - // Only a site admin or the user herself can extend invites. - if ( true === $retval && ! bp_current_user_can( 'bp_moderate' ) && bp_loggedin_user_id() !== $inviter_id_arg ) { - $retval = new WP_Error( - 'bp_rest_group_invite_cannot_create_item', - __( 'Sorry, you are not allowed to create the invitation as requested.', 'buddypress' ), - array( - 'status' => 500, - ) - ); + } else { + $user = bp_rest_get_user( $request['user_id'] ); + $inviter = bp_rest_get_user( $inviter_id_arg ); + + if ( empty( $user->ID ) || empty( $inviter->ID ) || $user->ID === $inviter->ID ) { + $retval = new WP_Error( + 'bp_rest_member_invalid_id', + __( 'Invalid member ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } else { + $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); + + if ( empty( $group->id ) ) { + $retval = new WP_Error( + 'bp_rest_group_invalid_id', + __( 'Invalid group ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } else { + if ( bp_current_user_can( 'bp_moderate' ) || bp_loggedin_user_id() === $inviter_id_arg ) { + $retval = true; + } else { + $retval = new WP_Error( + 'bp_rest_group_invite_cannot_create_item', + __( 'Sorry, you are not allowed to create the invitation as requested.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } + } + } } /** @@ -491,7 +531,7 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Whether the request can continue. + * @param true|WP_Error $retval Whether the request can continue. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_invites_create_item_permissions_check', $retval, $request ); @@ -552,12 +592,17 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function update_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); $user_id = bp_loggedin_user_id(); - $invite = $this->fetch_single_invite( $request['invite_id'] ); if ( ! $user_id ) { $retval = new WP_Error( @@ -567,29 +612,28 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); - } - - if ( true === $retval && ! $invite ) { - $retval = new WP_Error( - 'bp_rest_group_invite_invalid_id', - __( 'Invalid group invitation ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - // Only the invitee or a site admin should be able to accept an invitation. - if ( true === $retval - && ! bp_current_user_can( 'bp_moderate' ) - && $user_id !== $invite->user_id ) { - $retval = new WP_Error( - 'bp_rest_group_invite_cannot_update_item', - __( 'Sorry, you are not allowed to accept the invitation as requested.', 'buddypress' ), - array( - 'status' => 500, - ) - ); + } else { + $invite = $this->fetch_single_invite( $request['invite_id'] ); + + if ( ! $invite ) { + $retval = new WP_Error( + 'bp_rest_group_invite_invalid_id', + __( 'Invalid group invitation ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( bp_current_user_can( 'bp_moderate' ) || $user_id === $invite->user_id ) { + $retval = true; + } else { + $retval = new WP_Error( + 'bp_rest_group_invite_cannot_update_item', + __( 'Sorry, you are not allowed to accept the invitation as requested.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } } /** @@ -597,7 +641,7 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Whether the request can continue. + * @param true|WP_Error $retval Whether the request can continue. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_invites_update_item_permissions_check', $retval, $request ); @@ -714,7 +758,7 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { 'bp_rest_group_invite_cannot_delete_item', __( 'Sorry, you are not allowed to delete the invitation as requested.', 'buddypress' ), array( - 'status' => 500, + 'status' => rest_authorization_required_code(), ) ); } @@ -832,7 +876,6 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param int $invite_id The ID of the invitation you wish to fetch. - * * @return BP_Invitation|bool $invite Invitation if found, false otherwise. */ public function fetch_single_invite( $invite_id = 0 ) { @@ -853,7 +896,7 @@ class BP_REST_Group_Invites_Endpoint extends WP_REST_Controller { * @return array Endpoint arguments. */ public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { - $args = WP_REST_Controller::get_endpoint_args_for_item_schema( $method ); + $args = parent::get_endpoint_args_for_item_schema( $method ); $key = 'get_item'; if ( WP_REST_Server::CREATABLE === $method || WP_REST_Server::EDITABLE === $method ) { diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-group-membership-endpoint.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-group-membership-endpoint.php index 4860aa4556fc1c02c2bccbe1a1be07076613e9dc..99a1003b507ea5d9c3a6e6e2fa48128c8f775c54 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-group-membership-endpoint.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-group-membership-endpoint.php @@ -138,6 +138,10 @@ class BP_REST_Group_Membership_Endpoint extends WP_REST_Controller { $args['exclude'] = false; } + if ( is_null( $args['search_terms'] ) ) { + $args['search_terms'] = false; + } + /** * Filter the query arguments for the request. * @@ -184,17 +188,36 @@ class BP_REST_Group_Membership_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_items_permissions_check( $request ) { - $retval = $this->groups_endpoint->get_item_permissions_check( $request ); + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you cannot view the group.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); + + if ( empty( $group->id ) ) { + $retval = new WP_Error( + 'bp_rest_group_invalid_id', + __( 'Invalid group ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( bp_current_user_can( 'bp_moderate' ) || 'public' === $group->status || groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) { + $retval = true; + } /** * Filter the group members `get_items` permissions check. * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_members_get_items_permissions_check', $retval, $request ); @@ -290,10 +313,16 @@ class BP_REST_Group_Membership_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); if ( ! is_user_logged_in() ) { $retval = new WP_Error( @@ -303,52 +332,40 @@ class BP_REST_Group_Membership_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); - } - - $user = bp_rest_get_user( $request['user_id'] ); - - if ( true === $retval && ! $user instanceof WP_User ) { - $retval = new WP_Error( - 'bp_rest_group_member_invalid_id', - __( 'Invalid group member ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); - if ( true === $retval && ! $group instanceof BP_Groups_Group ) { - $retval = new WP_Error( - 'bp_rest_group_invalid_id', - __( 'Invalid group ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - // Site administrators can do anything. - if ( true === $retval && bp_current_user_can( 'bp_moderate' ) ) { - $retval = true; } else { - + $user = bp_rest_get_user( $request['user_id'] ); $loggedin_user_id = bp_loggedin_user_id(); - // Users may only freely join public groups. - if ( true === $retval && ( - ! bp_current_user_can( 'groups_join_group', array( 'group_id' => $group->id ) ) - || groups_is_user_member( $loggedin_user_id, $group->id ) // As soon as they are not already members. - || groups_is_user_banned( $loggedin_user_id, $group->id ) // And as soon as they are not banned from it. - || $loggedin_user_id !== $user->ID // You can only add yourself to a group. - ) ) { + if ( ! $user instanceof WP_User ) { $retval = new WP_Error( - 'bp_rest_group_member_failed_to_join', - __( 'Could not join the group.', 'buddypress' ), + 'bp_rest_group_member_invalid_id', + __( 'Invalid group member ID.', 'buddypress' ), array( - 'status' => 500, + 'status' => 404, ) ); + } else { + $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); + + if ( ! $group instanceof BP_Groups_Group ) { + $retval = new WP_Error( + 'bp_rest_group_invalid_id', + __( 'Invalid group ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( bp_current_user_can( 'bp_moderate' ) || ( bp_current_user_can( 'groups_join_group', array( 'group_id' => $group->id ) ) && $loggedin_user_id === $user->ID ) ) { + $retval = true; + } else { + $retval = new WP_Error( + 'bp_rest_group_member_failed_to_join', + __( 'Could not join the group.', 'buddypress' ), + array( + 'status' => 500, + ) + ); + } } } @@ -357,7 +374,7 @@ class BP_REST_Group_Membership_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_members_create_item_permissions_check', $retval, $request ); @@ -450,10 +467,17 @@ class BP_REST_Group_Membership_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function update_item_permissions_check( $request ) { - $retval = true; + $error = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + $retval = $error; if ( ! is_user_logged_in() ) { $retval = new WP_Error( @@ -463,55 +487,60 @@ class BP_REST_Group_Membership_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); - } - - $user = bp_rest_get_user( $request['user_id'] ); - - if ( true === $retval && ! $user instanceof WP_User ) { - $retval = new WP_Error( - 'bp_rest_group_member_invalid_id', - __( 'Invalid group member ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); - if ( true === $retval && ! $group instanceof BP_Groups_Group ) { - $retval = new WP_Error( - 'bp_rest_group_invalid_id', - __( 'Invalid group ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - // Site administrators can do anything. - if ( true === $retval && bp_current_user_can( 'bp_moderate' ) ) { - $retval = true; } else { - + $user = bp_rest_get_user( $request['user_id'] ); $loggedin_user_id = bp_loggedin_user_id(); - if ( true === $retval && in_array( $request['action'], [ 'ban', 'unban', 'promote', 'demote' ], true ) ) { - if ( ! groups_is_user_admin( $loggedin_user_id, $group->id ) ) { - $messages = array( - 'ban' => __( 'Sorry, you are not allowed to ban this group member.', 'buddypress' ), - 'unban' => __( 'Sorry, you are not allowed to unban this group member.', 'buddypress' ), - 'promote' => __( 'Sorry, you are not allowed to promote this group member.', 'buddypress' ), - 'demote' => __( 'Sorry, you are not allowed to demote this group member.', 'buddypress' ), - ); - $retval = new WP_Error( - 'bp_rest_group_member_cannot_' . $request['action'], - $messages[ $request['action'] ], - array( - 'status' => rest_authorization_required_code(), - ) - ); - } else { - $retval = true; + if ( ! $user instanceof WP_User ) { + $retval = new WP_Error( + 'bp_rest_group_member_invalid_id', + __( 'Invalid group member ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } else { + $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); + + if ( ! $group instanceof BP_Groups_Group ) { + $retval = new WP_Error( + 'bp_rest_group_invalid_id', + __( 'Invalid group ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( bp_current_user_can( 'bp_moderate' ) ) { + $retval = true; + } elseif ( in_array( $request['action'], array( 'ban', 'unban', 'promote', 'demote' ), true ) ) { + if ( groups_is_user_admin( $loggedin_user_id, $group->id ) ) { + if ( $loggedin_user_id !== $user->ID ) { + $retval = true; + } else { + $group_admins = groups_get_group_admins( $group->id ); + + if ( 1 !== count( $group_admins ) ) { + $retval = true; + } else { + $retval = $error; + } + } + } else { + $messages = array( + 'ban' => __( 'Sorry, you are not allowed to ban this group member.', 'buddypress' ), + 'unban' => __( 'Sorry, you are not allowed to unban this group member.', 'buddypress' ), + 'promote' => __( 'Sorry, you are not allowed to promote this group member.', 'buddypress' ), + 'demote' => __( 'Sorry, you are not allowed to demote this group member.', 'buddypress' ), + ); + + $retval = new WP_Error( + 'bp_rest_group_member_cannot_' . $request['action'], + $messages[ $request['action'] ], + array( + 'status' => rest_authorization_required_code(), + ) + ); + } } } } @@ -521,7 +550,7 @@ class BP_REST_Group_Membership_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_members_update_item_permissions_check', $retval, $request ); @@ -587,10 +616,17 @@ class BP_REST_Group_Membership_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { - $retval = true; + $error = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + $retval = $error; if ( ! is_user_logged_in() ) { $retval = new WP_Error( @@ -600,63 +636,44 @@ class BP_REST_Group_Membership_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); - } - - $user = bp_rest_get_user( $request['user_id'] ); - - if ( true === $retval && ! $user instanceof WP_User ) { - return new WP_Error( - 'bp_rest_group_member_invalid_id', - __( 'Invalid group member ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); - if ( true === $retval && ! $group instanceof BP_Groups_Group ) { - $retval = new WP_Error( - 'bp_rest_group_invalid_id', - __( 'Invalid group ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - // Site administrators can do anything. - if ( true === $retval && bp_current_user_can( 'bp_moderate' ) ) { - $retval = true; - } elseif ( true === $retval ) { - + } else { + $user = bp_rest_get_user( $request['user_id'] ); $loggedin_user_id = bp_loggedin_user_id(); - if ( $user->ID !== $loggedin_user_id ) { - if ( true === $retval && ! groups_is_user_admin( $loggedin_user_id, $group->id ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you need to be logged in to view a group membership.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } + if ( ! $user instanceof WP_User ) { + return new WP_Error( + 'bp_rest_group_member_invalid_id', + __( 'Invalid group member ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); } else { - // Special case for self-removal: don't allow if it'd leave a group with no admins. - $user = bp_rest_get_user( $request['user_id'] ); - $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); - $loggedin_user_id = bp_loggedin_user_id(); + $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); - $group_admins = groups_get_group_admins( $group->id ); - if ( true === $retval && 1 === count( $group_admins ) && $loggedin_user_id === $group_admins[0]->user_id && $user->ID === $loggedin_user_id ) { + if ( ! $group instanceof BP_Groups_Group ) { $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you need to be logged in to view a group membership.', 'buddypress' ), + 'bp_rest_group_invalid_id', + __( 'Invalid group ID.', 'buddypress' ), array( - 'status' => rest_authorization_required_code(), + 'status' => 404, ) ); + } elseif ( bp_current_user_can( 'bp_moderate' ) || ( $user->ID !== $loggedin_user_id && groups_is_user_admin( $loggedin_user_id, $group->id ) ) ) { + $retval = true; + } elseif ( $user->ID === $loggedin_user_id && ! groups_is_user_banned( $user->ID, $group->id ) ) { + $group_admins = groups_get_group_admins( $group->id ); + + // Special case for self-removal: don't allow if it'd leave a group with no admins. + if ( in_array( $loggedin_user_id, wp_list_pluck( $group_admins, 'user_id' ), true ) ) { + if ( 1 !== count( $group_admins ) ) { + $retval = true; + } else { + $retval = $error; + } + } else { + $retval = true; + } } } } @@ -666,7 +683,7 @@ class BP_REST_Group_Membership_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_members_delete_item_permissions_check', $retval, $request ); @@ -684,7 +701,7 @@ class BP_REST_Group_Membership_Endpoint extends WP_REST_Controller { public function prepare_item_for_response( $group_member, $request ) { $user = bp_rest_get_user( $group_member->user_id ); $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; - $member_data = $this->members_endpoint->user_data( $user, $context ); + $member_data = $this->members_endpoint->user_data( $user, $context, $request ); // Merge both info. $data = array_merge( diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php index 0235a63440088a6f0f52f8d4f80f8323ea892ee6..bfc7dd200e0776d35e54b221d0cc87bc7db51590 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php @@ -176,10 +176,16 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_items_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); $user_id = bp_loggedin_user_id(); $user_id_arg = $request['user_id']; $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); @@ -198,10 +204,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); - } - - // If a group ID has been passed, check that it is valid. - if ( true === $retval && $request['group_id'] && ! $group instanceof BP_Groups_Group ) { + } elseif ( $request['group_id'] && ! $group instanceof BP_Groups_Group ) { $retval = new WP_Error( 'bp_rest_group_invalid_id', __( 'Invalid group ID.', 'buddypress' ), @@ -209,10 +212,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { 'status' => 404, ) ); - } - - // If a user ID has been passed, check that it is valid. - if ( true === $retval && $user_id_arg && ! $user instanceof WP_User ) { + } elseif ( $user_id_arg && ! $user instanceof WP_User ) { $retval = new WP_Error( 'bp_rest_member_invalid_id', __( 'Invalid member ID.', 'buddypress' ), @@ -220,18 +220,14 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { 'status' => 404, ) ); - } - - // Site administrators can do anything. Otherwise, the user must manage the subject group or be the requester. - if ( true === $retval - && ! bp_current_user_can( 'bp_moderate' ) - && ! ( $request['group_id'] && groups_is_user_admin( $user_id, $request['group_id'] ) ) - && $user_id_arg !== $user_id ) { + } elseif ( bp_current_user_can( 'bp_moderate' ) || ( $request['group_id'] && groups_is_user_admin( $user_id, $request['group_id'] ) ) || $user_id_arg === $user_id ) { + $retval = true; + } else { $retval = new WP_Error( 'bp_rest_group_membership_requests_cannot_get_items', __( 'Sorry, you are not allowed to view membership requests.', 'buddypress' ), array( - 'status' => 500, + 'status' => rest_authorization_required_code(), ) ); } @@ -241,7 +237,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Whether the request can continue. + * @param true|WP_Error $retval Whether the request can continue. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_membership_requests_get_items_permissions_check', $retval, $request ); @@ -283,10 +279,16 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); $user_id = bp_loggedin_user_id(); $group_request = $this->fetch_single_membership_request( $request['request_id'] ); @@ -298,9 +300,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); - } - - if ( true === $retval && ! $group_request ) { + } elseif ( ! $group_request ) { $retval = new WP_Error( 'bp_rest_group_membership_requests_invalid_id', __( 'Invalid group membership request ID.', 'buddypress' ), @@ -308,17 +308,14 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { 'status' => 404, ) ); - } - - if ( true === $retval - && ! bp_current_user_can( 'bp_moderate' ) - && $user_id !== $group_request->user_id - && ! groups_is_user_admin( $user_id, $group_request->item_id ) ) { + } elseif ( bp_current_user_can( 'bp_moderate' ) || $user_id === $group_request->user_id || groups_is_user_admin( $user_id, $group_request->item_id ) ) { + $retval = true; + } else { $retval = new WP_Error( 'bp_rest_group_membership_requests_cannot_get_item', __( 'Sorry, you are not allowed to view a membership request.', 'buddypress' ), array( - 'status' => 500, + 'status' => rest_authorization_required_code(), ) ); } @@ -328,7 +325,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Whether the request can continue. + * @param true|WP_Error $retval Whether the request can continue. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_membership_requests_get_item_permissions_check', $retval, $request ); @@ -411,12 +408,18 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); $user_id = bp_loggedin_user_id(); - $user_id_arg = $request['user_id'] ? $request['user_id'] : bp_loggedin_user_id(); + $user_id_arg = $request['user_id'] ? $request['user_id'] : $user_id; $user = bp_rest_get_user( $user_id_arg ); $group = $this->groups_endpoint->get_group_object( $request['group_id'] ); @@ -429,10 +432,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); - } - - // Check for valid user. - if ( true === $retval && ! $user instanceof WP_User ) { + } elseif ( ! $user instanceof WP_User ) { $retval = new WP_Error( 'bp_rest_group_member_invalid_id', __( 'Invalid member ID.', 'buddypress' ), @@ -440,10 +440,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { 'status' => 404, ) ); - } - - // Check for valid group. - if ( true === $retval && ! $group instanceof BP_Groups_Group ) { + } elseif ( ! $group instanceof BP_Groups_Group ) { $retval = new WP_Error( 'bp_rest_group_invalid_id', __( 'Invalid group ID.', 'buddypress' ), @@ -451,17 +448,14 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { 'status' => 404, ) ); - } - - // Normal users can only extend invitations on their own behalf. - if ( true === $retval - && ! bp_current_user_can( 'bp_moderate' ) - && $user_id !== $user_id_arg ) { + } elseif ( bp_current_user_can( 'bp_moderate' ) || $user_id === $user_id_arg ) { + $retval = true; + } else { $retval = new WP_Error( 'bp_rest_group_membership_requests_cannot_create_item', __( 'User may not extend requests on behalf of another user.', 'buddypress' ), array( - 'status' => 500, + 'status' => rest_authorization_required_code(), ) ); } @@ -471,7 +465,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_membership_requests_create_item_permissions_check', $retval, $request ); @@ -533,10 +527,16 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function update_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); $user_id = bp_loggedin_user_id(); $group_request = $this->fetch_single_membership_request( $request['request_id'] ); @@ -548,9 +548,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); - } - - if ( true === $retval && ! $group_request ) { + } elseif ( ! $group_request ) { $retval = new WP_Error( 'bp_rest_group_membership_requests_invalid_id', __( 'Invalid group membership request ID.', 'buddypress' ), @@ -558,16 +556,14 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { 'status' => 404, ) ); - } - - if ( true === $retval - && ! bp_current_user_can( 'bp_moderate' ) - && ! groups_is_user_admin( $user_id, $group_request->item_id ) ) { + } elseif ( bp_current_user_can( 'bp_moderate' ) || groups_is_user_admin( $user_id, $group_request->item_id ) ) { + $retval = true; + } else { $retval = new WP_Error( 'bp_rest_group_member_request_cannot_update_item', __( 'User is not allowed to approve membership requests to this group.', 'buddypress' ), array( - 'status' => 500, + 'status' => rest_authorization_required_code(), ) ); } @@ -577,7 +573,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Whether the request can continue. + * @param true|WP_Error $retval Whether the request can continue. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_membership_requests_update_item_permissions_check', $retval, $request ); @@ -659,10 +655,16 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); $user_id = bp_loggedin_user_id(); $group_request = $this->fetch_single_membership_request( $request['request_id'] ); @@ -674,9 +676,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); - } - - if ( true === $retval && ! $group_request ) { + } elseif ( ! $group_request ) { $retval = new WP_Error( 'bp_rest_group_membership_requests_invalid_id', __( 'Invalid group membership request ID.', 'buddypress' ), @@ -684,17 +684,14 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { 'status' => 404, ) ); - } - - if ( true === $retval - && ! bp_current_user_can( 'bp_moderate' ) - && $user_id !== $group_request->user_id - && ! groups_is_user_admin( $user_id, $group_request->item_id ) ) { + } elseif ( bp_current_user_can( 'bp_moderate' ) || $user_id === $group_request->user_id || groups_is_user_admin( $user_id, $group_request->item_id ) ) { + $retval = true; + } else { $retval = new WP_Error( 'bp_rest_group_membership_requests_cannot_delete_item', __( 'User is not allowed to delete this membership request.', 'buddypress' ), array( - 'status' => 500, + 'status' => rest_authorization_required_code(), ) ); } @@ -704,7 +701,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Whether the request may proceed. + * @param true|WP_Error $retval Whether the request may proceed. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_group_membership_requests_delete_item_permissions_check', $retval, $request ); @@ -816,7 +813,7 @@ class BP_REST_Group_Membership_Request_Endpoint extends WP_REST_Controller { * @return array Endpoint arguments. */ public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { - $args = WP_REST_Controller::get_endpoint_args_for_item_schema( $method ); + $args = parent::get_endpoint_args_for_item_schema( $method ); $key = 'get_item'; if ( WP_REST_Server::CREATABLE === $method ) { diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-groups-endpoint.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-groups-endpoint.php index 3e73aec387a13e4619d49ad569a15f7eb4a4ca0d..154f887a27858d03a36b642a473a0cc4345a22cd 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-groups-endpoint.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-rest-groups-endpoint.php @@ -66,11 +66,19 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { 'callback' => array( $this, 'get_item' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), 'args' => array( - 'context' => $this->get_context_param( + 'context' => $this->get_context_param( array( 'default' => 'view', ) ), + 'populate_extras' => array( + 'description' => __( 'Whether to fetch extra BP data about the returned group.', 'buddypress' ), + 'context' => array( 'view', 'edit' ), + 'default' => false, + 'type' => 'boolean', + 'sanitize_callback' => 'rest_sanitize_boolean', + 'validate_callback' => 'rest_validate_request_arg', + ), ), ), array( @@ -87,6 +95,29 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { 'schema' => array( $this, 'get_item_schema' ), ) ); + + register_rest_route( + $this->namespace, + '/' . $this->rest_base . '/me', + array( + 'args' => array( + 'max' => array( + 'description' => __( 'The maximum amount of groups the user is member of to return. Defaults to all groups.', 'buddypress' ), + 'type' => 'integer', + 'default' => 0, + ), + ), + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_current_user_groups' ), + 'permission_callback' => array( $this, 'get_current_user_groups_permissions_check' ), + 'args' => array( + 'context' => $this->get_context_param( array( 'default' => 'view' ) ), + ), + ), + 'schema' => array( $this, 'get_item_schema' ), + ) + ); } /** @@ -120,6 +151,15 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { $args['parent_id'] = null; } + // See if the user can see hidden groups. + if ( isset( $request['show_hidden'] ) && true === (bool) $request['show_hidden'] && ! $this->can_see_hidden_groups( $request ) ) { + $args['show_hidden'] = false; + } + + if ( true === $request->get_param( 'populate_extras' ) ) { + $args['update_meta_cache'] = true; + } + /** * Filter the query arguments for the request. * @@ -168,30 +208,19 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_items_permissions_check( $request ) { - $retval = true; - - if ( ! $this->can_see_hidden_groups( $request ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you cannot view hidden groups.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } /** * Filter the groups `get_items` permissions check. * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true $value True. * @param WP_REST_Request $request The request sent to the API. */ - return apply_filters( 'bp_rest_groups_get_items_permissions_check', $retval, $request ); + return apply_filters( 'bp_rest_groups_get_items_permissions_check', true, $request ); } /** @@ -233,10 +262,16 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you cannot view the group.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); $group = $this->get_group_object( $request ); if ( empty( $group->id ) ) { @@ -247,16 +282,8 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { 'status' => 404, ) ); - } - - if ( true === $retval && ! $this->can_see( $group ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you cannot view the group.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + } elseif ( $this->can_see( $group ) ) { + $retval = true; } /** @@ -264,7 +291,7 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_groups_get_item_permissions_check', $retval, $request ); @@ -289,7 +316,7 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { 'bp_rest_create_group_empty_name', __( 'Please, enter the name of group.', 'buddypress' ), array( - 'status' => 500, + 'status' => 400, ) ); } @@ -346,19 +373,22 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to create groups.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( ! ( is_user_logged_in() && bp_user_can_create_groups() ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to create groups.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + $current_user_id = (int) bp_loggedin_user_id(); + $creator_id = (int) $request->get_param( 'creator_id' ); + + if ( ( $current_user_id && $current_user_id === $creator_id && bp_user_can_create_groups() ) || bp_current_user_can( 'bp_moderate' ) ) { + $retval = true; } /** @@ -366,7 +396,7 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_groups_create_item_permissions_check', $retval, $request ); @@ -431,24 +461,19 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function update_item_permissions_check( $request ) { - $retval = true; - - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you need to be logged in to update this group.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } - - $group = $this->get_group_object( $request ); + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to update this group.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + $group = $this->get_group_object( $request ); - if ( true === $retval && empty( $group->id ) ) { + if ( empty( $group->id ) ) { $retval = new WP_Error( 'bp_rest_group_invalid_id', __( 'Invalid group ID.', 'buddypress' ), @@ -456,17 +481,16 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { 'status' => 404, ) ); - } - - // If group author does not match logged_in user, block update. - if ( true === $retval && ! $this->can_user_delete_or_update( $group ) ) { + } elseif ( ! is_user_logged_in() ) { $retval = new WP_Error( 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to update this group.', 'buddypress' ), + __( 'Sorry, you need to be logged in to update this group.', 'buddypress' ), array( 'status' => rest_authorization_required_code(), ) ); + } elseif ( $this->can_user_delete_or_update( $group ) ) { + $retval = true; } /** @@ -474,7 +498,7 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_groups_update_item_permissions_check', $retval, $request ); @@ -535,12 +559,27 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to delete this group.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + $group = $this->get_group_object( $request ); - if ( ! is_user_logged_in() ) { + if ( empty( $group->id ) ) { + $retval = new WP_Error( + 'bp_rest_group_invalid_id', + __( 'Invalid group ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( ! is_user_logged_in() ) { $retval = new WP_Error( 'bp_rest_authorization_required', __( 'Sorry, you need to be logged in to delete this group.', 'buddypress' ), @@ -548,39 +587,125 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); + } elseif ( $this->can_user_delete_or_update( $group ) ) { + $retval = true; } - $group = $this->get_group_object( $request ); + /** + * Filter the groups `delete_item` permissions check. + * + * @since 5.0.0 + * + * @param true|WP_Error $retval Returned value. + * @param WP_REST_Request $request The request sent to the API. + */ + return apply_filters( 'bp_rest_groups_delete_item_permissions_check', $retval, $request ); + } - if ( true === $retval && empty( $group->id ) ) { - $retval = new WP_Error( - 'bp_rest_group_invalid_id', - __( 'Invalid group ID.', 'buddypress' ), + /** + * Retrieves the current user groups. + * + * @since 7.0.0 + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_current_user_groups( $request ) { + $current_user_id = get_current_user_id(); + $max = $request->get_param( 'max' ); + + if ( empty( $current_user_id ) ) { + return new WP_Error( + 'bp_rest_group_invalid_user_id', + __( 'Invalid user ID.', 'buddypress' ), array( 'status' => 404, ) ); } - if ( true === $retval && ! $this->can_user_delete_or_update( $group ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to delete this group.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) + $per_page = -1; + if ( $max ) { + $per_page = (int) $max; + } + + /** + * Filter the query arguments for the request. + * + * @since 7.0.0 + * + * @param array $args Key value array of query var to query value. + * @param WP_REST_Request $request The request sent to the API. + */ + $args = apply_filters( + 'bp_rest_groups_get_current_user_groups_query_args', + array( + 'user_id' => $current_user_id, + 'per_page' => $per_page, + 'page' => 1, + 'show_hidden' => true, + 'update_admin_cache' => false, + 'update_meta_cache' => false, + ), + $request + ); + + // Actually, query it. + $groups = groups_get_groups( $args ); + + $retval = array(); + foreach ( $groups['groups'] as $group ) { + $retval[] = $this->prepare_response_for_collection( + $this->prepare_item_for_response( $group, $request ) ); } + $response = rest_ensure_response( $retval ); + /** - * Filter the groups `delete_item` permissions check. + * Fires after the user's list of groups is fetched via the REST API. * - * @since 5.0.0 + * @since 7.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param array $groups Fetched groups. + * @param WP_REST_Response $response The response data. + * @param WP_REST_Request $request The request sent to the API. + */ + do_action( 'bp_rest_groups_get_current_user_groups', $groups, $response, $request ); + + return $response; + } + + /** + * Check if a given request has access to fetch the user's groups. + * + * @since 7.0.0 + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error + */ + public function get_current_user_groups_permissions_check( $request ) { + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you need to be logged in to view your groups.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + + if ( is_user_logged_in() ) { + $retval = true; + } + + /** + * Filter the groups `get_current_user_groups` permissions check. + * + * @since 7.0.0 + * + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ - return apply_filters( 'bp_rest_groups_delete_item_permissions_check', $retval, $request ); + return apply_filters( 'bp_rest_groups_get_current_user_groups_permissions_check', $retval, $request ); } /** @@ -612,6 +737,7 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { 'mods' => array(), 'total_member_count' => null, 'last_activity' => null, + 'last_activity_diff' => null, ); // Get item schema. @@ -646,11 +772,15 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; - // If this is the 'edit' context, fill in more details--similar to "populate_extras". - if ( 'edit' === $context ) { - $data['total_member_count'] = groups_get_groupmeta( $item->id, 'total_member_count' ); - $data['last_activity'] = bp_rest_prepare_date_response( groups_get_groupmeta( $item->id, 'last_activity' ) ); + // If this is the 'edit' context or 'populate_extras' has been requested. + if ( 'edit' === $context || true === $request->get_param( 'populate_extras' ) ) { + $data['total_member_count'] = (int) $item->total_member_count; + $data['last_activity'] = bp_rest_prepare_date_response( $item->last_activity ); + $data['last_activity_diff'] = bp_get_group_last_active( $item ); + } + // If this is the 'edit' context, get more data about the group. + if ( 'edit' === $context ) { // Add admins and moderators to their respective arrays. $admin_mods = groups_get_group_members( array( @@ -712,12 +842,17 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { * @return stdClass|WP_Error */ protected function prepare_item_for_database( $request ) { - $prepared_group = new stdClass(); - $schema = $this->get_item_schema(); - $group = $this->get_group_object( $request ); + $schema = $this->get_item_schema(); + $group = $this->get_group_object( $request ); + + if ( isset( $group->id ) && $group->id ) { + $prepared_group = $group; + } else { + $prepared_group = new stdClass(); + } // Group ID. - if ( ! empty( $schema['properties']['id'] ) && ! empty( $group->id ) ) { + if ( ! empty( $group->id ) ) { $prepared_group->group_id = $group->id; } @@ -725,10 +860,6 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { if ( ! empty( $schema['properties']['creator_id'] ) && isset( $request['creator_id'] ) ) { $prepared_group->creator_id = (int) $request['creator_id']; - // Fallback on the existing creator id in case of an update. - } elseif ( isset( $group->creator_id ) && $group->creator_id ) { - $prepared_group->creator_id = (int) $group->creator_id; - // Fallback on the current user otherwise. } else { $prepared_group->creator_id = bp_loggedin_user_id(); @@ -781,12 +912,22 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { // Update group type(s). if ( isset( $prepared_group->group_id ) && isset( $request['types'] ) ) { + bp_groups_set_group_type( $prepared_group->group_id, $request['types'], false ); + } - // Append on update. Add on creation. - $append = WP_REST_Server::EDITABLE === $request->get_method(); + // Remove group type(s). + if ( isset( $prepared_group->group_id ) && isset( $request['remove_types'] ) ) { + array_map( + function( $type ) use ( $prepared_group ) { + bp_groups_remove_group_type( $prepared_group->group_id, $type ); + }, + $request['remove_types'] + ); + } - // Add/Append group type(s). - bp_groups_set_group_type( $prepared_group->group_id, $request['types'], $append ); + // Append group type(s). + if ( isset( $prepared_group->group_id ) && isset( $request['append_types'] ) ) { + bp_groups_set_group_type( $prepared_group->group_id, $request['append_types'], true ); } /** @@ -837,43 +978,34 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { } /** - * Can a user see a group? + * See if user can delete or update a group. * * @since 5.0.0 * - * @param BP_Groups_Group $group Group object. + * @param BP_Groups_Group $group Group item. * @return bool */ - protected function can_see( $group ) { - - // If it is not a hidden/private group, user can see it. - if ( 'public' === $group->status ) { - return true; - } - - // Moderators. - if ( bp_current_user_can( 'bp_moderate' ) ) { - return true; - } - - // User is a member of the group. - if ( groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) { - return true; - } - - return false; + protected function can_user_delete_or_update( $group ) { + return ( bp_current_user_can( 'bp_moderate' ) || groups_is_user_admin( bp_loggedin_user_id(), $group->id ) ); } /** - * See if user can delete or update a group. + * Can a user see a group? * * @since 5.0.0 * - * @param BP_Groups_Group $group Group item. + * @param BP_Groups_Group $group Group object. * @return bool */ - protected function can_user_delete_or_update( $group ) { - return ( bp_current_user_can( 'bp_moderate' ) || bp_loggedin_user_id() === $group->creator_id ); + protected function can_see( $group ) { + + // If it is not a hidden group, user can see it. + if ( 'hidden' !== $group->status ) { + return true; + } + + // Check for moderators or if user is a member of the group. + return ( bp_current_user_can( 'bp_moderate' ) || groups_is_user_member( bp_loggedin_user_id(), $group->id ) ); } /** @@ -885,20 +1017,15 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { * @return bool */ protected function can_see_hidden_groups( $request ) { - if ( $request['show_hidden'] ) { - - if ( bp_current_user_can( 'bp_moderate' ) ) { - return true; - } - - if ( is_user_logged_in() && isset( $request['user_id'] ) && absint( $request['user_id'] ) === bp_loggedin_user_id() ) { - return true; - } - - return false; + if ( bp_current_user_can( 'bp_moderate' ) ) { + return true; } - return true; + return ( + is_user_logged_in() + && isset( $request['user_id'] ) + && absint( $request['user_id'] ) === bp_loggedin_user_id() + ); } /** @@ -936,7 +1063,7 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { * @return array Endpoint arguments. */ public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { - $args = WP_REST_Controller::get_endpoint_args_for_item_schema( $method ); + $args = parent::get_endpoint_args_for_item_schema( $method ); $key = 'get_item'; if ( WP_REST_Server::CREATABLE === $method || WP_REST_Server::EDITABLE === $method ) { @@ -945,19 +1072,34 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { // Add group types. $args['types'] = array( - 'description' => __( 'Set type(s) for a group.', 'buddypress' ), - 'type' => 'array', + 'description' => __( 'Assign one or more type to a group. To assign more than one type, use a comma separated list of types.', 'buddypress' ), + 'type' => 'string', 'enum' => bp_groups_get_group_types(), 'sanitize_callback' => 'bp_rest_sanitize_group_types', 'validate_callback' => 'bp_rest_validate_group_types', - 'items' => array( - 'type' => 'string', - ), ); if ( WP_REST_Server::EDITABLE === $method ) { $key = 'update_item'; unset( $args['slug'] ); + + // Append group types. + $args['append_types'] = array( + 'description' => __( 'Append one or more type to a group. To append more than one type, use a comma separated list of types.', 'buddypress' ), + 'type' => 'string', + 'enum' => bp_groups_get_group_types(), + 'sanitize_callback' => 'bp_rest_sanitize_group_types', + 'validate_callback' => 'bp_rest_validate_group_types', + ); + + // Remove group types. + $args['remove_types'] = array( + 'description' => __( 'Remove one or more type of a group. To remove more than one type, use a comma separated list of types.', 'buddypress' ), + 'type' => 'string', + 'enum' => bp_groups_get_group_types(), + 'sanitize_callback' => 'bp_rest_sanitize_group_types', + 'validate_callback' => 'bp_rest_validate_group_types', + ); } } elseif ( WP_REST_Server::DELETABLE === $method ) { $key = 'delete_item'; @@ -1102,18 +1244,24 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { ), ), 'total_member_count' => array( - 'context' => array( 'edit' ), + 'context' => array( 'view', 'edit' ), 'description' => __( 'Count of all Group members.', 'buddypress' ), 'readonly' => true, 'type' => 'integer', ), 'last_activity' => array( - 'context' => array( 'edit' ), + 'context' => array( 'view', 'edit' ), 'description' => __( "The date the Group was last active, in the site's timezone.", 'buddypress' ), 'type' => 'string', 'readonly' => true, 'format' => 'date-time', ), + 'last_activity_diff' => array( + 'context' => array( 'view', 'edit' ), + 'description' => __( "The human diff time the Group was last active, in the site's timezone.", 'buddypress' ), + 'type' => 'string', + 'readonly' => true, + ), ), ); @@ -1273,6 +1421,14 @@ class BP_REST_Groups_Endpoint extends WP_REST_Controller { 'validate_callback' => 'rest_validate_request_arg', ); + $params['populate_extras'] = array( + 'description' => __( 'Whether to fetch extra BP data about the returned groups.', 'buddypress' ), + 'default' => false, + 'type' => 'boolean', + 'sanitize_callback' => 'rest_sanitize_boolean', + 'validate_callback' => 'rest_validate_request_arg', + ); + /** * Filters the collection query params. * diff --git a/wp-content/plugins/buddypress/bp-groups/css/blocks/group-rtl.css b/wp-content/plugins/buddypress/bp-groups/css/blocks/group-rtl.css index dce932ac842f791dfa668d69159a64df7c895cf5..e8742462323892ff32a38ef11354f87e882964e0 100644 --- a/wp-content/plugins/buddypress/bp-groups/css/blocks/group-rtl.css +++ b/wp-content/plugins/buddypress/bp-groups/css/blocks/group-rtl.css @@ -1,4 +1,11 @@ /* CSS for the bp/group block */ +[data-type="bp/group"] input.components-placeholder__input { + flex: 1 1 auto; + border-radius: 2px; + border: 1px solid #757575; + padding: 6px 8px; +} + .bp-block-group { position: relative; } @@ -7,24 +14,38 @@ display: flex; } +.bp-block-group .group-description { + width: 100%; +} + +.bp-block-group .group-description-content { + width: 100%; + margin-bottom: 18px; +} + +.bp-block-group .bp-profile-button { + width: 100%; + overflow: hidden; +} + +.bp-block-group .bp-profile-button a.button { + margin: 18px 0 0; +} + .bp-block-group.has-cover .group-content, .bp-block-group.has-cover .item-header-avatar, .bp-block-group.has-cover .group-description { z-index: 2; } -.bp-block-group .group-description { - width: 100%; +.bp-block-group.has-cover .group-content { + padding-top: 75px; } .bp-block-group.has-cover .group-description { padding-top: 75px; } -.bp-block-group.avatar-full .group-description { - padding-right: 35px; -} - .bp-block-group.has-cover .bp-group-cover-image { background-color: #c5c5c5; background-position: center top; @@ -55,30 +76,38 @@ min-height: 200px; } -.bp-block-group.avatar-full { - min-height: 150px; +.bp-block-group.avatar-none.has-cover .item-header-avatar { + padding-top: 75px; } -.bp-block-group.avatar-full.has-cover { - min-height: 300px; +.bp-block-group.avatar-full { + min-height: 150px; } .bp-block-group.avatar-full .item-header-avatar { width: 180px; } -.bp-block-group.has-cover.avatar-full .item-header-avatar { +.bp-block-group.avatar-full .group-description { + padding-right: 35px; +} + +.bp-block-group.avatar-full.has-cover { + min-height: 300px; +} + +.bp-block-group.avatar-full.has-cover .item-header-avatar { width: 200px; } -.bp-block-group.has-cover.avatar-full img.avatar { +.bp-block-group.avatar-full.has-cover img.avatar { border: solid 2px #fff; background: rgba(255, 255, 255, 0.8); margin-right: 20px; } -.bp-block-group.has-cover .group-content { - padding-top: 75px; +.bp-block-group.avatar-thumb .item-header-avatar { + width: 70px; } .bp-block-group.avatar-thumb .item-header-avatar img.avatar { @@ -90,28 +119,10 @@ align-items: center; } -.bp-block-group .group-description-content { - width: 100%; - margin-bottom: 18px; -} - -.bp-block-group.avatar-thumb .item-header-avatar { - width: 70px; -} - .bp-block-group.avatar-thumb.has-cover .item-header-avatar { padding-top: 75px; } -.bp-block-group .bp-profile-button { - width: 100%; - overflow: hidden; -} - -.bp-block-group .bp-profile-button a.button { - margin: 18px 0 0; -} - .bp-block-group.has-description .bp-profile-button a.button { display: block; float: left; diff --git a/wp-content/plugins/buddypress/bp-groups/css/blocks/group-rtl.min.css b/wp-content/plugins/buddypress/bp-groups/css/blocks/group-rtl.min.css index acb23b32ffc55fd54c6509c1b399c9448d5cac4b..9d9da502870ee91aeab90712bd3ae7330ba093a6 100644 --- a/wp-content/plugins/buddypress/bp-groups/css/blocks/group-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-groups/css/blocks/group-rtl.min.css @@ -1 +1 @@ -.bp-block-group{position:relative}.bp-block-group .group-content{display:flex}.bp-block-group.has-cover .group-content,.bp-block-group.has-cover .group-description,.bp-block-group.has-cover .item-header-avatar{z-index:2}.bp-block-group .group-description{width:100%}.bp-block-group.has-cover .group-description{padding-top:75px}.bp-block-group.avatar-full .group-description{padding-right:35px}.bp-block-group.has-cover .bp-group-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;right:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1;height:150px}.bp-block-group img.avatar{width:auto;height:auto}.bp-block-group.avatar-none .item-header-avatar{display:none}.bp-block-group.avatar-none.has-cover{min-height:200px}.bp-block-group.avatar-full{min-height:150px}.bp-block-group.avatar-full.has-cover{min-height:300px}.bp-block-group.avatar-full .item-header-avatar{width:180px}.bp-block-group.has-cover.avatar-full .item-header-avatar{width:200px}.bp-block-group.has-cover.avatar-full img.avatar{border:solid 2px #fff;background:rgba(255,255,255,.8);margin-right:20px}.bp-block-group.has-cover .group-content{padding-top:75px}.bp-block-group.avatar-thumb .item-header-avatar img.avatar{margin-top:15px}.bp-block-group.avatar-thumb:not(.has-description) .group-content{min-height:50px;align-items:center}.bp-block-group .group-description-content{width:100%;margin-bottom:18px}.bp-block-group.avatar-thumb .item-header-avatar{width:70px}.bp-block-group.avatar-thumb.has-cover .item-header-avatar{padding-top:75px}.bp-block-group .bp-profile-button{width:100%;overflow:hidden}.bp-block-group .bp-profile-button a.button{margin:18px 0 0}.bp-block-group.has-description .bp-profile-button a.button{display:block;float:left} \ No newline at end of file +[data-type="bp/group"] input.components-placeholder__input{flex:1 1 auto;border-radius:2px;border:1px solid #757575;padding:6px 8px}.bp-block-group{position:relative}.bp-block-group .group-content{display:flex}.bp-block-group .group-description{width:100%}.bp-block-group .group-description-content{width:100%;margin-bottom:18px}.bp-block-group .bp-profile-button{width:100%;overflow:hidden}.bp-block-group .bp-profile-button a.button{margin:18px 0 0}.bp-block-group.has-cover .group-content,.bp-block-group.has-cover .group-description,.bp-block-group.has-cover .item-header-avatar{z-index:2}.bp-block-group.has-cover .group-content{padding-top:75px}.bp-block-group.has-cover .group-description{padding-top:75px}.bp-block-group.has-cover .bp-group-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;right:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1;height:150px}.bp-block-group img.avatar{width:auto;height:auto}.bp-block-group.avatar-none .item-header-avatar{display:none}.bp-block-group.avatar-none.has-cover{min-height:200px}.bp-block-group.avatar-none.has-cover .item-header-avatar{padding-top:75px}.bp-block-group.avatar-full{min-height:150px}.bp-block-group.avatar-full .item-header-avatar{width:180px}.bp-block-group.avatar-full .group-description{padding-right:35px}.bp-block-group.avatar-full.has-cover{min-height:300px}.bp-block-group.avatar-full.has-cover .item-header-avatar{width:200px}.bp-block-group.avatar-full.has-cover img.avatar{border:solid 2px #fff;background:rgba(255,255,255,.8);margin-right:20px}.bp-block-group.avatar-thumb .item-header-avatar{width:70px}.bp-block-group.avatar-thumb .item-header-avatar img.avatar{margin-top:15px}.bp-block-group.avatar-thumb:not(.has-description) .group-content{min-height:50px;align-items:center}.bp-block-group.avatar-thumb.has-cover .item-header-avatar{padding-top:75px}.bp-block-group.has-description .bp-profile-button a.button{display:block;float:left} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/css/blocks/group.css b/wp-content/plugins/buddypress/bp-groups/css/blocks/group.css index 502b70b69803062da40a3a024586b87b7bc3cce4..7714801a1762677216a49318ec27227eee5dd7bf 100644 --- a/wp-content/plugins/buddypress/bp-groups/css/blocks/group.css +++ b/wp-content/plugins/buddypress/bp-groups/css/blocks/group.css @@ -1,4 +1,11 @@ /* CSS for the bp/group block */ +[data-type="bp/group"] input.components-placeholder__input { + flex: 1 1 auto; + border-radius: 2px; + border: 1px solid #757575; + padding: 6px 8px; +} + .bp-block-group { position: relative; } @@ -7,24 +14,38 @@ display: flex; } +.bp-block-group .group-description { + width: 100%; +} + +.bp-block-group .group-description-content { + width: 100%; + margin-bottom: 18px; +} + +.bp-block-group .bp-profile-button { + width: 100%; + overflow: hidden; +} + +.bp-block-group .bp-profile-button a.button { + margin: 18px 0 0; +} + .bp-block-group.has-cover .group-content, .bp-block-group.has-cover .item-header-avatar, .bp-block-group.has-cover .group-description { z-index: 2; } -.bp-block-group .group-description { - width: 100%; +.bp-block-group.has-cover .group-content { + padding-top: 75px; } .bp-block-group.has-cover .group-description { padding-top: 75px; } -.bp-block-group.avatar-full .group-description { - padding-left: 35px; -} - .bp-block-group.has-cover .bp-group-cover-image { background-color: #c5c5c5; background-position: center top; @@ -55,30 +76,38 @@ min-height: 200px; } -.bp-block-group.avatar-full { - min-height: 150px; +.bp-block-group.avatar-none.has-cover .item-header-avatar { + padding-top: 75px; } -.bp-block-group.avatar-full.has-cover { - min-height: 300px; +.bp-block-group.avatar-full { + min-height: 150px; } .bp-block-group.avatar-full .item-header-avatar { width: 180px; } -.bp-block-group.has-cover.avatar-full .item-header-avatar { +.bp-block-group.avatar-full .group-description { + padding-left: 35px; +} + +.bp-block-group.avatar-full.has-cover { + min-height: 300px; +} + +.bp-block-group.avatar-full.has-cover .item-header-avatar { width: 200px; } -.bp-block-group.has-cover.avatar-full img.avatar { +.bp-block-group.avatar-full.has-cover img.avatar { border: solid 2px #fff; background: rgba(255, 255, 255, 0.8); margin-left: 20px; } -.bp-block-group.has-cover .group-content { - padding-top: 75px; +.bp-block-group.avatar-thumb .item-header-avatar { + width: 70px; } .bp-block-group.avatar-thumb .item-header-avatar img.avatar { @@ -90,28 +119,10 @@ align-items: center; } -.bp-block-group .group-description-content { - width: 100%; - margin-bottom: 18px; -} - -.bp-block-group.avatar-thumb .item-header-avatar { - width: 70px; -} - .bp-block-group.avatar-thumb.has-cover .item-header-avatar { padding-top: 75px; } -.bp-block-group .bp-profile-button { - width: 100%; - overflow: hidden; -} - -.bp-block-group .bp-profile-button a.button { - margin: 18px 0 0; -} - .bp-block-group.has-description .bp-profile-button a.button { display: block; float: right; diff --git a/wp-content/plugins/buddypress/bp-groups/css/blocks/group.min.css b/wp-content/plugins/buddypress/bp-groups/css/blocks/group.min.css index b1af75750d9ab61d62af8013e9df2077a02b3b06..9bb55134179778990c8531c015cb3b528ba589c8 100644 --- a/wp-content/plugins/buddypress/bp-groups/css/blocks/group.min.css +++ b/wp-content/plugins/buddypress/bp-groups/css/blocks/group.min.css @@ -1 +1 @@ -.bp-block-group{position:relative}.bp-block-group .group-content{display:flex}.bp-block-group.has-cover .group-content,.bp-block-group.has-cover .group-description,.bp-block-group.has-cover .item-header-avatar{z-index:2}.bp-block-group .group-description{width:100%}.bp-block-group.has-cover .group-description{padding-top:75px}.bp-block-group.avatar-full .group-description{padding-left:35px}.bp-block-group.has-cover .bp-group-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;left:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1;height:150px}.bp-block-group img.avatar{width:auto;height:auto}.bp-block-group.avatar-none .item-header-avatar{display:none}.bp-block-group.avatar-none.has-cover{min-height:200px}.bp-block-group.avatar-full{min-height:150px}.bp-block-group.avatar-full.has-cover{min-height:300px}.bp-block-group.avatar-full .item-header-avatar{width:180px}.bp-block-group.has-cover.avatar-full .item-header-avatar{width:200px}.bp-block-group.has-cover.avatar-full img.avatar{border:solid 2px #fff;background:rgba(255,255,255,.8);margin-left:20px}.bp-block-group.has-cover .group-content{padding-top:75px}.bp-block-group.avatar-thumb .item-header-avatar img.avatar{margin-top:15px}.bp-block-group.avatar-thumb:not(.has-description) .group-content{min-height:50px;align-items:center}.bp-block-group .group-description-content{width:100%;margin-bottom:18px}.bp-block-group.avatar-thumb .item-header-avatar{width:70px}.bp-block-group.avatar-thumb.has-cover .item-header-avatar{padding-top:75px}.bp-block-group .bp-profile-button{width:100%;overflow:hidden}.bp-block-group .bp-profile-button a.button{margin:18px 0 0}.bp-block-group.has-description .bp-profile-button a.button{display:block;float:right} \ No newline at end of file +[data-type="bp/group"] input.components-placeholder__input{flex:1 1 auto;border-radius:2px;border:1px solid #757575;padding:6px 8px}.bp-block-group{position:relative}.bp-block-group .group-content{display:flex}.bp-block-group .group-description{width:100%}.bp-block-group .group-description-content{width:100%;margin-bottom:18px}.bp-block-group .bp-profile-button{width:100%;overflow:hidden}.bp-block-group .bp-profile-button a.button{margin:18px 0 0}.bp-block-group.has-cover .group-content,.bp-block-group.has-cover .group-description,.bp-block-group.has-cover .item-header-avatar{z-index:2}.bp-block-group.has-cover .group-content{padding-top:75px}.bp-block-group.has-cover .group-description{padding-top:75px}.bp-block-group.has-cover .bp-group-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;left:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1;height:150px}.bp-block-group img.avatar{width:auto;height:auto}.bp-block-group.avatar-none .item-header-avatar{display:none}.bp-block-group.avatar-none.has-cover{min-height:200px}.bp-block-group.avatar-none.has-cover .item-header-avatar{padding-top:75px}.bp-block-group.avatar-full{min-height:150px}.bp-block-group.avatar-full .item-header-avatar{width:180px}.bp-block-group.avatar-full .group-description{padding-left:35px}.bp-block-group.avatar-full.has-cover{min-height:300px}.bp-block-group.avatar-full.has-cover .item-header-avatar{width:200px}.bp-block-group.avatar-full.has-cover img.avatar{border:solid 2px #fff;background:rgba(255,255,255,.8);margin-left:20px}.bp-block-group.avatar-thumb .item-header-avatar{width:70px}.bp-block-group.avatar-thumb .item-header-avatar img.avatar{margin-top:15px}.bp-block-group.avatar-thumb:not(.has-description) .group-content{min-height:50px;align-items:center}.bp-block-group.avatar-thumb.has-cover .item-header-avatar{padding-top:75px}.bp-block-group.has-description .bp-profile-button a.button{display:block;float:right} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/css/blocks/groups-rtl.css b/wp-content/plugins/buddypress/bp-groups/css/blocks/groups-rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..8f30e459c549a8c7e01c70fe9b9d05579909f051 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/css/blocks/groups-rtl.css @@ -0,0 +1,177 @@ +/* CSS for the bp/members block */ +[data-type="bp/groups"] .components-placeholder.is-appender { + min-height: 0; +} + +[data-type="bp/groups"] .components-placeholder.is-appender .components-placeholder__label:empty { + display: none; +} + +[data-type="bp/groups"] .components-placeholder input.components-placeholder__input { + flex: 1 1 auto; + border-radius: 2px; + border: 1px solid #757575; + padding: 6px 8px; +} + +[data-type="bp/groups"].avatar-none .group-description { + width: calc(100% - 44px); +} + +[data-type="bp/groups"].avatar-full .group-description { + width: calc(100% - 224px); +} + +[data-type="bp/groups"].avatar-thumb .group-description { + width: calc(100% - 114px); +} + +[data-type="bp/groups"] .group-content { + position: relative; +} + +[data-type="bp/groups"] .group-content .is-right { + position: absolute; + top: 2px; + left: 2px; +} + +[data-type="bp/groups"] .columns-2 .group-content .group-description, +[data-type="bp/groups"] .columns-3 .group-content .group-description, +[data-type="bp/groups"] .columns-4 .group-content .group-description { + padding-right: 44px; + width: calc(100% - 44px); +} + +[data-type="bp/groups"] .columns-3 .is-right { + left: -10px; +} + +[data-type="bp/groups"] .columns-4 .is-right { + left: -50px; +} + +.bp-block-groups.is-grid { + display: flex; + flex-wrap: wrap; + padding: 0; +} + +.bp-block-groups.is-grid .group-content { + margin: 0 0 1.25em 1.25em; + width: 100%; +} + +@media (min-width: 600px) { + .bp-block-groups.columns-2 .group-content { + width: calc((100% / 2) - 1.25em + (1.25em / 2)); + } + .bp-block-groups.columns-2 .group-content:nth-child(2n) { + margin-left: 0; + } + .bp-block-groups.columns-3 .group-content { + width: calc((100% / 3) - 1.25em + (1.25em / 3)); + } + .bp-block-groups.columns-3 .group-content:nth-child(3n) { + margin-left: 0; + } + .bp-block-groups.columns-4 .group-content { + width: calc((100% / 4) - 1.25em + (1.25em / 4)); + } + .bp-block-groups.columns-4 .group-content:nth-child(4n) { + margin-left: 0; + } +} + +.bp-block-groups .group-content { + display: flex; + flex-direction: column; + padding-bottom: 1em; + text-align: center; +} + +.bp-block-groups .group-content .item-header-avatar, +.bp-block-groups .group-content .group-description { + width: 100%; +} + +.bp-block-groups .group-content .item-header-avatar { + margin: 0 auto; +} + +.bp-block-groups .group-content .item-header-avatar img.avatar { + display: inline-block; +} + +@media (min-width: 600px) { + .bp-block-groups .group-content { + flex-direction: row; + text-align: right; + } + .bp-block-groups .group-content .item-header-avatar, + .bp-block-groups .group-content .group-description { + width: auto; + } + .bp-block-groups .group-content .item-header-avatar { + margin: 0; + } +} + +.bp-block-groups .group-content time { + display: block; + font-size: 80%; + color: #767676; +} + +.bp-block-groups.avatar-none .item-header-avatar { + display: none; +} + +.bp-block-groups.avatar-full { + min-height: 190px; +} + +.bp-block-groups.avatar-full .item-header-avatar { + width: 180px; +} + +.bp-block-groups.avatar-thumb .group-content { + min-height: 80px; +} + +.bp-block-groups.avatar-thumb .item-header-avatar { + width: 70px; +} + +.bp-block-groups.columns-2 .group-content, +.bp-block-groups.columns-3 .group-content, +.bp-block-groups.columns-4 .group-content { + display: block; + text-align: center; +} + +.bp-block-groups.columns-2 .group-content .item-header-avatar, +.bp-block-groups.columns-3 .group-content .item-header-avatar, +.bp-block-groups.columns-4 .group-content .item-header-avatar { + margin: 0 auto; +} + +.bp-block-groups img.avatar { + width: auto; + height: auto; + max-width: -webkit-fit-content; + max-width: fit-content; +} + +.bp-block-groups .member-content.has-description { + align-items: center; +} + +.bp-block-groups .member-content.has-description .item-header-avatar { + padding-left: 1em; +} + +.bp-block-groups .member-content.has-description .group-description-content { + margin-bottom: 0; + text-align: right; +} diff --git a/wp-content/plugins/buddypress/bp-groups/css/blocks/groups-rtl.min.css b/wp-content/plugins/buddypress/bp-groups/css/blocks/groups-rtl.min.css new file mode 100644 index 0000000000000000000000000000000000000000..30ffc4faec23f38432b34bb7638fa42f1cc4b0cf --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/css/blocks/groups-rtl.min.css @@ -0,0 +1 @@ +[data-type="bp/groups"] .components-placeholder.is-appender{min-height:0}[data-type="bp/groups"] .components-placeholder.is-appender .components-placeholder__label:empty{display:none}[data-type="bp/groups"] .components-placeholder input.components-placeholder__input{flex:1 1 auto;border-radius:2px;border:1px solid #757575;padding:6px 8px}[data-type="bp/groups"].avatar-none .group-description{width:calc(100% - 44px)}[data-type="bp/groups"].avatar-full .group-description{width:calc(100% - 224px)}[data-type="bp/groups"].avatar-thumb .group-description{width:calc(100% - 114px)}[data-type="bp/groups"] .group-content{position:relative}[data-type="bp/groups"] .group-content .is-right{position:absolute;top:2px;left:2px}[data-type="bp/groups"] .columns-2 .group-content .group-description,[data-type="bp/groups"] .columns-3 .group-content .group-description,[data-type="bp/groups"] .columns-4 .group-content .group-description{padding-right:44px;width:calc(100% - 44px)}[data-type="bp/groups"] .columns-3 .is-right{left:-10px}[data-type="bp/groups"] .columns-4 .is-right{left:-50px}.bp-block-groups.is-grid{display:flex;flex-wrap:wrap;padding:0}.bp-block-groups.is-grid .group-content{margin:0 0 1.25em 1.25em;width:100%}@media (min-width:600px){.bp-block-groups.columns-2 .group-content{width:calc((100% / 2) - 1.25em + (1.25em / 2))}.bp-block-groups.columns-2 .group-content:nth-child(2n){margin-left:0}.bp-block-groups.columns-3 .group-content{width:calc((100% / 3) - 1.25em + (1.25em / 3))}.bp-block-groups.columns-3 .group-content:nth-child(3n){margin-left:0}.bp-block-groups.columns-4 .group-content{width:calc((100% / 4) - 1.25em + (1.25em / 4))}.bp-block-groups.columns-4 .group-content:nth-child(4n){margin-left:0}}.bp-block-groups .group-content{display:flex;flex-direction:column;padding-bottom:1em;text-align:center}.bp-block-groups .group-content .group-description,.bp-block-groups .group-content .item-header-avatar{width:100%}.bp-block-groups .group-content .item-header-avatar{margin:0 auto}.bp-block-groups .group-content .item-header-avatar img.avatar{display:inline-block}@media (min-width:600px){.bp-block-groups .group-content{flex-direction:row;text-align:right}.bp-block-groups .group-content .group-description,.bp-block-groups .group-content .item-header-avatar{width:auto}.bp-block-groups .group-content .item-header-avatar{margin:0}}.bp-block-groups .group-content time{display:block;font-size:80%;color:#767676}.bp-block-groups.avatar-none .item-header-avatar{display:none}.bp-block-groups.avatar-full{min-height:190px}.bp-block-groups.avatar-full .item-header-avatar{width:180px}.bp-block-groups.avatar-thumb .group-content{min-height:80px}.bp-block-groups.avatar-thumb .item-header-avatar{width:70px}.bp-block-groups.columns-2 .group-content,.bp-block-groups.columns-3 .group-content,.bp-block-groups.columns-4 .group-content{display:block;text-align:center}.bp-block-groups.columns-2 .group-content .item-header-avatar,.bp-block-groups.columns-3 .group-content .item-header-avatar,.bp-block-groups.columns-4 .group-content .item-header-avatar{margin:0 auto}.bp-block-groups img.avatar{width:auto;height:auto;max-width:-webkit-fit-content;max-width:fit-content}.bp-block-groups .member-content.has-description{align-items:center}.bp-block-groups .member-content.has-description .item-header-avatar{padding-left:1em}.bp-block-groups .member-content.has-description .group-description-content{margin-bottom:0;text-align:right} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/css/blocks/groups.css b/wp-content/plugins/buddypress/bp-groups/css/blocks/groups.css new file mode 100644 index 0000000000000000000000000000000000000000..7e37d0015f946dd5b24b4693a45fb2ac3f6d04e9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/css/blocks/groups.css @@ -0,0 +1,177 @@ +/* CSS for the bp/members block */ +[data-type="bp/groups"] .components-placeholder.is-appender { + min-height: 0; +} + +[data-type="bp/groups"] .components-placeholder.is-appender .components-placeholder__label:empty { + display: none; +} + +[data-type="bp/groups"] .components-placeholder input.components-placeholder__input { + flex: 1 1 auto; + border-radius: 2px; + border: 1px solid #757575; + padding: 6px 8px; +} + +[data-type="bp/groups"].avatar-none .group-description { + width: calc(100% - 44px); +} + +[data-type="bp/groups"].avatar-full .group-description { + width: calc(100% - 224px); +} + +[data-type="bp/groups"].avatar-thumb .group-description { + width: calc(100% - 114px); +} + +[data-type="bp/groups"] .group-content { + position: relative; +} + +[data-type="bp/groups"] .group-content .is-right { + position: absolute; + top: 2px; + right: 2px; +} + +[data-type="bp/groups"] .columns-2 .group-content .group-description, +[data-type="bp/groups"] .columns-3 .group-content .group-description, +[data-type="bp/groups"] .columns-4 .group-content .group-description { + padding-left: 44px; + width: calc(100% - 44px); +} + +[data-type="bp/groups"] .columns-3 .is-right { + right: -10px; +} + +[data-type="bp/groups"] .columns-4 .is-right { + right: -50px; +} + +.bp-block-groups.is-grid { + display: flex; + flex-wrap: wrap; + padding: 0; +} + +.bp-block-groups.is-grid .group-content { + margin: 0 1.25em 1.25em 0; + width: 100%; +} + +@media (min-width: 600px) { + .bp-block-groups.columns-2 .group-content { + width: calc((100% / 2) - 1.25em + (1.25em / 2)); + } + .bp-block-groups.columns-2 .group-content:nth-child(2n) { + margin-right: 0; + } + .bp-block-groups.columns-3 .group-content { + width: calc((100% / 3) - 1.25em + (1.25em / 3)); + } + .bp-block-groups.columns-3 .group-content:nth-child(3n) { + margin-right: 0; + } + .bp-block-groups.columns-4 .group-content { + width: calc((100% / 4) - 1.25em + (1.25em / 4)); + } + .bp-block-groups.columns-4 .group-content:nth-child(4n) { + margin-right: 0; + } +} + +.bp-block-groups .group-content { + display: flex; + flex-direction: column; + padding-bottom: 1em; + text-align: center; +} + +.bp-block-groups .group-content .item-header-avatar, +.bp-block-groups .group-content .group-description { + width: 100%; +} + +.bp-block-groups .group-content .item-header-avatar { + margin: 0 auto; +} + +.bp-block-groups .group-content .item-header-avatar img.avatar { + display: inline-block; +} + +@media (min-width: 600px) { + .bp-block-groups .group-content { + flex-direction: row; + text-align: left; + } + .bp-block-groups .group-content .item-header-avatar, + .bp-block-groups .group-content .group-description { + width: auto; + } + .bp-block-groups .group-content .item-header-avatar { + margin: 0; + } +} + +.bp-block-groups .group-content time { + display: block; + font-size: 80%; + color: #767676; +} + +.bp-block-groups.avatar-none .item-header-avatar { + display: none; +} + +.bp-block-groups.avatar-full { + min-height: 190px; +} + +.bp-block-groups.avatar-full .item-header-avatar { + width: 180px; +} + +.bp-block-groups.avatar-thumb .group-content { + min-height: 80px; +} + +.bp-block-groups.avatar-thumb .item-header-avatar { + width: 70px; +} + +.bp-block-groups.columns-2 .group-content, +.bp-block-groups.columns-3 .group-content, +.bp-block-groups.columns-4 .group-content { + display: block; + text-align: center; +} + +.bp-block-groups.columns-2 .group-content .item-header-avatar, +.bp-block-groups.columns-3 .group-content .item-header-avatar, +.bp-block-groups.columns-4 .group-content .item-header-avatar { + margin: 0 auto; +} + +.bp-block-groups img.avatar { + width: auto; + height: auto; + max-width: -webkit-fit-content; + max-width: fit-content; +} + +.bp-block-groups .member-content.has-description { + align-items: center; +} + +.bp-block-groups .member-content.has-description .item-header-avatar { + padding-right: 1em; +} + +.bp-block-groups .member-content.has-description .group-description-content { + margin-bottom: 0; + text-align: left; +} diff --git a/wp-content/plugins/buddypress/bp-groups/css/blocks/groups.min.css b/wp-content/plugins/buddypress/bp-groups/css/blocks/groups.min.css new file mode 100644 index 0000000000000000000000000000000000000000..052a441b1c60398717a2631f03f83777324d7a1b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/css/blocks/groups.min.css @@ -0,0 +1 @@ +[data-type="bp/groups"] .components-placeholder.is-appender{min-height:0}[data-type="bp/groups"] .components-placeholder.is-appender .components-placeholder__label:empty{display:none}[data-type="bp/groups"] .components-placeholder input.components-placeholder__input{flex:1 1 auto;border-radius:2px;border:1px solid #757575;padding:6px 8px}[data-type="bp/groups"].avatar-none .group-description{width:calc(100% - 44px)}[data-type="bp/groups"].avatar-full .group-description{width:calc(100% - 224px)}[data-type="bp/groups"].avatar-thumb .group-description{width:calc(100% - 114px)}[data-type="bp/groups"] .group-content{position:relative}[data-type="bp/groups"] .group-content .is-right{position:absolute;top:2px;right:2px}[data-type="bp/groups"] .columns-2 .group-content .group-description,[data-type="bp/groups"] .columns-3 .group-content .group-description,[data-type="bp/groups"] .columns-4 .group-content .group-description{padding-left:44px;width:calc(100% - 44px)}[data-type="bp/groups"] .columns-3 .is-right{right:-10px}[data-type="bp/groups"] .columns-4 .is-right{right:-50px}.bp-block-groups.is-grid{display:flex;flex-wrap:wrap;padding:0}.bp-block-groups.is-grid .group-content{margin:0 1.25em 1.25em 0;width:100%}@media (min-width:600px){.bp-block-groups.columns-2 .group-content{width:calc((100% / 2) - 1.25em + (1.25em / 2))}.bp-block-groups.columns-2 .group-content:nth-child(2n){margin-right:0}.bp-block-groups.columns-3 .group-content{width:calc((100% / 3) - 1.25em + (1.25em / 3))}.bp-block-groups.columns-3 .group-content:nth-child(3n){margin-right:0}.bp-block-groups.columns-4 .group-content{width:calc((100% / 4) - 1.25em + (1.25em / 4))}.bp-block-groups.columns-4 .group-content:nth-child(4n){margin-right:0}}.bp-block-groups .group-content{display:flex;flex-direction:column;padding-bottom:1em;text-align:center}.bp-block-groups .group-content .group-description,.bp-block-groups .group-content .item-header-avatar{width:100%}.bp-block-groups .group-content .item-header-avatar{margin:0 auto}.bp-block-groups .group-content .item-header-avatar img.avatar{display:inline-block}@media (min-width:600px){.bp-block-groups .group-content{flex-direction:row;text-align:left}.bp-block-groups .group-content .group-description,.bp-block-groups .group-content .item-header-avatar{width:auto}.bp-block-groups .group-content .item-header-avatar{margin:0}}.bp-block-groups .group-content time{display:block;font-size:80%;color:#767676}.bp-block-groups.avatar-none .item-header-avatar{display:none}.bp-block-groups.avatar-full{min-height:190px}.bp-block-groups.avatar-full .item-header-avatar{width:180px}.bp-block-groups.avatar-thumb .group-content{min-height:80px}.bp-block-groups.avatar-thumb .item-header-avatar{width:70px}.bp-block-groups.columns-2 .group-content,.bp-block-groups.columns-3 .group-content,.bp-block-groups.columns-4 .group-content{display:block;text-align:center}.bp-block-groups.columns-2 .group-content .item-header-avatar,.bp-block-groups.columns-3 .group-content .item-header-avatar,.bp-block-groups.columns-4 .group-content .item-header-avatar{margin:0 auto}.bp-block-groups img.avatar{width:auto;height:auto;max-width:-webkit-fit-content;max-width:fit-content}.bp-block-groups .member-content.has-description{align-items:center}.bp-block-groups .member-content.has-description .item-header-avatar{padding-right:1em}.bp-block-groups .member-content.has-description .group-description-content{margin-bottom:0;text-align:left} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/js/blocks/group.js b/wp-content/plugins/buddypress/bp-groups/js/blocks/group.js index b00b912f34d4ad8194ce770794057ac8fff26a2b..c20926473c2d98721d0bedbc4f344ade5686dcf5 100644 --- a/wp-content/plugins/buddypress/bp-groups/js/blocks/group.js +++ b/wp-content/plugins/buddypress/bp-groups/js/blocks/group.js @@ -1,4 +1,8 @@ -parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"pvse":[function(require,module,exports) { -var e=wp.blocks.registerBlockType,t=wp.element,o=t.createElement,r=t.Fragment,s=wp.components,n=s.Placeholder,l=s.Disabled,a=s.PanelBody,p=s.SelectControl,i=s.ToggleControl,u=s.Toolbar,d=s.ToolbarButton,b=wp.blockEditor,c=b.InspectorControls,g=b.BlockControls,y=wp.data.withSelect,h=wp.compose.compose,m=wp.editor.ServerSideRender,v=wp.i18n.__,f=bp.blockComponents.AutoCompleter,C=[{label:v("None","buddypress"),value:"none"},{label:v("Thumb","buddypress"),value:"thumb"},{label:v("Full","buddypress"),value:"full"}],S=function(e){var t=e.attributes,s=e.setAttributes,b=e.bpSettings,y=b.isAvatarEnabled,h=b.isCoverImageEnabled,S=t.avatarSize,I=t.displayDescription,k=t.displayActionButton,w=t.displayCoverImage;return t.itemID?o(r,null,o(g,null,o(u,null,o(d,{icon:"edit",title:v("Select another group","buddypress"),onClick:function(){s({itemID:0})}}))),o(c,null,o(a,{title:v("Settings","buddypress"),initialOpen:!0},o(i,{label:v("Display Group's home button","buddypress"),checked:!!k,onChange:function(){s({displayActionButton:!k})},help:v(k?"Include a link to the group's home page under their name.":"Toggle to display a link to the group's home page under their name.","buddypress")}),o(i,{label:v("Display group's description","buddypress"),checked:!!I,onChange:function(){s({displayDescription:!I})},help:v(I?"Include the group's description under their name.":"Toggle to display the group's description under their name.","buddypress")}),y&&o(p,{label:v("Avatar size","buddypress"),value:S,options:C,help:v('Select "None" to disable the avatar.',"buddypress"),onChange:function(e){s({avatarSize:e})}}),h&&o(i,{label:v("Display Cover Image","buddypress"),checked:!!w,onChange:function(){s({displayCoverImage:!w})},help:v(w?"Include the group's cover image over their name.":"Toggle to display the group's cover image over their name.","buddypress")}))),o(l,null,o(m,{block:"bp/group",attributes:t}))):o(n,{icon:"buddicons-groups",label:v("BuddyPress Group","buddypress"),instructions:v("Start typing the name of the group you want to feature into this post.","buddypress")},o(f,{component:"groups",objectStatus:"public",ariaLabel:v("Group's name","buddypress"),placeholder:v("Enter Group's name here…","buddypress"),onSelectItem:s,useAvatar:y}))},I=h([y(function(e){return{bpSettings:e("core/editor").getEditorSettings().bp.groups||{}}})])(S);e("bp/group",{title:v("Group","buddypress"),description:v("BuddyPress Group.","buddypress"),icon:"buddicons-groups",category:"buddypress",attributes:{itemID:{type:"integer",default:0},avatarSize:{type:"string",default:"full"},displayDescription:{type:"boolean",default:!0},displayActionButton:{type:"boolean",default:!0},displayCoverImage:{type:"boolean",default:!0}},edit:I}); -},{}]},{},["pvse"], null) +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"atl5":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.GROUP_STATI=exports.AVATAR_SIZES=void 0;var e=wp,s=e.i18n.__,d=[{label:s("None","buddypress"),value:"none"},{label:s("Thumb","buddypress"),value:"thumb"},{label:s("Full","buddypress"),value:"full"}];exports.AVATAR_SIZES=d;var r={public:s("Public","buddypress"),private:s("Private","buddypress"),hidden:s("Hidden","buddypress")};exports.GROUP_STATI=r; +},{}],"cCC3":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("./constants"),t=wp,o=t.blockEditor,r=o.InspectorControls,n=o.BlockControls,s=t.components,a=s.Placeholder,i=s.Disabled,l=s.PanelBody,u=s.SelectControl,d=s.ToggleControl,p=s.Toolbar,c=s.ToolbarButton,g=t.compose.compose,b=t.data.withSelect,h=t.editor.ServerSideRender,y=t.element,m=y.Fragment,v=y.createElement,S=t.i18n.__,C=bp.blockComponents.AutoCompleter,I=function(t){return t&&t.status&&e.GROUP_STATI[t.status]?e.GROUP_STATI[t.status]:null},f=function(t){var o=t.attributes,s=t.setAttributes,g=t.bpSettings,b=g.isAvatarEnabled,y=g.isCoverImageEnabled,f=o.avatarSize,A=o.displayDescription,T=o.displayActionButton,k=o.displayCoverImage;return o.itemID?v(m,null,v(n,null,v(p,null,v(c,{icon:"edit",title:S("Select another group","buddypress"),onClick:function(){s({itemID:0})}}))),v(r,null,v(l,{title:S("Settings","buddypress"),initialOpen:!0},v(d,{label:S("Display Group's home button","buddypress"),checked:!!T,onChange:function(){s({displayActionButton:!T})},help:S(T?"Include a link to the group's home page under their name.":"Toggle to display a link to the group's home page under their name.","buddypress")}),v(d,{label:S("Display group's description","buddypress"),checked:!!A,onChange:function(){s({displayDescription:!A})},help:S(A?"Include the group's description under their name.":"Toggle to display the group's description under their name.","buddypress")}),b&&v(u,{label:S("Avatar size","buddypress"),value:f,options:e.AVATAR_SIZES,help:S('Select "None" to disable the avatar.',"buddypress"),onChange:function(e){s({avatarSize:e})}}),y&&v(d,{label:S("Display Cover Image","buddypress"),checked:!!k,onChange:function(){s({displayCoverImage:!k})},help:S(k?"Include the group's cover image over their name.":"Toggle to display the group's cover image over their name.","buddypress")}))),v(i,null,v(h,{block:"bp/group",attributes:o}))):v(a,{icon:"buddicons-groups",label:S("BuddyPress Group","buddypress"),instructions:S("Start typing the name of the group you want to feature into this post.","buddypress")},v(C,{component:"groups",objectQueryArgs:{show_hidden:!1},slugValue:I,ariaLabel:S("Group's name","buddypress"),placeholder:S("Enter Group's name here…","buddypress"),onSelectItem:s,useAvatar:b}))},A=g([b(function(e){return{bpSettings:e("core/editor").getEditorSettings().bp.groups||{}}})])(f),T=A;exports.default=T; +},{"./constants":"atl5"}],"pvse":[function(require,module,exports) { +"use strict";var e=t(require("./group/edit"));function t(e){return e&&e.__esModule?e:{default:e}}var r=wp,u=r.blocks.registerBlockType,d=r.i18n.__;u("bp/group",{title:d("Group","buddypress"),description:d("BuddyPress Group.","buddypress"),icon:"buddicons-groups",category:"buddypress",attributes:{itemID:{type:"integer",default:0},avatarSize:{type:"string",default:"full"},displayDescription:{type:"boolean",default:!0},displayActionButton:{type:"boolean",default:!0},displayCoverImage:{type:"boolean",default:!0}},edit:e.default}); +},{"./group/edit":"cCC3"}]},{},["pvse"], null) //# sourceMappingURL=/bp-groups/js/blocks/group.js.map \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/js/blocks/group.js.map b/wp-content/plugins/buddypress/bp-groups/js/blocks/group.js.map index 6947fc2575b6bb8bb55b2e22a38d8bb719190a6e..c075070cd67291616fa0e61bbb22e0f83b7eec6f 100644 --- a/wp-content/plugins/buddypress/bp-groups/js/blocks/group.js.map +++ b/wp-content/plugins/buddypress/bp-groups/js/blocks/group.js.map @@ -1 +1 @@ -{"version":3,"sources":["bp-groups/js/blocks/group.js"],"names":["registerBlockType","wp","blocks","element","createElement","Fragment","components","Placeholder","Disabled","PanelBody","SelectControl","ToggleControl","Toolbar","ToolbarButton","blockEditor","InspectorControls","BlockControls","withSelect","data","compose","ServerSideRender","editor","__","i18n","AutoCompleter","bp","blockComponents","AVATAR_SIZES","label","value","editGroup","attributes","setAttributes","bpSettings","isAvatarEnabled","isCoverImageEnabled","avatarSize","displayDescription","displayActionButton","displayCoverImage","itemID","option","editGroupBlock","select","getEditorSettings","groups","title","description","icon","category","type","default","edit"],"mappings":";AAGQA,IAAAA,EAAsBC,GAAGC,OAAzBF,kBAC4BC,EAAAA,GAAGE,QAA/BC,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,SAC4EJ,EAAAA,GAAGK,WAA9FC,EAAAA,EAAAA,YAAaC,EAAAA,EAAAA,SAAUC,EAAAA,EAAAA,UAAWC,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,QAASC,EAAAA,EAAAA,cACpCZ,EAAAA,GAAGa,YAAxCC,EAAAA,EAAAA,kBAAmBC,EAAAA,EAAAA,cACnBC,EAAehB,GAAGiB,KAAlBD,WACAE,EAAYlB,GAAGkB,QAAfA,QACAC,EAAqBnB,GAAGoB,OAAxBD,iBACAE,EAAOrB,GAAGsB,KAAVD,GAKAE,EAAkBC,GAAGC,gBAArBF,cAEFG,EAAe,CACpB,CACCC,MAAON,EAAI,OAAQ,cACnBO,MAAO,QAER,CACCD,MAAON,EAAI,QAAS,cACpBO,MAAO,SAER,CACCD,MAAON,EAAI,OAAQ,cACnBO,MAAO,SAIHC,EAAY,SAAiD,GAA7CC,IAAAA,EAAAA,EAAAA,WAAYC,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,WACxCC,EAAyCD,EAAzCC,gBAAiBC,EAAwBF,EAAxBE,oBACjBC,EAA2EL,EAA3EK,WAAYC,EAA+DN,EAA/DM,mBAAoBC,EAA2CP,EAA3CO,oBAAqBC,EAAsBR,EAAtBQ,kBAExD,OAAER,EAAWS,OAoBjB,EAAC,EACA,KAAA,EAAC,EACA,KAAA,EAAC,EACA,KAAA,EAAC,EAAD,CACC,KAAK,OACL,MAAQlB,EAAI,uBAAwB,cACpC,QAAU,WACTU,EAAe,CAAEQ,OAAQ,SAK7B,EAAC,EACA,KAAA,EAAC,EAAD,CAAW,MAAQlB,EAAI,WAAY,cAAiB,aAAc,GACjE,EAAC,EAAD,CACC,MAAQA,EAAI,8BAAgC,cAC5C,UAAagB,EACb,SAAW,WACVN,EAAe,CAAEM,qBAAuBA,KAEzC,KAEIhB,EADHgB,EACO,4DACA,sEAD8D,gBAKvE,EAAC,EAAD,CACC,MAAQhB,EAAI,8BAAgC,cAC5C,UAAae,EACb,SAAW,WACVL,EAAe,CAAEK,oBAAsBA,KAExC,KAEIf,EADHe,EACO,oDACA,8DADsD,gBAK7DH,GACD,EAAC,EAAD,CACC,MAAQZ,EAAI,cAAe,cAC3B,MAAQc,EACR,QAAUT,EACV,KAAOL,EAAI,uCAAwC,cACnD,SAAW,SAAEmB,GACZT,EAAe,CAAEI,WAAYK,OAK9BN,GACD,EAAC,EAAD,CACC,MAAQb,EAAI,sBAAuB,cACnC,UAAaiB,EACb,SAAW,WACVP,EAAe,CAAEO,mBAAqBA,KAEvC,KAEIjB,EADHiB,EACO,mDACA,6DADqD,kBAOjE,EAAC,EACA,KAAA,EAAC,EAAD,CAAkB,MAAM,WAAW,WAAaR,MAvFjD,EAAC,EAAD,CACC,KAAK,mBACL,MAAQT,EAAI,mBAAoB,cAChC,aAAeA,EAAI,yEAA0E,eAE7F,EAAC,EAAD,CACC,UAAU,SACV,aAAa,SACb,UAAYA,EAAI,eAAiB,cACjC,YAAcA,EAAI,2BAA6B,cAC/C,aAAeU,EACf,UAAYE,MAkFXQ,EAAiBvB,EAAS,CAC/BF,EAAY,SAAE0B,GAEN,MAAA,CACNV,WAFsBU,EAAQ,eAAgBC,oBAEnBnB,GAAGoB,QAAU,OAJpB1B,CAOlBW,GAEL9B,EAAmB,WAAY,CAC9B8C,MAAOxB,EAAI,QAAS,cAEpByB,YAAazB,EAAI,oBAAqB,cAEtC0B,KAAM,mBAENC,SAAU,aAEVlB,WAAY,CACXS,OAAQ,CACPU,KAAM,UACNC,QAAS,GAEVf,WAAY,CACXc,KAAM,SACNC,QAAS,QAEVd,mBAAoB,CACnBa,KAAM,UACNC,SAAS,GAEVb,oBAAqB,CACpBY,KAAM,UACNC,SAAS,GAEVZ,kBAAmB,CAClBW,KAAM,UACNC,SAAS,IAIXC,KAAMV","file":"group.js","sourceRoot":"../src/js","sourcesContent":["/**\n * WordPress dependencies.\n */\nconst { registerBlockType } = wp.blocks;\nconst { createElement, Fragment } = wp.element;\nconst { Placeholder, Disabled, PanelBody, SelectControl, ToggleControl, Toolbar, ToolbarButton } = wp.components;\nconst { InspectorControls, BlockControls } = wp.blockEditor;\nconst { withSelect } = wp.data;\nconst { compose } = wp.compose;\nconst { ServerSideRender } = wp.editor;\nconst { __ } = wp.i18n;\n\n/**\n * BuddyPress dependencies.\n */\nconst { AutoCompleter } = bp.blockComponents;\n\nconst AVATAR_SIZES = [\n\t{\n\t\tlabel: __( 'None', 'buddypress' ),\n\t\tvalue: 'none',\n\t},\n\t{\n\t\tlabel: __( 'Thumb', 'buddypress' ),\n\t\tvalue: 'thumb',\n\t},\n\t{\n\t\tlabel: __( 'Full', 'buddypress' ),\n\t\tvalue: 'full',\n\t},\n];\n\nconst editGroup = ( { attributes, setAttributes, bpSettings } ) => {\n\tconst { isAvatarEnabled, isCoverImageEnabled } = bpSettings;\n\tconst { avatarSize, displayDescription, displayActionButton, displayCoverImage } = attributes;\n\n\tif ( ! attributes.itemID ) {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\ticon=\"buddicons-groups\"\n\t\t\t\tlabel={ __( 'BuddyPress Group', 'buddypress' ) }\n\t\t\t\tinstructions={ __( 'Start typing the name of the group you want to feature into this post.', 'buddypress' ) }\n\t\t\t>\n\t\t\t\t<AutoCompleter\n\t\t\t\t\tcomponent=\"groups\"\n\t\t\t\t\tobjectStatus=\"public\"\n\t\t\t\t\tariaLabel={ __( 'Group\\'s name', 'buddypress' ) }\n\t\t\t\t\tplaceholder={ __( 'Enter Group\\'s name here…', 'buddypress' ) }\n\t\t\t\t\tonSelectItem={ setAttributes }\n\t\t\t\t\tuseAvatar={ isAvatarEnabled }\n\t\t\t\t/>\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<BlockControls>\n\t\t\t\t<Toolbar>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon=\"edit\"\n\t\t\t\t\t\ttitle={ __( 'Select another group', 'buddypress' ) }\n\t\t\t\t\t\tonClick={ () =>{\n\t\t\t\t\t\t\tsetAttributes( { itemID: 0 } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</Toolbar>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings', 'buddypress' ) } initialOpen={ true }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display Group\\'s home button', 'buddypress' ) }\n\t\t\t\t\t\tchecked={ !! displayActionButton }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tsetAttributes( { displayActionButton: ! displayActionButton } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\tdisplayActionButton\n\t\t\t\t\t\t\t\t? __( 'Include a link to the group\\'s home page under their name.', 'buddypress' )\n\t\t\t\t\t\t\t\t: __( 'Toggle to display a link to the group\\'s home page under their name.', 'buddypress' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display group\\'s description', 'buddypress' ) }\n\t\t\t\t\t\tchecked={ !! displayDescription }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tsetAttributes( { displayDescription: ! displayDescription } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\tdisplayDescription\n\t\t\t\t\t\t\t\t? __( 'Include the group\\'s description under their name.', 'buddypress' )\n\t\t\t\t\t\t\t\t: __( 'Toggle to display the group\\'s description under their name.', 'buddypress' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ isAvatarEnabled && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Avatar size', 'buddypress' ) }\n\t\t\t\t\t\t\tvalue={ avatarSize }\n\t\t\t\t\t\t\toptions={ AVATAR_SIZES }\n\t\t\t\t\t\t\thelp={ __( 'Select \"None\" to disable the avatar.', 'buddypress' ) }\n\t\t\t\t\t\t\tonChange={ ( option ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { avatarSize: option } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ isCoverImageEnabled && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Display Cover Image', 'buddypress' ) }\n\t\t\t\t\t\t\tchecked={ !! displayCoverImage }\n\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( { displayCoverImage: ! displayCoverImage } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\tdisplayCoverImage\n\t\t\t\t\t\t\t\t\t? __( 'Include the group\\'s cover image over their name.', 'buddypress' )\n\t\t\t\t\t\t\t\t\t: __( 'Toggle to display the group\\'s cover image over their name.', 'buddypress' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<Disabled>\n\t\t\t\t<ServerSideRender block=\"bp/group\" attributes={ attributes } />\n\t\t\t</Disabled>\n\t\t</Fragment>\n\t);\n};\n\nconst editGroupBlock = compose( [\n\twithSelect( ( select ) => {\n\t\tconst editorSettings = select( 'core/editor' ).getEditorSettings();\n\t\treturn {\n\t\t\tbpSettings: editorSettings.bp.groups || {},\n\t\t};\n\t} ),\n] )( editGroup );\n\nregisterBlockType( 'bp/group', {\n\ttitle: __( 'Group', 'buddypress' ),\n\n\tdescription: __( 'BuddyPress Group.', 'buddypress' ),\n\n\ticon: 'buddicons-groups',\n\n\tcategory: 'buddypress',\n\n\tattributes: {\n\t\titemID: {\n\t\t\ttype: 'integer',\n\t\t\tdefault: 0,\n\t\t},\n\t\tavatarSize: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'full',\n\t\t},\n\t\tdisplayDescription: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tdisplayActionButton: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tdisplayCoverImage: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tedit: editGroupBlock,\n} );\n"]} \ No newline at end of file +{"version":3,"sources":["bp-groups/js/blocks/group/constants.js","bp-groups/js/blocks/group/edit.js","bp-groups/js/blocks/group.js"],"names":["wp","__","i18n","AVATAR_SIZES","label","value","GROUP_STATI","public","private","hidden","editGroupBlock","blockEditor","InspectorControls","BlockControls","components","Placeholder","Disabled","PanelBody","SelectControl","ToggleControl","Toolbar","ToolbarButton","compose","withSelect","data","ServerSideRender","editor","element","Fragment","createElement","AutoCompleter","bp","blockComponents","getSlugValue","item","status","editGroup","attributes","setAttributes","bpSettings","isAvatarEnabled","isCoverImageEnabled","avatarSize","displayDescription","displayActionButton","displayCoverImage","itemID","option","select","getEditorSettings","groups","registerBlockType","blocks","title","description","icon","category","type","default","edit"],"mappings":";AAkCO,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,YAAA,QAAA,kBAAA,EA3BHA,IAAAA,EAAAA,GAFFC,EADDC,EAAAA,KACCD,GASWE,EAAe,CAC3B,CACCC,MAAOH,EAAI,OAAQ,cACnBI,MAAO,QAER,CACCD,MAAOH,EAAI,QAAS,cACpBI,MAAO,SAER,CACCD,MAAOH,EAAI,OAAQ,cACnBI,MAAO,SASF,QAAA,aAAA,EAAA,IAAMC,EAAc,CAC1BC,OAAQN,EAAI,SAAU,cACtBO,QAASP,EAAI,UAAW,cACxBQ,OAAQR,EAAI,SAAU,eAHhB,QAAA,YAAA;;ACgIQS,aAAAA,OAAAA,eAAAA,QAAAA,aAAAA,CAAAA,OAAAA,IAAAA,QAAAA,aAAAA,EAvHf,IAAA,EAAA,QAAA,eAVIV,EAAAA,GA7BHW,EAAAA,EAAAA,YACCC,EAAAA,EAAAA,kBACAC,EAAAA,EAAAA,cAEDC,EAAAA,EAAAA,WACCC,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,cAGAC,EADDA,EAAAA,QACCA,QAGAC,EADDC,EAAAA,KACCD,WAGAE,EADDC,EAAAA,OACCD,iBAEDE,EAAAA,EAAAA,QACCC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,cAGA5B,EADDC,EAAAA,KACCD,GAOM6B,EAAkBC,GAAGC,gBAArBF,cAOFG,EAAe,SAAEC,GACjBA,OAAAA,GAAQA,EAAKC,QAAU7B,EAAa4B,YAAAA,EAAKC,QACtC7B,EAAa4B,YAAAA,EAAKC,QAGnB,MAGFC,EAAY,SAAiD,GAA7CC,IAAAA,EAAAA,EAAAA,WAAYC,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,WACxCC,EAAyCD,EAAzCC,gBAAiBC,EAAwBF,EAAxBE,oBACjBC,EAA2EL,EAA3EK,WAAYC,EAA+DN,EAA/DM,mBAAoBC,EAA2CP,EAA3CO,oBAAqBC,EAAsBR,EAAtBQ,kBAExD,OAAER,EAAWS,OAqBjB,EAAC,EACA,KAAA,EAAC,EACA,KAAA,EAAC,EACA,KAAA,EAAC,EAAD,CACC,KAAK,OACL,MAAQ7C,EAAI,uBAAwB,cACpC,QAAU,WACTqC,EAAe,CAAEQ,OAAQ,SAK7B,EAAC,EACA,KAAA,EAAC,EAAD,CAAW,MAAQ7C,EAAI,WAAY,cAAiB,aAAc,GACjE,EAAC,EAAD,CACC,MAAQA,EAAI,8BAAgC,cAC5C,UAAa2C,EACb,SAAW,WACVN,EAAe,CAAEM,qBAAuBA,KAEzC,KAEI3C,EADH2C,EACO,4DACA,sEAD8D,gBAKvE,EAAC,EAAD,CACC,MAAQ3C,EAAI,8BAAgC,cAC5C,UAAa0C,EACb,SAAW,WACVL,EAAe,CAAEK,oBAAsBA,KAExC,KAEI1C,EADH0C,EACO,oDACA,8DADsD,gBAK7DH,GACD,EAAC,EAAD,CACC,MAAQvC,EAAI,cAAe,cAC3B,MAAQyC,EACR,QAAUvC,EAHX,aAIC,KAAOF,EAAI,uCAAwC,cACnD,SAAW,SAAE8C,GACZT,EAAe,CAAEI,WAAYK,OAK9BN,GACD,EAAC,EAAD,CACC,MAAQxC,EAAI,sBAAuB,cACnC,UAAa4C,EACb,SAAW,WACVP,EAAe,CAAEO,mBAAqBA,KAEvC,KAEI5C,EADH4C,EACO,mDACA,6DADqD,kBAOjE,EAAC,EACA,KAAA,EAAC,EAAD,CAAkB,MAAM,WAAW,WAAaR,MAxFjD,EAAC,EAAD,CACC,KAAK,mBACL,MAAQpC,EAAI,mBAAoB,cAChC,aAAeA,EAAI,yEAA0E,eAE7F,EAAC,EAAD,CACC,UAAU,SACV,gBAAkB,CAAiB,aAAA,GACnC,UAAYgC,EACZ,UAAYhC,EAAI,eAAiB,cACjC,YAAcA,EAAI,2BAA6B,cAC/C,aAAeqC,EACf,UAAYE,MAkFX9B,EAAiBY,EAAS,CAC/BC,EAAY,SAAEyB,GAEN,MAAA,CACNT,WAFsBS,EAAQ,eAAgBC,oBAEnBlB,GAAGmB,QAAU,OAJpB5B,CAOlBc,GAEU1B,EAAAA,EAAAA,QAAAA,QAAAA;;ACjJf,aAFA,IAAA,EAAA,EAAA,QAAA,iBAEA,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GAPIV,IAAAA,EAAAA,GALFmD,EADDC,EAAAA,OACCD,kBAGAlD,EADDC,EAAAA,KACCD,GASFkD,EAAmB,WAAY,CAC9BE,MAAOpD,EAAI,QAAS,cACpBqD,YAAarD,EAAI,oBAAqB,cACtCsD,KAAM,mBACNC,SAAU,aACVnB,WAAY,CACXS,OAAQ,CACPW,KAAM,UACNC,QAAS,GAEVhB,WAAY,CACXe,KAAM,SACNC,QAAS,QAEVf,mBAAoB,CACnBc,KAAM,UACNC,SAAS,GAEVd,oBAAqB,CACpBa,KAAM,UACNC,SAAS,GAEVb,kBAAmB,CAClBY,KAAM,UACNC,SAAS,IAGXC,KAAMjD,EAAAA","file":"group.js","sourceRoot":"../src/js","sourcesContent":["/**\n * WordPress dependencies.\n */\nconst {\n\ti18n: {\n\t\t__,\n\t},\n} = wp;\n\n/**\n * Avatar sizes.\n *\n * @type {Array}\n */\nexport const AVATAR_SIZES = [\n\t{\n\t\tlabel: __( 'None', 'buddypress' ),\n\t\tvalue: 'none',\n\t},\n\t{\n\t\tlabel: __( 'Thumb', 'buddypress' ),\n\t\tvalue: 'thumb',\n\t},\n\t{\n\t\tlabel: __( 'Full', 'buddypress' ),\n\t\tvalue: 'full',\n\t},\n];\n\n/**\n * Group stati.\n *\n * @type {Object}\n */\nexport const GROUP_STATI = {\n\tpublic: __( 'Public', 'buddypress' ),\n\tprivate: __( 'Private', 'buddypress' ),\n\thidden: __( 'Hidden', 'buddypress' ),\n};\n","/**\n * WordPress dependencies.\n */\nconst {\n\tblockEditor: {\n\t\tInspectorControls,\n\t\tBlockControls,\n\t},\n\tcomponents: {\n\t\tPlaceholder,\n\t\tDisabled,\n\t\tPanelBody,\n\t\tSelectControl,\n\t\tToggleControl,\n\t\tToolbar,\n\t\tToolbarButton,\n\t},\n\tcompose: {\n\t\tcompose,\n\t},\n\tdata: {\n\t\twithSelect,\n\t},\n\teditor: {\n\t\tServerSideRender,\n\t},\n\telement: {\n\t\tFragment,\n\t\tcreateElement,\n\t},\n\ti18n: {\n\t\t__,\n\t},\n} = wp;\n\n/**\n * BuddyPress dependencies.\n */\nconst { AutoCompleter } = bp.blockComponents;\n\n/**\n * Internal dependencies.\n */\nimport { AVATAR_SIZES, GROUP_STATI } from './constants';\n\nconst getSlugValue = ( item ) => {\n\tif ( item && item.status && GROUP_STATI[ item.status ] ) {\n\t\treturn GROUP_STATI[ item.status ];\n\t}\n\n\treturn null;\n}\n\nconst editGroup = ( { attributes, setAttributes, bpSettings } ) => {\n\tconst { isAvatarEnabled, isCoverImageEnabled } = bpSettings;\n\tconst { avatarSize, displayDescription, displayActionButton, displayCoverImage } = attributes;\n\n\tif ( ! attributes.itemID ) {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\ticon=\"buddicons-groups\"\n\t\t\t\tlabel={ __( 'BuddyPress Group', 'buddypress' ) }\n\t\t\t\tinstructions={ __( 'Start typing the name of the group you want to feature into this post.', 'buddypress' ) }\n\t\t\t>\n\t\t\t\t<AutoCompleter\n\t\t\t\t\tcomponent=\"groups\"\n\t\t\t\t\tobjectQueryArgs={ { 'show_hidden': false } }\n\t\t\t\t\tslugValue={ getSlugValue }\n\t\t\t\t\tariaLabel={ __( 'Group\\'s name', 'buddypress' ) }\n\t\t\t\t\tplaceholder={ __( 'Enter Group\\'s name here…', 'buddypress' ) }\n\t\t\t\t\tonSelectItem={ setAttributes }\n\t\t\t\t\tuseAvatar={ isAvatarEnabled }\n\t\t\t\t/>\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<BlockControls>\n\t\t\t\t<Toolbar>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon=\"edit\"\n\t\t\t\t\t\ttitle={ __( 'Select another group', 'buddypress' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetAttributes( { itemID: 0 } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</Toolbar>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings', 'buddypress' ) } initialOpen={ true }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display Group\\'s home button', 'buddypress' ) }\n\t\t\t\t\t\tchecked={ !! displayActionButton }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tsetAttributes( { displayActionButton: ! displayActionButton } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\tdisplayActionButton\n\t\t\t\t\t\t\t\t? __( 'Include a link to the group\\'s home page under their name.', 'buddypress' )\n\t\t\t\t\t\t\t\t: __( 'Toggle to display a link to the group\\'s home page under their name.', 'buddypress' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display group\\'s description', 'buddypress' ) }\n\t\t\t\t\t\tchecked={ !! displayDescription }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tsetAttributes( { displayDescription: ! displayDescription } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\tdisplayDescription\n\t\t\t\t\t\t\t\t? __( 'Include the group\\'s description under their name.', 'buddypress' )\n\t\t\t\t\t\t\t\t: __( 'Toggle to display the group\\'s description under their name.', 'buddypress' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ isAvatarEnabled && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Avatar size', 'buddypress' ) }\n\t\t\t\t\t\t\tvalue={ avatarSize }\n\t\t\t\t\t\t\toptions={ AVATAR_SIZES }\n\t\t\t\t\t\t\thelp={ __( 'Select \"None\" to disable the avatar.', 'buddypress' ) }\n\t\t\t\t\t\t\tonChange={ ( option ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { avatarSize: option } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ isCoverImageEnabled && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Display Cover Image', 'buddypress' ) }\n\t\t\t\t\t\t\tchecked={ !! displayCoverImage }\n\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( { displayCoverImage: ! displayCoverImage } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\tdisplayCoverImage\n\t\t\t\t\t\t\t\t\t? __( 'Include the group\\'s cover image over their name.', 'buddypress' )\n\t\t\t\t\t\t\t\t\t: __( 'Toggle to display the group\\'s cover image over their name.', 'buddypress' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<Disabled>\n\t\t\t\t<ServerSideRender block=\"bp/group\" attributes={ attributes } />\n\t\t\t</Disabled>\n\t\t</Fragment>\n\t);\n};\n\nconst editGroupBlock = compose( [\n\twithSelect( ( select ) => {\n\t\tconst editorSettings = select( 'core/editor' ).getEditorSettings();\n\t\treturn {\n\t\t\tbpSettings: editorSettings.bp.groups || {},\n\t\t};\n\t} ),\n] )( editGroup );\n\nexport default editGroupBlock;\n","/**\n * WordPress dependencies.\n */\nconst {\n\tblocks: {\n\t\tregisterBlockType,\n\t},\n\ti18n: {\n\t\t__,\n\t},\n} = wp;\n\n/**\n * Internal dependencies.\n */\nimport editGroupBlock from './group/edit';\n\nregisterBlockType( 'bp/group', {\n\ttitle: __( 'Group', 'buddypress' ),\n\tdescription: __( 'BuddyPress Group.', 'buddypress' ),\n\ticon: 'buddicons-groups',\n\tcategory: 'buddypress',\n\tattributes: {\n\t\titemID: {\n\t\t\ttype: 'integer',\n\t\t\tdefault: 0,\n\t\t},\n\t\tavatarSize: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'full',\n\t\t},\n\t\tdisplayDescription: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tdisplayActionButton: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tdisplayCoverImage: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tedit: editGroupBlock,\n} );\n"]} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/js/blocks/groups.js b/wp-content/plugins/buddypress/bp-groups/js/blocks/groups.js new file mode 100644 index 0000000000000000000000000000000000000000..44c379eb278726f29f244a3741bec624e441d8c0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/js/blocks/groups.js @@ -0,0 +1,28 @@ +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"LGpM":[function(require,module,exports) { +function n(n,r){(null==r||r>n.length)&&(r=n.length);for(var e=0,l=new Array(r);e<r;e++)l[e]=n[e];return l}module.exports=n; +},{}],"o3SL":[function(require,module,exports) { +var r=require("./arrayLikeToArray");function a(a){if(Array.isArray(a))return r(a)}module.exports=a; +},{"./arrayLikeToArray":"LGpM"}],"lZpU":[function(require,module,exports) { +function e(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}module.exports=e; +},{}],"Vzqv":[function(require,module,exports) { +var r=require("./arrayLikeToArray");function t(t,e){if(t){if("string"==typeof t)return r(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(o):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?r(t,e):void 0}}module.exports=t; +},{"./arrayLikeToArray":"LGpM"}],"NCaH":[function(require,module,exports) { +function e(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}module.exports=e; +},{}],"I9dH":[function(require,module,exports) { +var r=require("./arrayWithoutHoles"),e=require("./iterableToArray"),u=require("./unsupportedIterableToArray"),a=require("./nonIterableSpread");function o(o){return r(o)||e(o)||u(o)||a()}module.exports=o; +},{"./arrayWithoutHoles":"o3SL","./iterableToArray":"lZpU","./unsupportedIterableToArray":"Vzqv","./nonIterableSpread":"NCaH"}],"dEOc":[function(require,module,exports) { +function r(r){if(Array.isArray(r))return r}module.exports=r; +},{}],"RonT":[function(require,module,exports) { +function r(r,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(r)){var e=[],n=!0,o=!1,l=void 0;try{for(var i,u=r[Symbol.iterator]();!(n=(i=u.next()).done)&&(e.push(i.value),!t||e.length!==t);n=!0);}catch(a){o=!0,l=a}finally{try{n||null==u.return||u.return()}finally{if(o)throw l}}return e}}module.exports=r; +},{}],"sa4T":[function(require,module,exports) { +function e(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}module.exports=e; +},{}],"xkYc":[function(require,module,exports) { +var r=require("./arrayWithHoles"),e=require("./iterableToArrayLimit"),t=require("./unsupportedIterableToArray"),i=require("./nonIterableRest");function u(u,a){return r(u)||e(u,a)||t(u,a)||i()}module.exports=u; +},{"./arrayWithHoles":"dEOc","./iterableToArrayLimit":"RonT","./unsupportedIterableToArray":"Vzqv","./nonIterableRest":"sa4T"}],"jS06":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.EXTRA_INFO=exports.GROUP_STATI=exports.AVATAR_SIZES=void 0;var e=wp,s=e.i18n.__,r=[{label:s("None","buddypress"),value:"none"},{label:s("Thumb","buddypress"),value:"thumb"},{label:s("Full","buddypress"),value:"full"}];exports.AVATAR_SIZES=r;var u={public:s("Public","buddypress"),private:s("Private","buddypress"),hidden:s("Hidden","buddypress")};exports.GROUP_STATI=u;var l=[{label:s("None","buddypress"),value:"none"},{label:s("Group's description","buddypress"),value:"description"},{label:s("Last time the group was active","buddypress"),value:"active"},{label:s("Amount of group members","buddypress"),value:"popular"}];exports.EXTRA_INFO=l; +},{}],"Ccmh":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("@babel/runtime/helpers/toConsumableArray")),t=n(require("@babel/runtime/helpers/slicedToArray")),r=require("./constants");function n(e){return e&&e.__esModule?e:{default:e}}var o=wp,s=o.blockEditor,a=s.InspectorControls,i=s.BlockControls,l=o.components,u=l.Placeholder,d=l.PanelBody,c=l.SelectControl,p=l.ToggleControl,m=l.Button,b=l.Dashicon,g=l.Tooltip,f=l.ToolbarGroup,v=l.RangeControl,y=o.compose.compose,h=o.data.withSelect,_=o.element,A=_.createElement,S=_.Fragment,C=_.useState,I=o.i18n,x=I.__,N=I.sprintf,k=I._n,T=o.apiFetch,G=o.url.addQueryArgs,P=bp.blockComponents.AutoCompleter,O=lodash,E=O.reject,R=O.remove,w=O.sortBy,D=function(e){return e&&e.status&&r.GROUP_STATI[e.status]?r.GROUP_STATI[e.status]:null},B=function(n){var o,s=n.attributes,l=n.setAttributes,y=n.isSelected,h=n.bpSettings.isAvatarEnabled,_=s.itemIDs,I=s.avatarSize,O=s.displayGroupName,B=s.extraInfo,q=s.layoutPreference,F=s.columns,j=0!==_.length,z=C([]),L=(0,t.default)(z,2),M=L[0],Q=L[1],U=[{icon:"text",title:x("List view","buddypress"),onClick:function(){return l({layoutPreference:"list"})},isActive:"list"===q},{icon:"screenoptions",title:x("Grid view","buddypress"),onClick:function(){return l({layoutPreference:"grid"})},isActive:"grid"===q}],V="bp-block-groups avatar-"+I,X=r.EXTRA_INFO;"grid"===q&&(V+=" is-grid columns-"+F,X=r.EXTRA_INFO.filter(function(e){return"description"!==e.value}));return j&&_.length!==M.length&&T({path:G("/buddypress/v1/groups",{populate_extras:!0,include:_})}).then(function(e){Q(w(e,[function(e){return _.indexOf(e.id)}]))}),M.length&&(o=M.map(function(e){var t=!1,r="group-content";return"list"===q&&"description"===B&&e.description&&e.description.rendered&&(t=!0,r="group-content has-description"),A("div",{key:"bp-group-"+e.id,className:r},y&&A(g,{text:x("Remove group","buddypress")},A(m,{className:"is-right",onClick:function(){var t;(t=e.id)&&-1!==_.indexOf(t)&&(Q(E(M,["id",t])),l({itemIDs:R(_,function(e){return e!==t})}))},label:x("Remove group","buddypress")},A(b,{icon:"no"}))),h&&"none"!==I&&A("div",{className:"item-header-avatar"},A("a",{href:e.link,target:"_blank"},A("img",{key:"avatar-"+e.id,className:"avatar",alt:N(x("Profile photo of %s","buddypress"),e.name),src:e.avatar_urls[I]}))),A("div",{className:"group-description"},O&&A("strong",null,A("a",{href:e.link,target:"_blank"},e.name)),t&&A("div",{className:"group-description-content",dangerouslySetInnerHTML:{__html:e.description.rendered}}),"active"===B&&e.last_activity&&e.last_activity_diff&&A("time",{dateTime:e.last_activity},N(x("Active %s","buddypress"),e.last_activity_diff)),"popular"===B&&e.total_member_count&&A("div",{className:"group-meta"},N(k("%1$d member","%1$d members",e.total_member_count,"buddypress"),e.total_member_count))))})),A(S,null,A(a,null,A(d,{title:x("Settings","buddypress"),initialOpen:!0},A(p,{label:x("Display the group's name","buddypress"),checked:!!O,onChange:function(){l({displayGroupName:!O})},help:x(O?"Include the group's name.":"Toggle to include group's name.","buddypress")}),h&&A(c,{label:x("Avatar size","buddypress"),value:I,options:r.AVATAR_SIZES,help:x('Select "None" to disable the avatar.',"buddypress"),onChange:function(e){l({avatarSize:e})}}),A(c,{label:x("Group extra information","buddypress"),value:B,options:X,help:x('Select "None" to show no extra information.',"buddypress"),onChange:function(e){l({extraInfo:e})}}),"grid"===q&&A(v,{label:x("Columns","buddypress"),value:F,onChange:function(e){return l({columns:e})},min:2,max:4,required:!0}))),A(i,null,A(f,{controls:U})),j&&A("div",{className:V},o),(y||0===_.length)&&A(u,{icon:j?"":"groups",label:j?"":x("BuddyPress Groups","buddypress"),instructions:x("Start typing the name of the group you want to add to the groups list.","buddypress"),className:0!==_.length?"is-appender":"is-large"},A(P,{component:"groups",objectQueryArgs:{show_hidden:!1,exclude:_},slugValue:D,ariaLabel:x("Group's name","buddypress"),placeholder:x("Enter Group's name here…","buddypress"),onSelectItem:function(t){var r=t.itemID;r&&-1===_.indexOf(r)&&l({itemIDs:[].concat((0,e.default)(_),[parseInt(r,10)])})},useAvatar:h})))},q=y([h(function(e){return{bpSettings:e("core/editor").getEditorSettings().bp.groups||{}}})])(B),F=q;exports.default=F; +},{"@babel/runtime/helpers/toConsumableArray":"I9dH","@babel/runtime/helpers/slicedToArray":"xkYc","./constants":"jS06"}],"jcTh":[function(require,module,exports) { +"use strict";var e=t(require("./groups/edit"));function t(e){return e&&e.__esModule?e:{default:e}}var r=wp,s=r.blocks.registerBlockType,u=r.i18n.__;s("bp/groups",{title:u("Groups","buddypress"),description:u("BuddyPress Groups.","buddypress"),icon:"buddicons-groups",category:"buddypress",attributes:{itemIDs:{type:"array",items:{type:"integer"},default:[]},avatarSize:{type:"string",default:"full"},displayGroupName:{type:"boolean",default:!0},extraInfo:{type:"string",default:"none"},layoutPreference:{type:"string",default:"list"},columns:{type:"number",default:2}},edit:e.default}); +},{"./groups/edit":"Ccmh"}]},{},["jcTh"], null) +//# sourceMappingURL=/bp-groups/js/blocks/groups.js.map \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/js/blocks/groups.js.map b/wp-content/plugins/buddypress/bp-groups/js/blocks/groups.js.map new file mode 100644 index 0000000000000000000000000000000000000000..b1e1844f593076a4562c79f6a7fc671a192f4185 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/js/blocks/groups.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","bp-groups/js/blocks/groups/constants.js","bp-groups/js/blocks/groups/edit.js","bp-groups/js/blocks/groups.js"],"names":["wp","__","i18n","AVATAR_SIZES","label","value","GROUP_STATI","public","private","hidden","EXTRA_INFO","editGroupsBlock","blockEditor","InspectorControls","BlockControls","components","Placeholder","PanelBody","SelectControl","ToggleControl","Button","Dashicon","Tooltip","ToolbarGroup","RangeControl","compose","withSelect","data","element","createElement","Fragment","useState","sprintf","_n","apiFetch","addQueryArgs","url","AutoCompleter","bp","blockComponents","lodash","reject","remove","sortBy","getSlugValue","item","status","editGroups","attributes","groupsList","setAttributes","isSelected","isAvatarEnabled","bpSettings","itemIDs","avatarSize","displayGroupName","extraInfo","layoutPreference","columns","hasGroups","length","groups","setGroups","layoutControls","icon","title","onClick","isActive","containerClasses","extraInfoOptions","filter","extra","path","populate_extras","include","then","items","indexOf","id","map","group","hasDescription","groupItemClasses","description","rendered","itemID","link","name","avatar_urls","__html","last_activity","last_activity_diff","total_member_count","option","exclude","parseInt","select","getEditorSettings","registerBlockType","blocks","category","type","default","edit"],"mappings":";AAAA,SAAA,EAAA,EAAA,IACA,MAAA,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,QAEA,IAAA,IAAA,EAAA,EAAA,EAAA,IAAA,MAAA,GAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAAA,GAGA,OAAA,EAGA,OAAA,QAAA;;ACVA,IAAA,EAAA,QAAA,sBAEA,SAAA,EAAA,GACA,GAAA,MAAA,QAAA,GAAA,OAAA,EAAA,GAGA,OAAA,QAAA;;ACNA,SAAA,EAAA,GACA,GAAA,oBAAA,QAAA,OAAA,YAAA,OAAA,GAAA,OAAA,MAAA,KAAA,GAGA,OAAA,QAAA;;ACJA,IAAA,EAAA,QAAA,sBAEA,SAAA,EAAA,EAAA,GACA,GAAA,EAAA,CACA,GAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,GACA,IAAA,EAAA,OAAA,UAAA,SAAA,KAAA,GAAA,MAAA,GAAA,GAEA,MADA,WAAA,GAAA,EAAA,cAAA,EAAA,EAAA,YAAA,MACA,QAAA,GAAA,QAAA,EAAA,MAAA,KAAA,GACA,cAAA,GAAA,2CAAA,KAAA,GAAA,EAAA,EAAA,QAAA,GAGA,OAAA,QAAA;;ACXA,SAAA,IACA,MAAA,IAAA,UAAA,wIAGA,OAAA,QAAA;;ACJA,IAAA,EAAA,QAAA,uBAEA,EAAA,QAAA,qBAEA,EAAA,QAAA,gCAEA,EAAA,QAAA,uBAEA,SAAA,EAAA,GACA,OAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,IAGA,OAAA,QAAA;;ACZA,SAAA,EAAA,GACA,GAAA,MAAA,QAAA,GAAA,OAAA,EAGA,OAAA,QAAA;;ACJA,SAAA,EAAA,EAAA,GACA,GAAA,oBAAA,QAAA,OAAA,YAAA,OAAA,GAAA,CACA,IAAA,EAAA,GACA,GAAA,EACA,GAAA,EACA,OAAA,EAEA,IACA,IAAA,IAAA,EAAA,EAAA,EAAA,OAAA,cAAA,GAAA,EAAA,EAAA,QAAA,QACA,EAAA,KAAA,EAAA,QAEA,GAAA,EAAA,SAAA,GAHA,GAAA,IAKA,MAAA,GACA,GAAA,EACA,EAAA,EACA,QACA,IACA,GAAA,MAAA,EAAA,QAAA,EAAA,SACA,QACA,GAAA,EAAA,MAAA,GAIA,OAAA,GAGA,OAAA,QAAA;;AC3BA,SAAA,IACA,MAAA,IAAA,UAAA,6IAGA,OAAA,QAAA;;ACJA,IAAA,EAAA,QAAA,oBAEA,EAAA,QAAA,0BAEA,EAAA,QAAA,gCAEA,EAAA,QAAA,qBAEA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,IAGA,OAAA,QAAA;;ACiCO,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,WAAA,QAAA,YAAA,QAAA,kBAAA,EAtCHA,IAAAA,EAAAA,GAFFC,EADDC,EAAAA,KACCD,GASWE,EAAe,CAC3B,CACCC,MAAOH,EAAI,OAAQ,cACnBI,MAAO,QAER,CACCD,MAAOH,EAAI,QAAS,cACpBI,MAAO,SAER,CACCD,MAAOH,EAAI,OAAQ,cACnBI,MAAO,SAoBF,QAAA,aAAA,EAXA,IAAMC,EAAc,CAC1BC,OAAQN,EAAI,SAAU,cACtBO,QAASP,EAAI,UAAW,cACxBQ,OAAQR,EAAI,SAAU,eAQhB,QAAA,YAAA,EAAA,IAAMS,EAAa,CACzB,CACCN,MAAOH,EAAI,OAAQ,cACnBI,MAAO,QAER,CACCD,MAAOH,EAAI,sBAAwB,cACnCI,MAAO,eAER,CACCD,MAAOH,EAAI,iCAAkC,cAC7CI,MAAO,UAER,CACCD,MAAOH,EAAI,0BAA2B,cACtCI,MAAO,YAfF,QAAA,WAAA;;ACqQQM,aAAAA,OAAAA,eAAAA,QAAAA,aAAAA,CAAAA,OAAAA,IAAAA,QAAAA,aAAAA,EAAAA,IAAAA,EAAAA,EAAAA,QAAAA,6CAAAA,EAAAA,EAAAA,QAAAA,yCAjQf,EAAA,QAAA,eAiQeA,SAAAA,EAAAA,GAAAA,OAAAA,GAAAA,EAAAA,WAAAA,EAAAA,CAAAA,QAAAA,GA3QXX,IAAAA,EAAAA,GAnCHY,EAAAA,EAAAA,YACCC,EAAAA,EAAAA,kBACAC,EAAAA,EAAAA,cAEDC,EAAAA,EAAAA,WACCC,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,aAGAC,EADDA,EAAAA,QACCA,QAGAC,EADDC,EAAAA,KACCD,WAEDE,EAAAA,EAAAA,QACCC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,SAED7B,EAAAA,EAAAA,KACCD,EAAAA,EAAAA,GACA+B,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,GAEDC,EAAAA,EAAAA,SAECC,EADDC,EAAAA,IACCD,aAOME,EAAkBC,GAAGC,gBAArBF,cAcJG,EAAAA,OAHHC,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,OAGKC,EAAe,SAAEC,GACjBA,OAAAA,GAAQA,EAAKC,QAAUxC,EAAauC,YAAAA,EAAKC,QACtCxC,EAAauC,YAAAA,EAAKC,QAGnB,MAGFC,EAAa,SAA6D,GAAzDC,IA4BlBC,EA5BkBD,EAAAA,EAAAA,WAAYE,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,WAEhDC,EAF4DC,EAAAA,WAE5DD,gBAGAE,EAMGN,EANHM,QACAC,EAKGP,EALHO,WACAC,EAIGR,EAJHQ,iBACAC,EAGGT,EAHHS,UACAC,EAEGV,EAFHU,iBACAC,EACGX,EADHW,QAEKC,EAAY,IAAMN,EAAQO,OACF9B,EAAAA,EAAU,IAbuC,GAAA,EAAA,EAAA,SAAA,EAAA,GAavE+B,EAbuE,EAAA,GAa/DC,EAb+D,EAAA,GAczEC,EAAiB,CACtB,CACCC,KAAM,OACNC,MAAOjE,EAAI,YAAa,cACxBkE,QAAS,WAAMjB,OAAAA,EAAe,CAAEQ,iBAAkB,UAClDU,SAA+B,SAArBV,GAEX,CACCO,KAAM,gBACNC,MAAOjE,EAAI,YAAa,cACxBkE,QAAS,WAAMjB,OAAAA,EAAe,CAAEQ,iBAAkB,UAClDU,SAA+B,SAArBV,IAIRW,EAAmB,0BAA4Bd,EAC/Ce,EAAmB5D,EAAvB,WAE0B,SAArBgD,IACJW,GAAoB,oBAAsBV,EAC1CW,EAAmB5D,EAAW6D,WAAAA,OAAQ,SAAEC,GAChC,MAAA,gBAAkBA,EAAMnE,SA4GhC,OAvFIuD,GAAaN,EAAQO,SAAWC,EAAOD,QAC3C3B,EAAU,CACTuC,KAAMtC,EAAuC,wBAAA,CAAEuC,iBAAiB,EAAMC,QAASrB,MAC5EsB,KAAM,SAAAC,GACTd,EACCpB,EAAQkC,EAAO,CAAE,SAAEhC,GACXS,OAAAA,EAAQwB,QAASjC,EAAKkC,UAM5BjB,EAAOD,SACXZ,EAAaa,EAAOkB,IAAK,SAAEC,GACtBC,IAAAA,GAAiB,EACjBC,EAAmB,gBAQtB,MANyB,SAArBzB,GAA+B,gBAAkBD,GAAawB,EAAMG,aAAeH,EAAMG,YAAYC,WACzGH,GAAiB,EACjBC,EAAmB,iCAInB,EAAA,MAAA,CAAK,IAAM,YAAcF,EAAMF,GAAK,UAAYI,GAC7ChC,GACD,EAAC,EAAD,CAAS,KAAOlD,EAAI,eAAgB,eACnC,EAAC,EAAD,CACC,UAAU,WACV,QAAU,WArCO,IAAEqF,GAAAA,EAqCYL,EAAMF,MApC3B,IAAMzB,EAAQwB,QAASQ,KACtCvB,EAAWtB,EAAQqB,EAAQ,CAAC,KAAMwB,KAClCpC,EAAe,CACdI,QAASZ,EAAQY,EAAS,SAAEjD,GAAoBA,OAAAA,IAAUiF,QAkCtD,MAAQrF,EAAI,eAAgB,eAE5B,EAAC,EAAD,CAAU,KAAK,SAIhBmD,GAAmB,SAAWG,GAC/B,EAAA,MAAA,CAAK,UAAU,sBACd,EAAA,IAAA,CAAG,KAAO0B,EAAMM,KAAO,OAAO,UAC7B,EAAA,MAAA,CACC,IAAM,UAAYN,EAAMF,GACxB,UAAU,SACV,IAAM/C,EAAS/B,EAAI,sBAAuB,cAAgBgF,EAAMO,MAChE,IAAMP,EAAMQ,YAAalC,OAK7B,EAAA,MAAA,CAAK,UAAU,qBACZC,GACD,EACC,SAAA,KAAA,EAAA,IAAA,CAAG,KAAOyB,EAAMM,KAAO,OAAO,UAC3BN,EAAMO,OAKTN,GACD,EAAA,MAAA,CAAK,UAAU,4BAA4B,wBAA0B,CAAEQ,OAAQT,EAAMG,YAAYC,YAGhG,WAAa5B,GAAawB,EAAMU,eAAiBV,EAAMW,oBACxD,EAAA,OAAA,CAAM,SAAWX,EAAMU,eACpB3D,EAAS/B,EAAI,YAAa,cAAgBgF,EAAMW,qBAIlD,YAAcnC,GAAawB,EAAMY,oBAClC,EAAA,MAAA,CAAK,UAAU,cACX7D,EAEFC,EACC,cACA,eACAgD,EAAMY,mBACN,cAEDZ,EAAMY,0BAWb,EAAC,EACA,KAAA,EAAC,EACA,KAAA,EAAC,EAAD,CAAW,MAAQ5F,EAAI,WAAY,cAAiB,aAAc,GACjE,EAAC,EAAD,CACC,MAAQA,EAAI,2BAA6B,cACzC,UAAauD,EACb,SAAW,WACVN,EAAe,CAAEM,kBAAoBA,KAEtC,KAEIvD,EADHuD,EACO,4BACA,kCAD8B,gBAKrCJ,GACD,EAAC,EAAD,CACC,MAAQnD,EAAI,cAAe,cAC3B,MAAQsD,EACR,QAAUpD,EAHX,aAIC,KAAOF,EAAI,uCAAwC,cACnD,SAAW,SAAE6F,GACZ5C,EAAe,CAAEK,WAAYuC,OAKhC,EAAC,EAAD,CACC,MAAQ7F,EAAI,0BAA2B,cACvC,MAAQwD,EACR,QAAUa,EACV,KAAOrE,EAAI,8CAA+C,cAC1D,SAAW,SAAE6F,GACZ5C,EAAe,CAAEO,UAAWqC,OAIP,SAArBpC,GACD,EAAC,EAAD,CACC,MAAQzD,EAAI,UAAW,cACvB,MAAQ0D,EACR,SAAW,SAAEtD,GACZ6C,OAAAA,EAAe,CAAES,QAAStD,KAE3B,IAAM,EACN,IAAM,EACN,UAAQ,MAMZ,EAAC,EACA,KAAA,EAAC,EAAD,CAAc,SAAW2D,KAGxBJ,GACD,EAAA,MAAA,CAAK,UAAYS,GACdpB,IAIAE,GAAc,IAAMG,EAAQO,SAC/B,EAAC,EAAD,CACC,KAAOD,EAAY,GAAK,SACxB,MAAQA,EAAY,GAAK3D,EAAI,oBAAqB,cAClD,aAAeA,EAAI,yEAA0E,cAC7F,UAAY,IAAMqD,EAAQO,OAAS,cAAgB,YAEnD,EAAC,EAAD,CACC,UAAU,SACV,gBAAkB,CAAiB,aAAA,EAAOkC,QAASzC,GACnD,UAAYV,EACZ,UAAY3C,EAAI,eAAiB,cACjC,YAAcA,EAAI,2BAA6B,cAC/C,aApLmB,SAAkB,GAAdqF,IAAAA,EAAAA,EAAAA,OACtBA,IAAW,IAAMhC,EAAQwB,QAASQ,IACtCpC,EAAe,CACdI,QAAaA,GAAAA,QAAAA,EAAAA,EAAAA,SAAAA,GAAS0C,CAAAA,SAAUV,EAAQ,SAkLtC,UAAYlC,OAQZzC,EAAkBc,EAAS,CAChCC,EAAY,SAAEuE,GAGN,MAAA,CACN5C,WAHsB4C,EAAQ,eAAgBC,oBAGnB5D,GAAGwB,QAAU,OALnBrC,CAQnBsB,GAEUpC,EAAAA,EAAAA,QAAAA,QAAAA;;ACjSf,aAFA,IAAA,EAAA,EAAA,QAAA,kBAEA,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GAPIX,IAAAA,EAAAA,GALAmG,EADFC,EAAAA,OACED,kBAGAlG,EADFC,EAAAA,KACED,GASJkG,EAAmB,YAAa,CAC/BjC,MAAOjE,EAAI,SAAU,cACrBmF,YAAanF,EAAI,qBAAsB,cACvCgE,KAAM,mBACNoC,SAAU,aACVrD,WAAY,CACXM,QAAS,CACRgD,KAAM,QACNzB,MAAO,CACNyB,KAAM,WAEPC,QAAS,IAEVhD,WAAY,CACX+C,KAAM,SACNC,QAAS,QAEV/C,iBAAkB,CACjB8C,KAAM,UACNC,SAAS,GAEV9C,UAAW,CACV6C,KAAM,SACNC,QAAS,QAEV7C,iBAAkB,CACjB4C,KAAM,SACNC,QAAS,QAEV5C,QAAS,CACR2C,KAAM,SACNC,QAAS,IAGXC,KAAM7F,EAAAA","file":"groups.js","sourceRoot":"../src/js","sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","/**\n * WordPress dependencies.\n */\nconst {\n\ti18n: {\n\t\t__,\n\t},\n} = wp;\n\n/**\n * Avatar sizes.\n *\n * @type {Array}\n */\nexport const AVATAR_SIZES = [\n\t{\n\t\tlabel: __( 'None', 'buddypress' ),\n\t\tvalue: 'none',\n\t},\n\t{\n\t\tlabel: __( 'Thumb', 'buddypress' ),\n\t\tvalue: 'thumb',\n\t},\n\t{\n\t\tlabel: __( 'Full', 'buddypress' ),\n\t\tvalue: 'full',\n\t},\n];\n\n/**\n * Group stati.\n *\n * @type {Object}\n */\nexport const GROUP_STATI = {\n\tpublic: __( 'Public', 'buddypress' ),\n\tprivate: __( 'Private', 'buddypress' ),\n\thidden: __( 'Hidden', 'buddypress' ),\n};\n\n/**\n * Group Extra data.\n *\n * @type {Array}\n */\nexport const EXTRA_INFO = [\n\t{\n\t\tlabel: __( 'None', 'buddypress' ),\n\t\tvalue: 'none',\n\t},\n\t{\n\t\tlabel: __( 'Group\\'s description', 'buddypress' ),\n\t\tvalue: 'description',\n\t},\n\t{\n\t\tlabel: __( 'Last time the group was active', 'buddypress' ),\n\t\tvalue: 'active',\n\t},\n\t{\n\t\tlabel: __( 'Amount of group members', 'buddypress' ),\n\t\tvalue: 'popular',\n\t},\n];\n","/**\n * WordPress dependencies.\n */\nconst {\n\tblockEditor: {\n\t\tInspectorControls,\n\t\tBlockControls,\n\t},\n\tcomponents: {\n\t\tPlaceholder,\n\t\tPanelBody,\n\t\tSelectControl,\n\t\tToggleControl,\n\t\tButton,\n\t\tDashicon,\n\t\tTooltip,\n\t\tToolbarGroup,\n\t\tRangeControl,\n\t},\n\tcompose: {\n\t\tcompose,\n\t},\n\tdata: {\n\t\twithSelect,\n\t},\n\telement: {\n\t\tcreateElement,\n\t\tFragment,\n\t\tuseState,\n\t},\n\ti18n: {\n\t\t__,\n\t\tsprintf,\n\t\t_n,\n\t},\n\tapiFetch,\n\turl: {\n\t\taddQueryArgs,\n\t},\n} = wp;\n\n/**\n * BuddyPress dependencies.\n */\nconst { AutoCompleter } = bp.blockComponents;\n\n/**\n * Internal dependencies.\n */\nimport { AVATAR_SIZES, EXTRA_INFO, GROUP_STATI } from './constants';\n\n/**\n * External dependencies.\n */\nconst {\n\treject,\n\tremove,\n\tsortBy,\n} = lodash;\n\nconst getSlugValue = ( item ) => {\n\tif ( item && item.status && GROUP_STATI[ item.status ] ) {\n\t\treturn GROUP_STATI[ item.status ];\n\t}\n\n\treturn null;\n}\n\nconst editGroups = ( { attributes, setAttributes, isSelected, bpSettings } ) => {\n\tconst {\n\t\tisAvatarEnabled,\n\t} = bpSettings;\n\tconst {\n\t\titemIDs,\n\t\tavatarSize,\n\t\tdisplayGroupName,\n\t\textraInfo,\n\t\tlayoutPreference,\n\t\tcolumns,\n\t} = attributes;\n\tconst hasGroups = 0 !== itemIDs.length;\n\tconst [ groups, setGroups ] = useState( [] );\n\tconst layoutControls = [\n\t\t{\n\t\t\ticon: 'text',\n\t\t\ttitle: __( 'List view', 'buddypress' ),\n\t\t\tonClick: () => setAttributes( { layoutPreference: 'list' } ),\n\t\t\tisActive: layoutPreference === 'list',\n\t\t},\n\t\t{\n\t\t\ticon: 'screenoptions',\n\t\t\ttitle: __( 'Grid view', 'buddypress' ),\n\t\t\tonClick: () => setAttributes( { layoutPreference: 'grid' } ),\n\t\t\tisActive: layoutPreference === 'grid',\n\t\t},\n\t];\n\tlet groupsList;\n\tlet containerClasses = 'bp-block-groups avatar-' + avatarSize;\n\tlet extraInfoOptions = EXTRA_INFO;\n\n\tif ( layoutPreference === 'grid' ) {\n\t\tcontainerClasses += ' is-grid columns-' + columns;\n\t\textraInfoOptions = EXTRA_INFO.filter( ( extra ) => {\n\t\t\treturn 'description' !== extra.value;\n\t\t} );\n\t}\n\n\tconst onSelectedGroup = ( { itemID } ) => {\n\t\tif ( itemID && -1 === itemIDs.indexOf( itemID ) ) {\n\t\t\tsetAttributes( {\n\t\t\t\titemIDs: [...itemIDs, parseInt( itemID, 10 ) ]\n\t\t\t} );\n\t\t}\n\t};\n\n\tconst onRemoveGroup = ( ( itemID ) => {\n\t\tif ( itemID && -1 !== itemIDs.indexOf( itemID ) ) {\n\t\t\tsetGroups( reject( groups, ['id', itemID ] ) );\n\t\t\tsetAttributes( {\n\t\t\t\titemIDs: remove( itemIDs, ( value ) => { return value !== itemID } )\n\t\t\t} );\n\t\t}\n\t} );\n\n\tif ( hasGroups && itemIDs.length !== groups.length ) {\n\t\tapiFetch( {\n\t\t\tpath: addQueryArgs( `/buddypress/v1/groups`, { populate_extras: true, include: itemIDs } ),\n\t\t} ).then( items => {\n\t\t\tsetGroups(\n\t\t\t\tsortBy( items, [ ( item ) => {\n\t\t\t\t\treturn itemIDs.indexOf( item.id );\n\t\t\t\t} ] )\n\t\t\t);\n\t\t} )\n\t}\n\n\tif ( groups.length ) {\n\t\tgroupsList = groups.map( ( group ) => {\n\t\t\tlet hasDescription = false;\n\t\t\tlet groupItemClasses = 'group-content';\n\n\t\t\tif ( layoutPreference === 'list' && 'description' === extraInfo && group.description && group.description.rendered ) {\n\t\t\t\thasDescription = true;\n\t\t\t\tgroupItemClasses = 'group-content has-description';\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<div key={ 'bp-group-' + group.id } className={ groupItemClasses }>\n\t\t\t\t\t{ isSelected && (\n\t\t\t\t\t\t<Tooltip text={ __( 'Remove group', 'buddypress' ) }>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName=\"is-right\"\n\t\t\t\t\t\t\t\tonClick={ () => onRemoveGroup( group.id ) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Remove group', 'buddypress' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Dashicon icon=\"no\"/>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isAvatarEnabled && 'none' !== avatarSize && (\n\t\t\t\t\t\t<div className=\"item-header-avatar\">\n\t\t\t\t\t\t\t<a href={ group.link } target=\"_blank\">\n\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\tkey={ 'avatar-' + group.id }\n\t\t\t\t\t\t\t\t\tclassName=\"avatar\"\n\t\t\t\t\t\t\t\t\talt={ sprintf( __( 'Profile photo of %s', 'buddypress' ), group.name ) }\n\t\t\t\t\t\t\t\t\tsrc={ group.avatar_urls[ avatarSize ] }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t<div className=\"group-description\">\n\t\t\t\t\t\t{ displayGroupName && (\n\t\t\t\t\t\t\t<strong>\n\t\t\t\t\t\t\t\t<a href={ group.link } target=\"_blank\">\n\t\t\t\t\t\t\t\t\t{ group.name }\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t{ hasDescription && (\n\t\t\t\t\t\t\t<div className=\"group-description-content\" dangerouslySetInnerHTML={ { __html: group.description.rendered } } />\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t{ 'active' === extraInfo && group.last_activity && group.last_activity_diff && (\n\t\t\t\t\t\t\t<time dateTime={ group.last_activity }>\n\t\t\t\t\t\t\t\t{ sprintf( __( 'Active %s', 'buddypress' ), group.last_activity_diff ) }\n\t\t\t\t\t\t\t</time>\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t{ 'popular' === extraInfo && group.total_member_count && (\n\t\t\t\t\t\t\t<div className=\"group-meta\">\n\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: 1: number of group memberss. */\n\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t'%1$d member',\n\t\t\t\t\t\t\t\t\t\t'%1$d members',\n\t\t\t\t\t\t\t\t\t\tgroup.total_member_count,\n\t\t\t\t\t\t\t\t\t\t'buddypress'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tgroup.total_member_count\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} );\n\t}\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings', 'buddypress' ) } initialOpen={ true }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display the group\\'s name', 'buddypress' ) }\n\t\t\t\t\t\tchecked={ !! displayGroupName }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tsetAttributes( { displayGroupName: ! displayGroupName } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\tdisplayGroupName\n\t\t\t\t\t\t\t\t? __( 'Include the group\\'s name.', 'buddypress' )\n\t\t\t\t\t\t\t\t: __( 'Toggle to include group\\'s name.', 'buddypress' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ isAvatarEnabled && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Avatar size', 'buddypress' ) }\n\t\t\t\t\t\t\tvalue={ avatarSize }\n\t\t\t\t\t\t\toptions={ AVATAR_SIZES }\n\t\t\t\t\t\t\thelp={ __( 'Select \"None\" to disable the avatar.', 'buddypress' ) }\n\t\t\t\t\t\t\tonChange={ ( option ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { avatarSize: option } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'Group extra information', 'buddypress' ) }\n\t\t\t\t\t\tvalue={ extraInfo }\n\t\t\t\t\t\toptions={ extraInfoOptions }\n\t\t\t\t\t\thelp={ __( 'Select \"None\" to show no extra information.', 'buddypress' ) }\n\t\t\t\t\t\tonChange={ ( option ) => {\n\t\t\t\t\t\t\tsetAttributes( { extraInfo: option } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ layoutPreference === 'grid' && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\tlabel={ __( 'Columns', 'buddypress' ) }\n\t\t\t\t\t\t\tvalue={ columns }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { columns: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmin={ 2 }\n\t\t\t\t\t\t\tmax={ 4 }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup controls={ layoutControls } />\n\t\t\t</BlockControls>\n\n\t\t\t{ hasGroups && (\n\t\t\t\t<div className={ containerClasses }>\n\t\t\t\t\t{ groupsList }\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ( isSelected || 0 === itemIDs.length ) && (\n\t\t\t\t<Placeholder\n\t\t\t\t\ticon={ hasGroups ? '' : 'groups' }\n\t\t\t\t\tlabel={ hasGroups ? '' : __( 'BuddyPress Groups', 'buddypress' ) }\n\t\t\t\t\tinstructions={ __( 'Start typing the name of the group you want to add to the groups list.', 'buddypress' ) }\n\t\t\t\t\tclassName={ 0 !== itemIDs.length ? 'is-appender' : 'is-large' }\n\t\t\t\t>\n\t\t\t\t\t<AutoCompleter\n\t\t\t\t\t\tcomponent=\"groups\"\n\t\t\t\t\t\tobjectQueryArgs={ { 'show_hidden': false, exclude: itemIDs } }\n\t\t\t\t\t\tslugValue={ getSlugValue }\n\t\t\t\t\t\tariaLabel={ __( 'Group\\'s name', 'buddypress' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Enter Group\\'s name here…', 'buddypress' ) }\n\t\t\t\t\t\tonSelectItem={ onSelectedGroup }\n\t\t\t\t\t\tuseAvatar={ isAvatarEnabled }\n\t\t\t\t\t/>\n\t\t\t\t</Placeholder>\n\t\t\t) }\n\t\t</Fragment>\n\t);\n};\n\nconst editGroupsBlock = compose( [\n\twithSelect( ( select ) => {\n\t\tconst editorSettings = select( 'core/editor' ).getEditorSettings();\n\n\t\treturn {\n\t\t\tbpSettings: editorSettings.bp.groups || {},\n\t\t};\n\t} ),\n] )( editGroups );\n\nexport default editGroupsBlock;\n","/**\n * WordPress dependencies.\n */\nconst {\n blocks: {\n registerBlockType,\n },\n i18n: {\n __,\n },\n} = wp;\n\n/**\n * Internal dependencies.\n */\nimport editGroupsBlock from './groups/edit';\n\nregisterBlockType( 'bp/groups', {\n\ttitle: __( 'Groups', 'buddypress' ),\n\tdescription: __( 'BuddyPress Groups.', 'buddypress' ),\n\ticon: 'buddicons-groups',\n\tcategory: 'buddypress',\n\tattributes: {\n\t\titemIDs: {\n\t\t\ttype: 'array',\n\t\t\titems: {\n\t\t\t\ttype: 'integer',\n\t\t\t},\n\t\t\tdefault: [],\n\t\t},\n\t\tavatarSize: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'full',\n\t\t},\n\t\tdisplayGroupName: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\textraInfo: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'none',\n\t\t},\n\t\tlayoutPreference: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'list',\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 2\n\t\t},\n\t},\n\tedit: editGroupsBlock,\n} );\n"]} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/sass/blocks/group.scss b/wp-content/plugins/buddypress/bp-groups/sass/blocks/group.scss new file mode 100644 index 0000000000000000000000000000000000000000..02f431fe307d72b71bbd235c1ac19694dc63f703 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/sass/blocks/group.scss @@ -0,0 +1,153 @@ +/* CSS for the bp/group block */ +[data-type="bp/group"] { + + input.components-placeholder__input { + flex: 1 1 auto; + border-radius: 2px; + border: 1px solid #757575; + padding: 6px 8px; + } +} + +.bp-block-group { + position: relative; + + .group-content { + display: flex; + } + + .group-description { + width: 100%; + } + + .group-description-content { + width: 100%; + margin-bottom: 18px; + } + + .bp-profile-button { + width: 100%; + overflow: hidden; + + a.button { + margin: 18px 0 0; + } + } + + &.has-cover { + + .group-content, + .item-header-avatar, + .group-description { + z-index: 2; + } + + .group-content { + padding-top: 75px; + } + + .group-description { + padding-top: 75px; + } + + .bp-group-cover-image { + background-color: #c5c5c5; + background-position: center top; + background-repeat: no-repeat; + background-size: cover; + border: 0; + display: block; + left: 0; + margin: 0; + padding: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + height: 150px; + } + } + + img.avatar { + width: auto; + height: auto; + } + + &.avatar-none { + + .item-header-avatar { + display: none; + } + } + + &.avatar-none.has-cover { + min-height: 200px; + + .item-header-avatar { + padding-top: 75px; + } + } + + &.avatar-full { + min-height: 150px; + + .item-header-avatar { + width: 180px; + } + + .group-description { + padding-left: 35px; + } + } + + &.avatar-full.has-cover { + min-height: 300px; + + .item-header-avatar { + width: 200px; + } + + img.avatar { + border: solid 2px #fff; + background: rgba(255, 255, 255, 0.8); + margin-left: 20px; + } + } + + &.avatar-thumb { + + .item-header-avatar { + width: 70px; + + img.avatar { + margin-top: 15px; + } + } + } + + &.avatar-thumb:not(.has-description) { + + .group-content { + min-height: 50px; + align-items: center; + } + } + + &.avatar-thumb.has-cover { + + .item-header-avatar { + padding-top: 75px; + } + } + + &.has-description { + + .bp-profile-button { + + a.button { + display: block; + float: right; + } + } + } +} diff --git a/wp-content/plugins/buddypress/bp-groups/sass/blocks/groups.scss b/wp-content/plugins/buddypress/bp-groups/sass/blocks/groups.scss new file mode 100644 index 0000000000000000000000000000000000000000..3c99389fef957462c2edda1def601665bdef11b0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/sass/blocks/groups.scss @@ -0,0 +1,202 @@ +/* CSS for the bp/members block */ +[data-type="bp/groups"] { + + .components-placeholder { + + &.is-appender { + min-height: 0; + + .components-placeholder__label:empty { + display: none; + } + } + + input.components-placeholder__input { + flex: 1 1 auto; + border-radius: 2px; + border: 1px solid #757575; + padding: 6px 8px; + } + } + + &.avatar-none { + + .group-description { + width: calc(100% - 44px); + } + } + + &.avatar-full { + + .group-description { + width: calc(100% - 224px); + } + } + + &.avatar-thumb { + + .group-description { + width: calc(100% - 114px); + } + } + + .group-content { + position: relative; + + .is-right { + position: absolute; + top: 2px; + right: 2px; + } + } + + .columns-2, + .columns-3, + .columns-4 { + + .group-content { + + .group-description { + padding-left: 44px; + width: calc(100% - 44px); + } + } + } + + .columns-3 { + + .is-right { + right: -10px; + } + } + + .columns-4 { + + .is-right { + right: -50px; + } + } +} + +.bp-block-groups { + + &.is-grid { + display: flex; + flex-wrap: wrap; + padding: 0; + + .group-content { + margin: 0 1.25em 1.25em 0; + width: 100%; + } + } + + @media (min-width: 600px) { + + @for $i from 2 through 4 { + &.columns-#{ $i } .group-content { + width: calc((100% / #{ $i }) - 1.25em + (1.25em / #{ $i })); + + &:nth-child( #{ $i }n ) { + margin-right: 0; + } + } + } + } + + .group-content { + display: flex; + flex-direction: column; + padding-bottom: 1em; + text-align: center; + + .item-header-avatar, + .group-description { + width: 100%; + } + + .item-header-avatar { + margin: 0 auto; + + img.avatar { + display: inline-block; + } + } + + @media (min-width: 600px) { + flex-direction: row; + text-align: left; + + .item-header-avatar, + .group-description { + width: auto; + } + + .item-header-avatar { + margin: 0; + } + } + + time { + display: block; + font-size: 80%; + color: #767676; + } + } + + &.avatar-none { + + .item-header-avatar { + display: none; + } + } + + &.avatar-full { + min-height: 190px; + + .item-header-avatar { + width: 180px; + } + } + + &.avatar-thumb { + + .group-content { + min-height: 80px; + } + + .item-header-avatar { + width: 70px; + } + } + + &.columns-2 .group-content, + &.columns-3 .group-content, + &.columns-4 .group-content { + display: block; + text-align: center; + + .item-header-avatar { + margin: 0 auto; + } + } + + img.avatar { + width: auto; + height: auto; + max-width: fit-content; + } + + .member-content.has-description { + align-items: center; + + .item-header-avatar { + padding-right: 1em; + } + + .group-description-content { + margin-bottom: 0; + text-align: left; + } + } +} diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/admin/group-settings.php b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/group-settings.php index d3ce4ffdb4f8a45de61cd5efe6f4bb796d8b25e8..f8deb8b3ffe6dc035d5c5f917623ebc00b7bd786 100644 --- a/wp-content/plugins/buddypress/bp-groups/screens/single/admin/group-settings.php +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/group-settings.php @@ -26,12 +26,12 @@ function groups_screen_group_admin_settings() { if ( isset( $_POST['save'] ) ) { $enable_forum = ( isset($_POST['group-show-forum'] ) ) ? 1 : 0; - // Checked against a whitelist for security. + // Checked against a list of allowed statuses for security. /** This filter is documented in bp-groups/bp-groups-admin.php */ $allowed_status = apply_filters( 'groups_allowed_status', array( 'public', 'private', 'hidden' ) ); $status = ( in_array( $_POST['group-status'], (array) $allowed_status ) ) ? $_POST['group-status'] : 'public'; - // Checked against a whitelist for security. + // Checked against a list of allowed statuses for security. /** This filter is documented in bp-groups/bp-groups-admin.php */ $allowed_invite_status = apply_filters( 'groups_allowed_invite_status', array( 'members', 'mods', 'admins' ) ); $invite_status = isset( $_POST['group-invite-status'] ) && in_array( $_POST['group-invite-status'], (array) $allowed_invite_status ) ? $_POST['group-invite-status'] : 'members'; diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/request-membership.php b/wp-content/plugins/buddypress/bp-groups/screens/single/request-membership.php index 640b0ddfb5a62b3d29d5e8486ce83673c68f13bc..7e8886eecabcce71153fefb1545d606acd9e2ab0 100644 --- a/wp-content/plugins/buddypress/bp-groups/screens/single/request-membership.php +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/request-membership.php @@ -14,20 +14,24 @@ */ function groups_screen_group_request_membership() { - if ( !is_user_logged_in() ) + if ( ! is_user_logged_in() ) { return false; + } $bp = buddypress(); - if ( 'private' != $bp->groups->current_group->status ) + if ( 'private' != $bp->groups->current_group->status ) { return false; + } // If the user is already invited, accept invitation. if ( groups_check_user_has_invite( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { - if ( groups_accept_invite( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) + if ( groups_accept_invite( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { bp_core_add_message( __( 'Group invite accepted', 'buddypress' ) ); - else + } else { bp_core_add_message( __( 'There was an error accepting the group invitation. Please try again.', 'buddypress' ), 'error' ); + } + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); } @@ -35,10 +39,22 @@ function groups_screen_group_request_membership() { if ( isset( $_POST['group-request-send']) ) { // Check the nonce. - if ( !check_admin_referer( 'groups_request_membership' ) ) + if ( ! check_admin_referer( 'groups_request_membership' ) ) { return false; + } + + // Default arguments for the membership request. + $request_args = array( + 'user_id' => bp_loggedin_user_id(), + 'group_id' => $bp->groups->current_group->id + ); + + // If the member added a message to their request include it into the request arguments. + if ( isset( $_POST['group-request-membership-comments'] ) && $_POST['group-request-membership-comments'] ) { + $request_args['content'] = strip_tags( wp_unslash( $_POST['group-request-membership-comments'] ) ); + } - if ( !groups_send_membership_request( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { + if ( ! groups_send_membership_request( $request_args ) ) { bp_core_add_message( __( 'There was an error sending your group membership request. Please try again.', 'buddypress' ), 'error' ); } else { bp_core_add_message( __( 'Your membership request was sent to the group administrator successfully. You will be notified when the group administrator responds to your request.', 'buddypress' ) ); @@ -63,4 +79,4 @@ function groups_screen_group_request_membership() { * @param string $value Path to a group's Request Membership template. */ bp_core_load_template( apply_filters( 'groups_template_group_request_membership', 'groups/single/home' ) ); -} \ No newline at end of file +} diff --git a/wp-content/plugins/buddypress/bp-loader.php b/wp-content/plugins/buddypress/bp-loader.php index 2520e87f536f9669476b05289d0b7987c0438537..8ed7753bba2d61c2e89ef7a57b3e5787f7b04963 100644 --- a/wp-content/plugins/buddypress/bp-loader.php +++ b/wp-content/plugins/buddypress/bp-loader.php @@ -15,7 +15,7 @@ * Description: BuddyPress adds community features to WordPress. Member Profiles, Activity Streams, Direct Messaging, Notifications, and more! * Author: The BuddyPress Community * Author URI: https://buddypress.org/ - * Version: 6.0.0 + * Version: 7.3.0 * Text Domain: buddypress * Domain Path: /bp-languages/ * License: GPLv2 or later (license.txt) @@ -30,7 +30,7 @@ defined( 'ABSPATH' ) || exit; // Required PHP version. -define( 'BP_REQUIRED_PHP_VERSION', '5.3.0' ); +define( 'BP_REQUIRED_PHP_VERSION', '5.6.0' ); /** * The main function responsible for returning the one true BuddyPress Instance to functions everywhere. @@ -58,7 +58,7 @@ function bp_php_requirements_notice() { ?> - <div id="message" class="error notice"> + <div id="message" class="error notice is-dismissible"> <p><strong><?php esc_html_e( 'Your site does not support BuddyPress.', 'buddypress' ); ?></strong></p> <?php /* translators: 1: current PHP version, 2: required PHP version */ ?> <p><?php printf( esc_html__( 'Your site is currently running PHP version %1$s, while BuddyPress requires version %2$s or greater.', 'buddypress' ), esc_html( phpversion() ), esc_html( BP_REQUIRED_PHP_VERSION ) ); ?> <?php printf( __( 'See <a href="%s">the Codex guide</a> for more information.', 'buddypress' ), 'https://codex.buddypress.org/getting-started/buddypress-2-8-will-require-php-5-3/' ); ?></p> diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-admin.php b/wp-content/plugins/buddypress/bp-members/bp-members-admin.php index 1d3b875f07491da847e73f36be31c26220137fdc..963348583d2fd67721778f3a46a6b0ea78b0dec1 100644 --- a/wp-content/plugins/buddypress/bp-members/bp-members-admin.php +++ b/wp-content/plugins/buddypress/bp-members/bp-members-admin.php @@ -12,3 +12,85 @@ defined( 'ABSPATH' ) || exit; // Load the BP Members admin. add_action( 'bp_init', array( 'BP_Members_Admin', 'register_members_admin' ) ); + +/** + * Create Users submenu to manage BuddyPress types. + * + * @since 7.0.0 + */ +function bp_members_type_admin_menu() { + if ( ! bp_is_root_blog() ) { + return; + } + + if ( bp_is_network_activated() && ! bp_is_multiblog_mode() && is_network_admin() ) { + // Adds a users.php submenu to go to the root blog Member types screen. + $member_type_admin_url = add_query_arg( 'taxonomy', bp_get_member_type_tax_name(), get_admin_url( bp_get_root_blog_id(), 'edit-tags.php' ) ); + + add_submenu_page( + 'users.php', + __( 'Member Types', 'buddypress' ), + __( 'Member Types', 'buddypress' ), + 'bp_moderate', + esc_url( $member_type_admin_url ) + ); + + } elseif ( ! is_network_admin() ) { + add_submenu_page( + 'users.php', + __( 'Member Types', 'buddypress' ), + __( 'Member Types', 'buddypress' ), + 'bp_moderate', + basename( add_query_arg( 'taxonomy', bp_get_member_type_tax_name(), bp_get_admin_url( 'edit-tags.php' ) ) ) + ); + } +} +add_action( 'bp_admin_menu', 'bp_members_type_admin_menu' ); + +/** + * Checks whether a member type already exists. + * + * @since 7.0.0 + * + * @param boolean $exists True if the member type already exists. False otherwise. + * @param string $type_id The member type identifier. + * @return boolean True if the member type already exists. False otherwise. + */ +function bp_members_type_admin_type_exists( $exists = false, $type_id = '' ) { + if ( ! $type_id ) { + return $exists; + } + + return ! is_null( bp_get_member_type_object( $type_id ) ); +} +add_filter( bp_get_member_type_tax_name() . '_check_existing_type', 'bp_members_type_admin_type_exists', 1, 2 ); + +/** + * Set the feedback messages for the Member Types Admin actions. + * + * @since 7.0.0 + * + * @param array $messages The feedback messages. + * @return array The feedback messages including the ones for the Member Types Admin actions. + */ +function bp_members_type_admin_updated_messages( $messages = array() ) { + $type_taxonomy = bp_get_member_type_tax_name(); + + $messages[ $type_taxonomy ] = array( + 0 => '', + 1 => __( 'Please define the Member Type ID field.', 'buddypress' ), + 2 => __( 'Member type successfully added.', 'buddypress' ), + 3 => __( 'Sorry, there was an error and the Member type wasn’t added.', 'buddypress' ), + // The following one needs to be != 5. + 4 => __( 'Member type successfully updated.', 'buddypress' ), + 5 => __( 'Sorry, this Member type already exists.', 'buddypress' ), + 6 => __( 'Sorry, the Member type was not deleted: it does not exist.', 'buddypress' ), + 7 => __( 'Sorry, This Member type is registered using code, deactivate the plugin or remove the custom code before trying to delete it again.', 'buddypress' ), + 8 => __( 'Sorry, there was an error while trying to delete this Member type.', 'buddypress' ), + 9 => __( 'Member type successfully deleted.', 'buddypress' ), + 10 => __( 'Member type could not be updated due to missing required information.', 'buddypress' ), + ); + + return $messages; +} +add_filter( 'term_updated_messages', 'bp_members_type_admin_updated_messages' ); diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-blocks.php b/wp-content/plugins/buddypress/bp-members/bp-members-blocks.php index a57bbfa696466d1d7b5939f4fae6d7790c36d431..11886548ba3ade64441dd9732add174a391e0cef 100644 --- a/wp-content/plugins/buddypress/bp-members/bp-members-blocks.php +++ b/wp-content/plugins/buddypress/bp-members/bp-members-blocks.php @@ -106,7 +106,7 @@ function bp_members_render_member_block( $attributes = array() ) { $avatar_container = sprintf( '<div class="item-header-avatar"> <a href="%1$s"> - <img src="%2$s" alt="%3$s" class="avatar"> + <img loading="lazy" src="%2$s" alt="%3$s" class="avatar"> </a> </div>', esc_url( $member_link ), @@ -192,3 +192,166 @@ function bp_members_render_member_block( $attributes = array() ) { */ return apply_filters( 'bp_members_render_member_block_output', $output, $params ); } + +/** + * Callback function to render the BP Members Block. + * + * @since 7.0.0 + * + * @param array $attributes The block attributes. + * @return string HTML output. + */ +function bp_members_render_members_block( $attributes = array() ) { + $bp = buddypress(); + + $block_args = wp_parse_args( + $attributes, + array( + 'itemIDs' => array(), + 'avatarSize' => 'full', + 'displayMentionSlug' => true, + 'displayUserName' => true, + 'extraData' => 'none', + 'layoutPreference' => 'list', + 'columns' => '2', + ) + ); + + $member_ids = wp_parse_id_list( $block_args['itemIDs'] ); + if ( ! array_filter( $member_ids ) ) { + return ''; + } + + $container_classes = sprintf( 'bp-block-members avatar-%s', $block_args['avatarSize'] ); + if ( 'grid' === $block_args['layoutPreference'] ) { + $container_classes .= sprintf( ' is-grid columns-%d', (int) $block_args['columns'] ); + } + + $query_args = array( + 'user_ids' => $member_ids, + ); + + if ( 'none' !== $block_args['extraData'] ) { + $query_args['populate_extras'] = true; + } + + $query = bp_core_get_users( $query_args ); + + // Initialize the output and the members. + $output = ''; + $members = $query['users']; + + foreach ( $members as $member ) { + $has_activity = false; + $member_item_classes = 'member-content'; + + if ( 'list' === $block_args['layoutPreference'] && 'latest_update' === $block_args['extraData'] && isset( $member->latest_update ) && $member->latest_update ) { + $has_activity = true; + $member_item_classes = 'member-content has-activity'; + } + + $output .= sprintf( '<div class="%s">', $member_item_classes ); + + // Get Member link. + $member_link = bp_core_get_user_domain( $member->ID ); + + // Set the Avatar output. + if ( $bp->avatar && $bp->avatar->show_avatars && 'none' !== $block_args['avatarSize'] ) { + $output .= sprintf( + '<div class="item-header-avatar"> + <a href="%1$s"> + <img class="avatar" alt="%2$s" src="%3$s" /> + </a> + </div>', + esc_url( $member_link ), + /* translators: %s: member name */ + sprintf( esc_attr__( 'Profile photo of %s', 'buddypress' ), $member->display_name ), + esc_url( + bp_core_fetch_avatar( + array( + 'item_id' => $member->ID, + 'object' => 'user', + 'type' => $block_args['avatarSize'], + 'html' => false, + ) + ) + ) + ); + } + + $output .= '<div class="member-description">'; + + // Add the latest activity the member posted. + if ( $has_activity ) { + $activity_content = ''; + $activity_data = maybe_unserialize( $member->latest_update ); + + if ( isset( $activity_data['content'] ) ) { + $activity_content = apply_filters( 'bp_get_activity_content', $activity_data['content'] ); + } + + $display_name = ''; + if ( $block_args['displayUserName'] ) { + $display_name = $member->display_name; + } + + $mention_name = ''; + if ( bp_is_active( 'activity' ) && bp_activity_do_mentions() && $block_args['displayMentionSlug'] ) { + $mention_name = '(@' . $member->user_nicename . ')'; + } + + $output .= sprintf( + '<blockquote class="wp-block-quote"> + %1$s + <cite> + <span>%2$s</span> + %3$s + </cite> + </blockquote>', + $activity_content, + esc_html( $display_name ), + esc_html( $mention_name ) + ); + } else { + if ( $block_args['displayUserName'] ) { + $output .= sprintf( + '<strong><a href="%1$s">%2$s</a></strong>', + esc_url( $member_link ), + esc_html( $member->display_name ) + ); + } + + if ( bp_is_active( 'activity' ) && bp_activity_do_mentions() && $block_args['displayMentionSlug'] ) { + $output .= sprintf( + '<span class="user-nicename">@%s</span>', + esc_html( $member->user_nicename ) + ); + } + + if ( 'last_activity' === $block_args['extraData'] ) { + $output .= sprintf( + '<time datetime="%1$s">%2$s</time>', + esc_attr( bp_core_get_iso8601_date( $member->last_activity ) ), + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + sprintf( esc_html__( 'Active %s', 'buddypress' ), bp_core_time_since( $member->last_activity ) ) + ); + } + } + + $output .= '</div></div>'; + } + + // Set the final output. + $output = sprintf( '<div class="%1$s">%2$s</div>', $container_classes, $output ); + + /** + * Filter here to edit the output of the members block. + * + * @since 7.0.0 + * + * @param string $output The HTML output of the block. + * @param array $block_args The block arguments. + * @param array $members The list of WP_User objects. + */ + return apply_filters( 'bp_members_render_members_block_output', $output, $block_args, $members ); +} diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-functions.php b/wp-content/plugins/buddypress/bp-members/bp-members-functions.php index caa8e319eb2a549d85bd099d92323251c9ad7cd9..165bc97c32cff438b502e1a2f6f716f64e2b7b56 100644 --- a/wp-content/plugins/buddypress/bp-members/bp-members-functions.php +++ b/wp-content/plugins/buddypress/bp-members/bp-members-functions.php @@ -78,6 +78,7 @@ add_action( 'bp_setup_globals', 'bp_core_define_slugs', 11 ); * bp_use_legacy_user_query value, returning true. * * @since 1.2.0 + * @since 7.0.0 Added `xprofile_query` parameter. Added `user_ids` parameter. * * @param array|string $args { * Array of arguments. All are optional. See {@link BP_User_Query} for @@ -93,9 +94,12 @@ add_action( 'bp_setup_globals', 'bp_core_define_slugs', 11 ); * `$member_type` takes precedence over this parameter. * @type array|string $member_type__not_in Array or comma-separated string of member types to be excluded. * @type mixed $include Limit results by user IDs. Default: false. + * @type mixed $user_ids IDs corresponding to the users. Default: false. * @type int $per_page Results per page. Default: 20. * @type int $page Page of results. Default: 1. * @type bool $populate_extras Fetch optional extras. Default: true. + * @type array $xprofile_query Filter results by xprofile data. Requires the xprofile + * component. See {@see BP_XProfile_Query} for details. * @type string|bool $count_total How to do total user count. Default: 'count_query'. * } * @return array @@ -114,14 +118,30 @@ function bp_core_get_users( $args = '' ) { 'member_type__in' => '', 'member_type__not_in' => '', 'include' => false, // Pass comma separated list of user_ids to limit to only these users. + 'user_ids' => false, 'per_page' => 20, // The number of results to return per page. 'page' => 1, // The page to return if limiting per page. 'populate_extras' => true, // Fetch the last active, where the user is a friend, total friend count, latest update. + 'xprofile_query' => false, 'count_total' => 'count_query' // What kind of total user count to do, if any. 'count_query', 'sql_calc_found_rows', or false. ), 'core_get_users' ); - // For legacy users. Use of BP_Core_User::get_users() is deprecated. - if ( apply_filters( 'bp_use_legacy_user_query', false, __FUNCTION__, $r ) ) { + /** + * For legacy users. Use of BP_Core_User::get_users() is deprecated. + * + * Forcing this filter to true will use the legacy user query. As of + * BuddyPress 7.0.0, mirroring of the 'last_activity' value to usermeta + * is also disabled if true. See bp_update_user_last_activity(). + * + * @since 2.0.0 + * + * @param bool $retval Defaults to false. + * @param string $function Current function name. + * @param array $r User query arguments. + */ + $use_legacy_query = apply_filters( 'bp_use_legacy_user_query', false, __FUNCTION__, $r ); + + if ( $use_legacy_query ) { $retval = BP_Core_User::get_users( $r['type'], $r['per_page'], @@ -692,18 +712,49 @@ function bp_core_process_spammer_status( $user_id, $status, $do_wp_cleanup = tru // Force the cleanup of WordPress content and status for multisite configs. if ( $do_wp_cleanup ) { - // Get the blogs for the user. - $blogs = get_blogs_of_user( $user_id, true ); + // Mark blogs as spam if the user is the sole admin of a site. + if ( is_multisite() ) { + /* + * No native function to fetch a user's blogs by role, so do it manually. + * + * This logic is mostly copied from get_blogs_of_user(). + */ + $meta = get_user_meta( $user_id ); - foreach ( (array) array_values( $blogs ) as $details ) { + foreach ( $meta as $key => $val ) { + if ( 'capabilities' !== substr( $key, -12 ) ) { + continue; + } + if ( $wpdb->base_prefix && 0 !== strpos( $key, $wpdb->base_prefix ) ) { + continue; + } + $site_id = str_replace( array( $wpdb->base_prefix, '_capabilities' ), '', $key ); + if ( ! is_numeric( $site_id ) ) { + continue; + } - // Do not mark the main or current root blog as spam. - if ( 1 == $details->userblog_id || bp_get_root_blog_id() == $details->userblog_id ) { - continue; - } + $site_id = (int) $site_id; + + // Do not mark the main or current root blog as spam. + if ( 1 === $site_id || bp_get_root_blog_id() === $site_id ) { + continue; + } + + // Now, do check for administrator role. + $role = maybe_unserialize( $val ); + if ( empty( $role['administrator'] ) ) { + continue; + } - // Update the blog status. - update_blog_status( $details->userblog_id, 'spam', $is_spam ); + // Check if the site has more than 1 admin. If so, bail. + $counts = count_users( 'time', $site_id ); + if ( empty( $counts['avail_roles']['administrator'] ) || $counts['avail_roles']['administrator'] > 1 ) { + continue; + } + + // Now we can spam the blog. + update_blog_status( $site_id, 'spam', $is_spam ); + } } // Finally, mark this user as a spammer. @@ -1011,6 +1062,8 @@ function bp_is_user_inactive( $user_id = 0 ) { * Update a user's last activity. * * @since 1.9.0 + * @since 7.0.0 Backward compatibility usermeta mirroring is only allowed if the + * legacy user query is enabled. * * @param int $user_id ID of the user being updated. * @param string $time Time of last activity, in 'Y-m-d H:i:s' format. @@ -1033,14 +1086,23 @@ function bp_update_user_last_activity( $user_id = 0, $time = '' ) { $time = bp_core_current_time(); } - // As of BuddyPress 2.0, last_activity is no longer stored in usermeta. - // However, we mirror it there for backward compatibility. Do not use! - // Remove our warning and re-add. - remove_filter( 'update_user_metadata', '_bp_update_user_meta_last_activity_warning', 10 ); - remove_filter( 'get_user_metadata', '_bp_get_user_meta_last_activity_warning', 10 ); - bp_update_user_meta( $user_id, 'last_activity', $time ); - add_filter( 'update_user_metadata', '_bp_update_user_meta_last_activity_warning', 10, 4 ); - add_filter( 'get_user_metadata', '_bp_get_user_meta_last_activity_warning', 10, 4 ); + /** This filter is documented in bp_core_get_users() */ + $use_legacy_query = apply_filters( 'bp_use_legacy_user_query', false, __FUNCTION__, [ 'user_id' => $user_id ] ); + + /* + * As of BuddyPress 2.0, last_activity is no longer stored in usermeta. + * However, we mirror it there for backward compatibility. Do not use! + * + * As of BuddyPress 7.0, mirroring is only allowed if the legacy user + * query is enabled. + */ + if ( $use_legacy_query ) { + remove_filter( 'update_user_metadata', '_bp_update_user_meta_last_activity_warning', 10 ); + remove_filter( 'get_user_metadata', '_bp_get_user_meta_last_activity_warning', 10 ); + bp_update_user_meta( $user_id, 'last_activity', $time ); + add_filter( 'update_user_metadata', '_bp_update_user_meta_last_activity_warning', 10, 4 ); + add_filter( 'get_user_metadata', '_bp_get_user_meta_last_activity_warning', 10, 4 ); + } return BP_Core_User::update_last_activity( $user_id, $time ); } @@ -1364,7 +1426,7 @@ function bp_core_boot_spammer( $user ) { // The user exists; now do a check to see if the user is a spammer // if the user is a spammer, stop them in their tracks! if ( is_a( $user, 'WP_User' ) && ( ( is_multisite() && (int) $user->spam ) || 1 == $user->user_status ) ) { - return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Your account has been marked as a spammer.', 'buddypress' ) ); + return new WP_Error( 'invalid_username', __( '<strong>Error</strong>: Your account has been marked as a spammer.', 'buddypress' ) ); } // User is good to go! @@ -1550,7 +1612,7 @@ add_filter( 'pre_update_site_option_illegal_names', 'bp_core_get_illegal_names', * Performs the following checks: * - Is the email address well-formed? * - Is the email address already used? - * - If there's an email domain blacklist, is the current domain on it? + * - If there are disallowed email domains, is the current domain among them? * - If there's an email domain whitelest, is the current domain on it? * * @since 1.6.2 @@ -1667,7 +1729,7 @@ function bp_core_validate_user_signup( $user_name, $user_email ) { $errors->add( 'user_name', __( 'Please enter a username', 'buddypress' ) ); } - // User name can't be on the blacklist. + // User name can't be on the list of illegal names. $illegal_names = get_site_option( 'illegal_names' ); if ( in_array( $user_name, (array) $illegal_names ) ) { $errors->add( 'user_name', __( 'That username is not allowed', 'buddypress' ) ); @@ -1733,6 +1795,40 @@ function bp_core_validate_user_signup( $user_name, $user_email ) { return apply_filters( 'bp_core_validate_user_signup', $result ); } +/** + * Validate a user password. + * + * @since 7.0.0 + * + * @param string $pass The password. + * @param string $confirm_pass The confirmed password. + * @param null|WP_User $userdata Null or the userdata object when a member updates their password from front-end. + * @return WP_Error A WP error object possibly containing error messages. + */ +function bp_members_validate_user_password( $pass, $confirm_pass, $userdata = null ) { + $errors = new WP_Error(); + + if ( ! $pass || ! $confirm_pass ) { + $errors->add( 'missing_user_password', __( 'Please make sure you enter your password twice', 'buddypress' ) ); + } + + if ( $pass && $confirm_pass && $pass !== $confirm_pass ) { + $errors->add( 'mismatching_user_password', __( 'The passwords you entered do not match.', 'buddypress' ) ); + } + + /** + * Filter here to add password validation errors. + * + * @since 7.0.0 + * + * @param WP_Error $errors Password validation errors. + * @param string $pass The password. + * @param string $confirm_pass The confirmed password. + * @param null|WP_User $userdata Null or the userdata object when a member updates their password from front-end. + */ + return apply_filters( 'bp_members_validate_user_password', $errors, $pass, $confirm_pass, $userdata ); +} + /** * Validate blog URL and title provided at signup. * @@ -2035,7 +2131,7 @@ function bp_core_activate_signup( $key ) { if ( isset( $user['meta'][ $key ] ) ) { $visibility_level = $user['meta'][ $key ]; } else { - $vfield = xprofile_get_field( $field_id ); + $vfield = xprofile_get_field( $field_id, null, false ); $visibility_level = isset( $vfield->default_visibility ) ? $vfield->default_visibility : 'public'; } xprofile_set_field_visibility_level( $field_id, $user_id, $visibility_level ); @@ -2337,7 +2433,7 @@ function bp_core_signup_disable_inactive( $user = null, $username = '', $passwor /* translators: %s: the activation url */ $resend_string .= sprintf( __( 'If you have not received an email yet, <a href="%s">click here to resend it</a>.', 'buddypress' ), esc_url( $resend_url ) ); - return new WP_Error( 'bp_account_not_activated', __( '<strong>ERROR</strong>: Your account has not been activated. Check your email for the activation link.', 'buddypress' ) . $resend_string ); + return new WP_Error( 'bp_account_not_activated', __( '<strong>Error</strong>: Your account has not been activated. Check your email for the activation link.', 'buddypress' ) . $resend_string ); } add_filter( 'authenticate', 'bp_core_signup_disable_inactive', 30, 3 ); @@ -2368,7 +2464,7 @@ function bp_members_login_resend_activation_email() { // Add feedback message. if ( ! empty( $resend['errors'] ) ) { - $error = __( '<strong>ERROR</strong>: Your account has already been activated.', 'buddypress' ); + $error = __( '<strong>Error</strong>: Your account has already been activated.', 'buddypress' ); } else { $error = __( 'Activation email resent! Please check your inbox or spam folder.', 'buddypress' ); } @@ -2513,7 +2609,7 @@ add_action( 'bp_init', 'bp_stop_live_spammer', 5 ); function bp_live_spammer_login_error() { global $error; - $error = __( '<strong>ERROR</strong>: Your account has been marked as a spammer.', 'buddypress' ); + $error = __( '<strong>Error</strong>: Your account has been marked as a spammer.', 'buddypress' ); // Shake shake shake! add_action( 'login_head', 'wp_shake_js', 12 ); @@ -2574,6 +2670,136 @@ function bp_member_type_tax_name() { return apply_filters( 'bp_get_member_type_tax_name', 'bp_member_type' ); } +/** + * Returns labels used by the member type taxonomy. + * + * @since 7.0.0 + * + * @return array + */ +function bp_get_member_type_tax_labels() { + + /** + * Filters Member type taxonomy labels. + * + * @since 7.0.0 + * + * @param array $value Associative array (name => label). + */ + return apply_filters( + 'bp_get_member_type_tax_labels', + array( + + // General labels + 'name' => _x( 'Member Types', 'Member type taxonomy name', 'buddypress' ), + 'singular_name' => _x( 'Member Type', 'Member type taxonomy singular name', 'buddypress' ), + 'search_items' => _x( 'Search Member Types', 'Member type taxonomy search items label', 'buddypress' ), + 'popular_items' => _x( 'Popular Member Types', 'Member type taxonomy popular items label', 'buddypress' ), + 'all_items' => _x( 'All Member Types', 'Member type taxonomy all items label', 'buddypress' ), + 'parent_item' => _x( 'Parent Member Type', 'Member type taxonomy parent item label', 'buddypress' ), + 'parent_item_colon' => _x( 'Parent Member Type:', 'Member type taxonomy parent item label', 'buddypress' ), + 'edit_item' => _x( 'Edit Member Type', 'Member type taxonomy edit item label', 'buddypress' ), + 'view_item' => _x( 'View Member Type', 'Member type taxonomy view item label', 'buddypress' ), + 'update_item' => _x( 'Update Member Type', 'Member type taxonomy update item label', 'buddypress' ), + 'add_new_item' => _x( 'Add New Member Type', 'Member type taxonomy add new item label', 'buddypress' ), + 'new_item_name' => _x( 'New Member Type Name', 'Member type taxonomy new item name label', 'buddypress' ), + 'separate_items_with_commas' => _x( 'Separate member types with commas', 'Member type taxonomy separate items with commas label', 'buddypress' ), + 'add_or_remove_items' => _x( 'Add or remove member types', 'Member type taxonomy add or remove items label', 'buddypress' ), + 'choose_from_most_used' => _x( 'Choose from the most used meber types', 'Member type taxonomy choose from most used label', 'buddypress' ), + 'not_found' => _x( 'No member types found.', 'Member type taxonomy not found label', 'buddypress' ), + 'no_terms' => _x( 'No member types', 'Member type taxonomy no terms label', 'buddypress' ), + 'items_list_navigation' => _x( 'Member Types list navigation', 'Member type taxonomy items list navigation label', 'buddypress' ), + 'items_list' => _x( 'Member Types list', 'Member type taxonomy items list label', 'buddypress' ), + + /* translators: Tab heading when selecting from the most used terms. */ + 'most_used' => _x( 'Most Used', 'Member type taxonomy most used items label', 'buddypress' ), + 'back_to_items' => _x( '← Back to Member Types', 'Member type taxonomy back to items label', 'buddypress' ), + + // Specific to BuddyPress. + 'bp_type_id_label' => _x( 'Member Type ID', 'BP Member type ID label', 'buddypress' ), + 'bp_type_id_description' => _x( 'Enter a lower-case string without spaces or special characters (used internally to identify the member type).', 'BP Member type ID description', 'buddypress' ), + 'bp_type_show_in_list' => _x( 'Show on Member', 'BP Member type show in list', 'buddypress' ), + ) + ); +} + +/** + * Returns arguments used by the Member type taxonomy. + * + * @since 7.0.0 + * + * @return array + */ +function bp_get_member_type_tax_args() { + + /** + * Filters Member type taxonomy args. + * + * @since 7.0.0 + * + * @param array $value Associative array (key => arg). + */ + return apply_filters( + 'bp_get_member_type_tax_args', + array_merge( + array( + 'description' => _x( 'BuddyPress Member Types', 'Member type taxonomy description', 'buddypress' ), + 'labels' => array_merge( bp_get_member_type_tax_labels(), bp_get_taxonomy_common_labels() ), + ), + bp_get_taxonomy_common_args() + ) + ); +} + +/** + * Extend generic Type metadata schema to match Member Type needs. + * + * @since 7.0.0 + * + * @param array $schema The generic Type metadata schema. + * @param string $taxonomy The taxonomy name the schema applies to. + * @return array The Member Type metadata schema. + */ +function bp_get_member_type_metadata_schema( $schema = array(), $taxonomy = '' ) { + if ( bp_get_member_type_tax_name() === $taxonomy ) { + + // Directory. + if ( isset( $schema['bp_type_has_directory']['description'] ) ) { + $schema['bp_type_has_directory']['description'] = __( 'Make a list of members matching this type available on the members directory.', 'buddypress' ); + } + + // Slug. + if ( isset( $schema['bp_type_directory_slug']['description'] ) ) { + $schema['bp_type_directory_slug']['description'] = __( 'Enter if you want the type slug to be different from its ID.', 'buddypress' ); + } + + // List. + $schema['bp_type_show_in_list'] = array( + 'description' => __( 'Show where member types may be listed, like in the member header.', 'buddypress' ), + 'type' => 'boolean', + 'single' => true, + 'sanitize_callback' => 'absint', + ); + } + + return $schema; +} +add_filter( 'bp_get_type_metadata_schema', 'bp_get_member_type_metadata_schema', 1, 2 ); + +/** + * Registers the Member type metadata. + * + * @since 7.0.0 + */ +function bp_register_member_type_metadata() { + $type_taxonomy = bp_get_member_type_tax_name(); + + foreach ( bp_get_type_metadata_schema( false, $type_taxonomy ) as $meta_key => $meta_args ) { + bp_register_type_meta( $type_taxonomy, $meta_key, $meta_args ); + } +} +add_action( 'bp_register_type_metadata', 'bp_register_member_type_metadata' ); + /** * Register a member type. * @@ -2593,6 +2819,10 @@ function bp_member_type_tax_name() { * Pass `true` to use the `$member_type` string as the type's slug. * Pass a string to customize the slug. Pass `false` to disable. * Default: true. + * @type bool $show_in_list Whether this member type should be shown in lists rendered by + * bp_member_type_list(). Default: false. + * @type bool $code Whether this member type is registered using code. Default: true. + * @type int $db_id The member type term ID. Default: 0. * } * @return object|WP_Error Member type object on success, WP_Error object on failure. */ @@ -2606,6 +2836,9 @@ function bp_register_member_type( $member_type, $args = array() ) { $r = bp_parse_args( $args, array( 'labels' => array(), 'has_directory' => true, + 'show_in_list' => false, + 'code' => true, + 'db_id' => 0, ), 'register_member_type' ); $member_type = sanitize_key( $member_type ); @@ -2653,6 +2886,9 @@ function bp_register_member_type( $member_type, $args = array() ) { $r['has_directory'] = false; } + // Show the list of member types on front-end (member header, for now). + $r['show_in_list'] = (bool) $r['show_in_list']; + $bp->members->types[ $member_type ] = $type = (object) $r; /** @@ -2705,6 +2941,11 @@ function bp_get_member_type_object( $member_type ) { function bp_get_member_types( $args = array(), $output = 'names', $operator = 'and' ) { $types = buddypress()->members->types; + // Merge with types available into the database. + if ( ! isset( $args['code'] ) || true !== $args['code'] ) { + $types = bp_get_taxonomy_types( bp_get_member_type_tax_name(), $types ); + } + $types = wp_filter_object_list( $types, $args, $operator ); /** @@ -2728,21 +2969,101 @@ function bp_get_member_types( $args = array(), $output = 'names', $operator = 'a return $types; } +/** + * Only gets the member types registered by code. + * + * @since 7.0.0 + * + * @return array The member types registered by code. + */ +function bp_get_member_types_registered_by_code() { + return bp_get_member_types( + array( + 'code' => true, + ), + 'objects' + ); +} +add_filter( bp_get_member_type_tax_name() . '_registered_by_code', 'bp_get_member_types_registered_by_code' ); + +/** + * Generates missing metadata for a type registered by code. + * + * @since 7.0.0 + * + * @return array The member type metadata. + */ +function bp_set_registered_by_code_member_type_metadata( $metadata = array(), $type = '' ) { + $member_type = bp_get_member_type_object( $type ); + + foreach ( get_object_vars( $member_type ) as $object_key => $object_value ) { + if ( 'labels' === $object_key ) { + foreach ( $object_value as $label_key => $label_value ) { + $metadata[ 'bp_type_' . $label_key ] = $label_value; + } + } elseif ( ! in_array( $object_key, array( 'name', 'code', 'db_id' ), true ) ) { + $metadata[ 'bp_type_' . $object_key ] = $object_value; + } + } + + /** + * Save metadata into database to avoid generating metadata + * each time a type is listed into the Types Admin screen. + */ + if ( isset( $member_type->db_id ) && $member_type->db_id ) { + bp_update_type_metadata( $member_type->db_id, bp_get_member_type_tax_name(), $metadata ); + } + + return $metadata; +} +add_filter( bp_get_member_type_tax_name() . '_set_registered_by_code_metada', 'bp_set_registered_by_code_member_type_metadata', 10, 2 ); + +/** + * Insert member types registered by code not yet saved into the database as WP Terms. + * + * @since 7.0.0 + */ +function bp_insert_member_types_registered_by_code() { + $all_types = bp_get_member_types( array(), 'objects' ); + $unsaved_types = wp_filter_object_list( $all_types, array( 'db_id' => 0 ), 'and', 'name' ); + + if ( $unsaved_types ) { + foreach ( $unsaved_types as $type_name ) { + bp_insert_term( + $type_name, + bp_get_member_type_tax_name(), + array( + 'slug' => $type_name, + ) + ); + } + } +} +add_action( bp_get_member_type_tax_name() . '_add_form', 'bp_insert_member_types_registered_by_code', 1 ); + /** * Set type for a member. * * @since 2.2.0 + * @since 7.0.0 $member_type parameter also accepts an array of member type names. * - * @param int $user_id ID of the user. - * @param string $member_type Member type. - * @param bool $append Optional. True to append this to existing types for user, - * false to replace. Default: false. + * @param int $user_id ID of the user. + * @param string|array $member_type The member type name or an array of member type names. + * @param bool $append Optional. True to append this to existing types for user, + * false to replace. Default: false. * @return false|array $retval See {@see bp_set_object_terms()}. */ function bp_set_member_type( $user_id, $member_type, $append = false ) { // Pass an empty $member_type to remove a user's type. - if ( ! empty( $member_type ) && ! bp_get_member_type_object( $member_type ) ) { - return false; + if ( ! empty( $member_type ) ) { + $member_types = (array) $member_type; + $valid_types = array_filter( array_map( 'bp_get_member_type_object', $member_types ) ); + + if ( $valid_types ) { + $member_type = wp_list_pluck( $valid_types, 'name' ); + } else { + return false; + } } $retval = bp_set_object_terms( $user_id, $member_type, bp_get_member_type_tax_name(), $append ); @@ -2756,9 +3077,9 @@ function bp_set_member_type( $user_id, $member_type, $append = false ) { * * @since 2.2.0 * - * @param int $user_id ID of the user whose member type has been updated. - * @param string $member_type Member type. - * @param bool $append Whether the type is being appended to existing types. + * @param int $user_id ID of the user whose member type has been updated. + * @param string|array $member_type The member type name or an array of member type names. + * @param bool $append Whether the type is being appended to existing types. */ do_action( 'bp_set_member_type', $user_id, $member_type, $append ); } @@ -2811,14 +3132,17 @@ function bp_remove_member_type( $user_id, $member_type ) { * Get type for a member. * * @since 2.2.0 + * @since 7.0.0 Adds the `$use_db` parameter. * * @param int $user_id ID of the user. * @param bool $single Optional. Whether to return a single type string. If multiple types are found * for the user, the oldest one will be returned. Default: true. + * @param bool $use_db Optional. Whether to request all member types or only the ones registered by code. + * Default: true. * @return string|array|bool On success, returns a single member type (if $single is true) or an array of member * types (if $single is false). Returns false on failure. */ -function bp_get_member_type( $user_id, $single = true ) { +function bp_get_member_type( $user_id, $single = true, $use_db = true ) { $types = wp_cache_get( $user_id, 'bp_member_member_type' ); if ( false === $types ) { @@ -2838,6 +3162,12 @@ function bp_get_member_type( $user_id, $single = true ) { } } + if ( false === $use_db && $types ) { + $registred_by_code = bp_get_member_types_registered_by_code(); + $ctype_names = wp_list_pluck( $registred_by_code, 'name' ); + $types = array_intersect( $types, $ctype_names ); + } + $type = false; if ( ! empty( $types ) ) { if ( $single ) { @@ -2852,9 +3182,10 @@ function bp_get_member_type( $user_id, $single = true ) { * * @since 2.2.0 * - * @param string $type Member type. - * @param int $user_id ID of the user. - * @param bool $single Whether to return a single type string, or an array. + * @param string|array|bool $type a single member type (if $single is true) or an array of member types + * (if $single is false) or false on failure. + * @param int $user_id ID of the user. + * @param bool $single Whether to return a single type string, or an array. */ return apply_filters( 'bp_get_member_type', $type, $user_id, $single ); } diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-template.php b/wp-content/plugins/buddypress/bp-members/bp-members-template.php index f2d428b4bf221e167ef8826109874485620d6147..5ceda30787c7547c50863a6f4367b9dccf63a685 100644 --- a/wp-content/plugins/buddypress/bp-members/bp-members-template.php +++ b/wp-content/plugins/buddypress/bp-members/bp-members-template.php @@ -282,6 +282,7 @@ function bp_activate_slug() { * display a list of members. * * @since 1.2.0 + * @since 7.0.0 Added `xprofile_query` parameter. Added `user_ids` parameter. * * @global object $members_template {@link BP_Members_Template} * @@ -309,6 +310,8 @@ function bp_activate_slug() { * @type array|int|string|bool $exclude Exclude users from results by ID. Accepts an array, a single * integer, a comma-separated list of IDs, or false (to disable * this limiting). Default: false. + * @type array|string|bool $user_ids An array or comma-separated list of IDs, or false (to + * disable this limiting). Default: false. * @type int $user_id If provided, results are limited to the friends of the specified * user. When on a user's Friends page, defaults to the ID of the * displayed user. Otherwise defaults to 0. @@ -325,6 +328,8 @@ function bp_activate_slug() { * Default: false. * @type mixed $meta_value When used with meta_key, limits results by the a matching * usermeta value. Default: false. + * @type array $xprofile_query Filter results by xprofile data. Requires the xprofile + * component. See {@see BP_XProfile_Query} for details. * @type bool $populate_extras Whether to fetch optional data, such as friend counts. * Default: true. * } @@ -368,6 +373,7 @@ function bp_has_members( $args = '' ) { 'include' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to only show these users. 'exclude' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to exclude these users. + 'user_ids' => false, 'user_id' => $user_id, // Pass a user_id to only show friends of this user. 'member_type' => $member_type, @@ -378,6 +384,7 @@ function bp_has_members( $args = '' ) { 'meta_key' => false, // Only return users with this usermeta. 'meta_value' => false, // Only return users where the usermeta value matches. Requires meta_key. + 'xprofile_query' => false, 'populate_extras' => true // Fetch usermeta? Friend count, last active etc. ), 'has_members' ); @@ -396,23 +403,7 @@ function bp_has_members( $args = '' ) { } // Query for members and populate $members_template global. - $members_template = new BP_Core_Members_Template( - $r['type'], - $r['page'], - $r['per_page'], - $r['max'], - $r['user_id'], - $r['search_terms'], - $r['include'], - $r['populate_extras'], - $r['exclude'], - $r['meta_key'], - $r['meta_value'], - $r['page_arg'], - $r['member_type'], - $r['member_type__in'], - $r['member_type__not_in'] - ); + $members_template = new BP_Core_Members_Template( $r ); /** * Filters whether or not BuddyPress has members to iterate over. @@ -964,7 +955,8 @@ function bp_member_last_active( $args = array() ) { // Backwards compatibility for anyone forcing a 'true' active_format. if ( true === $r['active_format'] ) { - $r['active_format'] = __( 'active %s', 'buddypress' ); + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + $r['active_format'] = __( 'Active %s', 'buddypress' ); } // Member has logged in at least one time. @@ -1695,10 +1687,12 @@ function bp_last_activity( $user_id = 0 ) { */ function bp_get_last_activity( $user_id = 0 ) { - if ( empty( $user_id ) ) + if ( empty( $user_id ) ) { $user_id = bp_displayed_user_id(); + } - $last_activity = bp_core_get_last_activity( bp_get_user_last_activity( $user_id ), __('active %s', 'buddypress') ); + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + $last_activity = bp_core_get_last_activity( bp_get_user_last_activity( $user_id ), __( 'Active %s', 'buddypress') ); /** * Filters the 'active [x days ago]' string for a user. @@ -2026,6 +2020,190 @@ function bp_current_member_type_message() { return apply_filters( 'bp_get_current_member_type_message', $message ); } +/** + * Output member type directory link. + * + * @since 7.0.0 + * + * @param string $member_type Unique member type identifier as used in bp_register_member_type(). + */ +function bp_member_type_directory_link( $member_type = '' ) { + echo bp_get_member_type_directory_link( $member_type ); +} + /** + * Return member type directory link. + * + * @since 7.0.0 + * + * @param string $member_type Unique member type identifier as used in bp_register_member_type(). + * @return string + */ + function bp_get_member_type_directory_link( $member_type = '' ) { + if ( empty( $member_type ) ) { + return ''; + } + + $member_type_object = bp_get_member_type_object( $member_type ); + + if ( ! isset( $member_type_object->labels['name'] ) ) { + return ''; + } + + $member_type_text = $member_type_object->labels['name']; + if ( isset( $member_type_object->labels['singular_name'] ) && $member_type_object->labels['singular_name'] ) { + $member_type_text = $member_type_object->labels['singular_name']; + } + + if ( empty( $member_type_object->has_directory ) ) { + return esc_html( $member_type_text ); + } + + return sprintf( + '<a href="%1$s">%2$s</a>', + esc_url( bp_get_member_type_directory_permalink( $member_type ) ), + esc_html( $member_type_text ) + ); + } + +/** + * Output a comma-delimited list of member types. + * + * @since 7.0.0 + * @see bp_get_member_type_list() For additional information on default arguments. + * + * @param int $user_id User ID. + * @param array $r Optional. Member type list arguments. Default empty array. + */ +function bp_member_type_list( $user_id = 0, $r = array() ) { + echo bp_get_member_type_list( $user_id, $r ); +} + /** + * Return a comma-delimited list of member types. + * + * @since 7.0.0 + * + * @param int $user_id User ID. Defaults to displayed user ID if on a member page. + * @param array|string $r { + * Array of parameters. All items are optional. + * @type string $parent_element Element to wrap around the list. Defaults to 'p'. + * @type array $parent_attr Element attributes for parent element. Defaults to + * array( 'class' => 'bp-member-type-list' ). + * @type array $label Plural and singular labels to use before the list. Defaults to + * array( 'plural' => 'Member Types:', 'singular' => 'Member Type:' ). + * @type string $label_element Element to wrap around the label. Defaults to 'strong'. + * @type array $label_attr Element attributes for label element. Defaults to array(). + * @type bool $show_all Whether to show all registered group types. Defaults to 'false'. If + * 'false', only shows member types with the 'show_in_list' parameter set to + * true. See bp_register_member_type() for more info. + * @type string $list_element Element to wrap around the comma separated list of membet types. Defaults to ''. + * @type string $list_element_attr Element attributes for list element. Defaults to array(). + * } + * @return string + */ + function bp_get_member_type_list( $user_id = 0, $r = array() ) { + if ( empty( $user_id ) ) { + $user_id = bp_displayed_user_id(); + } + + $r = bp_parse_args( + $r, + array( + 'parent_element' => 'p', + 'parent_attr' => array( + 'class' => 'bp-member-type-list', + ), + 'label' => array(), + 'label_element' => 'strong', + 'label_attr' => array(), + 'show_all' => false, + 'list_element' => '', + 'list_element_attr' => array(), + ), + 'member_type_list' + ); + + // Should the label be output? + $has_label = ! empty( $r['label'] ); + + $labels = wp_parse_args( + $r['label'], + array( + 'plural' => __( 'Member Types:', 'buddypress' ), + 'singular' => __( 'Member Type:', 'buddypress' ), + ) + ); + + $retval = ''; + $types = bp_get_member_type( $user_id, false ); + + if ( $types ) { + // Make sure we can show the type in the list. + if ( false === $r['show_all'] ) { + $types = array_intersect( bp_get_member_types( array( 'show_in_list' => true ) ), $types ); + if ( empty( $types ) ) { + return $retval; + } + } + + $before = $after = $label = ''; + $count = count( $types ); + + if ( 1 === $count ) { + $label_text = $labels['singular']; + } else { + $label_text = $labels['plural']; + } + + // Render parent element. + if ( ! empty( $r['parent_element'] ) ) { + $parent_elem = new BP_Core_HTML_Element( array( + 'element' => $r['parent_element'], + 'attr' => $r['parent_attr'], + ) ); + + // Set before and after. + $before = $parent_elem->get( 'open_tag' ); + $after = $parent_elem->get( 'close_tag' ); + } + + // Render label element. + if ( ! empty( $r['label_element'] ) ) { + $label = new BP_Core_HTML_Element( array( + 'element' => $r['label_element'], + 'attr' => $r['label_attr'], + 'inner_html' => esc_html( $label_text ), + ) ); + $label = $label->contents() . ' '; + + // No element, just the label. + } elseif ( $has_label ) { + $label = esc_html( $label_text ); + } + + // The list of types. + $list = implode( ', ', array_map( 'bp_get_member_type_directory_link', $types ) ); + + // Render the list of types element. + if ( ! empty( $r['list_element'] ) ) { + $list_element = new BP_Core_HTML_Element( array( + 'element' => $r['list_element'], + 'attr' => $r['list_element_attr'], + 'inner_html' => $list, + ) ); + + $list = $list_element->contents(); + } + + // Comma-delimit each type into the group type directory link. + $label .= $list; + + // Retval time! + $retval = $before . $label . $after; + } + + return $retval; + } + /** Signup Form ***************************************************************/ /** @@ -2425,7 +2603,7 @@ function bp_signup_avatar_dir_value() { */ function bp_signup_requires_privacy_policy_acceptance() { // Bail if we're running a version of WP that doesn't have the Privacy Policy feature. - if ( version_compare( $GLOBALS['wp_version'], '4.9.6', '<' ) ) { + if ( bp_is_running_wp( '4.9.6', '<' ) ) { return false; } diff --git a/wp-content/plugins/buddypress/bp-members/classes/class-bp-core-members-template.php b/wp-content/plugins/buddypress/bp-members/classes/class-bp-core-members-template.php index 7512c4442440e223fab8b3e44bae1a2bd61e97c7..af00c6bdfb34f21aea4c5bd672fda1d7585e48d6 100644 --- a/wp-content/plugins/buddypress/bp-members/classes/class-bp-core-members-template.php +++ b/wp-content/plugins/buddypress/bp-members/classes/class-bp-core-members-template.php @@ -110,51 +110,111 @@ class BP_Core_Members_Template { * Constructor method. * * @since 1.5.0 + * @since 7.0.0 Added $xprofile_query parameter. Added $user_ids parameter. * * @see BP_User_Query for an in-depth description of parameters. * - * @param string $type Sort order. - * @param int $page_number Page of results. - * @param int $per_page Number of results per page. - * @param int $max Max number of results to return. - * @param int $user_id Limit to friends of a user. - * @param string $search_terms Limit to users matching search terms. - * @param array $include Limit results by these user IDs. - * @param bool $populate_extras Fetch optional extras. - * @param array $exclude Exclude these IDs from results. - * @param array $meta_key Limit to users with a meta_key. - * @param array $meta_value Limit to users with a meta_value (with meta_key). - * @param string $page_arg Optional. The string used as a query parameter in pagination links. - * Default: 'upage'. - * @param array|string $member_type Array or comma-separated string of member types to limit results to. - * @param array|string $member_type__in Array or comma-separated string of member types to limit results to. - * @param array|string $member_type__not_in Array or comma-separated string of member types to exclude - * from results. + * @param array $args { + * Array of arguments. Supports all arguments of BP_User_Query. Additional + * arguments, or those with different defaults, are described below. + * + * @type int $page_number Page of results. Accepted for legacy reasons. Use 'page' instead. + * @type int $max Max number of results to return. + * @type string $page_arg Optional. The string used as a query parameter in pagination links. + * } */ - function __construct( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude, $meta_key, $meta_value, $page_arg = 'upage', $member_type = '', $member_type__in = '', $member_type__not_in = '' ) { + public function __construct( $args ) { + // Backward compatibility with old method of passing arguments. + if ( ! is_array( $args ) || func_num_args() > 1 ) { + _deprecated_argument( __METHOD__, '7.0.0', sprintf( __( 'Arguments passed to %1$s should be in an associative array. See the inline documentation at %2$s for more details.', 'buddypress' ), __METHOD__, __FILE__ ) ); + + $old_args_keys = array( + 0 => 'type', + 1 => 'page_number', + 2 => 'per_page', + 3 => 'max', + 4 => 'user_id', + 5 => 'search_terms', + 6 => 'include', + 7 => 'populate_extras', + 8 => 'exclude', + 9 => 'meta_key', + 10 => 'meta_value', + 11 => 'page_arg', + 12 => 'member_type', + 13 => 'member_type__in', + 14 => 'member_type__not_in' + ); - $this->pag_arg = sanitize_key( $page_arg ); - $this->pag_page = bp_sanitize_pagination_arg( $this->pag_arg, $page_number ); - $this->pag_num = bp_sanitize_pagination_arg( 'num', $per_page ); - $this->type = $type; + $args = bp_core_parse_args_array( $old_args_keys, func_get_args() ); + } - if ( !empty( $_REQUEST['letter'] ) ) - $this->members = BP_Core_User::get_users_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page, $populate_extras, $exclude ); - else - $this->members = bp_core_get_users( array( 'type' => $this->type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'include' => $include, 'search_terms' => $search_terms, 'populate_extras' => $populate_extras, 'exclude' => $exclude, 'meta_key' => $meta_key, 'meta_value' => $meta_value, 'member_type' => $member_type, 'member_type__in' => $member_type__in, 'member_type__not_in' => $member_type__not_in ) ); + // Support both 'page_number' and 'page' for backward compatibility. + $args['page_number'] = isset( $args['page_number'] ) ? $args['page_number'] : $args['page']; + + $defaults = array( + 'type' => 'active', + 'page_number' => 1, + 'per_page' => 20, + 'max' => false, + 'user_id' => false, + 'search_terms' => null, + 'include' => false, + 'populate_extras' => true, + 'exclude' => false, + 'user_ids' => false, + 'meta_key' => false, + 'meta_value' => false, + 'page_arg' => 'upage', + 'member_type' => '', + 'member_type__in' => '', + 'member_type__not_in' => '', + 'xprofile_query' => false, + ); + $r = wp_parse_args( $args, $defaults ); + + $this->pag_arg = sanitize_key( $r['page_arg'] ); + $this->pag_page = bp_sanitize_pagination_arg( $this->pag_arg, $r['page_number'] ); + $this->pag_num = bp_sanitize_pagination_arg( 'num', $r['per_page'] ); + $this->type = $r['type']; + + if ( ! empty( $_REQUEST['letter'] ) ) { + $this->members = BP_Core_User::get_users_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page, $r['populate_extras'], $r['exclude'] ); + } else { + $this->members = bp_core_get_users( + array( + 'type' => $this->type, + 'per_page' => $this->pag_num, + 'page' => $this->pag_page, + 'user_id' => $r['user_id'], + 'include' => $r['include'], + 'search_terms' => $r['search_terms'], + 'populate_extras' => $r['populate_extras'], + 'exclude' => $r['exclude'], + 'user_ids' => $r['user_ids'], + 'meta_key' => $r['meta_key'], + 'meta_value' => $r['meta_value'], + 'member_type' => $r['member_type'], + 'member_type__in' => $r['member_type__in'], + 'member_type__not_in' => $r['member_type__not_in'], + 'xprofile_query' => $r['xprofile_query'], + ) + ); + } - if ( !$max || $max >= (int) $this->members['total'] ) + if ( ! $r['max'] || $r['max'] >= (int) $this->members['total'] ) { $this->total_member_count = (int) $this->members['total']; - else - $this->total_member_count = (int) $max; + } else { + $this->total_member_count = (int) $r['max']; + } $this->members = $this->members['users']; - if ( $max ) { - if ( $max >= count( $this->members ) ) { + if ( $r['max'] ) { + if ( $r['max'] >= count( $this->members ) ) { $this->member_count = count( $this->members ); } else { - $this->member_count = (int) $max; + $this->member_count = (int) $r['max']; } } else { $this->member_count = count( $this->members ); @@ -178,9 +238,9 @@ class BP_Core_Members_Template { */ $add_args = array(); - if ( ! empty( $search_terms ) ) { + if ( ! empty( $r['search_terms'] ) ) { $query_arg = bp_core_get_component_search_query_arg( 'members' ); - $add_args[ $query_arg ] = urlencode( $search_terms ); + $add_args[ $query_arg ] = urlencode( $r['search_terms'] ); } $this->pag_links = paginate_links( array( diff --git a/wp-content/plugins/buddypress/bp-members/classes/class-bp-members-admin.php b/wp-content/plugins/buddypress/bp-members/classes/class-bp-members-admin.php index a033779c0a0bfadc68bf95b425e3c225e0d43d53..c999cb923b381ea47bf4ddb2ac08d10b6e6fad5c 100644 --- a/wp-content/plugins/buddypress/bp-members/classes/class-bp-members-admin.php +++ b/wp-content/plugins/buddypress/bp-members/classes/class-bp-members-admin.php @@ -983,7 +983,7 @@ class BP_Members_Admin { if ( ! empty( $notice ) ) : ?> - <div <?php if ( 'updated' === $notice['class'] ) : ?>id="message" <?php endif; ?>class="<?php echo esc_attr( $notice['class'] ); ?>"> + <div <?php if ( 'updated' === $notice['class'] ) : ?>id="message" <?php endif; ?>class="<?php echo esc_attr( $notice['class'] ); ?> notice is-dismissible"> <p><?php echo esc_html( $notice['message'] ); ?></p> @@ -998,47 +998,24 @@ class BP_Members_Admin { <?php endif; ?> <div class="wrap" id="community-profile-page"> - <?php if ( version_compare( $GLOBALS['wp_version'], '4.8', '>=' ) ) : ?> + <h1 class="wp-heading-inline"><?php echo esc_html( $title ); ?></h1> - <h1 class="wp-heading-inline"><?php echo esc_html( $title ); ?></h1> + <?php if ( empty( $this->is_self_profile ) ) : ?> - <?php if ( empty( $this->is_self_profile ) ) : ?> - - <?php if ( current_user_can( 'create_users' ) ) : ?> - - <a href="user-new.php" class="page-title-action"><?php echo esc_html_x( 'Add New', 'user', 'buddypress' ); ?></a> + <?php if ( current_user_can( 'create_users' ) ) : ?> - <?php elseif ( is_multisite() && current_user_can( 'promote_users' ) ) : ?> + <a href="user-new.php" class="page-title-action"><?php echo esc_html_x( 'Add New', 'user', 'buddypress' ); ?></a> - <a href="user-new.php" class="page-title-action"><?php echo esc_html_x( 'Add Existing', 'user', 'buddypress' ); ?></a> + <?php elseif ( is_multisite() && current_user_can( 'promote_users' ) ) : ?> - <?php endif; ?> + <a href="user-new.php" class="page-title-action"><?php echo esc_html_x( 'Add Existing', 'user', 'buddypress' ); ?></a> <?php endif; ?> - <hr class="wp-header-end"> - - <?php else : ?> - - <h1><?php echo esc_html( $title ); ?> - - <?php if ( empty( $this->is_self_profile ) ) : ?> - - <?php if ( current_user_can( 'create_users' ) ) : ?> - - <a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'user', 'buddypress' ); ?></a> - - <?php elseif ( is_multisite() && current_user_can( 'promote_users' ) ) : ?> - - <a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add Existing', 'user', 'buddypress' ); ?></a> - - <?php endif; ?> - - <?php endif; ?> - </h1> - <?php endif; ?> + <hr class="wp-header-end"> + <?php if ( ! empty( $user ) ) : $this->profile_nav( $user, 'BuddyPress' ); ?> @@ -1309,26 +1286,30 @@ class BP_Members_Admin { return; } - $types = bp_get_member_types( array(), 'objects' ); - $current_type = bp_get_member_type( $user->ID ); + $types = bp_get_member_types( array(), 'objects' ); + $current_type = (array) bp_get_member_type( $user->ID, false ); + $types_count = count( array_filter( $current_type ) ); ?> - <label for="bp-members-profile-member-type" class="screen-reader-text"><?php + <label for="bp-members-profile-member-type" class="screen-reader-text"> + <?php /* translators: accessibility text */ esc_html_e( 'Select member type', 'buddypress' ); - ?></label> - <select name="bp-members-profile-member-type" id="bp-members-profile-member-type"> - <option value="" <?php selected( '', $current_type ); ?>><?php - /* translators: no option picked in select box */ - esc_attr_e( '----', 'buddypress' ); - ?></option> + ?> + </label> + <ul class="categorychecklist form-no-clear"> <?php foreach ( $types as $type ) : ?> - <option value="<?php echo esc_attr( $type->name ) ?>" <?php selected( $type->name, $current_type ) ?>><?php echo esc_html( $type->labels['singular_name'] ) ?></option> + <li> + <label class="selectit"> + <input value="<?php echo esc_attr( $type->name ) ?>" name="bp-members-profile-member-type[]" type="checkbox" <?php checked( true, in_array( $type->name, $current_type ) ); ?>> + <?php echo esc_html( $type->labels['singular_name'] ); ?> + </label> + </li> <?php endforeach; ?> - </select> + <input type="hidden" value="<?php echo intval( $types_count ); ?>" name="bp-members-profile-member-types-count" /> + </ul> <?php - wp_nonce_field( 'bp-member-type-change-' . $user->ID, 'bp-member-type-nonce' ); } @@ -1338,7 +1319,7 @@ class BP_Members_Admin { * @since 2.2.0 */ public function process_member_type_update() { - if ( ! isset( $_POST['bp-member-type-nonce'] ) || ! isset( $_POST['bp-members-profile-member-type'] ) ) { + if ( ! isset( $_POST['bp-member-type-nonce'] ) || ! isset( $_POST['bp-members-profile-member-types-count'] ) ) { return; } @@ -1351,9 +1332,16 @@ class BP_Members_Admin { return; } - // Member type string must either reference a valid member type, or be empty. - $member_type = stripslashes( $_POST['bp-members-profile-member-type'] ); - if ( ! empty( $member_type ) && ! bp_get_member_type_object( $member_type ) ) { + if ( isset( $_POST['bp-members-profile-member-type'] ) ) { + // Member type [string] must either reference a valid member type, or be empty. + $member_type = wp_parse_slug_list( wp_unslash( $_POST['bp-members-profile-member-type'] ) ); + $member_type = array_filter( $member_type ); + } elseif ( 0 !== intval( $_POST['bp-members-profile-member-types-count'] ) ) { + $member_type = false; + } + + // Nothing to do there. + if ( ! isset( $member_type ) ) { return; } @@ -1986,11 +1974,11 @@ class BP_Members_Admin { if ( ! empty( $notice ) ) : if ( 'updated' === $notice['class'] ) : ?> - <div id="message" class="<?php echo esc_attr( $notice['class'] ); ?>"> + <div id="message" class="<?php echo esc_attr( $notice['class'] ); ?> notice is-dismissible"> <?php else: ?> - <div class="<?php echo esc_attr( $notice['class'] ); ?>"> + <div class="<?php echo esc_attr( $notice['class'] ); ?> notice is-dismissible"> <?php endif; ?> @@ -2076,49 +2064,24 @@ class BP_Members_Admin { ?> <div class="wrap"> - <?php if ( version_compare( $GLOBALS['wp_version'], '4.8', '>=' ) ) : ?> - - <h1 class="wp-heading-inline"><?php _e( 'Users', 'buddypress' ); ?></h1> - - <?php if ( current_user_can( 'create_users' ) ) : ?> + <h1 class="wp-heading-inline"><?php _e( 'Users', 'buddypress' ); ?></h1> - <a href="user-new.php" class="page-title-action"><?php echo esc_html_x( 'Add New', 'user', 'buddypress' ); ?></a> - - <?php elseif ( is_multisite() && current_user_can( 'promote_users' ) ) : ?> - - <a href="user-new.php" class="page-title-action"><?php echo esc_html_x( 'Add Existing', 'user', 'buddypress' ); ?></a> - - <?php endif; - - if ( $usersearch ) { - printf( '<span class="subtitle">' . __( 'Search results for “%s”', 'buddypress' ) . '</span>', esc_html( $usersearch ) ); - } - ?> - - <hr class="wp-header-end"> - - <?php else : ?> + <?php if ( current_user_can( 'create_users' ) ) : ?> - <h1><?php _e( 'Users', 'buddypress' ); ?> + <a href="user-new.php" class="page-title-action"><?php echo esc_html_x( 'Add New', 'user', 'buddypress' ); ?></a> - <?php if ( current_user_can( 'create_users' ) ) : ?> + <?php elseif ( is_multisite() && current_user_can( 'promote_users' ) ) : ?> - <a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'user', 'buddypress' ); ?></a> + <a href="user-new.php" class="page-title-action"><?php echo esc_html_x( 'Add Existing', 'user', 'buddypress' ); ?></a> - <?php elseif ( is_multisite() && current_user_can( 'promote_users' ) ) : ?> - - <a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add Existing', 'user', 'buddypress' ); ?></a> - - <?php endif; - - if ( $usersearch ) { - printf( '<span class="subtitle">' . __( 'Search results for “%s”', 'buddypress' ) . '</span>', esc_html( $usersearch ) ); - } + <?php endif; - ?> - </h1> + if ( $usersearch ) { + printf( '<span class="subtitle">' . __( 'Search results for “%s”', 'buddypress' ) . '</span>', esc_html( $usersearch ) ); + } + ?> - <?php endif; ?> + <hr class="wp-header-end"> <?php // Display each signups on its own row. ?> <?php $bp_members_signup_list_table->views(); ?> @@ -2243,7 +2206,9 @@ class BP_Members_Admin { ?> <div class="wrap"> - <h1><?php echo esc_html( $header_text ); ?></h1> + <h1 class="wp-heading-inline"><?php echo esc_html( $header_text ); ?></h1> + <hr class="wp-header-end"> + <p><?php echo esc_html( $helper_text ); ?></p> <ol class="bp-signups-list"> @@ -2433,25 +2398,22 @@ class BP_Members_Admin { foreach ( (array) $_REQUEST['users'] as $user_id ) { $user_id = (int) $user_id; - // Get the old member type to check against. - $member_type = bp_get_member_type( $user_id ); + // Get the old member types to check against. + $current_types = bp_get_member_type( $user_id, false ); - if ( 'remove_member_type' === $new_type ) { - // Remove the current member type, if there's one to remove. - if ( $member_type ) { - $removed = bp_remove_member_type( $user_id, $member_type ); - if ( false === $removed || is_wp_error( $removed ) ) { - $error = true; - } - } - } else { + if ( $current_types && 'remove_member_type' === $new_type ) { + $member_types = array(); + } elseif ( ! $current_types || 1 !== count( $current_types ) || $new_type !== $current_types[0] ) { // Set the new member type. - if ( $new_type !== $member_type ) { - $set = bp_set_member_type( $user_id, $new_type ); - if ( false === $set || is_wp_error( $set ) ) { - $error = true; - } + $member_types = array( $new_type ); + } + + if ( isset( $member_types ) ) { + $set = bp_set_member_type( $user_id, $member_types ); + if ( false === $set || is_wp_error( $set ) ) { + $error = true; } + unset( $member_types ); } } } @@ -2523,12 +2485,26 @@ class BP_Members_Admin { } // Get the member type. - $type = bp_get_member_type( $user_id ); + $member_type = bp_get_member_type( $user_id, false ); + + // Build the Output. + if ( $member_type ) { + $member_types = array_filter( array_map( 'bp_get_member_type_object', $member_type ) ); + if ( ! $member_types ) { + return $retval; + } + + $type_links = array(); + foreach ( $member_types as $type ) { + $url = add_query_arg( array( 'bp-member-type' => urlencode( $type->name ) ) ); + $type_links[] = sprintf( + '<a href="%1$s">%2$s</a>', + esc_url( $url ), + esc_html( $type->labels['singular_name'] ) + ); + } - // Output the - if ( $type_obj = bp_get_member_type_object( $type ) ) { - $url = add_query_arg( array( 'bp-member-type' => urlencode( $type ) ) ); - $retval = '<a href="' . esc_url( $url ) . '">' . esc_html( $type_obj->labels['singular_name'] ) . '</a>'; + $retval = implode( ', ', $type_links ); } return $retval; diff --git a/wp-content/plugins/buddypress/bp-members/classes/class-bp-members-component.php b/wp-content/plugins/buddypress/bp-members/classes/class-bp-members-component.php index daebb2ab2482abaecdfa10e8348f02ea8df4e690..77777d645b6bce507c6b68e441b818b268a32105 100644 --- a/wp-content/plugins/buddypress/bp-members/classes/class-bp-members-component.php +++ b/wp-content/plugins/buddypress/bp-members/classes/class-bp-members-component.php @@ -176,6 +176,7 @@ class BP_Members_Component extends BP_Component { 'directory_title' => isset( $bp->pages->members->title ) ? $bp->pages->members->title : $default_directory_title, 'search_string' => __( 'Search Members...', 'buddypress' ), 'global_tables' => array( + 'table_name_invitations' => bp_core_get_table_prefix() . 'bp_invitations', 'table_name_last_activity' => bp_core_get_table_prefix() . 'bp_activity', 'table_name_signups' => $wpdb->base_prefix . 'signups', // Signups is a global WordPress table. ) @@ -733,6 +734,61 @@ class BP_Members_Component extends BP_Component { ), ), ), + 'bp/members' => array( + 'name' => 'bp/members', + 'editor_script' => 'bp-members-block', + 'editor_script_url' => plugins_url( 'js/blocks/members.js', dirname( __FILE__ ) ), + 'editor_script_deps' => array( + 'wp-blocks', + 'wp-element', + 'wp-components', + 'wp-i18n', + 'wp-compose', + 'wp-data', + 'wp-api-fetch', + 'wp-url', + 'wp-block-editor', + 'bp-block-components', + 'lodash', + ), + 'style' => 'bp-members-block', + 'style_url' => plugins_url( 'css/blocks/members.css', dirname( __FILE__ ) ), + 'attributes' => array( + 'itemIDs' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'integer', + ), + ), + 'avatarSize' => array( + 'type' => 'string', + 'default' => 'full', + ), + 'displayMentionSlug' => array( + 'type' => 'boolean', + 'default' => true, + ), + 'displayUserName' => array( + 'type' => 'boolean', + 'default' => true, + ), + 'extraData' => array( + 'type' => 'string', + 'default' => 'none', + 'enum' => array( 'last_activity', 'latest_update', 'none' ), + ), + 'layoutPreference' => array( + 'type' => 'string', + 'default' => 'list', + 'enum' => array( 'list', 'grid' ), + ), + 'columns' => array( + 'type' => 'number', + 'default' => 2, + ), + ), + 'render_callback' => 'bp_members_render_members_block', + ), ) ); } diff --git a/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php b/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php index 98357cdfa5f327cbaa5a65fc3f69baafc67ba781..3474efdcf83d2cf1fd0e8ef6367e2eececbb0b78 100644 --- a/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php +++ b/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php @@ -157,20 +157,20 @@ class BP_REST_Attachments_Member_Avatar_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_member_invalid_id', + __( 'Invalid member ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); $this->user = bp_rest_get_user( $request['user_id'] ); - if ( true === $retval && ! $this->user instanceof WP_User ) { - $retval = new WP_Error( - 'bp_rest_member_invalid_id', - __( 'Invalid member ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); + if ( $this->user instanceof WP_User ) { + $retval = true; } /** @@ -178,7 +178,7 @@ class BP_REST_Attachments_Member_Avatar_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_member_avatar_get_item_permissions_check', $retval, $request ); @@ -242,47 +242,51 @@ class BP_REST_Attachments_Member_Avatar_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { $retval = $this->get_item_permissions_check( $request ); - $args = array(); - - if ( isset( $this->user->ID ) ) { - $args = array( - 'item_id' => (int) $this->user->ID, - 'object' => 'user', - ); - } - if ( true === $retval && ! is_user_logged_in() ) { - $retval = new WP_Error( + if ( ! is_wp_error( $retval ) ) { + $args = array(); + $error = new WP_Error( 'bp_rest_authorization_required', - __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), array( 'status' => rest_authorization_required_code(), ) ); - } - if ( true === $retval && 'POST' === $request->get_method() && bp_disable_avatar_uploads() ) { - $retval = new WP_Error( - 'bp_rest_attachments_member_avatar_disabled', - __( 'Sorry, member avatar upload is disabled.', 'buddypress' ), - array( - 'status' => 500, - ) - ); - } - - if ( true === $retval && ! empty( $args ) && ! bp_attachments_current_user_can( 'edit_avatar', $args ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not authorized to perform this action.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( ! isset( $this->user->ID ) || ! isset( $this->object ) ) { + $retval = $error; + } else { + $args = array( + 'item_id' => $this->user->ID, + 'object' => $this->object, + ); + + if ( ! is_user_logged_in() ) { + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } elseif ( 'POST' === $request->get_method() && bp_disable_avatar_uploads() ) { + $retval = new WP_Error( + 'bp_rest_attachments_member_avatar_disabled', + __( 'Sorry, member avatar upload is disabled.', 'buddypress' ), + array( + 'status' => 500, + ) + ); + } elseif ( bp_attachments_current_user_can( 'edit_avatar', $args ) ) { + $retval = true; + } else { + $retval = $error; + } + } } /** @@ -290,7 +294,7 @@ class BP_REST_Attachments_Member_Avatar_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_member_avatar_create_item_permissions_check', $retval, $request ); @@ -379,7 +383,7 @@ class BP_REST_Attachments_Member_Avatar_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { $retval = $this->create_item_permissions_check( $request ); @@ -389,7 +393,7 @@ class BP_REST_Attachments_Member_Avatar_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_member_avatar_delete_item_permissions_check', $retval, $request ); diff --git a/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-attachments-member-cover-endpoint.php b/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-attachments-member-cover-endpoint.php index 883dafe00af9cf3fce39e4c046b5aac1274ff168..87bed2b85cee65b5be9bd255cef1b2edcba7daf8 100644 --- a/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-attachments-member-cover-endpoint.php +++ b/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-attachments-member-cover-endpoint.php @@ -147,20 +147,20 @@ class BP_REST_Attachments_Member_Cover_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_member_invalid_id', + __( 'Invalid member ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); $this->user = bp_rest_get_user( $request['user_id'] ); - if ( ! $this->user instanceof WP_User ) { - $retval = new WP_Error( - 'bp_rest_member_invalid_id', - __( 'Invalid member ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); + if ( $this->user instanceof WP_User ) { + $retval = true; } /** @@ -168,7 +168,7 @@ class BP_REST_Attachments_Member_Cover_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_member_cover_get_item_permissions_check', $retval, $request ); @@ -232,7 +232,7 @@ class BP_REST_Attachments_Member_Cover_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { $retval = $this->delete_item_permissions_check( $request ); @@ -252,7 +252,7 @@ class BP_REST_Attachments_Member_Cover_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_member_cover_create_item_permissions_check', $retval, $request ); @@ -321,37 +321,43 @@ class BP_REST_Attachments_Member_Cover_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { $retval = $this->get_item_permissions_check( $request ); - $args = array(); - if ( isset( $this->user->ID ) ) { - $args = array( - 'item_id' => $this->user->ID, - 'object' => $this->object, - ); - } - - if ( true === $retval && ! is_user_logged_in() ) { - $retval = new WP_Error( + if ( ! is_wp_error( $retval ) ) { + $args = array(); + $error = new WP_Error( 'bp_rest_authorization_required', - __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), array( 'status' => rest_authorization_required_code(), ) ); - } - if ( true === $retval && ! empty( $args ) && ! bp_attachments_current_user_can( 'edit_cover_image', $args ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not authorized to perform this action.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( ! isset( $this->user->ID ) || ! isset( $this->object ) ) { + $retval = $error; + } else { + $args = array( + 'item_id' => $this->user->ID, + 'object' => $this->object, + ); + + if ( ! is_user_logged_in() ) { + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } elseif ( bp_attachments_current_user_can( 'edit_cover_image', $args ) ) { + $retval = true; + } else { + $retval = $error; + } + } } /** @@ -359,7 +365,7 @@ class BP_REST_Attachments_Member_Cover_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_attachments_member_cover_delete_item_permissions_check', $retval, $request ); diff --git a/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-members-endpoint.php b/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-members-endpoint.php index 5681e28f4efe388eeca989e56679a7de6a5edb45..1568793e95c4608a584bf3f4441db30993f20a0a 100644 --- a/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-members-endpoint.php +++ b/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-members-endpoint.php @@ -25,6 +25,72 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { $this->rest_base = 'members'; } + /** + * Registers the routes for the objects of the controller. + * + * @since 7.0.0 + * + * @see register_rest_route() + */ + public function register_routes() { + parent::register_routes(); + + register_rest_route( + $this->namespace, + '/' . $this->rest_base . '/(?P<id>[\d]+)', + array( + 'args' => array( + 'id' => array( + 'description' => __( 'Unique identifier for the member.', 'buddypress' ), + 'type' => 'integer', + ), + ), + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_item' ), + 'permission_callback' => array( $this, 'get_item_permissions_check' ), + 'args' => array( + 'context' => parent::get_context_param( array( 'default' => 'view' ) ), + 'populate_extras' => array( + 'description' => __( 'Whether to fetch extra BP data about the returned member.', 'buddypress' ), + 'context' => array( 'view', 'edit' ), + 'default' => false, + 'type' => 'boolean', + 'sanitize_callback' => 'rest_sanitize_boolean', + 'validate_callback' => 'rest_validate_request_arg', + ), + ), + ), + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => array( $this, 'update_item' ), + 'permission_callback' => array( $this, 'update_item_permissions_check' ), + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), + ), + array( + 'methods' => WP_REST_Server::DELETABLE, + 'callback' => array( $this, 'delete_item' ), + 'permission_callback' => array( $this, 'delete_item_permissions_check' ), + 'args' => array( + 'force' => array( + 'type' => 'boolean', + 'default' => false, + 'description' => __( 'Required to be true, as members do not support trashing.', 'buddypress' ), + ), + 'reassign' => array( + 'type' => 'integer', + 'description' => __( 'Reassign the deleted member\'s posts and links to this user ID.', 'buddypress' ), + 'required' => true, + 'sanitize_callback' => array( $this, 'check_reassign' ), + ), + ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ), + true // Override the members/id READABLE route generated by WP_REST_Users_Controller. + ); + } + /** * Retrieve users. * @@ -35,16 +101,17 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { */ public function get_items( $request ) { $args = array( - 'type' => $request['type'], - 'user_id' => $request['user_id'], - 'user_ids' => $request['user_ids'], - 'xprofile_query' => $request['xprofile'], - 'include' => $request['include'], - 'exclude' => $request['exclude'], - 'member_type' => $request['member_type'], - 'search_terms' => $request['search'], - 'per_page' => $request['per_page'], - 'page' => $request['page'], + 'type' => $request['type'], + 'user_id' => $request['user_id'], + 'user_ids' => $request['user_ids'], + 'xprofile_query' => $request['xprofile'], + 'include' => $request['include'], + 'exclude' => $request['exclude'], + 'populate_extras' => $request['populate_extras'], + 'member_type' => $request['member_type'], + 'search_terms' => $request['search'], + 'per_page' => $request['per_page'], + 'page' => $request['page'], ); if ( empty( $request['user_ids'] ) ) { @@ -111,7 +178,7 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool + * @return true */ public function get_items_permissions_check( $request ) { @@ -120,36 +187,59 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { * * @since 5.0.0 * - * @param bool $retval Returned value. + * @param true $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_members_get_items_permissions_check', true, $request ); } /** - * Checks if a given request has access to read a user. + * Retrieves a single member. * - * @since 5.0.0 + * @since 7.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ - public function get_item_permissions_check( $request ) { - $retval = true; - - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to view members.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) + public function get_item( $request ) { + if ( true === $request['populate_extras'] ) { + $args = array( + 'user_ids' => array( $request['id'] ), + 'populate_extras' => true, ); + + // Get the member with BuddyPress extra data. + $member_query = new BP_User_Query( $args ); + $member = reset( $member_query->results ); + + $member = $this->prepare_item_for_response( $member, $request ); + $response = rest_ensure_response( $member ); + + return $response; } - $user = bp_rest_get_user( $request['id'] ); + return parent::get_item( $request ); + } + + /** + * Checks if a given request has access to read a user. + * + * @since 5.0.0 + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error + */ + public function get_item_permissions_check( $request ) { + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + $user = bp_rest_get_user( $request['id'] ); - if ( true === $retval && ! $user instanceof WP_User ) { + if ( ! $user instanceof WP_User ) { $retval = new WP_Error( 'bp_rest_member_invalid_id', __( 'Invalid member ID.', 'buddypress' ), @@ -157,18 +247,20 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { 'status' => 404, ) ); - } - - if ( true === $retval && get_current_user_id() === $user->ID ) { + } elseif ( 'edit' === $request['context'] ) { + if ( get_current_user_id() === $user->ID || bp_current_user_can( 'list_users' ) ) { + $retval = true; + } else { + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to view members with the edit context.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } + } else { $retval = true; - } elseif ( true === $retval && 'edit' === $request['context'] && ! current_user_can( 'list_users' ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to view members.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); } /** @@ -176,7 +268,7 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_members_get_item_permissions_check', $retval, $request ); @@ -188,27 +280,17 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { - $retval = true; - - if ( ! ( is_user_logged_in() && current_user_can( 'bp_moderate' ) ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to view members.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } + $retval = parent::create_item_permissions_check( $request ); /** * Filter or override the members `create_item` permissions check. * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_members_create_item_permissions_check', $retval, $request ); @@ -220,11 +302,20 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function update_item_permissions_check( $request ) { - $retval = true; - $user = bp_rest_get_user( $request['id'] ); + $error = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + $retval = $error; + + $user = bp_rest_get_user( $request['id'] ); + $member_type_edit = isset( $request['member_type'] ); if ( ! $user instanceof WP_User ) { $retval = new WP_Error( @@ -234,21 +325,30 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { 'status' => 404, ) ); - } + } else { + $action = 'delete'; - $action = 'delete'; - if ( 'DELETE' !== $request->get_method() ) { - $action = 'update'; - } + if ( 'DELETE' !== $request->get_method() ) { + $action = 'update'; + } - if ( true === $retval && ! $this->can_manage_member( $user, $action ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to view members.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( get_current_user_id() === $user->ID ) { + if ( $member_type_edit && ! bp_current_user_can( 'bp_moderate' ) ) { + $retval = $error; + } else { + $retval = parent::update_item_permissions_check( $request ); + } + } elseif ( ! $this->can_manage_member( $user, $action ) ) { + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to view members.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } else { + $retval = true; + } } /** @@ -256,7 +356,7 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_members_update_item_permissions_check', $retval, $request ); @@ -268,7 +368,7 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { $retval = $this->update_item_permissions_check( $request ); @@ -278,7 +378,7 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_members_delete_item_permissions_check', $retval, $request ); @@ -337,13 +437,18 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { */ public function prepare_item_for_response( $user, $request ) { $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; - $data = $this->user_data( $user, $context ); + $data = $this->user_data( $user, $context, $request ); $data = $this->add_additional_fields_to_object( $data, $request ); $data = $this->filter_response_by_context( $data, $context ); $response = rest_ensure_response( $data ); $response->add_links( $this->prepare_links( $user ) ); + // Update current user's last activity. + if ( strpos( $request->get_route(), 'members/me' ) !== false && get_current_user_id() === $user->ID ) { + bp_update_user_last_activity(); + } + /** * Filters user data returned from the API. * @@ -362,32 +467,79 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { * This was abstracted to be used in other BuddyPress endpoints. * * @since 5.0.0 + * @since 7.0.0 Add the $request parameter. * - * @param WP_User $user User object. - * @param string $context The context of the request. Defaults to 'view'. + * @param WP_User $user User object. + * @param string $context The context of the request. Defaults to 'view'. + * @param WP_REST_Request $request Full details about the request. * @return array */ - public function user_data( $user, $context = 'view' ) { + public function user_data( $user, $context, $request ) { + if ( ! $context ) { + $context = 'view'; + } + $data = array( - 'id' => $user->ID, - 'name' => $user->display_name, - 'user_login' => $user->user_login, - 'link' => bp_core_get_user_domain( $user->ID, $user->user_nicename, $user->user_login ), - 'member_types' => bp_get_member_type( $user->ID, false ), - 'roles' => array(), - 'capabilities' => array(), - 'extra_capabilities' => array(), - 'registered_date' => '', - 'xprofile' => $this->xprofile_data( $user->ID ), - 'friendship_status' => false, + 'id' => $user->ID, + 'name' => $user->display_name, + 'user_login' => $user->user_login, + 'link' => bp_core_get_user_domain( $user->ID, $user->user_nicename, $user->user_login ), + 'member_types' => bp_get_member_type( $user->ID, false ), + 'roles' => array(), + 'capabilities' => array(), + 'extra_capabilities' => array(), + 'registered_date' => '', + 'xprofile' => $this->xprofile_data( $user->ID ), + 'friendship_status' => false, + 'friendship_status_slug' => '', ); - // Check if user is friends with current logged in user. + if ( $request->get_param( 'populate_extras' ) ) { + $data['last_activity']['timediff'] = ''; + $data['last_activity']['date'] = ''; + + if ( get_current_user_id() === $user->ID ) { + $right_now = gmdate( 'Y-m-d H:i:s', bp_core_current_time( true, 'timestamp' ) ); + $data['last_activity']['timediff'] = bp_core_time_since( $right_now ); + $data['last_activity']['date'] = bp_rest_prepare_date_response( $right_now ); + + } elseif ( $user->last_activity ) { + $data['last_activity']['timediff'] = bp_core_time_since( $user->last_activity ); + $data['last_activity']['date'] = bp_rest_prepare_date_response( $user->last_activity ); + } + + if ( bp_is_active( 'activity' ) ) { + $data['latest_update'] = array( + 'id' => 0, + 'raw' => '', + 'rendered' => '', + ); + + if ( isset( $user->latest_update ) && $user->latest_update ) { + $activity_data = maybe_unserialize( $user->latest_update ); + + if ( isset( $activity_data['id'], $activity_data['content'] ) ) { + $data['latest_update']['id'] = $activity_data['id']; + $data['latest_update']['raw'] = $activity_data['content']; + $data['latest_update']['rendered'] = apply_filters( 'bp_get_activity_content', $activity_data['content'] ); + } + } + } + + if ( bp_is_active( 'friends' ) && isset( $user->total_friend_count ) && $user->total_friend_count ) { + $data['total_friend_count'] = absint( $user->total_friend_count ); + } + } + + // Friends related fields. if ( bp_is_active( 'friends' ) && get_current_user_id() !== $user->ID ) { - $data['friendship_status'] = ( 'is_friend' === friends_check_friendship_status( get_current_user_id(), $user->ID ) ); + $friendship_status = friends_check_friendship_status( get_current_user_id(), $user->ID ); + + $data['friendship_status_slug'] = $friendship_status; + $data['friendship_status'] = ( 'is_friend' === $friendship_status ); } - if ( 'edit' === $context ) { + if ( 'edit' === $context && current_user_can( 'list_users' ) ) { $data['registered_date'] = bp_rest_prepare_date_response( $user->data->user_registered ); $data['roles'] = (array) array_values( $user->roles ); $data['capabilities'] = (array) array_keys( $user->allcaps ); @@ -448,6 +600,15 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { $prepared_user->user_login = $request['user_login']; } + /** + * Until BP REST version 0.3.0 the `types` parameter was used into the schema + * but not used to actually assign the member type to the user. + */ + $types = $request->get_param( 'types' ); + if ( $types ) { + $request->set_param( 'member_type', bp_rest_sanitize_member_types( $types ) ); + } + // Set member type. if ( isset( $prepared_user->ID ) && isset( $request['member_type'] ) ) { @@ -530,7 +691,7 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { $capability = 'edit_user'; } - return ( current_user_can( 'bp_moderate' ) || current_user_can( $capability, $user->ID ) ); + return current_user_can( $capability, $user->ID ); } /** @@ -556,7 +717,7 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { $member = $object->data; $member->id = $member->ID; - return WP_REST_Controller::update_additional_fields_for_object( $member, $request ); + return parent::update_additional_fields_for_object( $member, $request ); } /** @@ -568,12 +729,12 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { * @return array Endpoint arguments. */ public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { - $args = WP_REST_Controller::get_endpoint_args_for_item_schema( $method ); + $args = parent::get_endpoint_args_for_item_schema( $method ); $key = 'get_item'; // Add member type args. $member_type_args = array( - 'description' => __( 'Set type(s) for a member.', 'buddypress' ), + 'description' => __( 'Assign a member type to a member, use a comma separated list of member types to assign more than one.', 'buddypress' ), 'type' => 'string', 'enum' => bp_get_member_types(), 'context' => array( 'edit' ), @@ -588,7 +749,7 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { unset( $args['mention_name'] ); // Add member type args. - $args['types'] = $member_type_args; + $args['member_type'] = $member_type_args; // But we absolutely need the email. $args['email'] = array( @@ -608,7 +769,7 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { unset( $args['mention_name'], $args['user_login'], $args['password'] ); // Add member type args. - $args['types'] = $member_type_args; + $args['member_type'] = $member_type_args; } elseif ( WP_REST_Server::DELETABLE === $method ) { $key = 'delete_item'; } @@ -658,6 +819,7 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { 'arg_options' => array( 'sanitize_callback' => 'sanitize_text_field', ), + 'readonly' => true, ), 'link' => array( 'description' => __( 'Profile URL of the member.', 'buddypress' ), @@ -677,7 +839,11 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { ), 'member_types' => array( 'description' => __( 'Member types associated with the member.', 'buddypress' ), - 'type' => 'object', + 'enum' => bp_get_member_types(), + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), 'context' => array( 'embed', 'view', 'edit' ), 'readonly' => true, ), @@ -717,18 +883,71 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { 'context' => array( 'edit' ), 'readonly' => true, ), - 'xprofile' => array( + 'xprofile' => array( 'description' => __( 'Member XProfile groups and its fields.', 'buddypress' ), 'type' => 'array', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), - 'friendship_status' => array( + 'friendship_status' => array( 'description' => __( 'Friendship relation with, current, logged in user.', 'buddypress' ), 'type' => 'bool', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), + 'friendship_status_slug' => array( + 'description' => __( 'Slug of the friendship status with current logged in user.', 'buddypress' ), + 'enum' => array( 'is_friend', 'not_friends', 'pending', 'awaiting_response' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'last_activity' => array( + 'description' => __( 'Last date the member was active on the site.', 'buddypress' ), + 'type' => 'object', + 'properties' => array( + 'timediff' => array( + 'type' => 'string', + ), + 'date' => array( + 'type' => 'string', + 'format' => 'date-time', + ), + ), + 'format' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'latest_update' => array( + 'description' => __( 'The content of the latest activity posted by the member.', 'buddypress' ), + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'context' => array( 'view', 'edit' ), + 'description' => __( 'A unique numeric ID for the activity.', 'buddypress' ), + 'readonly' => true, + 'type' => 'integer', + ), + 'raw' => array( + 'description' => __( 'Content for the activity, as it exists in the database.', 'buddypress' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'rendered' => array( + 'description' => __( 'HTML content for the activity, transformed for display.', 'buddypress' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + 'readonly' => true, + ), + 'total_friend_count' => array( + 'context' => array( 'view', 'edit' ), + 'description' => __( 'Total number of friends for the member.', 'buddypress' ), + 'type' => 'integer', + 'readonly' => true, + ), ), ); @@ -831,6 +1050,14 @@ class BP_REST_Members_Endpoint extends WP_REST_Users_Controller { 'validate_callback' => 'rest_validate_request_arg', ); + $params['populate_extras'] = array( + 'description' => __( 'Whether to fetch extra BP data about the returned members.', 'buddypress' ), + 'default' => false, + 'type' => 'boolean', + 'sanitize_callback' => 'rest_sanitize_boolean', + 'validate_callback' => 'rest_validate_request_arg', + ); + $params['member_type'] = array( 'description' => __( 'Limit results set to certain type(s).', 'buddypress' ), 'default' => array(), diff --git a/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-signup-endpoint.php b/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-signup-endpoint.php index 4a6d172d2c2d722a1536593b0fff3e6b232bb5a5..3b4c6d4c960c93637bda831f4f1eb2d0596bd007 100644 --- a/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-signup-endpoint.php +++ b/wp-content/plugins/buddypress/bp-members/classes/class-bp-rest-signup-endpoint.php @@ -179,29 +179,35 @@ class BP_REST_Signup_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_items_permissions_check( $request ) { - $retval = true; + $error = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not authorized to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + $retval = $error; - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + $capability = 'edit_users'; + if ( is_multisite() ) { + $capability = 'manage_network_users'; } - if ( true === $retval && ! bp_current_user_can( 'bp_moderate' ) ) { + if ( ! is_user_logged_in() ) { $retval = new WP_Error( 'bp_rest_authorization_required', - __( 'Sorry, you are not authorized to perform this action.', 'buddypress' ), + __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), array( 'status' => rest_authorization_required_code(), ) ); + } elseif ( bp_current_user_can( $capability ) ) { + $retval = true; + } else { + $retval = $error; } /** @@ -209,7 +215,7 @@ class BP_REST_Signup_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_signup_get_items_permissions_check', $retval, $request ); @@ -255,40 +261,23 @@ class BP_REST_Signup_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; - $signup = $this->get_signup_object( $request['id'] ); - - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you need to be logged in to perform this action.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } - - if ( true === $retval && empty( $signup ) ) { - $retval = new WP_Error( - 'bp_rest_invalid_id', - __( 'Invalid signup id.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - if ( true === $retval && ! bp_current_user_can( 'bp_moderate' ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not authorized to perform this action.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + $retval = $this->get_items_permissions_check( $request ); + + if ( ! is_wp_error( $retval ) ) { + $signup = $this->get_signup_object( $request['id'] ); + + if ( empty( $signup ) ) { + $retval = new WP_Error( + 'bp_rest_invalid_id', + __( 'Invalid signup id.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } } /** @@ -296,7 +285,7 @@ class BP_REST_Signup_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_signup_get_item_permissions_check', $retval, $request ); @@ -506,21 +495,19 @@ class BP_REST_Signup_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true */ public function create_item_permissions_check( $request ) { - // The purpose of a signup is to allow a new user to register to the site. - $retval = true; /** * Filter the signup `create_item` permissions check. * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true $value Returned value. * @param WP_REST_Request $request The request sent to the API. */ - return apply_filters( 'bp_rest_signup_create_item_permissions_check', $retval, $request ); + return apply_filters( 'bp_rest_signup_create_item_permissions_check', true, $request ); } /** @@ -578,7 +565,7 @@ class BP_REST_Signup_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { $retval = $this->get_item_permissions_check( $request ); @@ -588,7 +575,7 @@ class BP_REST_Signup_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_signup_delete_item_permissions_check', $retval, $request ); @@ -650,24 +637,23 @@ class BP_REST_Signup_Endpoint extends WP_REST_Controller { * @since 6.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function activate_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_invalid_activation_key', + __( 'Invalid activation key.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + // Get the activation key. $activation_key = $request->get_param( 'activation_key' ); - // Get the signup thanks to the activation key. - $signup = $this->get_signup_object( $activation_key ); - - if ( empty( $signup ) ) { - $retval = new WP_Error( - 'bp_rest_invalid_activation_key', - __( 'Invalid activation key.', 'buddypress' ), - array( - 'status' => 404, - ) - ); + // Check the activation key is valid. + if ( $this->get_signup_object( $activation_key ) ) { + $retval = true; } /** @@ -675,7 +661,7 @@ class BP_REST_Signup_Endpoint extends WP_REST_Controller { * * @since 6.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_signup_activate_item_permissions_check', $retval, $request ); @@ -809,7 +795,7 @@ class BP_REST_Signup_Endpoint extends WP_REST_Controller { public function is_blog_signup_allowed() { $active_signup = get_network_option( get_main_network_id(), 'registration' ); - return 'blog' === $active_signup || 'all' === $active_signup; + return ( 'blog' === $active_signup || 'all' === $active_signup ); } /** @@ -834,7 +820,7 @@ class BP_REST_Signup_Endpoint extends WP_REST_Controller { * @return array Endpoint arguments. */ public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { - $args = WP_REST_Controller::get_endpoint_args_for_item_schema( $method ); + $args = parent::get_endpoint_args_for_item_schema( $method ); $key = 'get_item'; if ( WP_REST_Server::CREATABLE === $method ) { diff --git a/wp-content/plugins/buddypress/bp-members/classes/class-bp-signup.php b/wp-content/plugins/buddypress/bp-members/classes/class-bp-signup.php index 9cd7d6e2e711dc6b1b3b15307671d6270b257599..f1eece59712cc2d46b5f75966bca40f70af7279b 100644 --- a/wp-content/plugins/buddypress/bp-members/classes/class-bp-signup.php +++ b/wp-content/plugins/buddypress/bp-members/classes/class-bp-signup.php @@ -121,7 +121,7 @@ class BP_Signup { * Fetch signups based on parameters. * * @since 2.0.0 - * @since 6.0.0 Adds a whitelist of allowed orderby parameters. + * @since 6.0.0 Added a list of allowed orderby parameters. * * @param array $args { * The argument to retrieve desired signups. @@ -160,7 +160,7 @@ class BP_Signup { 'bp_core_signups_get_args' ); - // Whitelist sanitization. + // Make sure the orderby clause is allowed. if ( ! in_array( $r['orderby'], array( 'login', 'email', 'registered', 'activated' ), true ) ) { $r['orderby'] = 'signup_id'; } @@ -412,7 +412,7 @@ class BP_Signup { if ( isset( $usermeta[ $key ] ) ) { $visibility_level = $usermeta[ $key ]; } else { - $vfield = xprofile_get_field( $field_id ); + $vfield = xprofile_get_field( $field_id, null, false ); $visibility_level = isset( $vfield->default_visibility ) ? $vfield->default_visibility : 'public'; } xprofile_set_field_visibility_level( $field_id, $user_id, $visibility_level ); diff --git a/wp-content/plugins/buddypress/bp-members/css/blocks/member-rtl.css b/wp-content/plugins/buddypress/bp-members/css/blocks/member-rtl.css index ff9de024c2586c35a68dff37b02592a4f5cd2dce..c2219fccab8007145597a43315c7bed5fde68003 100644 --- a/wp-content/plugins/buddypress/bp-members/css/blocks/member-rtl.css +++ b/wp-content/plugins/buddypress/bp-members/css/blocks/member-rtl.css @@ -1,4 +1,11 @@ /* CSS for the bp/member block */ +[data-type="bp/member"] input.components-placeholder__input { + flex: 1 1 auto; + border-radius: 2px; + border: 1px solid #757575; + padding: 6px 8px; +} + .bp-block-member { position: relative; } @@ -7,12 +14,38 @@ display: flex; } +.bp-block-member .user-nicename { + display: block; +} + +.bp-block-member .user-nicename a { + color: currentColor; + text-decoration: none; + border: none; +} + +.bp-block-member .bp-profile-button { + width: 100%; +} + +.bp-block-member .bp-profile-button a.button { + position: absolute; + bottom: 10px; + left: 0; + display: inline-block; + margin: 18px 0 0; +} + .bp-block-member.has-cover .member-content, .bp-block-member.has-cover .item-header-avatar, .bp-block-member.has-cover .member-description { z-index: 2; } +.bp-block-member.has-cover .member-content { + padding-top: 75px; +} + .bp-block-member.has-cover .member-description { padding-top: 75px; } @@ -51,28 +84,24 @@ min-height: 150px; } -.bp-block-member.avatar-full.has-cover { - min-height: 300px; -} - .bp-block-member.avatar-full .item-header-avatar { width: 180px; } -.bp-block-member.has-cover.avatar-full .item-header-avatar { +.bp-block-member.avatar-full.has-cover { + min-height: 300px; +} + +.bp-block-member.avatar-full.has-cover .item-header-avatar { width: 200px; } -.bp-block-member.has-cover.avatar-full img.avatar { +.bp-block-member.avatar-full.has-cover img.avatar { border: solid 2px #fff; background: rgba(255, 255, 255, 0.8); margin-right: 20px; } -.bp-block-member.has-cover .member-content { - padding-top: 75px; -} - .bp-block-member.avatar-thumb .member-content { min-height: 50px; align-items: center; @@ -86,25 +115,8 @@ padding-top: 75px; } -.bp-block-member .user-nicename { - display: block; -} - -.bp-block-member .user-nicename a, .entry .entry-content .bp-block-member .user-nicename a { color: currentColor; text-decoration: none; border: none; } - -.bp-block-member .bp-profile-button { - width: 100%; -} - -.bp-block-member .bp-profile-button a.button { - position: absolute; - bottom: 10px; - left: 0; - display: inline-block; - margin: 18px 0 0; -} diff --git a/wp-content/plugins/buddypress/bp-members/css/blocks/member-rtl.min.css b/wp-content/plugins/buddypress/bp-members/css/blocks/member-rtl.min.css index 09b88a6da19288121cdb7fd674c1e0ddf995f88e..0acfe412341fe650f6cdb51bcd3e19d94ada9b9e 100644 --- a/wp-content/plugins/buddypress/bp-members/css/blocks/member-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-members/css/blocks/member-rtl.min.css @@ -1 +1 @@ -.bp-block-member{position:relative}.bp-block-member .member-content{display:flex}.bp-block-member.has-cover .item-header-avatar,.bp-block-member.has-cover .member-content,.bp-block-member.has-cover .member-description{z-index:2}.bp-block-member.has-cover .member-description{padding-top:75px}.bp-block-member.has-cover .bp-member-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;right:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1;height:150px}.bp-block-member img.avatar{width:auto;height:auto}.bp-block-member.avatar-none .item-header-avatar{display:none}.bp-block-member.avatar-none.has-cover{min-height:200px}.bp-block-member.avatar-full{min-height:150px}.bp-block-member.avatar-full.has-cover{min-height:300px}.bp-block-member.avatar-full .item-header-avatar{width:180px}.bp-block-member.has-cover.avatar-full .item-header-avatar{width:200px}.bp-block-member.has-cover.avatar-full img.avatar{border:solid 2px #fff;background:rgba(255,255,255,.8);margin-right:20px}.bp-block-member.has-cover .member-content{padding-top:75px}.bp-block-member.avatar-thumb .member-content{min-height:50px;align-items:center}.bp-block-member.avatar-thumb .item-header-avatar{width:70px}.bp-block-member.avatar-thumb.has-cover .item-header-avatar{padding-top:75px}.bp-block-member .user-nicename{display:block}.bp-block-member .user-nicename a,.entry .entry-content .bp-block-member .user-nicename a{color:currentColor;text-decoration:none;border:none}.bp-block-member .bp-profile-button{width:100%}.bp-block-member .bp-profile-button a.button{position:absolute;bottom:10px;left:0;display:inline-block;margin:18px 0 0} \ No newline at end of file +[data-type="bp/member"] input.components-placeholder__input{flex:1 1 auto;border-radius:2px;border:1px solid #757575;padding:6px 8px}.bp-block-member{position:relative}.bp-block-member .member-content{display:flex}.bp-block-member .user-nicename{display:block}.bp-block-member .user-nicename a{color:currentColor;text-decoration:none;border:none}.bp-block-member .bp-profile-button{width:100%}.bp-block-member .bp-profile-button a.button{position:absolute;bottom:10px;left:0;display:inline-block;margin:18px 0 0}.bp-block-member.has-cover .item-header-avatar,.bp-block-member.has-cover .member-content,.bp-block-member.has-cover .member-description{z-index:2}.bp-block-member.has-cover .member-content{padding-top:75px}.bp-block-member.has-cover .member-description{padding-top:75px}.bp-block-member.has-cover .bp-member-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;right:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1;height:150px}.bp-block-member img.avatar{width:auto;height:auto}.bp-block-member.avatar-none .item-header-avatar{display:none}.bp-block-member.avatar-none.has-cover{min-height:200px}.bp-block-member.avatar-full{min-height:150px}.bp-block-member.avatar-full .item-header-avatar{width:180px}.bp-block-member.avatar-full.has-cover{min-height:300px}.bp-block-member.avatar-full.has-cover .item-header-avatar{width:200px}.bp-block-member.avatar-full.has-cover img.avatar{border:solid 2px #fff;background:rgba(255,255,255,.8);margin-right:20px}.bp-block-member.avatar-thumb .member-content{min-height:50px;align-items:center}.bp-block-member.avatar-thumb .item-header-avatar{width:70px}.bp-block-member.avatar-thumb.has-cover .item-header-avatar{padding-top:75px}.entry .entry-content .bp-block-member .user-nicename a{color:currentColor;text-decoration:none;border:none} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/css/blocks/member.css b/wp-content/plugins/buddypress/bp-members/css/blocks/member.css index b03ea8687ce499ca11f092af9c81a498ecfadb7b..ffde6f14024da5475f7d4856ca8640cb7a0ec9a1 100644 --- a/wp-content/plugins/buddypress/bp-members/css/blocks/member.css +++ b/wp-content/plugins/buddypress/bp-members/css/blocks/member.css @@ -1,4 +1,11 @@ /* CSS for the bp/member block */ +[data-type="bp/member"] input.components-placeholder__input { + flex: 1 1 auto; + border-radius: 2px; + border: 1px solid #757575; + padding: 6px 8px; +} + .bp-block-member { position: relative; } @@ -7,12 +14,38 @@ display: flex; } +.bp-block-member .user-nicename { + display: block; +} + +.bp-block-member .user-nicename a { + color: currentColor; + text-decoration: none; + border: none; +} + +.bp-block-member .bp-profile-button { + width: 100%; +} + +.bp-block-member .bp-profile-button a.button { + position: absolute; + bottom: 10px; + right: 0; + display: inline-block; + margin: 18px 0 0; +} + .bp-block-member.has-cover .member-content, .bp-block-member.has-cover .item-header-avatar, .bp-block-member.has-cover .member-description { z-index: 2; } +.bp-block-member.has-cover .member-content { + padding-top: 75px; +} + .bp-block-member.has-cover .member-description { padding-top: 75px; } @@ -51,28 +84,24 @@ min-height: 150px; } -.bp-block-member.avatar-full.has-cover { - min-height: 300px; -} - .bp-block-member.avatar-full .item-header-avatar { width: 180px; } -.bp-block-member.has-cover.avatar-full .item-header-avatar { +.bp-block-member.avatar-full.has-cover { + min-height: 300px; +} + +.bp-block-member.avatar-full.has-cover .item-header-avatar { width: 200px; } -.bp-block-member.has-cover.avatar-full img.avatar { +.bp-block-member.avatar-full.has-cover img.avatar { border: solid 2px #fff; background: rgba(255, 255, 255, 0.8); margin-left: 20px; } -.bp-block-member.has-cover .member-content { - padding-top: 75px; -} - .bp-block-member.avatar-thumb .member-content { min-height: 50px; align-items: center; @@ -86,25 +115,8 @@ padding-top: 75px; } -.bp-block-member .user-nicename { - display: block; -} - -.bp-block-member .user-nicename a, .entry .entry-content .bp-block-member .user-nicename a { color: currentColor; text-decoration: none; border: none; } - -.bp-block-member .bp-profile-button { - width: 100%; -} - -.bp-block-member .bp-profile-button a.button { - position: absolute; - bottom: 10px; - right: 0; - display: inline-block; - margin: 18px 0 0; -} diff --git a/wp-content/plugins/buddypress/bp-members/css/blocks/member.min.css b/wp-content/plugins/buddypress/bp-members/css/blocks/member.min.css index cea6241a9f036b4920c58ccd11eb2b4c5747eee7..8c039a04c5ab641f1986b7a0215b6f0f8bbe554e 100644 --- a/wp-content/plugins/buddypress/bp-members/css/blocks/member.min.css +++ b/wp-content/plugins/buddypress/bp-members/css/blocks/member.min.css @@ -1 +1 @@ -.bp-block-member{position:relative}.bp-block-member .member-content{display:flex}.bp-block-member.has-cover .item-header-avatar,.bp-block-member.has-cover .member-content,.bp-block-member.has-cover .member-description{z-index:2}.bp-block-member.has-cover .member-description{padding-top:75px}.bp-block-member.has-cover .bp-member-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;left:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1;height:150px}.bp-block-member img.avatar{width:auto;height:auto}.bp-block-member.avatar-none .item-header-avatar{display:none}.bp-block-member.avatar-none.has-cover{min-height:200px}.bp-block-member.avatar-full{min-height:150px}.bp-block-member.avatar-full.has-cover{min-height:300px}.bp-block-member.avatar-full .item-header-avatar{width:180px}.bp-block-member.has-cover.avatar-full .item-header-avatar{width:200px}.bp-block-member.has-cover.avatar-full img.avatar{border:solid 2px #fff;background:rgba(255,255,255,.8);margin-left:20px}.bp-block-member.has-cover .member-content{padding-top:75px}.bp-block-member.avatar-thumb .member-content{min-height:50px;align-items:center}.bp-block-member.avatar-thumb .item-header-avatar{width:70px}.bp-block-member.avatar-thumb.has-cover .item-header-avatar{padding-top:75px}.bp-block-member .user-nicename{display:block}.bp-block-member .user-nicename a,.entry .entry-content .bp-block-member .user-nicename a{color:currentColor;text-decoration:none;border:none}.bp-block-member .bp-profile-button{width:100%}.bp-block-member .bp-profile-button a.button{position:absolute;bottom:10px;right:0;display:inline-block;margin:18px 0 0} \ No newline at end of file +[data-type="bp/member"] input.components-placeholder__input{flex:1 1 auto;border-radius:2px;border:1px solid #757575;padding:6px 8px}.bp-block-member{position:relative}.bp-block-member .member-content{display:flex}.bp-block-member .user-nicename{display:block}.bp-block-member .user-nicename a{color:currentColor;text-decoration:none;border:none}.bp-block-member .bp-profile-button{width:100%}.bp-block-member .bp-profile-button a.button{position:absolute;bottom:10px;right:0;display:inline-block;margin:18px 0 0}.bp-block-member.has-cover .item-header-avatar,.bp-block-member.has-cover .member-content,.bp-block-member.has-cover .member-description{z-index:2}.bp-block-member.has-cover .member-content{padding-top:75px}.bp-block-member.has-cover .member-description{padding-top:75px}.bp-block-member.has-cover .bp-member-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;left:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1;height:150px}.bp-block-member img.avatar{width:auto;height:auto}.bp-block-member.avatar-none .item-header-avatar{display:none}.bp-block-member.avatar-none.has-cover{min-height:200px}.bp-block-member.avatar-full{min-height:150px}.bp-block-member.avatar-full .item-header-avatar{width:180px}.bp-block-member.avatar-full.has-cover{min-height:300px}.bp-block-member.avatar-full.has-cover .item-header-avatar{width:200px}.bp-block-member.avatar-full.has-cover img.avatar{border:solid 2px #fff;background:rgba(255,255,255,.8);margin-left:20px}.bp-block-member.avatar-thumb .member-content{min-height:50px;align-items:center}.bp-block-member.avatar-thumb .item-header-avatar{width:70px}.bp-block-member.avatar-thumb.has-cover .item-header-avatar{padding-top:75px}.entry .entry-content .bp-block-member .user-nicename a{color:currentColor;text-decoration:none;border:none} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/css/blocks/members-rtl.css b/wp-content/plugins/buddypress/bp-members/css/blocks/members-rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..a392487ae57f4ad4e09344b1bbfd6018d708a883 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/css/blocks/members-rtl.css @@ -0,0 +1,199 @@ +/* CSS for the bp/members block */ +[data-type="bp/members"] .components-placeholder.is-appender { + min-height: 0; +} + +[data-type="bp/members"] .components-placeholder.is-appender .components-placeholder__label:empty { + display: none; +} + +[data-type="bp/members"] .components-placeholder input.components-placeholder__input { + flex: 1 1 auto; + border-radius: 2px; + border: 1px solid #757575; + padding: 6px 8px; +} + +[data-type="bp/members"].avatar-none .member-description { + width: calc(100% - 44px); +} + +[data-type="bp/members"].avatar-full .member-description { + width: calc(100% - 224px); +} + +[data-type="bp/members"].avatar-thumb .member-description { + width: calc(100% - 114px); +} + +[data-type="bp/members"] .member-content { + position: relative; +} + +[data-type="bp/members"] .member-content .is-right { + position: absolute; + top: 2px; + left: 2px; +} + +[data-type="bp/members"] .columns-2 .member-content .member-description, +[data-type="bp/members"] .columns-3 .member-content .member-description, +[data-type="bp/members"] .columns-4 .member-content .member-description { + padding-right: 44px; + width: calc(100% - 44px); +} + +[data-type="bp/members"] .columns-3 .is-right { + left: -10px; +} + +[data-type="bp/members"] .columns-4 .is-right { + left: -50px; +} + +.bp-block-members.is-grid { + display: flex; + flex-wrap: wrap; + padding: 0; +} + +.bp-block-members.is-grid .member-content { + margin: 0 0 1.25em 1.25em; + width: 100%; +} + +@media (min-width: 600px) { + .bp-block-members.columns-2 .member-content { + width: calc((100% / 2) - 1.25em + (1.25em / 2)); + } + .bp-block-members.columns-2 .member-content:nth-child(2n) { + margin-left: 0; + } + .bp-block-members.columns-3 .member-content { + width: calc((100% / 3) - 1.25em + (1.25em / 3)); + } + .bp-block-members.columns-3 .member-content:nth-child(3n) { + margin-left: 0; + } + .bp-block-members.columns-4 .member-content { + width: calc((100% / 4) - 1.25em + (1.25em / 4)); + } + .bp-block-members.columns-4 .member-content:nth-child(4n) { + margin-left: 0; + } +} + +.bp-block-members .member-content { + display: flex; + flex-direction: column; + padding-bottom: 1em; + text-align: center; +} + +.bp-block-members .member-content .item-header-avatar, +.bp-block-members .member-content .member-description { + width: 100%; +} + +.bp-block-members .member-content .item-header-avatar { + margin: 0 auto; +} + +.bp-block-members .member-content .item-header-avatar img.avatar { + display: inline-block; +} + +@media (min-width: 600px) { + .bp-block-members .member-content { + flex-direction: row; + text-align: right; + } + .bp-block-members .member-content .item-header-avatar, + .bp-block-members .member-content .member-description { + width: auto; + } + .bp-block-members .member-content .item-header-avatar { + margin: 0; + } +} + +.bp-block-members .member-content .user-nicename { + display: block; +} + +.bp-block-members .member-content .user-nicename a { + color: currentColor; + text-decoration: none; + border: none; +} + +.bp-block-members .member-content time { + display: block; + font-size: 80%; + color: #767676; +} + +.bp-block-members.avatar-none .item-header-avatar { + display: none; +} + +.bp-block-members.avatar-full { + min-height: 190px; +} + +.bp-block-members.avatar-full .item-header-avatar { + width: 180px; +} + +.bp-block-members.avatar-thumb .member-content { + min-height: 80px; +} + +.bp-block-members.avatar-thumb .item-header-avatar { + width: 70px; +} + +.bp-block-members.columns-2 .member-content, +.bp-block-members.columns-3 .member-content, +.bp-block-members.columns-4 .member-content { + display: block; + text-align: center; +} + +.bp-block-members.columns-2 .member-content .item-header-avatar, +.bp-block-members.columns-3 .member-content .item-header-avatar, +.bp-block-members.columns-4 .member-content .item-header-avatar { + margin: 0 auto; +} + +.bp-block-members img.avatar { + width: auto; + height: auto; + max-width: -webkit-fit-content; + max-width: fit-content; +} + +.bp-block-members .member-content.has-activity { + align-items: center; +} + +.bp-block-members .member-content.has-activity .item-header-avatar { + padding-left: 1em; +} + +.bp-block-members .member-content.has-activity .wp-block-quote { + margin-bottom: 0; + text-align: right; +} + +.bp-block-members .member-content.has-activity .wp-block-quote cite a { + color: currentColor; + text-decoration: none; + border: none; +} + +.entry .entry-content .bp-block-members .user-nicename a { + color: currentColor; + text-decoration: none; + border: none; +} diff --git a/wp-content/plugins/buddypress/bp-members/css/blocks/members-rtl.min.css b/wp-content/plugins/buddypress/bp-members/css/blocks/members-rtl.min.css new file mode 100644 index 0000000000000000000000000000000000000000..0294503ddd20cae3447f2f33b466a769833c038d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/css/blocks/members-rtl.min.css @@ -0,0 +1 @@ +[data-type="bp/members"] .components-placeholder.is-appender{min-height:0}[data-type="bp/members"] .components-placeholder.is-appender .components-placeholder__label:empty{display:none}[data-type="bp/members"] .components-placeholder input.components-placeholder__input{flex:1 1 auto;border-radius:2px;border:1px solid #757575;padding:6px 8px}[data-type="bp/members"].avatar-none .member-description{width:calc(100% - 44px)}[data-type="bp/members"].avatar-full .member-description{width:calc(100% - 224px)}[data-type="bp/members"].avatar-thumb .member-description{width:calc(100% - 114px)}[data-type="bp/members"] .member-content{position:relative}[data-type="bp/members"] .member-content .is-right{position:absolute;top:2px;left:2px}[data-type="bp/members"] .columns-2 .member-content .member-description,[data-type="bp/members"] .columns-3 .member-content .member-description,[data-type="bp/members"] .columns-4 .member-content .member-description{padding-right:44px;width:calc(100% - 44px)}[data-type="bp/members"] .columns-3 .is-right{left:-10px}[data-type="bp/members"] .columns-4 .is-right{left:-50px}.bp-block-members.is-grid{display:flex;flex-wrap:wrap;padding:0}.bp-block-members.is-grid .member-content{margin:0 0 1.25em 1.25em;width:100%}@media (min-width:600px){.bp-block-members.columns-2 .member-content{width:calc((100% / 2) - 1.25em + (1.25em / 2))}.bp-block-members.columns-2 .member-content:nth-child(2n){margin-left:0}.bp-block-members.columns-3 .member-content{width:calc((100% / 3) - 1.25em + (1.25em / 3))}.bp-block-members.columns-3 .member-content:nth-child(3n){margin-left:0}.bp-block-members.columns-4 .member-content{width:calc((100% / 4) - 1.25em + (1.25em / 4))}.bp-block-members.columns-4 .member-content:nth-child(4n){margin-left:0}}.bp-block-members .member-content{display:flex;flex-direction:column;padding-bottom:1em;text-align:center}.bp-block-members .member-content .item-header-avatar,.bp-block-members .member-content .member-description{width:100%}.bp-block-members .member-content .item-header-avatar{margin:0 auto}.bp-block-members .member-content .item-header-avatar img.avatar{display:inline-block}@media (min-width:600px){.bp-block-members .member-content{flex-direction:row;text-align:right}.bp-block-members .member-content .item-header-avatar,.bp-block-members .member-content .member-description{width:auto}.bp-block-members .member-content .item-header-avatar{margin:0}}.bp-block-members .member-content .user-nicename{display:block}.bp-block-members .member-content .user-nicename a{color:currentColor;text-decoration:none;border:none}.bp-block-members .member-content time{display:block;font-size:80%;color:#767676}.bp-block-members.avatar-none .item-header-avatar{display:none}.bp-block-members.avatar-full{min-height:190px}.bp-block-members.avatar-full .item-header-avatar{width:180px}.bp-block-members.avatar-thumb .member-content{min-height:80px}.bp-block-members.avatar-thumb .item-header-avatar{width:70px}.bp-block-members.columns-2 .member-content,.bp-block-members.columns-3 .member-content,.bp-block-members.columns-4 .member-content{display:block;text-align:center}.bp-block-members.columns-2 .member-content .item-header-avatar,.bp-block-members.columns-3 .member-content .item-header-avatar,.bp-block-members.columns-4 .member-content .item-header-avatar{margin:0 auto}.bp-block-members img.avatar{width:auto;height:auto;max-width:-webkit-fit-content;max-width:fit-content}.bp-block-members .member-content.has-activity{align-items:center}.bp-block-members .member-content.has-activity .item-header-avatar{padding-left:1em}.bp-block-members .member-content.has-activity .wp-block-quote{margin-bottom:0;text-align:right}.bp-block-members .member-content.has-activity .wp-block-quote cite a{color:currentColor;text-decoration:none;border:none}.entry .entry-content .bp-block-members .user-nicename a{color:currentColor;text-decoration:none;border:none} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/css/blocks/members.css b/wp-content/plugins/buddypress/bp-members/css/blocks/members.css new file mode 100644 index 0000000000000000000000000000000000000000..a9879d520b1eaa85277a1f7a2bb588bffcd8e22a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/css/blocks/members.css @@ -0,0 +1,199 @@ +/* CSS for the bp/members block */ +[data-type="bp/members"] .components-placeholder.is-appender { + min-height: 0; +} + +[data-type="bp/members"] .components-placeholder.is-appender .components-placeholder__label:empty { + display: none; +} + +[data-type="bp/members"] .components-placeholder input.components-placeholder__input { + flex: 1 1 auto; + border-radius: 2px; + border: 1px solid #757575; + padding: 6px 8px; +} + +[data-type="bp/members"].avatar-none .member-description { + width: calc(100% - 44px); +} + +[data-type="bp/members"].avatar-full .member-description { + width: calc(100% - 224px); +} + +[data-type="bp/members"].avatar-thumb .member-description { + width: calc(100% - 114px); +} + +[data-type="bp/members"] .member-content { + position: relative; +} + +[data-type="bp/members"] .member-content .is-right { + position: absolute; + top: 2px; + right: 2px; +} + +[data-type="bp/members"] .columns-2 .member-content .member-description, +[data-type="bp/members"] .columns-3 .member-content .member-description, +[data-type="bp/members"] .columns-4 .member-content .member-description { + padding-left: 44px; + width: calc(100% - 44px); +} + +[data-type="bp/members"] .columns-3 .is-right { + right: -10px; +} + +[data-type="bp/members"] .columns-4 .is-right { + right: -50px; +} + +.bp-block-members.is-grid { + display: flex; + flex-wrap: wrap; + padding: 0; +} + +.bp-block-members.is-grid .member-content { + margin: 0 1.25em 1.25em 0; + width: 100%; +} + +@media (min-width: 600px) { + .bp-block-members.columns-2 .member-content { + width: calc((100% / 2) - 1.25em + (1.25em / 2)); + } + .bp-block-members.columns-2 .member-content:nth-child(2n) { + margin-right: 0; + } + .bp-block-members.columns-3 .member-content { + width: calc((100% / 3) - 1.25em + (1.25em / 3)); + } + .bp-block-members.columns-3 .member-content:nth-child(3n) { + margin-right: 0; + } + .bp-block-members.columns-4 .member-content { + width: calc((100% / 4) - 1.25em + (1.25em / 4)); + } + .bp-block-members.columns-4 .member-content:nth-child(4n) { + margin-right: 0; + } +} + +.bp-block-members .member-content { + display: flex; + flex-direction: column; + padding-bottom: 1em; + text-align: center; +} + +.bp-block-members .member-content .item-header-avatar, +.bp-block-members .member-content .member-description { + width: 100%; +} + +.bp-block-members .member-content .item-header-avatar { + margin: 0 auto; +} + +.bp-block-members .member-content .item-header-avatar img.avatar { + display: inline-block; +} + +@media (min-width: 600px) { + .bp-block-members .member-content { + flex-direction: row; + text-align: left; + } + .bp-block-members .member-content .item-header-avatar, + .bp-block-members .member-content .member-description { + width: auto; + } + .bp-block-members .member-content .item-header-avatar { + margin: 0; + } +} + +.bp-block-members .member-content .user-nicename { + display: block; +} + +.bp-block-members .member-content .user-nicename a { + color: currentColor; + text-decoration: none; + border: none; +} + +.bp-block-members .member-content time { + display: block; + font-size: 80%; + color: #767676; +} + +.bp-block-members.avatar-none .item-header-avatar { + display: none; +} + +.bp-block-members.avatar-full { + min-height: 190px; +} + +.bp-block-members.avatar-full .item-header-avatar { + width: 180px; +} + +.bp-block-members.avatar-thumb .member-content { + min-height: 80px; +} + +.bp-block-members.avatar-thumb .item-header-avatar { + width: 70px; +} + +.bp-block-members.columns-2 .member-content, +.bp-block-members.columns-3 .member-content, +.bp-block-members.columns-4 .member-content { + display: block; + text-align: center; +} + +.bp-block-members.columns-2 .member-content .item-header-avatar, +.bp-block-members.columns-3 .member-content .item-header-avatar, +.bp-block-members.columns-4 .member-content .item-header-avatar { + margin: 0 auto; +} + +.bp-block-members img.avatar { + width: auto; + height: auto; + max-width: -webkit-fit-content; + max-width: fit-content; +} + +.bp-block-members .member-content.has-activity { + align-items: center; +} + +.bp-block-members .member-content.has-activity .item-header-avatar { + padding-right: 1em; +} + +.bp-block-members .member-content.has-activity .wp-block-quote { + margin-bottom: 0; + text-align: left; +} + +.bp-block-members .member-content.has-activity .wp-block-quote cite a { + color: currentColor; + text-decoration: none; + border: none; +} + +.entry .entry-content .bp-block-members .user-nicename a { + color: currentColor; + text-decoration: none; + border: none; +} diff --git a/wp-content/plugins/buddypress/bp-members/css/blocks/members.min.css b/wp-content/plugins/buddypress/bp-members/css/blocks/members.min.css new file mode 100644 index 0000000000000000000000000000000000000000..d8aa9c63551abcb392cb450473053e26114b52f8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/css/blocks/members.min.css @@ -0,0 +1 @@ +[data-type="bp/members"] .components-placeholder.is-appender{min-height:0}[data-type="bp/members"] .components-placeholder.is-appender .components-placeholder__label:empty{display:none}[data-type="bp/members"] .components-placeholder input.components-placeholder__input{flex:1 1 auto;border-radius:2px;border:1px solid #757575;padding:6px 8px}[data-type="bp/members"].avatar-none .member-description{width:calc(100% - 44px)}[data-type="bp/members"].avatar-full .member-description{width:calc(100% - 224px)}[data-type="bp/members"].avatar-thumb .member-description{width:calc(100% - 114px)}[data-type="bp/members"] .member-content{position:relative}[data-type="bp/members"] .member-content .is-right{position:absolute;top:2px;right:2px}[data-type="bp/members"] .columns-2 .member-content .member-description,[data-type="bp/members"] .columns-3 .member-content .member-description,[data-type="bp/members"] .columns-4 .member-content .member-description{padding-left:44px;width:calc(100% - 44px)}[data-type="bp/members"] .columns-3 .is-right{right:-10px}[data-type="bp/members"] .columns-4 .is-right{right:-50px}.bp-block-members.is-grid{display:flex;flex-wrap:wrap;padding:0}.bp-block-members.is-grid .member-content{margin:0 1.25em 1.25em 0;width:100%}@media (min-width:600px){.bp-block-members.columns-2 .member-content{width:calc((100% / 2) - 1.25em + (1.25em / 2))}.bp-block-members.columns-2 .member-content:nth-child(2n){margin-right:0}.bp-block-members.columns-3 .member-content{width:calc((100% / 3) - 1.25em + (1.25em / 3))}.bp-block-members.columns-3 .member-content:nth-child(3n){margin-right:0}.bp-block-members.columns-4 .member-content{width:calc((100% / 4) - 1.25em + (1.25em / 4))}.bp-block-members.columns-4 .member-content:nth-child(4n){margin-right:0}}.bp-block-members .member-content{display:flex;flex-direction:column;padding-bottom:1em;text-align:center}.bp-block-members .member-content .item-header-avatar,.bp-block-members .member-content .member-description{width:100%}.bp-block-members .member-content .item-header-avatar{margin:0 auto}.bp-block-members .member-content .item-header-avatar img.avatar{display:inline-block}@media (min-width:600px){.bp-block-members .member-content{flex-direction:row;text-align:left}.bp-block-members .member-content .item-header-avatar,.bp-block-members .member-content .member-description{width:auto}.bp-block-members .member-content .item-header-avatar{margin:0}}.bp-block-members .member-content .user-nicename{display:block}.bp-block-members .member-content .user-nicename a{color:currentColor;text-decoration:none;border:none}.bp-block-members .member-content time{display:block;font-size:80%;color:#767676}.bp-block-members.avatar-none .item-header-avatar{display:none}.bp-block-members.avatar-full{min-height:190px}.bp-block-members.avatar-full .item-header-avatar{width:180px}.bp-block-members.avatar-thumb .member-content{min-height:80px}.bp-block-members.avatar-thumb .item-header-avatar{width:70px}.bp-block-members.columns-2 .member-content,.bp-block-members.columns-3 .member-content,.bp-block-members.columns-4 .member-content{display:block;text-align:center}.bp-block-members.columns-2 .member-content .item-header-avatar,.bp-block-members.columns-3 .member-content .item-header-avatar,.bp-block-members.columns-4 .member-content .item-header-avatar{margin:0 auto}.bp-block-members img.avatar{width:auto;height:auto;max-width:-webkit-fit-content;max-width:fit-content}.bp-block-members .member-content.has-activity{align-items:center}.bp-block-members .member-content.has-activity .item-header-avatar{padding-right:1em}.bp-block-members .member-content.has-activity .wp-block-quote{margin-bottom:0;text-align:left}.bp-block-members .member-content.has-activity .wp-block-quote cite a{color:currentColor;text-decoration:none;border:none}.entry .entry-content .bp-block-members .user-nicename a{color:currentColor;text-decoration:none;border:none} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/js/blocks/member.js b/wp-content/plugins/buddypress/bp-members/js/blocks/member.js index f3d97206f72ef3b58e63c03398e106eb8fe17a2f..d0c532fecbffedf0d787dd5b642da64d020ac6ea 100644 --- a/wp-content/plugins/buddypress/bp-members/js/blocks/member.js +++ b/wp-content/plugins/buddypress/bp-members/js/blocks/member.js @@ -1,4 +1,8 @@ -parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"TmUL":[function(require,module,exports) { -var e=wp.blocks.registerBlockType,t=wp.element,n=t.createElement,l=t.Fragment,s=wp.components,a=s.Placeholder,r=s.Disabled,o=s.PanelBody,i=s.SelectControl,d=s.ToggleControl,u=s.Toolbar,p=s.ToolbarButton,b=wp.blockEditor,m=b.InspectorControls,y=b.BlockControls,c=wp.data.withSelect,g=wp.compose.compose,h=wp.editor.ServerSideRender,v=wp.i18n.__,f=bp.blockComponents.AutoCompleter,S=[{label:v("None","buddypress"),value:"none"},{label:v("Thumb","buddypress"),value:"thumb"},{label:v("Full","buddypress"),value:"full"}],C=function(e){var t=e.attributes,s=e.setAttributes,b=e.bpSettings,c=b.isAvatarEnabled,g=b.isMentionEnabled,C=b.isCoverImageEnabled,I=t.avatarSize,k=t.displayMentionSlug,w=t.displayActionButton,M=t.displayCoverImage;return t.itemID?n(l,null,n(y,null,n(u,null,n(p,{icon:"edit",title:v("Select another member","buddypress"),onClick:function(){s({itemID:0})}}))),n(m,null,n(o,{title:v("Settings","buddypress"),initialOpen:!0},n(d,{label:v("Display Profile button","buddypress"),checked:!!w,onChange:function(){s({displayActionButton:!w})},help:v(w?"Include a link to the user's profile page under their display name.":"Toggle to display a link to the user's profile page under their display name.","buddypress")}),c&&n(i,{label:v("Avatar size","buddypress"),value:I,options:S,help:v('Select "None" to disable the avatar.',"buddypress"),onChange:function(e){s({avatarSize:e})}}),C&&n(d,{label:v("Display Cover Image","buddypress"),checked:!!M,onChange:function(){s({displayCoverImage:!M})},help:v(M?"Include the user's cover image over their display name.":"Toggle to display the user's cover image over their display name.","buddypress")}),g&&n(d,{label:v("Display Mention slug","buddypress"),checked:!!k,onChange:function(){s({displayMentionSlug:!k})},help:v(k?"Include the user's mention name under their display name.":"Toggle to display the user's mention name under their display name.","buddypress")}))),n(r,null,n(h,{block:"bp/member",attributes:t}))):n(a,{icon:"admin-users",label:v("BuddyPress Member","buddypress"),instructions:v("Start typing the name of the member you want to feature into this post.","buddypress")},n(f,{component:"members",ariaLabel:v("Member's username","buddypress"),placeholder:v("Enter Member's username here…","buddypress"),onSelectItem:s,useAvatar:c}))},I=g([c(function(e){return{bpSettings:e("core/editor").getEditorSettings().bp.members||{}}})])(C);e("bp/member",{title:v("Member","buddypress"),description:v("BuddyPress Member.","buddypress"),icon:"admin-users",category:"buddypress",attributes:{itemID:{type:"integer",default:0},avatarSize:{type:"string",default:"full"},displayMentionSlug:{type:"boolean",default:!0},displayActionButton:{type:"boolean",default:!0},displayCoverImage:{type:"boolean",default:!0}},edit:I}); -},{}]},{},["TmUL"], null) +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"AE3e":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.AVATAR_SIZES=void 0;var e=wp,l=e.i18n.__,u=[{label:l("None","buddypress"),value:"none"},{label:l("Thumb","buddypress"),value:"thumb"},{label:l("Full","buddypress"),value:"full"}];exports.AVATAR_SIZES=u; +},{}],"YNTp":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("./constants"),t=wp,n=t.blockEditor,o=n.InspectorControls,r=n.BlockControls,s=t.components,l=s.Placeholder,a=s.Disabled,i=s.PanelBody,d=s.SelectControl,u=s.ToggleControl,p=s.Toolbar,m=s.ToolbarButton,b=t.compose.compose,c=t.data.withSelect,y=t.editor.ServerSideRender,h=t.element,g=h.Fragment,v=h.createElement,S=t.i18n.__,f=bp.blockComponents.AutoCompleter,C=function(e){return e&&e.mention_name?e.mention_name:null},I=function(t){var n=t.attributes,s=t.setAttributes,b=t.bpSettings,c=b.isAvatarEnabled,h=b.isMentionEnabled,I=b.isCoverImageEnabled,k=n.avatarSize,A=n.displayMentionSlug,E=n.displayActionButton,M=n.displayCoverImage;return n.itemID?v(g,null,v(r,null,v(p,null,v(m,{icon:"edit",title:S("Select another member","buddypress"),onClick:function(){s({itemID:0})}}))),v(o,null,v(i,{title:S("Settings","buddypress"),initialOpen:!0},v(u,{label:S("Display Profile button","buddypress"),checked:!!E,onChange:function(){s({displayActionButton:!E})},help:S(E?"Include a link to the user's profile page under their display name.":"Toggle to display a link to the user's profile page under their display name.","buddypress")}),c&&v(d,{label:S("Avatar size","buddypress"),value:k,options:e.AVATAR_SIZES,help:S('Select "None" to disable the avatar.',"buddypress"),onChange:function(e){s({avatarSize:e})}}),I&&v(u,{label:S("Display Cover Image","buddypress"),checked:!!M,onChange:function(){s({displayCoverImage:!M})},help:S(M?"Include the user's cover image over their display name.":"Toggle to display the user's cover image over their display name.","buddypress")}),h&&v(u,{label:S("Display Mention slug","buddypress"),checked:!!A,onChange:function(){s({displayMentionSlug:!A})},help:S(A?"Include the user's mention name under their display name.":"Toggle to display the user's mention name under their display name.","buddypress")}))),v(a,null,v(y,{block:"bp/member",attributes:n}))):v(l,{icon:"admin-users",label:S("BuddyPress Member","buddypress"),instructions:S("Start typing the name of the member you want to feature into this post.","buddypress")},v(f,{component:"members",slugValue:C,ariaLabel:S("Member's username","buddypress"),placeholder:S("Enter Member's username here…","buddypress"),onSelectItem:s,useAvatar:c}))},k=b([c(function(e){return{bpSettings:e("core/editor").getEditorSettings().bp.members||{}}})])(I),A=k;exports.default=A; +},{"./constants":"AE3e"}],"TmUL":[function(require,module,exports) { +"use strict";var e=t(require("./member/edit"));function t(e){return e&&e.__esModule?e:{default:e}}var r=wp,d=r.blocks.registerBlockType,a=r.i18n.__;d("bp/member",{title:a("Member","buddypress"),description:a("BuddyPress Member.","buddypress"),icon:"admin-users",category:"buddypress",attributes:{itemID:{type:"integer",default:0},avatarSize:{type:"string",default:"full"},displayMentionSlug:{type:"boolean",default:!0},displayActionButton:{type:"boolean",default:!0},displayCoverImage:{type:"boolean",default:!0}},edit:e.default}); +},{"./member/edit":"YNTp"}]},{},["TmUL"], null) //# sourceMappingURL=/bp-members/js/blocks/member.js.map \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/js/blocks/member.js.map b/wp-content/plugins/buddypress/bp-members/js/blocks/member.js.map index b3624c02f5491abf65b95a5c8254cae21e9fb40c..c71221c8733d4a58706709a1542ecfecbaa952eb 100644 --- a/wp-content/plugins/buddypress/bp-members/js/blocks/member.js.map +++ b/wp-content/plugins/buddypress/bp-members/js/blocks/member.js.map @@ -1 +1 @@ -{"version":3,"sources":["bp-members/js/blocks/member.js"],"names":["registerBlockType","wp","blocks","element","createElement","Fragment","components","Placeholder","Disabled","PanelBody","SelectControl","ToggleControl","Toolbar","ToolbarButton","blockEditor","InspectorControls","BlockControls","withSelect","data","compose","ServerSideRender","editor","__","i18n","AutoCompleter","bp","blockComponents","AVATAR_SIZES","label","value","editMember","attributes","setAttributes","bpSettings","isAvatarEnabled","isMentionEnabled","isCoverImageEnabled","avatarSize","displayMentionSlug","displayActionButton","displayCoverImage","itemID","option","editMemberBlock","select","getEditorSettings","members","title","description","icon","category","type","default","edit"],"mappings":";AAGQA,IAAAA,EAAsBC,GAAGC,OAAzBF,kBAC4BC,EAAAA,GAAGE,QAA/BC,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,SAC4EJ,EAAAA,GAAGK,WAA9FC,EAAAA,EAAAA,YAAaC,EAAAA,EAAAA,SAAUC,EAAAA,EAAAA,UAAWC,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,QAASC,EAAAA,EAAAA,cACpCZ,EAAAA,GAAGa,YAAxCC,EAAAA,EAAAA,kBAAmBC,EAAAA,EAAAA,cACnBC,EAAehB,GAAGiB,KAAlBD,WACAE,EAAYlB,GAAGkB,QAAfA,QACAC,EAAqBnB,GAAGoB,OAAxBD,iBACAE,EAAOrB,GAAGsB,KAAVD,GAKAE,EAAkBC,GAAGC,gBAArBF,cAEFG,EAAe,CACpB,CACCC,MAAON,EAAI,OAAQ,cACnBO,MAAO,QAER,CACCD,MAAON,EAAI,QAAS,cACpBO,MAAO,SAER,CACCD,MAAON,EAAI,OAAQ,cACnBO,MAAO,SAIHC,EAAa,SAAiD,GAA7CC,IAAAA,EAAAA,EAAAA,WAAYC,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,WACzCC,EAA2DD,EAA3DC,gBAAiBC,EAA0CF,EAA1CE,iBAAkBC,EAAwBH,EAAxBG,oBACnCC,EAA2EN,EAA3EM,WAAYC,EAA+DP,EAA/DO,mBAAoBC,EAA2CR,EAA3CQ,oBAAqBC,EAAsBT,EAAtBS,kBAExD,OAAET,EAAWU,OAmBjB,EAAC,EACA,KAAA,EAAC,EACA,KAAA,EAAC,EACA,KAAA,EAAC,EAAD,CACC,KAAK,OACL,MAAQnB,EAAI,wBAAyB,cACrC,QAAU,WACTU,EAAe,CAAES,OAAQ,SAK7B,EAAC,EACA,KAAA,EAAC,EAAD,CAAW,MAAQnB,EAAI,WAAY,cAAiB,aAAc,GACjE,EAAC,EAAD,CACC,MAAQA,EAAI,yBAA0B,cACtC,UAAaiB,EACb,SAAW,WACVP,EAAe,CAAEO,qBAAuBA,KAEzC,KAEIjB,EADHiB,EACO,sEACA,gFADwE,gBAK/EL,GACD,EAAC,EAAD,CACC,MAAQZ,EAAI,cAAe,cAC3B,MAAQe,EACR,QAAUV,EACV,KAAOL,EAAI,uCAAwC,cACnD,SAAW,SAAEoB,GACZV,EAAe,CAAEK,WAAYK,OAK9BN,GACD,EAAC,EAAD,CACC,MAAQd,EAAI,sBAAuB,cACnC,UAAakB,EACb,SAAW,WACVR,EAAe,CAAEQ,mBAAqBA,KAEvC,KAEIlB,EADHkB,EACO,0DACA,oEAD4D,gBAMpEL,GACD,EAAC,EAAD,CACC,MAAQb,EAAI,uBAAwB,cACpC,UAAagB,EACb,SAAW,WACVN,EAAe,CAAEM,oBAAsBA,KAExC,KAEIhB,EADHgB,EACO,4DACA,sEAD8D,kBAO1E,EAAC,EACA,KAAA,EAAC,EAAD,CAAkB,MAAM,YAAY,WAAaP,MAxFlD,EAAC,EAAD,CACC,KAAK,cACL,MAAQT,EAAI,oBAAqB,cACjC,aAAeA,EAAI,0EAA2E,eAE9F,EAAC,EAAD,CACC,UAAU,UACV,UAAYA,EAAI,oBAAsB,cACtC,YAAcA,EAAI,gCAAkC,cACpD,aAAeU,EACf,UAAYE,MAoFXS,EAAkBxB,EAAS,CAChCF,EAAY,SAAE2B,GAEN,MAAA,CACNX,WAFsBW,EAAQ,eAAgBC,oBAEnBpB,GAAGqB,SAAW,OAJpB3B,CAOnBW,GAEL9B,EAAmB,YAAa,CAC/B+C,MAAOzB,EAAI,SAAU,cAErB0B,YAAa1B,EAAI,qBAAsB,cAEvC2B,KAAM,cAENC,SAAU,aAEVnB,WAAY,CACXU,OAAQ,CACPU,KAAM,UACNC,QAAS,GAEVf,WAAY,CACXc,KAAM,SACNC,QAAS,QAEVd,mBAAoB,CACnBa,KAAM,UACNC,SAAS,GAEVb,oBAAqB,CACpBY,KAAM,UACNC,SAAS,GAEVZ,kBAAmB,CAClBW,KAAM,UACNC,SAAS,IAIXC,KAAMV","file":"member.js","sourceRoot":"../src/js","sourcesContent":["/**\n * WordPress dependencies.\n */\nconst { registerBlockType } = wp.blocks;\nconst { createElement, Fragment } = wp.element;\nconst { Placeholder, Disabled, PanelBody, SelectControl, ToggleControl, Toolbar, ToolbarButton } = wp.components;\nconst { InspectorControls, BlockControls } = wp.blockEditor;\nconst { withSelect } = wp.data;\nconst { compose } = wp.compose;\nconst { ServerSideRender } = wp.editor;\nconst { __ } = wp.i18n;\n\n/**\n * BuddyPress dependencies.\n */\nconst { AutoCompleter } = bp.blockComponents;\n\nconst AVATAR_SIZES = [\n\t{\n\t\tlabel: __( 'None', 'buddypress' ),\n\t\tvalue: 'none',\n\t},\n\t{\n\t\tlabel: __( 'Thumb', 'buddypress' ),\n\t\tvalue: 'thumb',\n\t},\n\t{\n\t\tlabel: __( 'Full', 'buddypress' ),\n\t\tvalue: 'full',\n\t},\n];\n\nconst editMember = ( { attributes, setAttributes, bpSettings } ) => {\n\tconst { isAvatarEnabled, isMentionEnabled, isCoverImageEnabled } = bpSettings;\n\tconst { avatarSize, displayMentionSlug, displayActionButton, displayCoverImage } = attributes;\n\n\tif ( ! attributes.itemID ) {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\ticon=\"admin-users\"\n\t\t\t\tlabel={ __( 'BuddyPress Member', 'buddypress' ) }\n\t\t\t\tinstructions={ __( 'Start typing the name of the member you want to feature into this post.', 'buddypress' ) }\n\t\t\t>\n\t\t\t\t<AutoCompleter\n\t\t\t\t\tcomponent=\"members\"\n\t\t\t\t\tariaLabel={ __( 'Member\\'s username', 'buddypress' ) }\n\t\t\t\t\tplaceholder={ __( 'Enter Member\\'s username here…', 'buddypress' ) }\n\t\t\t\t\tonSelectItem={ setAttributes }\n\t\t\t\t\tuseAvatar={ isAvatarEnabled }\n\t\t\t\t/>\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<BlockControls>\n\t\t\t\t<Toolbar>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon=\"edit\"\n\t\t\t\t\t\ttitle={ __( 'Select another member', 'buddypress' ) }\n\t\t\t\t\t\tonClick={ () =>{\n\t\t\t\t\t\t\tsetAttributes( { itemID: 0 } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</Toolbar>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings', 'buddypress' ) } initialOpen={ true }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display Profile button', 'buddypress' ) }\n\t\t\t\t\t\tchecked={ !! displayActionButton }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tsetAttributes( { displayActionButton: ! displayActionButton } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\tdisplayActionButton\n\t\t\t\t\t\t\t\t? __( 'Include a link to the user\\'s profile page under their display name.', 'buddypress' )\n\t\t\t\t\t\t\t\t: __( 'Toggle to display a link to the user\\'s profile page under their display name.', 'buddypress' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ isAvatarEnabled && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Avatar size', 'buddypress' ) }\n\t\t\t\t\t\t\tvalue={ avatarSize }\n\t\t\t\t\t\t\toptions={ AVATAR_SIZES }\n\t\t\t\t\t\t\thelp={ __( 'Select \"None\" to disable the avatar.', 'buddypress' ) }\n\t\t\t\t\t\t\tonChange={ ( option ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { avatarSize: option } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ isCoverImageEnabled && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Display Cover Image', 'buddypress' ) }\n\t\t\t\t\t\t\tchecked={ !! displayCoverImage }\n\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( { displayCoverImage: ! displayCoverImage } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\tdisplayCoverImage\n\t\t\t\t\t\t\t\t\t? __( 'Include the user\\'s cover image over their display name.', 'buddypress' )\n\t\t\t\t\t\t\t\t\t: __( 'Toggle to display the user\\'s cover image over their display name.', 'buddypress' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ isMentionEnabled && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Display Mention slug', 'buddypress' ) }\n\t\t\t\t\t\t\tchecked={ !! displayMentionSlug }\n\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( { displayMentionSlug: ! displayMentionSlug } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\tdisplayMentionSlug\n\t\t\t\t\t\t\t\t\t? __( 'Include the user\\'s mention name under their display name.', 'buddypress' )\n\t\t\t\t\t\t\t\t\t: __( 'Toggle to display the user\\'s mention name under their display name.', 'buddypress' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<Disabled>\n\t\t\t\t<ServerSideRender block=\"bp/member\" attributes={ attributes } />\n\t\t\t</Disabled>\n\t\t</Fragment>\n\t);\n};\n\nconst editMemberBlock = compose( [\n\twithSelect( ( select ) => {\n\t\tconst editorSettings = select( 'core/editor' ).getEditorSettings();\n\t\treturn {\n\t\t\tbpSettings: editorSettings.bp.members || {},\n\t\t};\n\t} ),\n] )( editMember );\n\nregisterBlockType( 'bp/member', {\n\ttitle: __( 'Member', 'buddypress' ),\n\n\tdescription: __( 'BuddyPress Member.', 'buddypress' ),\n\n\ticon: 'admin-users',\n\n\tcategory: 'buddypress',\n\n\tattributes: {\n\t\titemID: {\n\t\t\ttype: 'integer',\n\t\t\tdefault: 0,\n\t\t},\n\t\tavatarSize: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'full',\n\t\t},\n\t\tdisplayMentionSlug: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tdisplayActionButton: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tdisplayCoverImage: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tedit: editMemberBlock,\n} );\n"]} \ No newline at end of file +{"version":3,"sources":["bp-members/js/blocks/member/constants.js","bp-members/js/blocks/member/edit.js","bp-members/js/blocks/member.js"],"names":["wp","__","i18n","AVATAR_SIZES","label","value","editMemberBlock","blockEditor","InspectorControls","BlockControls","components","Placeholder","Disabled","PanelBody","SelectControl","ToggleControl","Toolbar","ToolbarButton","compose","withSelect","data","ServerSideRender","editor","element","Fragment","createElement","AutoCompleter","bp","blockComponents","getSlugValue","item","mention_name","editMember","attributes","setAttributes","bpSettings","isAvatarEnabled","isMentionEnabled","isCoverImageEnabled","avatarSize","displayMentionSlug","displayActionButton","displayCoverImage","itemID","option","select","getEditorSettings","members","registerBlockType","blocks","title","description","icon","category","type","default","edit"],"mappings":";AAcO,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,kBAAA,EAPHA,IAAAA,EAAAA,GAFFC,EADDC,EAAAA,KACCD,GASWE,EAAe,CAC3B,CACCC,MAAOH,EAAI,OAAQ,cACnBI,MAAO,QAER,CACCD,MAAOH,EAAI,QAAS,cACpBI,MAAO,SAER,CACCD,MAAOH,EAAI,OAAQ,cACnBI,MAAO,SAXF,QAAA,aAAA;;ACqJQC,aAAAA,OAAAA,eAAAA,QAAAA,aAAAA,CAAAA,OAAAA,IAAAA,QAAAA,aAAAA,EAxHf,IAAA,EAAA,QAAA,eAVIN,EAAAA,GA7BHO,EAAAA,EAAAA,YACCC,EAAAA,EAAAA,kBACAC,EAAAA,EAAAA,cAEDC,EAAAA,EAAAA,WACCC,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,cAGAC,EADDA,EAAAA,QACCA,QAGAC,EADDC,EAAAA,KACCD,WAGAE,EADDC,EAAAA,OACCD,iBAEDE,EAAAA,EAAAA,QACCC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,cAGAxB,EADDC,EAAAA,KACCD,GAOMyB,EAAkBC,GAAGC,gBAArBF,cAOFG,EAAe,SAAEC,GACjBA,OAAAA,GAAQA,EAAKC,aACVD,EAAKC,aAGN,MAGFC,EAAa,SAAiD,GAA7CC,IAAAA,EAAAA,EAAAA,WAAYC,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,WACzCC,EAA2DD,EAA3DC,gBAAiBC,EAA0CF,EAA1CE,iBAAkBC,EAAwBH,EAAxBG,oBACnCC,EAA2EN,EAA3EM,WAAYC,EAA+DP,EAA/DO,mBAAoBC,EAA2CR,EAA3CQ,oBAAqBC,EAAsBT,EAAtBS,kBAExD,OAAET,EAAWU,OAoBjB,EAAC,EACA,KAAA,EAAC,EACA,KAAA,EAAC,EACA,KAAA,EAAC,EAAD,CACC,KAAK,OACL,MAAQ1C,EAAI,wBAAyB,cACrC,QAAU,WACTiC,EAAe,CAAES,OAAQ,SAK7B,EAAC,EACA,KAAA,EAAC,EAAD,CAAW,MAAQ1C,EAAI,WAAY,cAAiB,aAAc,GACjE,EAAC,EAAD,CACC,MAAQA,EAAI,yBAA0B,cACtC,UAAawC,EACb,SAAW,WACVP,EAAe,CAAEO,qBAAuBA,KAEzC,KAEIxC,EADHwC,EACO,sEACA,gFADwE,gBAK/EL,GACD,EAAC,EAAD,CACC,MAAQnC,EAAI,cAAe,cAC3B,MAAQsC,EACR,QAAUpC,EAHX,aAIC,KAAOF,EAAI,uCAAwC,cACnD,SAAW,SAAE2C,GACZV,EAAe,CAAEK,WAAYK,OAK9BN,GACD,EAAC,EAAD,CACC,MAAQrC,EAAI,sBAAuB,cACnC,UAAayC,EACb,SAAW,WACVR,EAAe,CAAEQ,mBAAqBA,KAEvC,KAEIzC,EADHyC,EACO,0DACA,oEAD4D,gBAMpEL,GACD,EAAC,EAAD,CACC,MAAQpC,EAAI,uBAAwB,cACpC,UAAauC,EACb,SAAW,WACVN,EAAe,CAAEM,oBAAsBA,KAExC,KAEIvC,EADHuC,EACO,4DACA,sEAD8D,kBAO1E,EAAC,EACA,KAAA,EAAC,EAAD,CAAkB,MAAM,YAAY,WAAaP,MAzFlD,EAAC,EAAD,CACC,KAAK,cACL,MAAQhC,EAAI,oBAAqB,cACjC,aAAeA,EAAI,0EAA2E,eAE9F,EAAC,EAAD,CACC,UAAU,UACV,UAAY4B,EACZ,UAAY5B,EAAI,oBAAsB,cACtC,YAAcA,EAAI,gCAAkC,cACpD,aAAeiC,EACf,UAAYE,MAoFX9B,EAAkBY,EAAS,CAChCC,EAAY,SAAE0B,GAEN,MAAA,CACNV,WAFsBU,EAAQ,eAAgBC,oBAEnBnB,GAAGoB,SAAW,OAJpB7B,CAOnBc,GAEU1B,EAAAA,EAAAA,QAAAA,QAAAA;;AClJf,aAFA,IAAA,EAAA,EAAA,QAAA,kBAEA,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GAPIN,IAAAA,EAAAA,GALFgD,EADDC,EAAAA,OACCD,kBAGA/C,EADDC,EAAAA,KACCD,GASF+C,EAAmB,YAAa,CAC/BE,MAAOjD,EAAI,SAAU,cACrBkD,YAAalD,EAAI,qBAAsB,cACvCmD,KAAM,cACNC,SAAU,aACVpB,WAAY,CACXU,OAAQ,CACPW,KAAM,UACNC,QAAS,GAEVhB,WAAY,CACXe,KAAM,SACNC,QAAS,QAEVf,mBAAoB,CACnBc,KAAM,UACNC,SAAS,GAEVd,oBAAqB,CACpBa,KAAM,UACNC,SAAS,GAEVb,kBAAmB,CAClBY,KAAM,UACNC,SAAS,IAGXC,KAAMlD,EAAAA","file":"member.js","sourceRoot":"../src/js","sourcesContent":["/**\n * WordPress dependencies.\n */\nconst {\n\ti18n: {\n\t\t__,\n\t},\n} = wp;\n\n/**\n * Avatar sizes.\n *\n * @type {Array}\n */\nexport const AVATAR_SIZES = [\n\t{\n\t\tlabel: __( 'None', 'buddypress' ),\n\t\tvalue: 'none',\n\t},\n\t{\n\t\tlabel: __( 'Thumb', 'buddypress' ),\n\t\tvalue: 'thumb',\n\t},\n\t{\n\t\tlabel: __( 'Full', 'buddypress' ),\n\t\tvalue: 'full',\n\t},\n];\n","/**\n * WordPress dependencies.\n */\nconst {\n\tblockEditor: {\n\t\tInspectorControls,\n\t\tBlockControls,\n\t},\n\tcomponents: {\n\t\tPlaceholder,\n\t\tDisabled,\n\t\tPanelBody,\n\t\tSelectControl,\n\t\tToggleControl,\n\t\tToolbar,\n\t\tToolbarButton,\n\t},\n\tcompose: {\n\t\tcompose,\n\t},\n\tdata: {\n\t\twithSelect,\n\t},\n\teditor: {\n\t\tServerSideRender,\n\t},\n\telement: {\n\t\tFragment,\n\t\tcreateElement,\n\t},\n\ti18n: {\n\t\t__,\n\t},\n} = wp;\n\n/**\n * BuddyPress dependencies.\n */\nconst { AutoCompleter } = bp.blockComponents;\n\n/**\n * Internal dependencies.\n */\nimport { AVATAR_SIZES } from './constants';\n\nconst getSlugValue = ( item ) => {\n\tif ( item && item.mention_name ) {\n\t\treturn item.mention_name;\n\t}\n\n\treturn null;\n}\n\nconst editMember = ( { attributes, setAttributes, bpSettings } ) => {\n\tconst { isAvatarEnabled, isMentionEnabled, isCoverImageEnabled } = bpSettings;\n\tconst { avatarSize, displayMentionSlug, displayActionButton, displayCoverImage } = attributes;\n\n\tif ( ! attributes.itemID ) {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\ticon=\"admin-users\"\n\t\t\t\tlabel={ __( 'BuddyPress Member', 'buddypress' ) }\n\t\t\t\tinstructions={ __( 'Start typing the name of the member you want to feature into this post.', 'buddypress' ) }\n\t\t\t>\n\t\t\t\t<AutoCompleter\n\t\t\t\t\tcomponent=\"members\"\n\t\t\t\t\tslugValue={ getSlugValue }\n\t\t\t\t\tariaLabel={ __( 'Member\\'s username', 'buddypress' ) }\n\t\t\t\t\tplaceholder={ __( 'Enter Member\\'s username here…', 'buddypress' ) }\n\t\t\t\t\tonSelectItem={ setAttributes }\n\t\t\t\t\tuseAvatar={ isAvatarEnabled }\n\t\t\t\t/>\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<BlockControls>\n\t\t\t\t<Toolbar>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon=\"edit\"\n\t\t\t\t\t\ttitle={ __( 'Select another member', 'buddypress' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetAttributes( { itemID: 0 } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</Toolbar>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings', 'buddypress' ) } initialOpen={ true }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display Profile button', 'buddypress' ) }\n\t\t\t\t\t\tchecked={ !! displayActionButton }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tsetAttributes( { displayActionButton: ! displayActionButton } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\tdisplayActionButton\n\t\t\t\t\t\t\t\t? __( 'Include a link to the user\\'s profile page under their display name.', 'buddypress' )\n\t\t\t\t\t\t\t\t: __( 'Toggle to display a link to the user\\'s profile page under their display name.', 'buddypress' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ isAvatarEnabled && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Avatar size', 'buddypress' ) }\n\t\t\t\t\t\t\tvalue={ avatarSize }\n\t\t\t\t\t\t\toptions={ AVATAR_SIZES }\n\t\t\t\t\t\t\thelp={ __( 'Select \"None\" to disable the avatar.', 'buddypress' ) }\n\t\t\t\t\t\t\tonChange={ ( option ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { avatarSize: option } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ isCoverImageEnabled && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Display Cover Image', 'buddypress' ) }\n\t\t\t\t\t\t\tchecked={ !! displayCoverImage }\n\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( { displayCoverImage: ! displayCoverImage } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\tdisplayCoverImage\n\t\t\t\t\t\t\t\t\t? __( 'Include the user\\'s cover image over their display name.', 'buddypress' )\n\t\t\t\t\t\t\t\t\t: __( 'Toggle to display the user\\'s cover image over their display name.', 'buddypress' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ isMentionEnabled && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Display Mention slug', 'buddypress' ) }\n\t\t\t\t\t\t\tchecked={ !! displayMentionSlug }\n\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( { displayMentionSlug: ! displayMentionSlug } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\tdisplayMentionSlug\n\t\t\t\t\t\t\t\t\t? __( 'Include the user\\'s mention name under their display name.', 'buddypress' )\n\t\t\t\t\t\t\t\t\t: __( 'Toggle to display the user\\'s mention name under their display name.', 'buddypress' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<Disabled>\n\t\t\t\t<ServerSideRender block=\"bp/member\" attributes={ attributes } />\n\t\t\t</Disabled>\n\t\t</Fragment>\n\t);\n};\n\nconst editMemberBlock = compose( [\n\twithSelect( ( select ) => {\n\t\tconst editorSettings = select( 'core/editor' ).getEditorSettings();\n\t\treturn {\n\t\t\tbpSettings: editorSettings.bp.members || {},\n\t\t};\n\t} ),\n] )( editMember );\n\nexport default editMemberBlock;\n","/**\n * WordPress dependencies.\n */\nconst {\n\tblocks: {\n\t\tregisterBlockType,\n\t},\n\ti18n: {\n\t\t__,\n\t},\n} = wp;\n\n/**\n * Internal dependencies.\n */\nimport editMemberBlock from './member/edit';\n\nregisterBlockType( 'bp/member', {\n\ttitle: __( 'Member', 'buddypress' ),\n\tdescription: __( 'BuddyPress Member.', 'buddypress' ),\n\ticon: 'admin-users',\n\tcategory: 'buddypress',\n\tattributes: {\n\t\titemID: {\n\t\t\ttype: 'integer',\n\t\t\tdefault: 0,\n\t\t},\n\t\tavatarSize: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'full',\n\t\t},\n\t\tdisplayMentionSlug: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tdisplayActionButton: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tdisplayCoverImage: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tedit: editMemberBlock,\n} );\n"]} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/js/blocks/members.js b/wp-content/plugins/buddypress/bp-members/js/blocks/members.js new file mode 100644 index 0000000000000000000000000000000000000000..891d912cab2cf9d8122a78e91c82f12acd4b35a7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/js/blocks/members.js @@ -0,0 +1,28 @@ +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"LGpM":[function(require,module,exports) { +function n(n,r){(null==r||r>n.length)&&(r=n.length);for(var e=0,l=new Array(r);e<r;e++)l[e]=n[e];return l}module.exports=n; +},{}],"o3SL":[function(require,module,exports) { +var r=require("./arrayLikeToArray");function a(a){if(Array.isArray(a))return r(a)}module.exports=a; +},{"./arrayLikeToArray":"LGpM"}],"lZpU":[function(require,module,exports) { +function e(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}module.exports=e; +},{}],"Vzqv":[function(require,module,exports) { +var r=require("./arrayLikeToArray");function t(t,e){if(t){if("string"==typeof t)return r(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(o):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?r(t,e):void 0}}module.exports=t; +},{"./arrayLikeToArray":"LGpM"}],"NCaH":[function(require,module,exports) { +function e(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}module.exports=e; +},{}],"I9dH":[function(require,module,exports) { +var r=require("./arrayWithoutHoles"),e=require("./iterableToArray"),u=require("./unsupportedIterableToArray"),a=require("./nonIterableSpread");function o(o){return r(o)||e(o)||u(o)||a()}module.exports=o; +},{"./arrayWithoutHoles":"o3SL","./iterableToArray":"lZpU","./unsupportedIterableToArray":"Vzqv","./nonIterableSpread":"NCaH"}],"dEOc":[function(require,module,exports) { +function r(r){if(Array.isArray(r))return r}module.exports=r; +},{}],"RonT":[function(require,module,exports) { +function r(r,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(r)){var e=[],n=!0,o=!1,l=void 0;try{for(var i,u=r[Symbol.iterator]();!(n=(i=u.next()).done)&&(e.push(i.value),!t||e.length!==t);n=!0);}catch(a){o=!0,l=a}finally{try{n||null==u.return||u.return()}finally{if(o)throw l}}return e}}module.exports=r; +},{}],"sa4T":[function(require,module,exports) { +function e(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}module.exports=e; +},{}],"xkYc":[function(require,module,exports) { +var r=require("./arrayWithHoles"),e=require("./iterableToArrayLimit"),t=require("./unsupportedIterableToArray"),i=require("./nonIterableRest");function u(u,a){return r(u)||e(u,a)||t(u,a)||i()}module.exports=u; +},{"./arrayWithHoles":"dEOc","./iterableToArrayLimit":"RonT","./unsupportedIterableToArray":"Vzqv","./nonIterableRest":"sa4T"}],"gr8I":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.EXTRA_DATA=exports.AVATAR_SIZES=void 0;var e=wp,s=e.i18n.__,l=[{label:s("None","buddypress"),value:"none"},{label:s("Thumb","buddypress"),value:"thumb"},{label:s("Full","buddypress"),value:"full"}];exports.AVATAR_SIZES=l;var t=[{label:s("None","buddypress"),value:"none"},{label:s("Last time the user was active","buddypress"),value:"last_activity"},{label:s("Latest activity the user posted","buddypress"),value:"latest_update"}];exports.EXTRA_DATA=t; +},{}],"PZSE":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=a(require("@babel/runtime/helpers/toConsumableArray")),t=a(require("@babel/runtime/helpers/slicedToArray")),n=require("./constants");function a(e){return e&&e.__esModule?e:{default:e}}var r=wp,s=r.blockEditor,i=s.InspectorControls,l=s.BlockControls,o=r.components,u=o.Placeholder,d=o.PanelBody,c=o.SelectControl,m=o.ToggleControl,p=o.Button,b=o.Dashicon,y=o.Tooltip,h=o.ToolbarGroup,g=o.RangeControl,v=r.compose.compose,f=r.data.withSelect,_=r.element,A=_.createElement,k=_.Fragment,S=_.useState,C=r.i18n,x=C.__,N=C.sprintf,T=r.apiFetch,D=r.url.addQueryArgs,I=bp.blockComponents.AutoCompleter,M=lodash,E=M.reject,P=M.remove,w=M.sortBy,q=function(e){return e&&e.mention_name?e.mention_name:null},B=function(a){var r,s=a.attributes,o=a.setAttributes,v=a.isSelected,f=a.bpSettings,_=f.isAvatarEnabled,C=f.isMentionEnabled,M=s.itemIDs,B=s.avatarSize,R=s.displayMentionSlug,O=s.displayUserName,j=s.extraData,z=s.layoutPreference,L=s.columns,F=0!==M.length,G=S([]),Q=(0,t.default)(G,2),U=Q[0],V=Q[1],X=[{icon:"text",title:x("List view","buddypress"),onClick:function(){return o({layoutPreference:"list"})},isActive:"list"===z},{icon:"screenoptions",title:x("Grid view","buddypress"),onClick:function(){return o({layoutPreference:"grid"})},isActive:"grid"===z}],H="bp-block-members avatar-"+B,Z=n.EXTRA_DATA;"grid"===z&&(H+=" is-grid columns-"+L,Z=n.EXTRA_DATA.filter(function(e){return"latest_update"!==e.value}));return F&&M.length!==U.length&&T({path:D("/buddypress/v1/members",{populate_extras:!0,include:M})}).then(function(e){V(w(e,[function(e){return M.indexOf(e.id)}]))}),U.length&&(r=U.map(function(e){var t=!1,n="member-content";return"list"===z&&"latest_update"===j&&e.latest_update&&e.latest_update.rendered&&(t=!0,n="member-content has-activity"),A("div",{key:"bp-member-"+e.id,className:n},v&&A(y,{text:x("Remove member","buddypress")},A(p,{className:"is-right",onClick:function(){var t;(t=e.id)&&-1!==M.indexOf(t)&&(V(E(U,["id",t])),o({itemIDs:P(M,function(e){return e!==t})}))},label:x("Remove member","buddypress")},A(b,{icon:"no"}))),_&&"none"!==B&&A("div",{className:"item-header-avatar"},A("a",{href:e.link,target:"_blank"},A("img",{key:"avatar-"+e.id,className:"avatar",alt:N(x("Profile photo of %s","buddypress"),e.name),src:e.avatar_urls[B]}))),A("div",{className:"member-description"},t&&A("blockquote",{className:"wp-block-quote"},A("div",{dangerouslySetInnerHTML:{__html:e.latest_update.rendered}}),A("cite",null,O&&A("span",null,e.name)," ",C&&R&&A("a",{href:e.link,target:"_blank"},"(@",e.mention_name,")"))),!t&&O&&A("strong",null,A("a",{href:e.link,target:"_blank"},e.name)),!t&&C&&R&&A("span",{className:"user-nicename"},"@",e.mention_name),"last_activity"===j&&e.last_activity&&e.last_activity.date&&A("time",{dateTime:e.last_activity.date},N(x("Active %s","buddypress"),e.last_activity.timediff))))})),A(k,null,A(i,null,A(d,{title:x("Settings","buddypress"),initialOpen:!0},A(m,{label:x("Display the user name","buddypress"),checked:!!O,onChange:function(){o({displayUserName:!O})},help:x(O?"Include the user's display name.":"Toggle to include user's display name.","buddypress")}),C&&A(m,{label:x("Display Mention slug","buddypress"),checked:!!R,onChange:function(){o({displayMentionSlug:!R})},help:x(R?"Include the user's mention name under their display name.":"Toggle to display the user's mention name under their display name.","buddypress")}),_&&A(c,{label:x("Avatar size","buddypress"),value:B,options:n.AVATAR_SIZES,help:x('Select "None" to disable the avatar.',"buddypress"),onChange:function(e){o({avatarSize:e})}}),A(c,{label:x("BuddyPress extra information","buddypress"),value:j,options:Z,help:x('Select "None" to show no extra information.',"buddypress"),onChange:function(e){o({extraData:e})}}),"grid"===z&&A(g,{label:x("Columns","buddypress"),value:L,onChange:function(e){return o({columns:e})},min:2,max:4,required:!0}))),A(l,null,A(h,{controls:X})),F&&A("div",{className:H},r),(v||0===M.length)&&A(u,{icon:F?"":"groups",label:F?"":x("BuddyPress Members","buddypress"),instructions:x("Start typing the name of the member you want to add to the members list.","buddypress"),className:0!==M.length?"is-appender":"is-large"},A(I,{component:"members",objectQueryArgs:{exclude:M},slugValue:q,ariaLabel:x("Member's username","buddypress"),placeholder:x("Enter Member's username here…","buddypress"),onSelectItem:function(t){var n=t.itemID;n&&-1===M.indexOf(n)&&o({itemIDs:[].concat((0,e.default)(M),[parseInt(n,10)])})},useAvatar:_})))},R=v([f(function(e){return{bpSettings:e("core/editor").getEditorSettings().bp.members||{}}})])(B),O=R;exports.default=O; +},{"@babel/runtime/helpers/toConsumableArray":"I9dH","@babel/runtime/helpers/slicedToArray":"xkYc","./constants":"gr8I"}],"XEHU":[function(require,module,exports) { +"use strict";var e=t(require("./members/edit"));function t(e){return e&&e.__esModule?e:{default:e}}var r=wp,s=r.blocks.registerBlockType,a=r.i18n.__;s("bp/members",{title:a("Members","buddypress"),description:a("BuddyPress Members.","buddypress"),icon:"groups",category:"buddypress",attributes:{itemIDs:{type:"array",items:{type:"integer"},default:[]},avatarSize:{type:"string",default:"full"},displayMentionSlug:{type:"boolean",default:!0},displayUserName:{type:"boolean",default:!0},extraData:{type:"string",default:"none"},layoutPreference:{type:"string",default:"list"},columns:{type:"number",default:2}},edit:e.default}); +},{"./members/edit":"PZSE"}]},{},["XEHU"], null) +//# sourceMappingURL=/bp-members/js/blocks/members.js.map \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/js/blocks/members.js.map b/wp-content/plugins/buddypress/bp-members/js/blocks/members.js.map new file mode 100644 index 0000000000000000000000000000000000000000..3ac4988be012ccdd093bb68c9f47b3c2427c7d98 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/js/blocks/members.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","bp-members/js/blocks/members/constants.js","bp-members/js/blocks/members/edit.js","bp-members/js/blocks/members.js"],"names":["wp","__","i18n","AVATAR_SIZES","label","value","EXTRA_DATA","editMembersBlock","blockEditor","InspectorControls","BlockControls","components","Placeholder","PanelBody","SelectControl","ToggleControl","Button","Dashicon","Tooltip","ToolbarGroup","RangeControl","compose","withSelect","data","element","createElement","Fragment","useState","sprintf","apiFetch","addQueryArgs","url","AutoCompleter","bp","blockComponents","lodash","reject","remove","sortBy","getSlugValue","item","mention_name","editMembers","attributes","membersList","setAttributes","isSelected","bpSettings","isAvatarEnabled","isMentionEnabled","itemIDs","avatarSize","displayMentionSlug","displayUserName","extraData","layoutPreference","columns","hasMembers","length","members","setMembers","layoutControls","icon","title","onClick","isActive","containerClasses","extraDataOptions","filter","extra","path","populate_extras","include","then","items","indexOf","id","map","member","hasActivity","memberItemClasses","latest_update","rendered","itemID","link","name","avatar_urls","__html","last_activity","date","timediff","option","exclude","parseInt","select","getEditorSettings","registerBlockType","blocks","description","category","type","default","edit"],"mappings":";AAAA,SAAA,EAAA,EAAA,IACA,MAAA,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,QAEA,IAAA,IAAA,EAAA,EAAA,EAAA,IAAA,MAAA,GAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAAA,GAGA,OAAA,EAGA,OAAA,QAAA;;ACVA,IAAA,EAAA,QAAA,sBAEA,SAAA,EAAA,GACA,GAAA,MAAA,QAAA,GAAA,OAAA,EAAA,GAGA,OAAA,QAAA;;ACNA,SAAA,EAAA,GACA,GAAA,oBAAA,QAAA,OAAA,YAAA,OAAA,GAAA,OAAA,MAAA,KAAA,GAGA,OAAA,QAAA;;ACJA,IAAA,EAAA,QAAA,sBAEA,SAAA,EAAA,EAAA,GACA,GAAA,EAAA,CACA,GAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,GACA,IAAA,EAAA,OAAA,UAAA,SAAA,KAAA,GAAA,MAAA,GAAA,GAEA,MADA,WAAA,GAAA,EAAA,cAAA,EAAA,EAAA,YAAA,MACA,QAAA,GAAA,QAAA,EAAA,MAAA,KAAA,GACA,cAAA,GAAA,2CAAA,KAAA,GAAA,EAAA,EAAA,QAAA,GAGA,OAAA,QAAA;;ACXA,SAAA,IACA,MAAA,IAAA,UAAA,wIAGA,OAAA,QAAA;;ACJA,IAAA,EAAA,QAAA,uBAEA,EAAA,QAAA,qBAEA,EAAA,QAAA,gCAEA,EAAA,QAAA,uBAEA,SAAA,EAAA,GACA,OAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,IAGA,OAAA,QAAA;;ACZA,SAAA,EAAA,GACA,GAAA,MAAA,QAAA,GAAA,OAAA,EAGA,OAAA,QAAA;;ACJA,SAAA,EAAA,EAAA,GACA,GAAA,oBAAA,QAAA,OAAA,YAAA,OAAA,GAAA,CACA,IAAA,EAAA,GACA,GAAA,EACA,GAAA,EACA,OAAA,EAEA,IACA,IAAA,IAAA,EAAA,EAAA,EAAA,OAAA,cAAA,GAAA,EAAA,EAAA,QAAA,QACA,EAAA,KAAA,EAAA,QAEA,GAAA,EAAA,SAAA,GAHA,GAAA,IAKA,MAAA,GACA,GAAA,EACA,EAAA,EACA,QACA,IACA,GAAA,MAAA,EAAA,QAAA,EAAA,SACA,QACA,GAAA,EAAA,MAAA,GAIA,OAAA,GAGA,OAAA,QAAA;;AC3BA,SAAA,IACA,MAAA,IAAA,UAAA,6IAGA,OAAA,QAAA;;ACJA,IAAA,EAAA,QAAA,oBAEA,EAAA,QAAA,0BAEA,EAAA,QAAA,gCAEA,EAAA,QAAA,qBAEA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,IAGA,OAAA,QAAA;;ACsBO,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,WAAA,QAAA,kBAAA,EA3BHA,IAAAA,EAAAA,GAFFC,EADDC,EAAAA,KACCD,GASWE,EAAe,CAC3B,CACCC,MAAOH,EAAI,OAAQ,cACnBI,MAAO,QAER,CACCD,MAAOH,EAAI,QAAS,cACpBI,MAAO,SAER,CACCD,MAAOH,EAAI,OAAQ,cACnBI,MAAO,SASF,QAAA,aAAA,EAAA,IAAMC,EAAa,CACzB,CACCF,MAAOH,EAAI,OAAQ,cACnBI,MAAO,QAER,CACCD,MAAOH,EAAI,gCAAiC,cAC5CI,MAAO,iBAER,CACCD,MAAOH,EAAI,kCAAmC,cAC9CI,MAAO,kBAXF,QAAA,WAAA;;ACmSQE,aAAAA,OAAAA,eAAAA,QAAAA,aAAAA,CAAAA,OAAAA,IAAAA,QAAAA,aAAAA,EAAAA,IAAAA,EAAAA,EAAAA,QAAAA,6CAAAA,EAAAA,EAAAA,QAAAA,yCArRf,EAAA,QAAA,eAqReA,SAAAA,EAAAA,GAAAA,OAAAA,GAAAA,EAAAA,WAAAA,EAAAA,CAAAA,QAAAA,GA/RXP,IAAAA,EAAAA,GAlCHQ,EAAAA,EAAAA,YACCC,EAAAA,EAAAA,kBACAC,EAAAA,EAAAA,cAEDC,EAAAA,EAAAA,WACCC,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,aAGAC,EADDA,EAAAA,QACCA,QAGAC,EADDC,EAAAA,KACCD,WAEDE,EAAAA,EAAAA,QACCC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,SAEDzB,EAAAA,EAAAA,KACCD,EAAAA,EAAAA,GACA2B,EAAAA,EAAAA,QAEDC,EAAAA,EAAAA,SAECC,EADDC,EAAAA,IACCD,aAOME,EAAkBC,GAAGC,gBAArBF,cAcJG,EAAAA,OAHHC,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,OAGKC,EAAe,SAAEC,GACjBA,OAAAA,GAAQA,EAAKC,aACVD,EAAKC,aAGN,MAGFC,EAAc,SAA6D,GAAzDC,IA8BnBC,EA9BmBD,EAAAA,EAAAA,WAAYE,EAAAA,EAAAA,cAAeC,EAAAA,EAAAA,WAAYC,EAAAA,EAAAA,WAE7DC,EAEGD,EAFHC,gBACAC,EACGF,EADHE,iBAGAC,EAOGP,EAPHO,QACAC,EAMGR,EANHQ,WACAC,EAKGT,EALHS,mBACAC,EAIGV,EAJHU,gBACAC,EAGGX,EAHHW,UACAC,EAEGZ,EAFHY,iBACAC,EACGb,EADHa,QAEKC,EAAa,IAAMP,EAAQQ,OACD/B,EAAAA,EAAU,IAfsC,GAAA,EAAA,EAAA,SAAA,EAAA,GAexEgC,EAfwE,EAAA,GAe/DC,EAf+D,EAAA,GAgB1EC,EAAiB,CACtB,CACCC,KAAM,OACNC,MAAO9D,EAAI,YAAa,cACxB+D,QAAS,WAAMnB,OAAAA,EAAe,CAAEU,iBAAkB,UAClDU,SAA+B,SAArBV,GAEX,CACCO,KAAM,gBACNC,MAAO9D,EAAI,YAAa,cACxB+D,QAAS,WAAMnB,OAAAA,EAAe,CAAEU,iBAAkB,UAClDU,SAA+B,SAArBV,IAIRW,EAAmB,2BAA6Bf,EAChDgB,EAAmB7D,EAAvB,WAE0B,SAArBiD,IACJW,GAAoB,oBAAsBV,EAC1CW,EAAmB7D,EAAW8D,WAAAA,OAAQ,SAAEC,GAChC,MAAA,kBAAoBA,EAAMhE,SA+GlC,OA1FIoD,GAAcP,EAAQQ,SAAWC,EAAQD,QAC7C7B,EAAU,CACTyC,KAAMxC,EAAwC,yBAAA,CAAEyC,iBAAiB,EAAMC,QAAStB,MAC7EuB,KAAM,SAAAC,GACTd,EACCtB,EAAQoC,EAAO,CAAE,SAAElC,GACXU,OAAAA,EAAQyB,QAASnC,EAAKoC,UAM5BjB,EAAQD,SACZd,EAAce,EAAQkB,IAAK,SAAEC,GACxBC,IAAAA,GAAc,EACdC,EAAoB,iBAQvB,MANyB,SAArBzB,GAA+B,kBAAoBD,GAAawB,EAAOG,eAAiBH,EAAOG,cAAcC,WACjHH,GAAc,EACdC,EAAoB,+BAIpB,EAAA,MAAA,CAAK,IAAM,aAAeF,EAAOF,GAAK,UAAYI,GAC/ClC,GACD,EAAC,EAAD,CAAS,KAAO7C,EAAI,gBAAiB,eACpC,EAAC,EAAD,CACC,UAAU,WACV,QAAU,WArCQ,IAAEkF,GAAAA,EAqCYL,EAAOF,MApC7B,IAAM1B,EAAQyB,QAASQ,KACtCvB,EAAYxB,EAAQuB,EAAS,CAAC,KAAMwB,KACpCtC,EAAe,CACdK,QAASb,EAAQa,EAAS,SAAE7C,GAAoBA,OAAAA,IAAU8E,QAkCtD,MAAQlF,EAAI,gBAAiB,eAE7B,EAAC,EAAD,CAAU,KAAK,SAIhB+C,GAAmB,SAAWG,GAC/B,EAAA,MAAA,CAAK,UAAU,sBACd,EAAA,IAAA,CAAG,KAAO2B,EAAOM,KAAO,OAAO,UAC9B,EAAA,MAAA,CACC,IAAM,UAAYN,EAAOF,GACzB,UAAU,SACV,IAAMhD,EAAS3B,EAAI,sBAAuB,cAAgB6E,EAAOO,MACjE,IAAMP,EAAOQ,YAAanC,OAK9B,EAAA,MAAA,CAAK,UAAU,sBACZ4B,GACD,EAAA,aAAA,CAAY,UAAU,kBACrB,EAAA,MAAA,CAAK,wBAA0B,CAAEQ,OAAQT,EAAOG,cAAcC,YAC9D,EACG7B,OAAAA,KAAAA,GACD,EACGyB,OAAAA,KAAAA,EAAOO,MAITpC,IAAAA,GAAoBG,GACrB,EAAA,IAAA,CAAG,KAAO0B,EAAOM,KAAO,OAAO,UAC1BN,KAAAA,EAAOrC,aATd,QAeEsC,GAAe1B,GAClB,EACC,SAAA,KAAA,EAAA,IAAA,CAAG,KAAOyB,EAAOM,KAAO,OAAO,UAC5BN,EAAOO,QAKRN,GAAe9B,GAAoBG,GACtC,EAAA,OAAA,CAAM,UAAU,iBAAmB0B,IAAAA,EAAOrC,cAGzC,kBAAoBa,GAAawB,EAAOU,eAAiBV,EAAOU,cAAcC,MAC/E,EAAA,OAAA,CAAM,SAAWX,EAAOU,cAAcC,MACnC7D,EAAS3B,EAAI,YAAa,cAAgB6E,EAAOU,cAAcE,gBAUvE,EAAC,EACA,KAAA,EAAC,EACA,KAAA,EAAC,EAAD,CAAW,MAAQzF,EAAI,WAAY,cAAiB,aAAc,GACjE,EAAC,EAAD,CACC,MAAQA,EAAI,wBAAyB,cACrC,UAAaoD,EACb,SAAW,WACVR,EAAe,CAAEQ,iBAAmBA,KAErC,KAEIpD,EADHoD,EACO,mCACA,yCADqC,gBAK5CJ,GACD,EAAC,EAAD,CACC,MAAQhD,EAAI,uBAAwB,cACpC,UAAamD,EACb,SAAW,WACVP,EAAe,CAAEO,oBAAsBA,KAExC,KAEInD,EADHmD,EACO,4DACA,sEAD8D,gBAMtEJ,GACD,EAAC,EAAD,CACC,MAAQ/C,EAAI,cAAe,cAC3B,MAAQkD,EACR,QAAUhD,EAHX,aAIC,KAAOF,EAAI,uCAAwC,cACnD,SAAW,SAAE0F,GACZ9C,EAAe,CAAEM,WAAYwC,OAKhC,EAAC,EAAD,CACC,MAAQ1F,EAAI,+BAAgC,cAC5C,MAAQqD,EACR,QAAUa,EACV,KAAOlE,EAAI,8CAA+C,cAC1D,SAAW,SAAE0F,GACZ9C,EAAe,CAAES,UAAWqC,OAIP,SAArBpC,GACD,EAAC,EAAD,CACC,MAAQtD,EAAI,UAAW,cACvB,MAAQuD,EACR,SAAW,SAAEnD,GACZwC,OAAAA,EAAe,CAAEW,QAASnD,KAE3B,IAAM,EACN,IAAM,EACN,UAAQ,MAMZ,EAAC,EACA,KAAA,EAAC,EAAD,CAAc,SAAWwD,KAGxBJ,GACD,EAAA,MAAA,CAAK,UAAYS,GACdtB,IAIAE,GAAc,IAAMI,EAAQQ,SAC/B,EAAC,EAAD,CACC,KAAOD,EAAa,GAAK,SACzB,MAAQA,EAAa,GAAKxD,EAAI,qBAAsB,cACpD,aAAeA,EAAI,2EAA4E,cAC/F,UAAY,IAAMiD,EAAQQ,OAAS,cAAgB,YAEnD,EAAC,EAAD,CACC,UAAU,UACV,gBAAkB,CAAEkC,QAAS1C,GAC7B,UAAYX,EACZ,UAAYtC,EAAI,oBAAsB,cACtC,YAAcA,EAAI,gCAAkC,cACpD,aAtMoB,SAAkB,GAAdkF,IAAAA,EAAAA,EAAAA,OACvBA,IAAW,IAAMjC,EAAQyB,QAASQ,IACtCtC,EAAe,CACdK,QAAaA,GAAAA,QAAAA,EAAAA,EAAAA,SAAAA,GAAS2C,CAAAA,SAAUV,EAAQ,SAoMtC,UAAYnC,OAQZzC,EAAmBc,EAAS,CACjCC,EAAY,SAAEwE,GAGN,MAAA,CACN/C,WAHsB+C,EAAQ,eAAgBC,oBAGnB9D,GAAG0B,SAAW,OALnBtC,CAQpBqB,GAEUnC,EAAAA,EAAAA,QAAAA,QAAAA;;ACpTf,aAFA,IAAA,EAAA,EAAA,QAAA,mBAEA,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GAPIP,IAAAA,EAAAA,GALFgG,EADDC,EAAAA,OACCD,kBAGA/F,EADDC,EAAAA,KACCD,GASF+F,EAAmB,aAAc,CAChCjC,MAAO9D,EAAI,UAAW,cACtBiG,YAAajG,EAAI,sBAAuB,cACxC6D,KAAM,SACNqC,SAAU,aACVxD,WAAY,CACXO,QAAS,CACRkD,KAAM,QACN1B,MAAO,CACN0B,KAAM,WAEPC,QAAS,IAEVlD,WAAY,CACXiD,KAAM,SACNC,QAAS,QAEVjD,mBAAoB,CACnBgD,KAAM,UACNC,SAAS,GAEVhD,gBAAiB,CAChB+C,KAAM,UACNC,SAAS,GAEV/C,UAAW,CACV8C,KAAM,SACNC,QAAS,QAEV9C,iBAAkB,CACjB6C,KAAM,SACNC,QAAS,QAEV7C,QAAS,CACR4C,KAAM,SACNC,QAAS,IAGXC,KAAM/F,EAAAA","file":"members.js","sourceRoot":"../src/js","sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","/**\n * WordPress dependencies.\n */\nconst {\n\ti18n: {\n\t\t__,\n\t},\n} = wp;\n\n/**\n * Avatar sizes.\n *\n * @type {Array}\n */\nexport const AVATAR_SIZES = [\n\t{\n\t\tlabel: __( 'None', 'buddypress' ),\n\t\tvalue: 'none',\n\t},\n\t{\n\t\tlabel: __( 'Thumb', 'buddypress' ),\n\t\tvalue: 'thumb',\n\t},\n\t{\n\t\tlabel: __( 'Full', 'buddypress' ),\n\t\tvalue: 'full',\n\t},\n];\n\n/**\n * BuddyPress Extra data.\n *\n * @type {Array}\n */\nexport const EXTRA_DATA = [\n\t{\n\t\tlabel: __( 'None', 'buddypress' ),\n\t\tvalue: 'none',\n\t},\n\t{\n\t\tlabel: __( 'Last time the user was active', 'buddypress' ),\n\t\tvalue: 'last_activity',\n\t},\n\t{\n\t\tlabel: __( 'Latest activity the user posted', 'buddypress' ),\n\t\tvalue: 'latest_update',\n\t},\n];\n","/**\n * WordPress dependencies.\n */\nconst {\n\tblockEditor: {\n\t\tInspectorControls,\n\t\tBlockControls,\n\t},\n\tcomponents: {\n\t\tPlaceholder,\n\t\tPanelBody,\n\t\tSelectControl,\n\t\tToggleControl,\n\t\tButton,\n\t\tDashicon,\n\t\tTooltip,\n\t\tToolbarGroup,\n\t\tRangeControl,\n\t},\n\tcompose: {\n\t\tcompose,\n\t},\n\tdata: {\n\t\twithSelect,\n\t},\n\telement: {\n\t\tcreateElement,\n\t\tFragment,\n\t\tuseState,\n\t},\n\ti18n: {\n\t\t__,\n\t\tsprintf,\n\t},\n\tapiFetch,\n\turl: {\n\t\taddQueryArgs,\n\t},\n} = wp;\n\n/**\n * BuddyPress dependencies.\n */\nconst { AutoCompleter } = bp.blockComponents;\n\n/**\n * Internal dependencies.\n */\nimport { AVATAR_SIZES, EXTRA_DATA } from './constants';\n\n/**\n * External dependencies.\n */\nconst {\n\treject,\n\tremove,\n\tsortBy,\n} = lodash;\n\nconst getSlugValue = ( item ) => {\n\tif ( item && item.mention_name ) {\n\t\treturn item.mention_name;\n\t}\n\n\treturn null;\n}\n\nconst editMembers = ( { attributes, setAttributes, isSelected, bpSettings } ) => {\n\tconst {\n\t\tisAvatarEnabled,\n\t\tisMentionEnabled,\n\t} = bpSettings;\n\tconst {\n\t\titemIDs,\n\t\tavatarSize,\n\t\tdisplayMentionSlug,\n\t\tdisplayUserName,\n\t\textraData,\n\t\tlayoutPreference,\n\t\tcolumns,\n\t} = attributes;\n\tconst hasMembers = 0 !== itemIDs.length;\n\tconst [ members, setMembers ] = useState( [] );\n\tconst layoutControls = [\n\t\t{\n\t\t\ticon: 'text',\n\t\t\ttitle: __( 'List view', 'buddypress' ),\n\t\t\tonClick: () => setAttributes( { layoutPreference: 'list' } ),\n\t\t\tisActive: layoutPreference === 'list',\n\t\t},\n\t\t{\n\t\t\ticon: 'screenoptions',\n\t\t\ttitle: __( 'Grid view', 'buddypress' ),\n\t\t\tonClick: () => setAttributes( { layoutPreference: 'grid' } ),\n\t\t\tisActive: layoutPreference === 'grid',\n\t\t},\n\t];\n\tlet membersList;\n\tlet containerClasses = 'bp-block-members avatar-' + avatarSize;\n\tlet extraDataOptions = EXTRA_DATA;\n\n\tif ( layoutPreference === 'grid' ) {\n\t\tcontainerClasses += ' is-grid columns-' + columns;\n\t\textraDataOptions = EXTRA_DATA.filter( ( extra ) => {\n\t\t\treturn 'latest_update' !== extra.value;\n\t\t} );\n\t}\n\n\tconst onSelectedMember = ( { itemID } ) => {\n\t\tif ( itemID && -1 === itemIDs.indexOf( itemID ) ) {\n\t\t\tsetAttributes( {\n\t\t\t\titemIDs: [...itemIDs, parseInt( itemID, 10 ) ]\n\t\t\t} );\n\t\t}\n\t};\n\n\tconst onRemoveMember = ( ( itemID ) => {\n\t\tif ( itemID && -1 !== itemIDs.indexOf( itemID ) ) {\n\t\t\tsetMembers( reject( members, ['id', itemID ] ) );\n\t\t\tsetAttributes( {\n\t\t\t\titemIDs: remove( itemIDs, ( value ) => { return value !== itemID } )\n\t\t\t} );\n\t\t}\n\t} );\n\n\tif ( hasMembers && itemIDs.length !== members.length ) {\n\t\tapiFetch( {\n\t\t\tpath: addQueryArgs( `/buddypress/v1/members`, { populate_extras: true, include: itemIDs } ),\n\t\t} ).then( items => {\n\t\t\tsetMembers(\n\t\t\t\tsortBy( items, [ ( item ) => {\n\t\t\t\t\treturn itemIDs.indexOf( item.id );\n\t\t\t\t} ] )\n\t\t\t);\n\t\t} )\n\t}\n\n\tif ( members.length ) {\n\t\tmembersList = members.map( ( member ) => {\n\t\t\tlet hasActivity = false;\n\t\t\tlet memberItemClasses = 'member-content';\n\n\t\t\tif ( layoutPreference === 'list' && 'latest_update' === extraData && member.latest_update && member.latest_update.rendered ) {\n\t\t\t\thasActivity = true;\n\t\t\t\tmemberItemClasses = 'member-content has-activity';\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<div key={ 'bp-member-' + member.id } className={ memberItemClasses }>\n\t\t\t\t\t{ isSelected && (\n\t\t\t\t\t\t<Tooltip text={ __( 'Remove member', 'buddypress' ) }>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName=\"is-right\"\n\t\t\t\t\t\t\t\tonClick={ () => onRemoveMember( member.id ) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Remove member', 'buddypress' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Dashicon icon=\"no\"/>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isAvatarEnabled && 'none' !== avatarSize && (\n\t\t\t\t\t\t<div className=\"item-header-avatar\">\n\t\t\t\t\t\t\t<a href={ member.link } target=\"_blank\">\n\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\tkey={ 'avatar-' + member.id }\n\t\t\t\t\t\t\t\t\tclassName=\"avatar\"\n\t\t\t\t\t\t\t\t\talt={ sprintf( __( 'Profile photo of %s', 'buddypress' ), member.name ) }\n\t\t\t\t\t\t\t\t\tsrc={ member.avatar_urls[ avatarSize ] }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t<div className=\"member-description\">\n\t\t\t\t\t\t{ hasActivity && (\n\t\t\t\t\t\t\t<blockquote className=\"wp-block-quote\">\n\t\t\t\t\t\t\t\t<div dangerouslySetInnerHTML={ { __html: member.latest_update.rendered } } />\n\t\t\t\t\t\t\t\t<cite>\n\t\t\t\t\t\t\t\t\t{ displayUserName && (\n\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t{ member.name }\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t{ isMentionEnabled && displayMentionSlug && (\n\t\t\t\t\t\t\t\t\t\t<a href={ member.link } target=\"_blank\">\n\t\t\t\t\t\t\t\t\t\t\t(@{ member.mention_name })\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</cite>\n\t\t\t\t\t\t\t</blockquote>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! hasActivity && displayUserName && (\n\t\t\t\t\t\t\t<strong>\n\t\t\t\t\t\t\t\t<a href={ member.link } target=\"_blank\">\n\t\t\t\t\t\t\t\t\t{ member.name }\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t{ ! hasActivity && isMentionEnabled && displayMentionSlug && (\n\t\t\t\t\t\t\t<span className=\"user-nicename\">@{ member.mention_name }</span>\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t{ 'last_activity' === extraData && member.last_activity && member.last_activity.date && (\n\t\t\t\t\t\t\t<time dateTime={ member.last_activity.date }>\n\t\t\t\t\t\t\t\t{ sprintf( __( 'Active %s', 'buddypress' ), member.last_activity.timediff ) }\n\t\t\t\t\t\t\t</time>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} );\n\t}\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings', 'buddypress' ) } initialOpen={ true }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display the user name', 'buddypress' ) }\n\t\t\t\t\t\tchecked={ !! displayUserName }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tsetAttributes( { displayUserName: ! displayUserName } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\tdisplayUserName\n\t\t\t\t\t\t\t\t? __( 'Include the user\\'s display name.', 'buddypress' )\n\t\t\t\t\t\t\t\t: __( 'Toggle to include user\\'s display name.', 'buddypress' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ isMentionEnabled && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Display Mention slug', 'buddypress' ) }\n\t\t\t\t\t\t\tchecked={ !! displayMentionSlug }\n\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( { displayMentionSlug: ! displayMentionSlug } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\tdisplayMentionSlug\n\t\t\t\t\t\t\t\t\t? __( 'Include the user\\'s mention name under their display name.', 'buddypress' )\n\t\t\t\t\t\t\t\t\t: __( 'Toggle to display the user\\'s mention name under their display name.', 'buddypress' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ isAvatarEnabled && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Avatar size', 'buddypress' ) }\n\t\t\t\t\t\t\tvalue={ avatarSize }\n\t\t\t\t\t\t\toptions={ AVATAR_SIZES }\n\t\t\t\t\t\t\thelp={ __( 'Select \"None\" to disable the avatar.', 'buddypress' ) }\n\t\t\t\t\t\t\tonChange={ ( option ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { avatarSize: option } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'BuddyPress extra information', 'buddypress' ) }\n\t\t\t\t\t\tvalue={ extraData }\n\t\t\t\t\t\toptions={ extraDataOptions }\n\t\t\t\t\t\thelp={ __( 'Select \"None\" to show no extra information.', 'buddypress' ) }\n\t\t\t\t\t\tonChange={ ( option ) => {\n\t\t\t\t\t\t\tsetAttributes( { extraData: option } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ layoutPreference === 'grid' && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\tlabel={ __( 'Columns', 'buddypress' ) }\n\t\t\t\t\t\t\tvalue={ columns }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { columns: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmin={ 2 }\n\t\t\t\t\t\t\tmax={ 4 }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup controls={ layoutControls } />\n\t\t\t</BlockControls>\n\n\t\t\t{ hasMembers && (\n\t\t\t\t<div className={ containerClasses }>\n\t\t\t\t\t{ membersList }\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ( isSelected || 0 === itemIDs.length ) && (\n\t\t\t\t<Placeholder\n\t\t\t\t\ticon={ hasMembers ? '' : 'groups' }\n\t\t\t\t\tlabel={ hasMembers ? '' : __( 'BuddyPress Members', 'buddypress' ) }\n\t\t\t\t\tinstructions={ __( 'Start typing the name of the member you want to add to the members list.', 'buddypress' ) }\n\t\t\t\t\tclassName={ 0 !== itemIDs.length ? 'is-appender' : 'is-large' }\n\t\t\t\t>\n\t\t\t\t\t<AutoCompleter\n\t\t\t\t\t\tcomponent=\"members\"\n\t\t\t\t\t\tobjectQueryArgs={ { exclude: itemIDs } }\n\t\t\t\t\t\tslugValue={ getSlugValue }\n\t\t\t\t\t\tariaLabel={ __( 'Member\\'s username', 'buddypress' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Enter Member\\'s username here…', 'buddypress' ) }\n\t\t\t\t\t\tonSelectItem={ onSelectedMember }\n\t\t\t\t\t\tuseAvatar={ isAvatarEnabled }\n\t\t\t\t\t/>\n\t\t\t\t</Placeholder>\n\t\t\t) }\n\t\t</Fragment>\n\t);\n};\n\nconst editMembersBlock = compose( [\n\twithSelect( ( select ) => {\n\t\tconst editorSettings = select( 'core/editor' ).getEditorSettings();\n\n\t\treturn {\n\t\t\tbpSettings: editorSettings.bp.members || {},\n\t\t};\n\t} ),\n] )( editMembers );\n\nexport default editMembersBlock;\n","/**\n * WordPress dependencies.\n */\nconst {\n\tblocks: {\n\t\tregisterBlockType,\n\t},\n\ti18n: {\n\t\t__,\n\t},\n} = wp;\n\n/**\n * Internal dependencies.\n */\nimport editMembersBlock from './members/edit';\n\nregisterBlockType( 'bp/members', {\n\ttitle: __( 'Members', 'buddypress' ),\n\tdescription: __( 'BuddyPress Members.', 'buddypress' ),\n\ticon: 'groups',\n\tcategory: 'buddypress',\n\tattributes: {\n\t\titemIDs: {\n\t\t\ttype: 'array',\n\t\t\titems: {\n\t\t\t\ttype: 'integer',\n\t\t\t},\n\t\t\tdefault: [],\n\t\t},\n\t\tavatarSize: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'full',\n\t\t},\n\t\tdisplayMentionSlug: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tdisplayUserName: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\textraData: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'none',\n\t\t},\n\t\tlayoutPreference: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'list',\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 2\n\t\t},\n\t},\n\tedit: editMembersBlock,\n} );\n"]} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/sass/blocks/member.scss b/wp-content/plugins/buddypress/bp-members/sass/blocks/member.scss new file mode 100644 index 0000000000000000000000000000000000000000..96432bdca4e3225fe4da96d7ef87bd462f1ccaf4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/sass/blocks/member.scss @@ -0,0 +1,140 @@ +/* CSS for the bp/member block */ +[data-type="bp/member"] { + + input.components-placeholder__input { + flex: 1 1 auto; + border-radius: 2px; + border: 1px solid #757575; + padding: 6px 8px; + } +} + +.bp-block-member { + position: relative; + + .member-content { + display: flex; + } + + .user-nicename { + display: block; + + a { + color: currentColor; + text-decoration: none; + border: none; + } + } + + .bp-profile-button { + width: 100%; + + a.button { + position: absolute; + bottom: 10px; + right: 0; + display: inline-block; + margin: 18px 0 0; + } + } + + &.has-cover { + + .member-content, + .item-header-avatar, + .member-description { + z-index: 2; + } + + .member-content { + padding-top: 75px; + } + + .member-description { + padding-top: 75px; + } + + .bp-member-cover-image { + background-color: #c5c5c5; + background-position: center top; + background-repeat: no-repeat; + background-size: cover; + border: 0; + display: block; + left: 0; + margin: 0; + padding: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + height: 150px; + } + } + + img.avatar { + width: auto; + height: auto; + } + + &.avatar-none { + + .item-header-avatar { + display: none; + } + } + + &.avatar-none.has-cover { + min-height: 200px; + } + + &.avatar-full { + min-height: 150px; + + .item-header-avatar { + width: 180px; + } + } + + &.avatar-full.has-cover { + min-height: 300px; + + .item-header-avatar { + width: 200px; + } + + img.avatar { + border: solid 2px #fff; + background: rgba(255, 255, 255, 0.8); + margin-left: 20px; + } + } + + &.avatar-thumb { + + .member-content { + min-height: 50px; + align-items: center; + } + + .item-header-avatar { + width: 70px; + } + } + + &.avatar-thumb.has-cover { + + .item-header-avatar { + padding-top: 75px; + } + } +} + +.entry .entry-content .bp-block-member .user-nicename { + + a { + color: currentColor; + text-decoration: none; + border: none; + } +} diff --git a/wp-content/plugins/buddypress/bp-members/sass/blocks/members.scss b/wp-content/plugins/buddypress/bp-members/sass/blocks/members.scss new file mode 100644 index 0000000000000000000000000000000000000000..06774c2b4e47bac5dc4354cacf376eca82aadf86 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/sass/blocks/members.scss @@ -0,0 +1,227 @@ +/* CSS for the bp/members block */ +[data-type="bp/members"] { + + .components-placeholder { + + &.is-appender { + min-height: 0; + + .components-placeholder__label:empty { + display: none; + } + } + + input.components-placeholder__input { + flex: 1 1 auto; + border-radius: 2px; + border: 1px solid #757575; + padding: 6px 8px; + } + } + + &.avatar-none { + + .member-description { + width: calc(100% - 44px); + } + } + + &.avatar-full { + + .member-description { + width: calc(100% - 224px); + } + } + + &.avatar-thumb { + + .member-description { + width: calc(100% - 114px); + } + } + + .member-content { + position: relative; + + .is-right { + position: absolute; + top: 2px; + right: 2px; + } + } + + .columns-2, + .columns-3, + .columns-4 { + + .member-content { + + .member-description { + padding-left: 44px; + width: calc(100% - 44px); + } + } + } + + .columns-3 { + + .is-right { + right: -10px; + } + } + + .columns-4 { + + .is-right { + right: -50px; + } + } +} + +.bp-block-members { + + &.is-grid { + display: flex; + flex-wrap: wrap; + padding: 0; + + .member-content { + margin: 0 1.25em 1.25em 0; + width: 100%; + } + } + + @media (min-width: 600px) { + + @for $i from 2 through 4 { + &.columns-#{ $i } .member-content { + width: calc((100% / #{ $i }) - 1.25em + (1.25em / #{ $i })); + + &:nth-child( #{ $i }n ) { + margin-right: 0; + } + } + } + } + + .member-content { + display: flex; + flex-direction: column; + padding-bottom: 1em; + text-align: center; + + .item-header-avatar, + .member-description { + width: 100%; + } + + .item-header-avatar { + margin: 0 auto; + + img.avatar { + display: inline-block; + } + } + + @media (min-width: 600px) { + flex-direction: row; + text-align: left; + + .item-header-avatar, + .member-description { + width: auto; + } + + .item-header-avatar { + margin: 0; + } + } + + .user-nicename { + display: block; + + a { + color: currentColor; + text-decoration: none; + border: none; + } + } + + time { + display: block; + font-size: 80%; + color: #767676; + } + } + + &.avatar-none { + + .item-header-avatar { + display: none; + } + } + + &.avatar-full { + min-height: 190px; + + .item-header-avatar { + width: 180px; + } + } + + &.avatar-thumb { + + .member-content { + min-height: 80px; + } + + .item-header-avatar { + width: 70px; + } + } + + &.columns-2 .member-content, + &.columns-3 .member-content, + &.columns-4 .member-content { + display: block; + text-align: center; + + .item-header-avatar { + margin: 0 auto; + } + } + + img.avatar { + width: auto; + height: auto; + max-width: fit-content; + } + + .member-content.has-activity { + align-items: center; + + .item-header-avatar { + padding-right: 1em; + } + + .wp-block-quote { + margin-bottom: 0; + text-align: left; + + cite a { + color: currentColor; + text-decoration: none; + border: none; + } + } + } +} + +.entry .entry-content .bp-block-members .user-nicename { + + a { + color: currentColor; + text-decoration: none; + border: none; + } +} diff --git a/wp-content/plugins/buddypress/bp-members/screens/register.php b/wp-content/plugins/buddypress/bp-members/screens/register.php index 8341f52662b3a633dbcc2e650549e9ec35a668bd..f954f3f410a7bc8e52b2658bfa570c440dfe3809 100644 --- a/wp-content/plugins/buddypress/bp-members/screens/register.php +++ b/wp-content/plugins/buddypress/bp-members/screens/register.php @@ -59,19 +59,31 @@ function bp_core_screen_signup() { $account_details = bp_core_validate_user_signup( $_POST['signup_username'], $_POST['signup_email'] ); // If there are errors with account details, set them for display. - if ( !empty( $account_details['errors']->errors['user_name'] ) ) + if ( ! empty( $account_details['errors']->errors['user_name'] ) ) { $bp->signup->errors['signup_username'] = $account_details['errors']->errors['user_name'][0]; + } - if ( !empty( $account_details['errors']->errors['user_email'] ) ) + if ( ! empty( $account_details['errors']->errors['user_email'] ) ) { $bp->signup->errors['signup_email'] = $account_details['errors']->errors['user_email'][0]; + } - // Check that both password fields are filled in. - if ( empty( $_POST['signup_password'] ) || empty( $_POST['signup_password_confirm'] ) ) - $bp->signup->errors['signup_password'] = __( 'Please make sure you enter your password twice', 'buddypress' ); + $signup_pass = ''; + if ( isset( $_POST['signup_password'] ) ) { + $signup_pass = wp_unslash( $_POST['signup_password'] ); + } - // Check that the passwords match. - if ( ( !empty( $_POST['signup_password'] ) && !empty( $_POST['signup_password_confirm'] ) ) && $_POST['signup_password'] != $_POST['signup_password_confirm'] ) - $bp->signup->errors['signup_password'] = __( 'The passwords you entered do not match.', 'buddypress' ); + $signup_pass_confirm = ''; + if ( isset( $_POST['signup_password_confirm'] ) ) { + $signup_pass_confirm = wp_unslash( $_POST['signup_password_confirm'] ); + } + + // Check the account password for problems. + $account_password = bp_members_validate_user_password( $signup_pass, $signup_pass_confirm ); + $password_error = $account_password->get_error_message(); + + if ( $password_error ) { + $bp->signup->errors['signup_password'] = $password_error; + } if ( bp_signup_requires_privacy_policy_acceptance() && ! empty( $_POST['signup-privacy-policy-check'] ) && empty( $_POST['signup-privacy-policy-accept'] ) ) { $bp->signup->errors['signup_privacy_policy'] = __( 'You must indicate that you have read and agreed to the Privacy Policy.', 'buddypress' ); @@ -237,4 +249,4 @@ function bp_core_screen_signup() { */ bp_core_load_template( apply_filters( 'bp_core_template_register', array( 'register', 'registration/register' ) ) ); } -add_action( 'bp_screens', 'bp_core_screen_signup' ); \ No newline at end of file +add_action( 'bp_screens', 'bp_core_screen_signup' ); diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-filters.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-filters.php index fad05402381e03a6066c4973db92c5305e869656..cec974d6a309492d3cdc7f526218bfb5ceb90f4f 100644 --- a/wp-content/plugins/buddypress/bp-messages/bp-messages-filters.php +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-filters.php @@ -32,12 +32,10 @@ add_filter( 'messages_message_subject_before_save', 'force_balance_tags' ); add_filter( 'messages_notice_message_before_save', 'force_balance_tags' ); add_filter( 'messages_notice_subject_before_save', 'force_balance_tags' ); -if ( function_exists( 'wp_encode_emoji' ) ) { - add_filter( 'messages_message_subject_before_save', 'wp_encode_emoji' ); - add_filter( 'messages_message_content_before_save', 'wp_encode_emoji' ); - add_filter( 'messages_notice_message_before_save', 'wp_encode_emoji' ); - add_filter( 'messages_notice_subject_before_save', 'wp_encode_emoji' ); -} +add_filter( 'messages_message_subject_before_save', 'wp_encode_emoji' ); +add_filter( 'messages_message_content_before_save', 'wp_encode_emoji' ); +add_filter( 'messages_notice_message_before_save', 'wp_encode_emoji' ); +add_filter( 'messages_notice_subject_before_save', 'wp_encode_emoji' ); add_filter( 'bp_get_message_notice_subject', 'wptexturize' ); add_filter( 'bp_get_message_notice_text', 'wptexturize' ); @@ -79,6 +77,8 @@ add_filter( 'bp_get_the_thread_message_content', 'stripslashes_deep' ); add_filter( 'bp_get_the_thread_subject', 'stripslashes_deep' ); add_filter( 'bp_get_message_thread_content', 'stripslashes_deep', 1 ); +add_filter( 'bp_get_the_thread_message_content', 'bp_core_add_loading_lazy_attribute' ); + // Personal data export. add_filter( 'wp_privacy_personal_data_exporters', 'bp_messages_register_personal_data_exporter' ); diff --git a/wp-content/plugins/buddypress/bp-messages/classes/class-bp-messages-notices-admin.php b/wp-content/plugins/buddypress/bp-messages/classes/class-bp-messages-notices-admin.php index 845306508d49893fec48caaa9e2a607ad37838e8..2314a85706772fb627816911690f05468ae32249 100644 --- a/wp-content/plugins/buddypress/bp-messages/classes/class-bp-messages-notices-admin.php +++ b/wp-content/plugins/buddypress/bp-messages/classes/class-bp-messages-notices-admin.php @@ -183,16 +183,8 @@ class BP_Messages_Notices_Admin { $this->list_table->prepare_items(); ?> <div class="wrap"> - <?php if ( version_compare( $GLOBALS['wp_version'], '4.8', '>=' ) ) : ?> - - <h1 class="wp-heading-inline"><?php echo esc_html_x( 'Site Notices', 'Notices admin page title', 'buddypress' ); ?></h1> - <hr class="wp-header-end"> - - <?php else : ?> - - <h1><?php echo esc_html_x( 'Site Notices', 'Notices admin page title', 'buddypress' ); ?></h1> - - <?php endif; ?> + <h1 class="wp-heading-inline"><?php echo esc_html_x( 'Site Notices', 'Notices admin page title', 'buddypress' ); ?></h1> + <hr class="wp-header-end"> <p class="bp-notice-about"><?php esc_html_e( 'Manage notices shown at front end of your site to all logged-in users.', 'buddypress' ); ?></p> @@ -218,7 +210,7 @@ class BP_Messages_Notices_Admin { <?php if ( isset( $_GET['success'] ) || isset( $_GET['error'] ) ) : ?> - <div id="message" class="<?php echo isset( $_GET['success'] ) ? 'updated' : 'error'; ?>"> + <div id="message" class="<?php echo isset( $_GET['success'] ) ? 'updated' : 'error'; ?> notice is-dismissible"> <p> <?php diff --git a/wp-content/plugins/buddypress/bp-messages/classes/class-bp-rest-messages-endpoint.php b/wp-content/plugins/buddypress/bp-messages/classes/class-bp-rest-messages-endpoint.php index 76066c88e4e3f44f7b90d88345f0df2d4ee12183..1930efa1523e6f8f16ce6c276b9701a41cfd568d 100644 --- a/wp-content/plugins/buddypress/bp-messages/classes/class-bp-rest-messages-endpoint.php +++ b/wp-content/plugins/buddypress/bp-messages/classes/class-bp-rest-messages-endpoint.php @@ -177,41 +177,39 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function get_items_permissions_check( $request ) { - $retval = true; - - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } - - $user = bp_rest_get_user( $request['user_id'] ); + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( true === $retval && ! $user instanceof WP_User ) { - $retval = new WP_Error( - 'bp_rest_invalid_id', - __( 'Invalid member ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } + if ( is_user_logged_in() ) { + $user = bp_rest_get_user( $request['user_id'] ); - if ( true === $retval && (int) bp_loggedin_user_id() !== $user->ID && ! bp_current_user_can( 'bp_moderate' ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you cannot view the messages.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( ! $user instanceof WP_User ) { + $retval = new WP_Error( + 'bp_rest_invalid_id', + __( 'Invalid member ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( (int) bp_loggedin_user_id() === $user->ID || bp_current_user_can( 'bp_moderate' ) ) { + $retval = true; + } else { + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you cannot view the messages.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } } /** @@ -219,7 +217,7 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_messages_get_items_permissions_check', $retval, $request ); @@ -264,49 +262,33 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; - - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to see this thread.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } + $error = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to see this thread.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + $retval = $error; - $thread = $this->get_thread_object( $request['id'] ); + if ( is_user_logged_in() ) { + $thread = $this->get_thread_object( $request['id'] ); - if ( true === $retval && empty( $thread->thread_id ) ) { - $retval = new WP_Error( - 'bp_rest_invalid_id', - __( 'Sorry, this thread does not exist.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - if ( true === $retval && bp_current_user_can( 'bp_moderate' ) ) { - $retval = true; - } else { - $id = messages_check_thread_access( $thread->thread_id ); - if ( true === $retval && is_null( $id ) ) { + if ( empty( $thread->thread_id ) ) { $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to see this thread.', 'buddypress' ), + 'bp_rest_invalid_id', + __( 'Sorry, this thread does not exist.', 'buddypress' ), array( - 'status' => rest_authorization_required_code(), + 'status' => 404, ) ); - } - - if ( true === $retval ) { + } elseif ( bp_current_user_can( 'bp_moderate' ) || messages_check_thread_access( $thread->thread_id ) ) { $retval = true; + } else { + $retval = $error; } } @@ -315,7 +297,7 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_messages_get_item_permissions_check', $retval, $request ); @@ -385,10 +367,16 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to perform this action.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); if ( ! is_user_logged_in() ) { $retval = new WP_Error( @@ -398,6 +386,18 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { 'status' => rest_authorization_required_code(), ) ); + } else { + $thread_id = (int) $request->get_param( 'id' ); + + // It's an existing thread. + if ( $thread_id ) { + if ( bp_current_user_can( 'bp_moderate' ) || ( messages_is_valid_thread( $thread_id ) && messages_check_thread_access( $thread_id ) ) ) { + $retval = true; + } + } else { + // It's a new thread. + $retval = true; + } } /** @@ -405,7 +405,7 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_messages_create_item_permissions_check', $retval, $request ); @@ -501,7 +501,7 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function update_item_permissions_check( $request ) { $retval = $this->get_item_permissions_check( $request ); @@ -511,7 +511,7 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_messages_update_item_permissions_check', $retval, $request ); @@ -597,20 +597,23 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function update_starred_permissions_check( $request ) { - $retval = true; - $thread_id = messages_get_message_thread_id( $request['id'] ); + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to star/unstar messages.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( ! is_user_logged_in() || ! messages_check_thread_access( $thread_id ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to star/unstar messages.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( is_user_logged_in() ) { + $thread_id = messages_get_message_thread_id( $request['id'] ); + + if ( messages_check_thread_access( $thread_id ) ) { + $retval = true; + } } /** @@ -618,7 +621,7 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_messages_update_starred_permissions_check', $retval, $request ); @@ -688,7 +691,7 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { $retval = $this->get_item_permissions_check( $request ); @@ -698,7 +701,7 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_messages_delete_item_permissions_check', $retval, $request ); @@ -983,7 +986,7 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * @return BP_Messages_Thread */ public function get_thread_object( $thread_id ) { - return new BP_Messages_Thread( $thread_id ); + return new BP_Messages_Thread( (int) $thread_id ); } /** @@ -995,7 +998,7 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { * @return BP_Messages_Message */ public function get_message_object( $message_id ) { - return new BP_Messages_Message( $message_id ); + return new BP_Messages_Message( (int) $message_id ); } /** @@ -1008,7 +1011,7 @@ class BP_REST_Messages_Endpoint extends WP_REST_Controller { */ public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { $key = 'get_item'; - $args = WP_REST_Controller::get_endpoint_args_for_item_schema( $method ); + $args = parent::get_endpoint_args_for_item_schema( $method ); $args['id']['description'] = __( 'ID of the Messages Thread.', 'buddypress' ); if ( WP_REST_Server::CREATABLE === $method ) { diff --git a/wp-content/plugins/buddypress/bp-notifications/bp-notifications-filters.php b/wp-content/plugins/buddypress/bp-notifications/bp-notifications-filters.php index e9fee111b9a596f6348a7126380358f696233827..9e496c2e22e7cf8275b255ba155bac2055aea89e 100644 --- a/wp-content/plugins/buddypress/bp-notifications/bp-notifications-filters.php +++ b/wp-content/plugins/buddypress/bp-notifications/bp-notifications-filters.php @@ -1,12 +1,16 @@ <?php /** - * Filters related to the Activity component. + * Filters related to the Notifications component. * * @package BuddyPress * @subpackage Notifications * @since 4.0.0 */ + +// Format numerical output. +add_filter( 'bp_notifications_get_total_notification_count', 'bp_core_number_format' ); + // Privacy data export. add_filter( 'wp_privacy_personal_data_exporters', 'bp_register_notifications_personal_data_exporter' ); diff --git a/wp-content/plugins/buddypress/bp-notifications/classes/class-bp-notifications-component.php b/wp-content/plugins/buddypress/bp-notifications/classes/class-bp-notifications-component.php index 4333d8b30ff9469cb8969654e1207a2fbe84a584..36dc110378367798d89af19d12f4da61fd830b82 100644 --- a/wp-content/plugins/buddypress/bp-notifications/classes/class-bp-notifications-component.php +++ b/wp-content/plugins/buddypress/bp-notifications/classes/class-bp-notifications-component.php @@ -164,7 +164,7 @@ class BP_Notifications_Component extends BP_Component { sprintf( '<span class="%s">%s</span>', esc_attr( $class ), - bp_core_number_format( $count ) + esc_html( $count ) ) ); } else { diff --git a/wp-content/plugins/buddypress/bp-notifications/classes/class-bp-notifications-notification.php b/wp-content/plugins/buddypress/bp-notifications/classes/class-bp-notifications-notification.php index 45fbe41234469167dd3f43b4201b76fab20fe4a1..b3a4c37d72646e54475cfce0c8fea4326729e7cd 100644 --- a/wp-content/plugins/buddypress/bp-notifications/classes/class-bp-notifications-notification.php +++ b/wp-content/plugins/buddypress/bp-notifications/classes/class-bp-notifications-notification.php @@ -556,12 +556,16 @@ class BP_Notifications_Notification { * @return bool True if the notification belongs to the user, otherwise * false. */ - public static function check_access( $user_id, $notification_id ) { + public static function check_access( $user_id = 0, $notification_id = 0 ) { global $wpdb; $bp = buddypress(); - return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->core->table_name_notifications} WHERE id = %d AND user_id = %d", $notification_id, $user_id ) ); + $query = "SELECT COUNT(id) FROM {$bp->notifications->table_name} WHERE id = %d AND user_id = %d"; + $prepare = $wpdb->prepare( $query, $notification_id, $user_id ); + $result = $wpdb->get_var( $prepare ); + + return $result; } /** diff --git a/wp-content/plugins/buddypress/bp-notifications/classes/class-bp-rest-notifications-endpoint.php b/wp-content/plugins/buddypress/bp-notifications/classes/class-bp-rest-notifications-endpoint.php index e78565576b1fc90d38bcfabdf865bbcba19f45ae..46c29770da0a4c07cf2a4c359d17d3e77751cf9f 100644 --- a/wp-content/plugins/buddypress/bp-notifications/classes/class-bp-rest-notifications-endpoint.php +++ b/wp-content/plugins/buddypress/bp-notifications/classes/class-bp-rest-notifications-endpoint.php @@ -161,19 +161,17 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function get_items_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to see the notifications.', 'buddypress' ), + array( 'status' => rest_authorization_required_code() ) + ); - if ( ! is_user_logged_in() || ( bp_loggedin_user_id() !== $request['user_id'] && ! $this->can_see() ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to see the notifications.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( ( is_user_logged_in() && bp_loggedin_user_id() === $request->get_param( 'user_id' ) && ! $request->get_param( 'user_ids' ) ) || $this->can_see() ) { + $retval = true; } /** @@ -181,7 +179,7 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_notifications_get_items_permissions_check', $retval, $request ); @@ -226,41 +224,39 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; - - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to see the notification.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } - - $notification = $this->get_notification_object( $request ); - - if ( true === $retval && is_null( $notification->item_id ) ) { - $retval = new WP_Error( - 'bp_rest_notification_invalid_id', - __( 'Invalid notification ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to see the notification.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( true === $retval && ! $this->can_see( $notification->id ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you cannot view this notification.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( is_user_logged_in() ) { + $notification = $this->get_notification_object( $request ); + + if ( is_null( $notification->item_id ) ) { + $retval = new WP_Error( + 'bp_rest_notification_invalid_id', + __( 'Invalid notification ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( $this->can_see( $notification->id ) ) { + $retval = true; + } else { + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you cannot view this notification.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } } /** @@ -268,7 +264,7 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_notifications_get_item_permissions_check', $retval, $request ); @@ -333,7 +329,7 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { $retval = $this->get_items_permissions_check( $request ); @@ -343,7 +339,7 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_notifications_create_item_permissions_check', $retval, $request ); @@ -426,7 +422,7 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|bool + * @return true|WP_Error|bool */ public function update_item_permissions_check( $request ) { $retval = $this->get_item_permissions_check( $request ); @@ -436,7 +432,7 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_notifications_update_item_permissions_check', $retval, $request ); @@ -463,7 +459,7 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { 'bp_rest_notification_invalid_id', __( 'Invalid notification ID.', 'buddypress' ), array( - 'status' => 500, + 'status' => 404, ) ); } @@ -497,7 +493,7 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { $retval = $this->get_item_permissions_check( $request ); @@ -507,7 +503,7 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_notifications_delete_item_permissions_check', $retval, $request ); @@ -655,7 +651,7 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param array $links The prepared links of the REST response. + * @param array $links The prepared links of the REST response. * @param BP_Notifications_Notification $notification Notification object. */ return apply_filters( 'bp_rest_notifications_prepare_links', $links, $notification ); @@ -690,7 +686,7 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full details about the request. - * @return BP_Notifications_Notification|string A notification object. + * @return BP_Notifications_Notification|string A notification object|Empty string. */ public function get_notification_object( $request ) { $notification_id = is_numeric( $request ) ? $request : (int) $request['id']; @@ -713,7 +709,7 @@ class BP_REST_Notifications_Endpoint extends WP_REST_Controller { * @return array Endpoint arguments. */ public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { - $args = WP_REST_Controller::get_endpoint_args_for_item_schema( $method ); + $args = parent::get_endpoint_args_for_item_schema( $method ); $key = 'get_item'; if ( WP_REST_Server::EDITABLE === $method ) { diff --git a/wp-content/plugins/buddypress/bp-settings/actions/general.php b/wp-content/plugins/buddypress/bp-settings/actions/general.php index 6de596d6f078d2572ade1426f99fff234c394f86..10e33acb3f8262a7a4587359a06248ecb5c3d76b 100644 --- a/wp-content/plugins/buddypress/bp-settings/actions/general.php +++ b/wp-content/plugins/buddypress/bp-settings/actions/general.php @@ -130,23 +130,22 @@ function bp_settings_action_general() { /* Password Change Attempt ***************************************/ - if ( !empty( $_POST['pass1'] ) && !empty( $_POST['pass2'] ) ) { - - if ( ( $_POST['pass1'] == $_POST['pass2'] ) && !strpos( " " . wp_unslash( $_POST['pass1'] ), "\\" ) ) { + if ( ! empty( $_POST['pass1'] ) && ! empty( $_POST['pass2'] ) ) { + $pass = wp_unslash( $_POST['pass1'] ); + $pass_confirm = wp_unslash( $_POST['pass2'] ); + $pass_error = bp_members_validate_user_password( $pass, $pass_confirm, $update_user ); + if ( ! $pass_error->get_error_message() ) { // Password change attempt is successful. - if ( ( ! empty( $_POST['pwd'] ) && $_POST['pwd'] != $_POST['pass1'] ) || is_super_admin() ) { + if ( ( ! empty( $_POST['pwd'] ) && wp_unslash( $_POST['pwd'] ) !== $pass ) || is_super_admin() ) { $update_user->user_pass = $_POST['pass1']; - $pass_changed = true; + $pass_error = false; + $pass_changed = true; // The new password is the same as the current password. } else { - $pass_error = 'same'; + $pass_error->add( 'same_user_password', __( 'The new password must be different from the current password.', 'buddypress' ) ); } - - // Password change attempt was unsuccessful. - } else { - $pass_error = 'mismatch'; } // Both password fields were empty. @@ -154,8 +153,8 @@ function bp_settings_action_general() { $pass_error = false; // One of the password boxes was left empty. - } elseif ( ( empty( $_POST['pass1'] ) && !empty( $_POST['pass2'] ) ) || ( !empty( $_POST['pass1'] ) && empty( $_POST['pass2'] ) ) ) { - $pass_error = 'empty'; + } elseif ( ( empty( $_POST['pass1'] ) && ! empty( $_POST['pass2'] ) ) || ( ! empty( $_POST['pass1'] ) && empty( $_POST['pass2'] ) ) ) { + $pass_error = new WP_Error( 'empty_user_password', __( 'One of the password fields was empty.', 'buddypress' ) ); } // The structure of the $update_user object changed in WP 3.3, but @@ -180,7 +179,7 @@ function bp_settings_action_general() { // Password Error. } else { - $pass_error = 'invalid'; + $pass_error = new WP_Error( 'invalid_user_password', __( 'Your current password is invalid.', 'buddypress' ) ); } // Email feedback. @@ -202,23 +201,8 @@ function bp_settings_action_general() { break; } - // Password feedback. - switch ( $pass_error ) { - case 'invalid' : - $feedback['pass_error'] = __( 'Your current password is invalid.', 'buddypress' ); - break; - case 'mismatch' : - $feedback['pass_mismatch'] = __( 'The new password fields did not match.', 'buddypress' ); - break; - case 'empty' : - $feedback['pass_empty'] = __( 'One of the password fields was empty.', 'buddypress' ); - break; - case 'same' : - $feedback['pass_same'] = __( 'The new password must be different from the current password.', 'buddypress' ); - break; - case false : - // No change. - break; + if ( is_wp_error( $pass_error ) && $pass_error->get_error_message() ) { + $feedback[ $pass_error->get_error_code() ] = $pass_error->get_error_message(); } // No errors so show a simple success message. diff --git a/wp-content/plugins/buddypress/bp-settings/bp-settings-functions.php b/wp-content/plugins/buddypress/bp-settings/bp-settings-functions.php index 4dda3428cbd415c88c142025d1b0c18d1f88cc98..02eafb288770bb03f3a5507dd2127351f9dbb7c7 100644 --- a/wp-content/plugins/buddypress/bp-settings/bp-settings-functions.php +++ b/wp-content/plugins/buddypress/bp-settings/bp-settings-functions.php @@ -81,7 +81,7 @@ function bp_settings_sanitize_notification_settings( $settings = array() ) { } /** - * Build a dynamic whitelist of notification keys, based on what's hooked to 'bp_notification_settings'. + * Build a dynamic list of allowed notification keys, based on what's hooked to 'bp_notification_settings'. * * @since 2.3.5 * @@ -91,7 +91,7 @@ function bp_settings_get_registered_notification_keys() { ob_start(); /** - * Fires at the start of the notification keys whitelisting. + * Fires at the start of the building of the notification keys allowed list. * * @since 1.0.0 */ @@ -101,12 +101,12 @@ function bp_settings_get_registered_notification_keys() { $matched = preg_match_all( '/<input[^>]+name="notifications\[([^\]]+)\]/', $screen, $matches ); if ( $matched && isset( $matches[1] ) ) { - $key_whitelist = $matches[1]; + $allowed_key_list = $matches[1]; } else { - $key_whitelist = array(); + $allowed_key_list = array(); } - return $key_whitelist; + return $allowed_key_list; } /** @@ -249,7 +249,7 @@ function bp_settings_get_personal_data_request( $user_id = 0 ) { if ( ! empty( $query->post ) ) { // WP 5.4 changed the user request function name to wp_get_user_request() - $user_request = function_exists( 'wp_get_user_request' ) ? 'wp_get_user_request' : 'wp_get_user_request_data'; + $user_request = bp_is_running_wp( '4.9.6' ) ? 'wp_get_user_request' : 'wp_get_user_request_data'; return $user_request( $query->post->ID ); } else { return false; diff --git a/wp-content/plugins/buddypress/bp-settings/classes/class-bp-settings-component.php b/wp-content/plugins/buddypress/bp-settings/classes/class-bp-settings-component.php index dda4a928d7e57d3da531bdcf7ec004e7a01fbf70..e48747f81336e14aea9baa3987b9a1ee3e961080 100644 --- a/wp-content/plugins/buddypress/bp-settings/classes/class-bp-settings-component.php +++ b/wp-content/plugins/buddypress/bp-settings/classes/class-bp-settings-component.php @@ -193,7 +193,7 @@ class BP_Settings_Component extends BP_Component { $show_data_page = apply_filters( 'bp_settings_show_user_data_page', true ); // Export Data - only available for WP 4.9.6+. - if ( true === $show_data_page && version_compare( $GLOBALS['wp_version'], '4.9.6', '>=' ) ) { + if ( true === $show_data_page && bp_is_running_wp( '4.9.6' ) ) { $sub_nav[] = array( 'name' => __( 'Export Data', 'buddypress' ), 'slug' => 'data', @@ -268,7 +268,7 @@ class BP_Settings_Component extends BP_Component { $show_data_page = apply_filters( 'bp_settings_show_user_data_page', true ); // Export Data. - if ( true === $show_data_page && version_compare( $GLOBALS['wp_version'], '4.9.6', '>=' ) ) { + if ( true === $show_data_page && bp_is_running_wp( '4.9.6' ) ) { $wp_admin_nav[] = array( 'parent' => 'my-account-' . $this->id, 'id' => 'my-account-' . $this->id . '-data', diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress-functions.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress-functions.php index b818202540a945981dec8434270eca8e23fa169a..f4a3e1016344f348f28bb8fde0075ec73c61f7f8 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress-functions.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress-functions.php @@ -1582,7 +1582,7 @@ function bp_legacy_theme_ajax_joinleave_group() { case 'request_membership' : check_ajax_referer( 'groups_request_membership' ); - if ( ! groups_send_membership_request( bp_loggedin_user_id(), $group->id ) ) { + if ( ! groups_send_membership_request( [ 'user_id' => bp_loggedin_user_id(), 'group_id' => $group->id ] ) ) { _e( 'Error requesting membership', 'buddypress' ); } else { echo '<a id="group-' . esc_attr( $group->id ) . '" class="group-button disabled pending membership-requested" rel="membership-requested" href="' . bp_get_group_permalink( $group ) . '">' . __( 'Request Sent', 'buddypress' ) . '</a>'; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/entry.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/entry.php index 9f4cd5d1cb6e3e9e1607a0a0a743dec9fed56314..6386939a2be93190728e613522750fdfc617cc2a 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/entry.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/entry.php @@ -145,7 +145,7 @@ do_action( 'bp_before_activity_entry' ); ?> */ do_action( 'bp_activity_entry_comments' ); ?> - <?php wp_nonce_field( 'new_activity_comment', '_wpnonce_new_activity_comment' ); ?> + <?php wp_nonce_field( 'new_activity_comment', '_wpnonce_new_activity_comment_' . bp_get_activity_id() ); ?> </form> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/blogs/create.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/blogs/create.php index eb5e216c591f7137000acd49d6205c1ae815469c..5da434252f542012923aeee6e7cabf7ae2efa2ec 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/blogs/create.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/blogs/create.php @@ -14,43 +14,47 @@ */ do_action( 'bp_before_create_blog_content_template' ); ?> -<div id="template-notices" role="alert" aria-atomic="true"> - <?php +<div id="buddypress"> - /** This action is documented in bp-templates/bp-legacy/buddypress/activity/index.php */ - do_action( 'template_notices' ); ?> + <div id="template-notices" role="alert" aria-atomic="true"> + <?php -</div> + /** This action is documented in bp-templates/bp-legacy/buddypress/activity/index.php */ + do_action( 'template_notices' ); ?> -<?php + </div> -/** - * Fires before the display of the blog creation form. - * - * @since 1.1.0 - */ -do_action( 'bp_before_create_blog_content' ); ?> + <?php -<?php if ( bp_blog_signup_enabled() ) : ?> + /** + * Fires before the display of the blog creation form. + * + * @since 1.1.0 + */ + do_action( 'bp_before_create_blog_content' ); ?> - <?php bp_show_blog_signup_form(); ?> + <?php if ( bp_blog_signup_enabled() ) : ?> -<?php else: ?> + <?php bp_show_blog_signup_form(); ?> - <div id="message" class="info"> - <p><?php _e( 'Site registration is currently disabled', 'buddypress' ); ?></p> - </div> + <?php else: ?> -<?php endif; ?> + <div id="message" class="info"> + <p><?php _e( 'Site registration is currently disabled', 'buddypress' ); ?></p> + </div> -<?php + <?php endif; ?> -/** - * Fires after the display of the blog creation form. - * - * @since 1.1.0 - */ -do_action( 'bp_after_create_blog_content' ); ?> + <?php + + /** + * Fires after the display of the blog creation form. + * + * @since 1.1.0 + */ + do_action( 'bp_after_create_blog_content' ); ?> + +</div> <?php diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/groups-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/groups-loop.php index b52165e8a1c1844cc900c3793130492c439a525f..38e82510df7fa265def0c7547ccf3630fcf02e5e 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/groups-loop.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/groups-loop.php @@ -64,7 +64,14 @@ do_action( 'bp_before_groups_loop' ); ?> <div class="item"> <div class="item-title"><?php bp_group_link(); ?></div> - <div class="item-meta"><span class="activity" data-livestamp="<?php bp_core_iso8601_date( bp_get_group_last_active( 0, array( 'relative' => false ) ) ); ?>"><?php printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); ?></span></div> + <div class="item-meta"> + <span class="activity" data-livestamp="<?php bp_core_iso8601_date( bp_get_group_last_active( 0, array( 'relative' => false ) ) ); ?>"> + <?php + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + printf( __( 'Active %s', 'buddypress' ), bp_get_group_last_active() ); + ?> + </span> + </div> <div class="item-desc"><?php bp_group_description_excerpt(); ?></div> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php index 34f5c361b06442fec45d755453e54f2828023768..5409895eb24b94fa9e7fb50da27e727026e4e8aa 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php @@ -60,7 +60,12 @@ do_action( 'bp_before_group_header' ); ?> do_action( 'bp_group_header_meta' ); ?> <span class="highlight"><?php bp_group_type(); ?></span> - <span class="activity" data-livestamp="<?php bp_core_iso8601_date( bp_get_group_last_active( 0, array( 'relative' => false ) ) ); ?>"><?php printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); ?></span> + <span class="activity" data-livestamp="<?php bp_core_iso8601_date( bp_get_group_last_active( 0, array( 'relative' => false ) ) ); ?>"> + <?php + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + printf( __( 'Active %s', 'buddypress' ), bp_get_group_last_active() ); + ?> + </span> <?php bp_group_description(); ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/group-header.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/group-header.php index 409e5d13b40eba2f50767f44c75006b58c104ec9..b08ea5716ba3e27d516d24b584fc89f58dff170b 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/group-header.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/group-header.php @@ -69,7 +69,12 @@ do_action( 'bp_before_group_header' ); <div id="item-header-content"> <span class="highlight"><?php bp_group_type(); ?></span> - <span class="activity" data-livestamp="<?php bp_core_iso8601_date( bp_get_group_last_active( 0, array( 'relative' => false ) ) ); ?>"><?php printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); ?></span> + <span class="activity" data-livestamp="<?php bp_core_iso8601_date( bp_get_group_last_active( 0, array( 'relative' => false ) ) ); ?>"> + <?php + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + printf( __( 'Active %s', 'buddypress' ), bp_get_group_last_active() ); + ?> + </span> <?php diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress-rtl.css index 06df2689f4e4f1e4d650d240fd7c6171f1afecb6..df05d6fc612a78ee5c55a228d8a4ff897a4369f1 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress-rtl.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress-rtl.css @@ -733,6 +733,20 @@ body.activity-permalink #buddypress div.activity-comments div.acomment-content { margin-bottom: -1em; } +body.create-blog #buddypress .error { + background-color: #fdc; + border: 1px solid #a00; + color: #800; + padding: 10px 15px; +} + +body.create-blog #buddypress .success { + background-color: #efc; + border: 1px solid #591; + color: #250; + padding: 10px 15px; +} + /*-------------------------------------------------------------- 3.5 - Forms --------------------------------------------------------------*/ diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress-rtl.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress-rtl.min.css index c78d2f0562dded3647e8979018f3b92e676dac8e..16b9d56f5411d81d76c0fca539f761db8f3b9274 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress-rtl.min.css @@ -1 +1 @@ -#buddypress div.pagination{background:0 0;border:none;color:#767676;font-size:small;margin:0;position:relative;display:block;float:right;width:100%;padding:10px 0}#buddypress div.pagination .pag-count{float:right;margin-right:10px}#buddypress div.pagination .pagination-links{float:left;margin-left:10px}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{font-size:90%;padding:0 5px}#buddypress div.pagination .pagination-links a:hover{font-weight:700}#buddypress noscript div.pagination{margin-bottom:15px}#buddypress #nav-above{display:none}#buddypress .paged #nav-above{display:block}#buddypress img.wp-smiley{border:none!important;clear:none!important;float:none!important;margin:0!important;padding:0!important}#buddypress .clear{clear:right}#buddypress #activity-stream{margin-top:-5px}#buddypress #activity-stream p{margin:5px 0}#buddypress #item-body form#whats-new-form{margin:0;padding:0}#buddypress .home-page form#whats-new-form{border-bottom:none;padding-bottom:0}#buddypress form#whats-new-form #whats-new-avatar{float:right}#buddypress form#whats-new-form #whats-new-content{margin-right:55px;padding:0 20px 20px 0}#buddypress form#whats-new-form p.activity-greeting{line-height:.5;margin-bottom:15px;margin-right:75px}#buddypress form#whats-new-form textarea{background:#fff;box-sizing:border-box;color:#555;font-family:inherit;font-size:medium;height:2.2em;line-height:1.4;padding:6px;width:100%}body.no-js #buddypress form#whats-new-form textarea{height:50px}#buddypress form#whats-new-form #whats-new-options select{max-width:200px;margin-top:12px}#buddypress form#whats-new-form #whats-new-submit{float:left;margin-top:12px}#buddypress #whats-new-options:after{clear:both;content:"";display:table}body.no-js #buddypress #whats-new-options{height:auto}#buddypress #whats-new:focus{border-color:rgba(31,179,221,.9)!important;outline-color:rgba(31,179,221,.9)}#buddypress ul.activity-list li{overflow:hidden;padding:15px 0 0;list-style:none}#buddypress .activity-list .activity-avatar{float:right}#buddypress ul.item-list.activity-list li.has-comments{padding-bottom:15px}body.activity-permalink #buddypress ul.activity-list li.has-comments{padding-bottom:0}#buddypress .activity-list li.mini{font-size:80%;position:relative}#buddypress .activity-list li.mini .activity-avatar img.FB_profile_pic,#buddypress .activity-list li.mini .activity-avatar img.avatar{height:20px;margin-right:30px;width:20px}#buddypress .activity-permalink .activity-list li.mini .activity-avatar img.FB_profile_pic,#buddypress .activity-permalink .activity-list li.mini .activity-avatar img.avatar{height:auto;margin-right:0;width:auto}body.activity-permalink #buddypress .activity-list>li:first-child{padding-top:0}#buddypress .activity-list li .activity-content{position:relative}#buddypress .activity-list li.mini .activity-content p{margin:0}#buddypress .activity-list li.mini .activity-comments{clear:both;font-size:120%}body.activity-permalink #buddypress li.mini .activity-meta{margin-top:4px}#buddypress .activity-list li .activity-inreplyto{color:#767676;font-size:80%}#buddypress .activity-list li .activity-inreplyto>p{margin:0;display:inline}#buddypress .activity-list li .activity-inreplyto blockquote,#buddypress .activity-list li .activity-inreplyto div.activity-inner{background:0 0;border:none;display:inline;margin:0;overflow:hidden;padding:0}#buddypress .activity-list .activity-content{margin:0 70px 0 0}body.activity-permalink #buddypress .activity-list li .activity-content{border:none;font-size:100%;line-height:1.5;margin-right:170px;margin-left:0;padding:0}body.activity-permalink #buddypress .activity-list li .activity-header>p{margin:0;padding:5px 0 0}#buddypress .activity-list .activity-content .activity-header,#buddypress .activity-list .activity-content .comment-header{color:#767676;line-height:2.2}#buddypress .activity-header{margin-left:20px}#buddypress .acomment-meta a,#buddypress .activity-header a,#buddypress .comment-meta a{text-decoration:none}#buddypress .activity-list .activity-content .activity-header img.avatar{float:none!important;margin:0 0 -8px 5px!important}#buddypress a.bp-secondary-action,#buddypress span.highlight{font-size:80%;padding:0;margin-left:5px;text-decoration:none}#buddypress .activity-list .activity-content .activity-inner,#buddypress .activity-list .activity-content blockquote{margin:10px 0 5px 10px;overflow:hidden}#buddypress .activity-list li.new_forum_post .activity-content .activity-inner,#buddypress .activity-list li.new_forum_topic .activity-content .activity-inner{border-right:2px solid #eaeaea;margin-right:5px;padding-right:10px}body.activity-permalink #buddypress .activity-content .activity-inner,body.activity-permalink #buddypress .activity-content blockquote{margin-right:0;margin-top:5px}#buddypress .activity-inner>p{word-wrap:break-word}#buddypress .activity-inner>.activity-inner{margin:0}#buddypress .activity-inner>blockquote{margin:0}#buddypress .activity-list .activity-content img.thumbnail{border:2px solid #eee;float:right;margin:0 0 5px 10px}#buddypress .activity-read-more{margin-right:1em;white-space:nowrap}#buddypress .activity-list li.load-more,#buddypress .activity-list li.load-newest{background:#f0f0f0;font-size:110%;margin:15px 0;padding:10px 15px;text-align:center}#buddypress .activity-list li.load-more a,#buddypress .activity-list li.load-newest a{color:#4d4d4d}#buddypress div.activity-meta{margin:18px 0 0}body.activity-permalink #buddypress div.activity-meta{margin-bottom:6px}#buddypress div.activity-meta a{padding:4px 8px}#buddypress a.activity-time-since{color:#767676;text-decoration:none}#buddypress a.activity-time-since:hover{color:#767676;text-decoration:underline}#buddypress #reply-title small a,#buddypress a.bp-primary-action{font-size:80%;margin-left:5px;text-decoration:none}#buddypress #reply-title small a span,#buddypress a.bp-primary-action span{background:#767676;color:#fff;font-size:90%;margin-right:2px;padding:0 5px}#buddypress #reply-title small a:hover span,#buddypress a.bp-primary-action:hover span{background:#555;color:#fff}#buddypress div.activity-comments{margin:0 70px 0 0;overflow:hidden;position:relative;width:auto;clear:both}body.activity-permalink #buddypress div.activity-comments{background:0 0;margin-right:170px;width:auto}#buddypress div.activity-comments>ul{padding:0 10px 0 0}#buddypress div.activity-comments ul,#buddypress div.activity-comments ul li{border:none;list-style:none}#buddypress div.activity-comments ul{clear:both;margin:0}#buddypress div.activity-comments ul li{border-top:1px solid #eee;padding:10px 0 0}body.activity-permalink #buddypress .activity-list li.mini .activity-comments{clear:none;margin-top:0}body.activity-permalink #buddypress div.activity-comments ul li{border-width:1px;padding:10px 0 0}#buddypress div.activity-comments>ul>li:first-child{border-top:none}#buddypress div.activity-comments ul li:last-child{margin-bottom:0}#buddypress div.activity-comments ul li>ul{margin-right:30px;margin-top:0;padding-right:10px}body.activity-permalink #buddypress div.activity-comments ul li>ul{margin-top:10px}body.activity-permalink #buddypress div.activity-comments>ul{padding:0 15px 0 10px}#buddypress div.activity-comments div.acomment-avatar img{border-width:1px;float:right;height:25px;margin-left:10px;width:25px}#buddypress div.activity-comments div.acomment-content{font-size:80%;margin:5px 40px 0 0}#buddypress div.acomment-content .activity-delete-link,#buddypress div.acomment-content .comment-header,#buddypress div.acomment-content .time-since{display:none}body.activity-permalink #buddypress div.activity-comments div.acomment-content{font-size:90%}#buddypress div.activity-comments div.acomment-meta{color:#767676;font-size:80%}#buddypress div.activity-comments form.ac-form{display:none;padding:10px}#buddypress div.activity-comments li form.ac-form{margin-left:15px;clear:both}#buddypress div.activity-comments form.root{margin-right:0}#buddypress div.activity-comments div#message{margin-top:15px;margin-bottom:0}#buddypress div.activity-comments form .ac-textarea{background:#fff;border:1px inset #ccc;margin-bottom:10px;padding:8px}#buddypress div.activity-comments form textarea{border:none;background:0 0;box-shadow:none;outline:0;color:#555;font-family:inherit;font-size:100%;height:60px;padding:0;margin:0;width:100%}#buddypress div.activity-comments form input{margin-top:5px}#buddypress div.activity-comments form div.ac-reply-avatar{float:right}#buddypress div.ac-reply-avatar img{border:1px solid #eee}#buddypress div.activity-comments form div.ac-reply-content{color:#767676;margin-right:50px;padding-right:15px}#buddypress div.activity-comments form div.ac-reply-content a{text-decoration:none}#buddypress .acomment-options{float:right;margin:5px 40px 5px 0}#buddypress .acomment-options a{color:#767676}#buddypress .acomment-options a:hover{color:inherit}#buddypress div.dir-search{float:left;margin:-39px 0 0 0}#buddypress div.dir-search input[type=text],#buddypress li.groups-members-search input[type=text]{font-size:90%;padding:1px 3px}#buddypress .current-member-type{font-style:italic}#buddypress .dir-form{clear:both}#buddypress div#message{margin:0 0 15px}#buddypress #message.info{margin-bottom:0}#buddypress div#message.updated{clear:both;display:block}#buddypress div#message p,#sitewide-notice p,#sitewide-notice strong:first-child{font-size:90%;display:block;padding:10px 15px}#buddypress div#message.error p{background-color:#fdc;border:1px solid #a00;clear:right;color:#800}#buddypress div#message.warning p{background-color:#ffe0af;border:1px solid #ffd087;clear:right;color:#800}#buddypress div#message.updated p{background-color:#efc;border:1px solid #591;color:#250}#buddypress #pass-strength-result{background-color:#eee;border-color:#ddd;border-style:solid;border-width:1px;display:none;margin:5px 0 5px 5px;padding:5px;text-align:center;width:150px}#buddypress .standard-form #basic-details-section #pass-strength-result{width:35%}#buddypress #pass-strength-result.bad,#buddypress #pass-strength-result.error{background-color:#ffb78c;border-color:#ff853c!important;display:block}#buddypress #pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;display:block}#buddypress #pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;display:block}#buddypress #pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;display:block}#buddypress .standard-form#signup_form div div.error{background:#faa;color:#a00;margin:0 0 10px;padding:6px;width:90%}#buddypress div.accept,#buddypress div.reject{float:right;margin-right:10px}#buddypress ul.button-nav li{float:right;margin:0 0 10px 10px;list-style:none}#buddypress ul.button-nav li.current a{font-weight:700}#sitewide-notice #message{right:2%;position:fixed;top:1em;width:96%;z-index:9999}#sitewide-notice.admin-bar-on #message{top:3.3em}#sitewide-notice strong{display:block;margin-bottom:-1em}#buddypress form fieldset{border:0;padding:0}#buddypress .dir-search input[type=search],#buddypress .dir-search input[type=text],#buddypress .groups-members-search input[type=search],#buddypress .groups-members-search input[type=text],#buddypress .standard-form input[type=color],#buddypress .standard-form input[type=date],#buddypress .standard-form input[type=datetime-local],#buddypress .standard-form input[type=datetime],#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=month],#buddypress .standard-form input[type=number],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=range],#buddypress .standard-form input[type=search],#buddypress .standard-form input[type=tel],#buddypress .standard-form input[type=text],#buddypress .standard-form input[type=time],#buddypress .standard-form input[type=url],#buddypress .standard-form input[type=week],#buddypress .standard-form select,#buddypress .standard-form textarea{border:1px solid #ccc;background:#fafafa;border-radius:0;color:#737373;font:inherit;font-size:100%;padding:6px}#buddypress .standard-form select{padding:3px}#buddypress .standard-form input[type=password]{margin-bottom:5px}#buddypress .standard-form label,#buddypress .standard-form legend,#buddypress .standard-form span.label{display:block;font-weight:700;margin:15px 0 5px;width:auto}#buddypress label.xprofile-field-label{display:inline}#buddypress .standard-form #invite-list label,#buddypress .standard-form p label{font-weight:400;margin:auto}#buddypress .standard-form .checkbox label,#buddypress .standard-form .radio label{color:#767676;font-size:100%;font-weight:400;margin:5px 0 0}#buddypress .standard-form .checkbox label input,#buddypress .standard-form .radio label input{margin-left:3px}#buddypress .standard-form#sidebar-login-form label{margin-top:5px}#buddypress .standard-form input[type=text]{width:75%}#buddypress .standard-form#sidebar-login-form input[type=password],#buddypress .standard-form#sidebar-login-form input[type=text]{padding:4px;width:95%}#buddypress .standard-form #basic-details-section input[type=password],#buddypress .standard-form #blog-details-section input#signup_blog_url{width:35%}#buddypress #commentform input[type=text],#buddypress #commentform textarea,#buddypress .form-allowed-tags,#buddypress .standard-form#signup_form input[type=text],#buddypress .standard-form#signup_form textarea{width:90%}#buddypress .standard-form#signup_form div.submit{float:left}#buddypress div#signup-avatar img{margin:0 0 10px 15px}#buddypress .standard-form textarea{width:75%;height:120px}#buddypress .standard-form textarea#message_content{height:200px}#buddypress .standard-form#send-reply textarea{width:97.5%}#buddypress .standard-form p.description{color:#767676;font-size:80%;margin:5px 0}#buddypress .standard-form div.submit{clear:both;padding:15px 0 0}#buddypress .standard-form p.submit{margin-bottom:0;padding:15px 0 0}#buddypress .standard-form div.submit input{margin-left:15px}#buddypress .standard-form div.radio ul{margin:10px 38px 15px 0;list-style:disc}#buddypress .standard-form div.radio ul li{margin-bottom:5px}#buddypress .standard-form a.clear-value{display:block;margin-top:5px;outline:0}#buddypress .standard-form #basic-details-section,#buddypress .standard-form #blog-details-section,#buddypress .standard-form #profile-details-section{float:right;width:48%}#buddypress .standard-form #profile-details-section{float:left}#buddypress #notifications-bulk-management,#buddypress .standard-form #blog-details-section{clear:right}body.no-js #buddypress #delete_inbox_messages,body.no-js #buddypress #delete_sentbox_messages,body.no-js #buddypress #message-type-select,body.no-js #buddypress #messages-bulk-management #select-all-messages,body.no-js #buddypress #notifications-bulk-management #select-all-notifications,body.no-js #buddypress label[for=message-type-select]{display:none}#buddypress .standard-form input:focus,#buddypress .standard-form select:focus,#buddypress .standard-form textarea:focus{background:#fafafa;color:#555}#buddypress form#send-invite-form{margin-top:20px}#buddypress div#invite-list{background:#f5f5f5;height:400px;margin:0 0 10px;overflow:auto;padding:5px;width:160px}#buddypress .comment-reply-link,#buddypress .generic-button a,#buddypress .standard-form button,#buddypress a.button,#buddypress input[type=button],#buddypress input[type=reset],#buddypress input[type=submit],#buddypress ul.button-nav li a,a.bp-title-button{background:#fff;border:1px solid #ccc;color:#767676;font-size:small;cursor:pointer;outline:0;padding:4px 10px;text-align:center;text-decoration:none}#buddypress .comment-reply-link:hover,#buddypress .standard-form button:hover,#buddypress a.button:focus,#buddypress a.button:hover,#buddypress div.generic-button a:hover,#buddypress input[type=button]:hover,#buddypress input[type=reset]:hover,#buddypress input[type=submit]:hover,#buddypress ul.button-nav li a:hover,#buddypress ul.button-nav li.current a{background:#ededed;border:1px solid #bbb;color:#555;outline:0;text-decoration:none}#buddypress form.standard-form .left-menu{float:right}#buddypress form.standard-form .left-menu #invite-list ul{margin:1%;list-style:none}#buddypress form.standard-form .left-menu #invite-list ul li{margin:0 1% 0 0}#buddypress form.standard-form .main-column{margin-right:190px}#buddypress form.standard-form .main-column ul#friend-list{clear:none;float:right}#buddypress form.standard-form .main-column ul#friend-list h3,#buddypress form.standard-form .main-column ul#friend-list h4{clear:none}#buddypress .wp-editor-wrap a.button,#buddypress .wp-editor-wrap button,#buddypress .wp-editor-wrap input[type=button],#buddypress .wp-editor-wrap input[type=reset],#buddypress .wp-editor-wrap input[type=submit]{padding:0 8px 1px}#buddypress form [disabled=disabled]{cursor:default;opacity:.4}fieldset.register-site{margin-top:1em}fieldset.create-site{margin-bottom:2em}fieldset.create-site legend{margin-bottom:1em}fieldset.create-site label{margin-left:3em}.bp-screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px;word-wrap:normal!important}.bp-screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;right:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#buddypress a.loading,#buddypress input.loading{-webkit-animation:loader-pulsate .5s infinite ease-in-out alternate;-moz-animation:loader-pulsate .5s infinite ease-in-out alternate;border-color:#aaa}#buddypress a.loading:hover,#buddypress input.loading:hover{color:#767676}#buddypress a.disabled,#buddypress button.disabled,#buddypress button.pending,#buddypress div.pending a,#buddypress input[type=button].disabled,#buddypress input[type=button].pending,#buddypress input[type=reset].disabled,#buddypress input[type=reset].pending,#buddypress input[type=submit].disabled,#buddypress input[type=submit].pending,#buddypress input[type=submit][disabled=disabled]{border-color:#eee;color:#bbb;cursor:default}#buddypress a.disabled:hover,#buddypress button.disabled:hover,#buddypress button.pending:hover,#buddypress div.pending a:hover,#buddypress input[type=button]:hover.disabled,#buddypress input[type=button]:hover.pending,#buddypress input[type=reset]:hover.disabled,#buddypress input[type=reset]:hover.pending,#buddypress input[type=submit]:hover.disabled,#buddypress input[type=submit]:hover.pending{border-color:#eee;color:#bbb}#buddypress ul#topic-post-list{margin:0;width:auto}#buddypress ul#topic-post-list li{padding:15px;position:relative}#buddypress ul#topic-post-list li.alt{background:#f5f5f5}#buddypress ul#topic-post-list li div.poster-meta{color:#767676;margin-bottom:10px}#buddypress ul#topic-post-list li div.post-content{margin-right:54px}#buddypress div.topic-tags{font-size:80%}#buddypress div.admin-links{color:#767676;font-size:80%;position:absolute;top:15px;left:25px}#buddypress div#topic-meta{margin:0;padding:5px 19px 30px;position:relative}#buddypress div#topic-meta div.admin-links{left:19px;top:-36px}#buddypress div#topic-meta h3{margin:5px 0}#buddypress div#new-topic-post{display:none;margin:20px 0 0;padding:1px 0 0}#buddypress table.forum,#buddypress table.messages-notices,#buddypress table.notifications,#buddypress table.notifications-settings,#buddypress table.profile-fields,#buddypress table.profile-settings,#buddypress table.wp-profile-fields{width:100%}#buddypress table.forum thead tr,#buddypress table.messages-notices thead tr,#buddypress table.notifications thead tr,#buddypress table.notifications-settings thead tr,#buddypress table.profile-fields thead tr,#buddypress table.profile-settings thead tr,#buddypress table.wp-profile-fields thead tr{background:#eaeaea}#buddypress table#message-threads{clear:both}#buddypress table.profile-fields{margin-bottom:20px}#buddypress table.profile-fields:last-child{margin-bottom:0}#buddypress table.profile-fields p{margin:0}#buddypress table.profile-fields p:last-child{margin-top:0}#buddypress table.forum tr td,#buddypress table.forum tr th,#buddypress table.messages-notices tr td,#buddypress table.messages-notices tr th,#buddypress table.notifications tr td,#buddypress table.notifications tr th,#buddypress table.notifications-settings tr td,#buddypress table.notifications-settings tr th,#buddypress table.profile-fields tr td,#buddypress table.profile-fields tr th,#buddypress table.profile-settings tr td,#buddypress table.wp-profile-fields tr td,#buddypress table.wp-profile-fields tr th{padding:8px;vertical-align:middle}#buddypress table.forum tr td.label,#buddypress table.messages-notices tr td.label,#buddypress table.notifications tr td.label,#buddypress table.notifications-settings tr td.label,#buddypress table.profile-fields tr td.label,#buddypress table.wp-profile-fields tr td.label{border-left:1px solid #eaeaea;font-weight:700;width:25%}#buddypress #message-threads .thread-info{min-width:40%}#buddypress table tr td.thread-info p{margin:0}#buddypress table tr td.thread-info p.thread-excerpt{color:#767676;font-size:80%;margin-top:3px}#buddypress table.forum td{text-align:center}#buddypress table.forum tr.alt td,#buddypress table.messages-notices tr.alt td,#buddypress table.notifications tr.alt td,#buddypress table.notifications-settings tr.alt td,#buddypress table.profile-fields tr.alt td,#buddypress table.profile-settings tr.alt td,#buddypress table.wp-profile-fields tr.alt td{background:#f5f5f5;color:#707070}#buddypress table.notification-settings{margin-bottom:20px;text-align:right}#buddypress #groups-notification-settings{margin-bottom:0}#buddypress table.notification-settings td:first-child,#buddypress table.notification-settings th.icon,#buddypress table.notifications td:first-child,#buddypress table.notifications th.icon{display:none}#buddypress table.notification-settings th.title,#buddypress table.profile-settings th.title{width:80%}#buddypress table.notification-settings .no,#buddypress table.notification-settings .yes{text-align:center;width:40px}#buddypress table.forum{margin:0;width:auto;clear:both}#buddypress table.forum tr.sticky td{font-size:110%;background:#fff9db;border-top:1px solid #ffe8c4;border-bottom:1px solid #ffe8c4}#buddypress table.forum tr.closed td.td-title{padding-right:35px}#buddypress table.forum td p.topic-text{color:#767676;font-size:100%}#buddypress table.forum tr>td:first-child,#buddypress table.forum tr>th:first-child{padding-right:15px}#buddypress table.forum tr>td:last-child,#buddypress table.forum tr>th:last-child{padding-left:15px}#buddypress table.forum td.td-group,#buddypress table.forum td.td-poster,#buddypress table.forum td.td-title,#buddypress table.forum tr th#th-group,#buddypress table.forum tr th#th-poster,#buddypress table.forum tr th#th-title{text-align:right}#buddypress table.forum tr td.td-title a.topic-title{font-size:110%}#buddypress table.forum td.td-freshness{white-space:nowrap}#buddypress table.forum td.td-freshness span.time-since{font-size:80%;color:#767676}#buddypress table.forum td img.avatar{float:none;margin:0 0 -8px 5px}#buddypress table.forum td.td-group,#buddypress table.forum td.td-poster{min-width:140px}#buddypress table.forum th#th-title{width:80%}#buddypress table.forum th#th-freshness{width:25%}#buddypress table.forum th#th-postcount{width:15%}#buddypress table.forum p.topic-meta{font-size:80%;margin:5px 0 0}#buddypress .item-body{margin:20px 0}#buddypress span.activity{display:inline-block;font-size:small;padding:0}#buddypress span.user-nicename{color:#767676;display:inline-block;font-size:120%;font-weight:700}#sitewide-notice,.bp-site-wide-message{position:relative}#buddypress div#message p,#sitewide-notice #message{background-color:#ffd;border:1px solid #cb2;color:#440;font-weight:400;margin-top:3px;text-decoration:none}.admin-bar-on #message p,.bp-site-wide-message #message p{padding-left:25px}.admin-bar-on #message button,.bp-site-wide-message #message button{font-size:.8em;padding:2px 4px;position:absolute;left:0;top:0}.admin-bar-on #message button{left:10px;top:7px}#buddypress #item-header:after{clear:both;content:"";display:table}#buddypress div#item-header div#item-header-content{float:right;margin-right:0}#buddypress div#item-header h2{line-height:1.2;margin:0 0 15px}#buddypress div#item-header h2 a{color:#767676;text-decoration:none}#buddypress div#item-header img.avatar{float:right;margin:0 0 19px 15px}#buddypress div#item-header h2{margin-bottom:5px}#buddypress div#item-header h2 span.highlight{font-size:60%;font-weight:400;line-height:1.7;vertical-align:middle;display:inline-block}#buddypress div#item-header h2 span.highlight span{background:#a1dcfa;color:#fff;cursor:pointer;font-weight:700;font-size:80%;margin-bottom:2px;padding:1px 4px;position:relative;left:-2px;top:-2px;vertical-align:middle}#buddypress div#item-header div#item-meta{font-size:80%;color:#767676;overflow:hidden;margin:15px 0 5px;padding-bottom:10px}#buddypress div#item-header div#item-actions{float:left;margin:0 15px 15px 0;text-align:left;width:20%}#buddypress div#item-header div#item-actions h2,#buddypress div#item-header div#item-actions h3{margin:0 0 5px}#buddypress div#item-header div#item-actions a{display:inline-block}#buddypress div#item-header ul{margin-bottom:15px}#buddypress div#item-header ul:after{clear:both;content:"";display:table}#buddypress div#item-header ul h5,#buddypress div#item-header ul hr,#buddypress div#item-header ul span{display:none}#buddypress div#item-header ul li{float:left;list-style:none}#buddypress div#item-header ul img.avatar,#buddypress div#item-header ul.avatars img.avatar{height:30px;margin:2px;width:30px}#buddypress div#item-header a.button,#buddypress div#item-header div.generic-button{float:right;margin:10px 0 0 10px}body.no-js #buddypress div#item-header .js-self-profile-button{display:none}#buddypress div#item-header div#message.info{line-height:.8}#buddypress ul.item-list{border-top:1px solid #eaeaea;width:100%;list-style:none;clear:both;margin:0;padding:0}body.activity-permalink #buddypress ul.item-list,body.activity-permalink #buddypress ul.item-list li.activity-item{border:none}#buddypress ul.item-list li{border-bottom:1px solid #eaeaea;padding:15px 0;margin:0;position:relative;list-style:none}#buddypress ul.single-line li{border:none}#buddypress ul.item-list li img.avatar{float:right;margin:0 0 0 10px}#buddypress ul.item-list li div.item-title,#buddypress ul.item-list li h3,#buddypress ul.item-list li h4{font-weight:400;font-size:90%;margin:0;width:75%}#buddypress ul.item-list li div.item-title span{color:#767676;font-size:80%}#buddypress ul.item-list li div.item-desc{color:#767676;font-size:80%;margin:10px 60px 0 0;width:50%}#buddypress ul.item-list li.group-no-avatar div.item-desc{margin-right:0}#buddypress ul.item-list li div.action{position:absolute;top:15px;left:0;text-align:left}#buddypress ul.item-list li div.meta{color:#767676;font-size:80%;margin-top:10px}#buddypress ul.item-list li h5 span.small{float:left;font-size:80%;font-weight:400}#buddypress div.item-list-tabs{background:0 0;clear:right;overflow:hidden}#buddypress div.item-list-tabs ul{margin:0;padding:0}#buddypress div.item-list-tabs ul li{float:right;margin:0;list-style:none}#buddypress div.item-list-tabs#subnav ul li{margin-top:0}#buddypress div.item-list-tabs ul li.last{float:left;margin:7px 0 0}#buddypress div.item-list-tabs#subnav ul li.last{margin-top:4px}#buddypress div.item-list-tabs ul li.last select{max-width:185px}#buddypress div.item-list-tabs ul li a,#buddypress div.item-list-tabs ul li span{display:block;padding:5px 10px;text-decoration:none}#buddypress div.item-list-tabs ul li a span{background:#eee;border-radius:50%;border:1px solid #ccc;color:#6c6c6c;display:inline;font-size:70%;margin-right:2px;padding:3px 6px;text-align:center;vertical-align:middle}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background-color:#eee;color:#555;opacity:.9;font-weight:700}#buddypress div.item-list-tabs ul li a:hover span,#buddypress div.item-list-tabs ul li.current a span,#buddypress div.item-list-tabs ul li.selected a span{background-color:#eee}#buddypress div.item-list-tabs ul li.current a span,#buddypress div.item-list-tabs ul li.selected a span{background-color:#fff}#buddypress div#item-nav ul li.loading a{background-position:12% 50%}#buddypress div.item-list-tabs#object-nav{margin-top:0}#buddypress div.item-list-tabs#subnav{background:0 0;margin:10px 0;overflow:hidden}#buddypress #admins-list li,#buddypress #members-list li,#buddypress #mods-list li{overflow:auto;list-style:none}#buddypress .group-members-list{width:100%;margin-top:1em;clear:both;overflow:auto}#buddypress #item-buttons:empty{display:none}#buddypress #cover-image-container{position:relative;z-index:0}#buddypress #header-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;right:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1}#buddypress #item-header-cover-image{padding:0 1em;position:relative;z-index:2}#buddypress table#message-threads tr.unread td{background:#fff9db;border-top:1px solid #ffe8c4;border-bottom:1px solid #ffe8c4;font-weight:700}#buddypress table#message-threads tr.unread td .activity,#buddypress table#message-threads tr.unread td .thread-excerpt,#buddypress table#message-threads tr.unread td.thread-options{font-weight:400}#buddypress li span.unread-count,#buddypress tr.unread span.unread-count{background:#d00;color:#fff;font-weight:700;padding:2px 8px}#buddypress div.item-list-tabs ul li a span.unread-count{padding:1px 6px;color:#fff}#buddypress div#message-thread div.message-box{margin:0;padding:15px}#buddypress div#message-thread div.alt{background:#f4f4f4}#buddypress div#message-thread p#message-recipients{margin:10px 0 20px}#buddypress div#message-thread img.avatar{float:right;margin:0 0 0 10px;vertical-align:middle}#buddypress div#message-thread strong{font-size:100%;margin:0}#buddypress div#message-thread strong a{text-decoration:none}#buddypress div#message-thread strong span.activity{margin-top:4px}#buddypress div#message-thread div.message-metadata:after{clear:both;content:"";display:table}#buddypress div#message-thread div.message-content{margin-right:45px}#buddypress div#message-thread div.message-options{text-align:left}#buddypress #message-threads img.avatar{max-width:none}#buddypress div.message-search{float:left;margin:0 20px}.message-metadata{position:relative}.message-star-actions{position:absolute;left:0;top:0}#buddypress a.message-action-star,#buddypress a.message-action-unstar{border-bottom:0;text-decoration:none;outline:0}a.message-action-star{opacity:.7}a.message-action-star:hover{opacity:1}.message-action-star span.icon:before,.message-action-unstar span.icon:before{font-family:dashicons;font-size:18px}.message-action-star span.icon:before{color:#767676;content:"\f154"}.message-action-unstar span.icon:before{color:#fcdd77;content:"\f155"}#buddypress div.profile h2{margin-bottom:auto;margin-top:15px}#buddypress #profile-edit-form ul.button-nav{margin-top:15px}body.no-js #buddypress .field-visibility-settings-close,body.no-js #buddypress .field-visibility-settings-toggle{display:none}#buddypress .field-visibility-settings{display:none;margin-top:10px}body.no-js #buddypress .field-visibility-settings{display:block}#buddypress .current-visibility-level{font-weight:700;font-style:normal}#buddypress .field-visibility-settings,#buddypress .field-visibility-settings-notoggle,#buddypress .field-visibility-settings-toggle{color:#707070}#buddypress .field-visibility-settings a,#buddypress .field-visibility-settings-toggle a{font-size:80%}body.register #buddypress div.page ul{list-style:none}#buddypress .standard-form .field-visibility-settings label{margin:0;font-weight:400}#buddypress .field-visibility-settings legend,#buddypress .field-visibility-settings-toggle{font-style:italic}#buddypress .field-visibility-settings .radio{list-style:none;margin-bottom:0}#buddypress .field-visibility select{margin:0}#buddypress .wp-editor-container{border:1px solid #dedede}#buddypress .html-active button.switch-html{border-bottom-color:transparent;border-bottom-right-radius:0;border-bottom-left-radius:0;background:#f5f5f5;color:#707070}#buddypress .tmce-active button.switch-tmce{border-bottom-color:transparent;border-bottom-right-radius:0;border-bottom-left-radius:0;background:#f5f5f5;color:#707070}#buddypress .standard-form .wp-editor-container textarea{width:100%;padding-top:0;padding-bottom:0}.widget.buddypress span.activity{display:inline-block;font-size:small;padding:0}.widget.buddypress div.item-options{font-size:90%;margin:0 0 1em;padding:1em 0}.widget.buddypress div.item{margin:0 0 1em}.widget.buddypress div.item-content,.widget.buddypress div.item-meta{font-size:11px;margin-right:50px}.widget.buddypress div.avatar-block:after{clear:both;content:"";display:table}.widget.buddypress .item-avatar a{float:right;margin-bottom:15px;margin-left:10px}.widget.buddypress div.item-avatar img{display:inline-block;height:40px;margin:1px;width:40px}.widget.buddypress .item-avatar a,.widget.buddypress .item-avatar a img,.widget.buddypress .item-avatar a:active,.widget.buddypress .item-avatar a:focus,.widget.buddypress .item-avatar a:hover{box-shadow:none}.widget.buddypress #bp-login-widget-form label{display:block;margin:1rem 0 .5rem}.widget.buddypress #bp-login-widget-form #bp-login-widget-submit{margin-left:10px}.widget.buddypress .bp-login-widget-user-avatar{float:right}.bp-login-widget-user-avatar img.avatar{height:40px;width:40px}.widget.buddypress .bp-login-widget-user-links>div{padding-right:60px}.widget.buddypress .bp-login-widget-user-links>div{margin-bottom:.5rem}.widget.buddypress .bp-login-widget-user-links>div.bp-login-widget-user-link a{font-weight:700}.widget.buddypress #friends-list,.widget.buddypress #groups-list,.widget.buddypress #members-list{margin-right:0;padding-right:0}.widget.buddypress #friends-list li,.widget.buddypress #groups-list li,.widget.buddypress #members-list li{clear:both;list-style-type:none}.buddypress .bp-tooltip{position:relative}.bp-tooltip:after{background:#fff;border:1px solid #aaa;border-collapse:separate;border-radius:1px;box-shadow:-1px 1px 0 1px rgba(132,132,132,.3);color:#000;content:attr(data-bp-tooltip);display:none;font-family:sans-serif;font-size:11px;font-weight:400;letter-spacing:normal;line-height:1.5;margin-top:10px;max-width:240px;opacity:0;padding:3px 6px;position:absolute;left:50%;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;top:100%;transform:translateX(-50%);transition:opacity 2s ease-out;white-space:pre;word-wrap:break-word;z-index:998}.bp-tooltip:active:after,.bp-tooltip:focus:after,.bp-tooltip:hover:after{display:inline-block;opacity:1;overflow:visible;text-decoration:none;z-index:999}#group-admins .bp-tooltip:after,#group-mods .bp-tooltip:after,.message-metadata .bp-tooltip:after{left:0;text-align:left;transform:translateX(0)}.feed .bp-tooltip:after,.item-list .bp-tooltip:after,.messages-notices .bp-tooltip:after{right:0;left:auto;text-align:right;transform:translateX(0)}.admin-bar-on .bp-tooltip:after,.bp-site-wide-message .bp-tooltip:after{left:50px}@media only screen and (max-width:480px){#buddypress div.dir-search{float:left;margin-top:-50px;text-align:left}#buddypress div.dir-search input[type=text]{margin-bottom:1em;width:50%}a.bp-title-button{margin-right:10px}#buddypress form.standard-form .main-column div.action{position:relative;margin-bottom:1em}#buddypress form.standard-form .main-column ul#friend-list h3,#buddypress form.standard-form .main-column ul#friend-list h4{width:100%}}@media only screen and (max-width:320px){#buddypress div.dir-search{clear:right;float:right;margin-top:0;text-align:right}#buddypress li#groups-order-select{clear:right;float:right}#buddypress ul.item-list li div.action{clear:right;float:right;margin-top:0;margin-right:70px;position:relative;top:0;left:0;text-align:right}#buddypress ul.item-list li div.item-desc{clear:right;float:right;margin:10px 0 0;width:auto}#buddypress li div.item{margin-right:70px;width:auto}#buddypress ul.item-list li div.meta{margin-top:0}#buddypress .item-desc p{margin:0 0 10px}#buddypress div.pagination .pag-count{margin-right:0}}@media only screen and (max-width:240px){#buddypress div.dir-search{float:right;margin:0}#buddypress div.dir-search input[type=text]{width:50%}#buddypress li#groups-order-select{float:right}#buddypress ul.item-list li img.avatar{width:30px;height:auto}#buddypress li div.item,#buddypress ul.item-list li div.action{margin-right:45px}h1 a.bp-title-button{clear:right;float:right;margin:10px 0 20px}} \ No newline at end of file +#buddypress div.pagination{background:0 0;border:none;color:#767676;font-size:small;margin:0;position:relative;display:block;float:right;width:100%;padding:10px 0}#buddypress div.pagination .pag-count{float:right;margin-right:10px}#buddypress div.pagination .pagination-links{float:left;margin-left:10px}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{font-size:90%;padding:0 5px}#buddypress div.pagination .pagination-links a:hover{font-weight:700}#buddypress noscript div.pagination{margin-bottom:15px}#buddypress #nav-above{display:none}#buddypress .paged #nav-above{display:block}#buddypress img.wp-smiley{border:none!important;clear:none!important;float:none!important;margin:0!important;padding:0!important}#buddypress .clear{clear:right}#buddypress #activity-stream{margin-top:-5px}#buddypress #activity-stream p{margin:5px 0}#buddypress #item-body form#whats-new-form{margin:0;padding:0}#buddypress .home-page form#whats-new-form{border-bottom:none;padding-bottom:0}#buddypress form#whats-new-form #whats-new-avatar{float:right}#buddypress form#whats-new-form #whats-new-content{margin-right:55px;padding:0 20px 20px 0}#buddypress form#whats-new-form p.activity-greeting{line-height:.5;margin-bottom:15px;margin-right:75px}#buddypress form#whats-new-form textarea{background:#fff;box-sizing:border-box;color:#555;font-family:inherit;font-size:medium;height:2.2em;line-height:1.4;padding:6px;width:100%}body.no-js #buddypress form#whats-new-form textarea{height:50px}#buddypress form#whats-new-form #whats-new-options select{max-width:200px;margin-top:12px}#buddypress form#whats-new-form #whats-new-submit{float:left;margin-top:12px}#buddypress #whats-new-options:after{clear:both;content:"";display:table}body.no-js #buddypress #whats-new-options{height:auto}#buddypress #whats-new:focus{border-color:rgba(31,179,221,.9)!important;outline-color:rgba(31,179,221,.9)}#buddypress ul.activity-list li{overflow:hidden;padding:15px 0 0;list-style:none}#buddypress .activity-list .activity-avatar{float:right}#buddypress ul.item-list.activity-list li.has-comments{padding-bottom:15px}body.activity-permalink #buddypress ul.activity-list li.has-comments{padding-bottom:0}#buddypress .activity-list li.mini{font-size:80%;position:relative}#buddypress .activity-list li.mini .activity-avatar img.FB_profile_pic,#buddypress .activity-list li.mini .activity-avatar img.avatar{height:20px;margin-right:30px;width:20px}#buddypress .activity-permalink .activity-list li.mini .activity-avatar img.FB_profile_pic,#buddypress .activity-permalink .activity-list li.mini .activity-avatar img.avatar{height:auto;margin-right:0;width:auto}body.activity-permalink #buddypress .activity-list>li:first-child{padding-top:0}#buddypress .activity-list li .activity-content{position:relative}#buddypress .activity-list li.mini .activity-content p{margin:0}#buddypress .activity-list li.mini .activity-comments{clear:both;font-size:120%}body.activity-permalink #buddypress li.mini .activity-meta{margin-top:4px}#buddypress .activity-list li .activity-inreplyto{color:#767676;font-size:80%}#buddypress .activity-list li .activity-inreplyto>p{margin:0;display:inline}#buddypress .activity-list li .activity-inreplyto blockquote,#buddypress .activity-list li .activity-inreplyto div.activity-inner{background:0 0;border:none;display:inline;margin:0;overflow:hidden;padding:0}#buddypress .activity-list .activity-content{margin:0 70px 0 0}body.activity-permalink #buddypress .activity-list li .activity-content{border:none;font-size:100%;line-height:1.5;margin-right:170px;margin-left:0;padding:0}body.activity-permalink #buddypress .activity-list li .activity-header>p{margin:0;padding:5px 0 0}#buddypress .activity-list .activity-content .activity-header,#buddypress .activity-list .activity-content .comment-header{color:#767676;line-height:2.2}#buddypress .activity-header{margin-left:20px}#buddypress .acomment-meta a,#buddypress .activity-header a,#buddypress .comment-meta a{text-decoration:none}#buddypress .activity-list .activity-content .activity-header img.avatar{float:none!important;margin:0 0 -8px 5px!important}#buddypress a.bp-secondary-action,#buddypress span.highlight{font-size:80%;padding:0;margin-left:5px;text-decoration:none}#buddypress .activity-list .activity-content .activity-inner,#buddypress .activity-list .activity-content blockquote{margin:10px 0 5px 10px;overflow:hidden}#buddypress .activity-list li.new_forum_post .activity-content .activity-inner,#buddypress .activity-list li.new_forum_topic .activity-content .activity-inner{border-right:2px solid #eaeaea;margin-right:5px;padding-right:10px}body.activity-permalink #buddypress .activity-content .activity-inner,body.activity-permalink #buddypress .activity-content blockquote{margin-right:0;margin-top:5px}#buddypress .activity-inner>p{word-wrap:break-word}#buddypress .activity-inner>.activity-inner{margin:0}#buddypress .activity-inner>blockquote{margin:0}#buddypress .activity-list .activity-content img.thumbnail{border:2px solid #eee;float:right;margin:0 0 5px 10px}#buddypress .activity-read-more{margin-right:1em;white-space:nowrap}#buddypress .activity-list li.load-more,#buddypress .activity-list li.load-newest{background:#f0f0f0;font-size:110%;margin:15px 0;padding:10px 15px;text-align:center}#buddypress .activity-list li.load-more a,#buddypress .activity-list li.load-newest a{color:#4d4d4d}#buddypress div.activity-meta{margin:18px 0 0}body.activity-permalink #buddypress div.activity-meta{margin-bottom:6px}#buddypress div.activity-meta a{padding:4px 8px}#buddypress a.activity-time-since{color:#767676;text-decoration:none}#buddypress a.activity-time-since:hover{color:#767676;text-decoration:underline}#buddypress #reply-title small a,#buddypress a.bp-primary-action{font-size:80%;margin-left:5px;text-decoration:none}#buddypress #reply-title small a span,#buddypress a.bp-primary-action span{background:#767676;color:#fff;font-size:90%;margin-right:2px;padding:0 5px}#buddypress #reply-title small a:hover span,#buddypress a.bp-primary-action:hover span{background:#555;color:#fff}#buddypress div.activity-comments{margin:0 70px 0 0;overflow:hidden;position:relative;width:auto;clear:both}body.activity-permalink #buddypress div.activity-comments{background:0 0;margin-right:170px;width:auto}#buddypress div.activity-comments>ul{padding:0 10px 0 0}#buddypress div.activity-comments ul,#buddypress div.activity-comments ul li{border:none;list-style:none}#buddypress div.activity-comments ul{clear:both;margin:0}#buddypress div.activity-comments ul li{border-top:1px solid #eee;padding:10px 0 0}body.activity-permalink #buddypress .activity-list li.mini .activity-comments{clear:none;margin-top:0}body.activity-permalink #buddypress div.activity-comments ul li{border-width:1px;padding:10px 0 0}#buddypress div.activity-comments>ul>li:first-child{border-top:none}#buddypress div.activity-comments ul li:last-child{margin-bottom:0}#buddypress div.activity-comments ul li>ul{margin-right:30px;margin-top:0;padding-right:10px}body.activity-permalink #buddypress div.activity-comments ul li>ul{margin-top:10px}body.activity-permalink #buddypress div.activity-comments>ul{padding:0 15px 0 10px}#buddypress div.activity-comments div.acomment-avatar img{border-width:1px;float:right;height:25px;margin-left:10px;width:25px}#buddypress div.activity-comments div.acomment-content{font-size:80%;margin:5px 40px 0 0}#buddypress div.acomment-content .activity-delete-link,#buddypress div.acomment-content .comment-header,#buddypress div.acomment-content .time-since{display:none}body.activity-permalink #buddypress div.activity-comments div.acomment-content{font-size:90%}#buddypress div.activity-comments div.acomment-meta{color:#767676;font-size:80%}#buddypress div.activity-comments form.ac-form{display:none;padding:10px}#buddypress div.activity-comments li form.ac-form{margin-left:15px;clear:both}#buddypress div.activity-comments form.root{margin-right:0}#buddypress div.activity-comments div#message{margin-top:15px;margin-bottom:0}#buddypress div.activity-comments form .ac-textarea{background:#fff;border:1px inset #ccc;margin-bottom:10px;padding:8px}#buddypress div.activity-comments form textarea{border:none;background:0 0;box-shadow:none;outline:0;color:#555;font-family:inherit;font-size:100%;height:60px;padding:0;margin:0;width:100%}#buddypress div.activity-comments form input{margin-top:5px}#buddypress div.activity-comments form div.ac-reply-avatar{float:right}#buddypress div.ac-reply-avatar img{border:1px solid #eee}#buddypress div.activity-comments form div.ac-reply-content{color:#767676;margin-right:50px;padding-right:15px}#buddypress div.activity-comments form div.ac-reply-content a{text-decoration:none}#buddypress .acomment-options{float:right;margin:5px 40px 5px 0}#buddypress .acomment-options a{color:#767676}#buddypress .acomment-options a:hover{color:inherit}#buddypress div.dir-search{float:left;margin:-39px 0 0 0}#buddypress div.dir-search input[type=text],#buddypress li.groups-members-search input[type=text]{font-size:90%;padding:1px 3px}#buddypress .current-member-type{font-style:italic}#buddypress .dir-form{clear:both}#buddypress div#message{margin:0 0 15px}#buddypress #message.info{margin-bottom:0}#buddypress div#message.updated{clear:both;display:block}#buddypress div#message p,#sitewide-notice p,#sitewide-notice strong:first-child{font-size:90%;display:block;padding:10px 15px}#buddypress div#message.error p{background-color:#fdc;border:1px solid #a00;clear:right;color:#800}#buddypress div#message.warning p{background-color:#ffe0af;border:1px solid #ffd087;clear:right;color:#800}#buddypress div#message.updated p{background-color:#efc;border:1px solid #591;color:#250}#buddypress #pass-strength-result{background-color:#eee;border-color:#ddd;border-style:solid;border-width:1px;display:none;margin:5px 0 5px 5px;padding:5px;text-align:center;width:150px}#buddypress .standard-form #basic-details-section #pass-strength-result{width:35%}#buddypress #pass-strength-result.bad,#buddypress #pass-strength-result.error{background-color:#ffb78c;border-color:#ff853c!important;display:block}#buddypress #pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;display:block}#buddypress #pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;display:block}#buddypress #pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;display:block}#buddypress .standard-form#signup_form div div.error{background:#faa;color:#a00;margin:0 0 10px;padding:6px;width:90%}#buddypress div.accept,#buddypress div.reject{float:right;margin-right:10px}#buddypress ul.button-nav li{float:right;margin:0 0 10px 10px;list-style:none}#buddypress ul.button-nav li.current a{font-weight:700}#sitewide-notice #message{right:2%;position:fixed;top:1em;width:96%;z-index:9999}#sitewide-notice.admin-bar-on #message{top:3.3em}#sitewide-notice strong{display:block;margin-bottom:-1em}body.create-blog #buddypress .error{background-color:#fdc;border:1px solid #a00;color:#800;padding:10px 15px}body.create-blog #buddypress .success{background-color:#efc;border:1px solid #591;color:#250;padding:10px 15px}#buddypress form fieldset{border:0;padding:0}#buddypress .dir-search input[type=search],#buddypress .dir-search input[type=text],#buddypress .groups-members-search input[type=search],#buddypress .groups-members-search input[type=text],#buddypress .standard-form input[type=color],#buddypress .standard-form input[type=date],#buddypress .standard-form input[type=datetime-local],#buddypress .standard-form input[type=datetime],#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=month],#buddypress .standard-form input[type=number],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=range],#buddypress .standard-form input[type=search],#buddypress .standard-form input[type=tel],#buddypress .standard-form input[type=text],#buddypress .standard-form input[type=time],#buddypress .standard-form input[type=url],#buddypress .standard-form input[type=week],#buddypress .standard-form select,#buddypress .standard-form textarea{border:1px solid #ccc;background:#fafafa;border-radius:0;color:#737373;font:inherit;font-size:100%;padding:6px}#buddypress .standard-form select{padding:3px}#buddypress .standard-form input[type=password]{margin-bottom:5px}#buddypress .standard-form label,#buddypress .standard-form legend,#buddypress .standard-form span.label{display:block;font-weight:700;margin:15px 0 5px;width:auto}#buddypress label.xprofile-field-label{display:inline}#buddypress .standard-form #invite-list label,#buddypress .standard-form p label{font-weight:400;margin:auto}#buddypress .standard-form .checkbox label,#buddypress .standard-form .radio label{color:#767676;font-size:100%;font-weight:400;margin:5px 0 0}#buddypress .standard-form .checkbox label input,#buddypress .standard-form .radio label input{margin-left:3px}#buddypress .standard-form#sidebar-login-form label{margin-top:5px}#buddypress .standard-form input[type=text]{width:75%}#buddypress .standard-form#sidebar-login-form input[type=password],#buddypress .standard-form#sidebar-login-form input[type=text]{padding:4px;width:95%}#buddypress .standard-form #basic-details-section input[type=password],#buddypress .standard-form #blog-details-section input#signup_blog_url{width:35%}#buddypress #commentform input[type=text],#buddypress #commentform textarea,#buddypress .form-allowed-tags,#buddypress .standard-form#signup_form input[type=text],#buddypress .standard-form#signup_form textarea{width:90%}#buddypress .standard-form#signup_form div.submit{float:left}#buddypress div#signup-avatar img{margin:0 0 10px 15px}#buddypress .standard-form textarea{width:75%;height:120px}#buddypress .standard-form textarea#message_content{height:200px}#buddypress .standard-form#send-reply textarea{width:97.5%}#buddypress .standard-form p.description{color:#767676;font-size:80%;margin:5px 0}#buddypress .standard-form div.submit{clear:both;padding:15px 0 0}#buddypress .standard-form p.submit{margin-bottom:0;padding:15px 0 0}#buddypress .standard-form div.submit input{margin-left:15px}#buddypress .standard-form div.radio ul{margin:10px 38px 15px 0;list-style:disc}#buddypress .standard-form div.radio ul li{margin-bottom:5px}#buddypress .standard-form a.clear-value{display:block;margin-top:5px;outline:0}#buddypress .standard-form #basic-details-section,#buddypress .standard-form #blog-details-section,#buddypress .standard-form #profile-details-section{float:right;width:48%}#buddypress .standard-form #profile-details-section{float:left}#buddypress #notifications-bulk-management,#buddypress .standard-form #blog-details-section{clear:right}body.no-js #buddypress #delete_inbox_messages,body.no-js #buddypress #delete_sentbox_messages,body.no-js #buddypress #message-type-select,body.no-js #buddypress #messages-bulk-management #select-all-messages,body.no-js #buddypress #notifications-bulk-management #select-all-notifications,body.no-js #buddypress label[for=message-type-select]{display:none}#buddypress .standard-form input:focus,#buddypress .standard-form select:focus,#buddypress .standard-form textarea:focus{background:#fafafa;color:#555}#buddypress form#send-invite-form{margin-top:20px}#buddypress div#invite-list{background:#f5f5f5;height:400px;margin:0 0 10px;overflow:auto;padding:5px;width:160px}#buddypress .comment-reply-link,#buddypress .generic-button a,#buddypress .standard-form button,#buddypress a.button,#buddypress input[type=button],#buddypress input[type=reset],#buddypress input[type=submit],#buddypress ul.button-nav li a,a.bp-title-button{background:#fff;border:1px solid #ccc;color:#767676;font-size:small;cursor:pointer;outline:0;padding:4px 10px;text-align:center;text-decoration:none}#buddypress .comment-reply-link:hover,#buddypress .standard-form button:hover,#buddypress a.button:focus,#buddypress a.button:hover,#buddypress div.generic-button a:hover,#buddypress input[type=button]:hover,#buddypress input[type=reset]:hover,#buddypress input[type=submit]:hover,#buddypress ul.button-nav li a:hover,#buddypress ul.button-nav li.current a{background:#ededed;border:1px solid #bbb;color:#555;outline:0;text-decoration:none}#buddypress form.standard-form .left-menu{float:right}#buddypress form.standard-form .left-menu #invite-list ul{margin:1%;list-style:none}#buddypress form.standard-form .left-menu #invite-list ul li{margin:0 1% 0 0}#buddypress form.standard-form .main-column{margin-right:190px}#buddypress form.standard-form .main-column ul#friend-list{clear:none;float:right}#buddypress form.standard-form .main-column ul#friend-list h3,#buddypress form.standard-form .main-column ul#friend-list h4{clear:none}#buddypress .wp-editor-wrap a.button,#buddypress .wp-editor-wrap button,#buddypress .wp-editor-wrap input[type=button],#buddypress .wp-editor-wrap input[type=reset],#buddypress .wp-editor-wrap input[type=submit]{padding:0 8px 1px}#buddypress form [disabled=disabled]{cursor:default;opacity:.4}fieldset.register-site{margin-top:1em}fieldset.create-site{margin-bottom:2em}fieldset.create-site legend{margin-bottom:1em}fieldset.create-site label{margin-left:3em}.bp-screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px;word-wrap:normal!important}.bp-screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;right:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#buddypress a.loading,#buddypress input.loading{-webkit-animation:loader-pulsate .5s infinite ease-in-out alternate;-moz-animation:loader-pulsate .5s infinite ease-in-out alternate;border-color:#aaa}#buddypress a.loading:hover,#buddypress input.loading:hover{color:#767676}#buddypress a.disabled,#buddypress button.disabled,#buddypress button.pending,#buddypress div.pending a,#buddypress input[type=button].disabled,#buddypress input[type=button].pending,#buddypress input[type=reset].disabled,#buddypress input[type=reset].pending,#buddypress input[type=submit].disabled,#buddypress input[type=submit].pending,#buddypress input[type=submit][disabled=disabled]{border-color:#eee;color:#bbb;cursor:default}#buddypress a.disabled:hover,#buddypress button.disabled:hover,#buddypress button.pending:hover,#buddypress div.pending a:hover,#buddypress input[type=button]:hover.disabled,#buddypress input[type=button]:hover.pending,#buddypress input[type=reset]:hover.disabled,#buddypress input[type=reset]:hover.pending,#buddypress input[type=submit]:hover.disabled,#buddypress input[type=submit]:hover.pending{border-color:#eee;color:#bbb}#buddypress ul#topic-post-list{margin:0;width:auto}#buddypress ul#topic-post-list li{padding:15px;position:relative}#buddypress ul#topic-post-list li.alt{background:#f5f5f5}#buddypress ul#topic-post-list li div.poster-meta{color:#767676;margin-bottom:10px}#buddypress ul#topic-post-list li div.post-content{margin-right:54px}#buddypress div.topic-tags{font-size:80%}#buddypress div.admin-links{color:#767676;font-size:80%;position:absolute;top:15px;left:25px}#buddypress div#topic-meta{margin:0;padding:5px 19px 30px;position:relative}#buddypress div#topic-meta div.admin-links{left:19px;top:-36px}#buddypress div#topic-meta h3{margin:5px 0}#buddypress div#new-topic-post{display:none;margin:20px 0 0;padding:1px 0 0}#buddypress table.forum,#buddypress table.messages-notices,#buddypress table.notifications,#buddypress table.notifications-settings,#buddypress table.profile-fields,#buddypress table.profile-settings,#buddypress table.wp-profile-fields{width:100%}#buddypress table.forum thead tr,#buddypress table.messages-notices thead tr,#buddypress table.notifications thead tr,#buddypress table.notifications-settings thead tr,#buddypress table.profile-fields thead tr,#buddypress table.profile-settings thead tr,#buddypress table.wp-profile-fields thead tr{background:#eaeaea}#buddypress table#message-threads{clear:both}#buddypress table.profile-fields{margin-bottom:20px}#buddypress table.profile-fields:last-child{margin-bottom:0}#buddypress table.profile-fields p{margin:0}#buddypress table.profile-fields p:last-child{margin-top:0}#buddypress table.forum tr td,#buddypress table.forum tr th,#buddypress table.messages-notices tr td,#buddypress table.messages-notices tr th,#buddypress table.notifications tr td,#buddypress table.notifications tr th,#buddypress table.notifications-settings tr td,#buddypress table.notifications-settings tr th,#buddypress table.profile-fields tr td,#buddypress table.profile-fields tr th,#buddypress table.profile-settings tr td,#buddypress table.wp-profile-fields tr td,#buddypress table.wp-profile-fields tr th{padding:8px;vertical-align:middle}#buddypress table.forum tr td.label,#buddypress table.messages-notices tr td.label,#buddypress table.notifications tr td.label,#buddypress table.notifications-settings tr td.label,#buddypress table.profile-fields tr td.label,#buddypress table.wp-profile-fields tr td.label{border-left:1px solid #eaeaea;font-weight:700;width:25%}#buddypress #message-threads .thread-info{min-width:40%}#buddypress table tr td.thread-info p{margin:0}#buddypress table tr td.thread-info p.thread-excerpt{color:#767676;font-size:80%;margin-top:3px}#buddypress table.forum td{text-align:center}#buddypress table.forum tr.alt td,#buddypress table.messages-notices tr.alt td,#buddypress table.notifications tr.alt td,#buddypress table.notifications-settings tr.alt td,#buddypress table.profile-fields tr.alt td,#buddypress table.profile-settings tr.alt td,#buddypress table.wp-profile-fields tr.alt td{background:#f5f5f5;color:#707070}#buddypress table.notification-settings{margin-bottom:20px;text-align:right}#buddypress #groups-notification-settings{margin-bottom:0}#buddypress table.notification-settings td:first-child,#buddypress table.notification-settings th.icon,#buddypress table.notifications td:first-child,#buddypress table.notifications th.icon{display:none}#buddypress table.notification-settings th.title,#buddypress table.profile-settings th.title{width:80%}#buddypress table.notification-settings .no,#buddypress table.notification-settings .yes{text-align:center;width:40px}#buddypress table.forum{margin:0;width:auto;clear:both}#buddypress table.forum tr.sticky td{font-size:110%;background:#fff9db;border-top:1px solid #ffe8c4;border-bottom:1px solid #ffe8c4}#buddypress table.forum tr.closed td.td-title{padding-right:35px}#buddypress table.forum td p.topic-text{color:#767676;font-size:100%}#buddypress table.forum tr>td:first-child,#buddypress table.forum tr>th:first-child{padding-right:15px}#buddypress table.forum tr>td:last-child,#buddypress table.forum tr>th:last-child{padding-left:15px}#buddypress table.forum td.td-group,#buddypress table.forum td.td-poster,#buddypress table.forum td.td-title,#buddypress table.forum tr th#th-group,#buddypress table.forum tr th#th-poster,#buddypress table.forum tr th#th-title{text-align:right}#buddypress table.forum tr td.td-title a.topic-title{font-size:110%}#buddypress table.forum td.td-freshness{white-space:nowrap}#buddypress table.forum td.td-freshness span.time-since{font-size:80%;color:#767676}#buddypress table.forum td img.avatar{float:none;margin:0 0 -8px 5px}#buddypress table.forum td.td-group,#buddypress table.forum td.td-poster{min-width:140px}#buddypress table.forum th#th-title{width:80%}#buddypress table.forum th#th-freshness{width:25%}#buddypress table.forum th#th-postcount{width:15%}#buddypress table.forum p.topic-meta{font-size:80%;margin:5px 0 0}#buddypress .item-body{margin:20px 0}#buddypress span.activity{display:inline-block;font-size:small;padding:0}#buddypress span.user-nicename{color:#767676;display:inline-block;font-size:120%;font-weight:700}#sitewide-notice,.bp-site-wide-message{position:relative}#buddypress div#message p,#sitewide-notice #message{background-color:#ffd;border:1px solid #cb2;color:#440;font-weight:400;margin-top:3px;text-decoration:none}.admin-bar-on #message p,.bp-site-wide-message #message p{padding-left:25px}.admin-bar-on #message button,.bp-site-wide-message #message button{font-size:.8em;padding:2px 4px;position:absolute;left:0;top:0}.admin-bar-on #message button{left:10px;top:7px}#buddypress #item-header:after{clear:both;content:"";display:table}#buddypress div#item-header div#item-header-content{float:right;margin-right:0}#buddypress div#item-header h2{line-height:1.2;margin:0 0 15px}#buddypress div#item-header h2 a{color:#767676;text-decoration:none}#buddypress div#item-header img.avatar{float:right;margin:0 0 19px 15px}#buddypress div#item-header h2{margin-bottom:5px}#buddypress div#item-header h2 span.highlight{font-size:60%;font-weight:400;line-height:1.7;vertical-align:middle;display:inline-block}#buddypress div#item-header h2 span.highlight span{background:#a1dcfa;color:#fff;cursor:pointer;font-weight:700;font-size:80%;margin-bottom:2px;padding:1px 4px;position:relative;left:-2px;top:-2px;vertical-align:middle}#buddypress div#item-header div#item-meta{font-size:80%;color:#767676;overflow:hidden;margin:15px 0 5px;padding-bottom:10px}#buddypress div#item-header div#item-actions{float:left;margin:0 15px 15px 0;text-align:left;width:20%}#buddypress div#item-header div#item-actions h2,#buddypress div#item-header div#item-actions h3{margin:0 0 5px}#buddypress div#item-header div#item-actions a{display:inline-block}#buddypress div#item-header ul{margin-bottom:15px}#buddypress div#item-header ul:after{clear:both;content:"";display:table}#buddypress div#item-header ul h5,#buddypress div#item-header ul hr,#buddypress div#item-header ul span{display:none}#buddypress div#item-header ul li{float:left;list-style:none}#buddypress div#item-header ul img.avatar,#buddypress div#item-header ul.avatars img.avatar{height:30px;margin:2px;width:30px}#buddypress div#item-header a.button,#buddypress div#item-header div.generic-button{float:right;margin:10px 0 0 10px}body.no-js #buddypress div#item-header .js-self-profile-button{display:none}#buddypress div#item-header div#message.info{line-height:.8}#buddypress ul.item-list{border-top:1px solid #eaeaea;width:100%;list-style:none;clear:both;margin:0;padding:0}body.activity-permalink #buddypress ul.item-list,body.activity-permalink #buddypress ul.item-list li.activity-item{border:none}#buddypress ul.item-list li{border-bottom:1px solid #eaeaea;padding:15px 0;margin:0;position:relative;list-style:none}#buddypress ul.single-line li{border:none}#buddypress ul.item-list li img.avatar{float:right;margin:0 0 0 10px}#buddypress ul.item-list li div.item-title,#buddypress ul.item-list li h3,#buddypress ul.item-list li h4{font-weight:400;font-size:90%;margin:0;width:75%}#buddypress ul.item-list li div.item-title span{color:#767676;font-size:80%}#buddypress ul.item-list li div.item-desc{color:#767676;font-size:80%;margin:10px 60px 0 0;width:50%}#buddypress ul.item-list li.group-no-avatar div.item-desc{margin-right:0}#buddypress ul.item-list li div.action{position:absolute;top:15px;left:0;text-align:left}#buddypress ul.item-list li div.meta{color:#767676;font-size:80%;margin-top:10px}#buddypress ul.item-list li h5 span.small{float:left;font-size:80%;font-weight:400}#buddypress div.item-list-tabs{background:0 0;clear:right;overflow:hidden}#buddypress div.item-list-tabs ul{margin:0;padding:0}#buddypress div.item-list-tabs ul li{float:right;margin:0;list-style:none}#buddypress div.item-list-tabs#subnav ul li{margin-top:0}#buddypress div.item-list-tabs ul li.last{float:left;margin:7px 0 0}#buddypress div.item-list-tabs#subnav ul li.last{margin-top:4px}#buddypress div.item-list-tabs ul li.last select{max-width:185px}#buddypress div.item-list-tabs ul li a,#buddypress div.item-list-tabs ul li span{display:block;padding:5px 10px;text-decoration:none}#buddypress div.item-list-tabs ul li a span{background:#eee;border-radius:50%;border:1px solid #ccc;color:#6c6c6c;display:inline;font-size:70%;margin-right:2px;padding:3px 6px;text-align:center;vertical-align:middle}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background-color:#eee;color:#555;opacity:.9;font-weight:700}#buddypress div.item-list-tabs ul li a:hover span,#buddypress div.item-list-tabs ul li.current a span,#buddypress div.item-list-tabs ul li.selected a span{background-color:#eee}#buddypress div.item-list-tabs ul li.current a span,#buddypress div.item-list-tabs ul li.selected a span{background-color:#fff}#buddypress div#item-nav ul li.loading a{background-position:12% 50%}#buddypress div.item-list-tabs#object-nav{margin-top:0}#buddypress div.item-list-tabs#subnav{background:0 0;margin:10px 0;overflow:hidden}#buddypress #admins-list li,#buddypress #members-list li,#buddypress #mods-list li{overflow:auto;list-style:none}#buddypress .group-members-list{width:100%;margin-top:1em;clear:both;overflow:auto}#buddypress #item-buttons:empty{display:none}#buddypress #cover-image-container{position:relative;z-index:0}#buddypress #header-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;right:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1}#buddypress #item-header-cover-image{padding:0 1em;position:relative;z-index:2}#buddypress table#message-threads tr.unread td{background:#fff9db;border-top:1px solid #ffe8c4;border-bottom:1px solid #ffe8c4;font-weight:700}#buddypress table#message-threads tr.unread td .activity,#buddypress table#message-threads tr.unread td .thread-excerpt,#buddypress table#message-threads tr.unread td.thread-options{font-weight:400}#buddypress li span.unread-count,#buddypress tr.unread span.unread-count{background:#d00;color:#fff;font-weight:700;padding:2px 8px}#buddypress div.item-list-tabs ul li a span.unread-count{padding:1px 6px;color:#fff}#buddypress div#message-thread div.message-box{margin:0;padding:15px}#buddypress div#message-thread div.alt{background:#f4f4f4}#buddypress div#message-thread p#message-recipients{margin:10px 0 20px}#buddypress div#message-thread img.avatar{float:right;margin:0 0 0 10px;vertical-align:middle}#buddypress div#message-thread strong{font-size:100%;margin:0}#buddypress div#message-thread strong a{text-decoration:none}#buddypress div#message-thread strong span.activity{margin-top:4px}#buddypress div#message-thread div.message-metadata:after{clear:both;content:"";display:table}#buddypress div#message-thread div.message-content{margin-right:45px}#buddypress div#message-thread div.message-options{text-align:left}#buddypress #message-threads img.avatar{max-width:none}#buddypress div.message-search{float:left;margin:0 20px}.message-metadata{position:relative}.message-star-actions{position:absolute;left:0;top:0}#buddypress a.message-action-star,#buddypress a.message-action-unstar{border-bottom:0;text-decoration:none;outline:0}a.message-action-star{opacity:.7}a.message-action-star:hover{opacity:1}.message-action-star span.icon:before,.message-action-unstar span.icon:before{font-family:dashicons;font-size:18px}.message-action-star span.icon:before{color:#767676;content:"\f154"}.message-action-unstar span.icon:before{color:#fcdd77;content:"\f155"}#buddypress div.profile h2{margin-bottom:auto;margin-top:15px}#buddypress #profile-edit-form ul.button-nav{margin-top:15px}body.no-js #buddypress .field-visibility-settings-close,body.no-js #buddypress .field-visibility-settings-toggle{display:none}#buddypress .field-visibility-settings{display:none;margin-top:10px}body.no-js #buddypress .field-visibility-settings{display:block}#buddypress .current-visibility-level{font-weight:700;font-style:normal}#buddypress .field-visibility-settings,#buddypress .field-visibility-settings-notoggle,#buddypress .field-visibility-settings-toggle{color:#707070}#buddypress .field-visibility-settings a,#buddypress .field-visibility-settings-toggle a{font-size:80%}body.register #buddypress div.page ul{list-style:none}#buddypress .standard-form .field-visibility-settings label{margin:0;font-weight:400}#buddypress .field-visibility-settings legend,#buddypress .field-visibility-settings-toggle{font-style:italic}#buddypress .field-visibility-settings .radio{list-style:none;margin-bottom:0}#buddypress .field-visibility select{margin:0}#buddypress .wp-editor-container{border:1px solid #dedede}#buddypress .html-active button.switch-html{border-bottom-color:transparent;border-bottom-right-radius:0;border-bottom-left-radius:0;background:#f5f5f5;color:#707070}#buddypress .tmce-active button.switch-tmce{border-bottom-color:transparent;border-bottom-right-radius:0;border-bottom-left-radius:0;background:#f5f5f5;color:#707070}#buddypress .standard-form .wp-editor-container textarea{width:100%;padding-top:0;padding-bottom:0}.widget.buddypress span.activity{display:inline-block;font-size:small;padding:0}.widget.buddypress div.item-options{font-size:90%;margin:0 0 1em;padding:1em 0}.widget.buddypress div.item{margin:0 0 1em}.widget.buddypress div.item-content,.widget.buddypress div.item-meta{font-size:11px;margin-right:50px}.widget.buddypress div.avatar-block:after{clear:both;content:"";display:table}.widget.buddypress .item-avatar a{float:right;margin-bottom:15px;margin-left:10px}.widget.buddypress div.item-avatar img{display:inline-block;height:40px;margin:1px;width:40px}.widget.buddypress .item-avatar a,.widget.buddypress .item-avatar a img,.widget.buddypress .item-avatar a:active,.widget.buddypress .item-avatar a:focus,.widget.buddypress .item-avatar a:hover{box-shadow:none}.widget.buddypress #bp-login-widget-form label{display:block;margin:1rem 0 .5rem}.widget.buddypress #bp-login-widget-form #bp-login-widget-submit{margin-left:10px}.widget.buddypress .bp-login-widget-user-avatar{float:right}.bp-login-widget-user-avatar img.avatar{height:40px;width:40px}.widget.buddypress .bp-login-widget-user-links>div{padding-right:60px}.widget.buddypress .bp-login-widget-user-links>div{margin-bottom:.5rem}.widget.buddypress .bp-login-widget-user-links>div.bp-login-widget-user-link a{font-weight:700}.widget.buddypress #friends-list,.widget.buddypress #groups-list,.widget.buddypress #members-list{margin-right:0;padding-right:0}.widget.buddypress #friends-list li,.widget.buddypress #groups-list li,.widget.buddypress #members-list li{clear:both;list-style-type:none}.buddypress .bp-tooltip{position:relative}.bp-tooltip:after{background:#fff;border:1px solid #aaa;border-collapse:separate;border-radius:1px;box-shadow:-1px 1px 0 1px rgba(132,132,132,.3);color:#000;content:attr(data-bp-tooltip);display:none;font-family:sans-serif;font-size:11px;font-weight:400;letter-spacing:normal;line-height:1.5;margin-top:10px;max-width:240px;opacity:0;padding:3px 6px;position:absolute;left:50%;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;top:100%;transform:translateX(-50%);transition:opacity 2s ease-out;white-space:pre;word-wrap:break-word;z-index:998}.bp-tooltip:active:after,.bp-tooltip:focus:after,.bp-tooltip:hover:after{display:inline-block;opacity:1;overflow:visible;text-decoration:none;z-index:999}#group-admins .bp-tooltip:after,#group-mods .bp-tooltip:after,.message-metadata .bp-tooltip:after{left:0;text-align:left;transform:translateX(0)}.feed .bp-tooltip:after,.item-list .bp-tooltip:after,.messages-notices .bp-tooltip:after{right:0;left:auto;text-align:right;transform:translateX(0)}.admin-bar-on .bp-tooltip:after,.bp-site-wide-message .bp-tooltip:after{left:50px}@media only screen and (max-width:480px){#buddypress div.dir-search{float:left;margin-top:-50px;text-align:left}#buddypress div.dir-search input[type=text]{margin-bottom:1em;width:50%}a.bp-title-button{margin-right:10px}#buddypress form.standard-form .main-column div.action{position:relative;margin-bottom:1em}#buddypress form.standard-form .main-column ul#friend-list h3,#buddypress form.standard-form .main-column ul#friend-list h4{width:100%}}@media only screen and (max-width:320px){#buddypress div.dir-search{clear:right;float:right;margin-top:0;text-align:right}#buddypress li#groups-order-select{clear:right;float:right}#buddypress ul.item-list li div.action{clear:right;float:right;margin-top:0;margin-right:70px;position:relative;top:0;left:0;text-align:right}#buddypress ul.item-list li div.item-desc{clear:right;float:right;margin:10px 0 0;width:auto}#buddypress li div.item{margin-right:70px;width:auto}#buddypress ul.item-list li div.meta{margin-top:0}#buddypress .item-desc p{margin:0 0 10px}#buddypress div.pagination .pag-count{margin-right:0}}@media only screen and (max-width:240px){#buddypress div.dir-search{float:right;margin:0}#buddypress div.dir-search input[type=text]{width:50%}#buddypress li#groups-order-select{float:right}#buddypress ul.item-list li img.avatar{width:30px;height:auto}#buddypress li div.item,#buddypress ul.item-list li div.action{margin-right:45px}h1 a.bp-title-button{clear:right;float:right;margin:10px 0 20px}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress.css index 8bdcffacfd418648f1702a76d63b829e8103c3b9..32d669fe913cfa80e23bef4dd7fbfa9565c0f14f 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress.css @@ -733,6 +733,20 @@ body.activity-permalink #buddypress div.activity-comments div.acomment-content { margin-bottom: -1em; } +body.create-blog #buddypress .error { + background-color: #fdc; + border: 1px solid #a00; + color: #800; + padding: 10px 15px; +} + +body.create-blog #buddypress .success { + background-color: #efc; + border: 1px solid #591; + color: #250; + padding: 10px 15px; +} + /*-------------------------------------------------------------- 3.5 - Forms --------------------------------------------------------------*/ diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress.min.css index 3f76a5035f5af36963262175c634727fe4cdf058..ce86c031092bdd8a9c450b2b0bb5605444bb4847 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress.min.css @@ -1 +1 @@ -#buddypress div.pagination{background:0 0;border:none;color:#767676;font-size:small;margin:0;position:relative;display:block;float:left;width:100%;padding:10px 0}#buddypress div.pagination .pag-count{float:left;margin-left:10px}#buddypress div.pagination .pagination-links{float:right;margin-right:10px}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{font-size:90%;padding:0 5px}#buddypress div.pagination .pagination-links a:hover{font-weight:700}#buddypress noscript div.pagination{margin-bottom:15px}#buddypress #nav-above{display:none}#buddypress .paged #nav-above{display:block}#buddypress img.wp-smiley{border:none!important;clear:none!important;float:none!important;margin:0!important;padding:0!important}#buddypress .clear{clear:left}#buddypress #activity-stream{margin-top:-5px}#buddypress #activity-stream p{margin:5px 0}#buddypress #item-body form#whats-new-form{margin:0;padding:0}#buddypress .home-page form#whats-new-form{border-bottom:none;padding-bottom:0}#buddypress form#whats-new-form #whats-new-avatar{float:left}#buddypress form#whats-new-form #whats-new-content{margin-left:55px;padding:0 0 20px 20px}#buddypress form#whats-new-form p.activity-greeting{line-height:.5;margin-bottom:15px;margin-left:75px}#buddypress form#whats-new-form textarea{background:#fff;box-sizing:border-box;color:#555;font-family:inherit;font-size:medium;height:2.2em;line-height:1.4;padding:6px;width:100%}body.no-js #buddypress form#whats-new-form textarea{height:50px}#buddypress form#whats-new-form #whats-new-options select{max-width:200px;margin-top:12px}#buddypress form#whats-new-form #whats-new-submit{float:right;margin-top:12px}#buddypress #whats-new-options:after{clear:both;content:"";display:table}body.no-js #buddypress #whats-new-options{height:auto}#buddypress #whats-new:focus{border-color:rgba(31,179,221,.9)!important;outline-color:rgba(31,179,221,.9)}#buddypress ul.activity-list li{overflow:hidden;padding:15px 0 0;list-style:none}#buddypress .activity-list .activity-avatar{float:left}#buddypress ul.item-list.activity-list li.has-comments{padding-bottom:15px}body.activity-permalink #buddypress ul.activity-list li.has-comments{padding-bottom:0}#buddypress .activity-list li.mini{font-size:80%;position:relative}#buddypress .activity-list li.mini .activity-avatar img.FB_profile_pic,#buddypress .activity-list li.mini .activity-avatar img.avatar{height:20px;margin-left:30px;width:20px}#buddypress .activity-permalink .activity-list li.mini .activity-avatar img.FB_profile_pic,#buddypress .activity-permalink .activity-list li.mini .activity-avatar img.avatar{height:auto;margin-left:0;width:auto}body.activity-permalink #buddypress .activity-list>li:first-child{padding-top:0}#buddypress .activity-list li .activity-content{position:relative}#buddypress .activity-list li.mini .activity-content p{margin:0}#buddypress .activity-list li.mini .activity-comments{clear:both;font-size:120%}body.activity-permalink #buddypress li.mini .activity-meta{margin-top:4px}#buddypress .activity-list li .activity-inreplyto{color:#767676;font-size:80%}#buddypress .activity-list li .activity-inreplyto>p{margin:0;display:inline}#buddypress .activity-list li .activity-inreplyto blockquote,#buddypress .activity-list li .activity-inreplyto div.activity-inner{background:0 0;border:none;display:inline;margin:0;overflow:hidden;padding:0}#buddypress .activity-list .activity-content{margin:0 0 0 70px}body.activity-permalink #buddypress .activity-list li .activity-content{border:none;font-size:100%;line-height:1.5;margin-left:170px;margin-right:0;padding:0}body.activity-permalink #buddypress .activity-list li .activity-header>p{margin:0;padding:5px 0 0}#buddypress .activity-list .activity-content .activity-header,#buddypress .activity-list .activity-content .comment-header{color:#767676;line-height:2.2}#buddypress .activity-header{margin-right:20px}#buddypress .acomment-meta a,#buddypress .activity-header a,#buddypress .comment-meta a{text-decoration:none}#buddypress .activity-list .activity-content .activity-header img.avatar{float:none!important;margin:0 5px -8px 0!important}#buddypress a.bp-secondary-action,#buddypress span.highlight{font-size:80%;padding:0;margin-right:5px;text-decoration:none}#buddypress .activity-list .activity-content .activity-inner,#buddypress .activity-list .activity-content blockquote{margin:10px 10px 5px 0;overflow:hidden}#buddypress .activity-list li.new_forum_post .activity-content .activity-inner,#buddypress .activity-list li.new_forum_topic .activity-content .activity-inner{border-left:2px solid #eaeaea;margin-left:5px;padding-left:10px}body.activity-permalink #buddypress .activity-content .activity-inner,body.activity-permalink #buddypress .activity-content blockquote{margin-left:0;margin-top:5px}#buddypress .activity-inner>p{word-wrap:break-word}#buddypress .activity-inner>.activity-inner{margin:0}#buddypress .activity-inner>blockquote{margin:0}#buddypress .activity-list .activity-content img.thumbnail{border:2px solid #eee;float:left;margin:0 10px 5px 0}#buddypress .activity-read-more{margin-left:1em;white-space:nowrap}#buddypress .activity-list li.load-more,#buddypress .activity-list li.load-newest{background:#f0f0f0;font-size:110%;margin:15px 0;padding:10px 15px;text-align:center}#buddypress .activity-list li.load-more a,#buddypress .activity-list li.load-newest a{color:#4d4d4d}#buddypress div.activity-meta{margin:18px 0 0}body.activity-permalink #buddypress div.activity-meta{margin-bottom:6px}#buddypress div.activity-meta a{padding:4px 8px}#buddypress a.activity-time-since{color:#767676;text-decoration:none}#buddypress a.activity-time-since:hover{color:#767676;text-decoration:underline}#buddypress #reply-title small a,#buddypress a.bp-primary-action{font-size:80%;margin-right:5px;text-decoration:none}#buddypress #reply-title small a span,#buddypress a.bp-primary-action span{background:#767676;color:#fff;font-size:90%;margin-left:2px;padding:0 5px}#buddypress #reply-title small a:hover span,#buddypress a.bp-primary-action:hover span{background:#555;color:#fff}#buddypress div.activity-comments{margin:0 0 0 70px;overflow:hidden;position:relative;width:auto;clear:both}body.activity-permalink #buddypress div.activity-comments{background:0 0;margin-left:170px;width:auto}#buddypress div.activity-comments>ul{padding:0 0 0 10px}#buddypress div.activity-comments ul,#buddypress div.activity-comments ul li{border:none;list-style:none}#buddypress div.activity-comments ul{clear:both;margin:0}#buddypress div.activity-comments ul li{border-top:1px solid #eee;padding:10px 0 0}body.activity-permalink #buddypress .activity-list li.mini .activity-comments{clear:none;margin-top:0}body.activity-permalink #buddypress div.activity-comments ul li{border-width:1px;padding:10px 0 0}#buddypress div.activity-comments>ul>li:first-child{border-top:none}#buddypress div.activity-comments ul li:last-child{margin-bottom:0}#buddypress div.activity-comments ul li>ul{margin-left:30px;margin-top:0;padding-left:10px}body.activity-permalink #buddypress div.activity-comments ul li>ul{margin-top:10px}body.activity-permalink #buddypress div.activity-comments>ul{padding:0 10px 0 15px}#buddypress div.activity-comments div.acomment-avatar img{border-width:1px;float:left;height:25px;margin-right:10px;width:25px}#buddypress div.activity-comments div.acomment-content{font-size:80%;margin:5px 0 0 40px}#buddypress div.acomment-content .activity-delete-link,#buddypress div.acomment-content .comment-header,#buddypress div.acomment-content .time-since{display:none}body.activity-permalink #buddypress div.activity-comments div.acomment-content{font-size:90%}#buddypress div.activity-comments div.acomment-meta{color:#767676;font-size:80%}#buddypress div.activity-comments form.ac-form{display:none;padding:10px}#buddypress div.activity-comments li form.ac-form{margin-right:15px;clear:both}#buddypress div.activity-comments form.root{margin-left:0}#buddypress div.activity-comments div#message{margin-top:15px;margin-bottom:0}#buddypress div.activity-comments form .ac-textarea{background:#fff;border:1px inset #ccc;margin-bottom:10px;padding:8px}#buddypress div.activity-comments form textarea{border:none;background:0 0;box-shadow:none;outline:0;color:#555;font-family:inherit;font-size:100%;height:60px;padding:0;margin:0;width:100%}#buddypress div.activity-comments form input{margin-top:5px}#buddypress div.activity-comments form div.ac-reply-avatar{float:left}#buddypress div.ac-reply-avatar img{border:1px solid #eee}#buddypress div.activity-comments form div.ac-reply-content{color:#767676;margin-left:50px;padding-left:15px}#buddypress div.activity-comments form div.ac-reply-content a{text-decoration:none}#buddypress .acomment-options{float:left;margin:5px 0 5px 40px}#buddypress .acomment-options a{color:#767676}#buddypress .acomment-options a:hover{color:inherit}#buddypress div.dir-search{float:right;margin:-39px 0 0 0}#buddypress div.dir-search input[type=text],#buddypress li.groups-members-search input[type=text]{font-size:90%;padding:1px 3px}#buddypress .current-member-type{font-style:italic}#buddypress .dir-form{clear:both}#buddypress div#message{margin:0 0 15px}#buddypress #message.info{margin-bottom:0}#buddypress div#message.updated{clear:both;display:block}#buddypress div#message p,#sitewide-notice p,#sitewide-notice strong:first-child{font-size:90%;display:block;padding:10px 15px}#buddypress div#message.error p{background-color:#fdc;border:1px solid #a00;clear:left;color:#800}#buddypress div#message.warning p{background-color:#ffe0af;border:1px solid #ffd087;clear:left;color:#800}#buddypress div#message.updated p{background-color:#efc;border:1px solid #591;color:#250}#buddypress #pass-strength-result{background-color:#eee;border-color:#ddd;border-style:solid;border-width:1px;display:none;margin:5px 5px 5px 0;padding:5px;text-align:center;width:150px}#buddypress .standard-form #basic-details-section #pass-strength-result{width:35%}#buddypress #pass-strength-result.bad,#buddypress #pass-strength-result.error{background-color:#ffb78c;border-color:#ff853c!important;display:block}#buddypress #pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;display:block}#buddypress #pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;display:block}#buddypress #pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;display:block}#buddypress .standard-form#signup_form div div.error{background:#faa;color:#a00;margin:0 0 10px;padding:6px;width:90%}#buddypress div.accept,#buddypress div.reject{float:left;margin-left:10px}#buddypress ul.button-nav li{float:left;margin:0 10px 10px 0;list-style:none}#buddypress ul.button-nav li.current a{font-weight:700}#sitewide-notice #message{left:2%;position:fixed;top:1em;width:96%;z-index:9999}#sitewide-notice.admin-bar-on #message{top:3.3em}#sitewide-notice strong{display:block;margin-bottom:-1em}#buddypress form fieldset{border:0;padding:0}#buddypress .dir-search input[type=search],#buddypress .dir-search input[type=text],#buddypress .groups-members-search input[type=search],#buddypress .groups-members-search input[type=text],#buddypress .standard-form input[type=color],#buddypress .standard-form input[type=date],#buddypress .standard-form input[type=datetime-local],#buddypress .standard-form input[type=datetime],#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=month],#buddypress .standard-form input[type=number],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=range],#buddypress .standard-form input[type=search],#buddypress .standard-form input[type=tel],#buddypress .standard-form input[type=text],#buddypress .standard-form input[type=time],#buddypress .standard-form input[type=url],#buddypress .standard-form input[type=week],#buddypress .standard-form select,#buddypress .standard-form textarea{border:1px solid #ccc;background:#fafafa;border-radius:0;color:#737373;font:inherit;font-size:100%;padding:6px}#buddypress .standard-form select{padding:3px}#buddypress .standard-form input[type=password]{margin-bottom:5px}#buddypress .standard-form label,#buddypress .standard-form legend,#buddypress .standard-form span.label{display:block;font-weight:700;margin:15px 0 5px;width:auto}#buddypress label.xprofile-field-label{display:inline}#buddypress .standard-form #invite-list label,#buddypress .standard-form p label{font-weight:400;margin:auto}#buddypress .standard-form .checkbox label,#buddypress .standard-form .radio label{color:#767676;font-size:100%;font-weight:400;margin:5px 0 0}#buddypress .standard-form .checkbox label input,#buddypress .standard-form .radio label input{margin-right:3px}#buddypress .standard-form#sidebar-login-form label{margin-top:5px}#buddypress .standard-form input[type=text]{width:75%}#buddypress .standard-form#sidebar-login-form input[type=password],#buddypress .standard-form#sidebar-login-form input[type=text]{padding:4px;width:95%}#buddypress .standard-form #basic-details-section input[type=password],#buddypress .standard-form #blog-details-section input#signup_blog_url{width:35%}#buddypress #commentform input[type=text],#buddypress #commentform textarea,#buddypress .form-allowed-tags,#buddypress .standard-form#signup_form input[type=text],#buddypress .standard-form#signup_form textarea{width:90%}#buddypress .standard-form#signup_form div.submit{float:right}#buddypress div#signup-avatar img{margin:0 15px 10px 0}#buddypress .standard-form textarea{width:75%;height:120px}#buddypress .standard-form textarea#message_content{height:200px}#buddypress .standard-form#send-reply textarea{width:97.5%}#buddypress .standard-form p.description{color:#767676;font-size:80%;margin:5px 0}#buddypress .standard-form div.submit{clear:both;padding:15px 0 0}#buddypress .standard-form p.submit{margin-bottom:0;padding:15px 0 0}#buddypress .standard-form div.submit input{margin-right:15px}#buddypress .standard-form div.radio ul{margin:10px 0 15px 38px;list-style:disc}#buddypress .standard-form div.radio ul li{margin-bottom:5px}#buddypress .standard-form a.clear-value{display:block;margin-top:5px;outline:0}#buddypress .standard-form #basic-details-section,#buddypress .standard-form #blog-details-section,#buddypress .standard-form #profile-details-section{float:left;width:48%}#buddypress .standard-form #profile-details-section{float:right}#buddypress #notifications-bulk-management,#buddypress .standard-form #blog-details-section{clear:left}body.no-js #buddypress #delete_inbox_messages,body.no-js #buddypress #delete_sentbox_messages,body.no-js #buddypress #message-type-select,body.no-js #buddypress #messages-bulk-management #select-all-messages,body.no-js #buddypress #notifications-bulk-management #select-all-notifications,body.no-js #buddypress label[for=message-type-select]{display:none}#buddypress .standard-form input:focus,#buddypress .standard-form select:focus,#buddypress .standard-form textarea:focus{background:#fafafa;color:#555}#buddypress form#send-invite-form{margin-top:20px}#buddypress div#invite-list{background:#f5f5f5;height:400px;margin:0 0 10px;overflow:auto;padding:5px;width:160px}#buddypress .comment-reply-link,#buddypress .generic-button a,#buddypress .standard-form button,#buddypress a.button,#buddypress input[type=button],#buddypress input[type=reset],#buddypress input[type=submit],#buddypress ul.button-nav li a,a.bp-title-button{background:#fff;border:1px solid #ccc;color:#767676;font-size:small;cursor:pointer;outline:0;padding:4px 10px;text-align:center;text-decoration:none}#buddypress .comment-reply-link:hover,#buddypress .standard-form button:hover,#buddypress a.button:focus,#buddypress a.button:hover,#buddypress div.generic-button a:hover,#buddypress input[type=button]:hover,#buddypress input[type=reset]:hover,#buddypress input[type=submit]:hover,#buddypress ul.button-nav li a:hover,#buddypress ul.button-nav li.current a{background:#ededed;border:1px solid #bbb;color:#555;outline:0;text-decoration:none}#buddypress form.standard-form .left-menu{float:left}#buddypress form.standard-form .left-menu #invite-list ul{margin:1%;list-style:none}#buddypress form.standard-form .left-menu #invite-list ul li{margin:0 0 0 1%}#buddypress form.standard-form .main-column{margin-left:190px}#buddypress form.standard-form .main-column ul#friend-list{clear:none;float:left}#buddypress form.standard-form .main-column ul#friend-list h3,#buddypress form.standard-form .main-column ul#friend-list h4{clear:none}#buddypress .wp-editor-wrap a.button,#buddypress .wp-editor-wrap button,#buddypress .wp-editor-wrap input[type=button],#buddypress .wp-editor-wrap input[type=reset],#buddypress .wp-editor-wrap input[type=submit]{padding:0 8px 1px}#buddypress form [disabled=disabled]{cursor:default;opacity:.4}fieldset.register-site{margin-top:1em}fieldset.create-site{margin-bottom:2em}fieldset.create-site legend{margin-bottom:1em}fieldset.create-site label{margin-right:3em}.bp-screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px;word-wrap:normal!important}.bp-screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#buddypress a.loading,#buddypress input.loading{-webkit-animation:loader-pulsate .5s infinite ease-in-out alternate;-moz-animation:loader-pulsate .5s infinite ease-in-out alternate;border-color:#aaa}#buddypress a.loading:hover,#buddypress input.loading:hover{color:#767676}#buddypress a.disabled,#buddypress button.disabled,#buddypress button.pending,#buddypress div.pending a,#buddypress input[type=button].disabled,#buddypress input[type=button].pending,#buddypress input[type=reset].disabled,#buddypress input[type=reset].pending,#buddypress input[type=submit].disabled,#buddypress input[type=submit].pending,#buddypress input[type=submit][disabled=disabled]{border-color:#eee;color:#bbb;cursor:default}#buddypress a.disabled:hover,#buddypress button.disabled:hover,#buddypress button.pending:hover,#buddypress div.pending a:hover,#buddypress input[type=button]:hover.disabled,#buddypress input[type=button]:hover.pending,#buddypress input[type=reset]:hover.disabled,#buddypress input[type=reset]:hover.pending,#buddypress input[type=submit]:hover.disabled,#buddypress input[type=submit]:hover.pending{border-color:#eee;color:#bbb}#buddypress ul#topic-post-list{margin:0;width:auto}#buddypress ul#topic-post-list li{padding:15px;position:relative}#buddypress ul#topic-post-list li.alt{background:#f5f5f5}#buddypress ul#topic-post-list li div.poster-meta{color:#767676;margin-bottom:10px}#buddypress ul#topic-post-list li div.post-content{margin-left:54px}#buddypress div.topic-tags{font-size:80%}#buddypress div.admin-links{color:#767676;font-size:80%;position:absolute;top:15px;right:25px}#buddypress div#topic-meta{margin:0;padding:5px 19px 30px;position:relative}#buddypress div#topic-meta div.admin-links{right:19px;top:-36px}#buddypress div#topic-meta h3{margin:5px 0}#buddypress div#new-topic-post{display:none;margin:20px 0 0;padding:1px 0 0}#buddypress table.forum,#buddypress table.messages-notices,#buddypress table.notifications,#buddypress table.notifications-settings,#buddypress table.profile-fields,#buddypress table.profile-settings,#buddypress table.wp-profile-fields{width:100%}#buddypress table.forum thead tr,#buddypress table.messages-notices thead tr,#buddypress table.notifications thead tr,#buddypress table.notifications-settings thead tr,#buddypress table.profile-fields thead tr,#buddypress table.profile-settings thead tr,#buddypress table.wp-profile-fields thead tr{background:#eaeaea}#buddypress table#message-threads{clear:both}#buddypress table.profile-fields{margin-bottom:20px}#buddypress table.profile-fields:last-child{margin-bottom:0}#buddypress table.profile-fields p{margin:0}#buddypress table.profile-fields p:last-child{margin-top:0}#buddypress table.forum tr td,#buddypress table.forum tr th,#buddypress table.messages-notices tr td,#buddypress table.messages-notices tr th,#buddypress table.notifications tr td,#buddypress table.notifications tr th,#buddypress table.notifications-settings tr td,#buddypress table.notifications-settings tr th,#buddypress table.profile-fields tr td,#buddypress table.profile-fields tr th,#buddypress table.profile-settings tr td,#buddypress table.wp-profile-fields tr td,#buddypress table.wp-profile-fields tr th{padding:8px;vertical-align:middle}#buddypress table.forum tr td.label,#buddypress table.messages-notices tr td.label,#buddypress table.notifications tr td.label,#buddypress table.notifications-settings tr td.label,#buddypress table.profile-fields tr td.label,#buddypress table.wp-profile-fields tr td.label{border-right:1px solid #eaeaea;font-weight:700;width:25%}#buddypress #message-threads .thread-info{min-width:40%}#buddypress table tr td.thread-info p{margin:0}#buddypress table tr td.thread-info p.thread-excerpt{color:#767676;font-size:80%;margin-top:3px}#buddypress table.forum td{text-align:center}#buddypress table.forum tr.alt td,#buddypress table.messages-notices tr.alt td,#buddypress table.notifications tr.alt td,#buddypress table.notifications-settings tr.alt td,#buddypress table.profile-fields tr.alt td,#buddypress table.profile-settings tr.alt td,#buddypress table.wp-profile-fields tr.alt td{background:#f5f5f5;color:#707070}#buddypress table.notification-settings{margin-bottom:20px;text-align:left}#buddypress #groups-notification-settings{margin-bottom:0}#buddypress table.notification-settings td:first-child,#buddypress table.notification-settings th.icon,#buddypress table.notifications td:first-child,#buddypress table.notifications th.icon{display:none}#buddypress table.notification-settings th.title,#buddypress table.profile-settings th.title{width:80%}#buddypress table.notification-settings .no,#buddypress table.notification-settings .yes{text-align:center;width:40px}#buddypress table.forum{margin:0;width:auto;clear:both}#buddypress table.forum tr.sticky td{font-size:110%;background:#fff9db;border-top:1px solid #ffe8c4;border-bottom:1px solid #ffe8c4}#buddypress table.forum tr.closed td.td-title{padding-left:35px}#buddypress table.forum td p.topic-text{color:#767676;font-size:100%}#buddypress table.forum tr>td:first-child,#buddypress table.forum tr>th:first-child{padding-left:15px}#buddypress table.forum tr>td:last-child,#buddypress table.forum tr>th:last-child{padding-right:15px}#buddypress table.forum td.td-group,#buddypress table.forum td.td-poster,#buddypress table.forum td.td-title,#buddypress table.forum tr th#th-group,#buddypress table.forum tr th#th-poster,#buddypress table.forum tr th#th-title{text-align:left}#buddypress table.forum tr td.td-title a.topic-title{font-size:110%}#buddypress table.forum td.td-freshness{white-space:nowrap}#buddypress table.forum td.td-freshness span.time-since{font-size:80%;color:#767676}#buddypress table.forum td img.avatar{float:none;margin:0 5px -8px 0}#buddypress table.forum td.td-group,#buddypress table.forum td.td-poster{min-width:140px}#buddypress table.forum th#th-title{width:80%}#buddypress table.forum th#th-freshness{width:25%}#buddypress table.forum th#th-postcount{width:15%}#buddypress table.forum p.topic-meta{font-size:80%;margin:5px 0 0}#buddypress .item-body{margin:20px 0}#buddypress span.activity{display:inline-block;font-size:small;padding:0}#buddypress span.user-nicename{color:#767676;display:inline-block;font-size:120%;font-weight:700}#sitewide-notice,.bp-site-wide-message{position:relative}#buddypress div#message p,#sitewide-notice #message{background-color:#ffd;border:1px solid #cb2;color:#440;font-weight:400;margin-top:3px;text-decoration:none}.admin-bar-on #message p,.bp-site-wide-message #message p{padding-right:25px}.admin-bar-on #message button,.bp-site-wide-message #message button{font-size:.8em;padding:2px 4px;position:absolute;right:0;top:0}.admin-bar-on #message button{right:10px;top:7px}#buddypress #item-header:after{clear:both;content:"";display:table}#buddypress div#item-header div#item-header-content{float:left;margin-left:0}#buddypress div#item-header h2{line-height:1.2;margin:0 0 15px}#buddypress div#item-header h2 a{color:#767676;text-decoration:none}#buddypress div#item-header img.avatar{float:left;margin:0 15px 19px 0}#buddypress div#item-header h2{margin-bottom:5px}#buddypress div#item-header h2 span.highlight{font-size:60%;font-weight:400;line-height:1.7;vertical-align:middle;display:inline-block}#buddypress div#item-header h2 span.highlight span{background:#a1dcfa;color:#fff;cursor:pointer;font-weight:700;font-size:80%;margin-bottom:2px;padding:1px 4px;position:relative;right:-2px;top:-2px;vertical-align:middle}#buddypress div#item-header div#item-meta{font-size:80%;color:#767676;overflow:hidden;margin:15px 0 5px;padding-bottom:10px}#buddypress div#item-header div#item-actions{float:right;margin:0 0 15px 15px;text-align:right;width:20%}#buddypress div#item-header div#item-actions h2,#buddypress div#item-header div#item-actions h3{margin:0 0 5px}#buddypress div#item-header div#item-actions a{display:inline-block}#buddypress div#item-header ul{margin-bottom:15px}#buddypress div#item-header ul:after{clear:both;content:"";display:table}#buddypress div#item-header ul h5,#buddypress div#item-header ul hr,#buddypress div#item-header ul span{display:none}#buddypress div#item-header ul li{float:right;list-style:none}#buddypress div#item-header ul img.avatar,#buddypress div#item-header ul.avatars img.avatar{height:30px;margin:2px;width:30px}#buddypress div#item-header a.button,#buddypress div#item-header div.generic-button{float:left;margin:10px 10px 0 0}body.no-js #buddypress div#item-header .js-self-profile-button{display:none}#buddypress div#item-header div#message.info{line-height:.8}#buddypress ul.item-list{border-top:1px solid #eaeaea;width:100%;list-style:none;clear:both;margin:0;padding:0}body.activity-permalink #buddypress ul.item-list,body.activity-permalink #buddypress ul.item-list li.activity-item{border:none}#buddypress ul.item-list li{border-bottom:1px solid #eaeaea;padding:15px 0;margin:0;position:relative;list-style:none}#buddypress ul.single-line li{border:none}#buddypress ul.item-list li img.avatar{float:left;margin:0 10px 0 0}#buddypress ul.item-list li div.item-title,#buddypress ul.item-list li h3,#buddypress ul.item-list li h4{font-weight:400;font-size:90%;margin:0;width:75%}#buddypress ul.item-list li div.item-title span{color:#767676;font-size:80%}#buddypress ul.item-list li div.item-desc{color:#767676;font-size:80%;margin:10px 0 0 60px;width:50%}#buddypress ul.item-list li.group-no-avatar div.item-desc{margin-left:0}#buddypress ul.item-list li div.action{position:absolute;top:15px;right:0;text-align:right}#buddypress ul.item-list li div.meta{color:#767676;font-size:80%;margin-top:10px}#buddypress ul.item-list li h5 span.small{float:right;font-size:80%;font-weight:400}#buddypress div.item-list-tabs{background:0 0;clear:left;overflow:hidden}#buddypress div.item-list-tabs ul{margin:0;padding:0}#buddypress div.item-list-tabs ul li{float:left;margin:0;list-style:none}#buddypress div.item-list-tabs#subnav ul li{margin-top:0}#buddypress div.item-list-tabs ul li.last{float:right;margin:7px 0 0}#buddypress div.item-list-tabs#subnav ul li.last{margin-top:4px}#buddypress div.item-list-tabs ul li.last select{max-width:185px}#buddypress div.item-list-tabs ul li a,#buddypress div.item-list-tabs ul li span{display:block;padding:5px 10px;text-decoration:none}#buddypress div.item-list-tabs ul li a span{background:#eee;border-radius:50%;border:1px solid #ccc;color:#6c6c6c;display:inline;font-size:70%;margin-left:2px;padding:3px 6px;text-align:center;vertical-align:middle}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background-color:#eee;color:#555;opacity:.9;font-weight:700}#buddypress div.item-list-tabs ul li a:hover span,#buddypress div.item-list-tabs ul li.current a span,#buddypress div.item-list-tabs ul li.selected a span{background-color:#eee}#buddypress div.item-list-tabs ul li.current a span,#buddypress div.item-list-tabs ul li.selected a span{background-color:#fff}#buddypress div#item-nav ul li.loading a{background-position:88% 50%}#buddypress div.item-list-tabs#object-nav{margin-top:0}#buddypress div.item-list-tabs#subnav{background:0 0;margin:10px 0;overflow:hidden}#buddypress #admins-list li,#buddypress #members-list li,#buddypress #mods-list li{overflow:auto;list-style:none}#buddypress .group-members-list{width:100%;margin-top:1em;clear:both;overflow:auto}#buddypress #item-buttons:empty{display:none}#buddypress #cover-image-container{position:relative;z-index:0}#buddypress #header-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;left:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1}#buddypress #item-header-cover-image{padding:0 1em;position:relative;z-index:2}#buddypress table#message-threads tr.unread td{background:#fff9db;border-top:1px solid #ffe8c4;border-bottom:1px solid #ffe8c4;font-weight:700}#buddypress table#message-threads tr.unread td .activity,#buddypress table#message-threads tr.unread td .thread-excerpt,#buddypress table#message-threads tr.unread td.thread-options{font-weight:400}#buddypress li span.unread-count,#buddypress tr.unread span.unread-count{background:#d00;color:#fff;font-weight:700;padding:2px 8px}#buddypress div.item-list-tabs ul li a span.unread-count{padding:1px 6px;color:#fff}#buddypress div#message-thread div.message-box{margin:0;padding:15px}#buddypress div#message-thread div.alt{background:#f4f4f4}#buddypress div#message-thread p#message-recipients{margin:10px 0 20px}#buddypress div#message-thread img.avatar{float:left;margin:0 10px 0 0;vertical-align:middle}#buddypress div#message-thread strong{font-size:100%;margin:0}#buddypress div#message-thread strong a{text-decoration:none}#buddypress div#message-thread strong span.activity{margin-top:4px}#buddypress div#message-thread div.message-metadata:after{clear:both;content:"";display:table}#buddypress div#message-thread div.message-content{margin-left:45px}#buddypress div#message-thread div.message-options{text-align:right}#buddypress #message-threads img.avatar{max-width:none}#buddypress div.message-search{float:right;margin:0 20px}.message-metadata{position:relative}.message-star-actions{position:absolute;right:0;top:0}#buddypress a.message-action-star,#buddypress a.message-action-unstar{border-bottom:0;text-decoration:none;outline:0}a.message-action-star{opacity:.7}a.message-action-star:hover{opacity:1}.message-action-star span.icon:before,.message-action-unstar span.icon:before{font-family:dashicons;font-size:18px}.message-action-star span.icon:before{color:#767676;content:"\f154"}.message-action-unstar span.icon:before{color:#fcdd77;content:"\f155"}#buddypress div.profile h2{margin-bottom:auto;margin-top:15px}#buddypress #profile-edit-form ul.button-nav{margin-top:15px}body.no-js #buddypress .field-visibility-settings-close,body.no-js #buddypress .field-visibility-settings-toggle{display:none}#buddypress .field-visibility-settings{display:none;margin-top:10px}body.no-js #buddypress .field-visibility-settings{display:block}#buddypress .current-visibility-level{font-weight:700;font-style:normal}#buddypress .field-visibility-settings,#buddypress .field-visibility-settings-notoggle,#buddypress .field-visibility-settings-toggle{color:#707070}#buddypress .field-visibility-settings a,#buddypress .field-visibility-settings-toggle a{font-size:80%}body.register #buddypress div.page ul{list-style:none}#buddypress .standard-form .field-visibility-settings label{margin:0;font-weight:400}#buddypress .field-visibility-settings legend,#buddypress .field-visibility-settings-toggle{font-style:italic}#buddypress .field-visibility-settings .radio{list-style:none;margin-bottom:0}#buddypress .field-visibility select{margin:0}#buddypress .wp-editor-container{border:1px solid #dedede}#buddypress .html-active button.switch-html{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0;background:#f5f5f5;color:#707070}#buddypress .tmce-active button.switch-tmce{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0;background:#f5f5f5;color:#707070}#buddypress .standard-form .wp-editor-container textarea{width:100%;padding-top:0;padding-bottom:0}.widget.buddypress span.activity{display:inline-block;font-size:small;padding:0}.widget.buddypress div.item-options{font-size:90%;margin:0 0 1em;padding:1em 0}.widget.buddypress div.item{margin:0 0 1em}.widget.buddypress div.item-content,.widget.buddypress div.item-meta{font-size:11px;margin-left:50px}.widget.buddypress div.avatar-block:after{clear:both;content:"";display:table}.widget.buddypress .item-avatar a{float:left;margin-bottom:15px;margin-right:10px}.widget.buddypress div.item-avatar img{display:inline-block;height:40px;margin:1px;width:40px}.widget.buddypress .item-avatar a,.widget.buddypress .item-avatar a img,.widget.buddypress .item-avatar a:active,.widget.buddypress .item-avatar a:focus,.widget.buddypress .item-avatar a:hover{box-shadow:none}.widget.buddypress #bp-login-widget-form label{display:block;margin:1rem 0 .5rem}.widget.buddypress #bp-login-widget-form #bp-login-widget-submit{margin-right:10px}.widget.buddypress .bp-login-widget-user-avatar{float:left}.bp-login-widget-user-avatar img.avatar{height:40px;width:40px}.widget.buddypress .bp-login-widget-user-links>div{padding-left:60px}.widget.buddypress .bp-login-widget-user-links>div{margin-bottom:.5rem}.widget.buddypress .bp-login-widget-user-links>div.bp-login-widget-user-link a{font-weight:700}.widget.buddypress #friends-list,.widget.buddypress #groups-list,.widget.buddypress #members-list{margin-left:0;padding-left:0}.widget.buddypress #friends-list li,.widget.buddypress #groups-list li,.widget.buddypress #members-list li{clear:both;list-style-type:none}.buddypress .bp-tooltip{position:relative}.bp-tooltip:after{background:#fff;border:1px solid #aaa;border-collapse:separate;border-radius:1px;box-shadow:1px 1px 0 1px rgba(132,132,132,.3);color:#000;content:attr(data-bp-tooltip);display:none;font-family:sans-serif;font-size:11px;font-weight:400;letter-spacing:normal;line-height:1.5;margin-top:10px;max-width:240px;opacity:0;padding:3px 6px;position:absolute;right:50%;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;top:100%;transform:translateX(50%);transition:opacity 2s ease-out;white-space:pre;word-wrap:break-word;z-index:998}.bp-tooltip:active:after,.bp-tooltip:focus:after,.bp-tooltip:hover:after{display:inline-block;opacity:1;overflow:visible;text-decoration:none;z-index:999}#group-admins .bp-tooltip:after,#group-mods .bp-tooltip:after,.message-metadata .bp-tooltip:after{right:0;text-align:right;transform:translateX(0)}.feed .bp-tooltip:after,.item-list .bp-tooltip:after,.messages-notices .bp-tooltip:after{left:0;right:auto;text-align:left;transform:translateX(0)}.admin-bar-on .bp-tooltip:after,.bp-site-wide-message .bp-tooltip:after{right:50px}@media only screen and (max-width:480px){#buddypress div.dir-search{float:right;margin-top:-50px;text-align:right}#buddypress div.dir-search input[type=text]{margin-bottom:1em;width:50%}a.bp-title-button{margin-left:10px}#buddypress form.standard-form .main-column div.action{position:relative;margin-bottom:1em}#buddypress form.standard-form .main-column ul#friend-list h3,#buddypress form.standard-form .main-column ul#friend-list h4{width:100%}}@media only screen and (max-width:320px){#buddypress div.dir-search{clear:left;float:left;margin-top:0;text-align:left}#buddypress li#groups-order-select{clear:left;float:left}#buddypress ul.item-list li div.action{clear:left;float:left;margin-top:0;margin-left:70px;position:relative;top:0;right:0;text-align:left}#buddypress ul.item-list li div.item-desc{clear:left;float:left;margin:10px 0 0;width:auto}#buddypress li div.item{margin-left:70px;width:auto}#buddypress ul.item-list li div.meta{margin-top:0}#buddypress .item-desc p{margin:0 0 10px}#buddypress div.pagination .pag-count{margin-left:0}}@media only screen and (max-width:240px){#buddypress div.dir-search{float:left;margin:0}#buddypress div.dir-search input[type=text]{width:50%}#buddypress li#groups-order-select{float:left}#buddypress ul.item-list li img.avatar{width:30px;height:auto}#buddypress li div.item,#buddypress ul.item-list li div.action{margin-left:45px}h1 a.bp-title-button{clear:left;float:left;margin:10px 0 20px}} \ No newline at end of file +#buddypress div.pagination{background:0 0;border:none;color:#767676;font-size:small;margin:0;position:relative;display:block;float:left;width:100%;padding:10px 0}#buddypress div.pagination .pag-count{float:left;margin-left:10px}#buddypress div.pagination .pagination-links{float:right;margin-right:10px}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{font-size:90%;padding:0 5px}#buddypress div.pagination .pagination-links a:hover{font-weight:700}#buddypress noscript div.pagination{margin-bottom:15px}#buddypress #nav-above{display:none}#buddypress .paged #nav-above{display:block}#buddypress img.wp-smiley{border:none!important;clear:none!important;float:none!important;margin:0!important;padding:0!important}#buddypress .clear{clear:left}#buddypress #activity-stream{margin-top:-5px}#buddypress #activity-stream p{margin:5px 0}#buddypress #item-body form#whats-new-form{margin:0;padding:0}#buddypress .home-page form#whats-new-form{border-bottom:none;padding-bottom:0}#buddypress form#whats-new-form #whats-new-avatar{float:left}#buddypress form#whats-new-form #whats-new-content{margin-left:55px;padding:0 0 20px 20px}#buddypress form#whats-new-form p.activity-greeting{line-height:.5;margin-bottom:15px;margin-left:75px}#buddypress form#whats-new-form textarea{background:#fff;box-sizing:border-box;color:#555;font-family:inherit;font-size:medium;height:2.2em;line-height:1.4;padding:6px;width:100%}body.no-js #buddypress form#whats-new-form textarea{height:50px}#buddypress form#whats-new-form #whats-new-options select{max-width:200px;margin-top:12px}#buddypress form#whats-new-form #whats-new-submit{float:right;margin-top:12px}#buddypress #whats-new-options:after{clear:both;content:"";display:table}body.no-js #buddypress #whats-new-options{height:auto}#buddypress #whats-new:focus{border-color:rgba(31,179,221,.9)!important;outline-color:rgba(31,179,221,.9)}#buddypress ul.activity-list li{overflow:hidden;padding:15px 0 0;list-style:none}#buddypress .activity-list .activity-avatar{float:left}#buddypress ul.item-list.activity-list li.has-comments{padding-bottom:15px}body.activity-permalink #buddypress ul.activity-list li.has-comments{padding-bottom:0}#buddypress .activity-list li.mini{font-size:80%;position:relative}#buddypress .activity-list li.mini .activity-avatar img.FB_profile_pic,#buddypress .activity-list li.mini .activity-avatar img.avatar{height:20px;margin-left:30px;width:20px}#buddypress .activity-permalink .activity-list li.mini .activity-avatar img.FB_profile_pic,#buddypress .activity-permalink .activity-list li.mini .activity-avatar img.avatar{height:auto;margin-left:0;width:auto}body.activity-permalink #buddypress .activity-list>li:first-child{padding-top:0}#buddypress .activity-list li .activity-content{position:relative}#buddypress .activity-list li.mini .activity-content p{margin:0}#buddypress .activity-list li.mini .activity-comments{clear:both;font-size:120%}body.activity-permalink #buddypress li.mini .activity-meta{margin-top:4px}#buddypress .activity-list li .activity-inreplyto{color:#767676;font-size:80%}#buddypress .activity-list li .activity-inreplyto>p{margin:0;display:inline}#buddypress .activity-list li .activity-inreplyto blockquote,#buddypress .activity-list li .activity-inreplyto div.activity-inner{background:0 0;border:none;display:inline;margin:0;overflow:hidden;padding:0}#buddypress .activity-list .activity-content{margin:0 0 0 70px}body.activity-permalink #buddypress .activity-list li .activity-content{border:none;font-size:100%;line-height:1.5;margin-left:170px;margin-right:0;padding:0}body.activity-permalink #buddypress .activity-list li .activity-header>p{margin:0;padding:5px 0 0}#buddypress .activity-list .activity-content .activity-header,#buddypress .activity-list .activity-content .comment-header{color:#767676;line-height:2.2}#buddypress .activity-header{margin-right:20px}#buddypress .acomment-meta a,#buddypress .activity-header a,#buddypress .comment-meta a{text-decoration:none}#buddypress .activity-list .activity-content .activity-header img.avatar{float:none!important;margin:0 5px -8px 0!important}#buddypress a.bp-secondary-action,#buddypress span.highlight{font-size:80%;padding:0;margin-right:5px;text-decoration:none}#buddypress .activity-list .activity-content .activity-inner,#buddypress .activity-list .activity-content blockquote{margin:10px 10px 5px 0;overflow:hidden}#buddypress .activity-list li.new_forum_post .activity-content .activity-inner,#buddypress .activity-list li.new_forum_topic .activity-content .activity-inner{border-left:2px solid #eaeaea;margin-left:5px;padding-left:10px}body.activity-permalink #buddypress .activity-content .activity-inner,body.activity-permalink #buddypress .activity-content blockquote{margin-left:0;margin-top:5px}#buddypress .activity-inner>p{word-wrap:break-word}#buddypress .activity-inner>.activity-inner{margin:0}#buddypress .activity-inner>blockquote{margin:0}#buddypress .activity-list .activity-content img.thumbnail{border:2px solid #eee;float:left;margin:0 10px 5px 0}#buddypress .activity-read-more{margin-left:1em;white-space:nowrap}#buddypress .activity-list li.load-more,#buddypress .activity-list li.load-newest{background:#f0f0f0;font-size:110%;margin:15px 0;padding:10px 15px;text-align:center}#buddypress .activity-list li.load-more a,#buddypress .activity-list li.load-newest a{color:#4d4d4d}#buddypress div.activity-meta{margin:18px 0 0}body.activity-permalink #buddypress div.activity-meta{margin-bottom:6px}#buddypress div.activity-meta a{padding:4px 8px}#buddypress a.activity-time-since{color:#767676;text-decoration:none}#buddypress a.activity-time-since:hover{color:#767676;text-decoration:underline}#buddypress #reply-title small a,#buddypress a.bp-primary-action{font-size:80%;margin-right:5px;text-decoration:none}#buddypress #reply-title small a span,#buddypress a.bp-primary-action span{background:#767676;color:#fff;font-size:90%;margin-left:2px;padding:0 5px}#buddypress #reply-title small a:hover span,#buddypress a.bp-primary-action:hover span{background:#555;color:#fff}#buddypress div.activity-comments{margin:0 0 0 70px;overflow:hidden;position:relative;width:auto;clear:both}body.activity-permalink #buddypress div.activity-comments{background:0 0;margin-left:170px;width:auto}#buddypress div.activity-comments>ul{padding:0 0 0 10px}#buddypress div.activity-comments ul,#buddypress div.activity-comments ul li{border:none;list-style:none}#buddypress div.activity-comments ul{clear:both;margin:0}#buddypress div.activity-comments ul li{border-top:1px solid #eee;padding:10px 0 0}body.activity-permalink #buddypress .activity-list li.mini .activity-comments{clear:none;margin-top:0}body.activity-permalink #buddypress div.activity-comments ul li{border-width:1px;padding:10px 0 0}#buddypress div.activity-comments>ul>li:first-child{border-top:none}#buddypress div.activity-comments ul li:last-child{margin-bottom:0}#buddypress div.activity-comments ul li>ul{margin-left:30px;margin-top:0;padding-left:10px}body.activity-permalink #buddypress div.activity-comments ul li>ul{margin-top:10px}body.activity-permalink #buddypress div.activity-comments>ul{padding:0 10px 0 15px}#buddypress div.activity-comments div.acomment-avatar img{border-width:1px;float:left;height:25px;margin-right:10px;width:25px}#buddypress div.activity-comments div.acomment-content{font-size:80%;margin:5px 0 0 40px}#buddypress div.acomment-content .activity-delete-link,#buddypress div.acomment-content .comment-header,#buddypress div.acomment-content .time-since{display:none}body.activity-permalink #buddypress div.activity-comments div.acomment-content{font-size:90%}#buddypress div.activity-comments div.acomment-meta{color:#767676;font-size:80%}#buddypress div.activity-comments form.ac-form{display:none;padding:10px}#buddypress div.activity-comments li form.ac-form{margin-right:15px;clear:both}#buddypress div.activity-comments form.root{margin-left:0}#buddypress div.activity-comments div#message{margin-top:15px;margin-bottom:0}#buddypress div.activity-comments form .ac-textarea{background:#fff;border:1px inset #ccc;margin-bottom:10px;padding:8px}#buddypress div.activity-comments form textarea{border:none;background:0 0;box-shadow:none;outline:0;color:#555;font-family:inherit;font-size:100%;height:60px;padding:0;margin:0;width:100%}#buddypress div.activity-comments form input{margin-top:5px}#buddypress div.activity-comments form div.ac-reply-avatar{float:left}#buddypress div.ac-reply-avatar img{border:1px solid #eee}#buddypress div.activity-comments form div.ac-reply-content{color:#767676;margin-left:50px;padding-left:15px}#buddypress div.activity-comments form div.ac-reply-content a{text-decoration:none}#buddypress .acomment-options{float:left;margin:5px 0 5px 40px}#buddypress .acomment-options a{color:#767676}#buddypress .acomment-options a:hover{color:inherit}#buddypress div.dir-search{float:right;margin:-39px 0 0 0}#buddypress div.dir-search input[type=text],#buddypress li.groups-members-search input[type=text]{font-size:90%;padding:1px 3px}#buddypress .current-member-type{font-style:italic}#buddypress .dir-form{clear:both}#buddypress div#message{margin:0 0 15px}#buddypress #message.info{margin-bottom:0}#buddypress div#message.updated{clear:both;display:block}#buddypress div#message p,#sitewide-notice p,#sitewide-notice strong:first-child{font-size:90%;display:block;padding:10px 15px}#buddypress div#message.error p{background-color:#fdc;border:1px solid #a00;clear:left;color:#800}#buddypress div#message.warning p{background-color:#ffe0af;border:1px solid #ffd087;clear:left;color:#800}#buddypress div#message.updated p{background-color:#efc;border:1px solid #591;color:#250}#buddypress #pass-strength-result{background-color:#eee;border-color:#ddd;border-style:solid;border-width:1px;display:none;margin:5px 5px 5px 0;padding:5px;text-align:center;width:150px}#buddypress .standard-form #basic-details-section #pass-strength-result{width:35%}#buddypress #pass-strength-result.bad,#buddypress #pass-strength-result.error{background-color:#ffb78c;border-color:#ff853c!important;display:block}#buddypress #pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;display:block}#buddypress #pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;display:block}#buddypress #pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;display:block}#buddypress .standard-form#signup_form div div.error{background:#faa;color:#a00;margin:0 0 10px;padding:6px;width:90%}#buddypress div.accept,#buddypress div.reject{float:left;margin-left:10px}#buddypress ul.button-nav li{float:left;margin:0 10px 10px 0;list-style:none}#buddypress ul.button-nav li.current a{font-weight:700}#sitewide-notice #message{left:2%;position:fixed;top:1em;width:96%;z-index:9999}#sitewide-notice.admin-bar-on #message{top:3.3em}#sitewide-notice strong{display:block;margin-bottom:-1em}body.create-blog #buddypress .error{background-color:#fdc;border:1px solid #a00;color:#800;padding:10px 15px}body.create-blog #buddypress .success{background-color:#efc;border:1px solid #591;color:#250;padding:10px 15px}#buddypress form fieldset{border:0;padding:0}#buddypress .dir-search input[type=search],#buddypress .dir-search input[type=text],#buddypress .groups-members-search input[type=search],#buddypress .groups-members-search input[type=text],#buddypress .standard-form input[type=color],#buddypress .standard-form input[type=date],#buddypress .standard-form input[type=datetime-local],#buddypress .standard-form input[type=datetime],#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=month],#buddypress .standard-form input[type=number],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=range],#buddypress .standard-form input[type=search],#buddypress .standard-form input[type=tel],#buddypress .standard-form input[type=text],#buddypress .standard-form input[type=time],#buddypress .standard-form input[type=url],#buddypress .standard-form input[type=week],#buddypress .standard-form select,#buddypress .standard-form textarea{border:1px solid #ccc;background:#fafafa;border-radius:0;color:#737373;font:inherit;font-size:100%;padding:6px}#buddypress .standard-form select{padding:3px}#buddypress .standard-form input[type=password]{margin-bottom:5px}#buddypress .standard-form label,#buddypress .standard-form legend,#buddypress .standard-form span.label{display:block;font-weight:700;margin:15px 0 5px;width:auto}#buddypress label.xprofile-field-label{display:inline}#buddypress .standard-form #invite-list label,#buddypress .standard-form p label{font-weight:400;margin:auto}#buddypress .standard-form .checkbox label,#buddypress .standard-form .radio label{color:#767676;font-size:100%;font-weight:400;margin:5px 0 0}#buddypress .standard-form .checkbox label input,#buddypress .standard-form .radio label input{margin-right:3px}#buddypress .standard-form#sidebar-login-form label{margin-top:5px}#buddypress .standard-form input[type=text]{width:75%}#buddypress .standard-form#sidebar-login-form input[type=password],#buddypress .standard-form#sidebar-login-form input[type=text]{padding:4px;width:95%}#buddypress .standard-form #basic-details-section input[type=password],#buddypress .standard-form #blog-details-section input#signup_blog_url{width:35%}#buddypress #commentform input[type=text],#buddypress #commentform textarea,#buddypress .form-allowed-tags,#buddypress .standard-form#signup_form input[type=text],#buddypress .standard-form#signup_form textarea{width:90%}#buddypress .standard-form#signup_form div.submit{float:right}#buddypress div#signup-avatar img{margin:0 15px 10px 0}#buddypress .standard-form textarea{width:75%;height:120px}#buddypress .standard-form textarea#message_content{height:200px}#buddypress .standard-form#send-reply textarea{width:97.5%}#buddypress .standard-form p.description{color:#767676;font-size:80%;margin:5px 0}#buddypress .standard-form div.submit{clear:both;padding:15px 0 0}#buddypress .standard-form p.submit{margin-bottom:0;padding:15px 0 0}#buddypress .standard-form div.submit input{margin-right:15px}#buddypress .standard-form div.radio ul{margin:10px 0 15px 38px;list-style:disc}#buddypress .standard-form div.radio ul li{margin-bottom:5px}#buddypress .standard-form a.clear-value{display:block;margin-top:5px;outline:0}#buddypress .standard-form #basic-details-section,#buddypress .standard-form #blog-details-section,#buddypress .standard-form #profile-details-section{float:left;width:48%}#buddypress .standard-form #profile-details-section{float:right}#buddypress #notifications-bulk-management,#buddypress .standard-form #blog-details-section{clear:left}body.no-js #buddypress #delete_inbox_messages,body.no-js #buddypress #delete_sentbox_messages,body.no-js #buddypress #message-type-select,body.no-js #buddypress #messages-bulk-management #select-all-messages,body.no-js #buddypress #notifications-bulk-management #select-all-notifications,body.no-js #buddypress label[for=message-type-select]{display:none}#buddypress .standard-form input:focus,#buddypress .standard-form select:focus,#buddypress .standard-form textarea:focus{background:#fafafa;color:#555}#buddypress form#send-invite-form{margin-top:20px}#buddypress div#invite-list{background:#f5f5f5;height:400px;margin:0 0 10px;overflow:auto;padding:5px;width:160px}#buddypress .comment-reply-link,#buddypress .generic-button a,#buddypress .standard-form button,#buddypress a.button,#buddypress input[type=button],#buddypress input[type=reset],#buddypress input[type=submit],#buddypress ul.button-nav li a,a.bp-title-button{background:#fff;border:1px solid #ccc;color:#767676;font-size:small;cursor:pointer;outline:0;padding:4px 10px;text-align:center;text-decoration:none}#buddypress .comment-reply-link:hover,#buddypress .standard-form button:hover,#buddypress a.button:focus,#buddypress a.button:hover,#buddypress div.generic-button a:hover,#buddypress input[type=button]:hover,#buddypress input[type=reset]:hover,#buddypress input[type=submit]:hover,#buddypress ul.button-nav li a:hover,#buddypress ul.button-nav li.current a{background:#ededed;border:1px solid #bbb;color:#555;outline:0;text-decoration:none}#buddypress form.standard-form .left-menu{float:left}#buddypress form.standard-form .left-menu #invite-list ul{margin:1%;list-style:none}#buddypress form.standard-form .left-menu #invite-list ul li{margin:0 0 0 1%}#buddypress form.standard-form .main-column{margin-left:190px}#buddypress form.standard-form .main-column ul#friend-list{clear:none;float:left}#buddypress form.standard-form .main-column ul#friend-list h3,#buddypress form.standard-form .main-column ul#friend-list h4{clear:none}#buddypress .wp-editor-wrap a.button,#buddypress .wp-editor-wrap button,#buddypress .wp-editor-wrap input[type=button],#buddypress .wp-editor-wrap input[type=reset],#buddypress .wp-editor-wrap input[type=submit]{padding:0 8px 1px}#buddypress form [disabled=disabled]{cursor:default;opacity:.4}fieldset.register-site{margin-top:1em}fieldset.create-site{margin-bottom:2em}fieldset.create-site legend{margin-bottom:1em}fieldset.create-site label{margin-right:3em}.bp-screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px;word-wrap:normal!important}.bp-screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#buddypress a.loading,#buddypress input.loading{-webkit-animation:loader-pulsate .5s infinite ease-in-out alternate;-moz-animation:loader-pulsate .5s infinite ease-in-out alternate;border-color:#aaa}#buddypress a.loading:hover,#buddypress input.loading:hover{color:#767676}#buddypress a.disabled,#buddypress button.disabled,#buddypress button.pending,#buddypress div.pending a,#buddypress input[type=button].disabled,#buddypress input[type=button].pending,#buddypress input[type=reset].disabled,#buddypress input[type=reset].pending,#buddypress input[type=submit].disabled,#buddypress input[type=submit].pending,#buddypress input[type=submit][disabled=disabled]{border-color:#eee;color:#bbb;cursor:default}#buddypress a.disabled:hover,#buddypress button.disabled:hover,#buddypress button.pending:hover,#buddypress div.pending a:hover,#buddypress input[type=button]:hover.disabled,#buddypress input[type=button]:hover.pending,#buddypress input[type=reset]:hover.disabled,#buddypress input[type=reset]:hover.pending,#buddypress input[type=submit]:hover.disabled,#buddypress input[type=submit]:hover.pending{border-color:#eee;color:#bbb}#buddypress ul#topic-post-list{margin:0;width:auto}#buddypress ul#topic-post-list li{padding:15px;position:relative}#buddypress ul#topic-post-list li.alt{background:#f5f5f5}#buddypress ul#topic-post-list li div.poster-meta{color:#767676;margin-bottom:10px}#buddypress ul#topic-post-list li div.post-content{margin-left:54px}#buddypress div.topic-tags{font-size:80%}#buddypress div.admin-links{color:#767676;font-size:80%;position:absolute;top:15px;right:25px}#buddypress div#topic-meta{margin:0;padding:5px 19px 30px;position:relative}#buddypress div#topic-meta div.admin-links{right:19px;top:-36px}#buddypress div#topic-meta h3{margin:5px 0}#buddypress div#new-topic-post{display:none;margin:20px 0 0;padding:1px 0 0}#buddypress table.forum,#buddypress table.messages-notices,#buddypress table.notifications,#buddypress table.notifications-settings,#buddypress table.profile-fields,#buddypress table.profile-settings,#buddypress table.wp-profile-fields{width:100%}#buddypress table.forum thead tr,#buddypress table.messages-notices thead tr,#buddypress table.notifications thead tr,#buddypress table.notifications-settings thead tr,#buddypress table.profile-fields thead tr,#buddypress table.profile-settings thead tr,#buddypress table.wp-profile-fields thead tr{background:#eaeaea}#buddypress table#message-threads{clear:both}#buddypress table.profile-fields{margin-bottom:20px}#buddypress table.profile-fields:last-child{margin-bottom:0}#buddypress table.profile-fields p{margin:0}#buddypress table.profile-fields p:last-child{margin-top:0}#buddypress table.forum tr td,#buddypress table.forum tr th,#buddypress table.messages-notices tr td,#buddypress table.messages-notices tr th,#buddypress table.notifications tr td,#buddypress table.notifications tr th,#buddypress table.notifications-settings tr td,#buddypress table.notifications-settings tr th,#buddypress table.profile-fields tr td,#buddypress table.profile-fields tr th,#buddypress table.profile-settings tr td,#buddypress table.wp-profile-fields tr td,#buddypress table.wp-profile-fields tr th{padding:8px;vertical-align:middle}#buddypress table.forum tr td.label,#buddypress table.messages-notices tr td.label,#buddypress table.notifications tr td.label,#buddypress table.notifications-settings tr td.label,#buddypress table.profile-fields tr td.label,#buddypress table.wp-profile-fields tr td.label{border-right:1px solid #eaeaea;font-weight:700;width:25%}#buddypress #message-threads .thread-info{min-width:40%}#buddypress table tr td.thread-info p{margin:0}#buddypress table tr td.thread-info p.thread-excerpt{color:#767676;font-size:80%;margin-top:3px}#buddypress table.forum td{text-align:center}#buddypress table.forum tr.alt td,#buddypress table.messages-notices tr.alt td,#buddypress table.notifications tr.alt td,#buddypress table.notifications-settings tr.alt td,#buddypress table.profile-fields tr.alt td,#buddypress table.profile-settings tr.alt td,#buddypress table.wp-profile-fields tr.alt td{background:#f5f5f5;color:#707070}#buddypress table.notification-settings{margin-bottom:20px;text-align:left}#buddypress #groups-notification-settings{margin-bottom:0}#buddypress table.notification-settings td:first-child,#buddypress table.notification-settings th.icon,#buddypress table.notifications td:first-child,#buddypress table.notifications th.icon{display:none}#buddypress table.notification-settings th.title,#buddypress table.profile-settings th.title{width:80%}#buddypress table.notification-settings .no,#buddypress table.notification-settings .yes{text-align:center;width:40px}#buddypress table.forum{margin:0;width:auto;clear:both}#buddypress table.forum tr.sticky td{font-size:110%;background:#fff9db;border-top:1px solid #ffe8c4;border-bottom:1px solid #ffe8c4}#buddypress table.forum tr.closed td.td-title{padding-left:35px}#buddypress table.forum td p.topic-text{color:#767676;font-size:100%}#buddypress table.forum tr>td:first-child,#buddypress table.forum tr>th:first-child{padding-left:15px}#buddypress table.forum tr>td:last-child,#buddypress table.forum tr>th:last-child{padding-right:15px}#buddypress table.forum td.td-group,#buddypress table.forum td.td-poster,#buddypress table.forum td.td-title,#buddypress table.forum tr th#th-group,#buddypress table.forum tr th#th-poster,#buddypress table.forum tr th#th-title{text-align:left}#buddypress table.forum tr td.td-title a.topic-title{font-size:110%}#buddypress table.forum td.td-freshness{white-space:nowrap}#buddypress table.forum td.td-freshness span.time-since{font-size:80%;color:#767676}#buddypress table.forum td img.avatar{float:none;margin:0 5px -8px 0}#buddypress table.forum td.td-group,#buddypress table.forum td.td-poster{min-width:140px}#buddypress table.forum th#th-title{width:80%}#buddypress table.forum th#th-freshness{width:25%}#buddypress table.forum th#th-postcount{width:15%}#buddypress table.forum p.topic-meta{font-size:80%;margin:5px 0 0}#buddypress .item-body{margin:20px 0}#buddypress span.activity{display:inline-block;font-size:small;padding:0}#buddypress span.user-nicename{color:#767676;display:inline-block;font-size:120%;font-weight:700}#sitewide-notice,.bp-site-wide-message{position:relative}#buddypress div#message p,#sitewide-notice #message{background-color:#ffd;border:1px solid #cb2;color:#440;font-weight:400;margin-top:3px;text-decoration:none}.admin-bar-on #message p,.bp-site-wide-message #message p{padding-right:25px}.admin-bar-on #message button,.bp-site-wide-message #message button{font-size:.8em;padding:2px 4px;position:absolute;right:0;top:0}.admin-bar-on #message button{right:10px;top:7px}#buddypress #item-header:after{clear:both;content:"";display:table}#buddypress div#item-header div#item-header-content{float:left;margin-left:0}#buddypress div#item-header h2{line-height:1.2;margin:0 0 15px}#buddypress div#item-header h2 a{color:#767676;text-decoration:none}#buddypress div#item-header img.avatar{float:left;margin:0 15px 19px 0}#buddypress div#item-header h2{margin-bottom:5px}#buddypress div#item-header h2 span.highlight{font-size:60%;font-weight:400;line-height:1.7;vertical-align:middle;display:inline-block}#buddypress div#item-header h2 span.highlight span{background:#a1dcfa;color:#fff;cursor:pointer;font-weight:700;font-size:80%;margin-bottom:2px;padding:1px 4px;position:relative;right:-2px;top:-2px;vertical-align:middle}#buddypress div#item-header div#item-meta{font-size:80%;color:#767676;overflow:hidden;margin:15px 0 5px;padding-bottom:10px}#buddypress div#item-header div#item-actions{float:right;margin:0 0 15px 15px;text-align:right;width:20%}#buddypress div#item-header div#item-actions h2,#buddypress div#item-header div#item-actions h3{margin:0 0 5px}#buddypress div#item-header div#item-actions a{display:inline-block}#buddypress div#item-header ul{margin-bottom:15px}#buddypress div#item-header ul:after{clear:both;content:"";display:table}#buddypress div#item-header ul h5,#buddypress div#item-header ul hr,#buddypress div#item-header ul span{display:none}#buddypress div#item-header ul li{float:right;list-style:none}#buddypress div#item-header ul img.avatar,#buddypress div#item-header ul.avatars img.avatar{height:30px;margin:2px;width:30px}#buddypress div#item-header a.button,#buddypress div#item-header div.generic-button{float:left;margin:10px 10px 0 0}body.no-js #buddypress div#item-header .js-self-profile-button{display:none}#buddypress div#item-header div#message.info{line-height:.8}#buddypress ul.item-list{border-top:1px solid #eaeaea;width:100%;list-style:none;clear:both;margin:0;padding:0}body.activity-permalink #buddypress ul.item-list,body.activity-permalink #buddypress ul.item-list li.activity-item{border:none}#buddypress ul.item-list li{border-bottom:1px solid #eaeaea;padding:15px 0;margin:0;position:relative;list-style:none}#buddypress ul.single-line li{border:none}#buddypress ul.item-list li img.avatar{float:left;margin:0 10px 0 0}#buddypress ul.item-list li div.item-title,#buddypress ul.item-list li h3,#buddypress ul.item-list li h4{font-weight:400;font-size:90%;margin:0;width:75%}#buddypress ul.item-list li div.item-title span{color:#767676;font-size:80%}#buddypress ul.item-list li div.item-desc{color:#767676;font-size:80%;margin:10px 0 0 60px;width:50%}#buddypress ul.item-list li.group-no-avatar div.item-desc{margin-left:0}#buddypress ul.item-list li div.action{position:absolute;top:15px;right:0;text-align:right}#buddypress ul.item-list li div.meta{color:#767676;font-size:80%;margin-top:10px}#buddypress ul.item-list li h5 span.small{float:right;font-size:80%;font-weight:400}#buddypress div.item-list-tabs{background:0 0;clear:left;overflow:hidden}#buddypress div.item-list-tabs ul{margin:0;padding:0}#buddypress div.item-list-tabs ul li{float:left;margin:0;list-style:none}#buddypress div.item-list-tabs#subnav ul li{margin-top:0}#buddypress div.item-list-tabs ul li.last{float:right;margin:7px 0 0}#buddypress div.item-list-tabs#subnav ul li.last{margin-top:4px}#buddypress div.item-list-tabs ul li.last select{max-width:185px}#buddypress div.item-list-tabs ul li a,#buddypress div.item-list-tabs ul li span{display:block;padding:5px 10px;text-decoration:none}#buddypress div.item-list-tabs ul li a span{background:#eee;border-radius:50%;border:1px solid #ccc;color:#6c6c6c;display:inline;font-size:70%;margin-left:2px;padding:3px 6px;text-align:center;vertical-align:middle}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background-color:#eee;color:#555;opacity:.9;font-weight:700}#buddypress div.item-list-tabs ul li a:hover span,#buddypress div.item-list-tabs ul li.current a span,#buddypress div.item-list-tabs ul li.selected a span{background-color:#eee}#buddypress div.item-list-tabs ul li.current a span,#buddypress div.item-list-tabs ul li.selected a span{background-color:#fff}#buddypress div#item-nav ul li.loading a{background-position:88% 50%}#buddypress div.item-list-tabs#object-nav{margin-top:0}#buddypress div.item-list-tabs#subnav{background:0 0;margin:10px 0;overflow:hidden}#buddypress #admins-list li,#buddypress #members-list li,#buddypress #mods-list li{overflow:auto;list-style:none}#buddypress .group-members-list{width:100%;margin-top:1em;clear:both;overflow:auto}#buddypress #item-buttons:empty{display:none}#buddypress #cover-image-container{position:relative;z-index:0}#buddypress #header-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;left:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1}#buddypress #item-header-cover-image{padding:0 1em;position:relative;z-index:2}#buddypress table#message-threads tr.unread td{background:#fff9db;border-top:1px solid #ffe8c4;border-bottom:1px solid #ffe8c4;font-weight:700}#buddypress table#message-threads tr.unread td .activity,#buddypress table#message-threads tr.unread td .thread-excerpt,#buddypress table#message-threads tr.unread td.thread-options{font-weight:400}#buddypress li span.unread-count,#buddypress tr.unread span.unread-count{background:#d00;color:#fff;font-weight:700;padding:2px 8px}#buddypress div.item-list-tabs ul li a span.unread-count{padding:1px 6px;color:#fff}#buddypress div#message-thread div.message-box{margin:0;padding:15px}#buddypress div#message-thread div.alt{background:#f4f4f4}#buddypress div#message-thread p#message-recipients{margin:10px 0 20px}#buddypress div#message-thread img.avatar{float:left;margin:0 10px 0 0;vertical-align:middle}#buddypress div#message-thread strong{font-size:100%;margin:0}#buddypress div#message-thread strong a{text-decoration:none}#buddypress div#message-thread strong span.activity{margin-top:4px}#buddypress div#message-thread div.message-metadata:after{clear:both;content:"";display:table}#buddypress div#message-thread div.message-content{margin-left:45px}#buddypress div#message-thread div.message-options{text-align:right}#buddypress #message-threads img.avatar{max-width:none}#buddypress div.message-search{float:right;margin:0 20px}.message-metadata{position:relative}.message-star-actions{position:absolute;right:0;top:0}#buddypress a.message-action-star,#buddypress a.message-action-unstar{border-bottom:0;text-decoration:none;outline:0}a.message-action-star{opacity:.7}a.message-action-star:hover{opacity:1}.message-action-star span.icon:before,.message-action-unstar span.icon:before{font-family:dashicons;font-size:18px}.message-action-star span.icon:before{color:#767676;content:"\f154"}.message-action-unstar span.icon:before{color:#fcdd77;content:"\f155"}#buddypress div.profile h2{margin-bottom:auto;margin-top:15px}#buddypress #profile-edit-form ul.button-nav{margin-top:15px}body.no-js #buddypress .field-visibility-settings-close,body.no-js #buddypress .field-visibility-settings-toggle{display:none}#buddypress .field-visibility-settings{display:none;margin-top:10px}body.no-js #buddypress .field-visibility-settings{display:block}#buddypress .current-visibility-level{font-weight:700;font-style:normal}#buddypress .field-visibility-settings,#buddypress .field-visibility-settings-notoggle,#buddypress .field-visibility-settings-toggle{color:#707070}#buddypress .field-visibility-settings a,#buddypress .field-visibility-settings-toggle a{font-size:80%}body.register #buddypress div.page ul{list-style:none}#buddypress .standard-form .field-visibility-settings label{margin:0;font-weight:400}#buddypress .field-visibility-settings legend,#buddypress .field-visibility-settings-toggle{font-style:italic}#buddypress .field-visibility-settings .radio{list-style:none;margin-bottom:0}#buddypress .field-visibility select{margin:0}#buddypress .wp-editor-container{border:1px solid #dedede}#buddypress .html-active button.switch-html{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0;background:#f5f5f5;color:#707070}#buddypress .tmce-active button.switch-tmce{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0;background:#f5f5f5;color:#707070}#buddypress .standard-form .wp-editor-container textarea{width:100%;padding-top:0;padding-bottom:0}.widget.buddypress span.activity{display:inline-block;font-size:small;padding:0}.widget.buddypress div.item-options{font-size:90%;margin:0 0 1em;padding:1em 0}.widget.buddypress div.item{margin:0 0 1em}.widget.buddypress div.item-content,.widget.buddypress div.item-meta{font-size:11px;margin-left:50px}.widget.buddypress div.avatar-block:after{clear:both;content:"";display:table}.widget.buddypress .item-avatar a{float:left;margin-bottom:15px;margin-right:10px}.widget.buddypress div.item-avatar img{display:inline-block;height:40px;margin:1px;width:40px}.widget.buddypress .item-avatar a,.widget.buddypress .item-avatar a img,.widget.buddypress .item-avatar a:active,.widget.buddypress .item-avatar a:focus,.widget.buddypress .item-avatar a:hover{box-shadow:none}.widget.buddypress #bp-login-widget-form label{display:block;margin:1rem 0 .5rem}.widget.buddypress #bp-login-widget-form #bp-login-widget-submit{margin-right:10px}.widget.buddypress .bp-login-widget-user-avatar{float:left}.bp-login-widget-user-avatar img.avatar{height:40px;width:40px}.widget.buddypress .bp-login-widget-user-links>div{padding-left:60px}.widget.buddypress .bp-login-widget-user-links>div{margin-bottom:.5rem}.widget.buddypress .bp-login-widget-user-links>div.bp-login-widget-user-link a{font-weight:700}.widget.buddypress #friends-list,.widget.buddypress #groups-list,.widget.buddypress #members-list{margin-left:0;padding-left:0}.widget.buddypress #friends-list li,.widget.buddypress #groups-list li,.widget.buddypress #members-list li{clear:both;list-style-type:none}.buddypress .bp-tooltip{position:relative}.bp-tooltip:after{background:#fff;border:1px solid #aaa;border-collapse:separate;border-radius:1px;box-shadow:1px 1px 0 1px rgba(132,132,132,.3);color:#000;content:attr(data-bp-tooltip);display:none;font-family:sans-serif;font-size:11px;font-weight:400;letter-spacing:normal;line-height:1.5;margin-top:10px;max-width:240px;opacity:0;padding:3px 6px;position:absolute;right:50%;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;top:100%;transform:translateX(50%);transition:opacity 2s ease-out;white-space:pre;word-wrap:break-word;z-index:998}.bp-tooltip:active:after,.bp-tooltip:focus:after,.bp-tooltip:hover:after{display:inline-block;opacity:1;overflow:visible;text-decoration:none;z-index:999}#group-admins .bp-tooltip:after,#group-mods .bp-tooltip:after,.message-metadata .bp-tooltip:after{right:0;text-align:right;transform:translateX(0)}.feed .bp-tooltip:after,.item-list .bp-tooltip:after,.messages-notices .bp-tooltip:after{left:0;right:auto;text-align:left;transform:translateX(0)}.admin-bar-on .bp-tooltip:after,.bp-site-wide-message .bp-tooltip:after{right:50px}@media only screen and (max-width:480px){#buddypress div.dir-search{float:right;margin-top:-50px;text-align:right}#buddypress div.dir-search input[type=text]{margin-bottom:1em;width:50%}a.bp-title-button{margin-left:10px}#buddypress form.standard-form .main-column div.action{position:relative;margin-bottom:1em}#buddypress form.standard-form .main-column ul#friend-list h3,#buddypress form.standard-form .main-column ul#friend-list h4{width:100%}}@media only screen and (max-width:320px){#buddypress div.dir-search{clear:left;float:left;margin-top:0;text-align:left}#buddypress li#groups-order-select{clear:left;float:left}#buddypress ul.item-list li div.action{clear:left;float:left;margin-top:0;margin-left:70px;position:relative;top:0;right:0;text-align:left}#buddypress ul.item-list li div.item-desc{clear:left;float:left;margin:10px 0 0;width:auto}#buddypress li div.item{margin-left:70px;width:auto}#buddypress ul.item-list li div.meta{margin-top:0}#buddypress .item-desc p{margin:0 0 10px}#buddypress div.pagination .pag-count{margin-left:0}}@media only screen and (max-width:240px){#buddypress div.dir-search{float:left;margin:0}#buddypress div.dir-search input[type=text]{width:50%}#buddypress li#groups-order-select{float:left}#buddypress ul.item-list li img.avatar{width:30px;height:auto}#buddypress li div.item,#buddypress ul.item-list li div.action{margin-left:45px}h1 a.bp-title-button{clear:left;float:left;margin:10px 0 20px}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/buddypress.js b/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/buddypress.js index 4369588623c511f4984eda2cde338e212e6ea041..338644fa1be8886d0540637af431b14eac054a60 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/buddypress.js +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/buddypress.js @@ -610,7 +610,7 @@ jq(document).ready( function() { ajaxdata = { action: 'new_activity_comment', 'cookie': bp_get_cookies(), - '_wpnonce_new_activity_comment': jq('#_wpnonce_new_activity_comment').val(), + '_wpnonce_new_activity_comment': jq('#_wpnonce_new_activity_comment' + '_' + form_id[2] ).val(), 'comment_id': comment_id, 'form_id': form_id[2], 'content': content.val() diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/buddypress.min.js b/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/buddypress.min.js index 5d35f39e336e7b7ec5e0c5d485ac30bac1b82554..2c2bfe5abedf3e4da5d76067906f42acefa62ec4 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/buddypress.min.js +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/buddypress.min.js @@ -1 +1 @@ -function bp_get_directory_preference(e,t){var i={filter:"",scope:"",extras:""};if(!directoryPreferences.hasOwnProperty(e)){var a={};for(var s in i)i.hasOwnProperty(s)&&(a[s]=i[s]);directoryPreferences[e]=a}return BP_DTheme.store_filter_settings&&(directoryPreferences[e][t]=jq.cookie("bp-"+e+"-"+t)),directoryPreferences[e][t]}function bp_set_directory_preference(e,t,i){var a={filter:"",scope:"",extras:""};if(!directoryPreferences.hasOwnProperty(e)){var s={};for(var r in a)a.hasOwnProperty(r)&&(s[r]=a[r]);directoryPreferences[e]=s}BP_DTheme.store_filter_settings&&jq.cookie("bp-"+e+"-"+t,i,{path:"/",secure:"https:"===window.location.protocol}),directoryPreferences[e][t]=i}function bp_init_activity(){var e=bp_get_directory_preference("activity","scope"),t=bp_get_directory_preference("activity","filter");void 0!==t&&jq("#activity-filter-select").length&&jq('#activity-filter-select select option[value="'+t+'"]').prop("selected",!0),void 0!==e&&jq(".activity-type-tabs").length&&(jq(".activity-type-tabs li").each(function(){jq(this).removeClass("selected")}),jq("#activity-"+e+", .item-list-tabs li.current").addClass("selected"))}function bp_init_objects(e){jq(e).each(function(t){var i=bp_get_directory_preference(e[t],"scope"),a=bp_get_directory_preference(e[t],"filter");void 0!==a&&jq("#"+e[t]+"-order-select select").length&&jq("#"+e[t]+'-order-select select option[value="'+a+'"]').prop("selected",!0),void 0!==i&&jq("div."+e[t]).length&&(jq(".item-list-tabs li").each(function(){jq(this).removeClass("selected")}),jq("#"+e[t]+"-"+i+", #object-nav li.current").addClass("selected"))})}function bp_filter_request(e,t,i,a,s,r,n,o,c){if("activity"===e)return!1;null===i&&(i="all"),bp_set_directory_preference(e,"scope",i),bp_set_directory_preference(e,"filter",t),bp_set_directory_preference(e,"extras",n),jq(".item-list-tabs li").each(function(){jq(this).removeClass("selected")}),jq("#"+e+"-"+i+", #object-nav li.current").addClass("selected"),jq(".item-list-tabs li.selected").addClass("loading"),jq('.item-list-tabs select option[value="'+t+'"]').prop("selected",!0),"friends"!==e&&"group_members"!==e||(e="members"),bp_ajax_request&&bp_ajax_request.abort();var l={};l["bp-"+e+"-filter"]=bp_get_directory_preference(e,"filter"),l["bp-"+e+"-scope"]=bp_get_directory_preference(e,"scope");var d=encodeURIComponent(jq.param(l));bp_ajax_request=jq.post(ajaxurl,{action:e+"_filter",cookie:d,object:e,filter:t,search_terms:s,scope:i,page:r,extras:n,template:c},function(e){if("pag-bottom"===o&&jq("#subnav").length){var t=jq("#subnav").parent();jq("html,body").animate({scrollTop:t.offset().top},"slow",function(){jq(a).fadeOut(100,function(){jq(this).html(e),jq(this).fadeIn(100)})})}else jq(a).fadeOut(100,function(){jq(this).html(e),jq(this).fadeIn(100)});jq(".item-list-tabs li.selected").removeClass("loading")})}function bp_activity_request(e,t){bp_set_directory_preference("activity","scope",e),bp_set_directory_preference("activity","filter",t),jq(".item-list-tabs li").each(function(){jq(this).removeClass("selected loading")}),jq("#activity-"+e+", .item-list-tabs li.current").addClass("selected"),jq("#object-nav.item-list-tabs li.selected, div.activity-type-tabs li.selected").addClass("loading"),jq('#activity-filter-select select option[value="'+t+'"]').prop("selected",!0),jq(".widget_bp_activity_widget h2 span.ajax-loader").show(),bp_ajax_request&&bp_ajax_request.abort();var i={"bp-activity-filter":bp_get_directory_preference("activity","filter"),"bp-activity-scope":bp_get_directory_preference("activity","scope")},a=encodeURIComponent(jq.param(i));bp_ajax_request=jq.post(ajaxurl,{action:"activity_widget_filter",cookie:a,_wpnonce_activity_filter:jq("#_wpnonce_activity_filter").val(),scope:e,filter:t},function(e){jq(".widget_bp_activity_widget h2 span.ajax-loader").hide(),jq("div.activity").fadeOut(100,function(){jq(this).html(e.contents),jq(this).fadeIn(100),bp_legacy_theme_hide_comments()}),void 0!==e.feed_url&&jq(".directory #subnav li.feed a, .home-page #subnav li.feed a").attr("href",e.feed_url),jq(".item-list-tabs li.selected").removeClass("loading")},"json")}function bp_legacy_theme_hide_comments(){var e,t,i,a=jq("div.activity-comments");if(!a.length)return!1;a.each(function(){jq(this).children("ul").children("li").length<5||(comments_div=jq(this),e=comments_div.parents("#activity-stream > li"),t=jq(this).children("ul").children("li"),i=" ",jq("#"+e.attr("id")+" li").length&&(i=jq("#"+e.attr("id")+" li").length),t.each(function(a){a<t.length-5&&(jq(this).hide(),a||jq(this).before('<li class="show-all"><a href="#'+e.attr("id")+'/show-all/">'+BP_DTheme.show_x_comments.replace("%d",i)+"</a></li>"))}))})}function checkAll(){var e,t=document.getElementsByTagName("input");for(e=0;e<t.length;e++)"checkbox"===t[e].type&&(""===$("check_all").checked?t[e].checked="":t[e].checked="checked")}function clear(e){if(e=document.getElementById(e)){var t=e.getElementsByTagName("INPUT"),i=e.getElementsByTagName("OPTION"),a=0;if(t)for(a=0;a<t.length;a++)t[a].checked="";if(i)for(a=0;a<i.length;a++)i[a].selected=!1}}function bp_get_cookies(){var e,t,i,a,s,r=document.cookie.split(";"),n={};for(e=0;e<r.length;e++)i=(t=r[e]).indexOf("="),a=jq.trim(unescape(t.slice(0,i))),s=unescape(t.slice(i+1)),0===a.indexOf("bp-")&&(n[a]=s);return encodeURIComponent(jq.param(n))}function bp_get_query_var(e,t){var i={};return(t=void 0===t?location.search.substr(1).split("&"):t.split("?")[1].split("&")).forEach(function(e){i[e.split("=")[0]]=e.split("=")[1]&&decodeURIComponent(e.split("=")[1])}),!(!i.hasOwnProperty(e)||null==i[e])&&i[e]}var jq=jQuery,bp_ajax_request=null,newest_activities="",activity_last_recorded=0,directoryPreferences={};jq(document).ready(function(){var e=1;bp_init_activity();var t=["members","groups","blogs","group_members"],i=jq("#whats-new");if(bp_init_objects(t),i.length&&bp_get_querystring("r")){var a=i.val();jq("#whats-new-options").slideDown(),i.animate({height:"3.8em"}),jq.scrollTo(i,500,{offset:-125,easing:"swing"}),i.val("").focus().val(a)}else jq("#whats-new-options").hide();if(i.focus(function(){jq("#whats-new-options").slideDown(),jq(this).animate({height:"3.8em"}),jq("#aw-whats-new-submit").prop("disabled",!1),jq(this).parent().addClass("active"),jq("#whats-new-content").addClass("active");var e=jq("form#whats-new-form"),t=jq("#activity-all");e.hasClass("submitted")&&e.removeClass("submitted"),t.length&&(t.hasClass("selected")?"-1"!==jq("#activity-filter-select select").val()&&(jq("#activity-filter-select select").val("-1"),jq("#activity-filter-select select").trigger("change")):(jq("#activity-filter-select select").val("-1"),t.children("a").trigger("click")))}),jq("#whats-new-form").on("focusout",function(e){var t=jq(this);setTimeout(function(){if(!t.find(":hover").length){if(""!==i.val())return;i.animate({height:"2.2em"}),jq("#whats-new-options").slideUp(),jq("#aw-whats-new-submit").prop("disabled",!0),jq("#whats-new-content").removeClass("active"),i.parent().removeClass("active")}},0)}),jq("#aw-whats-new-submit").on("click",function(){var e,t=0,i=jq(this),a=i.closest("form#whats-new-form"),s={};return jq.each(a.serializeArray(),function(e,t){"_"!==t.name.substr(0,1)&&"whats-new"!==t.name.substr(0,9)&&(s[t.name]?jq.isArray(s[t.name])?s[t.name].push(t.value):s[t.name]=new Array(s[t.name],t.value):s[t.name]=t.value)}),a.find("*").each(function(){(jq.nodeName(this,"textarea")||jq.nodeName(this,"input"))&&jq(this).prop("disabled",!0)}),jq("div.error").remove(),i.addClass("loading"),i.prop("disabled",!0),a.addClass("submitted"),object="",item_id=jq("#whats-new-post-in").val(),content=jq("#whats-new").val(),firstrow=jq("#buddypress ul.activity-list li").first(),activity_row=firstrow,timestamp=null,firstrow.length&&(activity_row.hasClass("load-newest")&&(activity_row=firstrow.next()),timestamp=activity_row.prop("class").match(/date-recorded-([0-9]+)/)),timestamp&&(t=timestamp[1]),item_id>0&&(object=jq("#whats-new-post-object").val()),e=jq.extend({action:"post_update",cookie:bp_get_cookies(),_wpnonce_post_update:jq("#_wpnonce_post_update").val(),content:content,object:object,item_id:item_id,since:t,_bp_as_nonce:jq("#_bp_as_nonce").val()||""},s),jq.post(ajaxurl,e,function(e){if(a.find("*").each(function(){(jq.nodeName(this,"textarea")||jq.nodeName(this,"input"))&&jq(this).prop("disabled",!1)}),e[0]+e[1]==="-1")a.prepend(e.substr(2,e.length)),jq("#"+a.attr("id")+" div.error").hide().fadeIn(200);else{if(0===jq("ul.activity-list").length&&(jq("div.error").slideUp(100).remove(),jq("#message").slideUp(100).remove(),jq("div.activity").append('<ul id="activity-stream" class="activity-list item-list">')),firstrow.hasClass("load-newest")&&firstrow.remove(),jq("#activity-stream").prepend(e),t||jq("#activity-stream li:first").addClass("new-update just-posted"),0!==jq("#latest-update").length){var i=jq("#activity-stream li.new-update .activity-content .activity-inner p").html(),s=jq("#activity-stream li.new-update .activity-content .activity-header p a.view").attr("href"),r="";""!==jq("#activity-stream li.new-update .activity-content .activity-inner p").text()&&(r=i+" "),r+='<a href="'+s+'" rel="nofollow">'+BP_DTheme.view+"</a>",jq("#latest-update").slideUp(300,function(){jq("#latest-update").html(r),jq("#latest-update").slideDown(300)})}jq("li.new-update").hide().slideDown(300),jq("li.new-update").removeClass("new-update"),jq("#whats-new").val(""),a.get(0).reset(),newest_activities="",activity_last_recorded=0}jq("#whats-new-options").slideUp(),jq("#whats-new-form textarea").animate({height:"2.2em"}),jq("#aw-whats-new-submit").prop("disabled",!0).removeClass("loading"),jq("#whats-new-content").removeClass("active")}),!1}),jq("div.activity-type-tabs").on("click",function(e){var t,i,a=jq(e.target).parent();if("STRONG"===e.target.nodeName||"SPAN"===e.target.nodeName)a=a.parent();else if("A"!==e.target.nodeName)return!1;return t=a.attr("id").substr(9,a.attr("id").length),i=jq("#activity-filter-select select").val(),"mentions"===t&&jq("#"+a.attr("id")+" a strong").remove(),bp_activity_request(t,i),!1}),jq("#activity-filter-select select").change(function(){var e,t=jq("div.activity-type-tabs li.selected"),i=jq(this).val();return e=t.length?t.attr("id").substr(9,t.attr("id").length):null,bp_activity_request(e,i),!1}),jq("div.activity").on("click",function(t){var i,a,s,r,n,o,c,l,d,p,u=jq(t.target);return u.hasClass("fav")||u.hasClass("unfav")?!u.hasClass("loading")&&(i=u.hasClass("fav")?"fav":"unfav",a=u.closest(".activity-item"),s=a.attr("id").substr(9,a.attr("id").length),c=bp_get_query_var("_wpnonce",u.attr("href")),u.addClass("loading"),jq.post(ajaxurl,{action:"activity_mark_"+i,cookie:bp_get_cookies(),id:s,nonce:c},function(e){u.removeClass("loading"),u.fadeOut(200,function(){jq(this).html(e),jq(this).attr("title","fav"===i?BP_DTheme.remove_fav:BP_DTheme.mark_as_fav),jq(this).fadeIn(200)}),"fav"===i?(jq(".item-list-tabs #activity-favs-personal-li").length||(jq(".item-list-tabs #activity-favorites").length||jq(".item-list-tabs ul #activity-mentions").before('<li id="activity-favorites"><a href="#">'+BP_DTheme.my_favs+" <span>0</span></a></li>"),jq(".item-list-tabs ul #activity-favorites span").html(Number(jq(".item-list-tabs ul #activity-favorites span").html())+1)),u.removeClass("fav"),u.addClass("unfav")):(u.removeClass("unfav"),u.addClass("fav"),jq(".item-list-tabs ul #activity-favorites span").html(Number(jq(".item-list-tabs ul #activity-favorites span").html())-1),Number(jq(".item-list-tabs ul #activity-favorites span").html())||(jq(".item-list-tabs ul #activity-favorites").hasClass("selected")&&bp_activity_request(null,null),jq(".item-list-tabs ul #activity-favorites").remove())),"activity-favorites"===jq(".item-list-tabs li.selected").attr("id")&&u.closest(".activity-item").slideUp(100)}),!1):u.hasClass("delete-activity")?(r=u.parents("div.activity ul li"),n=r.attr("id").substr(9,r.attr("id").length),o=u.attr("href"),c=o.split("_wpnonce="),l=r.prop("class").match(/date-recorded-([0-9]+)/),c=c[1],u.addClass("loading"),jq.post(ajaxurl,{action:"delete_activity",cookie:bp_get_cookies(),id:n,_wpnonce:c},function(e){e[0]+e[1]==="-1"?(r.prepend(e.substr(2,e.length)),r.children("#message").hide().fadeIn(300)):(r.slideUp(300),l&&activity_last_recorded===l[1]&&(newest_activities="",activity_last_recorded=0))}),!1):u.hasClass("spam-activity")?(r=u.parents("div.activity ul li"),l=r.prop("class").match(/date-recorded-([0-9]+)/),u.addClass("loading"),jq.post(ajaxurl,{action:"bp_spam_activity",cookie:encodeURIComponent(document.cookie),id:r.attr("id").substr(9,r.attr("id").length),_wpnonce:u.attr("href").split("_wpnonce=")[1]},function(e){e[0]+e[1]==="-1"?(r.prepend(e.substr(2,e.length)),r.children("#message").hide().fadeIn(300)):(r.slideUp(300),l&&activity_last_recorded===l[1]&&(newest_activities="",activity_last_recorded=0))}),!1):u.parent().hasClass("load-more")?(bp_ajax_request&&bp_ajax_request.abort(),jq("#buddypress li.load-more").addClass("loading"),d=e+1,p=[],jq(".activity-list li.just-posted").each(function(){p.push(jq(this).attr("id").replace("activity-",""))}),load_more_args={action:"activity_get_older_updates",cookie:bp_get_cookies(),page:d,exclude_just_posted:p.join(",")},load_more_search=bp_get_querystring("s"),load_more_search&&(load_more_args.search_terms=load_more_search),bp_ajax_request=jq.post(ajaxurl,load_more_args,function(t){jq("#buddypress li.load-more").removeClass("loading"),e=d,jq("#buddypress ul.activity-list").append(t.contents),u.parent().hide()},"json"),!1):void(u.parent().hasClass("load-newest")&&(t.preventDefault(),u.parent().hide(),activity_html=jq.parseHTML(newest_activities),jq.each(activity_html,function(e,t){"LI"===t.nodeName&&jq(t).hasClass("just-posted")&&jq("#"+jq(t).attr("id")).length&&jq("#"+jq(t).attr("id")).remove()}),jq("#buddypress ul.activity-list").prepend(newest_activities),newest_activities=""))}),jq("div.activity").on("click",".activity-read-more a",function(e){var t,i,a=jq(e.target),s=a.parent().attr("id").split("-"),r=s[3],n=s[0];return t="acomment"===n?"acomment-content":"activity-inner",i=jq("#"+n+"-"+r+" ."+t+":first"),jq(a).addClass("loading"),jq.post(ajaxurl,{action:"get_single_activity_content",activity_id:r},function(e){jq(i).slideUp(300).html(e).slideDown(300)}),!1}),jq("form.ac-form").hide(),jq(".activity-comments").length&&bp_legacy_theme_hide_comments(),jq("div.activity").on("click",function(e){var t,i,a,s,r,n,o,c,l,d,p,u,m,h,_,v=jq(e.target);return v.hasClass("acomment-reply")||v.parent().hasClass("acomment-reply")?(v.parent().hasClass("acomment-reply")&&(v=v.parent()),t=v.attr("id"),i=t.split("-"),a=i[2],s=v.attr("href").substr(10,v.attr("href").length),(r=jq("#ac-form-"+a)).css("display","none"),r.removeClass("root"),jq(".ac-form").hide(),r.children("div").each(function(){jq(this).hasClass("error")&&jq(this).hide()}),"comment"!==i[1]?jq("#acomment-"+s).append(r):jq("#activity-"+a+" .activity-comments").append(r),r.parent().hasClass("activity-comments")&&r.addClass("root"),r.slideDown(200),jq.scrollTo(r,500,{offset:-100,easing:"swing"}),jq("#ac-form-"+i[2]+" textarea").focus(),!1):"ac_form_submit"===v.attr("name")?(r=v.parents("form"),n=r.parent(),o=r.attr("id").split("-"),c=n.hasClass("activity-comments")?o[2]:n.attr("id").split("-")[1],content=jq("#"+r.attr("id")+" textarea"),jq("#"+r.attr("id")+" div.error").hide(),v.addClass("loading").prop("disabled",!0),content.addClass("loading").prop("disabled",!0),l={action:"new_activity_comment",cookie:bp_get_cookies(),_wpnonce_new_activity_comment:jq("#_wpnonce_new_activity_comment").val(),comment_id:c,form_id:o[2],content:content.val()},(d=jq("#_bp_as_nonce_"+c).val())&&(l["_bp_as_nonce_"+c]=d),jq.post(ajaxurl,l,function(e){if(v.removeClass("loading"),content.removeClass("loading"),e[0]+e[1]==="-1")r.append(jq(e.substr(2,e.length)).hide().fadeIn(200));else{var t=r.parent();r.fadeOut(200,function(){0===t.children("ul").length&&(t.hasClass("activity-comments")?t.prepend("<ul></ul>"):t.append("<ul></ul>"));var i=jq.trim(e);t.children("ul").append(jq(i).hide().fadeIn(200)),r.children("textarea").val(""),t.parent().addClass("has-comments")}),jq("#"+r.attr("id")+" textarea").val(""),u=Number(jq("#activity-"+o[2]+" a.acomment-reply span").html())+1,jq("#activity-"+o[2]+" a.acomment-reply span").html(u),(p=t.parents(".activity-comments").find(".show-all a"))&&p.html(BP_DTheme.show_x_comments.replace("%d",u))}jq(v).prop("disabled",!1),jq(content).prop("disabled",!1)}),!1):v.hasClass("acomment-delete")?(m=v.attr("href"),h=v.parent().parent(),r=h.parents("div.activity-comments").children("form"),_=m.split("_wpnonce="),_=_[1],c=m.split("cid="),c=c[1].split("&"),c=c[0],v.addClass("loading"),jq(".activity-comments ul .error").remove(),h.parents(".activity-comments").append(r),jq.post(ajaxurl,{action:"delete_activity_comment",cookie:bp_get_cookies(),_wpnonce:_,id:c},function(e){if(e[0]+e[1]==="-1")h.prepend(jq(e.substr(2,e.length)).hide().fadeIn(200));else{var t,i,a,s=jq("#"+h.attr("id")+" ul").children("li"),r=0;jq(s).each(function(){jq(this).is(":hidden")||r++}),h.fadeOut(200,function(){h.remove()}),i=(t=jq("#"+h.parents("#activity-stream > li").attr("id")+" a.acomment-reply span")).html()-(1+r),t.html(i),(a=h.parents(".activity-comments").find(".show-all a"))&&a.html(BP_DTheme.show_x_comments.replace("%d",i)),0===i&&jq(h.parents("#activity-stream > li")).removeClass("has-comments")}}),!1):v.hasClass("spam-activity-comment")?(m=v.attr("href"),h=v.parent().parent(),v.addClass("loading"),jq(".activity-comments ul div.error").remove(),h.parents(".activity-comments").append(h.parents(".activity-comments").children("form")),jq.post(ajaxurl,{action:"bp_spam_activity_comment",cookie:encodeURIComponent(document.cookie),_wpnonce:m.split("_wpnonce=")[1],id:m.split("cid=")[1].split("&")[0]},function(e){if(e[0]+e[1]==="-1")h.prepend(jq(e.substr(2,e.length)).hide().fadeIn(200));else{var t,i=jq("#"+h.attr("id")+" ul").children("li"),a=0;jq(i).each(function(){jq(this).is(":hidden")||a++}),h.fadeOut(200),t=h.parents("#activity-stream > li"),jq("#"+t.attr("id")+" a.acomment-reply span").html(jq("#"+t.attr("id")+" a.acomment-reply span").html()-(1+a))}}),!1):v.parent().hasClass("show-all")?(v.parent().addClass("loading"),setTimeout(function(){v.parent().parent().children("li").fadeIn(200,function(){v.parent().remove()})},600),!1):v.hasClass("ac-reply-cancel")?(jq(v).closest(".ac-form").slideUp(200),!1):void 0}),jq(document).keydown(function(e){(e=e||window.event).target?element=e.target:e.srcElement&&(element=e.srcElement),3===element.nodeType&&(element=element.parentNode),!0!==e.ctrlKey&&!0!==e.altKey&&!0!==e.metaKey&&27===(e.keyCode?e.keyCode:e.which)&&"TEXTAREA"===element.tagName&&jq(element).hasClass("ac-input")&&jq(element).parent().parent().parent().slideUp(200)}),jq(".dir-search, .groups-members-search").on("click",function(e){if(!jq(this).hasClass("no-ajax")){var t,i,a,s=jq(e.target);if("submit"===s.attr("type")){t=jq(".item-list-tabs li.selected").attr("id").split("-")[0],i=null,a=s.parent().find("#"+t+"_search").val(),"groups-members-search"===e.currentTarget.className&&(t="group_members",i="groups/single/members");var r=bp_get_directory_preference(t,"scope");return bp_filter_request(t,bp_get_directory_preference(t,"filter"),r,"div."+t,a,1,bp_get_directory_preference(t,"extras"),null,i),!1}}}),jq("div.item-list-tabs").on("click",function(e){if(jq("body").hasClass("type")&&jq("body").hasClass("directory")&&jq(this).addClass("no-ajax"),!jq(this).hasClass("no-ajax")&&!jq(e.target).hasClass("no-ajax")){var t,i,a,s="SPAN"===e.target.nodeName?e.target.parentNode:e.target,r=jq(s).parent();return"LI"!==r[0].nodeName||r.hasClass("last")?void 0:(t=r.attr("id").split("-"),"activity"!==(i=t[0])&&(a=t[1],bp_filter_request(i,jq("#"+i+"-order-select select").val(),a,"div."+i,jq("#"+i+"_search").val(),1,bp_get_directory_preference(i,"extras")),!1))}}),jq("li.filter select").change(function(){var e,t,i,a,s,r,n;return t=(e=jq(jq(".item-list-tabs li.selected").length?".item-list-tabs li.selected":this).attr("id").split("-"))[0],i=e[1],a=jq(this).val(),s=!1,r=null,jq(".dir-search input").length&&(s=jq(".dir-search input").val()),(n=jq(".groups-members-search input")).length&&(s=n.val(),t="members",i="groups"),"members"===t&&"groups"===i&&(t="group_members",r="groups/single/members"),"friends"===t&&(t="members"),bp_filter_request(t,a,i,"div."+t,s,1,bp_get_directory_preference(t,"extras"),null,r),!1}),jq("#buddypress").on("click",function(e){var t,i,a,s,r,n,o,c,l=jq(e.target);if(l.hasClass("button"))return!0;if(l.parent().parent().hasClass("pagination")&&!l.parent().parent().hasClass("no-ajax")){if(l.hasClass("dots")||l.hasClass("current"))return!1;i=(t=jq(jq(".item-list-tabs li.selected").length?".item-list-tabs li.selected":"li.filter select").attr("id").split("-"))[0],a=!1,s=jq(l).closest(".pagination-links").attr("id"),r=null,jq("div.dir-search input").length&&(a=!(a=jq(".dir-search input")).val()&&bp_get_querystring(a.attr("name"))?jq(".dir-search input").prop("placeholder"):a.val()),n=jq(l).hasClass("next")||jq(l).hasClass("prev")?jq(".pagination span.current").html():jq(l).html(),n=Number(n.replace(/\D/g,"")),jq(l).hasClass("next")?n++:jq(l).hasClass("prev")&&n--,(o=jq(".groups-members-search input")).length&&(a=o.val(),i="members"),"members"===i&&"groups"===t[1]&&(i="group_members",r="groups/single/members"),"admin"===i&&jq("body").hasClass("membership-requests")&&(i="requests"),c=-1!==s.indexOf("pag-bottom")?"pag-bottom":null;var d=bp_get_directory_preference(i,"scope");return bp_filter_request(i,bp_get_directory_preference(i,"filter"),d,"div."+i,a,n,bp_get_directory_preference(i,"extras"),c,r),!1}}),jq("#send-invite-form").on("click","#invite-list input",function(){var e,t,i=jq("#send-invite-form > .invite").length;jq(".ajax-loader").toggle(),i&&jq(this).parents("ul").find("input").prop("disabled",!0),e=jq(this).val(),t=!0===jq(this).prop("checked")?"invite":"uninvite",i||jq(".item-list-tabs li.selected").addClass("loading"),jq.post(ajaxurl,{action:"groups_invite_user",friend_action:t,cookie:bp_get_cookies(),_wpnonce:jq("#_wpnonce_invite_uninvite_user").val(),friend_id:e,group_id:jq("#group_id").val()},function(a){jq("#message")&&jq("#message").hide(),i?bp_filter_request("invite","bp-invite-filter","bp-invite-scope","div.invite",!1,1,"","",""):(jq(".ajax-loader").toggle(),"invite"===t?jq("#friend-list").append(a):"uninvite"===t&&jq("#friend-list li#uid-"+e).remove(),jq(".item-list-tabs li.selected").removeClass("loading"))})}),jq("#send-invite-form").on("click","a.remove",function(){var e=jq("#send-invite-form > .invite").length,t=jq(this).attr("id");return jq(".ajax-loader").toggle(),t=t.split("-"),t=t[1],jq.post(ajaxurl,{action:"groups_invite_user",friend_action:"uninvite",cookie:bp_get_cookies(),_wpnonce:jq("#_wpnonce_invite_uninvite_user").val(),friend_id:t,group_id:jq("#group_id").val()},function(i){e?bp_filter_request("invite","bp-invite-filter","bp-invite-scope","div.invite",!1,1,"","",""):(jq(".ajax-loader").toggle(),jq("#friend-list #uid-"+t).remove(),jq("#invite-list #f-"+t).prop("checked",!1))}),!1}),jq(".visibility-toggle-link").on("click",function(e){e.preventDefault(),jq(this).attr("aria-expanded","true").parent().hide().addClass("field-visibility-settings-hide").siblings(".field-visibility-settings").show().addClass("field-visibility-settings-open")}),jq(".field-visibility-settings-close").on("click",function(e){e.preventDefault(),jq(".visibility-toggle-link").attr("aria-expanded","false");var t=jq(this).parent(),i=t.find("input:checked").parent().text();t.hide().removeClass("field-visibility-settings-open").siblings(".field-visibility-settings-toggle").find(".current-visibility-level").text(i).end().show().removeClass("field-visibility-settings-hide")}),jq("#profile-edit-form input:not(:submit), #profile-edit-form textarea, #profile-edit-form select, #signup_form input:not(:submit), #signup_form textarea, #signup_form select").change(function(){var e=!0;jq("#profile-edit-form input:submit, #signup_form input:submit").on("click",function(){e=!1}),window.onbeforeunload=function(t){if(e)return BP_DTheme.unsaved_changes}}),jq("#friend-list a.accept, #friend-list a.reject").on("click",function(){var e,t=jq(this),i=jq(this).parents("#friend-list li"),a=jq(this).parents("li div.action"),s=i.attr("id").substr(11,i.attr("id").length),r=t.attr("href").split("_wpnonce=")[1];return!jq(this).hasClass("accepted")&&!jq(this).hasClass("rejected")&&(jq(this).hasClass("accept")?(e="accept_friendship",a.children("a.reject").css("visibility","hidden")):(e="reject_friendship",a.children("a.accept").css("visibility","hidden")),t.addClass("loading"),jq.post(ajaxurl,{action:e,cookie:bp_get_cookies(),id:s,_wpnonce:r},function(e){t.removeClass("loading"),e[0]+e[1]==="-1"?(i.prepend(e.substr(2,e.length)),i.children("#message").hide().fadeIn(200)):t.fadeOut(100,function(){jq(this).hasClass("accept")?(a.children("a.reject").hide(),jq(this).html(BP_DTheme.accepted).contents().unwrap()):(a.children("a.accept").hide(),jq(this).html(BP_DTheme.rejected).contents().unwrap())})}),!1)}),jq("#members-dir-list, #members-group-list, #item-header").on("click",".friendship-button a",function(){jq(this).parent().addClass("loading");var e=jq(this).attr("id"),t=jq(this).attr("href"),i=jq(this);return e=e.split("-"),e=e[1],t=t.split("?_wpnonce="),t=t[1].split("&"),t=t[0],jq.post(ajaxurl,{action:"addremove_friend",cookie:bp_get_cookies(),fid:e,_wpnonce:t},function(e){var t=i.attr("rel");parentdiv=i.parent(),"add"===t?jq(parentdiv).fadeOut(200,function(){parentdiv.removeClass("add_friend"),parentdiv.removeClass("loading"),parentdiv.addClass("pending_friend"),parentdiv.fadeIn(200).html(e)}):"remove"===t&&jq(parentdiv).fadeOut(200,function(){parentdiv.removeClass("remove_friend"),parentdiv.removeClass("loading"),parentdiv.addClass("add"),parentdiv.fadeIn(200).html(e)})}),!1}),jq("#buddypress").on("click",".group-button .leave-group",function(){if(!1===confirm(BP_DTheme.leave_group_confirm))return!1}),jq("#groups-dir-list").on("click",".group-button a",function(){var e=jq(this).parent().attr("id"),t=jq(this).attr("href"),i=jq(this);return e=e.split("-"),e=e[1],t=t.split("?_wpnonce="),t=t[1].split("&"),t=t[0],(!i.hasClass("leave-group")||!1!==confirm(BP_DTheme.leave_group_confirm))&&(jq.post(ajaxurl,{action:"joinleave_group",cookie:bp_get_cookies(),gid:e,_wpnonce:t},function(e){var t=i.parent();jq("body.directory").length?jq(t).fadeOut(200,function(){t.fadeIn(200).html(e);var a=jq("#groups-personal span"),s=1;i.hasClass("leave-group")?(t.hasClass("hidden")&&t.closest("li").slideUp(200),s=0):i.hasClass("request-membership")&&(s=!1),a.length&&!1!==s&&(s?a.text(1+(a.text()>>0)):a.text((a.text()>>0)-1))}):window.location.reload()}),!1)}),jq("#groups-list li.hidden").each(function(){"none"===jq(this).css("display")&&jq(this).css("cssText","display: list-item !important")}),jq("#buddypress").on("click",".pending",function(){return!1}),jq("body").hasClass("register")){var s=jq("#signup_with_blog");s.prop("checked")||jq("#blog-details").toggle(),s.change(function(){jq("#blog-details").toggle()})}jq(".message-search").on("click",function(e){if(!jq(this).hasClass("no-ajax")){var t,i=jq(e.target);if("submit"===i.attr("type")||"button"===i.attr("type")){var a=bp_get_directory_preference(t="messages","scope"),s=bp_get_directory_preference(t,"filter"),r=bp_get_directory_preference(t,"extras");return bp_filter_request(t,s,a,"div."+t,jq("#messages_search").val(),1,r),!1}}}),jq("#send_reply_button").click(function(){var e=jq("#messages_order").val()||"ASC",t=jq("#message-recipients").offset(),i=jq("#send_reply_button");return jq(i).addClass("loading").prop("disabled",!0),jq.post(ajaxurl,{action:"messages_send_reply",cookie:bp_get_cookies(),_wpnonce:jq("#send_message_nonce").val(),content:jq("#message_content").val(),send_to:jq("#send_to").val(),subject:jq("#subject").val(),thread_id:jq("#thread_id").val()},function(a){a[0]+a[1]==="-1"?jq("#send-reply").prepend(a.substr(2,a.length)):(jq("#send-reply #message").remove(),jq("#message_content").val(""),"ASC"===e?jq("#send-reply").before(a):(jq("#message-recipients").after(a),jq(window).scrollTop(t.top)),jq(".new-message").hide().slideDown(200,function(){jq(".new-message").removeClass("new-message")})),jq(i).removeClass("loading").prop("disabled",!1)}),!1}),jq("body.messages #item-body div.messages").on("change","#message-type-select",function(){var e=this.value,t=jq('td input[type="checkbox"]'),i="checked";switch(t.each(function(e){t[e].checked=""}),e){case"unread":t=jq('tr.unread td input[type="checkbox"]');break;case"read":t=jq('tr.read td input[type="checkbox"]');break;case"":i=""}t.each(function(e){t[e].checked=i})}),jq("#select-all-messages").click(function(e){this.checked?jq(".message-check").each(function(){this.checked=!0}):jq(".message-check").each(function(){this.checked=!1})}),jq("#messages-bulk-manage").attr("disabled","disabled"),jq("#messages-select").on("change",function(){jq("#messages-bulk-manage").attr("disabled",jq(this).val().length<=0)}),starAction=function(){var e=jq(this);return jq.post(ajaxurl,{action:"messages_star",message_id:e.data("message-id"),star_status:e.data("star-status"),nonce:e.data("star-nonce"),bulk:e.data("star-bulk")},function(t){1===parseInt(t,10)&&("unstar"===e.data("star-status")?(e.data("star-status","star"),e.removeClass("message-action-unstar").addClass("message-action-star"),e.find(".bp-screen-reader-text").text(BP_PM_Star.strings.text_star),1===BP_PM_Star.is_single_thread?e.attr("data-bp-tooltip",BP_PM_Star.strings.title_star):e.attr("data-bp-tooltip",BP_PM_Star.strings.title_star_thread)):(e.data("star-status","unstar"),e.removeClass("message-action-star").addClass("message-action-unstar"),e.find(".bp-screen-reader-text").text(BP_PM_Star.strings.text_unstar),1===BP_PM_Star.is_single_thread?e.attr("data-bp-tooltip",BP_PM_Star.strings.title_unstar):e.attr("data-bp-tooltip",BP_PM_Star.strings.title_unstar_thread)))}),!1},jq("#message-threads").on("click","td.thread-star a",starAction),jq("#message-thread").on("click",".message-star-actions a",starAction),jq("#message-threads td.bulk-select-check :checkbox").on("change",function(){var e=jq(this),t=e.closest("tr").find(".thread-star a");e.prop("checked")?"unstar"===t.data("star-status")?BP_PM_Star.star_counter++:BP_PM_Star.unstar_counter++:"unstar"===t.data("star-status")?BP_PM_Star.star_counter--:BP_PM_Star.unstar_counter--,BP_PM_Star.star_counter>0&&0===parseInt(BP_PM_Star.unstar_counter,10)?jq('option[value="star"]').hide():jq('option[value="star"]').show(),BP_PM_Star.unstar_counter>0&&0===parseInt(BP_PM_Star.star_counter,10)?jq('option[value="unstar"]').hide():jq('option[value="unstar"]').show()}),jq("#select-all-notifications").click(function(e){this.checked?jq(".notification-check").each(function(){this.checked=!0}):jq(".notification-check").each(function(){this.checked=!1})}),jq("#notification-bulk-manage").attr("disabled","disabled"),jq("#notification-select").on("change",function(){jq("#notification-bulk-manage").attr("disabled",jq(this).val().length<=0)}),jq("#close-notice").on("click",function(){return jq(this).addClass("loading"),jq("#sidebar div.error").remove(),jq.post(ajaxurl,{action:"messages_close_notice",notice_id:jq(".notice").attr("rel").substr(2,jq(".notice").attr("rel").length),nonce:jq("#close-notice-nonce").val()},function(e){jq("#close-notice").removeClass("loading"),e[0]+e[1]==="-1"?(jq(".notice").prepend(e.substr(2,e.length)),jq("#sidebar div.error").hide().fadeIn(200)):jq(".notice").slideUp(100)}),!1}),jq("#wp-admin-bar ul.main-nav li, #nav li").mouseover(function(){jq(this).addClass("sfhover")}),jq("#wp-admin-bar ul.main-nav li, #nav li").mouseout(function(){jq(this).removeClass("sfhover")}),jq("#wp-admin-bar-logout, a.logout").on("click",function(){jq.removeCookie("bp-activity-scope",{path:"/",secure:"https:"===window.location.protocol}),jq.removeCookie("bp-activity-filter",{path:"/",secure:"https:"===window.location.protocol}),jq.removeCookie("bp-activity-oldestpage",{path:"/",secure:"https:"===window.location.protocol});var e=["members","groups","blogs","forums"];jq(e).each(function(t){jq.removeCookie("bp-"+e[t]+"-scope",{path:"/",secure:"https:"===window.location.protocol}),jq.removeCookie("bp-"+e[t]+"-filter",{path:"/",secure:"https:"===window.location.protocol}),jq.removeCookie("bp-"+e[t]+"-extras",{path:"/",secure:"https:"===window.location.protocol})})}),jq("body").hasClass("no-js")&&jq("body").attr("class",jq("body").attr("class").replace(/no-js/,"js")),"undefined"!=typeof wp&&void 0!==wp.heartbeat&&void 0!==BP_DTheme.pulse&&(wp.heartbeat.interval(Number(BP_DTheme.pulse)),jq.fn.extend({"heartbeat-send":function(){return this.bind("heartbeat-send.buddypress")}}));var r=0;jq(document).on("heartbeat-send.buddypress",function(e,t){r=0,jq("#buddypress ul.activity-list li").first().prop("id")&&(timestamp=jq("#buddypress ul.activity-list li").first().prop("class").match(/date-recorded-([0-9]+)/),timestamp&&(r=timestamp[1])),(0===activity_last_recorded||Number(r)>activity_last_recorded)&&(activity_last_recorded=Number(r)),t.bp_activity_last_recorded=activity_last_recorded,last_recorded_search=bp_get_querystring("s"),last_recorded_search&&(t.bp_activity_last_recorded_search_terms=last_recorded_search)}),jq(document).on("heartbeat-tick",function(e,t){t.bp_activity_newest_activities&&(newest_activities=t.bp_activity_newest_activities.activities+newest_activities,activity_last_recorded=Number(t.bp_activity_newest_activities.last_recorded),jq("#buddypress ul.activity-list li").first().hasClass("load-newest")||jq("#buddypress ul.activity-list").prepend('<li class="load-newest"><a href="#newest">'+BP_DTheme.newest+"</a></li>"))})}); \ No newline at end of file +function bp_get_directory_preference(e,t){var i={filter:"",scope:"",extras:""};if(!directoryPreferences.hasOwnProperty(e)){var a={};for(var s in i)i.hasOwnProperty(s)&&(a[s]=i[s]);directoryPreferences[e]=a}return BP_DTheme.store_filter_settings&&(directoryPreferences[e][t]=jq.cookie("bp-"+e+"-"+t)),directoryPreferences[e][t]}function bp_set_directory_preference(e,t,i){var a={filter:"",scope:"",extras:""};if(!directoryPreferences.hasOwnProperty(e)){var s={};for(var r in a)a.hasOwnProperty(r)&&(s[r]=a[r]);directoryPreferences[e]=s}BP_DTheme.store_filter_settings&&jq.cookie("bp-"+e+"-"+t,i,{path:"/",secure:"https:"===window.location.protocol}),directoryPreferences[e][t]=i}function bp_init_activity(){var e=bp_get_directory_preference("activity","scope"),t=bp_get_directory_preference("activity","filter");void 0!==t&&jq("#activity-filter-select").length&&jq('#activity-filter-select select option[value="'+t+'"]').prop("selected",!0),void 0!==e&&jq(".activity-type-tabs").length&&(jq(".activity-type-tabs li").each(function(){jq(this).removeClass("selected")}),jq("#activity-"+e+", .item-list-tabs li.current").addClass("selected"))}function bp_init_objects(e){jq(e).each(function(t){var i=bp_get_directory_preference(e[t],"scope"),a=bp_get_directory_preference(e[t],"filter");void 0!==a&&jq("#"+e[t]+"-order-select select").length&&jq("#"+e[t]+'-order-select select option[value="'+a+'"]').prop("selected",!0),void 0!==i&&jq("div."+e[t]).length&&(jq(".item-list-tabs li").each(function(){jq(this).removeClass("selected")}),jq("#"+e[t]+"-"+i+", #object-nav li.current").addClass("selected"))})}function bp_filter_request(e,t,i,a,s,r,n,o,c){if("activity"===e)return!1;null===i&&(i="all"),bp_set_directory_preference(e,"scope",i),bp_set_directory_preference(e,"filter",t),bp_set_directory_preference(e,"extras",n),jq(".item-list-tabs li").each(function(){jq(this).removeClass("selected")}),jq("#"+e+"-"+i+", #object-nav li.current").addClass("selected"),jq(".item-list-tabs li.selected").addClass("loading"),jq('.item-list-tabs select option[value="'+t+'"]').prop("selected",!0),"friends"!==e&&"group_members"!==e||(e="members"),bp_ajax_request&&bp_ajax_request.abort();var l={};l["bp-"+e+"-filter"]=bp_get_directory_preference(e,"filter"),l["bp-"+e+"-scope"]=bp_get_directory_preference(e,"scope");var d=encodeURIComponent(jq.param(l));bp_ajax_request=jq.post(ajaxurl,{action:e+"_filter",cookie:d,object:e,filter:t,search_terms:s,scope:i,page:r,extras:n,template:c},function(e){if("pag-bottom"===o&&jq("#subnav").length){var t=jq("#subnav").parent();jq("html,body").animate({scrollTop:t.offset().top},"slow",function(){jq(a).fadeOut(100,function(){jq(this).html(e),jq(this).fadeIn(100)})})}else jq(a).fadeOut(100,function(){jq(this).html(e),jq(this).fadeIn(100)});jq(".item-list-tabs li.selected").removeClass("loading")})}function bp_activity_request(e,t){bp_set_directory_preference("activity","scope",e),bp_set_directory_preference("activity","filter",t),jq(".item-list-tabs li").each(function(){jq(this).removeClass("selected loading")}),jq("#activity-"+e+", .item-list-tabs li.current").addClass("selected"),jq("#object-nav.item-list-tabs li.selected, div.activity-type-tabs li.selected").addClass("loading"),jq('#activity-filter-select select option[value="'+t+'"]').prop("selected",!0),jq(".widget_bp_activity_widget h2 span.ajax-loader").show(),bp_ajax_request&&bp_ajax_request.abort();var i={"bp-activity-filter":bp_get_directory_preference("activity","filter"),"bp-activity-scope":bp_get_directory_preference("activity","scope")},a=encodeURIComponent(jq.param(i));bp_ajax_request=jq.post(ajaxurl,{action:"activity_widget_filter",cookie:a,_wpnonce_activity_filter:jq("#_wpnonce_activity_filter").val(),scope:e,filter:t},function(e){jq(".widget_bp_activity_widget h2 span.ajax-loader").hide(),jq("div.activity").fadeOut(100,function(){jq(this).html(e.contents),jq(this).fadeIn(100),bp_legacy_theme_hide_comments()}),void 0!==e.feed_url&&jq(".directory #subnav li.feed a, .home-page #subnav li.feed a").attr("href",e.feed_url),jq(".item-list-tabs li.selected").removeClass("loading")},"json")}function bp_legacy_theme_hide_comments(){var e,t,i,a=jq("div.activity-comments");if(!a.length)return!1;a.each(function(){jq(this).children("ul").children("li").length<5||(comments_div=jq(this),e=comments_div.parents("#activity-stream > li"),t=jq(this).children("ul").children("li"),i=" ",jq("#"+e.attr("id")+" li").length&&(i=jq("#"+e.attr("id")+" li").length),t.each(function(a){a<t.length-5&&(jq(this).hide(),a||jq(this).before('<li class="show-all"><a href="#'+e.attr("id")+'/show-all/">'+BP_DTheme.show_x_comments.replace("%d",i)+"</a></li>"))}))})}function checkAll(){var e,t=document.getElementsByTagName("input");for(e=0;e<t.length;e++)"checkbox"===t[e].type&&(""===$("check_all").checked?t[e].checked="":t[e].checked="checked")}function clear(e){if(e=document.getElementById(e)){var t=e.getElementsByTagName("INPUT"),i=e.getElementsByTagName("OPTION"),a=0;if(t)for(a=0;a<t.length;a++)t[a].checked="";if(i)for(a=0;a<i.length;a++)i[a].selected=!1}}function bp_get_cookies(){var e,t,i,a,s,r=document.cookie.split(";"),n={};for(e=0;e<r.length;e++)i=(t=r[e]).indexOf("="),a=jq.trim(unescape(t.slice(0,i))),s=unescape(t.slice(i+1)),0===a.indexOf("bp-")&&(n[a]=s);return encodeURIComponent(jq.param(n))}function bp_get_query_var(e,t){var i={};return(t=void 0===t?location.search.substr(1).split("&"):t.split("?")[1].split("&")).forEach(function(e){i[e.split("=")[0]]=e.split("=")[1]&&decodeURIComponent(e.split("=")[1])}),!(!i.hasOwnProperty(e)||null==i[e])&&i[e]}var jq=jQuery,bp_ajax_request=null,newest_activities="",activity_last_recorded=0,directoryPreferences={};jq(document).ready(function(){var e=1;bp_init_activity();var t=["members","groups","blogs","group_members"],i=jq("#whats-new");if(bp_init_objects(t),i.length&&bp_get_querystring("r")){var a=i.val();jq("#whats-new-options").slideDown(),i.animate({height:"3.8em"}),jq.scrollTo(i,500,{offset:-125,easing:"swing"}),i.val("").focus().val(a)}else jq("#whats-new-options").hide();if(i.focus(function(){jq("#whats-new-options").slideDown(),jq(this).animate({height:"3.8em"}),jq("#aw-whats-new-submit").prop("disabled",!1),jq(this).parent().addClass("active"),jq("#whats-new-content").addClass("active");var e=jq("form#whats-new-form"),t=jq("#activity-all");e.hasClass("submitted")&&e.removeClass("submitted"),t.length&&(t.hasClass("selected")?"-1"!==jq("#activity-filter-select select").val()&&(jq("#activity-filter-select select").val("-1"),jq("#activity-filter-select select").trigger("change")):(jq("#activity-filter-select select").val("-1"),t.children("a").trigger("click")))}),jq("#whats-new-form").on("focusout",function(e){var t=jq(this);setTimeout(function(){if(!t.find(":hover").length){if(""!==i.val())return;i.animate({height:"2.2em"}),jq("#whats-new-options").slideUp(),jq("#aw-whats-new-submit").prop("disabled",!0),jq("#whats-new-content").removeClass("active"),i.parent().removeClass("active")}},0)}),jq("#aw-whats-new-submit").on("click",function(){var e,t=0,i=jq(this),a=i.closest("form#whats-new-form"),s={};return jq.each(a.serializeArray(),function(e,t){"_"!==t.name.substr(0,1)&&"whats-new"!==t.name.substr(0,9)&&(s[t.name]?jq.isArray(s[t.name])?s[t.name].push(t.value):s[t.name]=new Array(s[t.name],t.value):s[t.name]=t.value)}),a.find("*").each(function(){(jq.nodeName(this,"textarea")||jq.nodeName(this,"input"))&&jq(this).prop("disabled",!0)}),jq("div.error").remove(),i.addClass("loading"),i.prop("disabled",!0),a.addClass("submitted"),object="",item_id=jq("#whats-new-post-in").val(),content=jq("#whats-new").val(),firstrow=jq("#buddypress ul.activity-list li").first(),activity_row=firstrow,timestamp=null,firstrow.length&&(activity_row.hasClass("load-newest")&&(activity_row=firstrow.next()),timestamp=activity_row.prop("class").match(/date-recorded-([0-9]+)/)),timestamp&&(t=timestamp[1]),item_id>0&&(object=jq("#whats-new-post-object").val()),e=jq.extend({action:"post_update",cookie:bp_get_cookies(),_wpnonce_post_update:jq("#_wpnonce_post_update").val(),content:content,object:object,item_id:item_id,since:t,_bp_as_nonce:jq("#_bp_as_nonce").val()||""},s),jq.post(ajaxurl,e,function(e){if(a.find("*").each(function(){(jq.nodeName(this,"textarea")||jq.nodeName(this,"input"))&&jq(this).prop("disabled",!1)}),e[0]+e[1]==="-1")a.prepend(e.substr(2,e.length)),jq("#"+a.attr("id")+" div.error").hide().fadeIn(200);else{if(0===jq("ul.activity-list").length&&(jq("div.error").slideUp(100).remove(),jq("#message").slideUp(100).remove(),jq("div.activity").append('<ul id="activity-stream" class="activity-list item-list">')),firstrow.hasClass("load-newest")&&firstrow.remove(),jq("#activity-stream").prepend(e),t||jq("#activity-stream li:first").addClass("new-update just-posted"),0!==jq("#latest-update").length){var i=jq("#activity-stream li.new-update .activity-content .activity-inner p").html(),s=jq("#activity-stream li.new-update .activity-content .activity-header p a.view").attr("href"),r="";""!==jq("#activity-stream li.new-update .activity-content .activity-inner p").text()&&(r=i+" "),r+='<a href="'+s+'" rel="nofollow">'+BP_DTheme.view+"</a>",jq("#latest-update").slideUp(300,function(){jq("#latest-update").html(r),jq("#latest-update").slideDown(300)})}jq("li.new-update").hide().slideDown(300),jq("li.new-update").removeClass("new-update"),jq("#whats-new").val(""),a.get(0).reset(),newest_activities="",activity_last_recorded=0}jq("#whats-new-options").slideUp(),jq("#whats-new-form textarea").animate({height:"2.2em"}),jq("#aw-whats-new-submit").prop("disabled",!0).removeClass("loading"),jq("#whats-new-content").removeClass("active")}),!1}),jq("div.activity-type-tabs").on("click",function(e){var t,i,a=jq(e.target).parent();if("STRONG"===e.target.nodeName||"SPAN"===e.target.nodeName)a=a.parent();else if("A"!==e.target.nodeName)return!1;return t=a.attr("id").substr(9,a.attr("id").length),i=jq("#activity-filter-select select").val(),"mentions"===t&&jq("#"+a.attr("id")+" a strong").remove(),bp_activity_request(t,i),!1}),jq("#activity-filter-select select").change(function(){var e,t=jq("div.activity-type-tabs li.selected"),i=jq(this).val();return e=t.length?t.attr("id").substr(9,t.attr("id").length):null,bp_activity_request(e,i),!1}),jq("div.activity").on("click",function(t){var i,a,s,r,n,o,c,l,d,p,u=jq(t.target);return u.hasClass("fav")||u.hasClass("unfav")?!u.hasClass("loading")&&(i=u.hasClass("fav")?"fav":"unfav",a=u.closest(".activity-item"),s=a.attr("id").substr(9,a.attr("id").length),c=bp_get_query_var("_wpnonce",u.attr("href")),u.addClass("loading"),jq.post(ajaxurl,{action:"activity_mark_"+i,cookie:bp_get_cookies(),id:s,nonce:c},function(e){u.removeClass("loading"),u.fadeOut(200,function(){jq(this).html(e),jq(this).attr("title","fav"===i?BP_DTheme.remove_fav:BP_DTheme.mark_as_fav),jq(this).fadeIn(200)}),"fav"===i?(jq(".item-list-tabs #activity-favs-personal-li").length||(jq(".item-list-tabs #activity-favorites").length||jq(".item-list-tabs ul #activity-mentions").before('<li id="activity-favorites"><a href="#">'+BP_DTheme.my_favs+" <span>0</span></a></li>"),jq(".item-list-tabs ul #activity-favorites span").html(Number(jq(".item-list-tabs ul #activity-favorites span").html())+1)),u.removeClass("fav"),u.addClass("unfav")):(u.removeClass("unfav"),u.addClass("fav"),jq(".item-list-tabs ul #activity-favorites span").html(Number(jq(".item-list-tabs ul #activity-favorites span").html())-1),Number(jq(".item-list-tabs ul #activity-favorites span").html())||(jq(".item-list-tabs ul #activity-favorites").hasClass("selected")&&bp_activity_request(null,null),jq(".item-list-tabs ul #activity-favorites").remove())),"activity-favorites"===jq(".item-list-tabs li.selected").attr("id")&&u.closest(".activity-item").slideUp(100)}),!1):u.hasClass("delete-activity")?(r=u.parents("div.activity ul li"),n=r.attr("id").substr(9,r.attr("id").length),o=u.attr("href"),c=o.split("_wpnonce="),l=r.prop("class").match(/date-recorded-([0-9]+)/),c=c[1],u.addClass("loading"),jq.post(ajaxurl,{action:"delete_activity",cookie:bp_get_cookies(),id:n,_wpnonce:c},function(e){e[0]+e[1]==="-1"?(r.prepend(e.substr(2,e.length)),r.children("#message").hide().fadeIn(300)):(r.slideUp(300),l&&activity_last_recorded===l[1]&&(newest_activities="",activity_last_recorded=0))}),!1):u.hasClass("spam-activity")?(r=u.parents("div.activity ul li"),l=r.prop("class").match(/date-recorded-([0-9]+)/),u.addClass("loading"),jq.post(ajaxurl,{action:"bp_spam_activity",cookie:encodeURIComponent(document.cookie),id:r.attr("id").substr(9,r.attr("id").length),_wpnonce:u.attr("href").split("_wpnonce=")[1]},function(e){e[0]+e[1]==="-1"?(r.prepend(e.substr(2,e.length)),r.children("#message").hide().fadeIn(300)):(r.slideUp(300),l&&activity_last_recorded===l[1]&&(newest_activities="",activity_last_recorded=0))}),!1):u.parent().hasClass("load-more")?(bp_ajax_request&&bp_ajax_request.abort(),jq("#buddypress li.load-more").addClass("loading"),d=e+1,p=[],jq(".activity-list li.just-posted").each(function(){p.push(jq(this).attr("id").replace("activity-",""))}),load_more_args={action:"activity_get_older_updates",cookie:bp_get_cookies(),page:d,exclude_just_posted:p.join(",")},load_more_search=bp_get_querystring("s"),load_more_search&&(load_more_args.search_terms=load_more_search),bp_ajax_request=jq.post(ajaxurl,load_more_args,function(t){jq("#buddypress li.load-more").removeClass("loading"),e=d,jq("#buddypress ul.activity-list").append(t.contents),u.parent().hide()},"json"),!1):void(u.parent().hasClass("load-newest")&&(t.preventDefault(),u.parent().hide(),activity_html=jq.parseHTML(newest_activities),jq.each(activity_html,function(e,t){"LI"===t.nodeName&&jq(t).hasClass("just-posted")&&jq("#"+jq(t).attr("id")).length&&jq("#"+jq(t).attr("id")).remove()}),jq("#buddypress ul.activity-list").prepend(newest_activities),newest_activities=""))}),jq("div.activity").on("click",".activity-read-more a",function(e){var t,i,a=jq(e.target),s=a.parent().attr("id").split("-"),r=s[3],n=s[0];return t="acomment"===n?"acomment-content":"activity-inner",i=jq("#"+n+"-"+r+" ."+t+":first"),jq(a).addClass("loading"),jq.post(ajaxurl,{action:"get_single_activity_content",activity_id:r},function(e){jq(i).slideUp(300).html(e).slideDown(300)}),!1}),jq("form.ac-form").hide(),jq(".activity-comments").length&&bp_legacy_theme_hide_comments(),jq("div.activity").on("click",function(e){var t,i,a,s,r,n,o,c,l,d,p,u,m,h,_,v=jq(e.target);return v.hasClass("acomment-reply")||v.parent().hasClass("acomment-reply")?(v.parent().hasClass("acomment-reply")&&(v=v.parent()),t=v.attr("id"),i=t.split("-"),a=i[2],s=v.attr("href").substr(10,v.attr("href").length),(r=jq("#ac-form-"+a)).css("display","none"),r.removeClass("root"),jq(".ac-form").hide(),r.children("div").each(function(){jq(this).hasClass("error")&&jq(this).hide()}),"comment"!==i[1]?jq("#acomment-"+s).append(r):jq("#activity-"+a+" .activity-comments").append(r),r.parent().hasClass("activity-comments")&&r.addClass("root"),r.slideDown(200),jq.scrollTo(r,500,{offset:-100,easing:"swing"}),jq("#ac-form-"+i[2]+" textarea").focus(),!1):"ac_form_submit"===v.attr("name")?(r=v.parents("form"),n=r.parent(),o=r.attr("id").split("-"),c=n.hasClass("activity-comments")?o[2]:n.attr("id").split("-")[1],content=jq("#"+r.attr("id")+" textarea"),jq("#"+r.attr("id")+" div.error").hide(),v.addClass("loading").prop("disabled",!0),content.addClass("loading").prop("disabled",!0),l={action:"new_activity_comment",cookie:bp_get_cookies(),_wpnonce_new_activity_comment:jq("#_wpnonce_new_activity_comment_"+o[2]).val(),comment_id:c,form_id:o[2],content:content.val()},(d=jq("#_bp_as_nonce_"+c).val())&&(l["_bp_as_nonce_"+c]=d),jq.post(ajaxurl,l,function(e){if(v.removeClass("loading"),content.removeClass("loading"),e[0]+e[1]==="-1")r.append(jq(e.substr(2,e.length)).hide().fadeIn(200));else{var t=r.parent();r.fadeOut(200,function(){0===t.children("ul").length&&(t.hasClass("activity-comments")?t.prepend("<ul></ul>"):t.append("<ul></ul>"));var i=jq.trim(e);t.children("ul").append(jq(i).hide().fadeIn(200)),r.children("textarea").val(""),t.parent().addClass("has-comments")}),jq("#"+r.attr("id")+" textarea").val(""),u=Number(jq("#activity-"+o[2]+" a.acomment-reply span").html())+1,jq("#activity-"+o[2]+" a.acomment-reply span").html(u),(p=t.parents(".activity-comments").find(".show-all a"))&&p.html(BP_DTheme.show_x_comments.replace("%d",u))}jq(v).prop("disabled",!1),jq(content).prop("disabled",!1)}),!1):v.hasClass("acomment-delete")?(m=v.attr("href"),h=v.parent().parent(),r=h.parents("div.activity-comments").children("form"),_=m.split("_wpnonce="),_=_[1],c=m.split("cid="),c=c[1].split("&"),c=c[0],v.addClass("loading"),jq(".activity-comments ul .error").remove(),h.parents(".activity-comments").append(r),jq.post(ajaxurl,{action:"delete_activity_comment",cookie:bp_get_cookies(),_wpnonce:_,id:c},function(e){if(e[0]+e[1]==="-1")h.prepend(jq(e.substr(2,e.length)).hide().fadeIn(200));else{var t,i,a,s=jq("#"+h.attr("id")+" ul").children("li"),r=0;jq(s).each(function(){jq(this).is(":hidden")||r++}),h.fadeOut(200,function(){h.remove()}),i=(t=jq("#"+h.parents("#activity-stream > li").attr("id")+" a.acomment-reply span")).html()-(1+r),t.html(i),(a=h.parents(".activity-comments").find(".show-all a"))&&a.html(BP_DTheme.show_x_comments.replace("%d",i)),0===i&&jq(h.parents("#activity-stream > li")).removeClass("has-comments")}}),!1):v.hasClass("spam-activity-comment")?(m=v.attr("href"),h=v.parent().parent(),v.addClass("loading"),jq(".activity-comments ul div.error").remove(),h.parents(".activity-comments").append(h.parents(".activity-comments").children("form")),jq.post(ajaxurl,{action:"bp_spam_activity_comment",cookie:encodeURIComponent(document.cookie),_wpnonce:m.split("_wpnonce=")[1],id:m.split("cid=")[1].split("&")[0]},function(e){if(e[0]+e[1]==="-1")h.prepend(jq(e.substr(2,e.length)).hide().fadeIn(200));else{var t,i=jq("#"+h.attr("id")+" ul").children("li"),a=0;jq(i).each(function(){jq(this).is(":hidden")||a++}),h.fadeOut(200),t=h.parents("#activity-stream > li"),jq("#"+t.attr("id")+" a.acomment-reply span").html(jq("#"+t.attr("id")+" a.acomment-reply span").html()-(1+a))}}),!1):v.parent().hasClass("show-all")?(v.parent().addClass("loading"),setTimeout(function(){v.parent().parent().children("li").fadeIn(200,function(){v.parent().remove()})},600),!1):v.hasClass("ac-reply-cancel")?(jq(v).closest(".ac-form").slideUp(200),!1):void 0}),jq(document).keydown(function(e){(e=e||window.event).target?element=e.target:e.srcElement&&(element=e.srcElement),3===element.nodeType&&(element=element.parentNode),!0!==e.ctrlKey&&!0!==e.altKey&&!0!==e.metaKey&&27===(e.keyCode?e.keyCode:e.which)&&"TEXTAREA"===element.tagName&&jq(element).hasClass("ac-input")&&jq(element).parent().parent().parent().slideUp(200)}),jq(".dir-search, .groups-members-search").on("click",function(e){if(!jq(this).hasClass("no-ajax")){var t,i,a,s=jq(e.target);if("submit"===s.attr("type")){t=jq(".item-list-tabs li.selected").attr("id").split("-")[0],i=null,a=s.parent().find("#"+t+"_search").val(),"groups-members-search"===e.currentTarget.className&&(t="group_members",i="groups/single/members");var r=bp_get_directory_preference(t,"scope");return bp_filter_request(t,bp_get_directory_preference(t,"filter"),r,"div."+t,a,1,bp_get_directory_preference(t,"extras"),null,i),!1}}}),jq("div.item-list-tabs").on("click",function(e){if(jq("body").hasClass("type")&&jq("body").hasClass("directory")&&jq(this).addClass("no-ajax"),!jq(this).hasClass("no-ajax")&&!jq(e.target).hasClass("no-ajax")){var t,i,a,s="SPAN"===e.target.nodeName?e.target.parentNode:e.target,r=jq(s).parent();return"LI"!==r[0].nodeName||r.hasClass("last")?void 0:(t=r.attr("id").split("-"),"activity"!==(i=t[0])&&(a=t[1],bp_filter_request(i,jq("#"+i+"-order-select select").val(),a,"div."+i,jq("#"+i+"_search").val(),1,bp_get_directory_preference(i,"extras")),!1))}}),jq("li.filter select").change(function(){var e,t,i,a,s,r,n;return t=(e=jq(jq(".item-list-tabs li.selected").length?".item-list-tabs li.selected":this).attr("id").split("-"))[0],i=e[1],a=jq(this).val(),s=!1,r=null,jq(".dir-search input").length&&(s=jq(".dir-search input").val()),(n=jq(".groups-members-search input")).length&&(s=n.val(),t="members",i="groups"),"members"===t&&"groups"===i&&(t="group_members",r="groups/single/members"),"friends"===t&&(t="members"),bp_filter_request(t,a,i,"div."+t,s,1,bp_get_directory_preference(t,"extras"),null,r),!1}),jq("#buddypress").on("click",function(e){var t,i,a,s,r,n,o,c,l=jq(e.target);if(l.hasClass("button"))return!0;if(l.parent().parent().hasClass("pagination")&&!l.parent().parent().hasClass("no-ajax")){if(l.hasClass("dots")||l.hasClass("current"))return!1;i=(t=jq(jq(".item-list-tabs li.selected").length?".item-list-tabs li.selected":"li.filter select").attr("id").split("-"))[0],a=!1,s=jq(l).closest(".pagination-links").attr("id"),r=null,jq("div.dir-search input").length&&(a=!(a=jq(".dir-search input")).val()&&bp_get_querystring(a.attr("name"))?jq(".dir-search input").prop("placeholder"):a.val()),n=jq(l).hasClass("next")||jq(l).hasClass("prev")?jq(".pagination span.current").html():jq(l).html(),n=Number(n.replace(/\D/g,"")),jq(l).hasClass("next")?n++:jq(l).hasClass("prev")&&n--,(o=jq(".groups-members-search input")).length&&(a=o.val(),i="members"),"members"===i&&"groups"===t[1]&&(i="group_members",r="groups/single/members"),"admin"===i&&jq("body").hasClass("membership-requests")&&(i="requests"),c=-1!==s.indexOf("pag-bottom")?"pag-bottom":null;var d=bp_get_directory_preference(i,"scope");return bp_filter_request(i,bp_get_directory_preference(i,"filter"),d,"div."+i,a,n,bp_get_directory_preference(i,"extras"),c,r),!1}}),jq("#send-invite-form").on("click","#invite-list input",function(){var e,t,i=jq("#send-invite-form > .invite").length;jq(".ajax-loader").toggle(),i&&jq(this).parents("ul").find("input").prop("disabled",!0),e=jq(this).val(),t=!0===jq(this).prop("checked")?"invite":"uninvite",i||jq(".item-list-tabs li.selected").addClass("loading"),jq.post(ajaxurl,{action:"groups_invite_user",friend_action:t,cookie:bp_get_cookies(),_wpnonce:jq("#_wpnonce_invite_uninvite_user").val(),friend_id:e,group_id:jq("#group_id").val()},function(a){jq("#message")&&jq("#message").hide(),i?bp_filter_request("invite","bp-invite-filter","bp-invite-scope","div.invite",!1,1,"","",""):(jq(".ajax-loader").toggle(),"invite"===t?jq("#friend-list").append(a):"uninvite"===t&&jq("#friend-list li#uid-"+e).remove(),jq(".item-list-tabs li.selected").removeClass("loading"))})}),jq("#send-invite-form").on("click","a.remove",function(){var e=jq("#send-invite-form > .invite").length,t=jq(this).attr("id");return jq(".ajax-loader").toggle(),t=t.split("-"),t=t[1],jq.post(ajaxurl,{action:"groups_invite_user",friend_action:"uninvite",cookie:bp_get_cookies(),_wpnonce:jq("#_wpnonce_invite_uninvite_user").val(),friend_id:t,group_id:jq("#group_id").val()},function(i){e?bp_filter_request("invite","bp-invite-filter","bp-invite-scope","div.invite",!1,1,"","",""):(jq(".ajax-loader").toggle(),jq("#friend-list #uid-"+t).remove(),jq("#invite-list #f-"+t).prop("checked",!1))}),!1}),jq(".visibility-toggle-link").on("click",function(e){e.preventDefault(),jq(this).attr("aria-expanded","true").parent().hide().addClass("field-visibility-settings-hide").siblings(".field-visibility-settings").show().addClass("field-visibility-settings-open")}),jq(".field-visibility-settings-close").on("click",function(e){e.preventDefault(),jq(".visibility-toggle-link").attr("aria-expanded","false");var t=jq(this).parent(),i=t.find("input:checked").parent().text();t.hide().removeClass("field-visibility-settings-open").siblings(".field-visibility-settings-toggle").find(".current-visibility-level").text(i).end().show().removeClass("field-visibility-settings-hide")}),jq("#profile-edit-form input:not(:submit), #profile-edit-form textarea, #profile-edit-form select, #signup_form input:not(:submit), #signup_form textarea, #signup_form select").change(function(){var e=!0;jq("#profile-edit-form input:submit, #signup_form input:submit").on("click",function(){e=!1}),window.onbeforeunload=function(t){if(e)return BP_DTheme.unsaved_changes}}),jq("#friend-list a.accept, #friend-list a.reject").on("click",function(){var e,t=jq(this),i=jq(this).parents("#friend-list li"),a=jq(this).parents("li div.action"),s=i.attr("id").substr(11,i.attr("id").length),r=t.attr("href").split("_wpnonce=")[1];return!jq(this).hasClass("accepted")&&!jq(this).hasClass("rejected")&&(jq(this).hasClass("accept")?(e="accept_friendship",a.children("a.reject").css("visibility","hidden")):(e="reject_friendship",a.children("a.accept").css("visibility","hidden")),t.addClass("loading"),jq.post(ajaxurl,{action:e,cookie:bp_get_cookies(),id:s,_wpnonce:r},function(e){t.removeClass("loading"),e[0]+e[1]==="-1"?(i.prepend(e.substr(2,e.length)),i.children("#message").hide().fadeIn(200)):t.fadeOut(100,function(){jq(this).hasClass("accept")?(a.children("a.reject").hide(),jq(this).html(BP_DTheme.accepted).contents().unwrap()):(a.children("a.accept").hide(),jq(this).html(BP_DTheme.rejected).contents().unwrap())})}),!1)}),jq("#members-dir-list, #members-group-list, #item-header").on("click",".friendship-button a",function(){jq(this).parent().addClass("loading");var e=jq(this).attr("id"),t=jq(this).attr("href"),i=jq(this);return e=e.split("-"),e=e[1],t=t.split("?_wpnonce="),t=t[1].split("&"),t=t[0],jq.post(ajaxurl,{action:"addremove_friend",cookie:bp_get_cookies(),fid:e,_wpnonce:t},function(e){var t=i.attr("rel");parentdiv=i.parent(),"add"===t?jq(parentdiv).fadeOut(200,function(){parentdiv.removeClass("add_friend"),parentdiv.removeClass("loading"),parentdiv.addClass("pending_friend"),parentdiv.fadeIn(200).html(e)}):"remove"===t&&jq(parentdiv).fadeOut(200,function(){parentdiv.removeClass("remove_friend"),parentdiv.removeClass("loading"),parentdiv.addClass("add"),parentdiv.fadeIn(200).html(e)})}),!1}),jq("#buddypress").on("click",".group-button .leave-group",function(){if(!1===confirm(BP_DTheme.leave_group_confirm))return!1}),jq("#groups-dir-list").on("click",".group-button a",function(){var e=jq(this).parent().attr("id"),t=jq(this).attr("href"),i=jq(this);return e=e.split("-"),e=e[1],t=t.split("?_wpnonce="),t=t[1].split("&"),t=t[0],(!i.hasClass("leave-group")||!1!==confirm(BP_DTheme.leave_group_confirm))&&(jq.post(ajaxurl,{action:"joinleave_group",cookie:bp_get_cookies(),gid:e,_wpnonce:t},function(e){var t=i.parent();jq("body.directory").length?jq(t).fadeOut(200,function(){t.fadeIn(200).html(e);var a=jq("#groups-personal span"),s=1;i.hasClass("leave-group")?(t.hasClass("hidden")&&t.closest("li").slideUp(200),s=0):i.hasClass("request-membership")&&(s=!1),a.length&&!1!==s&&(s?a.text(1+(a.text()>>0)):a.text((a.text()>>0)-1))}):window.location.reload()}),!1)}),jq("#groups-list li.hidden").each(function(){"none"===jq(this).css("display")&&jq(this).css("cssText","display: list-item !important")}),jq("#buddypress").on("click",".pending",function(){return!1}),jq("body").hasClass("register")){var s=jq("#signup_with_blog");s.prop("checked")||jq("#blog-details").toggle(),s.change(function(){jq("#blog-details").toggle()})}jq(".message-search").on("click",function(e){if(!jq(this).hasClass("no-ajax")){var t,i=jq(e.target);if("submit"===i.attr("type")||"button"===i.attr("type")){var a=bp_get_directory_preference(t="messages","scope"),s=bp_get_directory_preference(t,"filter"),r=bp_get_directory_preference(t,"extras");return bp_filter_request(t,s,a,"div."+t,jq("#messages_search").val(),1,r),!1}}}),jq("#send_reply_button").click(function(){var e=jq("#messages_order").val()||"ASC",t=jq("#message-recipients").offset(),i=jq("#send_reply_button");return jq(i).addClass("loading").prop("disabled",!0),jq.post(ajaxurl,{action:"messages_send_reply",cookie:bp_get_cookies(),_wpnonce:jq("#send_message_nonce").val(),content:jq("#message_content").val(),send_to:jq("#send_to").val(),subject:jq("#subject").val(),thread_id:jq("#thread_id").val()},function(a){a[0]+a[1]==="-1"?jq("#send-reply").prepend(a.substr(2,a.length)):(jq("#send-reply #message").remove(),jq("#message_content").val(""),"ASC"===e?jq("#send-reply").before(a):(jq("#message-recipients").after(a),jq(window).scrollTop(t.top)),jq(".new-message").hide().slideDown(200,function(){jq(".new-message").removeClass("new-message")})),jq(i).removeClass("loading").prop("disabled",!1)}),!1}),jq("body.messages #item-body div.messages").on("change","#message-type-select",function(){var e=this.value,t=jq('td input[type="checkbox"]'),i="checked";switch(t.each(function(e){t[e].checked=""}),e){case"unread":t=jq('tr.unread td input[type="checkbox"]');break;case"read":t=jq('tr.read td input[type="checkbox"]');break;case"":i=""}t.each(function(e){t[e].checked=i})}),jq("#select-all-messages").click(function(e){this.checked?jq(".message-check").each(function(){this.checked=!0}):jq(".message-check").each(function(){this.checked=!1})}),jq("#messages-bulk-manage").attr("disabled","disabled"),jq("#messages-select").on("change",function(){jq("#messages-bulk-manage").attr("disabled",jq(this).val().length<=0)}),starAction=function(){var e=jq(this);return jq.post(ajaxurl,{action:"messages_star",message_id:e.data("message-id"),star_status:e.data("star-status"),nonce:e.data("star-nonce"),bulk:e.data("star-bulk")},function(t){1===parseInt(t,10)&&("unstar"===e.data("star-status")?(e.data("star-status","star"),e.removeClass("message-action-unstar").addClass("message-action-star"),e.find(".bp-screen-reader-text").text(BP_PM_Star.strings.text_star),1===BP_PM_Star.is_single_thread?e.attr("data-bp-tooltip",BP_PM_Star.strings.title_star):e.attr("data-bp-tooltip",BP_PM_Star.strings.title_star_thread)):(e.data("star-status","unstar"),e.removeClass("message-action-star").addClass("message-action-unstar"),e.find(".bp-screen-reader-text").text(BP_PM_Star.strings.text_unstar),1===BP_PM_Star.is_single_thread?e.attr("data-bp-tooltip",BP_PM_Star.strings.title_unstar):e.attr("data-bp-tooltip",BP_PM_Star.strings.title_unstar_thread)))}),!1},jq("#message-threads").on("click","td.thread-star a",starAction),jq("#message-thread").on("click",".message-star-actions a",starAction),jq("#message-threads td.bulk-select-check :checkbox").on("change",function(){var e=jq(this),t=e.closest("tr").find(".thread-star a");e.prop("checked")?"unstar"===t.data("star-status")?BP_PM_Star.star_counter++:BP_PM_Star.unstar_counter++:"unstar"===t.data("star-status")?BP_PM_Star.star_counter--:BP_PM_Star.unstar_counter--,BP_PM_Star.star_counter>0&&0===parseInt(BP_PM_Star.unstar_counter,10)?jq('option[value="star"]').hide():jq('option[value="star"]').show(),BP_PM_Star.unstar_counter>0&&0===parseInt(BP_PM_Star.star_counter,10)?jq('option[value="unstar"]').hide():jq('option[value="unstar"]').show()}),jq("#select-all-notifications").click(function(e){this.checked?jq(".notification-check").each(function(){this.checked=!0}):jq(".notification-check").each(function(){this.checked=!1})}),jq("#notification-bulk-manage").attr("disabled","disabled"),jq("#notification-select").on("change",function(){jq("#notification-bulk-manage").attr("disabled",jq(this).val().length<=0)}),jq("#close-notice").on("click",function(){return jq(this).addClass("loading"),jq("#sidebar div.error").remove(),jq.post(ajaxurl,{action:"messages_close_notice",notice_id:jq(".notice").attr("rel").substr(2,jq(".notice").attr("rel").length),nonce:jq("#close-notice-nonce").val()},function(e){jq("#close-notice").removeClass("loading"),e[0]+e[1]==="-1"?(jq(".notice").prepend(e.substr(2,e.length)),jq("#sidebar div.error").hide().fadeIn(200)):jq(".notice").slideUp(100)}),!1}),jq("#wp-admin-bar ul.main-nav li, #nav li").mouseover(function(){jq(this).addClass("sfhover")}),jq("#wp-admin-bar ul.main-nav li, #nav li").mouseout(function(){jq(this).removeClass("sfhover")}),jq("#wp-admin-bar-logout, a.logout").on("click",function(){jq.removeCookie("bp-activity-scope",{path:"/",secure:"https:"===window.location.protocol}),jq.removeCookie("bp-activity-filter",{path:"/",secure:"https:"===window.location.protocol}),jq.removeCookie("bp-activity-oldestpage",{path:"/",secure:"https:"===window.location.protocol});var e=["members","groups","blogs","forums"];jq(e).each(function(t){jq.removeCookie("bp-"+e[t]+"-scope",{path:"/",secure:"https:"===window.location.protocol}),jq.removeCookie("bp-"+e[t]+"-filter",{path:"/",secure:"https:"===window.location.protocol}),jq.removeCookie("bp-"+e[t]+"-extras",{path:"/",secure:"https:"===window.location.protocol})})}),jq("body").hasClass("no-js")&&jq("body").attr("class",jq("body").attr("class").replace(/no-js/,"js")),"undefined"!=typeof wp&&void 0!==wp.heartbeat&&void 0!==BP_DTheme.pulse&&(wp.heartbeat.interval(Number(BP_DTheme.pulse)),jq.fn.extend({"heartbeat-send":function(){return this.bind("heartbeat-send.buddypress")}}));var r=0;jq(document).on("heartbeat-send.buddypress",function(e,t){r=0,jq("#buddypress ul.activity-list li").first().prop("id")&&(timestamp=jq("#buddypress ul.activity-list li").first().prop("class").match(/date-recorded-([0-9]+)/),timestamp&&(r=timestamp[1])),(0===activity_last_recorded||Number(r)>activity_last_recorded)&&(activity_last_recorded=Number(r)),t.bp_activity_last_recorded=activity_last_recorded,last_recorded_search=bp_get_querystring("s"),last_recorded_search&&(t.bp_activity_last_recorded_search_terms=last_recorded_search)}),jq(document).on("heartbeat-tick",function(e,t){t.bp_activity_newest_activities&&(newest_activities=t.bp_activity_newest_activities.activities+newest_activities,activity_last_recorded=Number(t.bp_activity_newest_activities.last_recorded),jq("#buddypress ul.activity-list li").first().hasClass("load-newest")||jq("#buddypress ul.activity-list").prepend('<li class="load-newest"><a href="#newest">'+BP_DTheme.newest+"</a></li>"))})}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/password-verify.js b/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/password-verify.js index 47c01f7e99956ec55596657794ba499c0590a688..14e530c224d784a56c529f95fbde162ace208e9b 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/password-verify.js +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/password-verify.js @@ -14,7 +14,12 @@ return; } - strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass2 ); + // wp.passwordStrength.userInputBlacklist() has been deprecated in WP 5.5.0. + if ( 'function' === typeof wp.passwordStrength.userInputDisallowedList ) { + strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputDisallowedList(), pass2 ); + } else { + strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass2 ); + } switch ( strength ) { case 2: diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/password-verify.min.js b/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/password-verify.min.js index 9d7ad08f87f73b111d684f530c35a860b8d0b8e8..03013941b46a6fd5706d8d7b3cac0a8abd3d72e9 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/password-verify.min.js +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/password-verify.min.js @@ -1 +1 @@ -!function(s){function t(){var t=s(".password-entry").val(),r=s(".password-entry-confirm").val();if(s("#pass-strength-result").removeClass("short bad good strong"),t)switch(wp.passwordStrength.meter(t,wp.passwordStrength.userInputBlacklist(),r)){case 2:s("#pass-strength-result").addClass("bad").html(pwsL10n.bad);break;case 3:s("#pass-strength-result").addClass("good").html(pwsL10n.good);break;case 4:s("#pass-strength-result").addClass("strong").html(pwsL10n.strong);break;case 5:s("#pass-strength-result").addClass("short").html(pwsL10n.mismatch);break;default:s("#pass-strength-result").addClass("short").html(pwsL10n.short)}else s("#pass-strength-result").html(pwsL10n.empty)}s(document).ready(function(){s(".password-entry").val("").keyup(t),s(".password-entry-confirm").val("").keyup(t)})}(jQuery); \ No newline at end of file +!function(s){function t(){var t=s(".password-entry").val(),r=s(".password-entry-confirm").val();if(s("#pass-strength-result").removeClass("short bad good strong"),t)switch("function"==typeof wp.passwordStrength.userInputDisallowedList?wp.passwordStrength.meter(t,wp.passwordStrength.userInputDisallowedList(),r):wp.passwordStrength.meter(t,wp.passwordStrength.userInputBlacklist(),r)){case 2:s("#pass-strength-result").addClass("bad").html(pwsL10n.bad);break;case 3:s("#pass-strength-result").addClass("good").html(pwsL10n.good);break;case 4:s("#pass-strength-result").addClass("strong").html(pwsL10n.strong);break;case 5:s("#pass-strength-result").addClass("short").html(pwsL10n.mismatch);break;default:s("#pass-strength-result").addClass("short").html(pwsL10n.short)}else s("#pass-strength-result").html(pwsL10n.empty)}s(document).ready(function(){s(".password-entry").val("").keyup(t),s(".password-entry-confirm").val("").keyup(t)})}(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress-functions.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress-functions.php index e2c6535e9ebac777de42a390a455b66f53fdec9e..892bf2e33e828ca9c540608589bc955b787a0188 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress-functions.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress-functions.php @@ -283,6 +283,33 @@ class BP_Nouveau extends BP_Theme_Compat { } } } + + // Compatibility stylesheets for specific themes. + $theme = get_template(); + $companion_stylesheet = bp_locate_template_asset( sprintf( 'css/%1$s%2$s.css', $theme, $min ) ); + $companion_handle = 'bp-' . $theme; + + if ( ! is_rtl() && isset( $companion_stylesheet['uri'] ) && $companion_stylesheet['uri'] ) { + wp_enqueue_style( $companion_handle, $companion_stylesheet['uri'], array(), $this->version, 'screen' ); + + if ( $min ) { + wp_style_add_data( $companion_handle, 'suffix', $min ); + } + } + + // Compatibility stylesheet for specific themes, RTL-version. + if ( is_rtl() ) { + $rtl_companion_stylesheet = bp_locate_template_asset( sprintf( 'css/%1$s-rtl%2$s.css', $theme, $min ) ); + + if ( isset( $rtl_companion_stylesheet['uri'] ) ) { + $companion_handle .= '-rtl'; + wp_enqueue_style( $companion_handle, $rtl_companion_stylesheet['uri'], array(), $this->version, 'screen' ); + + if ( $min ) { + wp_style_add_data( $companion_handle, 'suffix', $min ); + } + } + } } /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/comment-form.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/comment-form.php index b0d4b9ee11c7bfffe307e1d772bc6ded337fdf17..fea26e1d7421d597af5606349cfa200325c2e430 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/comment-form.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/comment-form.php @@ -23,7 +23,7 @@ if ( ! bp_nouveau_current_user_can( 'comment_activity' ) || ! bp_activity_can_co <input type="hidden" name="comment_form_id" value="<?php bp_activity_id(); ?>" /> <?php - bp_nouveau_submit_button( 'activity-new-comment' ); + bp_nouveau_submit_button( 'activity-new-comment', bp_get_activity_id() ); printf( ' <button type="button" class="ac-reply-cancel">%s</button>', esc_html( _x( 'Cancel', 'button', 'buddypress' ) ) diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/comment.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/comment.php index b687984bb073e14a240fbd8d87f96e5b0bd73257..4b8b3b3faa75251e168162435c264f5aa579e7ac 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/comment.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/comment.php @@ -5,10 +5,11 @@ * This template is used by bp_activity_comments() functions to show * each activity. * - * @version 3.0.0 + * @since 3.0.0 + * @version 7.0.0 */ - ?> +bp_nouveau_activity_hook( 'before', 'comment' ); ?> <li id="acomment-<?php bp_activity_comment_id(); ?>" class="comment-item" data-bp-activity-comment-id="<?php bp_activity_comment_id(); ?>"> <div class="acomment-avatar item-avatar"> @@ -36,3 +37,6 @@ <?php bp_nouveau_activity_recurse_comments( bp_activity_current_comment() ); ?> </li> + +<?php +bp_nouveau_activity_hook( 'after', 'comment' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/groups-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/groups-loop.php index bbd574231392d03b9c0536dc14b317a55fc55859..c523ad189780c7cd03ae09bd65ba6ce6ac23b364 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/groups-loop.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/groups-loop.php @@ -3,7 +3,7 @@ * BuddyPress - Groups Loop * * @since 3.0.0 - * @version 3.1.0 + * @version 7.0.0 */ bp_nouveau_before_loop(); ?> @@ -18,57 +18,58 @@ bp_nouveau_before_loop(); ?> <ul id="groups-list" class="<?php bp_nouveau_loop_classes(); ?>"> - <?php - while ( bp_groups() ) : - bp_the_group(); - ?> + <?php while ( bp_groups() ) : bp_the_group(); ?> - <li <?php bp_group_class( array( 'item-entry' ) ); ?> data-bp-item-id="<?php bp_group_id(); ?>" data-bp-item-component="groups"> - <div class="list-wrap"> + <li <?php bp_group_class( array( 'item-entry' ) ); ?> data-bp-item-id="<?php bp_group_id(); ?>" data-bp-item-component="groups"> + <div class="list-wrap"> - <?php if ( ! bp_disable_group_avatar_uploads() ) : ?> - <div class="item-avatar"> - <a href="<?php bp_group_permalink(); ?>"><?php bp_group_avatar( bp_nouveau_avatar_args() ); ?></a> - </div> - <?php endif; ?> + <?php if ( ! bp_disable_group_avatar_uploads() ) : ?> + <div class="item-avatar"> + <a href="<?php bp_group_permalink(); ?>"><?php bp_group_avatar( bp_nouveau_avatar_args() ); ?></a> + </div> + <?php endif; ?> - <div class="item"> + <div class="item"> - <div class="item-block"> + <div class="item-block"> - <h2 class="list-title groups-title"><?php bp_group_link(); ?></h2> + <h2 class="list-title groups-title"><?php bp_group_link(); ?></h2> - <?php if ( bp_nouveau_group_has_meta() ) : ?> + <?php if ( bp_nouveau_group_has_meta() ) : ?> - <p class="item-meta group-details"><?php bp_nouveau_group_meta(); ?></p> + <p class="item-meta group-details"><?php bp_nouveau_the_group_meta( array( 'keys' => array( 'status', 'count' ) ) ); ?></p> - <?php endif; ?> + <?php endif; ?> - <p class="last-activity item-meta"> - <?php - printf( - /* translators: %s: last activity timestamp (e.g. "active 1 hour ago") */ - __( 'active %s', 'buddypress' ), - bp_get_group_last_active() - ); - ?> - </p> + <p class="last-activity item-meta"> + <?php + printf( + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + esc_html__( 'Active %s', 'buddypress' ), + sprintf( + '<span data-livestamp="%1$s">%2$s</span>', + bp_core_get_iso8601_date( bp_get_group_last_active( 0, array( 'relative' => false ) ) ), + esc_html( bp_get_group_last_active() ) + ) + ); + ?> + </p> - </div> + </div> - <div class="group-desc"><p><?php bp_nouveau_group_description_excerpt(); ?></p></div> + <div class="group-desc"><p><?php bp_nouveau_group_description_excerpt(); ?></p></div> - <?php bp_nouveau_groups_loop_item(); ?> + <?php bp_nouveau_groups_loop_item(); ?> - <?php bp_nouveau_groups_loop_buttons(); ?> + <?php bp_nouveau_groups_loop_buttons(); ?> - </div> + </div> + </div> - </div> - </li> + </li> - <?php endwhile; ?> + <?php endwhile; ?> </ul> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/group-cover-image.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/group-cover-image.php index 73dd4f3a9e4e3b279f535e1e57319a917a414f24..354968aaaf0d60e8abf42f6231ccb0d9dedafe96 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/group-cover-image.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/group-cover-image.php @@ -3,15 +3,15 @@ * BP Nouveau Group's cover image template. * * @since 3.0.0 - * @version 3.1.0 + * @version 7.0.0 */ ?> <?php if ( bp_is_group_create() ) : ?> - <h2 class="bp-screen-title creation-step-name"> + <h3 class="bp-screen-title creation-step-name"> <?php esc_html_e( 'Upload Cover Image', 'buddypress' ); ?> - </h2> + </h3> <div id="header-cover-image"></div> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php index c5ed20f05dcab791245cf5c57848aeabecb8dad5..df18e2119105346d76d180e7c9414a34ddb83df5 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php @@ -3,7 +3,7 @@ * BuddyPress - Groups Cover Image Header. * * @since 3.0.0 - * @version 3.2.0 + * @version 7.0.0 */ ?> @@ -21,32 +21,54 @@ </div><!-- #item-header-avatar --> <?php endif; ?> -<?php if ( ! bp_nouveau_groups_front_page_description() ) : ?> - <div id="item-header-content"> + <?php if ( ! bp_nouveau_groups_front_page_description() ) : ?> + <div id="item-header-content"> + + <?php if ( bp_nouveau_group_has_meta( 'status' ) ) : ?> + <p class="highlight group-status"><strong><?php echo esc_html( bp_nouveau_the_group_meta( array( 'keys' => 'status' ) ) ); ?></strong></p> + <?php endif; ?> + + <p class="activity"> + <?php + printf( + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + esc_html__( 'Active %s', 'buddypress' ), + sprintf( + '<span data-livestamp="%1$s">%2$s</span>', + bp_core_get_iso8601_date( bp_get_group_last_active( 0, array( 'relative' => false ) ) ), + esc_html( bp_get_group_last_active() ) + ) + ); + ?> + </p> - <p class="highlight group-status"><strong><?php echo esc_html( bp_nouveau_group_meta()->status ); ?></strong></p> - <p class="activity" data-livestamp="<?php bp_core_iso8601_date( bp_get_group_last_active( 0, array( 'relative' => false ) ) ); ?>"> <?php - /* translators: %s: last activity timestamp (e.g. "active 1 hour ago") */ - printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); + bp_group_type_list( + bp_get_group_id(), + array( + 'label' => array( + 'plural' => __( 'Group Types', 'buddypress' ), + 'singular' => __( 'Group Type', 'buddypress' ), + ), + 'list_element' => 'span', + ) + ); ?> - </p> - <?php echo bp_nouveau_group_meta()->group_type_list; ?> - <?php bp_nouveau_group_hook( 'before', 'header_meta' ); ?> + <?php bp_nouveau_group_hook( 'before', 'header_meta' ); ?> - <?php if ( bp_nouveau_group_has_meta_extra() ) : ?> - <div class="item-meta"> + <?php if ( bp_nouveau_group_has_meta_extra() ) : ?> + <div class="item-meta"> - <?php echo bp_nouveau_group_meta()->extra; ?> + <?php echo bp_nouveau_the_group_meta( array( 'keys' => 'extra' ) ); ?> - </div><!-- .item-meta --> - <?php endif; ?> + </div><!-- .item-meta --> + <?php endif; ?> - <?php bp_nouveau_group_header_buttons(); ?> + <?php bp_nouveau_group_header_buttons(); ?> - </div><!-- #item-header-content --> -<?php endif; ?> + </div><!-- #item-header-content --> + <?php endif; ?> <?php bp_get_template_part( 'groups/single/parts/header-item-actions' ); ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/group-header.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/group-header.php index d082ea4120ef5a7fc7179e9cdc481efd62832c7f..ffa9f447f809cb3664b008637dd7c3c60adb792c 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/group-header.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/group-header.php @@ -3,7 +3,7 @@ * BuddyPress - Groups Header * * @since 3.0.0 - * @version 3.2.0 + * @version 7.0.0 */ ?> @@ -21,26 +21,43 @@ <div id="item-header-content"> - <p class="highlight group-status"><strong><?php echo esc_html( bp_nouveau_group_meta()->status ); ?></strong></p> + <?php if ( bp_nouveau_group_has_meta( 'status' ) ) : ?> + <p class="highlight group-status"><strong><?php echo esc_html( bp_nouveau_the_group_meta( array( 'keys' => 'status' ) ) ); ?></strong></p> + <?php endif; ?> - <p class="activity" data-livestamp="<?php bp_core_iso8601_date( bp_get_group_last_active( 0, array( 'relative' => false ) ) ); ?>"> + <p class="activity"> <?php - echo esc_html( - sprintf( - /* translators: %s: last activity timestamp (e.g. "active 1 hour ago") */ - __( 'active %s', 'buddypress' ), - bp_get_group_last_active() - ) - ); + printf( + /* translators: %s: last activity timestamp (e.g. "Active 1 hour ago") */ + esc_html__( 'Active %s', 'buddypress' ), + sprintf( + '<span data-livestamp="%1$s">%2$s</span>', + bp_core_get_iso8601_date( bp_get_group_last_active( 0, array( 'relative' => false ) ) ), + esc_html( bp_get_group_last_active() ) + ) + ); ?> </p> + <?php + bp_group_type_list( + bp_get_group_id(), + array( + 'label' => array( + 'plural' => __( 'Group Types', 'buddypress' ), + 'singular' => __( 'Group Type', 'buddypress' ), + ), + 'list_element' => 'span', + ) + ); + ?> + <?php bp_nouveau_group_hook( 'before', 'header_meta' ); ?> <?php if ( bp_nouveau_group_has_meta_extra() ) : ?> <div class="item-meta"> - <?php echo bp_nouveau_group_meta()->extra; ?> + <?php echo bp_nouveau_the_group_meta( array( 'keys' => 'extra' ) ); ?> </div><!-- .item-meta --> <?php endif; ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/cover-image-header.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/cover-image-header.php index 5315091c2a162eecf85978755d6871d8b9ce69e5..a950ad0808556903764d6e1da2573b89c608e15c 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/cover-image-header.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/cover-image-header.php @@ -3,7 +3,7 @@ * BuddyPress - Users Cover Image Header * * @since 3.0.0 - * @version 3.0.0 + * @version 7.0.0 */ ?> @@ -33,7 +33,7 @@ 'container_classes' => array( 'member-header-actions' ), ) ); -?> + ?> <?php bp_nouveau_member_hook( 'before', 'header_meta' ); ?> @@ -45,6 +45,19 @@ </div><!-- #item-meta --> <?php endif; ?> + <?php + bp_member_type_list( + bp_displayed_user_id(), + array( + 'label' => array( + 'plural' => __( 'Member Types', 'buddypress' ), + 'singular' => __( 'Member Type', 'buddypress' ), + ), + 'list_element' => 'span', + ) + ); + ?> + </div><!-- #item-header-content --> </div><!-- #item-header-cover-image --> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/member-header.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/member-header.php index e82926bed97d900449e7f805db2cf23b4f17db46..6bfc16faddde2d2462db8f8d07fecdd6ce0dc118 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/member-header.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/member-header.php @@ -3,7 +3,7 @@ * BuddyPress - Users Header * * @since 3.0.0 - * @version 3.0.0 + * @version 7.0.0 */ ?> @@ -31,5 +31,18 @@ </div><!-- #item-meta --> <?php endif; ?> + <?php + bp_member_type_list( + bp_displayed_user_id(), + array( + 'label' => array( + 'plural' => __( 'Member Types', 'buddypress' ), + 'singular' => __( 'Member Type', 'buddypress' ), + ), + 'list_element' => 'span', + ) + ); + ?> + <?php bp_nouveau_member_header_buttons( array( 'container_classes' => array( 'member-header-actions' ) ) ); ?> </div><!-- #item-header-content --> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/delete-account.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/delete-account.php index 11dc5e15a7ee0e5848c2520c26420364a261b47f..b150867f4e1c37bbe264f812943140b2895af035 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/delete-account.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/delete-account.php @@ -3,7 +3,7 @@ * BuddyPress - Members Settings ( Delete Account ) * * @since 3.0.0 - * @version 4.0.0 + * @version 7.0.0 */ bp_nouveau_member_hook( 'before', 'settings_template' ); ?> @@ -14,10 +14,10 @@ bp_nouveau_member_hook( 'before', 'settings_template' ); ?> <?php bp_nouveau_user_feedback( 'member-delete-account' ); ?> -<form action="<?php echo esc_url( bp_displayed_user_domain() . bp_get_settings_slug() . '/delete-account' ); ?>" name="account-delete-form" id="#account-delete-form" class="standard-form" method="post"> +<form action="<?php echo esc_url( bp_displayed_user_domain() . bp_get_settings_slug() . '/delete-account' ); ?>" name="account-delete-form" id="account-delete-form" class="standard-form" method="post"> <label id="delete-account-understand" class="warn" for="delete-account-understand"> - <input class="disabled" type="checkbox" name="delete-account-understand" value="1" data-bp-disable-input="#delete-account-button" /> + <input class="disabled" type="checkbox" name="delete-account-understand" value="1" data-bp-disable-input="delete-account-button" /> <?php esc_html_e( 'I understand the consequences.', 'buddypress' ); ?> </label> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_blogs_loop.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_blogs_loop.scss index 279215208616607991f6946fe2886b3ddacd44a0..3fdf9a1fd0e946a0447f3475b852ccdc5b7ebec0 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_blogs_loop.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_blogs_loop.scss @@ -7,6 +7,19 @@ li { + .item-avatar { + + img.avatar-150 { + max-width: 150px; + max-height: 150px; + } + + img.avatar-50 { + max-width: 50px; + max-height: 50px; + } + } + @include medium-up() { .item-block { diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_buttons.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_buttons.scss index c20dd7e358d1e187270f456b120313a72f483ffe..4803007f08e88a70c58559fb418a81979bfbbc3f 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_buttons.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_buttons.scss @@ -83,6 +83,7 @@ input[type="button"].disabled, input[type="reset"].disabled, input[type="submit"][disabled="disabled"], + input[type="submit"]:disabled, button.pending, button.disabled, div.pending a, diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_forms.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_forms.scss index 4c48f27c216f29574c8633ff1813b78047485708..b39d8a03cb09febf2432d4e01d8da7f761a3a727 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_forms.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_forms.scss @@ -1,6 +1,6 @@ // BP Forms Elements Global Styles // @since 3.0.0 -// @version 5.0.0 +// @version 7.0.0 // Some essential classes used for forms elements: // labels - sizing especially for standalone controls @@ -87,7 +87,7 @@ [data-bp-search] input[type="text"], .groups-members-search input[type="search"], .groups-members-search input[type="text"] { - background: $off-white; + background-color: $off-white; border: 1px solid $form-border-color; border-radius: 0; font: inherit; @@ -163,7 +163,7 @@ input:focus, textarea:focus, select:focus { - background: $off-white; + background-color: $off-white; color: $bp-text; outline: 0; } diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_generic_and_typography.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_generic_and_typography.scss index ddc7549d624cd3acebbd2acabcb6b461ef6ea250..65cabf5e740122cf52bfcd095e85d946e8aad848 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_generic_and_typography.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_generic_and_typography.scss @@ -1,6 +1,6 @@ // BP Generic elements, Typography and Images. // @since 3.0.0 -// @version 5.0.0 +// @version 7.0.0 // ========= Generic Sitewide elements ======== body { @@ -59,7 +59,10 @@ body.buddypress { .entry-header, .site-content .entry-header, .entry-content { - max-width: none; + + &:not(.alignwide):not(.alignfull) { + max-width: none; + } } .entry-header { @@ -166,7 +169,7 @@ body.buddypress { margin-bottom: 2em; padding: 0; - .entry-title { + &:not(.alignwide):not(.alignfull) .entry-title { @include responsive-font(34); font-weight: inherit; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_group_header.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_group_header.scss index a60670fba0947d69e99693e698b24055689cabf6..56b13dedd9cd1781386b5096483ec7fa40f620fb 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_group_header.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_group_header.scss @@ -1,10 +1,20 @@ // BP Single Group Header Styles. -// @version 3.0.0 +// @since 3.0.0 +// @version 7.0.0 .groups-header { .bp-group-type-list { + + @include font-size(18); margin: 0; + color: $black; + display: flex; + + strong { + padding-right: $pad-med; + white-space: nowrap; + } } .bp-feedback { diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_info_messages.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_info_messages.scss index 9ac95e156b5cf33567516cedf1c4eb94a6da7d7b..f64ca1309d34d5018781b3472ebc5942cf25f85b 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_info_messages.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_info_messages.scss @@ -1,5 +1,6 @@ // Sitewide template error & info messages constructs. -// @version 3.0.0. +// @since 3.0.0. +// @version 7.0.0 .buddypress-wrap { .warn { @@ -27,22 +28,6 @@ clear: both; display: block; } - - // Error message boxes - &.error { - - p { - // oh linter you're too boringly pedantic, there will be properties! - } - } - - // Warning boxes - // &.warning { - - // p { - // } - // } - } // close .bp-messages // user message screens handled separately due to backbone templates @@ -317,3 +302,28 @@ } } // close .buddypress-wrap + +body.create-blog { + + #buddypress { + + .error, + .success { + + @include message-box($border: none); + @include box-shadow( 0 1px 1px 1px rgba(0, 0, 0, 0.1) ); + color: $light-text-plus; + padding: 10px 15px; + background-color: $white; + } + + .error { + border-left: 4px solid $warnings; + } + + .success { + border-left: 4px solid $update-success; + + } + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_layouts.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_layouts.scss index a7609cdf0146ae6da556acda1ee45175c5975af5..34afe452f4c18c627f3f6ce4eaf44b57dfcd1a44 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_layouts.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_layouts.scss @@ -3,7 +3,7 @@ // layouts on a user selectable basis. // The sheet also adds layout properties such as border-box // @since 3.0.0 -// @version 6.0.0 +// @version 7.0.0 #item-body, .single-screen-navs { @@ -432,14 +432,14 @@ } } - .grid.members-list, { + .grid.members-list { .list-wrap { min-height: 300px; } } - .grid.blogs-list, { + .grid.blogs-list { .list-wrap { min-height: 320px; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_navigation.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_navigation.scss index 391ae924c80c5d04fca0d71620228d6ef4bb751c..6c495442526f4f214730d9166e5444f8c6c055f7 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_navigation.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_navigation.scss @@ -1,5 +1,6 @@ // BP primary & secondary navigation - directory and single screens -// @version 3.0.0 +// @since 3.0.0 +// @version 7.0.0 // all devices & generic styles sitewide .bp-navs { @@ -100,7 +101,7 @@ } li:not(.current), - li:not(.selected), { + li:not(.selected) { a:focus, a:hover { @@ -251,7 +252,6 @@ } } } - } // close .buddypress-wrap // Single screens object navs @@ -421,7 +421,6 @@ } } // close @media - } // close .buddypress-wrap @@ -440,7 +439,6 @@ } } } - } } diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_search.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_search.scss index ae4fa53ce723bba7bfe27a3c0b539c7ba589eea6..a3a05a322187a216686844ce45e4dd63cef9318c 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_search.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_search.scss @@ -1,6 +1,6 @@ // BP Directory Search elements // @since 3.0.0 -// @version 5.0.0 +// @version 7.0.0 .buddypress-wrap { // the ID is required to add weight to rules @@ -30,9 +30,9 @@ input[type="search"], input[type="text"] { float: left; - line-height: 1.5; + line-height: 2; padding: 3px 10px; - width: 80%; + width: 78%; } button[type="submit"] { @@ -95,7 +95,8 @@ } } - .current-member-type { + .current-member-type, + .current-group-type { font-style: italic; } diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_tables.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_tables.scss index 0ea1dcf56ea12ac692a528e48c7e374567d5f465..b4ddd696225f4310cd0efa9194bf7139cc68cd11 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_tables.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_tables.scss @@ -1,5 +1,6 @@ // BP default/generic Table styles. -// @version 3.0.0 +// @since 3.0.0 +// @version 7.0.0 .buddypress-wrap { .bp-tables-user, @@ -58,7 +59,7 @@ } .bp-tables-user, - table.wp-profile-fields, { + table.wp-profile-fields { tr.alt { diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_user_header.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_user_header.scss index 4b8449dd0a14e5ee8b58b8877640f970131414c9..10d4a5d8626fbafd8552ea1faeb1cf2a052a8e43 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_user_header.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_user_header.scss @@ -1,20 +1,40 @@ // BP Single User Specific Header Styles -// @version 3.0.0 +// @since 3.0.0 +// @version 7.0.0 -.bp-user { +body.buddypress.bp-user { - .users-header { + .buddypress-wrap { - .user-nicename { - margin-bottom: $marg-xsml; + .users-header { + + h2.user-nicename { + margin-top: 0; + margin-bottom: $marg-xsml; + } + + .bp-member-type-list { + padding-bottom: 0.5em; + + @include font-size(18); + margin: 0; + color: $black; + display: flex; + + strong { + padding-right: $pad-med; + white-space: nowrap; + } + } } - } - .member-header-actions { - overflow: hidden; + .member-header-actions { + overflow: hidden; + padding-left: 0; - * > * { - display: block; + * > * { + display: block; + } } } } diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress-rtl.css index cae6b63d69dcec34ecc45ba2ad02cddffa78545e..38c0e221742c8a17015db3010f50beda847c4f05 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress-rtl.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress-rtl.css @@ -1,7 +1,8 @@ /*-------------------------------------------------------------- Hello, this is the BuddyPress Nouveau stylesheet. -@version 4.0.0 +@since 3.0.0 +@version 7.0.0 ---------------------------------------------------------------- >>> TABLE OF CONTENTS: @@ -82,9 +83,9 @@ body #buddypress .bp-list .action { } @media screen and (min-width: 46.8em) { - body.buddypress .entry-header, - body.buddypress .site-content .entry-header, - body.buddypress .entry-content { + body.buddypress .entry-header:not(.alignwide):not(.alignfull), + body.buddypress .site-content .entry-header:not(.alignwide):not(.alignfull), + body.buddypress .entry-content:not(.alignwide):not(.alignfull) { max-width: none; } body.buddypress .entry-header { @@ -141,14 +142,14 @@ body.buddypress article.page > .entry-header { padding: 0; } -body.buddypress article.page > .entry-header .entry-title { +body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .entry-title { font-size: 28px; font-weight: inherit; color: #767676; } @media screen and (min-width: 46.8em) { - body.buddypress article.page > .entry-header .entry-title { + body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .entry-title { font-size: 34px; } } @@ -1774,6 +1775,16 @@ form.ac-form .ac-reply-content input { * @section 3.2 - Blogs Loop *---------------------------------------------------------- */ +.buddypress-wrap .blogs-list li .item-avatar img.avatar-150 { + max-width: 150px; + max-height: 150px; +} + +.buddypress-wrap .blogs-list li .item-avatar img.avatar-50 { + max-width: 50px; + max-height: 50px; +} + @media screen and (min-width: 46.8em) { .buddypress-wrap .blogs-list li .item-block { float: none; @@ -2291,7 +2302,15 @@ body.no-js .single-item-header .js-self-profile-button { *----------------------------------------------------- */ .groups-header .bp-group-type-list { + font-size: 18px; margin: 0; + color: #333; + display: flex; +} + +.groups-header .bp-group-type-list strong { + padding-left: 1em; + white-space: nowrap; } .groups-header .bp-feedback { @@ -2385,15 +2404,30 @@ body.no-js .single-item-header .js-self-profile-button { * User Accounts Specific Item Header *----------------------------------------------------- */ -.bp-user .users-header .user-nicename { +body.buddypress.bp-user .buddypress-wrap .users-header h2.user-nicename { + margin-top: 0; margin-bottom: 5px; } -.bp-user .member-header-actions { +body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list { + padding-bottom: 0.5em; + font-size: 18px; + margin: 0; + color: #333; + display: flex; +} + +body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list strong { + padding-left: 1em; + white-space: nowrap; +} + +body.buddypress.bp-user .buddypress-wrap .member-header-actions { overflow: hidden; + padding-right: 0; } -.bp-user .member-header-actions * > * { +body.buddypress.bp-user .buddypress-wrap .member-header-actions * > * { display: block; } @@ -3447,7 +3481,7 @@ body.buddypress.settings.data #buddypress.buddypress-wrap .item-body p a { .buddypress-wrap .standard-form [data-bp-search] input[type="text"], .buddypress-wrap .standard-form .groups-members-search input[type="search"], .buddypress-wrap .standard-form .groups-members-search input[type="text"] { - background: #fafafa; + background-color: #fafafa; border: 1px solid #d6d6d6; border-radius: 0; font: inherit; @@ -3518,7 +3552,7 @@ body.buddypress.settings.data #buddypress.buddypress-wrap .item-body p a { .buddypress-wrap .standard-form input:focus, .buddypress-wrap .standard-form textarea:focus, .buddypress-wrap .standard-form select:focus { - background: #fafafa; + background-color: #fafafa; color: #555; outline: 0; } @@ -3757,9 +3791,9 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages { .buddypress-wrap form#group-members-search input[type="search"], .buddypress-wrap form#group-members-search input[type="text"] { float: right; - line-height: 1.5; + line-height: 2; padding: 3px 10px; - width: 80%; + width: 78%; } .buddypress-wrap form.bp-dir-search-form button[type="submit"], @@ -3824,7 +3858,8 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages { padding: 0.1em 0.7em; } -.buddypress-wrap .current-member-type { +.buddypress-wrap .current-member-type, +.buddypress-wrap .current-group-type { font-style: italic; } @@ -4105,6 +4140,7 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages { .buddypress .buddypress-wrap input[type="button"].disabled, .buddypress .buddypress-wrap input[type="reset"].disabled, .buddypress .buddypress-wrap input[type="submit"][disabled="disabled"], +.buddypress .buddypress-wrap input[type="submit"]:disabled, .buddypress .buddypress-wrap button.pending, .buddypress .buddypress-wrap button.disabled, .buddypress .buddypress-wrap div.pending a, @@ -4571,6 +4607,24 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages { top: 30px; } +body.create-blog #buddypress .error, +body.create-blog #buddypress .success { + background: #fff; + color: #807f7f; + box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1); + color: #737373; + padding: 10px 15px; + background-color: #fff; +} + +body.create-blog #buddypress .error { + border-right: 4px solid #d33; +} + +body.create-blog #buddypress .success { + border-right: 4px solid #8a2; +} + .buddypress.widget .item-options { font-size: 12px; margin: 0 0 1em; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress-rtl.min.css b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress-rtl.min.css index 754073eef96b117dac530d357e0d9028e99c791f..3aba3c34dde3e8f0f15caf96a9b97324babb9d77 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress-rtl.min.css @@ -1 +1 @@ -body #buddypress * a{box-shadow:none;text-decoration:none}body #buddypress div,body #buddypress dl,body #buddypress input[type=reset],body #buddypress input[type=search],body #buddypress input[type=submit],body #buddypress li,body #buddypress select,body #buddypress textarea{border-radius:2px;background-clip:padding-box}body #buddypress #item-body blockquote,body #buddypress .bp-lists blockquote{margin-right:0}body #buddypress .bp-list .action{box-sizing:border-box}@media screen and (min-width:46.8em){body.buddypress .entry-content,body.buddypress .entry-header,body.buddypress .site-content .entry-header{max-width:none}body.buddypress .entry-header{float:none}body.buddypress .entry-content{float:none}body.buddypress .site-content{padding-top:2.5em}body.buddypress #page #primary{max-width:none}body.buddypress #page #primary .entry-content,body.buddypress #page #primary .entry-header{float:none;width:auto}}body.buddypress .buddypress-wrap h1,body.buddypress .buddypress-wrap h2,body.buddypress .buddypress-wrap h3,body.buddypress .buddypress-wrap h4,body.buddypress .buddypress-wrap h5,body.buddypress .buddypress-wrap h6{clear:none;margin:1em 0;padding:0}body.buddypress .buddypress-wrap h2:before{display:none}.bp-wrap:after,.bp-wrap:before{content:" ";display:table}.bp-wrap:after{clear:both}.buddypress-wrap.round-avatars .avatar{border-radius:50%}body.buddypress article.page>.entry-header{margin-bottom:2em;padding:0}body.buddypress article.page>.entry-header .entry-title{font-size:28px;font-weight:inherit;color:#767676}@media screen and (min-width:46.8em){body.buddypress article.page>.entry-header .entry-title{font-size:34px}}.buddypress-wrap dt.section-title{font-size:18px}@media screen and (min-width:46.8em){.buddypress-wrap dt.section-title{font-size:22px}}.buddypress-wrap .bp-label-text,.buddypress-wrap .message-threads{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-label-text,.buddypress-wrap .message-threads{font-size:16px}}.buddypress-wrap .activity-header{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .activity-header{font-size:16px}}.buddypress-wrap .activity-inner{font-size:15px}@media screen and (min-width:46.8em){.buddypress-wrap .activity-inner{font-size:18px}}.buddypress-wrap #whats-new-post-in{font-size:16px}.buddypress-wrap .acomment-meta,.buddypress-wrap .mini .activity-header{font-size:16px}.buddypress-wrap .dir-component-filters #activity-filter-by{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .dir-component-filters #activity-filter-by{font-size:16px}}.buddypress-wrap .bp-tables-user th{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-tables-user th{font-size:16px}}.buddypress-wrap .bp-tables-user td{font-size:12px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-tables-user td{font-size:14px}}.buddypress-wrap .profile-fields th{font-size:15px}@media screen and (min-width:46.8em){.buddypress-wrap .profile-fields th{font-size:18px}}.buddypress-wrap .profile-fields td{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .profile-fields td{font-size:16px}}.buddypress-wrap #notification-select{font-size:12px}@media screen and (min-width:46.8em){.buddypress-wrap #notification-select{font-size:14px}}.bp-navs{background:0 0;clear:both;overflow:hidden}.bp-navs ul{margin:0;padding:0}.bp-navs ul li{list-style:none;margin:0}.bp-navs ul li.last select{max-width:185px}.bp-navs ul li a,.bp-navs ul li span{border:0;display:block;padding:5px 10px;text-decoration:none}.bp-navs ul li .count{background:#eaeaea;border:1px solid #ccc;border-radius:50%;color:#555;display:inline;font-size:12px;margin-right:2px;padding:3px 6px;text-align:center;vertical-align:middle}.bp-navs ul li.current a,.bp-navs ul li.selected a{color:#333;opacity:1}.bp-navs.bp-invites-filters ul li a,.bp-navs.bp-messages-filters ul li a{border:1px solid #ccc;display:inline-block}.main-navs.dir-navs{margin-bottom:20px}.buddypress-wrap .bp-navs li a:hover a .count,.buddypress-wrap .bp-navs li.current a .count,.buddypress-wrap .bp-navs li.selected a .count{background-color:#ccc}.buddypress-wrap .bp-navs li:not(.current) a:focus,.buddypress-wrap .bp-navs li:not(.current) a:hover,.buddypress-wrap .bp-navs li:not(.selected) a:focus,.buddypress-wrap .bp-navs li:not(.selected) a:hover{background:#ccc;color:#333}.buddypress-wrap .bp-navs li.current a,.buddypress-wrap .bp-navs li.current a:focus,.buddypress-wrap .bp-navs li.current a:hover,.buddypress-wrap .bp-navs li.selected a,.buddypress-wrap .bp-navs li.selected a:focus,.buddypress-wrap .bp-navs li.selected a:hover{background:#555;color:#fafafa}@media screen and (min-width:46.8em){.buddypress-wrap .main-navs:not(.dir-navs) li.current a,.buddypress-wrap .main-navs:not(.dir-navs) li.selected a{background:#fff;color:#333;font-weight:600}.buddypress-wrap .main-navs.vertical li.current a,.buddypress-wrap .main-navs.vertical li.selected a{background:#555;color:#fafafa;text-decoration:none}.buddypress-wrap.bp-dir-hori-nav:not(.bp-vertical-navs) nav:not(.tabbed-links){border-bottom:1px solid #eee;border-top:1px solid #eee;box-shadow:0 2px 12px 0 #fafafa}}.buddypress-wrap .bp-subnavs li.current a,.buddypress-wrap .bp-subnavs li.selected a{background:#fff;color:#333;font-weight:600}@media screen and (max-width:46.8em){.buddypress-wrap:not(.bp-single-vert-nav) .bp-navs li{background:#eaeaea}}.buddypress-wrap:not(.bp-single-vert-nav) .main-navs>ul>li>a{padding:.5em calc(.5em + 2px)}.buddypress-wrap:not(.bp-single-vert-nav) .group-subnav#subsubnav,.buddypress-wrap:not(.bp-single-vert-nav) .user-subnav#subsubnav{background:0 0}.buddypress-wrap .bp-subnavs,.buddypress-wrap ul.subnav{width:100%}.buddypress-wrap .bp-subnavs{margin:10px 0;overflow:hidden}.buddypress-wrap .bp-subnavs ul li{margin-top:0}.buddypress-wrap .bp-subnavs ul li.current :focus,.buddypress-wrap .bp-subnavs ul li.current :hover,.buddypress-wrap .bp-subnavs ul li.selected :focus,.buddypress-wrap .bp-subnavs ul li.selected :hover{background:0 0;color:#333}.buddypress-wrap ul.subnav{width:auto}.buddypress-wrap .bp-navs.bp-invites-filters#subsubnav ul li.last,.buddypress-wrap .bp-navs.bp-invites-nav#subnav ul li.last,.buddypress-wrap .bp-navs.bp-messages-filters#subsubnav ul li.last{margin-top:0}@media screen and (max-width:46.8em){.buddypress-wrap .single-screen-navs{border:1px solid #eee}.buddypress-wrap .single-screen-navs li{border-bottom:1px solid #eee}.buddypress-wrap .single-screen-navs li:last-child{border-bottom:none}.buddypress-wrap .bp-subnavs li a{font-size:14px}.buddypress-wrap .bp-subnavs li.current a,.buddypress-wrap .bp-subnavs li.current a:focus,.buddypress-wrap .bp-subnavs li.current a:hover,.buddypress-wrap .bp-subnavs li.selected a,.buddypress-wrap .bp-subnavs li.selected a:focus,.buddypress-wrap .bp-subnavs li.selected a:hover{background:#555;color:#fff}}.buddypress-wrap .bp-navs li.current a .count,.buddypress-wrap .bp-navs li.selected a .count,.buddypress_object_nav .bp-navs li.current a .count,.buddypress_object_nav .bp-navs li.selected a .count{background-color:#fff}.buddypress-wrap .bp-navs li.dynamic a .count,.buddypress-wrap .bp-navs li.dynamic.current a .count,.buddypress-wrap .bp-navs li.dynamic.selected a .count,.buddypress_object_nav .bp-navs li.dynamic a .count,.buddypress_object_nav .bp-navs li.dynamic.current a .count,.buddypress_object_nav .bp-navs li.dynamic.selected a .count{background-color:#5087e5;border:0;color:#fafafa}.buddypress-wrap .bp-navs li.dynamic a:hover .count,.buddypress_object_nav .bp-navs li.dynamic a:hover .count{background-color:#5087e5;border:0;color:#fff}.buddypress-wrap .bp-navs li a .count:empty,.buddypress_object_nav .bp-navs li a .count:empty{display:none}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current),.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current){color:#767676}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a{color:#767676}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a:focus,.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a:hover,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a:focus,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a:hover{background:0 0;color:#333}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a[disabled]:focus,.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a[disabled]:hover,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a[disabled]:focus,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a[disabled]:hover{color:#767676}.buddypress-wrap .bp-navs.group-create-links ul li.current a,.buddypress_object_nav .bp-navs.group-create-links ul li.current a{text-align:center}@media screen and (min-width:46.8em){.buddypress-wrap .bp-navs li{float:right}.buddypress-wrap .subnav{float:right}.buddypress-wrap ul.subnav{width:auto}.buddypress-wrap #subsubnav .activity-search{float:right}.buddypress-wrap #subsubnav .filter{float:left}}.buddypress_object_nav .bp-navs li a .count{display:inline-block;float:left}@media screen and (min-width:46.8em){.bp-dir-vert-nav .bp-navs.dir-navs{background:0 0}.bp-dir-vert-nav .bp-navs.dir-navs a .count{float:left}}@media screen and (min-width:46.8em){.buddypress-wrap .tabbed-links ol,.buddypress-wrap .tabbed-links ul{border-bottom:1px solid #ccc;float:none;margin:20px 0 10px}.buddypress-wrap .tabbed-links ol:after,.buddypress-wrap .tabbed-links ol:before,.buddypress-wrap .tabbed-links ul:after,.buddypress-wrap .tabbed-links ul:before{content:" ";display:block}.buddypress-wrap .tabbed-links ol:after,.buddypress-wrap .tabbed-links ul:after{clear:both}.buddypress-wrap .tabbed-links ol li,.buddypress-wrap .tabbed-links ul li{float:right;list-style:none;margin:0 0 0 10px}.buddypress-wrap .tabbed-links ol li a,.buddypress-wrap .tabbed-links ol li span:not(.count),.buddypress-wrap .tabbed-links ul li a,.buddypress-wrap .tabbed-links ul li span:not(.count){background:0 0;border:none;display:block;padding:4px 10px}.buddypress-wrap .tabbed-links ol li a:focus,.buddypress-wrap .tabbed-links ol li a:hover,.buddypress-wrap .tabbed-links ul li a:focus,.buddypress-wrap .tabbed-links ul li a:hover{background:0 0}.buddypress-wrap .tabbed-links ol li:not(.current),.buddypress-wrap .tabbed-links ul li:not(.current){margin-bottom:2px}.buddypress-wrap .tabbed-links ol li.current,.buddypress-wrap .tabbed-links ul li.current{border-color:#ccc #ccc #fff;border-style:solid;border-top-right-radius:4px;border-top-left-radius:4px;border-width:1px;margin-bottom:-1px;padding:0 .5em 1px}.buddypress-wrap .tabbed-links ol li.current a,.buddypress-wrap .tabbed-links ul li.current a{background:0 0;color:#333}.buddypress-wrap .bp-subnavs.tabbed-links>ul{margin-top:0}.buddypress-wrap .bp-navs.tabbed-links{background:0 0;margin-top:2px}.buddypress-wrap .bp-navs.tabbed-links ul li a{border-left:0;font-size:inherit}.buddypress-wrap .bp-navs.tabbed-links ul li.last{float:left;margin:0}.buddypress-wrap .bp-navs.tabbed-links ul li.last a{margin-top:-.5em}.buddypress-wrap .bp-navs.tabbed-links ul li a,.buddypress-wrap .bp-navs.tabbed-links ul li a:focus,.buddypress-wrap .bp-navs.tabbed-links ul li a:hover,.buddypress-wrap .bp-navs.tabbed-links ul li.current a,.buddypress-wrap .bp-navs.tabbed-links ul li.current a:focus,.buddypress-wrap .bp-navs.tabbed-links ul li.current a:hover{background:0 0;border:0}.buddypress-wrap .bp-navs.tabbed-links ul li a:active,.buddypress-wrap .bp-navs.tabbed-links ul li.current a:active{outline:0}}.buddypress-wrap .dir-component-filters .filter label{display:inline}.buddypress-wrap .subnav-filters:after,.buddypress-wrap .subnav-filters:before{content:" ";display:table}.buddypress-wrap .subnav-filters:after{clear:both}.buddypress-wrap .subnav-filters{background:0 0;list-style:none;margin:15px 0 0;padding:0}.buddypress-wrap .subnav-filters div{margin:0}.buddypress-wrap .subnav-filters>ul{float:right;list-style:none}.buddypress-wrap .subnav-filters.bp-messages-filters ul{width:100%}.buddypress-wrap .subnav-filters.bp-messages-filters .messages-search{margin-bottom:1em}@media screen and (min-width:46.8em){.buddypress-wrap .subnav-filters.bp-messages-filters .messages-search{margin-bottom:0}}.buddypress-wrap .subnav-filters div{float:none}.buddypress-wrap .subnav-filters div input[type=search],.buddypress-wrap .subnav-filters div select{font-size:16px}.buddypress-wrap .subnav-filters div button.nouveau-search-submit{padding:5px .8em 6px}.buddypress-wrap .subnav-filters div button#user_messages_search_submit{padding:7px .8em}.buddypress-wrap .subnav-filters .component-filters{margin-top:10px}.buddypress-wrap .subnav-filters .feed{margin-left:15px}.buddypress-wrap .subnav-filters .last.filter label{display:inline}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:after,.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:before{content:" ";display:table}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:after{clear:both}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap.bp-show{display:inline-block}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap.bp-hide{display:none}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .select-wrap{border:0}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .select-wrap:focus,.buddypress-wrap .subnav-filters .user-messages-bulk-actions .select-wrap:hover{outline:1px solid #d6d6d6}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions{float:right}.buddypress-wrap .subnav-filters .user-messages-bulk-actions label{display:inline-block;font-weight:300;margin-left:25px;padding:5px 0}.buddypress-wrap .subnav-filters .user-messages-bulk-actions div select{-webkit-appearance:textfield}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-apply{border:0;border-radius:0;font-weight:400;line-height:1.8;margin:0 10px 0 0;padding:3px 5px;text-align:center;text-transform:none;width:auto}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-apply span{vertical-align:middle}@media screen and (min-width:32em){.buddypress-wrap .subnav-filters li{margin-bottom:0}.buddypress-wrap .subnav-filters .bp-search,.buddypress-wrap .subnav-filters .dir-search,.buddypress-wrap .subnav-filters .feed,.buddypress-wrap .subnav-filters .group-act-search,.buddypress-wrap .subnav-filters .group-invites-search,.buddypress-wrap .subnav-filters .subnav-search,.buddypress-wrap .subnav-filters .subnav-search form,.buddypress-wrap .subnav-filters .user-messages-bulk-actions,.buddypress-wrap .subnav-filters .user-messages-search{float:right}.buddypress-wrap .subnav-filters .component-filters,.buddypress-wrap .subnav-filters .last{float:left;margin-top:0;width:auto}.buddypress-wrap .subnav-filters .component-filters select,.buddypress-wrap .subnav-filters .last select{max-width:250px}.buddypress-wrap .subnav-filters .user-messages-search{float:left}}.buddypress-wrap .notifications-options-nav input#notification-bulk-manage{border:0;border-radius:0;line-height:1.6}.buddypress-wrap .group-subnav-filters .group-invites-search{margin-bottom:1em}.buddypress-wrap .group-subnav-filters .last{text-align:center}.buddypress-wrap .bp-pagination{background:0 0;border:0;color:#767676;float:right;font-size:small;margin:0;padding:.5em 0;position:relative;width:100%}.buddypress-wrap .bp-pagination .pag-count{float:right}.buddypress-wrap .bp-pagination .bp-pagination-links{float:left;margin-left:10px}.buddypress-wrap .bp-pagination .bp-pagination-links a,.buddypress-wrap .bp-pagination .bp-pagination-links span{font-size:small;padding:0 5px}.buddypress-wrap .bp-pagination .bp-pagination-links a:focus,.buddypress-wrap .bp-pagination .bp-pagination-links a:hover{opacity:1}.buddypress-wrap .bp-pagination p{margin:0}.bp-list:after,.bp-list:before{content:" ";display:table}.bp-list:after{clear:both}.bp-list{box-sizing:border-box;border-top:1px solid #eaeaea;clear:both;list-style:none;margin:20px 0;padding:.5em 0;width:100%}.bp-list li:after,.bp-list li:before{content:" ";display:table}.bp-list li:after{clear:both}.bp-list>li{border-bottom:1px solid #eaeaea}.bp-list li{list-style:none;margin:10px 0;padding:.5em 0;position:relative}.bp-list li .item-avatar{text-align:center}.bp-list li .item-avatar img.avatar{display:inline-block;width:auto;height:auto}.bp-list li .item .group-details,.bp-list li .item .item-avatar,.bp-list li .item .item-meta,.bp-list li .item .list-title{text-align:center}.bp-list li .item .list-title{clear:none;font-size:22px;font-weight:400;line-height:1.1;margin:0 auto}@media screen and (min-width:46.8em){.bp-list li .item .list-title{font-size:26px}}.bp-list li .item-meta,.bp-list li .meta{color:#737373;font-size:12px;margin-bottom:10px;margin-top:10px}.bp-list li .last-post{text-align:center}.bp-list li .action{margin:0;text-align:center}.bp-list li .action .generic-button{display:inline-block;font-size:12px;margin:0 0 0 10px}.bp-list li .action div.generic-button{margin:10px 0}@media screen and (min-width:46.8em){.bp-list li .item-avatar{float:right;margin-left:5%}.bp-list li .item{margin:0;overflow:hidden}.bp-list li .item .item-block{float:right;margin-left:2%;width:50%}.bp-list li .item .item-meta,.bp-list li .item .list-title{float:right;text-align:right}.bp-list li .item .group-details,.bp-list li .item .last-post{text-align:right}.bp-list li .group-desc,.bp-list li .last-post,.bp-list li .user-update{clear:none;overflow:hidden;width:auto}.bp-list li .action{clear:right;padding:0;text-align:right}.bp-list li .action li.generic-button{margin-left:0}.bp-list li .action div.generic-button{margin:0 0 10px}.bp-list li .generic-button{display:block;margin:0 0 5px 0}}@media screen and (min-width:32em){#activity-stream{clear:both;padding-top:1em}}.activity-list.bp-list{background:#fafafa;border:1px solid #eee}.activity-list.bp-list .activity-item{background:#fff;border:1px solid #b7b7b7;box-shadow:0 0 6px #d2d2d2;margin:20px 0}.activity-list.bp-list li:first-child{margin-top:0}.friends-list{list-style-type:none}.friends-request-list .item-title,.membership-requests-list .item-title{text-align:center}@media screen and (min-width:46.8em){.friends-request-list li,.membership-requests-list li{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row nowrap;flex-flow:row nowrap}.friends-request-list li .item,.membership-requests-list li .item{-moz-flex:1 1 auto;-o-flex:1 1 auto;flex:1 1 auto}.friends-request-list li .action,.membership-requests-list li .action{text-align:left}.friends-request-list li .item-title,.membership-requests-list li .item-title{font-size:22px;text-align:right}.friends-request-list li .item-title h3,.membership-requests-list li .item-title h3{margin:0}}#notifications-user-list{clear:both;padding-top:1em}@media screen and (min-width:46.8em){body:not(.logged-in) .bp-list .item{margin-left:0}}.activity-permalink .item-list,.activity-permalink .item-list li.activity-item{border:0}.activity-update-form{padding:10px 10px 0}.item-body .activity-update-form .activity-form{margin:0;padding:0}.activity-update-form{border:1px solid #ccc;box-shadow:inset 0 0 6px #eee;margin:15px 0}.activity-update-form #whats-new-avatar{margin:10px 0;text-align:center}.activity-update-form #whats-new-avatar img{box-shadow:none;display:inline-block;height:auto;width:auto}.activity-update-form #whats-new-content{padding:0 0 20px 0}.activity-update-form #whats-new-textarea textarea{background:#fff;box-sizing:border-box;color:#333;font-family:inherit;font-size:medium;height:2.2em;line-height:1.4;padding:6px;width:100%}.activity-update-form #whats-new-textarea textarea:focus{box-shadow:0 0 6px 0 #d6d6d6}.activity-update-form #whats-new-post-in-box{margin:10px 0}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items{list-style:none;margin:10px 0;padding-right:0}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li{margin-bottom:10px}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items button.bp-remove-item{margin-right:10px;height:auto}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items #activity-autocomplete{padding:.3em;width:100%}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object{display:flex;align-items:center;padding:.2em}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object .avatar{width:30px;height:30px}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object span{padding-right:10px;vertical-align:middle}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object:focus,.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object:hover{background:#eaeaea;cursor:pointer}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object.selected{border:1px solid #d6d6d6}.activity-update-form #whats-new-submit{margin:15px 0 10px}.activity-update-form #whats-new-submit input{font-size:14px;line-height:inherit;margin-bottom:10px;margin-left:10px;padding:.2em 0;text-align:center;width:100%}@media screen and (min-width:46.8em){.activity-update-form #whats-new-avatar{display:block;float:right;margin:0}.activity-update-form #whats-new-content,.activity-update-form #whats-new-post-in-box,.activity-update-form #whats-new-submit{margin-right:55px}.activity-update-form #whats-new-submit input{margin-bottom:0;margin-left:10px;width:8em}}.activity-list{padding:.5em}.activity-list .activity-item:after,.activity-list .activity-item:before{content:" ";display:table}.activity-list .activity-item:after{clear:both}.activity-list .activity-item{list-style:none;padding:1em}.activity-list .activity-item.has-comments{padding-bottom:1em}.activity-list .activity-item div.item-avatar{margin:0 auto;text-align:center;width:auto}.activity-list .activity-item div.item-avatar img{height:auto;max-width:40%}@media screen and (min-width:46.8em){.activity-list .activity-item div.item-avatar{margin:0 0 0 2%;text-align:right;width:15%}.activity-list .activity-item div.item-avatar img{max-width:80%}}.activity-list .activity-item.mini{font-size:13px;position:relative}.activity-list .activity-item.mini .activity-avatar{margin-right:0;text-align:center;width:auto}.activity-list .activity-item.mini .activity-avatar img.FB_profile_pic,.activity-list .activity-item.mini .activity-avatar img.avatar{max-width:15%}@media screen and (min-width:46.8em){.activity-list .activity-item.mini .activity-avatar{margin-right:15px;text-align:right;width:15%}.activity-list .activity-item.mini .activity-avatar img.FB_profile_pic,.activity-list .activity-item.mini .activity-avatar img.avatar{max-width:60%}}.activity-list .activity-item.new_forum_post .activity-inner,.activity-list .activity-item.new_forum_topic .activity-inner{border-right:2px solid #eaeaea;margin-right:10px;padding-right:1em}.activity-list .activity-item.newest_blogs_activity,.activity-list .activity-item.newest_friends_activity,.activity-list .activity-item.newest_groups_activity,.activity-list .activity-item.newest_mentions_activity{background:rgba(31,179,221,.1)}.activity-list .activity-item .activity-inreplyto{color:#767676;font-size:13px}.activity-list .activity-item .activity-inreplyto>p{display:inline;margin:0}.activity-list .activity-item .activity-inreplyto .activity-inner,.activity-list .activity-item .activity-inreplyto blockquote{background:0 0;border:0;display:inline;margin:0;overflow:hidden;padding:0}.activity-list .activity-item .activity-header{margin:0 auto;width:80%}.activity-list .activity-item .activity-header a,.activity-list .activity-item .activity-header img{display:inline}.activity-list .activity-item .activity-header .avatar{display:inline-block;margin:0 5px;vertical-align:text-top;width:20px;height:20px}.activity-list .activity-item .activity-header .time-since{font-size:14px;color:#767676;text-decoration:none}.activity-list .activity-item .activity-header .time-since:hover{color:#767676;cursor:pointer;text-decoration:underline}.activity-list .activity-item .activity-content .activity-header,.activity-list .activity-item .activity-content .comment-header{color:#767676;margin-bottom:10px}.activity-list .activity-item .activity-content .activity-inner,.activity-list .activity-item .activity-content blockquote{background:#fafafa;margin:15px 0 10px;overflow:hidden;padding:1em}.activity-list .activity-item .activity-content p{margin:0}.activity-list .activity-item .activity-inner p{word-wrap:break-word}.activity-list .activity-item .activity-read-more{margin-right:1em;white-space:nowrap}.activity-list .activity-item ul.activity-meta{margin:0;padding-right:0}.activity-list .activity-item ul.activity-meta li{border:0;display:inline-block}.activity-list .activity-item .activity-meta.action{border:1px solid transparent;background:#fafafa;padding:2px;position:relative;text-align:right}.activity-list .activity-item .activity-meta.action div.generic-button{margin:0}.activity-list .activity-item .activity-meta.action .button{background:0 0;color:#555}.activity-list .activity-item .activity-meta.action a{padding:4px 8px}.activity-list .activity-item .activity-meta.action .button:focus,.activity-list .activity-item .activity-meta.action .button:hover{background:0 0}.activity-list .activity-item .activity-meta.action .button:before,.activity-list .activity-item .activity-meta.action .icons:before{font-family:dashicons;font-size:18px;vertical-align:middle}.activity-list .activity-item .activity-meta.action .acomment-reply.button:before{content:"\f101"}.activity-list .activity-item .activity-meta.action .view:before{content:"\f125"}.activity-list .activity-item .activity-meta.action .fav:before{content:"\f154"}.activity-list .activity-item .activity-meta.action .unfav:before{content:"\f155"}.activity-list .activity-item .activity-meta.action .delete-activity:before{content:"\f153"}.activity-list .activity-item .activity-meta.action .delete-activity:hover{color:#800}.activity-list .activity-item .activity-meta.action .button{border:0;box-shadow:none}.activity-list .activity-item .activity-meta.action .button span{background:0 0;color:#555;font-weight:700}@media screen and (min-width:46.8em){.activity-list.bp-list{padding:30px}.activity-list .activity-item .activity-content{margin:0;position:relative}.activity-list .activity-item .activity-content:after{clear:both;content:"";display:table}.activity-list .activity-item .activity-header{margin:0 0 0 15px;width:auto}}.buddypress-wrap .activity-list .load-more,.buddypress-wrap .activity-list .load-newest{background:#fafafa;border:1px solid #eee;font-size:110%;margin:15px 0;padding:0;text-align:center}.buddypress-wrap .activity-list .load-more a,.buddypress-wrap .activity-list .load-newest a{color:#555;display:block;padding:.5em 0}.buddypress-wrap .activity-list .load-more a:focus,.buddypress-wrap .activity-list .load-more a:hover,.buddypress-wrap .activity-list .load-newest a:focus,.buddypress-wrap .activity-list .load-newest a:hover{background:#fff;color:#333}.buddypress-wrap .activity-list .load-more:focus,.buddypress-wrap .activity-list .load-more:hover,.buddypress-wrap .activity-list .load-newest:focus,.buddypress-wrap .activity-list .load-newest:hover{border-color:#e1e1e1;box-shadow:0 0 6px 0 #eaeaea}body.activity-permalink .activity-list li{border-width:1px;padding:1em 0 0 0}body.activity-permalink .activity-list li:first-child{padding-top:0}body.activity-permalink .activity-list li.has-comments{padding-bottom:0}body.activity-permalink .activity-list .activity-avatar{width:auto}body.activity-permalink .activity-list .activity-avatar a{display:block}body.activity-permalink .activity-list .activity-avatar img{max-width:100%;background-color:#eaeaea}body.activity-permalink .activity-list .activity-content{border:0;font-size:100%;line-height:1.5;padding:0}body.activity-permalink .activity-list .activity-content .activity-header{margin:0;padding:.5em 0 0 0;text-align:center;width:100%}body.activity-permalink .activity-list .activity-content .activity-inner,body.activity-permalink .activity-list .activity-content blockquote{margin-right:0;margin-top:10px}body.activity-permalink .activity-list .activity-meta{margin:10px 0 10px}body.activity-permalink .activity-list .activity-comments{margin-bottom:10px}@media screen and (min-width:46.8em){body.activity-permalink .activity-list .activity-avatar{right:-20px;margin-left:0;position:relative;top:-20px}body.activity-permalink .activity-list .activity-avatar img{box-shadow:0 0 0 8px #fff}body.activity-permalink .activity-list .activity-content{margin-left:10px}body.activity-permalink .activity-list .activity-content .activity-header p{text-align:right}}.buddypress-wrap .activity-comments{clear:both;margin:0 5%;overflow:hidden;position:relative;width:auto}.buddypress-wrap .activity-comments ul{clear:both;list-style:none;margin:15px 0 0;padding:0}.buddypress-wrap .activity-comments ul li{border-top:1px solid #eee;border-bottom:0;padding:1em 0 0}.buddypress-wrap .activity-comments ul li ul{margin-right:5%}.buddypress-wrap .activity-comments ul li:first-child{border-top:0}.buddypress-wrap .activity-comments ul li:last-child{margin-bottom:0}.buddypress-wrap .activity-comments div.acomment-avatar{width:auto}.buddypress-wrap .activity-comments div.acomment-avatar img{border-width:1px;float:right;height:25px;max-width:none;width:25px}.buddypress-wrap .activity-comments .acomment-content p,.buddypress-wrap .activity-comments .acomment-meta{font-size:14px}.buddypress-wrap .activity-comments .acomment-meta{color:#555;overflow:hidden;padding-right:2%}.buddypress-wrap .activity-comments .acomment-content{border-right:1px solid #ccc;margin:15px 10% 0 0;padding:.5em 1em}.buddypress-wrap .activity-comments .acomment-content p{margin-bottom:.5em}.buddypress-wrap .activity-comments .acomment-options{float:right;margin:10px 20px 10px 0}.buddypress-wrap .activity-comments .acomment-options a{color:#767676;font-size:14px}.buddypress-wrap .activity-comments .acomment-options a:focus,.buddypress-wrap .activity-comments .acomment-options a:hover{color:inherit}.buddypress-wrap .activity-comments .activity-meta.action{background:0 0;margin-top:10px}.buddypress-wrap .activity-comments .activity-meta.action button{font-size:14px;font-weight:400;text-transform:none}.buddypress-wrap .activity-comments .show-all button{font-size:14px;text-decoration:underline;padding-right:.5em}.buddypress-wrap .activity-comments .show-all button span{text-decoration:none}.buddypress-wrap .activity-comments .show-all button:focus span,.buddypress-wrap .activity-comments .show-all button:hover span{color:#5087e5}.buddypress-wrap .mini .activity-comments{clear:both;margin-top:0}body.activity-permalink .activity-comments{background:0 0;width:auto}body.activity-permalink .activity-comments>ul{padding:0 1em 0 .5em}body.activity-permalink .activity-comments ul li>ul{margin-top:10px}form.ac-form{display:none;padding:1em}form.ac-form .ac-reply-avatar{float:right}form.ac-form .ac-reply-avatar img{border:1px solid #eee}form.ac-form .ac-reply-content{color:#767676;padding-right:1em}form.ac-form .ac-reply-content a{text-decoration:none}form.ac-form .ac-reply-content .ac-textarea{margin-bottom:15px;padding:0 .5em;overflow:hidden}form.ac-form .ac-reply-content .ac-textarea textarea{background:0 0;box-shadow:none;color:#555;font-family:inherit;font-size:100%;height:60px;margin:0;outline:0;padding:.5em;width:100%}form.ac-form .ac-reply-content .ac-textarea textarea:focus{box-shadow:0 0 6px #d6d6d6}form.ac-form .ac-reply-content input{margin-top:10px}.activity-comments li form.ac-form{clear:both;margin-left:15px}.activity-comments form.root{margin-right:0}@media screen and (min-width:46.8em){.buddypress-wrap .blogs-list li .item-block{float:none;width:auto}.buddypress-wrap .blogs-list li .item-meta{clear:right;float:none}}@media screen and (min-width:46.8em){.buddypress-wrap .bp-dir-vert-nav .blogs-list .list-title{width:auto}}.buddypress-wrap .groups-list li .list-title{text-align:center}.buddypress-wrap .groups-list li .group-details{clear:right}.buddypress-wrap .groups-list li .group-desc{border:1px solid #eaeaea;border-radius:10px;background-clip:padding-box;font-size:13px;color:#737373;font-style:italic;margin:10px auto 0;padding:1em}@media screen and (min-width:46.8em){.buddypress-wrap .groups-list li .group-desc{font-size:16px}}.buddypress-wrap .groups-list li p{margin:0 0 .5em}@media screen and (min-width:46.8em){.buddypress-wrap .groups-list li .item{margin-left:0}.buddypress-wrap .groups-list li .item-meta,.buddypress-wrap .groups-list li .list-title{text-align:right;width:auto}.buddypress-wrap .groups-list li .item-meta{margin-bottom:20px}.buddypress-wrap .groups-list li .last-activity{clear:right;margin-top:-20px}}.buddypress-wrap .groups-list li.group-no-avatar div.group-desc{margin-right:0}.buddypress-wrap .mygroups .groups-list.grid .wrap{min-height:450px;padding-bottom:0}@media screen and (min-width:46.8em){.buddypress-wrap .groups-list.grid.four .group-desc,.buddypress-wrap .groups-list.grid.three .group-desc{font-size:14px}}@media screen and (min-width:46.8em){.buddypress .bp-vertical-navs .groups-list .item-avatar{margin-left:3%;width:15%}}.buddypress-wrap .members-list li .member-name{margin-bottom:10px}.buddypress-wrap .members-list li .item-extra-content{clear:both;font-size:14px}.buddypress-wrap .members-list li .user-update{border:1px solid #eaeaea;border-radius:10px;background-clip:padding-box;color:#737373;font-style:italic;font-size:13px;margin:15px auto;padding:1em}@media screen and (min-width:46.8em){.buddypress-wrap .members-list li .user-update{font-size:16px}}.buddypress-wrap .members-list li .user-update .activity-read-more{display:block;font-size:12px;font-style:normal;margin-top:10px;padding-right:2px}@media screen and (min-width:46.8em){.buddypress-wrap .members-list li .last-activity{clear:right;margin-top:-10px}}@media screen and (min-width:46.8em){.buddypress-wrap .members-group-list li .joined{clear:right;float:none}}@media screen and (min-width:32em){body:not(.logged-in) .members-list .user-update{width:96%}}.register-page .register-section{box-sizing:border-box}.register-page .signup-form{margin-top:20px}.register-page .signup-form .default-profile input{margin-bottom:20px}.register-page .signup-form label,.register-page .signup-form legend{margin:10px 0 0}.register-page .signup-form .editfield{margin:15px 0}.register-page .signup-form .editfield fieldset{border:0;padding:0}.register-page .signup-form .editfield fieldset legend{margin:0 0 5px;text-indent:0}.register-page .signup-form .editfield .field-visibility-settings{padding:.5em}.register-page .signup-form .editfield .field-visibility-settings fieldset{margin:0 0 10px}.register-page .signup-form #signup-avatar img{margin:0 0 10px 15px}.register-page .signup-form .wp-pwd button{vertical-align:middle}.register-page .signup-form #pass-strength-result,.register-page .signup-form #pass1,.register-page .signup-form #pass1-text{width:10em}.register-page .signup-form #pass1{display:inline-block;margin-bottom:inherit}.register-page .signup-form #pass1-text,.register-page .signup-form .pw-weak{display:none}.register-page .signup-form .show-password #pass1-text{display:inline-block;margin-bottom:inherit}.register-page .signup-form .show-password #pass1{display:none}.register-page .signup-form .description.indicator-hint{font-size:14px}.register-page .signup-form #submit:disabled{color:#767676;opacity:.4}.register-page .signup-form .password-entry,.register-page .signup-form .password-entry-confirm{border:1px solid #eee}body.buddypress.register.js .user-pass2-wrap{display:none}body.buddypress.register.no-js .wp-hide-pw{display:none}@media screen and (min-width:46.8em){.buddypress-wrap .register-page .layout-wrap{display:flex;flex-flow:row wrap;justify-content:space-around}.buddypress-wrap .register-page .layout-wrap .default-profile{flex:1;padding-left:2em}.buddypress-wrap .register-page .layout-wrap .blog-details{flex:1;padding-right:2em}.buddypress-wrap .register-page .submit{clear:both}}@media screen and (min-width:46.8em){.buddypress-wrap.extended-default-reg .register-page .default-profile{min-width:14em;flex:1;padding-left:1em}.buddypress-wrap.extended-default-reg .register-page .extended-profile{flex:2;padding-right:1em}.buddypress-wrap.extended-default-reg .register-page .blog-details{flex:1 100%}}#group-create-body{padding:.5em}#group-create-body .creation-step-name{text-align:center}#group-create-body img.avatar{width:auto;height:auto}#group-create-body .avatar-nav-items{margin-top:15px}.single-headers:after,.single-headers:before{content:" ";display:table}.single-headers:after{clear:both}.single-headers{margin-bottom:15px}.single-headers #item-header-avatar a{display:block;text-align:center}.single-headers #item-header-avatar a img{float:none;width:auto;height:auto}.single-headers div#item-header-content{float:none}@media screen and (min-width:46.8em){.single-headers #item-header-avatar a{text-align:right}.single-headers #item-header-avatar a img{float:right}.single-headers #item-header-content{padding-right:2em}}.single-headers .activity,.single-headers .group-status{display:inline}.single-headers .group-status{font-size:18px;color:#333;padding-left:1em}.single-headers .activity{display:inline-block;font-size:12px;padding:0}.single-headers #sitewide-notice p,.single-headers div#message p{background-color:#ffd;border:1px solid #cb2;color:#440;font-weight:400;margin-top:3px;text-decoration:none}.single-headers h2{line-height:1.2;margin:0 0 5px}.single-headers h2 a{color:#767676;text-decoration:none}.single-headers h2 span.highlight{display:inline-block;font-size:60%;font-weight:400;line-height:1.7;vertical-align:middle}.single-headers h2 span.highlight span{background:#a1dcfa;color:#fff;cursor:pointer;font-size:80%;font-weight:700;margin-bottom:2px;padding:1px 4px;position:relative;left:-2px;top:-2px;vertical-align:middle}.single-headers img.avatar{float:right;margin:0 0 19px 15px}.single-headers .item-meta{color:#767676;font-size:14px;margin:15px 0 5px;padding-bottom:.5em}.single-headers ul{margin-bottom:15px}.single-headers ul li{float:left;list-style:none}.single-headers div.generic-button{text-align:center}.single-headers li.generic-button{display:inline-block;text-align:center}@media screen and (min-width:46.8em){.single-headers a.button,.single-headers div.generic-button,.single-headers li.generic-button{float:right}}.single-headers a.button,.single-headers div.generic-button{margin:10px 0 0 10px}.single-headers li.generic-button{margin:2px 10px}.single-headers li.generic-button:first-child{margin-right:0}.single-headers div#message.info{line-height:.8}body.no-js .single-item-header .js-self-profile-button{display:none}#cover-image-container{position:relative}#header-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;right:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1}#item-header-cover-image{position:relative;z-index:2}#item-header-cover-image #item-header-avatar{padding:0 1em}.groups-header .bp-group-type-list{margin:0}.groups-header .bp-feedback{clear:both}.groups-header .group-item-actions{float:right;margin:0 15px 15px 0;padding-top:0;width:100%}.groups-header .moderators-lists{margin-top:0}.groups-header .moderators-lists .moderators-title{font-size:14px}.groups-header .moderators-lists .user-list{margin:0 0 5px}.groups-header .moderators-lists .user-list ul:after{clear:both;content:"";display:table}.groups-header .moderators-lists .user-list li{display:inline-block;float:none;margin-right:4px;padding:4px}.groups-header .moderators-lists img.avatar{box-shadow:none;float:none;height:30px;margin:0;max-width:100%;width:30px}@media screen and (min-width:46.8em){.groups-header div#item-header-content{float:right;margin-right:10%;text-align:right;padding-top:15px;width:42%}.groups-header .group-item-actions{float:left;margin:0 15px 15px 0;text-align:left;width:20%}.groups-header .groups-meta{clear:both}}.groups-header .desc-wrap{background:#eaeaea;border:1px solid #d6d6d6;margin:0 0 15px;padding:1em;text-align:center}.groups-header .desc-wrap .group-description{background:#fafafa;box-shadow:inset 0 0 9px #ccc;padding:1em;text-align:right}.groups-header .desc-wrap .group-description p{margin:0;padding:0}.bp-user .users-header .user-nicename{margin-bottom:5px}.bp-user .member-header-actions{overflow:hidden}.bp-user .member-header-actions *>*{display:block}.buddypress-wrap .item-body{margin:20px 0}.buddypress-wrap .item-body .screen-heading{font-size:20px;font-weight:400}.buddypress-wrap .item-body .button-tabs{margin:30px 0 15px;list-style:none}.buddypress-wrap.bp-single-vert-nav .bp-list:not(.grid) .item-entry{padding-right:.5em}.single-item.group-members .item-body .filters:not(.no-subnav){border-top:5px solid #eaeaea;padding-top:1em}.single-item.group-members .item-body .filters{margin-top:0}.buddypress-wrap .group-status-type ul{margin:0 20px 20px 0}.groups-manage-members-list{padding:.5em 0}.groups-manage-members-list dd{margin:0;padding:1em 0}.groups-manage-members-list .section-title{background:#eaeaea;padding-right:.3em}.groups-manage-members-list ul{list-style:none;margin-bottom:0}.groups-manage-members-list ul li{border-bottom:1px solid #eee;margin-bottom:10px;padding:.5em .3em .3em}.groups-manage-members-list ul li:last-child,.groups-manage-members-list ul li:only-child{border-bottom:0}.groups-manage-members-list ul li:nth-child(even){background:#fafafa}.groups-manage-members-list ul li.banned-user{background:#fad3d3}.groups-manage-members-list ul .member-name{margin-bottom:0;text-align:center}.groups-manage-members-list ul img{display:block;margin:0 auto;width:20%}@media screen and (min-width:32em){.groups-manage-members-list ul .member-name{text-align:right}.groups-manage-members-list ul img{display:inline;width:50px}}.groups-manage-members-list ul .members-manage-buttons:after,.groups-manage-members-list ul .members-manage-buttons:before{content:" ";display:table}.groups-manage-members-list ul .members-manage-buttons:after{clear:both}.groups-manage-members-list ul .members-manage-buttons{margin:15px 0 5px}.groups-manage-members-list ul .members-manage-buttons a.button{color:#767676;display:block;font-size:13px}@media screen and (min-width:32em){.groups-manage-members-list ul .members-manage-buttons a.button{display:inline-block}}.groups-manage-members-list ul .members-manage-buttons.text-links-list{margin-bottom:0}@media screen and (max-width:32em){.groups-manage-members-list ul .members-manage-buttons.text-links-list a.button{background:#fafafa;border:1px solid #eee;display:block;margin-bottom:10px}}.groups-manage-members-list ul .action:not(.text-links-list) a.button{font-size:12px}@media screen and (min-width:46.8em){.groups-manage-members-list ul li .avatar,.groups-manage-members-list ul li .member-name{float:right}.groups-manage-members-list ul li .avatar{margin-left:15px}.groups-manage-members-list ul li .action{clear:both;float:right}}#group-manage-members-ui #group-members-search-form button[type=submit]{float:left;font-size:inherit;font-weight:400;line-height:1.5;text-align:center;text-transform:none}#group-manage-members-ui #group-members-search-form button[type=submit] span{font-family:dashicons;font-size:18px;line-height:1.6}#group-manage-members-ui #group-members-pagination button:last-child{margin-left:2em}#group-manage-members-ui #bp-no-group-members td{border:none}.buddypress .bp-invites-content ul.item-list{border-top:0}.buddypress .bp-invites-content ul.item-list li{border:1px solid #eaeaea;margin:0 0 1%;padding-right:5px;padding-left:5px;position:relative;width:auto}.buddypress .bp-invites-content ul.item-list li .list-title{margin:0 auto;width:80%}.buddypress .bp-invites-content ul.item-list li .action{position:absolute;top:10px;left:10px}.buddypress .bp-invites-content ul.item-list li .action a.button.invite-button{border:0}.buddypress .bp-invites-content ul.item-list li .action a.button.invite-button:focus,.buddypress .bp-invites-content ul.item-list li .action a.button.invite-button:hover{color:#1fb3dd}.buddypress .bp-invites-content ul.item-list li.selected{box-shadow:inset 0 0 12px 0 rgba(237,187,52,.2)}.buddypress .bp-invites-content .group-inviters li,.buddypress .bp-invites-content .item-list .item-meta span{color:#767676}.buddypress .bp-invites-content li ul.group-inviters{clear:both;margin:0}.buddypress .bp-invites-content li ul.group-inviters li{border:0;float:right;font-size:20px;width:inherit}.buddypress .bp-invites-content li .status{font-size:20px;font-style:italic;clear:both;color:#555;margin:10px 0}.buddypress .bp-invites-content #send-invites-editor ul:after,.buddypress .bp-invites-content #send-invites-editor ul:before{content:" ";display:table}.buddypress .bp-invites-content #send-invites-editor ul:after{clear:both}.buddypress .bp-invites-content #send-invites-editor textarea{width:100%}.buddypress .bp-invites-content #send-invites-editor ul{clear:both;list-style:none;margin:10px 0}.buddypress .bp-invites-content #send-invites-editor ul li{float:right;margin:.5%;max-height:50px;max-width:50px}.buddypress .bp-invites-content #send-invites-editor #bp-send-invites-form{clear:both;margin-top:10px}.buddypress .bp-invites-content #send-invites-editor .action{margin-top:10px;padding-top:10px}.buddypress .bp-invites-content #send-invites-editor.bp-hide{display:none}@media screen and (min-width:46.8em){.buddypress .bp-invites-content ul.item-list>li{box-sizing:border-box;border:1px solid #eaeaea;float:right;padding-right:.5em;padding-left:.5em;width:49.5%}.buddypress .bp-invites-content ul.item-list>li:nth-child(odd){margin-left:.5%}.buddypress .bp-invites-content ul.item-list>li:nth-child(even){margin-right:.5%}.buddypress .bp-invites-content ul.item-list ul.group-inviters{float:right;width:auto}}@media screen and (min-width:46.8em){:not(.vertical)+.item-body #group-invites-container{display:-ms-grid;display:grid;-ms-grid-columns:25% auto;grid-template-columns:25% auto;grid-template-areas:"group-invites-nav group-invites-column"}:not(.vertical)+.item-body #group-invites-container .bp-invites-nav{-ms-grid-row:1;-ms-grid-column:1;grid-area:group-invites-nav}:not(.vertical)+.item-body #group-invites-container .bp-invites-nav li{display:block;float:none}:not(.vertical)+.item-body #group-invites-container .group-invites-column{-ms-grid-row:1;-ms-grid-column:2;grid-area:group-invites-column}}.buddypress.groups .activity-update-form{margin-top:0}.buddypress-wrap .profile{margin-top:30px}.buddypress-wrap .public .profile-fields td.label{width:30%}.buddypress-wrap .profile.edit ul.button-nav{list-style:none;margin:30px 0 10px;padding-right:0}.buddypress-wrap .profile.edit ul.button-nav li{display:inline-block;margin-left:10px}.buddypress-wrap .profile.edit ul.button-nav li a{padding:.5em}.buddypress-wrap .profile.edit .editfield{background:#fafafa;border:1px solid #eee;margin:15px 0;padding:1em}.buddypress-wrap .profile.edit .editfield fieldset{border:0}.buddypress-wrap .profile.edit .editfield fieldset label{font-weight:400}.buddypress-wrap .profile.edit .editfield fieldset label.xprofile-field-label{display:inline}.buddypress-wrap .profile.edit .editfield{display:flex;flex-direction:column}.buddypress-wrap .profile.edit .editfield .description{margin-top:10px;order:2}.buddypress-wrap .profile.edit .editfield>fieldset{order:1}.buddypress-wrap .profile.edit .editfield .field-visibility-settings,.buddypress-wrap .profile.edit .editfield .field-visibility-settings-toggle{order:3}body.no-js .buddypress-wrap .field-visibility-settings-close,body.no-js .buddypress-wrap .field-visibility-settings-toggle{display:none}body.no-js .buddypress-wrap .field-visibility-settings{display:block}.buddypress-wrap .field-visibility-settings{margin:10px 0}.buddypress-wrap .current-visibility-level{font-style:normal;font-weight:700}.buddypress-wrap .field-visibility-settings,.buddypress-wrap .field-visibility-settings-header{color:#737373}.buddypress-wrap .field-visibility-settings fieldset{margin:5px 0}.buddypress-wrap .standard-form .editfield fieldset{margin:0}.buddypress-wrap .standard-form .field-visibility-settings label{font-weight:400;margin:0}.buddypress-wrap .standard-form .field-visibility-settings .radio{list-style:none;margin-bottom:0}.buddypress-wrap .standard-form .field-visibility-settings .field-visibility-settings-close{font-size:12px}.buddypress-wrap .standard-form .wp-editor-container{border:1px solid #dedede}.buddypress-wrap .standard-form .wp-editor-container textarea{background:#fff;width:100%}.buddypress-wrap .standard-form .description{background:#fafafa;font-size:inherit}.buddypress-wrap .standard-form .field-visibility-settings legend,.buddypress-wrap .standard-form .field-visibility-settings-header{font-style:italic}.buddypress-wrap .standard-form .field-visibility-settings-header{font-size:14px}.buddypress-wrap .standard-form .field-visibility-settings label,.buddypress-wrap .standard-form .field-visibility-settings legend{font-size:14px}.buddypress-wrap .standard-form .field-visibility select{margin:0}.buddypress-wrap .html-active button.switch-html{background:#f5f5f5;border-bottom-color:transparent;border-bottom-right-radius:0;border-bottom-left-radius:0}.buddypress-wrap .tmce-active button.switch-tmce{background:#f5f5f5;border-bottom-color:transparent;border-bottom-right-radius:0;border-bottom-left-radius:0}.buddypress-wrap .profile.public .profile-group-title{border-bottom:1px solid #ccc}body.register .buddypress-wrap .page ul{list-style:none}.buddypress-wrap .profile .bp-avatar-nav{margin-top:20px}.message-action-delete:before,.message-action-star:before,.message-action-unstar:before,.message-action-view:before{font-family:dashicons;font-size:18px}.message-action-star:before{color:#aaa;content:"\f154"}.message-action-unstar:before{color:#fcdd77;content:"\f155"}.message-action-view:before{content:"\f473"}.message-action-delete:before{content:"\f153"}.message-action-delete:hover:before{color:#a00}.preview-content .actions a{text-decoration:none}.bp-messages-content{margin:15px 0}.bp-messages-content .avatar{box-shadow:none}.bp-messages-content .thread-participants{list-style:none}.bp-messages-content .thread-participants dd{margin-right:0}.bp-messages-content time{color:#737373;font-size:12px}#message-threads{border-top:1px solid #eaeaea;clear:both;list-style:none;margin:0;max-height:220px;overflow-x:hidden;overflow-y:auto;padding:0;width:100%}#message-threads li{border-bottom:1px solid #eaeaea;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row nowrap;flex-flow:row nowrap;margin:0;overflow:hidden;padding:.5em 0}#message-threads li .thread-cb{display:flex;align-items:center;-moz-flex:1 2 5%;-o-flex:1 2 5%;flex:1 2 5%}#message-threads li .thread-from,#message-threads li .thread-to{-moz-flex:1 2 20%;-o-flex:1 2 20%;flex:1 2 20%}#message-threads li .thread-from img.avatar,#message-threads li .thread-to img.avatar{float:right;margin:0 0 0 10px}#message-threads li .thread-from .user-name,#message-threads li .thread-to .user-name{display:inline-block;line-height:1.1}#message-threads li .thread-from .num-recipients,#message-threads li .thread-to .num-recipients{color:#737373;font-weight:400;font-size:12px;margin:0}#message-threads li .thread-content{-moz-flex:1 2 60%;-o-flex:1 2 60%;flex:1 2 60%}#message-threads li .thread-date{-moz-flex:1 2 15%;-o-flex:1 2 15%;flex:1 2 15%}#message-threads li.selected{background-color:#fafafa}#message-threads li.selected .thread-subject .subject{color:#5087e5}#message-threads li.unread{font-weight:700}#message-threads li .thread-content .excerpt{color:#737373;font-size:12px;margin:0}#message-threads li .thread-content .thread-from,#message-threads li .thread-content .thread-subject,#message-threads li .thread-content .thread-to{font-size:13px}@media screen and (min-width:46.8em){#message-threads li .thread-content .thread-from,#message-threads li .thread-content .thread-subject,#message-threads li .thread-content .thread-to{font-size:16px}}#message-threads li .thread-content .thread-subject{vertical-align:top}#message-threads li .thread-content .thread-subject .excerpt{font-weight:400}#message-threads li .thread-date{padding-left:5px;text-align:left}.bp-messages-content .actions{float:left;max-width:30%;line-height:1}.bp-messages-content .actions .bp-icons:not(.bp-hide){display:inline-block;margin:0;padding:.3em .5em}.bp-messages-content .actions .bp-icons:not(.bp-hide):before{font-size:26px}.bp-messages-content #thread-preview{border:1px solid #eaeaea;margin-top:20px}.bp-messages-content #thread-preview .preview-message{overflow:hidden}.bp-messages-content #thread-preview .preview-content{margin:.5em}.bp-messages-content #thread-preview .preview-content .preview-message{background:#fafafa;margin:10px 0;padding:1em .3em .3em}.bp-messages-content #bp-message-thread-list{border-top:1px solid #eaeaea;clear:both;list-style:none;padding:1em 0 .3em}.bp-messages-content #bp-message-thread-list li{padding:.5em}.bp-messages-content #bp-message-thread-list li:nth-child(2n) .message-content{background:#fafafa}.bp-messages-content #bp-message-thread-list .message-metadata{border-bottom:1px solid #ccc;box-shadow:2px 1px 9px 0 #eee;display:table;padding:.2em;width:100%}.bp-messages-content #bp-message-thread-list .message-metadata .avatar{width:30px}.bp-messages-content #bp-message-thread-list .message-metadata .user-link{display:block;font-size:13px;float:right}@media screen and (min-width:46.8em){.bp-messages-content #bp-message-thread-list .message-metadata .user-link{font-size:16px}}.bp-messages-content #bp-message-thread-list .message-metadata time{color:#737373;font-size:12px;padding:0 .5em}.bp-messages-content #bp-message-thread-list .message-metadata button{padding:0 .3em}.bp-messages-content #bp-message-thread-list .message-metadata button:before{font-size:20px}.bp-messages-content #bp-message-thread-list .message-content{overflow:hidden;margin:1em auto 0;width:90%}.bp-messages-content #bp-message-thread-list img.avatar{float:right;margin:0 0 0 10px}.bp-messages-content #bp-message-thread-list .actions a:before{font-size:18px}.bp-messages-content form.send-reply .avatar-box{padding:.5em 0}.bp-messages-content .preview-pane-header,.bp-messages-content .single-message-thread-header{border-bottom:1px solid #eaeaea}.bp-messages-content .preview-pane-header:after,.bp-messages-content .single-message-thread-header:after{clear:both;content:"";display:table}.bp-messages-content .preview-thread-title,.bp-messages-content .single-thread-title{font-size:16px}.bp-messages-content .preview-thread-title .messages-title,.bp-messages-content .single-thread-title .messages-title{padding-right:2em}.bp-messages-content .thread-participants{float:right;margin:5px 0;width:70%}.bp-messages-content .thread-participants dd,.bp-messages-content .thread-participants ul{margin-bottom:10px}.bp-messages-content .thread-participants ul{list-style:none}.bp-messages-content .thread-participants ul:after{clear:both;content:"";display:table}.bp-messages-content .thread-participants li{float:right;margin-right:5px}.bp-messages-content .thread-participants img{width:30px;height:30px}.bp-messages-content #bp-message-thread-list li .message-content blockquote,.bp-messages-content #bp-message-thread-list li .message-content ol,.bp-messages-content #bp-message-thread-list li .message-content ul,.bp-messages-content #thread-preview .preview-message blockquote,.bp-messages-content #thread-preview .preview-message ol,.bp-messages-content #thread-preview .preview-message ul{list-style-position:inside;margin-right:0}.bp-messages-content #thread-preview:empty,.bp-messages-content ul#message-threads:empty{display:none}.bp-messages-content #bp-message-thread-header h2:first-child,.bp-messages-content #thread-preview h2:first-child{background-color:#eaeaea;color:#555;font-weight:700;margin:0;padding:.5em}.bp-messages-content #bp-message-thread-list li a.user-link,.bp-messages-content #message-threads .thread-content a{border:0;text-decoration:none}.bp-messages-content .standard-form #subject{margin-bottom:20px}div.bp-navs#subsubnav.bp-messages-filters .user-messages-bulk-actions{margin-left:15px;max-width:42.5%}.buddypress.settings .profile-settings.bp-tables-user select{width:100%}body.buddypress.settings .wp-pwd button{vertical-align:middle}body.buddypress.settings #pass-strength-result,body.buddypress.settings #pass1,body.buddypress.settings #pass1-text{width:16em}body.buddypress.settings #pass1{display:inline-block;margin-bottom:inherit}body.buddypress.settings #pass-strength-result,body.buddypress.settings #pass1-text,body.buddypress.settings .pw-weak{display:none}body.buddypress.settings .show-password #pass1-text{display:inline-block;margin-bottom:inherit}body.buddypress.settings .show-password #pass1{display:none}body.buddypress.settings #your-profile #submit:disabled{color:#767676;opacity:.4}body.buddypress.settings.js .user-pass2-wrap,body.buddypress.settings.js .wp-pwd{display:none}body.buddypress.settings.no-js .wp-cancel-pw,body.buddypress.settings.no-js .wp-generate-pw,body.buddypress.settings.no-js .wp-hide-pw{display:none}body.buddypress.settings.data #buddypress.buddypress-wrap .item-body p a{text-decoration:underline}.buddypress-wrap #whats-new-post-in-box select,.buddypress-wrap .filter select{border:1px solid #d6d6d6}.buddypress-wrap input.action[disabled]{cursor:pointer;opacity:.4}.buddypress-wrap #notification-bulk-manage[disabled]{display:none}.buddypress-wrap fieldset legend{font-size:inherit;font-weight:600}.buddypress-wrap input[type=email]:focus,.buddypress-wrap input[type=password]:focus,.buddypress-wrap input[type=tel]:focus,.buddypress-wrap input[type=text]:focus,.buddypress-wrap input[type=url]:focus,.buddypress-wrap textarea:focus{box-shadow:0 0 8px #eaeaea}.buddypress-wrap select{height:auto}.buddypress-wrap textarea{resize:vertical}.buddypress-wrap .standard-form .bp-controls-wrap{margin:1em 0}.buddypress-wrap .standard-form .groups-members-search input[type=search],.buddypress-wrap .standard-form .groups-members-search input[type=text],.buddypress-wrap .standard-form [data-bp-search] input[type=search],.buddypress-wrap .standard-form [data-bp-search] input[type=text],.buddypress-wrap .standard-form input[type=color],.buddypress-wrap .standard-form input[type=date],.buddypress-wrap .standard-form input[type=datetime-local],.buddypress-wrap .standard-form input[type=datetime],.buddypress-wrap .standard-form input[type=email],.buddypress-wrap .standard-form input[type=month],.buddypress-wrap .standard-form input[type=number],.buddypress-wrap .standard-form input[type=password],.buddypress-wrap .standard-form input[type=range],.buddypress-wrap .standard-form input[type=search],.buddypress-wrap .standard-form input[type=tel],.buddypress-wrap .standard-form input[type=text],.buddypress-wrap .standard-form input[type=time],.buddypress-wrap .standard-form input[type=url],.buddypress-wrap .standard-form input[type=week],.buddypress-wrap .standard-form select,.buddypress-wrap .standard-form textarea{background:#fafafa;border:1px solid #d6d6d6;border-radius:0;font:inherit;font-size:100%;padding:.5em}.buddypress-wrap .standard-form input[required],.buddypress-wrap .standard-form select[required],.buddypress-wrap .standard-form textarea[required]{box-shadow:none;border-width:2px;outline:0}.buddypress-wrap .standard-form input[required]:invalid,.buddypress-wrap .standard-form select[required]:invalid,.buddypress-wrap .standard-form textarea[required]:invalid{border-color:#b71717}.buddypress-wrap .standard-form input[required]:valid,.buddypress-wrap .standard-form select[required]:valid,.buddypress-wrap .standard-form textarea[required]:valid{border-color:#91cc2c}.buddypress-wrap .standard-form input[required]:focus,.buddypress-wrap .standard-form select[required]:focus,.buddypress-wrap .standard-form textarea[required]:focus{border-color:#d6d6d6;border-width:1px}.buddypress-wrap .standard-form input.invalid[required],.buddypress-wrap .standard-form select.invalid[required],.buddypress-wrap .standard-form textarea.invalid[required]{border-color:#b71717}.buddypress-wrap .standard-form input:not(.small),.buddypress-wrap .standard-form textarea{width:100%}.buddypress-wrap .standard-form input[type=checkbox],.buddypress-wrap .standard-form input[type=radio]{margin-left:5px;width:auto}.buddypress-wrap .standard-form select{padding:3px}.buddypress-wrap .standard-form textarea{height:120px}.buddypress-wrap .standard-form textarea#message_content{height:200px}.buddypress-wrap .standard-form input[type=password]{margin-bottom:5px}.buddypress-wrap .standard-form input:focus,.buddypress-wrap .standard-form select:focus,.buddypress-wrap .standard-form textarea:focus{background:#fafafa;color:#555;outline:0}.buddypress-wrap .standard-form label,.buddypress-wrap .standard-form span.label{display:block;font-weight:600;margin:15px 0 5px;width:auto}.buddypress-wrap .standard-form a.clear-value{display:block;margin-top:5px;outline:0}.buddypress-wrap .standard-form .submit{clear:both;padding:15px 0 0}.buddypress-wrap .standard-form p.submit{margin-bottom:0}.buddypress-wrap .standard-form div.submit input{margin-left:15px}.buddypress-wrap .standard-form #invite-list label,.buddypress-wrap .standard-form p label{font-weight:400;margin:auto}.buddypress-wrap .standard-form p.description{color:#737373;margin:5px 0}.buddypress-wrap .standard-form div.checkbox label:nth-child(n+2),.buddypress-wrap .standard-form div.radio div label{color:#737373;font-size:100%;font-weight:400;margin:5px 0 0}.buddypress-wrap .standard-form#send-reply textarea{width:97.5%}.buddypress-wrap .standard-form#sidebar-login-form label{margin-top:5px}.buddypress-wrap .standard-form#sidebar-login-form input[type=password],.buddypress-wrap .standard-form#sidebar-login-form input[type=text]{padding:4px;width:95%}.buddypress-wrap .standard-form.profile-edit input:focus{background:#fff}@media screen and (min-width:46.8em){.buddypress-wrap .standard-form .left-menu{float:right}.buddypress-wrap .standard-form #invite-list ul{list-style:none;margin:1%}.buddypress-wrap .standard-form #invite-list ul li{margin:0 1% 0 0}.buddypress-wrap .standard-form .main-column{margin-right:190px}.buddypress-wrap .standard-form .main-column ul#friend-list{clear:none;float:right}.buddypress-wrap .standard-form .main-column ul#friend-list h4{clear:none}}.buddypress-wrap .standard-form .bp-tables-user label{margin:0}.buddypress-wrap .signup-form label,.buddypress-wrap .signup-form legend{font-weight:400}body.no-js .buddypress #delete_inbox_messages,body.no-js .buddypress #delete_sentbox_messages,body.no-js .buddypress #message-type-select,body.no-js .buddypress #messages-bulk-management #select-all-messages,body.no-js .buddypress #notifications-bulk-management #select-all-notifications,body.no-js .buddypress label[for=message-type-select]{display:none}.buddypress-wrap .wp-editor-wrap .wp-editor-wrap button,.buddypress-wrap .wp-editor-wrap .wp-editor-wrap input[type=button],.buddypress-wrap .wp-editor-wrap .wp-editor-wrap input[type=submit],.buddypress-wrap .wp-editor-wrap a.button,.buddypress-wrap .wp-editor-wrap input[type=reset]{padding:0 8px 1px}.buddypress-wrap .select-wrap{border:1px solid #eee}.buddypress-wrap .select-wrap label{display:inline}.buddypress-wrap .select-wrap select::-ms-expand{display:none}.buddypress-wrap .select-wrap select{-moz-appearance:none;-webkit-appearance:none;-o-appearance:none;appearance:none;border:0;cursor:pointer;margin-left:-25px;padding:6px 10px 6px 25px;position:relative;text-indent:-2px;z-index:1;width:auto}.buddypress-wrap .select-wrap select,.buddypress-wrap .select-wrap select:active,.buddypress-wrap .select-wrap select:focus{background:0 0}.buddypress-wrap .select-wrap span.select-arrow{display:inline-block;position:relative;z-index:0}.buddypress-wrap .select-wrap span.select-arrow:before{color:#ccc;content:"\25BC"}.buddypress-wrap .select-wrap:focus .select-arrow:before,.buddypress-wrap .select-wrap:hover .select-arrow:before{color:#a6a6a6}.buddypress-wrap .bp-search form:focus,.buddypress-wrap .bp-search form:hover,.buddypress-wrap .select-wrap:focus,.buddypress-wrap .select-wrap:hover{border:1px solid #d5d4d4;box-shadow:inset 0 0 3px #eee}@media screen and (min-width:32em){.buddypress-wrap .notifications-options-nav .select-wrap{float:right}}.buddypress-wrap .bp-dir-search-form,.buddypress-wrap .bp-messages-search-form:after,.buddypress-wrap .bp-messages-search-form:before{content:" ";display:table}.buddypress-wrap .bp-dir-search-form,.buddypress-wrap .bp-messages-search-form:after{clear:both}.buddypress-wrap form#group-members-search,.buddypress-wrap form.bp-dir-search-form,.buddypress-wrap form.bp-messages-search-form,.buddypress-wrap form[data-bp-search].bp-invites-search-form{border:1px solid #eee;width:100%}.buddypress-wrap form#group-members-search label,.buddypress-wrap form.bp-dir-search-form label,.buddypress-wrap form.bp-messages-search-form label,.buddypress-wrap form[data-bp-search].bp-invites-search-form label{margin:0}.buddypress-wrap form#group-members-search button[type=submit],.buddypress-wrap form#group-members-search input[type=search],.buddypress-wrap form#group-members-search input[type=text],.buddypress-wrap form.bp-dir-search-form button[type=submit],.buddypress-wrap form.bp-dir-search-form input[type=search],.buddypress-wrap form.bp-dir-search-form input[type=text],.buddypress-wrap form.bp-messages-search-form button[type=submit],.buddypress-wrap form.bp-messages-search-form input[type=search],.buddypress-wrap form.bp-messages-search-form input[type=text],.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=text]{background:0 0;border:0;border-radius:0;background-clip:padding-box}.buddypress-wrap form#group-members-search input[type=search],.buddypress-wrap form#group-members-search input[type=text],.buddypress-wrap form.bp-dir-search-form input[type=search],.buddypress-wrap form.bp-dir-search-form input[type=text],.buddypress-wrap form.bp-messages-search-form input[type=search],.buddypress-wrap form.bp-messages-search-form input[type=text],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=text]{float:right;line-height:1.5;padding:3px 10px;width:80%}.buddypress-wrap form#group-members-search button[type=submit],.buddypress-wrap form.bp-dir-search-form button[type=submit],.buddypress-wrap form.bp-messages-search-form button[type=submit],.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit]{float:left;font-size:inherit;font-weight:400;line-height:1.5;padding:3px .7em;text-align:center;text-transform:none;width:20%}.buddypress-wrap form#group-members-search button[type=submit] span,.buddypress-wrap form.bp-dir-search-form button[type=submit] span,.buddypress-wrap form.bp-messages-search-form button[type=submit] span,.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit] span{font-family:dashicons;font-size:18px;line-height:1.6}.buddypress-wrap form#group-members-search button[type=submit].bp-show,.buddypress-wrap form.bp-dir-search-form button[type=submit].bp-show,.buddypress-wrap form.bp-messages-search-form button[type=submit].bp-show,.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit].bp-show{height:auto;right:0;overflow:visible;position:static;top:0}.buddypress-wrap form#group-members-search input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}.buddypress-wrap form#group-members-search input[type=search]::-webkit-search-results-button,.buddypress-wrap form#group-members-search input[type=search]::-webkit-search-results-decoration,.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-results-decoration,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-results-decoration,.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search]::-webkit-search-results-decoration{display:none}.buddypress-wrap form#group-members-search:hover{border:1px solid #d5d4d4;box-shadow:inset 0 0 3px #eee}.buddypress-wrap ul.filters li form label input{line-height:1.4;padding:.1em .7em}.buddypress-wrap .current-member-type{font-style:italic}.buddypress-wrap .dir-form{clear:both}.budypress.no-js form.bp-dir-search-form button[type=submit]{height:auto;right:0;overflow:visible;position:static;top:0}.bp-user [data-bp-search] form input[type=search],.bp-user [data-bp-search] form input[type=text]{padding:6px 10px 7px}.buddypress-wrap .bp-tables-user,.buddypress-wrap table.forum,.buddypress-wrap table.wp-profile-fields{width:100%}.buddypress-wrap .bp-tables-user thead tr,.buddypress-wrap table.forum thead tr,.buddypress-wrap table.wp-profile-fields thead tr{background:0 0;border-bottom:2px solid #ccc}.buddypress-wrap .bp-tables-user tbody tr,.buddypress-wrap table.forum tbody tr,.buddypress-wrap table.wp-profile-fields tbody tr{background:#fafafa}.buddypress-wrap .bp-tables-user tr td,.buddypress-wrap .bp-tables-user tr th,.buddypress-wrap table.forum tr td,.buddypress-wrap table.forum tr th,.buddypress-wrap table.wp-profile-fields tr td,.buddypress-wrap table.wp-profile-fields tr th{padding:.5em;vertical-align:middle}.buddypress-wrap .bp-tables-user tr td.label,.buddypress-wrap table.forum tr td.label,.buddypress-wrap table.wp-profile-fields tr td.label{border-left:1px solid #eaeaea;font-weight:600;width:25%}.buddypress-wrap .bp-tables-user tr.alt td,.buddypress-wrap table.wp-profile-fields tr.alt td{background:#fafafa}.buddypress-wrap table.profile-fields .data{padding:.5em 1em}.buddypress-wrap table.profile-fields tr:last-child{border-bottom:none}.buddypress-wrap table.notifications td{padding:1em .5em}.buddypress-wrap table.notifications .bulk-select-all,.buddypress-wrap table.notifications .bulk-select-check{width:7%}.buddypress-wrap table.notifications .bulk-select-check{vertical-align:middle}.buddypress-wrap table.notifications .date,.buddypress-wrap table.notifications .notification-description,.buddypress-wrap table.notifications .notification-since,.buddypress-wrap table.notifications .title{width:39%}.buddypress-wrap table.notifications .actions,.buddypress-wrap table.notifications .notification-actions{width:15%}.buddypress-wrap table.notification-settings th.title,.buddypress-wrap table.profile-settings th.title{width:80%}.buddypress-wrap table.notifications .notification-actions a.delete,.buddypress-wrap table.notifications .notification-actions a.mark-read{display:inline-block}.buddypress-wrap table.notification-settings{margin-bottom:15px;text-align:right}.buddypress-wrap #groups-notification-settings{margin-bottom:0}.buddypress-wrap table.notification-settings td:first-child,.buddypress-wrap table.notification-settings th.icon,.buddypress-wrap table.notifications td:first-child,.buddypress-wrap table.notifications th.icon{display:none}.buddypress-wrap table.notification-settings .no,.buddypress-wrap table.notification-settings .yes{text-align:center;width:40px;vertical-align:middle}.buddypress-wrap table#message-threads{clear:both}.buddypress-wrap table#message-threads .thread-info{min-width:40%}.buddypress-wrap table#message-threads .thread-info p{margin:0}.buddypress-wrap table#message-threads .thread-info p.thread-excerpt{color:#737373;font-size:12px;margin-top:3px}.buddypress-wrap table.profile-fields{margin-bottom:20px}.buddypress-wrap table.profile-fields:last-child{margin-bottom:0}.buddypress-wrap table.profile-fields p{margin:0}.buddypress-wrap table.profile-fields p:last-child{margin-top:0}.bp-screen-reader-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.center-vert{display:flex;align-items:center}.bp-hide{display:none}.bp-show{height:auto;right:0;overflow:visible;position:static;top:0}.buddypress .buddypress-wrap .activity-read-more a,.buddypress .buddypress-wrap .comment-reply-link,.buddypress .buddypress-wrap .generic-button a,.buddypress .buddypress-wrap a.bp-title-button,.buddypress .buddypress-wrap a.button,.buddypress .buddypress-wrap button,.buddypress .buddypress-wrap input[type=button],.buddypress .buddypress-wrap input[type=reset],.buddypress .buddypress-wrap input[type=submit],.buddypress .buddypress-wrap ul.button-nav:not(.button-tabs) li a{background:#fff;border-color:#ccc;border-style:solid;border-width:1px;border-radius:0;color:#555;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:400;outline:0;padding:.3em .5em;text-align:center;text-decoration:none;width:auto;line-height:1}.buddypress .buddypress-wrap a.button.dashicons,.buddypress .buddypress-wrap button.dashicons{font-family:dashicons}.buddypress .buddypress-wrap .button-small[type=button]{padding:0 8px 1px}.buddypress .buddypress-wrap .activity-read-more a:focus,.buddypress .buddypress-wrap .activity-read-more a:hover,.buddypress .buddypress-wrap .button-nav li a:focus,.buddypress .buddypress-wrap .button-nav li a:hover,.buddypress .buddypress-wrap .button-nav li.current a,.buddypress .buddypress-wrap .comment-reply-link:focus,.buddypress .buddypress-wrap .comment-reply-link:hover,.buddypress .buddypress-wrap .generic-button a:focus,.buddypress .buddypress-wrap .generic-button a:hover,.buddypress .buddypress-wrap a.button:focus,.buddypress .buddypress-wrap a.button:hover,.buddypress .buddypress-wrap button:focus,.buddypress .buddypress-wrap button:hover,.buddypress .buddypress-wrap input[type=button]:focus,.buddypress .buddypress-wrap input[type=button]:hover,.buddypress .buddypress-wrap input[type=reset]:focus,.buddypress .buddypress-wrap input[type=reset]:hover,.buddypress .buddypress-wrap input[type=submit]:focus,.buddypress .buddypress-wrap input[type=submit]:hover{background:#ededed;border-color:#999;color:#333;outline:0;text-decoration:none}.buddypress .buddypress-wrap a.disabled,.buddypress .buddypress-wrap button.disabled,.buddypress .buddypress-wrap button.pending,.buddypress .buddypress-wrap div.pending a,.buddypress .buddypress-wrap input[type=button].disabled,.buddypress .buddypress-wrap input[type=button].pending,.buddypress .buddypress-wrap input[type=reset].disabled,.buddypress .buddypress-wrap input[type=reset].pending,.buddypress .buddypress-wrap input[type=submit].pending,.buddypress .buddypress-wrap input[type=submit][disabled=disabled]{border-color:#eee;color:#767676;cursor:default}.buddypress .buddypress-wrap a.disabled:hover,.buddypress .buddypress-wrap button.disabled:hover,.buddypress .buddypress-wrap button.pending:hover,.buddypress .buddypress-wrap div.pending a:hover,.buddypress .buddypress-wrap input[type=button]:hover.disabled,.buddypress .buddypress-wrap input[type=button]:hover.pending,.buddypress .buddypress-wrap input[type=reset]:hover.disabled,.buddypress .buddypress-wrap input[type=reset]:hover.pending,.buddypress .buddypress-wrap input[type=submit]:hover.disabled,.buddypress .buddypress-wrap input[type=submit]:hover.pending{border-color:#eee;color:#767676}.buddypress .buddypress-wrap button.text-button,.buddypress .buddypress-wrap input.text-button{background:0 0;border:0;box-shadow:none;color:#767676}.buddypress .buddypress-wrap button.text-button.small,.buddypress .buddypress-wrap input.text-button.small{font-size:13px}.buddypress .buddypress-wrap button.text-button:focus,.buddypress .buddypress-wrap button.text-button:hover,.buddypress .buddypress-wrap input.text-button:focus,.buddypress .buddypress-wrap input.text-button:hover{background:0 0;text-decoration:underline}.buddypress .buddypress-wrap .activity-list a.button{border:none}.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.invite-button:hover{color:#1fb3dd}.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.group-remove-invite-button:hover,.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.invite-button:hover,.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li.selected a.group-remove-invite-button:hover,.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li.selected a.invite-button:hover{color:#a00}.buddypress .buddypress-wrap #item-buttons:empty{display:none}.buddypress .buddypress-wrap input:disabled:focus,.buddypress .buddypress-wrap input:disabled:hover{background:0 0}.buddypress .buddypress-wrap .text-links-list a.button{background:0 0;border:none;border-left:1px solid #eee;color:#737373;display:inline-block;padding:.3em 1em}.buddypress .buddypress-wrap .text-links-list a.button:visited{color:#d6d6d6}.buddypress .buddypress-wrap .text-links-list a.button:focus,.buddypress .buddypress-wrap .text-links-list a.button:hover{color:#5087e5}.buddypress .buddypress-wrap .text-links-list a:first-child{padding-right:0}.buddypress .buddypress-wrap .text-links-list a:last-child{border-left:none}.buddypress .buddypress-wrap .bp-list.grid .action a,.buddypress .buddypress-wrap .bp-list.grid .action button{border:1px solid #ccc;display:block;margin:0}.buddypress .buddypress-wrap .bp-list.grid .action a:focus,.buddypress .buddypress-wrap .bp-list.grid .action a:hover,.buddypress .buddypress-wrap .bp-list.grid .action button:focus,.buddypress .buddypress-wrap .bp-list.grid .action button:hover{background:#ededed}.buddypress #buddypress .create-button{background:0 0;text-align:center}.buddypress #buddypress .create-button a:focus,.buddypress #buddypress .create-button a:hover{text-decoration:underline}@media screen and (min-width:46.8em){.buddypress #buddypress .create-button{float:left}}.buddypress #buddypress .create-button a{border:1px solid #ccc;border-radius:5px;background-clip:padding-box;box-shadow:inset 0 0 6px 0 #eaeaea;margin:.2em 0;width:auto}.buddypress #buddypress .create-button a:focus,.buddypress #buddypress .create-button a:hover{background:0 0;border-color:#ccc;box-shadow:inset 0 0 12px 0 #eaeaea}@media screen and (min-width:46.8em){.buddypress #buddypress.bp-dir-vert-nav .create-button{float:none;padding-top:2em}.buddypress #buddypress.bp-dir-vert-nav .create-button a{margin-left:.5em}}.buddypress #buddypress.bp-dir-hori-nav .create-button{float:right}.buddypress #buddypress.bp-dir-hori-nav .create-button a,.buddypress #buddypress.bp-dir-hori-nav .create-button a:hover{background:0 0;border:0;box-shadow:none;margin:0}.buddypress-wrap button.ac-reply-cancel,.buddypress-wrap button.bp-icons{background:0 0;border:0}.buddypress-wrap button.bp-icons:focus,.buddypress-wrap button.bp-icons:hover{background:0 0}.buddypress-wrap button.ac-reply-cancel:focus,.buddypress-wrap button.ac-reply-cancel:hover{background:0 0;text-decoration:underline}.buddypress-wrap .bp-invites-content li .invite-button span.icons:before,.buddypress-wrap .bp-invites-filters .invite-button span.icons:before,.buddypress-wrap .bp-messages-filters li a.messages-button:before,.buddypress-wrap .feed a:before,.buddypress-wrap .filter label:before{font-family:dashicons;font-size:18px}.buddypress-wrap .bp-invites-content .item-list li .invite-button span.icons:before{font-size:27px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-invites-content .item-list li .invite-button span.icons:before{font-size:32px}}.buddypress-wrap .bp-list a.button.invite-button:focus,.buddypress-wrap .bp-list a.button.invite-button:hover{background:0 0}.buddypress-wrap .filter label:before{content:"\f536"}.buddypress-wrap div.feed a:before,.buddypress-wrap li.feed a:before{content:"\f303"}.buddypress-wrap ul.item-list li .invite-button:not(.group-remove-invite-button) span.icons:before{content:"\f502"}.buddypress-wrap ul.item-list li .group-remove-invite-button span.icons:before,.buddypress-wrap ul.item-list li.selected .invite-button span.icons:before{content:"\f153"}.buddypress-wrap .bp-invites-filters ul li #bp-invites-next-page:before,.buddypress-wrap .bp-messages-filters ul li #bp-messages-next-page:before{content:"\f345"}.buddypress-wrap .bp-invites-filters ul li #bp-invites-prev-page:before,.buddypress-wrap .bp-messages-filters ul li #bp-messages-prev-page:before{content:"\f341"}.buddypress-wrap .warn{color:#b71717}.buddypress-wrap .bp-messages{border:1px solid #ccc;margin:0 0 15px}.buddypress-wrap .bp-messages .sitewide-notices{display:block;margin:5px;padding:.5em}.buddypress-wrap .bp-messages.info{margin-bottom:0}.buddypress-wrap .bp-messages.updated{clear:both;display:block}.buddypress-wrap .bp-messages.bp-user-messages-feedback{border:0}.buddypress-wrap #group-create-body .bp-cover-image-status p.warning{background:#0b80a4;border:0;box-shadow:0 0 3px 0 rgba(0,0,0,.2);color:#fff}.buddypress-wrap .bp-feedback:not(.custom-homepage-info){display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row nowrap;flex-flow:row nowrap;align-items:stretch}.buddypress-wrap .bp-feedback{background:#fff;color:#807f7f;box-shadow:0 1px 1px 1px rgba(0,0,0,.1);color:#737373;margin:10px 0;position:relative}.buddypress-wrap .bp-feedback p{margin:0}.buddypress-wrap .bp-feedback span.bp-icon{color:#fff;display:block;font-family:dashicons;right:0;margin-left:10px;position:relative;padding:0 .5em}.buddypress-wrap .bp-feedback .bp-help-text{font-style:italic}.buddypress-wrap .bp-feedback .text{font-size:14px;margin:0;padding:.5em 0}.buddypress-wrap .bp-feedback.no-icon{padding:.5em}.buddypress-wrap .bp-feedback.small:before{line-height:inherit}.buddypress-wrap a[data-bp-close] span:before,.buddypress-wrap button[data-bp-close] span:before{font-size:32px}.buddypress-wrap a[data-bp-close],.buddypress-wrap button[data-bp-close]{border:0;position:absolute;top:10px;left:10px;width:32px}.buddypress-wrap .bp-feedback.no-icon a[data-bp-close],.buddypress-wrap .bp-feedback.no-icon button[data-bp-close]{top:-6px;left:6px}.buddypress-wrap button[data-bp-close]:hover{background-color:transparent}.buddypress-wrap .bp-feedback p{margin:0}.buddypress-wrap .bp-feedback .bp-icon{font-size:20px;padding:0 2px}.buddypress-wrap .bp-feedback.error .bp-icon,.buddypress-wrap .bp-feedback.help .bp-icon,.buddypress-wrap .bp-feedback.info .bp-icon,.buddypress-wrap .bp-feedback.loading .bp-icon,.buddypress-wrap .bp-feedback.success .bp-icon,.buddypress-wrap .bp-feedback.updated .bp-icon,.buddypress-wrap .bp-feedback.warning .bp-icon{display:flex;align-items:center}.buddypress-wrap .bp-feedback.help .bp-icon,.buddypress-wrap .bp-feedback.info .bp-icon{background-color:#0b80a4}.buddypress-wrap .bp-feedback.help .bp-icon:before,.buddypress-wrap .bp-feedback.info .bp-icon:before{content:"\f348"}.buddypress-wrap .bp-feedback.error .bp-icon,.buddypress-wrap .bp-feedback.warning .bp-icon{background-color:#d33}.buddypress-wrap .bp-feedback.error .bp-icon:before,.buddypress-wrap .bp-feedback.warning .bp-icon:before{content:"\f534"}.buddypress-wrap .bp-feedback.loading .bp-icon{background-color:#ffd087}.buddypress-wrap .bp-feedback.loading .bp-icon:before{content:"\f469"}.buddypress-wrap .bp-feedback.success .bp-icon,.buddypress-wrap .bp-feedback.updated .bp-icon{background-color:#8a2}.buddypress-wrap .bp-feedback.success .bp-icon:before,.buddypress-wrap .bp-feedback.updated .bp-icon:before{content:"\f147"}.buddypress-wrap .bp-feedback.help .bp-icon:before{content:"\f468"}.buddypress-wrap #pass-strength-result{background-color:#eee;border-color:#ddd;border-style:solid;border-width:1px;display:none;font-weight:700;margin:10px 0 10px 0;padding:.5em;text-align:center;width:auto}.buddypress-wrap #pass-strength-result.show{display:block}.buddypress-wrap #pass-strength-result.mismatch{background-color:#333;border-color:transparent;color:#fff}.buddypress-wrap #pass-strength-result.bad,.buddypress-wrap #pass-strength-result.error{background-color:#ffb78c;border-color:#ff853c;color:#333}.buddypress-wrap #pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040;color:#333}.buddypress-wrap #pass-strength-result.good{background-color:#ffec8b;border-color:#fc0;color:#333}.buddypress-wrap #pass-strength-result.strong{background-color:#66d66e;border-color:#438c48;color:#333}.buddypress-wrap .standard-form#signup_form div div.error{background:#faa;color:#a00;margin:0 0 10px 0;padding:.5em;width:90%}.buddypress-wrap .accept,.buddypress-wrap .reject{float:right;margin-right:10px}.buddypress-wrap .members-list.grid .bp-ajax-message{background:rgba(255,255,255,.9);border:1px solid #eee;font-size:14px;right:2%;position:absolute;padding:.5em 1em;left:2%;top:30px}.buddypress.widget .item-options{font-size:12px;margin:0 0 1em;padding:1em 0}.buddypress.widget .bp-login-widget-user-avatar{float:right}.buddypress.widget .bp-login-widget-user-links{margin-right:70px}.buddypress.widget ul.item-list{list-style:none;margin:10px 0}.buddypress.widget ul.activity-list{padding:0}.buddypress.widget ul.activity-list blockquote{margin:0 0 1.5em;overflow:visible;padding:0 .75em .75em 0}.buddypress.widget ul.activity-list img{margin-bottom:.5em}.buddypress.widget ul.activity-list li{border-bottom:1px solid #ccc;margin-bottom:1em}.buddypress.widget ul.activity-list li .activity-header p{margin-bottom:.5em}.buddypress.widget ul.activity-list li:last-child{border-bottom:0}.buddypress.widget .avatar-block{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row wrap;flex-flow:row wrap}.buddypress.widget .avatar-block img{margin:.5em}.buddypress.widget ul#friends-list li:after,.buddypress.widget ul#friends-list li:before,.buddypress.widget ul#groups-list li:after,.buddypress.widget ul#groups-list li:before,.buddypress.widget ul#members-list li:after,.buddypress.widget ul#members-list li:before{content:" ";display:table}.buddypress.widget ul#friends-list li:after,.buddypress.widget ul#groups-list li:after,.buddypress.widget ul#members-list li:after{clear:both}.buddypress.widget ul#friends-list li,.buddypress.widget ul#groups-list li,.buddypress.widget ul#members-list li{margin-bottom:1em}.buddypress.widget ul#friends-list li .item-avatar,.buddypress.widget ul#groups-list li .item-avatar,.buddypress.widget ul#members-list li .item-avatar{float:right;width:60px}.buddypress.widget ul#friends-list li .item,.buddypress.widget ul#groups-list li .item,.buddypress.widget ul#members-list li .item{margin-right:70px}.buddypress-wrap .buddypress.widget ul#friends-list,.buddypress-wrap .buddypress.widget ul#groups-list,.buddypress-wrap .buddypress.widget ul#members-list{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:column nowrap;flex-flow:column nowrap}@media screen and (min-width:32em){.buddypress-wrap .buddypress.widget ul#friends-list,.buddypress-wrap .buddypress.widget ul#groups-list,.buddypress-wrap .buddypress.widget ul#members-list{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row wrap;flex-flow:row wrap}}.buddypress-wrap .buddypress.widget ul#friends-list li,.buddypress-wrap .buddypress.widget ul#groups-list li,.buddypress-wrap .buddypress.widget ul#members-list li{border:1px solid #eee;align-items:stretch;-moz-flex:1 1 46%;-o-flex:1 1 46%;flex:1 1 46%;margin:2%}@media screen and (min-width:75em){.buddypress-wrap .buddypress.widget ul#friends-list li,.buddypress-wrap .buddypress.widget ul#groups-list li,.buddypress-wrap .buddypress.widget ul#members-list li{-moz-flex:0 1 20%;-o-flex:0 1 20%;flex:0 1 20%}}.buddypress-wrap .buddypress.widget ul#friends-list li .item-avatar,.buddypress-wrap .buddypress.widget ul#groups-list li .item-avatar,.buddypress-wrap .buddypress.widget ul#members-list li .item-avatar{padding:.5em;text-align:center}.buddypress-wrap .buddypress.widget ul#friends-list li .item,.buddypress-wrap .buddypress.widget ul#groups-list li .item,.buddypress-wrap .buddypress.widget ul#members-list li .item{padding:.5em}.buddypress-wrap .buddypress.widget ul#friends-list li .item .item-meta,.buddypress-wrap .buddypress.widget ul#groups-list li .item .item-meta,.buddypress-wrap .buddypress.widget ul#members-list li .item .item-meta{font-size:12px;overflow-wrap:break-word}@media screen and (min-width:75em){.buddypress-wrap .buddypress.widget ul#friends-list,.buddypress-wrap .buddypress.widget ul#groups-list,.buddypress-wrap .buddypress.widget ul#members-list{margin:10px -2%;width:100%}.buddypress-wrap .buddypress.widget ul#friends-list li,.buddypress-wrap .buddypress.widget ul#groups-list li,.buddypress-wrap .buddypress.widget ul#members-list li{-moz-flex:0 1 auto;-o-flex:0 1 auto;flex:0 1 auto;margin:10px 2% 1%;width:46%}}.buddypress-wrap .buddypress.widget blockquote{margin:0 0 1.5em;overflow:visible;padding:0 .75em .75em 0}#buddypress-wrap *{transition:opacity .1s ease-in-out .1s}#buddypress-wrap a.button,#buddypress-wrap a.generic-button,#buddypress-wrap button,#buddypress-wrap input[type=reset],#buddypress-wrap input[type=submit]{transition:background .1s ease-in-out .1s,color .1s ease-in-out .1s,border-color .1s ease-in-out .1s}.buddypress-wrap a.loading,.buddypress-wrap input.loading{animation:loader-pulsate .5s infinite ease-in-out alternate;border-color:#aaa}@keyframes loader-pulsate{from{border-color:#aaa;box-shadow:0 0 6px #ccc}to{border-color:#ccc;box-shadow:0 0 6px #f8f8f8}}.buddypress-wrap a.loading:hover,.buddypress-wrap input.loading:hover{color:#777}[data-bp-tooltip]{position:relative}[data-bp-tooltip]:after{background-color:#fff;display:none;opacity:0;position:absolute;transform:translate3d(0,0,0);visibility:hidden}[data-bp-tooltip]:after{border:1px solid #737373;border-radius:1px;box-shadow:-4px 4px 8px rgba(0,0,0,.2);color:#333;content:attr(data-bp-tooltip);font-family:"Helvetica Neue",helvetica,arial,san-serif;font-size:12px;font-weight:400;letter-spacing:normal;line-height:1.25;max-width:200px;padding:5px 8px;pointer-events:none;text-shadow:none;text-transform:none;transition:all 1.5s ease;white-space:nowrap;word-wrap:break-word;z-index:100000}[data-bp-tooltip]:active:after,[data-bp-tooltip]:focus:after,[data-bp-tooltip]:hover:after{display:block;opacity:1;overflow:visible;visibility:visible}[data-bp-tooltip=""]{display:none;opacity:0;visibility:hidden}.bp-tooltip:after{right:50%;margin-top:7px;top:110%;transform:translate(50%,0)}.user-list .bp-tooltip:after{right:0;transform:translate(0,0)}@media screen and (min-width:46.8em){.user-list .bp-tooltip:after{right:auto;left:0;transform:translate(0,0)}}.activity-list .bp-tooltip:after,.activity-meta-action .bp-tooltip:after,.avatar-block .item-avatar .bp-tooltip:after,.notification-actions .bp-tooltip:after,.participants-list .bp-tooltip:after{right:0;transform:translate(0,0)}.bp-invites-content .bp-tooltip:after,.message-metadata .actions .bp-tooltip:after,.single-message-thread-header .actions .bp-tooltip:after{right:auto;left:0;transform:translate(0,0)}.bp-invites-content #send-invites-editor .bp-tooltip:after{right:0;left:auto}#item-body,.single-screen-navs{box-sizing:border-box}.grid>li,.grid>li .generic-button a{box-sizing:border-box}.grid>li{border-bottom:0;padding-bottom:10px;padding-top:0}.grid>li .list-wrap{background:#fafafa;border:1px solid #eee;padding-bottom:15px;position:relative;overflow:hidden;padding-top:14px}.grid>li .list-wrap .list-title{padding:.5em}.grid>li .list-wrap .update{color:#737373;padding:.5em 2em}.grid>li .item-avatar{text-align:center}.grid>li .item-avatar .avatar{border-radius:50%;display:inline-block;width:50%}@media screen and (min-width:24em){.grid.members-list .list-wrap{min-height:340px}.grid.members-list .list-wrap .item-block{margin:0 auto;min-height:7rem}.grid.members-group-list .list-wrap .item-block{margin:0 auto;min-height:7rem}.grid.groups-list .list-wrap{min-height:470px}.grid.groups-list .list-wrap .item-block{min-height:6rem}.grid.groups-list .list-wrap .group-desc{margin:15px auto 0;min-height:5em;overflow:hidden}.grid.groups-list .list-wrap .group-details,.grid.groups-list .list-wrap .item-desc,.grid.groups-list .list-wrap .last-activity{margin-bottom:0}.grid.groups-list .list-wrap .group-details p,.grid.groups-list .list-wrap .item-desc p,.grid.groups-list .list-wrap .last-activity p{margin-bottom:0}.grid.blogs-list .list-wrap{min-height:350px}.grid.blogs-list .list-wrap .item-block{margin:0 auto;min-height:7rem}}@media screen and (min-width:24em){.grid>li.item-entry{float:right;margin:0}.grid.two>li{padding-bottom:20px}}@media screen and (min-width:24em) and (min-width:75em){.grid.two>li .list-wrap{max-width:500px;margin:0 auto}}@media screen and (min-width:24em){.grid.three>li,.grid.two>li{width:50%}.grid.three>li:nth-child(odd),.grid.two>li:nth-child(odd){padding-left:10px}.grid.three>li:nth-child(even),.grid.two>li:nth-child(even){padding-right:10px}.grid.three>li .item,.grid.two>li .item{margin:1rem auto 0;width:80%}.grid.three>li .item .item-title,.grid.two>li .item .item-title{width:auto}}@media screen and (min-width:46.8em){.grid.three>li{padding-top:0;width:33.333333%;width:calc(100% / 3)}.grid.three>li:nth-child(1n+1){padding-right:5px;padding-left:5px}.grid.three>li:nth-child(3n+3){padding-right:5px;padding-left:0}.grid.three>li:nth-child(3n+1){padding-right:0;padding-left:5px}}@media screen and (min-width:46.8em){.grid.four>li{width:25%}.grid.four>li:nth-child(1n+1){padding-right:5px;padding-left:5px}.grid.four>li:nth-child(4n+4){padding-right:5px;padding-left:0}.grid.four>li:nth-child(4n+1){padding-right:0;padding-left:5px}}.buddypress-wrap .grid.bp-list{padding-top:1em}.buddypress-wrap .grid.bp-list>li{border-bottom:none}.buddypress-wrap .grid.bp-list>li .list-wrap{padding-bottom:3em}.buddypress-wrap .grid.bp-list>li .item-avatar{margin:0;text-align:center;width:auto}.buddypress-wrap .grid.bp-list>li .item-avatar img.avatar{display:inline-block;height:auto;width:50%}.buddypress-wrap .grid.bp-list>li .item-meta,.buddypress-wrap .grid.bp-list>li .list-title{float:none;text-align:center}.buddypress-wrap .grid.bp-list>li .list-title{font-size:inherit;line-height:1.1}.buddypress-wrap .grid.bp-list>li .item{font-size:18px;right:0;margin:0 auto;text-align:center;width:96%}@media screen and (min-width:46.8em){.buddypress-wrap .grid.bp-list>li .item{font-size:22px}}.buddypress-wrap .grid.bp-list>li .item .group-desc,.buddypress-wrap .grid.bp-list>li .item .item-block{float:none;width:96%}.buddypress-wrap .grid.bp-list>li .item .item-block{margin-bottom:10px}.buddypress-wrap .grid.bp-list>li .item .last-activity{margin-top:5px}.buddypress-wrap .grid.bp-list>li .item .group-desc{clear:none}.buddypress-wrap .grid.bp-list>li .item .user-update{clear:both;text-align:right}.buddypress-wrap .grid.bp-list>li .item .activity-read-more a{display:inline}.buddypress-wrap .grid.bp-list>li .action{bottom:5px;float:none;height:auto;right:0;margin:0;padding:0 5px;position:absolute;text-align:center;top:auto;width:100%}.buddypress-wrap .grid.bp-list>li .action .generic-button{float:none;margin:5px 0 0;text-align:center;width:100%}.buddypress-wrap .grid.bp-list>li .action .generic-button a,.buddypress-wrap .grid.bp-list>li .action .generic-button button{width:100%}.buddypress-wrap .grid.bp-list>li .avatar,.buddypress-wrap .grid.bp-list>li .item,.buddypress-wrap .grid.bp-list>li .item-avatar{float:none}.buddypress-wrap .blogs-list.grid.two>li .blogs-title{min-height:5em}.buddypress-wrap .grid.four>li .group-desc,.buddypress-wrap .grid.three>li .group-desc{min-height:8em}.buddypress-wrap .blogs-list.grid.four>li,.buddypress-wrap .blogs-list.grid.three>li{min-height:350px}.buddypress-wrap .blogs-list.grid.four>li .last-activity,.buddypress-wrap .blogs-list.grid.three>li .last-activity{margin-bottom:0}.buddypress-wrap .blogs-list.grid.four>li .last-post,.buddypress-wrap .blogs-list.grid.three>li .last-post{margin-top:0}.buddypress:not(.logged-in) .grid.bp-list .list-wrap{padding-bottom:5px}.buddypress:not(.logged-in) .grid.groups-list .list-wrap{min-height:430px}.buddypress:not(.logged-in) .grid.members-list .list-wrap{min-height:300px}.buddypress:not(.logged-in) .grid.blogs-list .list-wrap{min-height:320px}@media screen and (min-width:46.8em){.bp-single-vert-nav .bp-navs.vertical{overflow:visible}.bp-single-vert-nav .bp-navs.vertical ul{border-left:1px solid #d6d6d6;border-bottom:0;float:right;margin-left:-1px;width:25%}.bp-single-vert-nav .bp-navs.vertical li{float:none;margin-left:0}.bp-single-vert-nav .bp-navs.vertical li.selected a{background:#ccc;color:#333}.bp-single-vert-nav .bp-navs.vertical li:focus,.bp-single-vert-nav .bp-navs.vertical li:hover{background:#ccc}.bp-single-vert-nav .bp-navs.vertical li span{background:#d6d6d6;border-radius:10%;float:left;margin-left:2px}.bp-single-vert-nav .bp-navs.vertical li:hover span{border-color:#eaeaea}.bp-single-vert-nav .bp-navs.vertical.tabbed-links li.selected a{padding-right:0}.bp-single-vert-nav .bp-wrap{margin-bottom:15px}.bp-single-vert-nav .bp-wrap .group-nav-tabs.groups-nav ul li,.bp-single-vert-nav .bp-wrap .user-nav-tabs.users-nav ul li{right:1px;position:relative}.bp-single-vert-nav .item-body:not(#group-create-body){background:#fff;border-right:1px solid #d6d6d6;float:left;margin:0;min-height:400px;padding:0 1em 0 0;width:calc(75% + 1px)}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links){background:#eaeaea;margin:0 -5px 0 0;width:auto}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li{font-size:16px;margin:10px 0}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a{border-left:1px solid #ccc;padding:0 .5em}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a:focus,.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a:hover{background:0 0}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.current a{background:0 0;color:#333;text-decoration:underline}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li:last-child a{border:none}.bp-dir-vert-nav .dir-navs{float:right;right:1px;position:relative;width:20%}.bp-dir-vert-nav .dir-navs ul li{float:none;overflow:hidden;width:auto}.bp-dir-vert-nav .dir-navs ul li.selected{border:1px solid #eee}.bp-dir-vert-nav .dir-navs ul li.selected a{background:#555;color:#fff}.bp-dir-vert-nav .dir-navs ul li.selected a span{background:#eaeaea;border-color:#ccc;color:#5087e5}.bp-dir-vert-nav .dir-navs ul li a:focus,.bp-dir-vert-nav .dir-navs ul li a:hover{background:#ccc;color:#333}.bp-dir-vert-nav .dir-navs ul li a:focus span,.bp-dir-vert-nav .dir-navs ul li a:hover span{border:1px solid #555}.bp-dir-vert-nav .screen-content{border-right:1px solid #d6d6d6;margin-right:20%;overflow:hidden;padding:0 1em 2em 0}.bp-dir-vert-nav .screen-content .subnav-filters{margin-top:0}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li:not(.selected) a:hover{background:0 0}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li.selected{background:0 0;border:1px solid #d6d6d6;border-left-color:#fff}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li.selected a{background:0 0;color:#333;font-weight:600}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li.selected a span{background:#555;border:1px solid #d6d6d6;color:#fff}} \ No newline at end of file +body #buddypress * a{box-shadow:none;text-decoration:none}body #buddypress div,body #buddypress dl,body #buddypress input[type=reset],body #buddypress input[type=search],body #buddypress input[type=submit],body #buddypress li,body #buddypress select,body #buddypress textarea{border-radius:2px;background-clip:padding-box}body #buddypress #item-body blockquote,body #buddypress .bp-lists blockquote{margin-right:0}body #buddypress .bp-list .action{box-sizing:border-box}@media screen and (min-width:46.8em){body.buddypress .entry-content:not(.alignwide):not(.alignfull),body.buddypress .entry-header:not(.alignwide):not(.alignfull),body.buddypress .site-content .entry-header:not(.alignwide):not(.alignfull){max-width:none}body.buddypress .entry-header{float:none}body.buddypress .entry-content{float:none}body.buddypress .site-content{padding-top:2.5em}body.buddypress #page #primary{max-width:none}body.buddypress #page #primary .entry-content,body.buddypress #page #primary .entry-header{float:none;width:auto}}body.buddypress .buddypress-wrap h1,body.buddypress .buddypress-wrap h2,body.buddypress .buddypress-wrap h3,body.buddypress .buddypress-wrap h4,body.buddypress .buddypress-wrap h5,body.buddypress .buddypress-wrap h6{clear:none;margin:1em 0;padding:0}body.buddypress .buddypress-wrap h2:before{display:none}.bp-wrap:after,.bp-wrap:before{content:" ";display:table}.bp-wrap:after{clear:both}.buddypress-wrap.round-avatars .avatar{border-radius:50%}body.buddypress article.page>.entry-header{margin-bottom:2em;padding:0}body.buddypress article.page>.entry-header:not(.alignwide):not(.alignfull) .entry-title{font-size:28px;font-weight:inherit;color:#767676}@media screen and (min-width:46.8em){body.buddypress article.page>.entry-header:not(.alignwide):not(.alignfull) .entry-title{font-size:34px}}.buddypress-wrap dt.section-title{font-size:18px}@media screen and (min-width:46.8em){.buddypress-wrap dt.section-title{font-size:22px}}.buddypress-wrap .bp-label-text,.buddypress-wrap .message-threads{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-label-text,.buddypress-wrap .message-threads{font-size:16px}}.buddypress-wrap .activity-header{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .activity-header{font-size:16px}}.buddypress-wrap .activity-inner{font-size:15px}@media screen and (min-width:46.8em){.buddypress-wrap .activity-inner{font-size:18px}}.buddypress-wrap #whats-new-post-in{font-size:16px}.buddypress-wrap .acomment-meta,.buddypress-wrap .mini .activity-header{font-size:16px}.buddypress-wrap .dir-component-filters #activity-filter-by{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .dir-component-filters #activity-filter-by{font-size:16px}}.buddypress-wrap .bp-tables-user th{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-tables-user th{font-size:16px}}.buddypress-wrap .bp-tables-user td{font-size:12px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-tables-user td{font-size:14px}}.buddypress-wrap .profile-fields th{font-size:15px}@media screen and (min-width:46.8em){.buddypress-wrap .profile-fields th{font-size:18px}}.buddypress-wrap .profile-fields td{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .profile-fields td{font-size:16px}}.buddypress-wrap #notification-select{font-size:12px}@media screen and (min-width:46.8em){.buddypress-wrap #notification-select{font-size:14px}}.bp-navs{background:0 0;clear:both;overflow:hidden}.bp-navs ul{margin:0;padding:0}.bp-navs ul li{list-style:none;margin:0}.bp-navs ul li.last select{max-width:185px}.bp-navs ul li a,.bp-navs ul li span{border:0;display:block;padding:5px 10px;text-decoration:none}.bp-navs ul li .count{background:#eaeaea;border:1px solid #ccc;border-radius:50%;color:#555;display:inline;font-size:12px;margin-right:2px;padding:3px 6px;text-align:center;vertical-align:middle}.bp-navs ul li.current a,.bp-navs ul li.selected a{color:#333;opacity:1}.bp-navs.bp-invites-filters ul li a,.bp-navs.bp-messages-filters ul li a{border:1px solid #ccc;display:inline-block}.main-navs.dir-navs{margin-bottom:20px}.buddypress-wrap .bp-navs li a:hover a .count,.buddypress-wrap .bp-navs li.current a .count,.buddypress-wrap .bp-navs li.selected a .count{background-color:#ccc}.buddypress-wrap .bp-navs li:not(.current) a:focus,.buddypress-wrap .bp-navs li:not(.current) a:hover,.buddypress-wrap .bp-navs li:not(.selected) a:focus,.buddypress-wrap .bp-navs li:not(.selected) a:hover{background:#ccc;color:#333}.buddypress-wrap .bp-navs li.current a,.buddypress-wrap .bp-navs li.current a:focus,.buddypress-wrap .bp-navs li.current a:hover,.buddypress-wrap .bp-navs li.selected a,.buddypress-wrap .bp-navs li.selected a:focus,.buddypress-wrap .bp-navs li.selected a:hover{background:#555;color:#fafafa}@media screen and (min-width:46.8em){.buddypress-wrap .main-navs:not(.dir-navs) li.current a,.buddypress-wrap .main-navs:not(.dir-navs) li.selected a{background:#fff;color:#333;font-weight:600}.buddypress-wrap .main-navs.vertical li.current a,.buddypress-wrap .main-navs.vertical li.selected a{background:#555;color:#fafafa;text-decoration:none}.buddypress-wrap.bp-dir-hori-nav:not(.bp-vertical-navs) nav:not(.tabbed-links){border-bottom:1px solid #eee;border-top:1px solid #eee;box-shadow:0 2px 12px 0 #fafafa}}.buddypress-wrap .bp-subnavs li.current a,.buddypress-wrap .bp-subnavs li.selected a{background:#fff;color:#333;font-weight:600}@media screen and (max-width:46.8em){.buddypress-wrap:not(.bp-single-vert-nav) .bp-navs li{background:#eaeaea}}.buddypress-wrap:not(.bp-single-vert-nav) .main-navs>ul>li>a{padding:.5em calc(.5em + 2px)}.buddypress-wrap:not(.bp-single-vert-nav) .group-subnav#subsubnav,.buddypress-wrap:not(.bp-single-vert-nav) .user-subnav#subsubnav{background:0 0}.buddypress-wrap .bp-subnavs,.buddypress-wrap ul.subnav{width:100%}.buddypress-wrap .bp-subnavs{margin:10px 0;overflow:hidden}.buddypress-wrap .bp-subnavs ul li{margin-top:0}.buddypress-wrap .bp-subnavs ul li.current :focus,.buddypress-wrap .bp-subnavs ul li.current :hover,.buddypress-wrap .bp-subnavs ul li.selected :focus,.buddypress-wrap .bp-subnavs ul li.selected :hover{background:0 0;color:#333}.buddypress-wrap ul.subnav{width:auto}.buddypress-wrap .bp-navs.bp-invites-filters#subsubnav ul li.last,.buddypress-wrap .bp-navs.bp-invites-nav#subnav ul li.last,.buddypress-wrap .bp-navs.bp-messages-filters#subsubnav ul li.last{margin-top:0}@media screen and (max-width:46.8em){.buddypress-wrap .single-screen-navs{border:1px solid #eee}.buddypress-wrap .single-screen-navs li{border-bottom:1px solid #eee}.buddypress-wrap .single-screen-navs li:last-child{border-bottom:none}.buddypress-wrap .bp-subnavs li a{font-size:14px}.buddypress-wrap .bp-subnavs li.current a,.buddypress-wrap .bp-subnavs li.current a:focus,.buddypress-wrap .bp-subnavs li.current a:hover,.buddypress-wrap .bp-subnavs li.selected a,.buddypress-wrap .bp-subnavs li.selected a:focus,.buddypress-wrap .bp-subnavs li.selected a:hover{background:#555;color:#fff}}.buddypress-wrap .bp-navs li.current a .count,.buddypress-wrap .bp-navs li.selected a .count,.buddypress_object_nav .bp-navs li.current a .count,.buddypress_object_nav .bp-navs li.selected a .count{background-color:#fff}.buddypress-wrap .bp-navs li.dynamic a .count,.buddypress-wrap .bp-navs li.dynamic.current a .count,.buddypress-wrap .bp-navs li.dynamic.selected a .count,.buddypress_object_nav .bp-navs li.dynamic a .count,.buddypress_object_nav .bp-navs li.dynamic.current a .count,.buddypress_object_nav .bp-navs li.dynamic.selected a .count{background-color:#5087e5;border:0;color:#fafafa}.buddypress-wrap .bp-navs li.dynamic a:hover .count,.buddypress_object_nav .bp-navs li.dynamic a:hover .count{background-color:#5087e5;border:0;color:#fff}.buddypress-wrap .bp-navs li a .count:empty,.buddypress_object_nav .bp-navs li a .count:empty{display:none}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current),.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current){color:#767676}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a{color:#767676}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a:focus,.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a:hover,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a:focus,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a:hover{background:0 0;color:#333}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a[disabled]:focus,.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a[disabled]:hover,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a[disabled]:focus,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a[disabled]:hover{color:#767676}.buddypress-wrap .bp-navs.group-create-links ul li.current a,.buddypress_object_nav .bp-navs.group-create-links ul li.current a{text-align:center}@media screen and (min-width:46.8em){.buddypress-wrap .bp-navs li{float:right}.buddypress-wrap .subnav{float:right}.buddypress-wrap ul.subnav{width:auto}.buddypress-wrap #subsubnav .activity-search{float:right}.buddypress-wrap #subsubnav .filter{float:left}}.buddypress_object_nav .bp-navs li a .count{display:inline-block;float:left}@media screen and (min-width:46.8em){.bp-dir-vert-nav .bp-navs.dir-navs{background:0 0}.bp-dir-vert-nav .bp-navs.dir-navs a .count{float:left}}@media screen and (min-width:46.8em){.buddypress-wrap .tabbed-links ol,.buddypress-wrap .tabbed-links ul{border-bottom:1px solid #ccc;float:none;margin:20px 0 10px}.buddypress-wrap .tabbed-links ol:after,.buddypress-wrap .tabbed-links ol:before,.buddypress-wrap .tabbed-links ul:after,.buddypress-wrap .tabbed-links ul:before{content:" ";display:block}.buddypress-wrap .tabbed-links ol:after,.buddypress-wrap .tabbed-links ul:after{clear:both}.buddypress-wrap .tabbed-links ol li,.buddypress-wrap .tabbed-links ul li{float:right;list-style:none;margin:0 0 0 10px}.buddypress-wrap .tabbed-links ol li a,.buddypress-wrap .tabbed-links ol li span:not(.count),.buddypress-wrap .tabbed-links ul li a,.buddypress-wrap .tabbed-links ul li span:not(.count){background:0 0;border:none;display:block;padding:4px 10px}.buddypress-wrap .tabbed-links ol li a:focus,.buddypress-wrap .tabbed-links ol li a:hover,.buddypress-wrap .tabbed-links ul li a:focus,.buddypress-wrap .tabbed-links ul li a:hover{background:0 0}.buddypress-wrap .tabbed-links ol li:not(.current),.buddypress-wrap .tabbed-links ul li:not(.current){margin-bottom:2px}.buddypress-wrap .tabbed-links ol li.current,.buddypress-wrap .tabbed-links ul li.current{border-color:#ccc #ccc #fff;border-style:solid;border-top-right-radius:4px;border-top-left-radius:4px;border-width:1px;margin-bottom:-1px;padding:0 .5em 1px}.buddypress-wrap .tabbed-links ol li.current a,.buddypress-wrap .tabbed-links ul li.current a{background:0 0;color:#333}.buddypress-wrap .bp-subnavs.tabbed-links>ul{margin-top:0}.buddypress-wrap .bp-navs.tabbed-links{background:0 0;margin-top:2px}.buddypress-wrap .bp-navs.tabbed-links ul li a{border-left:0;font-size:inherit}.buddypress-wrap .bp-navs.tabbed-links ul li.last{float:left;margin:0}.buddypress-wrap .bp-navs.tabbed-links ul li.last a{margin-top:-.5em}.buddypress-wrap .bp-navs.tabbed-links ul li a,.buddypress-wrap .bp-navs.tabbed-links ul li a:focus,.buddypress-wrap .bp-navs.tabbed-links ul li a:hover,.buddypress-wrap .bp-navs.tabbed-links ul li.current a,.buddypress-wrap .bp-navs.tabbed-links ul li.current a:focus,.buddypress-wrap .bp-navs.tabbed-links ul li.current a:hover{background:0 0;border:0}.buddypress-wrap .bp-navs.tabbed-links ul li a:active,.buddypress-wrap .bp-navs.tabbed-links ul li.current a:active{outline:0}}.buddypress-wrap .dir-component-filters .filter label{display:inline}.buddypress-wrap .subnav-filters:after,.buddypress-wrap .subnav-filters:before{content:" ";display:table}.buddypress-wrap .subnav-filters:after{clear:both}.buddypress-wrap .subnav-filters{background:0 0;list-style:none;margin:15px 0 0;padding:0}.buddypress-wrap .subnav-filters div{margin:0}.buddypress-wrap .subnav-filters>ul{float:right;list-style:none}.buddypress-wrap .subnav-filters.bp-messages-filters ul{width:100%}.buddypress-wrap .subnav-filters.bp-messages-filters .messages-search{margin-bottom:1em}@media screen and (min-width:46.8em){.buddypress-wrap .subnav-filters.bp-messages-filters .messages-search{margin-bottom:0}}.buddypress-wrap .subnav-filters div{float:none}.buddypress-wrap .subnav-filters div input[type=search],.buddypress-wrap .subnav-filters div select{font-size:16px}.buddypress-wrap .subnav-filters div button.nouveau-search-submit{padding:5px .8em 6px}.buddypress-wrap .subnav-filters div button#user_messages_search_submit{padding:7px .8em}.buddypress-wrap .subnav-filters .component-filters{margin-top:10px}.buddypress-wrap .subnav-filters .feed{margin-left:15px}.buddypress-wrap .subnav-filters .last.filter label{display:inline}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:after,.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:before{content:" ";display:table}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:after{clear:both}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap.bp-show{display:inline-block}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap.bp-hide{display:none}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .select-wrap{border:0}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .select-wrap:focus,.buddypress-wrap .subnav-filters .user-messages-bulk-actions .select-wrap:hover{outline:1px solid #d6d6d6}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions{float:right}.buddypress-wrap .subnav-filters .user-messages-bulk-actions label{display:inline-block;font-weight:300;margin-left:25px;padding:5px 0}.buddypress-wrap .subnav-filters .user-messages-bulk-actions div select{-webkit-appearance:textfield}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-apply{border:0;border-radius:0;font-weight:400;line-height:1.8;margin:0 10px 0 0;padding:3px 5px;text-align:center;text-transform:none;width:auto}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-apply span{vertical-align:middle}@media screen and (min-width:32em){.buddypress-wrap .subnav-filters li{margin-bottom:0}.buddypress-wrap .subnav-filters .bp-search,.buddypress-wrap .subnav-filters .dir-search,.buddypress-wrap .subnav-filters .feed,.buddypress-wrap .subnav-filters .group-act-search,.buddypress-wrap .subnav-filters .group-invites-search,.buddypress-wrap .subnav-filters .subnav-search,.buddypress-wrap .subnav-filters .subnav-search form,.buddypress-wrap .subnav-filters .user-messages-bulk-actions,.buddypress-wrap .subnav-filters .user-messages-search{float:right}.buddypress-wrap .subnav-filters .component-filters,.buddypress-wrap .subnav-filters .last{float:left;margin-top:0;width:auto}.buddypress-wrap .subnav-filters .component-filters select,.buddypress-wrap .subnav-filters .last select{max-width:250px}.buddypress-wrap .subnav-filters .user-messages-search{float:left}}.buddypress-wrap .notifications-options-nav input#notification-bulk-manage{border:0;border-radius:0;line-height:1.6}.buddypress-wrap .group-subnav-filters .group-invites-search{margin-bottom:1em}.buddypress-wrap .group-subnav-filters .last{text-align:center}.buddypress-wrap .bp-pagination{background:0 0;border:0;color:#767676;float:right;font-size:small;margin:0;padding:.5em 0;position:relative;width:100%}.buddypress-wrap .bp-pagination .pag-count{float:right}.buddypress-wrap .bp-pagination .bp-pagination-links{float:left;margin-left:10px}.buddypress-wrap .bp-pagination .bp-pagination-links a,.buddypress-wrap .bp-pagination .bp-pagination-links span{font-size:small;padding:0 5px}.buddypress-wrap .bp-pagination .bp-pagination-links a:focus,.buddypress-wrap .bp-pagination .bp-pagination-links a:hover{opacity:1}.buddypress-wrap .bp-pagination p{margin:0}.bp-list:after,.bp-list:before{content:" ";display:table}.bp-list:after{clear:both}.bp-list{box-sizing:border-box;border-top:1px solid #eaeaea;clear:both;list-style:none;margin:20px 0;padding:.5em 0;width:100%}.bp-list li:after,.bp-list li:before{content:" ";display:table}.bp-list li:after{clear:both}.bp-list>li{border-bottom:1px solid #eaeaea}.bp-list li{list-style:none;margin:10px 0;padding:.5em 0;position:relative}.bp-list li .item-avatar{text-align:center}.bp-list li .item-avatar img.avatar{display:inline-block;width:auto;height:auto}.bp-list li .item .group-details,.bp-list li .item .item-avatar,.bp-list li .item .item-meta,.bp-list li .item .list-title{text-align:center}.bp-list li .item .list-title{clear:none;font-size:22px;font-weight:400;line-height:1.1;margin:0 auto}@media screen and (min-width:46.8em){.bp-list li .item .list-title{font-size:26px}}.bp-list li .item-meta,.bp-list li .meta{color:#737373;font-size:12px;margin-bottom:10px;margin-top:10px}.bp-list li .last-post{text-align:center}.bp-list li .action{margin:0;text-align:center}.bp-list li .action .generic-button{display:inline-block;font-size:12px;margin:0 0 0 10px}.bp-list li .action div.generic-button{margin:10px 0}@media screen and (min-width:46.8em){.bp-list li .item-avatar{float:right;margin-left:5%}.bp-list li .item{margin:0;overflow:hidden}.bp-list li .item .item-block{float:right;margin-left:2%;width:50%}.bp-list li .item .item-meta,.bp-list li .item .list-title{float:right;text-align:right}.bp-list li .item .group-details,.bp-list li .item .last-post{text-align:right}.bp-list li .group-desc,.bp-list li .last-post,.bp-list li .user-update{clear:none;overflow:hidden;width:auto}.bp-list li .action{clear:right;padding:0;text-align:right}.bp-list li .action li.generic-button{margin-left:0}.bp-list li .action div.generic-button{margin:0 0 10px}.bp-list li .generic-button{display:block;margin:0 0 5px 0}}@media screen and (min-width:32em){#activity-stream{clear:both;padding-top:1em}}.activity-list.bp-list{background:#fafafa;border:1px solid #eee}.activity-list.bp-list .activity-item{background:#fff;border:1px solid #b7b7b7;box-shadow:0 0 6px #d2d2d2;margin:20px 0}.activity-list.bp-list li:first-child{margin-top:0}.friends-list{list-style-type:none}.friends-request-list .item-title,.membership-requests-list .item-title{text-align:center}@media screen and (min-width:46.8em){.friends-request-list li,.membership-requests-list li{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row nowrap;flex-flow:row nowrap}.friends-request-list li .item,.membership-requests-list li .item{-moz-flex:1 1 auto;-o-flex:1 1 auto;flex:1 1 auto}.friends-request-list li .action,.membership-requests-list li .action{text-align:left}.friends-request-list li .item-title,.membership-requests-list li .item-title{font-size:22px;text-align:right}.friends-request-list li .item-title h3,.membership-requests-list li .item-title h3{margin:0}}#notifications-user-list{clear:both;padding-top:1em}@media screen and (min-width:46.8em){body:not(.logged-in) .bp-list .item{margin-left:0}}.activity-permalink .item-list,.activity-permalink .item-list li.activity-item{border:0}.activity-update-form{padding:10px 10px 0}.item-body .activity-update-form .activity-form{margin:0;padding:0}.activity-update-form{border:1px solid #ccc;box-shadow:inset 0 0 6px #eee;margin:15px 0}.activity-update-form #whats-new-avatar{margin:10px 0;text-align:center}.activity-update-form #whats-new-avatar img{box-shadow:none;display:inline-block;height:auto;width:auto}.activity-update-form #whats-new-content{padding:0 0 20px 0}.activity-update-form #whats-new-textarea textarea{background:#fff;box-sizing:border-box;color:#333;font-family:inherit;font-size:medium;height:2.2em;line-height:1.4;padding:6px;width:100%}.activity-update-form #whats-new-textarea textarea:focus{box-shadow:0 0 6px 0 #d6d6d6}.activity-update-form #whats-new-post-in-box{margin:10px 0}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items{list-style:none;margin:10px 0;padding-right:0}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li{margin-bottom:10px}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items button.bp-remove-item{margin-right:10px;height:auto}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items #activity-autocomplete{padding:.3em;width:100%}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object{display:flex;align-items:center;padding:.2em}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object .avatar{width:30px;height:30px}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object span{padding-right:10px;vertical-align:middle}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object:focus,.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object:hover{background:#eaeaea;cursor:pointer}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object.selected{border:1px solid #d6d6d6}.activity-update-form #whats-new-submit{margin:15px 0 10px}.activity-update-form #whats-new-submit input{font-size:14px;line-height:inherit;margin-bottom:10px;margin-left:10px;padding:.2em 0;text-align:center;width:100%}@media screen and (min-width:46.8em){.activity-update-form #whats-new-avatar{display:block;float:right;margin:0}.activity-update-form #whats-new-content,.activity-update-form #whats-new-post-in-box,.activity-update-form #whats-new-submit{margin-right:55px}.activity-update-form #whats-new-submit input{margin-bottom:0;margin-left:10px;width:8em}}.activity-list{padding:.5em}.activity-list .activity-item:after,.activity-list .activity-item:before{content:" ";display:table}.activity-list .activity-item:after{clear:both}.activity-list .activity-item{list-style:none;padding:1em}.activity-list .activity-item.has-comments{padding-bottom:1em}.activity-list .activity-item div.item-avatar{margin:0 auto;text-align:center;width:auto}.activity-list .activity-item div.item-avatar img{height:auto;max-width:40%}@media screen and (min-width:46.8em){.activity-list .activity-item div.item-avatar{margin:0 0 0 2%;text-align:right;width:15%}.activity-list .activity-item div.item-avatar img{max-width:80%}}.activity-list .activity-item.mini{font-size:13px;position:relative}.activity-list .activity-item.mini .activity-avatar{margin-right:0;text-align:center;width:auto}.activity-list .activity-item.mini .activity-avatar img.FB_profile_pic,.activity-list .activity-item.mini .activity-avatar img.avatar{max-width:15%}@media screen and (min-width:46.8em){.activity-list .activity-item.mini .activity-avatar{margin-right:15px;text-align:right;width:15%}.activity-list .activity-item.mini .activity-avatar img.FB_profile_pic,.activity-list .activity-item.mini .activity-avatar img.avatar{max-width:60%}}.activity-list .activity-item.new_forum_post .activity-inner,.activity-list .activity-item.new_forum_topic .activity-inner{border-right:2px solid #eaeaea;margin-right:10px;padding-right:1em}.activity-list .activity-item.newest_blogs_activity,.activity-list .activity-item.newest_friends_activity,.activity-list .activity-item.newest_groups_activity,.activity-list .activity-item.newest_mentions_activity{background:rgba(31,179,221,.1)}.activity-list .activity-item .activity-inreplyto{color:#767676;font-size:13px}.activity-list .activity-item .activity-inreplyto>p{display:inline;margin:0}.activity-list .activity-item .activity-inreplyto .activity-inner,.activity-list .activity-item .activity-inreplyto blockquote{background:0 0;border:0;display:inline;margin:0;overflow:hidden;padding:0}.activity-list .activity-item .activity-header{margin:0 auto;width:80%}.activity-list .activity-item .activity-header a,.activity-list .activity-item .activity-header img{display:inline}.activity-list .activity-item .activity-header .avatar{display:inline-block;margin:0 5px;vertical-align:text-top;width:20px;height:20px}.activity-list .activity-item .activity-header .time-since{font-size:14px;color:#767676;text-decoration:none}.activity-list .activity-item .activity-header .time-since:hover{color:#767676;cursor:pointer;text-decoration:underline}.activity-list .activity-item .activity-content .activity-header,.activity-list .activity-item .activity-content .comment-header{color:#767676;margin-bottom:10px}.activity-list .activity-item .activity-content .activity-inner,.activity-list .activity-item .activity-content blockquote{background:#fafafa;margin:15px 0 10px;overflow:hidden;padding:1em}.activity-list .activity-item .activity-content p{margin:0}.activity-list .activity-item .activity-inner p{word-wrap:break-word}.activity-list .activity-item .activity-read-more{margin-right:1em;white-space:nowrap}.activity-list .activity-item ul.activity-meta{margin:0;padding-right:0}.activity-list .activity-item ul.activity-meta li{border:0;display:inline-block}.activity-list .activity-item .activity-meta.action{border:1px solid transparent;background:#fafafa;padding:2px;position:relative;text-align:right}.activity-list .activity-item .activity-meta.action div.generic-button{margin:0}.activity-list .activity-item .activity-meta.action .button{background:0 0;color:#555}.activity-list .activity-item .activity-meta.action a{padding:4px 8px}.activity-list .activity-item .activity-meta.action .button:focus,.activity-list .activity-item .activity-meta.action .button:hover{background:0 0}.activity-list .activity-item .activity-meta.action .button:before,.activity-list .activity-item .activity-meta.action .icons:before{font-family:dashicons;font-size:18px;vertical-align:middle}.activity-list .activity-item .activity-meta.action .acomment-reply.button:before{content:"\f101"}.activity-list .activity-item .activity-meta.action .view:before{content:"\f125"}.activity-list .activity-item .activity-meta.action .fav:before{content:"\f154"}.activity-list .activity-item .activity-meta.action .unfav:before{content:"\f155"}.activity-list .activity-item .activity-meta.action .delete-activity:before{content:"\f153"}.activity-list .activity-item .activity-meta.action .delete-activity:hover{color:#800}.activity-list .activity-item .activity-meta.action .button{border:0;box-shadow:none}.activity-list .activity-item .activity-meta.action .button span{background:0 0;color:#555;font-weight:700}@media screen and (min-width:46.8em){.activity-list.bp-list{padding:30px}.activity-list .activity-item .activity-content{margin:0;position:relative}.activity-list .activity-item .activity-content:after{clear:both;content:"";display:table}.activity-list .activity-item .activity-header{margin:0 0 0 15px;width:auto}}.buddypress-wrap .activity-list .load-more,.buddypress-wrap .activity-list .load-newest{background:#fafafa;border:1px solid #eee;font-size:110%;margin:15px 0;padding:0;text-align:center}.buddypress-wrap .activity-list .load-more a,.buddypress-wrap .activity-list .load-newest a{color:#555;display:block;padding:.5em 0}.buddypress-wrap .activity-list .load-more a:focus,.buddypress-wrap .activity-list .load-more a:hover,.buddypress-wrap .activity-list .load-newest a:focus,.buddypress-wrap .activity-list .load-newest a:hover{background:#fff;color:#333}.buddypress-wrap .activity-list .load-more:focus,.buddypress-wrap .activity-list .load-more:hover,.buddypress-wrap .activity-list .load-newest:focus,.buddypress-wrap .activity-list .load-newest:hover{border-color:#e1e1e1;box-shadow:0 0 6px 0 #eaeaea}body.activity-permalink .activity-list li{border-width:1px;padding:1em 0 0 0}body.activity-permalink .activity-list li:first-child{padding-top:0}body.activity-permalink .activity-list li.has-comments{padding-bottom:0}body.activity-permalink .activity-list .activity-avatar{width:auto}body.activity-permalink .activity-list .activity-avatar a{display:block}body.activity-permalink .activity-list .activity-avatar img{max-width:100%;background-color:#eaeaea}body.activity-permalink .activity-list .activity-content{border:0;font-size:100%;line-height:1.5;padding:0}body.activity-permalink .activity-list .activity-content .activity-header{margin:0;padding:.5em 0 0 0;text-align:center;width:100%}body.activity-permalink .activity-list .activity-content .activity-inner,body.activity-permalink .activity-list .activity-content blockquote{margin-right:0;margin-top:10px}body.activity-permalink .activity-list .activity-meta{margin:10px 0 10px}body.activity-permalink .activity-list .activity-comments{margin-bottom:10px}@media screen and (min-width:46.8em){body.activity-permalink .activity-list .activity-avatar{right:-20px;margin-left:0;position:relative;top:-20px}body.activity-permalink .activity-list .activity-avatar img{box-shadow:0 0 0 8px #fff}body.activity-permalink .activity-list .activity-content{margin-left:10px}body.activity-permalink .activity-list .activity-content .activity-header p{text-align:right}}.buddypress-wrap .activity-comments{clear:both;margin:0 5%;overflow:hidden;position:relative;width:auto}.buddypress-wrap .activity-comments ul{clear:both;list-style:none;margin:15px 0 0;padding:0}.buddypress-wrap .activity-comments ul li{border-top:1px solid #eee;border-bottom:0;padding:1em 0 0}.buddypress-wrap .activity-comments ul li ul{margin-right:5%}.buddypress-wrap .activity-comments ul li:first-child{border-top:0}.buddypress-wrap .activity-comments ul li:last-child{margin-bottom:0}.buddypress-wrap .activity-comments div.acomment-avatar{width:auto}.buddypress-wrap .activity-comments div.acomment-avatar img{border-width:1px;float:right;height:25px;max-width:none;width:25px}.buddypress-wrap .activity-comments .acomment-content p,.buddypress-wrap .activity-comments .acomment-meta{font-size:14px}.buddypress-wrap .activity-comments .acomment-meta{color:#555;overflow:hidden;padding-right:2%}.buddypress-wrap .activity-comments .acomment-content{border-right:1px solid #ccc;margin:15px 10% 0 0;padding:.5em 1em}.buddypress-wrap .activity-comments .acomment-content p{margin-bottom:.5em}.buddypress-wrap .activity-comments .acomment-options{float:right;margin:10px 20px 10px 0}.buddypress-wrap .activity-comments .acomment-options a{color:#767676;font-size:14px}.buddypress-wrap .activity-comments .acomment-options a:focus,.buddypress-wrap .activity-comments .acomment-options a:hover{color:inherit}.buddypress-wrap .activity-comments .activity-meta.action{background:0 0;margin-top:10px}.buddypress-wrap .activity-comments .activity-meta.action button{font-size:14px;font-weight:400;text-transform:none}.buddypress-wrap .activity-comments .show-all button{font-size:14px;text-decoration:underline;padding-right:.5em}.buddypress-wrap .activity-comments .show-all button span{text-decoration:none}.buddypress-wrap .activity-comments .show-all button:focus span,.buddypress-wrap .activity-comments .show-all button:hover span{color:#5087e5}.buddypress-wrap .mini .activity-comments{clear:both;margin-top:0}body.activity-permalink .activity-comments{background:0 0;width:auto}body.activity-permalink .activity-comments>ul{padding:0 1em 0 .5em}body.activity-permalink .activity-comments ul li>ul{margin-top:10px}form.ac-form{display:none;padding:1em}form.ac-form .ac-reply-avatar{float:right}form.ac-form .ac-reply-avatar img{border:1px solid #eee}form.ac-form .ac-reply-content{color:#767676;padding-right:1em}form.ac-form .ac-reply-content a{text-decoration:none}form.ac-form .ac-reply-content .ac-textarea{margin-bottom:15px;padding:0 .5em;overflow:hidden}form.ac-form .ac-reply-content .ac-textarea textarea{background:0 0;box-shadow:none;color:#555;font-family:inherit;font-size:100%;height:60px;margin:0;outline:0;padding:.5em;width:100%}form.ac-form .ac-reply-content .ac-textarea textarea:focus{box-shadow:0 0 6px #d6d6d6}form.ac-form .ac-reply-content input{margin-top:10px}.activity-comments li form.ac-form{clear:both;margin-left:15px}.activity-comments form.root{margin-right:0}.buddypress-wrap .blogs-list li .item-avatar img.avatar-150{max-width:150px;max-height:150px}.buddypress-wrap .blogs-list li .item-avatar img.avatar-50{max-width:50px;max-height:50px}@media screen and (min-width:46.8em){.buddypress-wrap .blogs-list li .item-block{float:none;width:auto}.buddypress-wrap .blogs-list li .item-meta{clear:right;float:none}}@media screen and (min-width:46.8em){.buddypress-wrap .bp-dir-vert-nav .blogs-list .list-title{width:auto}}.buddypress-wrap .groups-list li .list-title{text-align:center}.buddypress-wrap .groups-list li .group-details{clear:right}.buddypress-wrap .groups-list li .group-desc{border:1px solid #eaeaea;border-radius:10px;background-clip:padding-box;font-size:13px;color:#737373;font-style:italic;margin:10px auto 0;padding:1em}@media screen and (min-width:46.8em){.buddypress-wrap .groups-list li .group-desc{font-size:16px}}.buddypress-wrap .groups-list li p{margin:0 0 .5em}@media screen and (min-width:46.8em){.buddypress-wrap .groups-list li .item{margin-left:0}.buddypress-wrap .groups-list li .item-meta,.buddypress-wrap .groups-list li .list-title{text-align:right;width:auto}.buddypress-wrap .groups-list li .item-meta{margin-bottom:20px}.buddypress-wrap .groups-list li .last-activity{clear:right;margin-top:-20px}}.buddypress-wrap .groups-list li.group-no-avatar div.group-desc{margin-right:0}.buddypress-wrap .mygroups .groups-list.grid .wrap{min-height:450px;padding-bottom:0}@media screen and (min-width:46.8em){.buddypress-wrap .groups-list.grid.four .group-desc,.buddypress-wrap .groups-list.grid.three .group-desc{font-size:14px}}@media screen and (min-width:46.8em){.buddypress .bp-vertical-navs .groups-list .item-avatar{margin-left:3%;width:15%}}.buddypress-wrap .members-list li .member-name{margin-bottom:10px}.buddypress-wrap .members-list li .item-extra-content{clear:both;font-size:14px}.buddypress-wrap .members-list li .user-update{border:1px solid #eaeaea;border-radius:10px;background-clip:padding-box;color:#737373;font-style:italic;font-size:13px;margin:15px auto;padding:1em}@media screen and (min-width:46.8em){.buddypress-wrap .members-list li .user-update{font-size:16px}}.buddypress-wrap .members-list li .user-update .activity-read-more{display:block;font-size:12px;font-style:normal;margin-top:10px;padding-right:2px}@media screen and (min-width:46.8em){.buddypress-wrap .members-list li .last-activity{clear:right;margin-top:-10px}}@media screen and (min-width:46.8em){.buddypress-wrap .members-group-list li .joined{clear:right;float:none}}@media screen and (min-width:32em){body:not(.logged-in) .members-list .user-update{width:96%}}.register-page .register-section{box-sizing:border-box}.register-page .signup-form{margin-top:20px}.register-page .signup-form .default-profile input{margin-bottom:20px}.register-page .signup-form label,.register-page .signup-form legend{margin:10px 0 0}.register-page .signup-form .editfield{margin:15px 0}.register-page .signup-form .editfield fieldset{border:0;padding:0}.register-page .signup-form .editfield fieldset legend{margin:0 0 5px;text-indent:0}.register-page .signup-form .editfield .field-visibility-settings{padding:.5em}.register-page .signup-form .editfield .field-visibility-settings fieldset{margin:0 0 10px}.register-page .signup-form #signup-avatar img{margin:0 0 10px 15px}.register-page .signup-form .wp-pwd button{vertical-align:middle}.register-page .signup-form #pass-strength-result,.register-page .signup-form #pass1,.register-page .signup-form #pass1-text{width:10em}.register-page .signup-form #pass1{display:inline-block;margin-bottom:inherit}.register-page .signup-form #pass1-text,.register-page .signup-form .pw-weak{display:none}.register-page .signup-form .show-password #pass1-text{display:inline-block;margin-bottom:inherit}.register-page .signup-form .show-password #pass1{display:none}.register-page .signup-form .description.indicator-hint{font-size:14px}.register-page .signup-form #submit:disabled{color:#767676;opacity:.4}.register-page .signup-form .password-entry,.register-page .signup-form .password-entry-confirm{border:1px solid #eee}body.buddypress.register.js .user-pass2-wrap{display:none}body.buddypress.register.no-js .wp-hide-pw{display:none}@media screen and (min-width:46.8em){.buddypress-wrap .register-page .layout-wrap{display:flex;flex-flow:row wrap;justify-content:space-around}.buddypress-wrap .register-page .layout-wrap .default-profile{flex:1;padding-left:2em}.buddypress-wrap .register-page .layout-wrap .blog-details{flex:1;padding-right:2em}.buddypress-wrap .register-page .submit{clear:both}}@media screen and (min-width:46.8em){.buddypress-wrap.extended-default-reg .register-page .default-profile{min-width:14em;flex:1;padding-left:1em}.buddypress-wrap.extended-default-reg .register-page .extended-profile{flex:2;padding-right:1em}.buddypress-wrap.extended-default-reg .register-page .blog-details{flex:1 100%}}#group-create-body{padding:.5em}#group-create-body .creation-step-name{text-align:center}#group-create-body img.avatar{width:auto;height:auto}#group-create-body .avatar-nav-items{margin-top:15px}.single-headers:after,.single-headers:before{content:" ";display:table}.single-headers:after{clear:both}.single-headers{margin-bottom:15px}.single-headers #item-header-avatar a{display:block;text-align:center}.single-headers #item-header-avatar a img{float:none;width:auto;height:auto}.single-headers div#item-header-content{float:none}@media screen and (min-width:46.8em){.single-headers #item-header-avatar a{text-align:right}.single-headers #item-header-avatar a img{float:right}.single-headers #item-header-content{padding-right:2em}}.single-headers .activity,.single-headers .group-status{display:inline}.single-headers .group-status{font-size:18px;color:#333;padding-left:1em}.single-headers .activity{display:inline-block;font-size:12px;padding:0}.single-headers #sitewide-notice p,.single-headers div#message p{background-color:#ffd;border:1px solid #cb2;color:#440;font-weight:400;margin-top:3px;text-decoration:none}.single-headers h2{line-height:1.2;margin:0 0 5px}.single-headers h2 a{color:#767676;text-decoration:none}.single-headers h2 span.highlight{display:inline-block;font-size:60%;font-weight:400;line-height:1.7;vertical-align:middle}.single-headers h2 span.highlight span{background:#a1dcfa;color:#fff;cursor:pointer;font-size:80%;font-weight:700;margin-bottom:2px;padding:1px 4px;position:relative;left:-2px;top:-2px;vertical-align:middle}.single-headers img.avatar{float:right;margin:0 0 19px 15px}.single-headers .item-meta{color:#767676;font-size:14px;margin:15px 0 5px;padding-bottom:.5em}.single-headers ul{margin-bottom:15px}.single-headers ul li{float:left;list-style:none}.single-headers div.generic-button{text-align:center}.single-headers li.generic-button{display:inline-block;text-align:center}@media screen and (min-width:46.8em){.single-headers a.button,.single-headers div.generic-button,.single-headers li.generic-button{float:right}}.single-headers a.button,.single-headers div.generic-button{margin:10px 0 0 10px}.single-headers li.generic-button{margin:2px 10px}.single-headers li.generic-button:first-child{margin-right:0}.single-headers div#message.info{line-height:.8}body.no-js .single-item-header .js-self-profile-button{display:none}#cover-image-container{position:relative}#header-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;right:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1}#item-header-cover-image{position:relative;z-index:2}#item-header-cover-image #item-header-avatar{padding:0 1em}.groups-header .bp-group-type-list{font-size:18px;margin:0;color:#333;display:flex}.groups-header .bp-group-type-list strong{padding-left:1em;white-space:nowrap}.groups-header .bp-feedback{clear:both}.groups-header .group-item-actions{float:right;margin:0 15px 15px 0;padding-top:0;width:100%}.groups-header .moderators-lists{margin-top:0}.groups-header .moderators-lists .moderators-title{font-size:14px}.groups-header .moderators-lists .user-list{margin:0 0 5px}.groups-header .moderators-lists .user-list ul:after{clear:both;content:"";display:table}.groups-header .moderators-lists .user-list li{display:inline-block;float:none;margin-right:4px;padding:4px}.groups-header .moderators-lists img.avatar{box-shadow:none;float:none;height:30px;margin:0;max-width:100%;width:30px}@media screen and (min-width:46.8em){.groups-header div#item-header-content{float:right;margin-right:10%;text-align:right;padding-top:15px;width:42%}.groups-header .group-item-actions{float:left;margin:0 15px 15px 0;text-align:left;width:20%}.groups-header .groups-meta{clear:both}}.groups-header .desc-wrap{background:#eaeaea;border:1px solid #d6d6d6;margin:0 0 15px;padding:1em;text-align:center}.groups-header .desc-wrap .group-description{background:#fafafa;box-shadow:inset 0 0 9px #ccc;padding:1em;text-align:right}.groups-header .desc-wrap .group-description p{margin:0;padding:0}body.buddypress.bp-user .buddypress-wrap .users-header h2.user-nicename{margin-top:0;margin-bottom:5px}body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list{padding-bottom:.5em;font-size:18px;margin:0;color:#333;display:flex}body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list strong{padding-left:1em;white-space:nowrap}body.buddypress.bp-user .buddypress-wrap .member-header-actions{overflow:hidden;padding-right:0}body.buddypress.bp-user .buddypress-wrap .member-header-actions *>*{display:block}.buddypress-wrap .item-body{margin:20px 0}.buddypress-wrap .item-body .screen-heading{font-size:20px;font-weight:400}.buddypress-wrap .item-body .button-tabs{margin:30px 0 15px;list-style:none}.buddypress-wrap.bp-single-vert-nav .bp-list:not(.grid) .item-entry{padding-right:.5em}.single-item.group-members .item-body .filters:not(.no-subnav){border-top:5px solid #eaeaea;padding-top:1em}.single-item.group-members .item-body .filters{margin-top:0}.buddypress-wrap .group-status-type ul{margin:0 20px 20px 0}.groups-manage-members-list{padding:.5em 0}.groups-manage-members-list dd{margin:0;padding:1em 0}.groups-manage-members-list .section-title{background:#eaeaea;padding-right:.3em}.groups-manage-members-list ul{list-style:none;margin-bottom:0}.groups-manage-members-list ul li{border-bottom:1px solid #eee;margin-bottom:10px;padding:.5em .3em .3em}.groups-manage-members-list ul li:last-child,.groups-manage-members-list ul li:only-child{border-bottom:0}.groups-manage-members-list ul li:nth-child(even){background:#fafafa}.groups-manage-members-list ul li.banned-user{background:#fad3d3}.groups-manage-members-list ul .member-name{margin-bottom:0;text-align:center}.groups-manage-members-list ul img{display:block;margin:0 auto;width:20%}@media screen and (min-width:32em){.groups-manage-members-list ul .member-name{text-align:right}.groups-manage-members-list ul img{display:inline;width:50px}}.groups-manage-members-list ul .members-manage-buttons:after,.groups-manage-members-list ul .members-manage-buttons:before{content:" ";display:table}.groups-manage-members-list ul .members-manage-buttons:after{clear:both}.groups-manage-members-list ul .members-manage-buttons{margin:15px 0 5px}.groups-manage-members-list ul .members-manage-buttons a.button{color:#767676;display:block;font-size:13px}@media screen and (min-width:32em){.groups-manage-members-list ul .members-manage-buttons a.button{display:inline-block}}.groups-manage-members-list ul .members-manage-buttons.text-links-list{margin-bottom:0}@media screen and (max-width:32em){.groups-manage-members-list ul .members-manage-buttons.text-links-list a.button{background:#fafafa;border:1px solid #eee;display:block;margin-bottom:10px}}.groups-manage-members-list ul .action:not(.text-links-list) a.button{font-size:12px}@media screen and (min-width:46.8em){.groups-manage-members-list ul li .avatar,.groups-manage-members-list ul li .member-name{float:right}.groups-manage-members-list ul li .avatar{margin-left:15px}.groups-manage-members-list ul li .action{clear:both;float:right}}#group-manage-members-ui #group-members-search-form button[type=submit]{float:left;font-size:inherit;font-weight:400;line-height:1.5;text-align:center;text-transform:none}#group-manage-members-ui #group-members-search-form button[type=submit] span{font-family:dashicons;font-size:18px;line-height:1.6}#group-manage-members-ui #group-members-pagination button:last-child{margin-left:2em}#group-manage-members-ui #bp-no-group-members td{border:none}.buddypress .bp-invites-content ul.item-list{border-top:0}.buddypress .bp-invites-content ul.item-list li{border:1px solid #eaeaea;margin:0 0 1%;padding-right:5px;padding-left:5px;position:relative;width:auto}.buddypress .bp-invites-content ul.item-list li .list-title{margin:0 auto;width:80%}.buddypress .bp-invites-content ul.item-list li .action{position:absolute;top:10px;left:10px}.buddypress .bp-invites-content ul.item-list li .action a.button.invite-button{border:0}.buddypress .bp-invites-content ul.item-list li .action a.button.invite-button:focus,.buddypress .bp-invites-content ul.item-list li .action a.button.invite-button:hover{color:#1fb3dd}.buddypress .bp-invites-content ul.item-list li.selected{box-shadow:inset 0 0 12px 0 rgba(237,187,52,.2)}.buddypress .bp-invites-content .group-inviters li,.buddypress .bp-invites-content .item-list .item-meta span{color:#767676}.buddypress .bp-invites-content li ul.group-inviters{clear:both;margin:0}.buddypress .bp-invites-content li ul.group-inviters li{border:0;float:right;font-size:20px;width:inherit}.buddypress .bp-invites-content li .status{font-size:20px;font-style:italic;clear:both;color:#555;margin:10px 0}.buddypress .bp-invites-content #send-invites-editor ul:after,.buddypress .bp-invites-content #send-invites-editor ul:before{content:" ";display:table}.buddypress .bp-invites-content #send-invites-editor ul:after{clear:both}.buddypress .bp-invites-content #send-invites-editor textarea{width:100%}.buddypress .bp-invites-content #send-invites-editor ul{clear:both;list-style:none;margin:10px 0}.buddypress .bp-invites-content #send-invites-editor ul li{float:right;margin:.5%;max-height:50px;max-width:50px}.buddypress .bp-invites-content #send-invites-editor #bp-send-invites-form{clear:both;margin-top:10px}.buddypress .bp-invites-content #send-invites-editor .action{margin-top:10px;padding-top:10px}.buddypress .bp-invites-content #send-invites-editor.bp-hide{display:none}@media screen and (min-width:46.8em){.buddypress .bp-invites-content ul.item-list>li{box-sizing:border-box;border:1px solid #eaeaea;float:right;padding-right:.5em;padding-left:.5em;width:49.5%}.buddypress .bp-invites-content ul.item-list>li:nth-child(odd){margin-left:.5%}.buddypress .bp-invites-content ul.item-list>li:nth-child(even){margin-right:.5%}.buddypress .bp-invites-content ul.item-list ul.group-inviters{float:right;width:auto}}@media screen and (min-width:46.8em){:not(.vertical)+.item-body #group-invites-container{display:-ms-grid;display:grid;-ms-grid-columns:25% auto;grid-template-columns:25% auto;grid-template-areas:"group-invites-nav group-invites-column"}:not(.vertical)+.item-body #group-invites-container .bp-invites-nav{-ms-grid-row:1;-ms-grid-column:1;grid-area:group-invites-nav}:not(.vertical)+.item-body #group-invites-container .bp-invites-nav li{display:block;float:none}:not(.vertical)+.item-body #group-invites-container .group-invites-column{-ms-grid-row:1;-ms-grid-column:2;grid-area:group-invites-column}}.buddypress.groups .activity-update-form{margin-top:0}.buddypress-wrap .profile{margin-top:30px}.buddypress-wrap .public .profile-fields td.label{width:30%}.buddypress-wrap .profile.edit ul.button-nav{list-style:none;margin:30px 0 10px;padding-right:0}.buddypress-wrap .profile.edit ul.button-nav li{display:inline-block;margin-left:10px}.buddypress-wrap .profile.edit ul.button-nav li a{padding:.5em}.buddypress-wrap .profile.edit .editfield{background:#fafafa;border:1px solid #eee;margin:15px 0;padding:1em}.buddypress-wrap .profile.edit .editfield fieldset{border:0}.buddypress-wrap .profile.edit .editfield fieldset label{font-weight:400}.buddypress-wrap .profile.edit .editfield fieldset label.xprofile-field-label{display:inline}.buddypress-wrap .profile.edit .editfield{display:flex;flex-direction:column}.buddypress-wrap .profile.edit .editfield .description{margin-top:10px;order:2}.buddypress-wrap .profile.edit .editfield>fieldset{order:1}.buddypress-wrap .profile.edit .editfield .field-visibility-settings,.buddypress-wrap .profile.edit .editfield .field-visibility-settings-toggle{order:3}body.no-js .buddypress-wrap .field-visibility-settings-close,body.no-js .buddypress-wrap .field-visibility-settings-toggle{display:none}body.no-js .buddypress-wrap .field-visibility-settings{display:block}.buddypress-wrap .field-visibility-settings{margin:10px 0}.buddypress-wrap .current-visibility-level{font-style:normal;font-weight:700}.buddypress-wrap .field-visibility-settings,.buddypress-wrap .field-visibility-settings-header{color:#737373}.buddypress-wrap .field-visibility-settings fieldset{margin:5px 0}.buddypress-wrap .standard-form .editfield fieldset{margin:0}.buddypress-wrap .standard-form .field-visibility-settings label{font-weight:400;margin:0}.buddypress-wrap .standard-form .field-visibility-settings .radio{list-style:none;margin-bottom:0}.buddypress-wrap .standard-form .field-visibility-settings .field-visibility-settings-close{font-size:12px}.buddypress-wrap .standard-form .wp-editor-container{border:1px solid #dedede}.buddypress-wrap .standard-form .wp-editor-container textarea{background:#fff;width:100%}.buddypress-wrap .standard-form .description{background:#fafafa;font-size:inherit}.buddypress-wrap .standard-form .field-visibility-settings legend,.buddypress-wrap .standard-form .field-visibility-settings-header{font-style:italic}.buddypress-wrap .standard-form .field-visibility-settings-header{font-size:14px}.buddypress-wrap .standard-form .field-visibility-settings label,.buddypress-wrap .standard-form .field-visibility-settings legend{font-size:14px}.buddypress-wrap .standard-form .field-visibility select{margin:0}.buddypress-wrap .html-active button.switch-html{background:#f5f5f5;border-bottom-color:transparent;border-bottom-right-radius:0;border-bottom-left-radius:0}.buddypress-wrap .tmce-active button.switch-tmce{background:#f5f5f5;border-bottom-color:transparent;border-bottom-right-radius:0;border-bottom-left-radius:0}.buddypress-wrap .profile.public .profile-group-title{border-bottom:1px solid #ccc}body.register .buddypress-wrap .page ul{list-style:none}.buddypress-wrap .profile .bp-avatar-nav{margin-top:20px}.message-action-delete:before,.message-action-star:before,.message-action-unstar:before,.message-action-view:before{font-family:dashicons;font-size:18px}.message-action-star:before{color:#aaa;content:"\f154"}.message-action-unstar:before{color:#fcdd77;content:"\f155"}.message-action-view:before{content:"\f473"}.message-action-delete:before{content:"\f153"}.message-action-delete:hover:before{color:#a00}.preview-content .actions a{text-decoration:none}.bp-messages-content{margin:15px 0}.bp-messages-content .avatar{box-shadow:none}.bp-messages-content .thread-participants{list-style:none}.bp-messages-content .thread-participants dd{margin-right:0}.bp-messages-content time{color:#737373;font-size:12px}#message-threads{border-top:1px solid #eaeaea;clear:both;list-style:none;margin:0;max-height:220px;overflow-x:hidden;overflow-y:auto;padding:0;width:100%}#message-threads li{border-bottom:1px solid #eaeaea;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row nowrap;flex-flow:row nowrap;margin:0;overflow:hidden;padding:.5em 0}#message-threads li .thread-cb{display:flex;align-items:center;-moz-flex:1 2 5%;-o-flex:1 2 5%;flex:1 2 5%}#message-threads li .thread-from,#message-threads li .thread-to{-moz-flex:1 2 20%;-o-flex:1 2 20%;flex:1 2 20%}#message-threads li .thread-from img.avatar,#message-threads li .thread-to img.avatar{float:right;margin:0 0 0 10px}#message-threads li .thread-from .user-name,#message-threads li .thread-to .user-name{display:inline-block;line-height:1.1}#message-threads li .thread-from .num-recipients,#message-threads li .thread-to .num-recipients{color:#737373;font-weight:400;font-size:12px;margin:0}#message-threads li .thread-content{-moz-flex:1 2 60%;-o-flex:1 2 60%;flex:1 2 60%}#message-threads li .thread-date{-moz-flex:1 2 15%;-o-flex:1 2 15%;flex:1 2 15%}#message-threads li.selected{background-color:#fafafa}#message-threads li.selected .thread-subject .subject{color:#5087e5}#message-threads li.unread{font-weight:700}#message-threads li .thread-content .excerpt{color:#737373;font-size:12px;margin:0}#message-threads li .thread-content .thread-from,#message-threads li .thread-content .thread-subject,#message-threads li .thread-content .thread-to{font-size:13px}@media screen and (min-width:46.8em){#message-threads li .thread-content .thread-from,#message-threads li .thread-content .thread-subject,#message-threads li .thread-content .thread-to{font-size:16px}}#message-threads li .thread-content .thread-subject{vertical-align:top}#message-threads li .thread-content .thread-subject .excerpt{font-weight:400}#message-threads li .thread-date{padding-left:5px;text-align:left}.bp-messages-content .actions{float:left;max-width:30%;line-height:1}.bp-messages-content .actions .bp-icons:not(.bp-hide){display:inline-block;margin:0;padding:.3em .5em}.bp-messages-content .actions .bp-icons:not(.bp-hide):before{font-size:26px}.bp-messages-content #thread-preview{border:1px solid #eaeaea;margin-top:20px}.bp-messages-content #thread-preview .preview-message{overflow:hidden}.bp-messages-content #thread-preview .preview-content{margin:.5em}.bp-messages-content #thread-preview .preview-content .preview-message{background:#fafafa;margin:10px 0;padding:1em .3em .3em}.bp-messages-content #bp-message-thread-list{border-top:1px solid #eaeaea;clear:both;list-style:none;padding:1em 0 .3em}.bp-messages-content #bp-message-thread-list li{padding:.5em}.bp-messages-content #bp-message-thread-list li:nth-child(2n) .message-content{background:#fafafa}.bp-messages-content #bp-message-thread-list .message-metadata{border-bottom:1px solid #ccc;box-shadow:2px 1px 9px 0 #eee;display:table;padding:.2em;width:100%}.bp-messages-content #bp-message-thread-list .message-metadata .avatar{width:30px}.bp-messages-content #bp-message-thread-list .message-metadata .user-link{display:block;font-size:13px;float:right}@media screen and (min-width:46.8em){.bp-messages-content #bp-message-thread-list .message-metadata .user-link{font-size:16px}}.bp-messages-content #bp-message-thread-list .message-metadata time{color:#737373;font-size:12px;padding:0 .5em}.bp-messages-content #bp-message-thread-list .message-metadata button{padding:0 .3em}.bp-messages-content #bp-message-thread-list .message-metadata button:before{font-size:20px}.bp-messages-content #bp-message-thread-list .message-content{overflow:hidden;margin:1em auto 0;width:90%}.bp-messages-content #bp-message-thread-list img.avatar{float:right;margin:0 0 0 10px}.bp-messages-content #bp-message-thread-list .actions a:before{font-size:18px}.bp-messages-content form.send-reply .avatar-box{padding:.5em 0}.bp-messages-content .preview-pane-header,.bp-messages-content .single-message-thread-header{border-bottom:1px solid #eaeaea}.bp-messages-content .preview-pane-header:after,.bp-messages-content .single-message-thread-header:after{clear:both;content:"";display:table}.bp-messages-content .preview-thread-title,.bp-messages-content .single-thread-title{font-size:16px}.bp-messages-content .preview-thread-title .messages-title,.bp-messages-content .single-thread-title .messages-title{padding-right:2em}.bp-messages-content .thread-participants{float:right;margin:5px 0;width:70%}.bp-messages-content .thread-participants dd,.bp-messages-content .thread-participants ul{margin-bottom:10px}.bp-messages-content .thread-participants ul{list-style:none}.bp-messages-content .thread-participants ul:after{clear:both;content:"";display:table}.bp-messages-content .thread-participants li{float:right;margin-right:5px}.bp-messages-content .thread-participants img{width:30px;height:30px}.bp-messages-content #bp-message-thread-list li .message-content blockquote,.bp-messages-content #bp-message-thread-list li .message-content ol,.bp-messages-content #bp-message-thread-list li .message-content ul,.bp-messages-content #thread-preview .preview-message blockquote,.bp-messages-content #thread-preview .preview-message ol,.bp-messages-content #thread-preview .preview-message ul{list-style-position:inside;margin-right:0}.bp-messages-content #thread-preview:empty,.bp-messages-content ul#message-threads:empty{display:none}.bp-messages-content #bp-message-thread-header h2:first-child,.bp-messages-content #thread-preview h2:first-child{background-color:#eaeaea;color:#555;font-weight:700;margin:0;padding:.5em}.bp-messages-content #bp-message-thread-list li a.user-link,.bp-messages-content #message-threads .thread-content a{border:0;text-decoration:none}.bp-messages-content .standard-form #subject{margin-bottom:20px}div.bp-navs#subsubnav.bp-messages-filters .user-messages-bulk-actions{margin-left:15px;max-width:42.5%}.buddypress.settings .profile-settings.bp-tables-user select{width:100%}body.buddypress.settings .wp-pwd button{vertical-align:middle}body.buddypress.settings #pass-strength-result,body.buddypress.settings #pass1,body.buddypress.settings #pass1-text{width:16em}body.buddypress.settings #pass1{display:inline-block;margin-bottom:inherit}body.buddypress.settings #pass-strength-result,body.buddypress.settings #pass1-text,body.buddypress.settings .pw-weak{display:none}body.buddypress.settings .show-password #pass1-text{display:inline-block;margin-bottom:inherit}body.buddypress.settings .show-password #pass1{display:none}body.buddypress.settings #your-profile #submit:disabled{color:#767676;opacity:.4}body.buddypress.settings.js .user-pass2-wrap,body.buddypress.settings.js .wp-pwd{display:none}body.buddypress.settings.no-js .wp-cancel-pw,body.buddypress.settings.no-js .wp-generate-pw,body.buddypress.settings.no-js .wp-hide-pw{display:none}body.buddypress.settings.data #buddypress.buddypress-wrap .item-body p a{text-decoration:underline}.buddypress-wrap #whats-new-post-in-box select,.buddypress-wrap .filter select{border:1px solid #d6d6d6}.buddypress-wrap input.action[disabled]{cursor:pointer;opacity:.4}.buddypress-wrap #notification-bulk-manage[disabled]{display:none}.buddypress-wrap fieldset legend{font-size:inherit;font-weight:600}.buddypress-wrap input[type=email]:focus,.buddypress-wrap input[type=password]:focus,.buddypress-wrap input[type=tel]:focus,.buddypress-wrap input[type=text]:focus,.buddypress-wrap input[type=url]:focus,.buddypress-wrap textarea:focus{box-shadow:0 0 8px #eaeaea}.buddypress-wrap select{height:auto}.buddypress-wrap textarea{resize:vertical}.buddypress-wrap .standard-form .bp-controls-wrap{margin:1em 0}.buddypress-wrap .standard-form .groups-members-search input[type=search],.buddypress-wrap .standard-form .groups-members-search input[type=text],.buddypress-wrap .standard-form [data-bp-search] input[type=search],.buddypress-wrap .standard-form [data-bp-search] input[type=text],.buddypress-wrap .standard-form input[type=color],.buddypress-wrap .standard-form input[type=date],.buddypress-wrap .standard-form input[type=datetime-local],.buddypress-wrap .standard-form input[type=datetime],.buddypress-wrap .standard-form input[type=email],.buddypress-wrap .standard-form input[type=month],.buddypress-wrap .standard-form input[type=number],.buddypress-wrap .standard-form input[type=password],.buddypress-wrap .standard-form input[type=range],.buddypress-wrap .standard-form input[type=search],.buddypress-wrap .standard-form input[type=tel],.buddypress-wrap .standard-form input[type=text],.buddypress-wrap .standard-form input[type=time],.buddypress-wrap .standard-form input[type=url],.buddypress-wrap .standard-form input[type=week],.buddypress-wrap .standard-form select,.buddypress-wrap .standard-form textarea{background-color:#fafafa;border:1px solid #d6d6d6;border-radius:0;font:inherit;font-size:100%;padding:.5em}.buddypress-wrap .standard-form input[required],.buddypress-wrap .standard-form select[required],.buddypress-wrap .standard-form textarea[required]{box-shadow:none;border-width:2px;outline:0}.buddypress-wrap .standard-form input[required]:invalid,.buddypress-wrap .standard-form select[required]:invalid,.buddypress-wrap .standard-form textarea[required]:invalid{border-color:#b71717}.buddypress-wrap .standard-form input[required]:valid,.buddypress-wrap .standard-form select[required]:valid,.buddypress-wrap .standard-form textarea[required]:valid{border-color:#91cc2c}.buddypress-wrap .standard-form input[required]:focus,.buddypress-wrap .standard-form select[required]:focus,.buddypress-wrap .standard-form textarea[required]:focus{border-color:#d6d6d6;border-width:1px}.buddypress-wrap .standard-form input.invalid[required],.buddypress-wrap .standard-form select.invalid[required],.buddypress-wrap .standard-form textarea.invalid[required]{border-color:#b71717}.buddypress-wrap .standard-form input:not(.small),.buddypress-wrap .standard-form textarea{width:100%}.buddypress-wrap .standard-form input[type=checkbox],.buddypress-wrap .standard-form input[type=radio]{margin-left:5px;width:auto}.buddypress-wrap .standard-form select{padding:3px}.buddypress-wrap .standard-form textarea{height:120px}.buddypress-wrap .standard-form textarea#message_content{height:200px}.buddypress-wrap .standard-form input[type=password]{margin-bottom:5px}.buddypress-wrap .standard-form input:focus,.buddypress-wrap .standard-form select:focus,.buddypress-wrap .standard-form textarea:focus{background-color:#fafafa;color:#555;outline:0}.buddypress-wrap .standard-form label,.buddypress-wrap .standard-form span.label{display:block;font-weight:600;margin:15px 0 5px;width:auto}.buddypress-wrap .standard-form a.clear-value{display:block;margin-top:5px;outline:0}.buddypress-wrap .standard-form .submit{clear:both;padding:15px 0 0}.buddypress-wrap .standard-form p.submit{margin-bottom:0}.buddypress-wrap .standard-form div.submit input{margin-left:15px}.buddypress-wrap .standard-form #invite-list label,.buddypress-wrap .standard-form p label{font-weight:400;margin:auto}.buddypress-wrap .standard-form p.description{color:#737373;margin:5px 0}.buddypress-wrap .standard-form div.checkbox label:nth-child(n+2),.buddypress-wrap .standard-form div.radio div label{color:#737373;font-size:100%;font-weight:400;margin:5px 0 0}.buddypress-wrap .standard-form#send-reply textarea{width:97.5%}.buddypress-wrap .standard-form#sidebar-login-form label{margin-top:5px}.buddypress-wrap .standard-form#sidebar-login-form input[type=password],.buddypress-wrap .standard-form#sidebar-login-form input[type=text]{padding:4px;width:95%}.buddypress-wrap .standard-form.profile-edit input:focus{background:#fff}@media screen and (min-width:46.8em){.buddypress-wrap .standard-form .left-menu{float:right}.buddypress-wrap .standard-form #invite-list ul{list-style:none;margin:1%}.buddypress-wrap .standard-form #invite-list ul li{margin:0 1% 0 0}.buddypress-wrap .standard-form .main-column{margin-right:190px}.buddypress-wrap .standard-form .main-column ul#friend-list{clear:none;float:right}.buddypress-wrap .standard-form .main-column ul#friend-list h4{clear:none}}.buddypress-wrap .standard-form .bp-tables-user label{margin:0}.buddypress-wrap .signup-form label,.buddypress-wrap .signup-form legend{font-weight:400}body.no-js .buddypress #delete_inbox_messages,body.no-js .buddypress #delete_sentbox_messages,body.no-js .buddypress #message-type-select,body.no-js .buddypress #messages-bulk-management #select-all-messages,body.no-js .buddypress #notifications-bulk-management #select-all-notifications,body.no-js .buddypress label[for=message-type-select]{display:none}.buddypress-wrap .wp-editor-wrap .wp-editor-wrap button,.buddypress-wrap .wp-editor-wrap .wp-editor-wrap input[type=button],.buddypress-wrap .wp-editor-wrap .wp-editor-wrap input[type=submit],.buddypress-wrap .wp-editor-wrap a.button,.buddypress-wrap .wp-editor-wrap input[type=reset]{padding:0 8px 1px}.buddypress-wrap .select-wrap{border:1px solid #eee}.buddypress-wrap .select-wrap label{display:inline}.buddypress-wrap .select-wrap select::-ms-expand{display:none}.buddypress-wrap .select-wrap select{-moz-appearance:none;-webkit-appearance:none;-o-appearance:none;appearance:none;border:0;cursor:pointer;margin-left:-25px;padding:6px 10px 6px 25px;position:relative;text-indent:-2px;z-index:1;width:auto}.buddypress-wrap .select-wrap select,.buddypress-wrap .select-wrap select:active,.buddypress-wrap .select-wrap select:focus{background:0 0}.buddypress-wrap .select-wrap span.select-arrow{display:inline-block;position:relative;z-index:0}.buddypress-wrap .select-wrap span.select-arrow:before{color:#ccc;content:"\25BC"}.buddypress-wrap .select-wrap:focus .select-arrow:before,.buddypress-wrap .select-wrap:hover .select-arrow:before{color:#a6a6a6}.buddypress-wrap .bp-search form:focus,.buddypress-wrap .bp-search form:hover,.buddypress-wrap .select-wrap:focus,.buddypress-wrap .select-wrap:hover{border:1px solid #d5d4d4;box-shadow:inset 0 0 3px #eee}@media screen and (min-width:32em){.buddypress-wrap .notifications-options-nav .select-wrap{float:right}}.buddypress-wrap .bp-dir-search-form,.buddypress-wrap .bp-messages-search-form:after,.buddypress-wrap .bp-messages-search-form:before{content:" ";display:table}.buddypress-wrap .bp-dir-search-form,.buddypress-wrap .bp-messages-search-form:after{clear:both}.buddypress-wrap form#group-members-search,.buddypress-wrap form.bp-dir-search-form,.buddypress-wrap form.bp-messages-search-form,.buddypress-wrap form[data-bp-search].bp-invites-search-form{border:1px solid #eee;width:100%}.buddypress-wrap form#group-members-search label,.buddypress-wrap form.bp-dir-search-form label,.buddypress-wrap form.bp-messages-search-form label,.buddypress-wrap form[data-bp-search].bp-invites-search-form label{margin:0}.buddypress-wrap form#group-members-search button[type=submit],.buddypress-wrap form#group-members-search input[type=search],.buddypress-wrap form#group-members-search input[type=text],.buddypress-wrap form.bp-dir-search-form button[type=submit],.buddypress-wrap form.bp-dir-search-form input[type=search],.buddypress-wrap form.bp-dir-search-form input[type=text],.buddypress-wrap form.bp-messages-search-form button[type=submit],.buddypress-wrap form.bp-messages-search-form input[type=search],.buddypress-wrap form.bp-messages-search-form input[type=text],.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=text]{background:0 0;border:0;border-radius:0;background-clip:padding-box}.buddypress-wrap form#group-members-search input[type=search],.buddypress-wrap form#group-members-search input[type=text],.buddypress-wrap form.bp-dir-search-form input[type=search],.buddypress-wrap form.bp-dir-search-form input[type=text],.buddypress-wrap form.bp-messages-search-form input[type=search],.buddypress-wrap form.bp-messages-search-form input[type=text],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=text]{float:right;line-height:2;padding:3px 10px;width:78%}.buddypress-wrap form#group-members-search button[type=submit],.buddypress-wrap form.bp-dir-search-form button[type=submit],.buddypress-wrap form.bp-messages-search-form button[type=submit],.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit]{float:left;font-size:inherit;font-weight:400;line-height:1.5;padding:3px .7em;text-align:center;text-transform:none;width:20%}.buddypress-wrap form#group-members-search button[type=submit] span,.buddypress-wrap form.bp-dir-search-form button[type=submit] span,.buddypress-wrap form.bp-messages-search-form button[type=submit] span,.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit] span{font-family:dashicons;font-size:18px;line-height:1.6}.buddypress-wrap form#group-members-search button[type=submit].bp-show,.buddypress-wrap form.bp-dir-search-form button[type=submit].bp-show,.buddypress-wrap form.bp-messages-search-form button[type=submit].bp-show,.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit].bp-show{height:auto;right:0;overflow:visible;position:static;top:0}.buddypress-wrap form#group-members-search input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}.buddypress-wrap form#group-members-search input[type=search]::-webkit-search-results-button,.buddypress-wrap form#group-members-search input[type=search]::-webkit-search-results-decoration,.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-results-decoration,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-results-decoration,.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search]::-webkit-search-results-decoration{display:none}.buddypress-wrap form#group-members-search:hover{border:1px solid #d5d4d4;box-shadow:inset 0 0 3px #eee}.buddypress-wrap ul.filters li form label input{line-height:1.4;padding:.1em .7em}.buddypress-wrap .current-group-type,.buddypress-wrap .current-member-type{font-style:italic}.buddypress-wrap .dir-form{clear:both}.budypress.no-js form.bp-dir-search-form button[type=submit]{height:auto;right:0;overflow:visible;position:static;top:0}.bp-user [data-bp-search] form input[type=search],.bp-user [data-bp-search] form input[type=text]{padding:6px 10px 7px}.buddypress-wrap .bp-tables-user,.buddypress-wrap table.forum,.buddypress-wrap table.wp-profile-fields{width:100%}.buddypress-wrap .bp-tables-user thead tr,.buddypress-wrap table.forum thead tr,.buddypress-wrap table.wp-profile-fields thead tr{background:0 0;border-bottom:2px solid #ccc}.buddypress-wrap .bp-tables-user tbody tr,.buddypress-wrap table.forum tbody tr,.buddypress-wrap table.wp-profile-fields tbody tr{background:#fafafa}.buddypress-wrap .bp-tables-user tr td,.buddypress-wrap .bp-tables-user tr th,.buddypress-wrap table.forum tr td,.buddypress-wrap table.forum tr th,.buddypress-wrap table.wp-profile-fields tr td,.buddypress-wrap table.wp-profile-fields tr th{padding:.5em;vertical-align:middle}.buddypress-wrap .bp-tables-user tr td.label,.buddypress-wrap table.forum tr td.label,.buddypress-wrap table.wp-profile-fields tr td.label{border-left:1px solid #eaeaea;font-weight:600;width:25%}.buddypress-wrap .bp-tables-user tr.alt td,.buddypress-wrap table.wp-profile-fields tr.alt td{background:#fafafa}.buddypress-wrap table.profile-fields .data{padding:.5em 1em}.buddypress-wrap table.profile-fields tr:last-child{border-bottom:none}.buddypress-wrap table.notifications td{padding:1em .5em}.buddypress-wrap table.notifications .bulk-select-all,.buddypress-wrap table.notifications .bulk-select-check{width:7%}.buddypress-wrap table.notifications .bulk-select-check{vertical-align:middle}.buddypress-wrap table.notifications .date,.buddypress-wrap table.notifications .notification-description,.buddypress-wrap table.notifications .notification-since,.buddypress-wrap table.notifications .title{width:39%}.buddypress-wrap table.notifications .actions,.buddypress-wrap table.notifications .notification-actions{width:15%}.buddypress-wrap table.notification-settings th.title,.buddypress-wrap table.profile-settings th.title{width:80%}.buddypress-wrap table.notifications .notification-actions a.delete,.buddypress-wrap table.notifications .notification-actions a.mark-read{display:inline-block}.buddypress-wrap table.notification-settings{margin-bottom:15px;text-align:right}.buddypress-wrap #groups-notification-settings{margin-bottom:0}.buddypress-wrap table.notification-settings td:first-child,.buddypress-wrap table.notification-settings th.icon,.buddypress-wrap table.notifications td:first-child,.buddypress-wrap table.notifications th.icon{display:none}.buddypress-wrap table.notification-settings .no,.buddypress-wrap table.notification-settings .yes{text-align:center;width:40px;vertical-align:middle}.buddypress-wrap table#message-threads{clear:both}.buddypress-wrap table#message-threads .thread-info{min-width:40%}.buddypress-wrap table#message-threads .thread-info p{margin:0}.buddypress-wrap table#message-threads .thread-info p.thread-excerpt{color:#737373;font-size:12px;margin-top:3px}.buddypress-wrap table.profile-fields{margin-bottom:20px}.buddypress-wrap table.profile-fields:last-child{margin-bottom:0}.buddypress-wrap table.profile-fields p{margin:0}.buddypress-wrap table.profile-fields p:last-child{margin-top:0}.bp-screen-reader-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.center-vert{display:flex;align-items:center}.bp-hide{display:none}.bp-show{height:auto;right:0;overflow:visible;position:static;top:0}.buddypress .buddypress-wrap .activity-read-more a,.buddypress .buddypress-wrap .comment-reply-link,.buddypress .buddypress-wrap .generic-button a,.buddypress .buddypress-wrap a.bp-title-button,.buddypress .buddypress-wrap a.button,.buddypress .buddypress-wrap button,.buddypress .buddypress-wrap input[type=button],.buddypress .buddypress-wrap input[type=reset],.buddypress .buddypress-wrap input[type=submit],.buddypress .buddypress-wrap ul.button-nav:not(.button-tabs) li a{background:#fff;border-color:#ccc;border-style:solid;border-width:1px;border-radius:0;color:#555;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:400;outline:0;padding:.3em .5em;text-align:center;text-decoration:none;width:auto;line-height:1}.buddypress .buddypress-wrap a.button.dashicons,.buddypress .buddypress-wrap button.dashicons{font-family:dashicons}.buddypress .buddypress-wrap .button-small[type=button]{padding:0 8px 1px}.buddypress .buddypress-wrap .activity-read-more a:focus,.buddypress .buddypress-wrap .activity-read-more a:hover,.buddypress .buddypress-wrap .button-nav li a:focus,.buddypress .buddypress-wrap .button-nav li a:hover,.buddypress .buddypress-wrap .button-nav li.current a,.buddypress .buddypress-wrap .comment-reply-link:focus,.buddypress .buddypress-wrap .comment-reply-link:hover,.buddypress .buddypress-wrap .generic-button a:focus,.buddypress .buddypress-wrap .generic-button a:hover,.buddypress .buddypress-wrap a.button:focus,.buddypress .buddypress-wrap a.button:hover,.buddypress .buddypress-wrap button:focus,.buddypress .buddypress-wrap button:hover,.buddypress .buddypress-wrap input[type=button]:focus,.buddypress .buddypress-wrap input[type=button]:hover,.buddypress .buddypress-wrap input[type=reset]:focus,.buddypress .buddypress-wrap input[type=reset]:hover,.buddypress .buddypress-wrap input[type=submit]:focus,.buddypress .buddypress-wrap input[type=submit]:hover{background:#ededed;border-color:#999;color:#333;outline:0;text-decoration:none}.buddypress .buddypress-wrap a.disabled,.buddypress .buddypress-wrap button.disabled,.buddypress .buddypress-wrap button.pending,.buddypress .buddypress-wrap div.pending a,.buddypress .buddypress-wrap input[type=button].disabled,.buddypress .buddypress-wrap input[type=button].pending,.buddypress .buddypress-wrap input[type=reset].disabled,.buddypress .buddypress-wrap input[type=reset].pending,.buddypress .buddypress-wrap input[type=submit].pending,.buddypress .buddypress-wrap input[type=submit]:disabled,.buddypress .buddypress-wrap input[type=submit][disabled=disabled]{border-color:#eee;color:#767676;cursor:default}.buddypress .buddypress-wrap a.disabled:hover,.buddypress .buddypress-wrap button.disabled:hover,.buddypress .buddypress-wrap button.pending:hover,.buddypress .buddypress-wrap div.pending a:hover,.buddypress .buddypress-wrap input[type=button]:hover.disabled,.buddypress .buddypress-wrap input[type=button]:hover.pending,.buddypress .buddypress-wrap input[type=reset]:hover.disabled,.buddypress .buddypress-wrap input[type=reset]:hover.pending,.buddypress .buddypress-wrap input[type=submit]:hover.disabled,.buddypress .buddypress-wrap input[type=submit]:hover.pending{border-color:#eee;color:#767676}.buddypress .buddypress-wrap button.text-button,.buddypress .buddypress-wrap input.text-button{background:0 0;border:0;box-shadow:none;color:#767676}.buddypress .buddypress-wrap button.text-button.small,.buddypress .buddypress-wrap input.text-button.small{font-size:13px}.buddypress .buddypress-wrap button.text-button:focus,.buddypress .buddypress-wrap button.text-button:hover,.buddypress .buddypress-wrap input.text-button:focus,.buddypress .buddypress-wrap input.text-button:hover{background:0 0;text-decoration:underline}.buddypress .buddypress-wrap .activity-list a.button{border:none}.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.invite-button:hover{color:#1fb3dd}.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.group-remove-invite-button:hover,.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.invite-button:hover,.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li.selected a.group-remove-invite-button:hover,.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li.selected a.invite-button:hover{color:#a00}.buddypress .buddypress-wrap #item-buttons:empty{display:none}.buddypress .buddypress-wrap input:disabled:focus,.buddypress .buddypress-wrap input:disabled:hover{background:0 0}.buddypress .buddypress-wrap .text-links-list a.button{background:0 0;border:none;border-left:1px solid #eee;color:#737373;display:inline-block;padding:.3em 1em}.buddypress .buddypress-wrap .text-links-list a.button:visited{color:#d6d6d6}.buddypress .buddypress-wrap .text-links-list a.button:focus,.buddypress .buddypress-wrap .text-links-list a.button:hover{color:#5087e5}.buddypress .buddypress-wrap .text-links-list a:first-child{padding-right:0}.buddypress .buddypress-wrap .text-links-list a:last-child{border-left:none}.buddypress .buddypress-wrap .bp-list.grid .action a,.buddypress .buddypress-wrap .bp-list.grid .action button{border:1px solid #ccc;display:block;margin:0}.buddypress .buddypress-wrap .bp-list.grid .action a:focus,.buddypress .buddypress-wrap .bp-list.grid .action a:hover,.buddypress .buddypress-wrap .bp-list.grid .action button:focus,.buddypress .buddypress-wrap .bp-list.grid .action button:hover{background:#ededed}.buddypress #buddypress .create-button{background:0 0;text-align:center}.buddypress #buddypress .create-button a:focus,.buddypress #buddypress .create-button a:hover{text-decoration:underline}@media screen and (min-width:46.8em){.buddypress #buddypress .create-button{float:left}}.buddypress #buddypress .create-button a{border:1px solid #ccc;border-radius:5px;background-clip:padding-box;box-shadow:inset 0 0 6px 0 #eaeaea;margin:.2em 0;width:auto}.buddypress #buddypress .create-button a:focus,.buddypress #buddypress .create-button a:hover{background:0 0;border-color:#ccc;box-shadow:inset 0 0 12px 0 #eaeaea}@media screen and (min-width:46.8em){.buddypress #buddypress.bp-dir-vert-nav .create-button{float:none;padding-top:2em}.buddypress #buddypress.bp-dir-vert-nav .create-button a{margin-left:.5em}}.buddypress #buddypress.bp-dir-hori-nav .create-button{float:right}.buddypress #buddypress.bp-dir-hori-nav .create-button a,.buddypress #buddypress.bp-dir-hori-nav .create-button a:hover{background:0 0;border:0;box-shadow:none;margin:0}.buddypress-wrap button.ac-reply-cancel,.buddypress-wrap button.bp-icons{background:0 0;border:0}.buddypress-wrap button.bp-icons:focus,.buddypress-wrap button.bp-icons:hover{background:0 0}.buddypress-wrap button.ac-reply-cancel:focus,.buddypress-wrap button.ac-reply-cancel:hover{background:0 0;text-decoration:underline}.buddypress-wrap .bp-invites-content li .invite-button span.icons:before,.buddypress-wrap .bp-invites-filters .invite-button span.icons:before,.buddypress-wrap .bp-messages-filters li a.messages-button:before,.buddypress-wrap .feed a:before,.buddypress-wrap .filter label:before{font-family:dashicons;font-size:18px}.buddypress-wrap .bp-invites-content .item-list li .invite-button span.icons:before{font-size:27px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-invites-content .item-list li .invite-button span.icons:before{font-size:32px}}.buddypress-wrap .bp-list a.button.invite-button:focus,.buddypress-wrap .bp-list a.button.invite-button:hover{background:0 0}.buddypress-wrap .filter label:before{content:"\f536"}.buddypress-wrap div.feed a:before,.buddypress-wrap li.feed a:before{content:"\f303"}.buddypress-wrap ul.item-list li .invite-button:not(.group-remove-invite-button) span.icons:before{content:"\f502"}.buddypress-wrap ul.item-list li .group-remove-invite-button span.icons:before,.buddypress-wrap ul.item-list li.selected .invite-button span.icons:before{content:"\f153"}.buddypress-wrap .bp-invites-filters ul li #bp-invites-next-page:before,.buddypress-wrap .bp-messages-filters ul li #bp-messages-next-page:before{content:"\f345"}.buddypress-wrap .bp-invites-filters ul li #bp-invites-prev-page:before,.buddypress-wrap .bp-messages-filters ul li #bp-messages-prev-page:before{content:"\f341"}.buddypress-wrap .warn{color:#b71717}.buddypress-wrap .bp-messages{border:1px solid #ccc;margin:0 0 15px}.buddypress-wrap .bp-messages .sitewide-notices{display:block;margin:5px;padding:.5em}.buddypress-wrap .bp-messages.info{margin-bottom:0}.buddypress-wrap .bp-messages.updated{clear:both;display:block}.buddypress-wrap .bp-messages.bp-user-messages-feedback{border:0}.buddypress-wrap #group-create-body .bp-cover-image-status p.warning{background:#0b80a4;border:0;box-shadow:0 0 3px 0 rgba(0,0,0,.2);color:#fff}.buddypress-wrap .bp-feedback:not(.custom-homepage-info){display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row nowrap;flex-flow:row nowrap;align-items:stretch}.buddypress-wrap .bp-feedback{background:#fff;color:#807f7f;box-shadow:0 1px 1px 1px rgba(0,0,0,.1);color:#737373;margin:10px 0;position:relative}.buddypress-wrap .bp-feedback p{margin:0}.buddypress-wrap .bp-feedback span.bp-icon{color:#fff;display:block;font-family:dashicons;right:0;margin-left:10px;position:relative;padding:0 .5em}.buddypress-wrap .bp-feedback .bp-help-text{font-style:italic}.buddypress-wrap .bp-feedback .text{font-size:14px;margin:0;padding:.5em 0}.buddypress-wrap .bp-feedback.no-icon{padding:.5em}.buddypress-wrap .bp-feedback.small:before{line-height:inherit}.buddypress-wrap a[data-bp-close] span:before,.buddypress-wrap button[data-bp-close] span:before{font-size:32px}.buddypress-wrap a[data-bp-close],.buddypress-wrap button[data-bp-close]{border:0;position:absolute;top:10px;left:10px;width:32px}.buddypress-wrap .bp-feedback.no-icon a[data-bp-close],.buddypress-wrap .bp-feedback.no-icon button[data-bp-close]{top:-6px;left:6px}.buddypress-wrap button[data-bp-close]:hover{background-color:transparent}.buddypress-wrap .bp-feedback p{margin:0}.buddypress-wrap .bp-feedback .bp-icon{font-size:20px;padding:0 2px}.buddypress-wrap .bp-feedback.error .bp-icon,.buddypress-wrap .bp-feedback.help .bp-icon,.buddypress-wrap .bp-feedback.info .bp-icon,.buddypress-wrap .bp-feedback.loading .bp-icon,.buddypress-wrap .bp-feedback.success .bp-icon,.buddypress-wrap .bp-feedback.updated .bp-icon,.buddypress-wrap .bp-feedback.warning .bp-icon{display:flex;align-items:center}.buddypress-wrap .bp-feedback.help .bp-icon,.buddypress-wrap .bp-feedback.info .bp-icon{background-color:#0b80a4}.buddypress-wrap .bp-feedback.help .bp-icon:before,.buddypress-wrap .bp-feedback.info .bp-icon:before{content:"\f348"}.buddypress-wrap .bp-feedback.error .bp-icon,.buddypress-wrap .bp-feedback.warning .bp-icon{background-color:#d33}.buddypress-wrap .bp-feedback.error .bp-icon:before,.buddypress-wrap .bp-feedback.warning .bp-icon:before{content:"\f534"}.buddypress-wrap .bp-feedback.loading .bp-icon{background-color:#ffd087}.buddypress-wrap .bp-feedback.loading .bp-icon:before{content:"\f469"}.buddypress-wrap .bp-feedback.success .bp-icon,.buddypress-wrap .bp-feedback.updated .bp-icon{background-color:#8a2}.buddypress-wrap .bp-feedback.success .bp-icon:before,.buddypress-wrap .bp-feedback.updated .bp-icon:before{content:"\f147"}.buddypress-wrap .bp-feedback.help .bp-icon:before{content:"\f468"}.buddypress-wrap #pass-strength-result{background-color:#eee;border-color:#ddd;border-style:solid;border-width:1px;display:none;font-weight:700;margin:10px 0 10px 0;padding:.5em;text-align:center;width:auto}.buddypress-wrap #pass-strength-result.show{display:block}.buddypress-wrap #pass-strength-result.mismatch{background-color:#333;border-color:transparent;color:#fff}.buddypress-wrap #pass-strength-result.bad,.buddypress-wrap #pass-strength-result.error{background-color:#ffb78c;border-color:#ff853c;color:#333}.buddypress-wrap #pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040;color:#333}.buddypress-wrap #pass-strength-result.good{background-color:#ffec8b;border-color:#fc0;color:#333}.buddypress-wrap #pass-strength-result.strong{background-color:#66d66e;border-color:#438c48;color:#333}.buddypress-wrap .standard-form#signup_form div div.error{background:#faa;color:#a00;margin:0 0 10px 0;padding:.5em;width:90%}.buddypress-wrap .accept,.buddypress-wrap .reject{float:right;margin-right:10px}.buddypress-wrap .members-list.grid .bp-ajax-message{background:rgba(255,255,255,.9);border:1px solid #eee;font-size:14px;right:2%;position:absolute;padding:.5em 1em;left:2%;top:30px}body.create-blog #buddypress .error,body.create-blog #buddypress .success{background:#fff;color:#807f7f;box-shadow:0 1px 1px 1px rgba(0,0,0,.1);color:#737373;padding:10px 15px;background-color:#fff}body.create-blog #buddypress .error{border-right:4px solid #d33}body.create-blog #buddypress .success{border-right:4px solid #8a2}.buddypress.widget .item-options{font-size:12px;margin:0 0 1em;padding:1em 0}.buddypress.widget .bp-login-widget-user-avatar{float:right}.buddypress.widget .bp-login-widget-user-links{margin-right:70px}.buddypress.widget ul.item-list{list-style:none;margin:10px 0}.buddypress.widget ul.activity-list{padding:0}.buddypress.widget ul.activity-list blockquote{margin:0 0 1.5em;overflow:visible;padding:0 .75em .75em 0}.buddypress.widget ul.activity-list img{margin-bottom:.5em}.buddypress.widget ul.activity-list li{border-bottom:1px solid #ccc;margin-bottom:1em}.buddypress.widget ul.activity-list li .activity-header p{margin-bottom:.5em}.buddypress.widget ul.activity-list li:last-child{border-bottom:0}.buddypress.widget .avatar-block{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row wrap;flex-flow:row wrap}.buddypress.widget .avatar-block img{margin:.5em}.buddypress.widget ul#friends-list li:after,.buddypress.widget ul#friends-list li:before,.buddypress.widget ul#groups-list li:after,.buddypress.widget ul#groups-list li:before,.buddypress.widget ul#members-list li:after,.buddypress.widget ul#members-list li:before{content:" ";display:table}.buddypress.widget ul#friends-list li:after,.buddypress.widget ul#groups-list li:after,.buddypress.widget ul#members-list li:after{clear:both}.buddypress.widget ul#friends-list li,.buddypress.widget ul#groups-list li,.buddypress.widget ul#members-list li{margin-bottom:1em}.buddypress.widget ul#friends-list li .item-avatar,.buddypress.widget ul#groups-list li .item-avatar,.buddypress.widget ul#members-list li .item-avatar{float:right;width:60px}.buddypress.widget ul#friends-list li .item,.buddypress.widget ul#groups-list li .item,.buddypress.widget ul#members-list li .item{margin-right:70px}.buddypress-wrap .buddypress.widget ul#friends-list,.buddypress-wrap .buddypress.widget ul#groups-list,.buddypress-wrap .buddypress.widget ul#members-list{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:column nowrap;flex-flow:column nowrap}@media screen and (min-width:32em){.buddypress-wrap .buddypress.widget ul#friends-list,.buddypress-wrap .buddypress.widget ul#groups-list,.buddypress-wrap .buddypress.widget ul#members-list{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row wrap;flex-flow:row wrap}}.buddypress-wrap .buddypress.widget ul#friends-list li,.buddypress-wrap .buddypress.widget ul#groups-list li,.buddypress-wrap .buddypress.widget ul#members-list li{border:1px solid #eee;align-items:stretch;-moz-flex:1 1 46%;-o-flex:1 1 46%;flex:1 1 46%;margin:2%}@media screen and (min-width:75em){.buddypress-wrap .buddypress.widget ul#friends-list li,.buddypress-wrap .buddypress.widget ul#groups-list li,.buddypress-wrap .buddypress.widget ul#members-list li{-moz-flex:0 1 20%;-o-flex:0 1 20%;flex:0 1 20%}}.buddypress-wrap .buddypress.widget ul#friends-list li .item-avatar,.buddypress-wrap .buddypress.widget ul#groups-list li .item-avatar,.buddypress-wrap .buddypress.widget ul#members-list li .item-avatar{padding:.5em;text-align:center}.buddypress-wrap .buddypress.widget ul#friends-list li .item,.buddypress-wrap .buddypress.widget ul#groups-list li .item,.buddypress-wrap .buddypress.widget ul#members-list li .item{padding:.5em}.buddypress-wrap .buddypress.widget ul#friends-list li .item .item-meta,.buddypress-wrap .buddypress.widget ul#groups-list li .item .item-meta,.buddypress-wrap .buddypress.widget ul#members-list li .item .item-meta{font-size:12px;overflow-wrap:break-word}@media screen and (min-width:75em){.buddypress-wrap .buddypress.widget ul#friends-list,.buddypress-wrap .buddypress.widget ul#groups-list,.buddypress-wrap .buddypress.widget ul#members-list{margin:10px -2%;width:100%}.buddypress-wrap .buddypress.widget ul#friends-list li,.buddypress-wrap .buddypress.widget ul#groups-list li,.buddypress-wrap .buddypress.widget ul#members-list li{-moz-flex:0 1 auto;-o-flex:0 1 auto;flex:0 1 auto;margin:10px 2% 1%;width:46%}}.buddypress-wrap .buddypress.widget blockquote{margin:0 0 1.5em;overflow:visible;padding:0 .75em .75em 0}#buddypress-wrap *{transition:opacity .1s ease-in-out .1s}#buddypress-wrap a.button,#buddypress-wrap a.generic-button,#buddypress-wrap button,#buddypress-wrap input[type=reset],#buddypress-wrap input[type=submit]{transition:background .1s ease-in-out .1s,color .1s ease-in-out .1s,border-color .1s ease-in-out .1s}.buddypress-wrap a.loading,.buddypress-wrap input.loading{animation:loader-pulsate .5s infinite ease-in-out alternate;border-color:#aaa}@keyframes loader-pulsate{from{border-color:#aaa;box-shadow:0 0 6px #ccc}to{border-color:#ccc;box-shadow:0 0 6px #f8f8f8}}.buddypress-wrap a.loading:hover,.buddypress-wrap input.loading:hover{color:#777}[data-bp-tooltip]{position:relative}[data-bp-tooltip]:after{background-color:#fff;display:none;opacity:0;position:absolute;transform:translate3d(0,0,0);visibility:hidden}[data-bp-tooltip]:after{border:1px solid #737373;border-radius:1px;box-shadow:-4px 4px 8px rgba(0,0,0,.2);color:#333;content:attr(data-bp-tooltip);font-family:"Helvetica Neue",helvetica,arial,san-serif;font-size:12px;font-weight:400;letter-spacing:normal;line-height:1.25;max-width:200px;padding:5px 8px;pointer-events:none;text-shadow:none;text-transform:none;transition:all 1.5s ease;white-space:nowrap;word-wrap:break-word;z-index:100000}[data-bp-tooltip]:active:after,[data-bp-tooltip]:focus:after,[data-bp-tooltip]:hover:after{display:block;opacity:1;overflow:visible;visibility:visible}[data-bp-tooltip=""]{display:none;opacity:0;visibility:hidden}.bp-tooltip:after{right:50%;margin-top:7px;top:110%;transform:translate(50%,0)}.user-list .bp-tooltip:after{right:0;transform:translate(0,0)}@media screen and (min-width:46.8em){.user-list .bp-tooltip:after{right:auto;left:0;transform:translate(0,0)}}.activity-list .bp-tooltip:after,.activity-meta-action .bp-tooltip:after,.avatar-block .item-avatar .bp-tooltip:after,.notification-actions .bp-tooltip:after,.participants-list .bp-tooltip:after{right:0;transform:translate(0,0)}.bp-invites-content .bp-tooltip:after,.message-metadata .actions .bp-tooltip:after,.single-message-thread-header .actions .bp-tooltip:after{right:auto;left:0;transform:translate(0,0)}.bp-invites-content #send-invites-editor .bp-tooltip:after{right:0;left:auto}#item-body,.single-screen-navs{box-sizing:border-box}.grid>li,.grid>li .generic-button a{box-sizing:border-box}.grid>li{border-bottom:0;padding-bottom:10px;padding-top:0}.grid>li .list-wrap{background:#fafafa;border:1px solid #eee;padding-bottom:15px;position:relative;overflow:hidden;padding-top:14px}.grid>li .list-wrap .list-title{padding:.5em}.grid>li .list-wrap .update{color:#737373;padding:.5em 2em}.grid>li .item-avatar{text-align:center}.grid>li .item-avatar .avatar{border-radius:50%;display:inline-block;width:50%}@media screen and (min-width:24em){.grid.members-list .list-wrap{min-height:340px}.grid.members-list .list-wrap .item-block{margin:0 auto;min-height:7rem}.grid.members-group-list .list-wrap .item-block{margin:0 auto;min-height:7rem}.grid.groups-list .list-wrap{min-height:470px}.grid.groups-list .list-wrap .item-block{min-height:6rem}.grid.groups-list .list-wrap .group-desc{margin:15px auto 0;min-height:5em;overflow:hidden}.grid.groups-list .list-wrap .group-details,.grid.groups-list .list-wrap .item-desc,.grid.groups-list .list-wrap .last-activity{margin-bottom:0}.grid.groups-list .list-wrap .group-details p,.grid.groups-list .list-wrap .item-desc p,.grid.groups-list .list-wrap .last-activity p{margin-bottom:0}.grid.blogs-list .list-wrap{min-height:350px}.grid.blogs-list .list-wrap .item-block{margin:0 auto;min-height:7rem}}@media screen and (min-width:24em){.grid>li.item-entry{float:right;margin:0}.grid.two>li{padding-bottom:20px}}@media screen and (min-width:24em) and (min-width:75em){.grid.two>li .list-wrap{max-width:500px;margin:0 auto}}@media screen and (min-width:24em){.grid.three>li,.grid.two>li{width:50%}.grid.three>li:nth-child(odd),.grid.two>li:nth-child(odd){padding-left:10px}.grid.three>li:nth-child(even),.grid.two>li:nth-child(even){padding-right:10px}.grid.three>li .item,.grid.two>li .item{margin:1rem auto 0;width:80%}.grid.three>li .item .item-title,.grid.two>li .item .item-title{width:auto}}@media screen and (min-width:46.8em){.grid.three>li{padding-top:0;width:33.333333%;width:calc(100% / 3)}.grid.three>li:nth-child(1n+1){padding-right:5px;padding-left:5px}.grid.three>li:nth-child(3n+3){padding-right:5px;padding-left:0}.grid.three>li:nth-child(3n+1){padding-right:0;padding-left:5px}}@media screen and (min-width:46.8em){.grid.four>li{width:25%}.grid.four>li:nth-child(1n+1){padding-right:5px;padding-left:5px}.grid.four>li:nth-child(4n+4){padding-right:5px;padding-left:0}.grid.four>li:nth-child(4n+1){padding-right:0;padding-left:5px}}.buddypress-wrap .grid.bp-list{padding-top:1em}.buddypress-wrap .grid.bp-list>li{border-bottom:none}.buddypress-wrap .grid.bp-list>li .list-wrap{padding-bottom:3em}.buddypress-wrap .grid.bp-list>li .item-avatar{margin:0;text-align:center;width:auto}.buddypress-wrap .grid.bp-list>li .item-avatar img.avatar{display:inline-block;height:auto;width:50%}.buddypress-wrap .grid.bp-list>li .item-meta,.buddypress-wrap .grid.bp-list>li .list-title{float:none;text-align:center}.buddypress-wrap .grid.bp-list>li .list-title{font-size:inherit;line-height:1.1}.buddypress-wrap .grid.bp-list>li .item{font-size:18px;right:0;margin:0 auto;text-align:center;width:96%}@media screen and (min-width:46.8em){.buddypress-wrap .grid.bp-list>li .item{font-size:22px}}.buddypress-wrap .grid.bp-list>li .item .group-desc,.buddypress-wrap .grid.bp-list>li .item .item-block{float:none;width:96%}.buddypress-wrap .grid.bp-list>li .item .item-block{margin-bottom:10px}.buddypress-wrap .grid.bp-list>li .item .last-activity{margin-top:5px}.buddypress-wrap .grid.bp-list>li .item .group-desc{clear:none}.buddypress-wrap .grid.bp-list>li .item .user-update{clear:both;text-align:right}.buddypress-wrap .grid.bp-list>li .item .activity-read-more a{display:inline}.buddypress-wrap .grid.bp-list>li .action{bottom:5px;float:none;height:auto;right:0;margin:0;padding:0 5px;position:absolute;text-align:center;top:auto;width:100%}.buddypress-wrap .grid.bp-list>li .action .generic-button{float:none;margin:5px 0 0;text-align:center;width:100%}.buddypress-wrap .grid.bp-list>li .action .generic-button a,.buddypress-wrap .grid.bp-list>li .action .generic-button button{width:100%}.buddypress-wrap .grid.bp-list>li .avatar,.buddypress-wrap .grid.bp-list>li .item,.buddypress-wrap .grid.bp-list>li .item-avatar{float:none}.buddypress-wrap .blogs-list.grid.two>li .blogs-title{min-height:5em}.buddypress-wrap .grid.four>li .group-desc,.buddypress-wrap .grid.three>li .group-desc{min-height:8em}.buddypress-wrap .blogs-list.grid.four>li,.buddypress-wrap .blogs-list.grid.three>li{min-height:350px}.buddypress-wrap .blogs-list.grid.four>li .last-activity,.buddypress-wrap .blogs-list.grid.three>li .last-activity{margin-bottom:0}.buddypress-wrap .blogs-list.grid.four>li .last-post,.buddypress-wrap .blogs-list.grid.three>li .last-post{margin-top:0}.buddypress:not(.logged-in) .grid.bp-list .list-wrap{padding-bottom:5px}.buddypress:not(.logged-in) .grid.groups-list .list-wrap{min-height:430px}.buddypress:not(.logged-in) .grid.members-list .list-wrap{min-height:300px}.buddypress:not(.logged-in) .grid.blogs-list .list-wrap{min-height:320px}@media screen and (min-width:46.8em){.bp-single-vert-nav .bp-navs.vertical{overflow:visible}.bp-single-vert-nav .bp-navs.vertical ul{border-left:1px solid #d6d6d6;border-bottom:0;float:right;margin-left:-1px;width:25%}.bp-single-vert-nav .bp-navs.vertical li{float:none;margin-left:0}.bp-single-vert-nav .bp-navs.vertical li.selected a{background:#ccc;color:#333}.bp-single-vert-nav .bp-navs.vertical li:focus,.bp-single-vert-nav .bp-navs.vertical li:hover{background:#ccc}.bp-single-vert-nav .bp-navs.vertical li span{background:#d6d6d6;border-radius:10%;float:left;margin-left:2px}.bp-single-vert-nav .bp-navs.vertical li:hover span{border-color:#eaeaea}.bp-single-vert-nav .bp-navs.vertical.tabbed-links li.selected a{padding-right:0}.bp-single-vert-nav .bp-wrap{margin-bottom:15px}.bp-single-vert-nav .bp-wrap .group-nav-tabs.groups-nav ul li,.bp-single-vert-nav .bp-wrap .user-nav-tabs.users-nav ul li{right:1px;position:relative}.bp-single-vert-nav .item-body:not(#group-create-body){background:#fff;border-right:1px solid #d6d6d6;float:left;margin:0;min-height:400px;padding:0 1em 0 0;width:calc(75% + 1px)}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links){background:#eaeaea;margin:0 -5px 0 0;width:auto}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li{font-size:16px;margin:10px 0}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a{border-left:1px solid #ccc;padding:0 .5em}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a:focus,.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a:hover{background:0 0}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.current a{background:0 0;color:#333;text-decoration:underline}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li:last-child a{border:none}.bp-dir-vert-nav .dir-navs{float:right;right:1px;position:relative;width:20%}.bp-dir-vert-nav .dir-navs ul li{float:none;overflow:hidden;width:auto}.bp-dir-vert-nav .dir-navs ul li.selected{border:1px solid #eee}.bp-dir-vert-nav .dir-navs ul li.selected a{background:#555;color:#fff}.bp-dir-vert-nav .dir-navs ul li.selected a span{background:#eaeaea;border-color:#ccc;color:#5087e5}.bp-dir-vert-nav .dir-navs ul li a:focus,.bp-dir-vert-nav .dir-navs ul li a:hover{background:#ccc;color:#333}.bp-dir-vert-nav .dir-navs ul li a:focus span,.bp-dir-vert-nav .dir-navs ul li a:hover span{border:1px solid #555}.bp-dir-vert-nav .screen-content{border-right:1px solid #d6d6d6;margin-right:20%;overflow:hidden;padding:0 1em 2em 0}.bp-dir-vert-nav .screen-content .subnav-filters{margin-top:0}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li:not(.selected) a:hover{background:0 0}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li.selected{background:0 0;border:1px solid #d6d6d6;border-left-color:#fff}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li.selected a{background:0 0;color:#333;font-weight:600}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li.selected a span{background:#555;border:1px solid #d6d6d6;color:#fff}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress.css b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress.css index 3d0d7d3cfaf4b85545ca111f8ec2f84a19b07d5c..15406b96e28443b2200526a29ba814cccebeba67 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress.css @@ -1,7 +1,8 @@ /*-------------------------------------------------------------- Hello, this is the BuddyPress Nouveau stylesheet. -@version 4.0.0 +@since 3.0.0 +@version 7.0.0 ---------------------------------------------------------------- >>> TABLE OF CONTENTS: @@ -82,9 +83,9 @@ body #buddypress .bp-list .action { } @media screen and (min-width: 46.8em) { - body.buddypress .entry-header, - body.buddypress .site-content .entry-header, - body.buddypress .entry-content { + body.buddypress .entry-header:not(.alignwide):not(.alignfull), + body.buddypress .site-content .entry-header:not(.alignwide):not(.alignfull), + body.buddypress .entry-content:not(.alignwide):not(.alignfull) { max-width: none; } body.buddypress .entry-header { @@ -141,14 +142,14 @@ body.buddypress article.page > .entry-header { padding: 0; } -body.buddypress article.page > .entry-header .entry-title { +body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .entry-title { font-size: 28px; font-weight: inherit; color: #767676; } @media screen and (min-width: 46.8em) { - body.buddypress article.page > .entry-header .entry-title { + body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .entry-title { font-size: 34px; } } @@ -1774,6 +1775,16 @@ form.ac-form .ac-reply-content input { * @section 3.2 - Blogs Loop *---------------------------------------------------------- */ +.buddypress-wrap .blogs-list li .item-avatar img.avatar-150 { + max-width: 150px; + max-height: 150px; +} + +.buddypress-wrap .blogs-list li .item-avatar img.avatar-50 { + max-width: 50px; + max-height: 50px; +} + @media screen and (min-width: 46.8em) { .buddypress-wrap .blogs-list li .item-block { float: none; @@ -2291,7 +2302,15 @@ body.no-js .single-item-header .js-self-profile-button { *----------------------------------------------------- */ .groups-header .bp-group-type-list { + font-size: 18px; margin: 0; + color: #333; + display: flex; +} + +.groups-header .bp-group-type-list strong { + padding-right: 1em; + white-space: nowrap; } .groups-header .bp-feedback { @@ -2385,15 +2404,30 @@ body.no-js .single-item-header .js-self-profile-button { * User Accounts Specific Item Header *----------------------------------------------------- */ -.bp-user .users-header .user-nicename { +body.buddypress.bp-user .buddypress-wrap .users-header h2.user-nicename { + margin-top: 0; margin-bottom: 5px; } -.bp-user .member-header-actions { +body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list { + padding-bottom: 0.5em; + font-size: 18px; + margin: 0; + color: #333; + display: flex; +} + +body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list strong { + padding-right: 1em; + white-space: nowrap; +} + +body.buddypress.bp-user .buddypress-wrap .member-header-actions { overflow: hidden; + padding-left: 0; } -.bp-user .member-header-actions * > * { +body.buddypress.bp-user .buddypress-wrap .member-header-actions * > * { display: block; } @@ -3447,7 +3481,7 @@ body.buddypress.settings.data #buddypress.buddypress-wrap .item-body p a { .buddypress-wrap .standard-form [data-bp-search] input[type="text"], .buddypress-wrap .standard-form .groups-members-search input[type="search"], .buddypress-wrap .standard-form .groups-members-search input[type="text"] { - background: #fafafa; + background-color: #fafafa; border: 1px solid #d6d6d6; border-radius: 0; font: inherit; @@ -3518,7 +3552,7 @@ body.buddypress.settings.data #buddypress.buddypress-wrap .item-body p a { .buddypress-wrap .standard-form input:focus, .buddypress-wrap .standard-form textarea:focus, .buddypress-wrap .standard-form select:focus { - background: #fafafa; + background-color: #fafafa; color: #555; outline: 0; } @@ -3757,9 +3791,9 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages { .buddypress-wrap form#group-members-search input[type="search"], .buddypress-wrap form#group-members-search input[type="text"] { float: left; - line-height: 1.5; + line-height: 2; padding: 3px 10px; - width: 80%; + width: 78%; } .buddypress-wrap form.bp-dir-search-form button[type="submit"], @@ -3824,7 +3858,8 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages { padding: 0.1em 0.7em; } -.buddypress-wrap .current-member-type { +.buddypress-wrap .current-member-type, +.buddypress-wrap .current-group-type { font-style: italic; } @@ -4105,6 +4140,7 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages { .buddypress .buddypress-wrap input[type="button"].disabled, .buddypress .buddypress-wrap input[type="reset"].disabled, .buddypress .buddypress-wrap input[type="submit"][disabled="disabled"], +.buddypress .buddypress-wrap input[type="submit"]:disabled, .buddypress .buddypress-wrap button.pending, .buddypress .buddypress-wrap button.disabled, .buddypress .buddypress-wrap div.pending a, @@ -4571,6 +4607,24 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages { top: 30px; } +body.create-blog #buddypress .error, +body.create-blog #buddypress .success { + background: #fff; + color: #807f7f; + box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1); + color: #737373; + padding: 10px 15px; + background-color: #fff; +} + +body.create-blog #buddypress .error { + border-left: 4px solid #d33; +} + +body.create-blog #buddypress .success { + border-left: 4px solid #8a2; +} + .buddypress.widget .item-options { font-size: 12px; margin: 0 0 1em; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress.min.css b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress.min.css index 2b6ca04d62ae73d92acc1b9a252dffc328fc1223..93cc3ff76773272bf7145e697cc4b911929624c2 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress.min.css @@ -1 +1 @@ -body #buddypress * a{box-shadow:none;text-decoration:none}body #buddypress div,body #buddypress dl,body #buddypress input[type=reset],body #buddypress input[type=search],body #buddypress input[type=submit],body #buddypress li,body #buddypress select,body #buddypress textarea{border-radius:2px;background-clip:padding-box}body #buddypress #item-body blockquote,body #buddypress .bp-lists blockquote{margin-left:0}body #buddypress .bp-list .action{box-sizing:border-box}@media screen and (min-width:46.8em){body.buddypress .entry-content,body.buddypress .entry-header,body.buddypress .site-content .entry-header{max-width:none}body.buddypress .entry-header{float:none}body.buddypress .entry-content{float:none}body.buddypress .site-content{padding-top:2.5em}body.buddypress #page #primary{max-width:none}body.buddypress #page #primary .entry-content,body.buddypress #page #primary .entry-header{float:none;width:auto}}body.buddypress .buddypress-wrap h1,body.buddypress .buddypress-wrap h2,body.buddypress .buddypress-wrap h3,body.buddypress .buddypress-wrap h4,body.buddypress .buddypress-wrap h5,body.buddypress .buddypress-wrap h6{clear:none;margin:1em 0;padding:0}body.buddypress .buddypress-wrap h2:before{display:none}.bp-wrap:after,.bp-wrap:before{content:" ";display:table}.bp-wrap:after{clear:both}.buddypress-wrap.round-avatars .avatar{border-radius:50%}body.buddypress article.page>.entry-header{margin-bottom:2em;padding:0}body.buddypress article.page>.entry-header .entry-title{font-size:28px;font-weight:inherit;color:#767676}@media screen and (min-width:46.8em){body.buddypress article.page>.entry-header .entry-title{font-size:34px}}.buddypress-wrap dt.section-title{font-size:18px}@media screen and (min-width:46.8em){.buddypress-wrap dt.section-title{font-size:22px}}.buddypress-wrap .bp-label-text,.buddypress-wrap .message-threads{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-label-text,.buddypress-wrap .message-threads{font-size:16px}}.buddypress-wrap .activity-header{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .activity-header{font-size:16px}}.buddypress-wrap .activity-inner{font-size:15px}@media screen and (min-width:46.8em){.buddypress-wrap .activity-inner{font-size:18px}}.buddypress-wrap #whats-new-post-in{font-size:16px}.buddypress-wrap .acomment-meta,.buddypress-wrap .mini .activity-header{font-size:16px}.buddypress-wrap .dir-component-filters #activity-filter-by{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .dir-component-filters #activity-filter-by{font-size:16px}}.buddypress-wrap .bp-tables-user th{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-tables-user th{font-size:16px}}.buddypress-wrap .bp-tables-user td{font-size:12px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-tables-user td{font-size:14px}}.buddypress-wrap .profile-fields th{font-size:15px}@media screen and (min-width:46.8em){.buddypress-wrap .profile-fields th{font-size:18px}}.buddypress-wrap .profile-fields td{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .profile-fields td{font-size:16px}}.buddypress-wrap #notification-select{font-size:12px}@media screen and (min-width:46.8em){.buddypress-wrap #notification-select{font-size:14px}}.bp-navs{background:0 0;clear:both;overflow:hidden}.bp-navs ul{margin:0;padding:0}.bp-navs ul li{list-style:none;margin:0}.bp-navs ul li.last select{max-width:185px}.bp-navs ul li a,.bp-navs ul li span{border:0;display:block;padding:5px 10px;text-decoration:none}.bp-navs ul li .count{background:#eaeaea;border:1px solid #ccc;border-radius:50%;color:#555;display:inline;font-size:12px;margin-left:2px;padding:3px 6px;text-align:center;vertical-align:middle}.bp-navs ul li.current a,.bp-navs ul li.selected a{color:#333;opacity:1}.bp-navs.bp-invites-filters ul li a,.bp-navs.bp-messages-filters ul li a{border:1px solid #ccc;display:inline-block}.main-navs.dir-navs{margin-bottom:20px}.buddypress-wrap .bp-navs li a:hover a .count,.buddypress-wrap .bp-navs li.current a .count,.buddypress-wrap .bp-navs li.selected a .count{background-color:#ccc}.buddypress-wrap .bp-navs li:not(.current) a:focus,.buddypress-wrap .bp-navs li:not(.current) a:hover,.buddypress-wrap .bp-navs li:not(.selected) a:focus,.buddypress-wrap .bp-navs li:not(.selected) a:hover{background:#ccc;color:#333}.buddypress-wrap .bp-navs li.current a,.buddypress-wrap .bp-navs li.current a:focus,.buddypress-wrap .bp-navs li.current a:hover,.buddypress-wrap .bp-navs li.selected a,.buddypress-wrap .bp-navs li.selected a:focus,.buddypress-wrap .bp-navs li.selected a:hover{background:#555;color:#fafafa}@media screen and (min-width:46.8em){.buddypress-wrap .main-navs:not(.dir-navs) li.current a,.buddypress-wrap .main-navs:not(.dir-navs) li.selected a{background:#fff;color:#333;font-weight:600}.buddypress-wrap .main-navs.vertical li.current a,.buddypress-wrap .main-navs.vertical li.selected a{background:#555;color:#fafafa;text-decoration:none}.buddypress-wrap.bp-dir-hori-nav:not(.bp-vertical-navs) nav:not(.tabbed-links){border-bottom:1px solid #eee;border-top:1px solid #eee;box-shadow:0 2px 12px 0 #fafafa}}.buddypress-wrap .bp-subnavs li.current a,.buddypress-wrap .bp-subnavs li.selected a{background:#fff;color:#333;font-weight:600}@media screen and (max-width:46.8em){.buddypress-wrap:not(.bp-single-vert-nav) .bp-navs li{background:#eaeaea}}.buddypress-wrap:not(.bp-single-vert-nav) .main-navs>ul>li>a{padding:.5em calc(.5em + 2px)}.buddypress-wrap:not(.bp-single-vert-nav) .group-subnav#subsubnav,.buddypress-wrap:not(.bp-single-vert-nav) .user-subnav#subsubnav{background:0 0}.buddypress-wrap .bp-subnavs,.buddypress-wrap ul.subnav{width:100%}.buddypress-wrap .bp-subnavs{margin:10px 0;overflow:hidden}.buddypress-wrap .bp-subnavs ul li{margin-top:0}.buddypress-wrap .bp-subnavs ul li.current :focus,.buddypress-wrap .bp-subnavs ul li.current :hover,.buddypress-wrap .bp-subnavs ul li.selected :focus,.buddypress-wrap .bp-subnavs ul li.selected :hover{background:0 0;color:#333}.buddypress-wrap ul.subnav{width:auto}.buddypress-wrap .bp-navs.bp-invites-filters#subsubnav ul li.last,.buddypress-wrap .bp-navs.bp-invites-nav#subnav ul li.last,.buddypress-wrap .bp-navs.bp-messages-filters#subsubnav ul li.last{margin-top:0}@media screen and (max-width:46.8em){.buddypress-wrap .single-screen-navs{border:1px solid #eee}.buddypress-wrap .single-screen-navs li{border-bottom:1px solid #eee}.buddypress-wrap .single-screen-navs li:last-child{border-bottom:none}.buddypress-wrap .bp-subnavs li a{font-size:14px}.buddypress-wrap .bp-subnavs li.current a,.buddypress-wrap .bp-subnavs li.current a:focus,.buddypress-wrap .bp-subnavs li.current a:hover,.buddypress-wrap .bp-subnavs li.selected a,.buddypress-wrap .bp-subnavs li.selected a:focus,.buddypress-wrap .bp-subnavs li.selected a:hover{background:#555;color:#fff}}.buddypress-wrap .bp-navs li.current a .count,.buddypress-wrap .bp-navs li.selected a .count,.buddypress_object_nav .bp-navs li.current a .count,.buddypress_object_nav .bp-navs li.selected a .count{background-color:#fff}.buddypress-wrap .bp-navs li.dynamic a .count,.buddypress-wrap .bp-navs li.dynamic.current a .count,.buddypress-wrap .bp-navs li.dynamic.selected a .count,.buddypress_object_nav .bp-navs li.dynamic a .count,.buddypress_object_nav .bp-navs li.dynamic.current a .count,.buddypress_object_nav .bp-navs li.dynamic.selected a .count{background-color:#5087e5;border:0;color:#fafafa}.buddypress-wrap .bp-navs li.dynamic a:hover .count,.buddypress_object_nav .bp-navs li.dynamic a:hover .count{background-color:#5087e5;border:0;color:#fff}.buddypress-wrap .bp-navs li a .count:empty,.buddypress_object_nav .bp-navs li a .count:empty{display:none}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current),.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current){color:#767676}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a{color:#767676}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a:focus,.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a:hover,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a:focus,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a:hover{background:0 0;color:#333}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a[disabled]:focus,.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a[disabled]:hover,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a[disabled]:focus,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a[disabled]:hover{color:#767676}.buddypress-wrap .bp-navs.group-create-links ul li.current a,.buddypress_object_nav .bp-navs.group-create-links ul li.current a{text-align:center}@media screen and (min-width:46.8em){.buddypress-wrap .bp-navs li{float:left}.buddypress-wrap .subnav{float:left}.buddypress-wrap ul.subnav{width:auto}.buddypress-wrap #subsubnav .activity-search{float:left}.buddypress-wrap #subsubnav .filter{float:right}}.buddypress_object_nav .bp-navs li a .count{display:inline-block;float:right}@media screen and (min-width:46.8em){.bp-dir-vert-nav .bp-navs.dir-navs{background:0 0}.bp-dir-vert-nav .bp-navs.dir-navs a .count{float:right}}@media screen and (min-width:46.8em){.buddypress-wrap .tabbed-links ol,.buddypress-wrap .tabbed-links ul{border-bottom:1px solid #ccc;float:none;margin:20px 0 10px}.buddypress-wrap .tabbed-links ol:after,.buddypress-wrap .tabbed-links ol:before,.buddypress-wrap .tabbed-links ul:after,.buddypress-wrap .tabbed-links ul:before{content:" ";display:block}.buddypress-wrap .tabbed-links ol:after,.buddypress-wrap .tabbed-links ul:after{clear:both}.buddypress-wrap .tabbed-links ol li,.buddypress-wrap .tabbed-links ul li{float:left;list-style:none;margin:0 10px 0 0}.buddypress-wrap .tabbed-links ol li a,.buddypress-wrap .tabbed-links ol li span:not(.count),.buddypress-wrap .tabbed-links ul li a,.buddypress-wrap .tabbed-links ul li span:not(.count){background:0 0;border:none;display:block;padding:4px 10px}.buddypress-wrap .tabbed-links ol li a:focus,.buddypress-wrap .tabbed-links ol li a:hover,.buddypress-wrap .tabbed-links ul li a:focus,.buddypress-wrap .tabbed-links ul li a:hover{background:0 0}.buddypress-wrap .tabbed-links ol li:not(.current),.buddypress-wrap .tabbed-links ul li:not(.current){margin-bottom:2px}.buddypress-wrap .tabbed-links ol li.current,.buddypress-wrap .tabbed-links ul li.current{border-color:#ccc #ccc #fff;border-style:solid;border-top-left-radius:4px;border-top-right-radius:4px;border-width:1px;margin-bottom:-1px;padding:0 .5em 1px}.buddypress-wrap .tabbed-links ol li.current a,.buddypress-wrap .tabbed-links ul li.current a{background:0 0;color:#333}.buddypress-wrap .bp-subnavs.tabbed-links>ul{margin-top:0}.buddypress-wrap .bp-navs.tabbed-links{background:0 0;margin-top:2px}.buddypress-wrap .bp-navs.tabbed-links ul li a{border-right:0;font-size:inherit}.buddypress-wrap .bp-navs.tabbed-links ul li.last{float:right;margin:0}.buddypress-wrap .bp-navs.tabbed-links ul li.last a{margin-top:-.5em}.buddypress-wrap .bp-navs.tabbed-links ul li a,.buddypress-wrap .bp-navs.tabbed-links ul li a:focus,.buddypress-wrap .bp-navs.tabbed-links ul li a:hover,.buddypress-wrap .bp-navs.tabbed-links ul li.current a,.buddypress-wrap .bp-navs.tabbed-links ul li.current a:focus,.buddypress-wrap .bp-navs.tabbed-links ul li.current a:hover{background:0 0;border:0}.buddypress-wrap .bp-navs.tabbed-links ul li a:active,.buddypress-wrap .bp-navs.tabbed-links ul li.current a:active{outline:0}}.buddypress-wrap .dir-component-filters .filter label{display:inline}.buddypress-wrap .subnav-filters:after,.buddypress-wrap .subnav-filters:before{content:" ";display:table}.buddypress-wrap .subnav-filters:after{clear:both}.buddypress-wrap .subnav-filters{background:0 0;list-style:none;margin:15px 0 0;padding:0}.buddypress-wrap .subnav-filters div{margin:0}.buddypress-wrap .subnav-filters>ul{float:left;list-style:none}.buddypress-wrap .subnav-filters.bp-messages-filters ul{width:100%}.buddypress-wrap .subnav-filters.bp-messages-filters .messages-search{margin-bottom:1em}@media screen and (min-width:46.8em){.buddypress-wrap .subnav-filters.bp-messages-filters .messages-search{margin-bottom:0}}.buddypress-wrap .subnav-filters div{float:none}.buddypress-wrap .subnav-filters div input[type=search],.buddypress-wrap .subnav-filters div select{font-size:16px}.buddypress-wrap .subnav-filters div button.nouveau-search-submit{padding:5px .8em 6px}.buddypress-wrap .subnav-filters div button#user_messages_search_submit{padding:7px .8em}.buddypress-wrap .subnav-filters .component-filters{margin-top:10px}.buddypress-wrap .subnav-filters .feed{margin-right:15px}.buddypress-wrap .subnav-filters .last.filter label{display:inline}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:after,.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:before{content:" ";display:table}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:after{clear:both}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap.bp-show{display:inline-block}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap.bp-hide{display:none}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .select-wrap{border:0}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .select-wrap:focus,.buddypress-wrap .subnav-filters .user-messages-bulk-actions .select-wrap:hover{outline:1px solid #d6d6d6}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions{float:left}.buddypress-wrap .subnav-filters .user-messages-bulk-actions label{display:inline-block;font-weight:300;margin-right:25px;padding:5px 0}.buddypress-wrap .subnav-filters .user-messages-bulk-actions div select{-webkit-appearance:textfield}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-apply{border:0;border-radius:0;font-weight:400;line-height:1.8;margin:0 0 0 10px;padding:3px 5px;text-align:center;text-transform:none;width:auto}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-apply span{vertical-align:middle}@media screen and (min-width:32em){.buddypress-wrap .subnav-filters li{margin-bottom:0}.buddypress-wrap .subnav-filters .bp-search,.buddypress-wrap .subnav-filters .dir-search,.buddypress-wrap .subnav-filters .feed,.buddypress-wrap .subnav-filters .group-act-search,.buddypress-wrap .subnav-filters .group-invites-search,.buddypress-wrap .subnav-filters .subnav-search,.buddypress-wrap .subnav-filters .subnav-search form,.buddypress-wrap .subnav-filters .user-messages-bulk-actions,.buddypress-wrap .subnav-filters .user-messages-search{float:left}.buddypress-wrap .subnav-filters .component-filters,.buddypress-wrap .subnav-filters .last{float:right;margin-top:0;width:auto}.buddypress-wrap .subnav-filters .component-filters select,.buddypress-wrap .subnav-filters .last select{max-width:250px}.buddypress-wrap .subnav-filters .user-messages-search{float:right}}.buddypress-wrap .notifications-options-nav input#notification-bulk-manage{border:0;border-radius:0;line-height:1.6}.buddypress-wrap .group-subnav-filters .group-invites-search{margin-bottom:1em}.buddypress-wrap .group-subnav-filters .last{text-align:center}.buddypress-wrap .bp-pagination{background:0 0;border:0;color:#767676;float:left;font-size:small;margin:0;padding:.5em 0;position:relative;width:100%}.buddypress-wrap .bp-pagination .pag-count{float:left}.buddypress-wrap .bp-pagination .bp-pagination-links{float:right;margin-right:10px}.buddypress-wrap .bp-pagination .bp-pagination-links a,.buddypress-wrap .bp-pagination .bp-pagination-links span{font-size:small;padding:0 5px}.buddypress-wrap .bp-pagination .bp-pagination-links a:focus,.buddypress-wrap .bp-pagination .bp-pagination-links a:hover{opacity:1}.buddypress-wrap .bp-pagination p{margin:0}.bp-list:after,.bp-list:before{content:" ";display:table}.bp-list:after{clear:both}.bp-list{box-sizing:border-box;border-top:1px solid #eaeaea;clear:both;list-style:none;margin:20px 0;padding:.5em 0;width:100%}.bp-list li:after,.bp-list li:before{content:" ";display:table}.bp-list li:after{clear:both}.bp-list>li{border-bottom:1px solid #eaeaea}.bp-list li{list-style:none;margin:10px 0;padding:.5em 0;position:relative}.bp-list li .item-avatar{text-align:center}.bp-list li .item-avatar img.avatar{display:inline-block;width:auto;height:auto}.bp-list li .item .group-details,.bp-list li .item .item-avatar,.bp-list li .item .item-meta,.bp-list li .item .list-title{text-align:center}.bp-list li .item .list-title{clear:none;font-size:22px;font-weight:400;line-height:1.1;margin:0 auto}@media screen and (min-width:46.8em){.bp-list li .item .list-title{font-size:26px}}.bp-list li .item-meta,.bp-list li .meta{color:#737373;font-size:12px;margin-bottom:10px;margin-top:10px}.bp-list li .last-post{text-align:center}.bp-list li .action{margin:0;text-align:center}.bp-list li .action .generic-button{display:inline-block;font-size:12px;margin:0 10px 0 0}.bp-list li .action div.generic-button{margin:10px 0}@media screen and (min-width:46.8em){.bp-list li .item-avatar{float:left;margin-right:5%}.bp-list li .item{margin:0;overflow:hidden}.bp-list li .item .item-block{float:left;margin-right:2%;width:50%}.bp-list li .item .item-meta,.bp-list li .item .list-title{float:left;text-align:left}.bp-list li .item .group-details,.bp-list li .item .last-post{text-align:left}.bp-list li .group-desc,.bp-list li .last-post,.bp-list li .user-update{clear:none;overflow:hidden;width:auto}.bp-list li .action{clear:left;padding:0;text-align:left}.bp-list li .action li.generic-button{margin-right:0}.bp-list li .action div.generic-button{margin:0 0 10px}.bp-list li .generic-button{display:block;margin:0 0 5px 0}}@media screen and (min-width:32em){#activity-stream{clear:both;padding-top:1em}}.activity-list.bp-list{background:#fafafa;border:1px solid #eee}.activity-list.bp-list .activity-item{background:#fff;border:1px solid #b7b7b7;box-shadow:0 0 6px #d2d2d2;margin:20px 0}.activity-list.bp-list li:first-child{margin-top:0}.friends-list{list-style-type:none}.friends-request-list .item-title,.membership-requests-list .item-title{text-align:center}@media screen and (min-width:46.8em){.friends-request-list li,.membership-requests-list li{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row nowrap;flex-flow:row nowrap}.friends-request-list li .item,.membership-requests-list li .item{-moz-flex:1 1 auto;-o-flex:1 1 auto;flex:1 1 auto}.friends-request-list li .action,.membership-requests-list li .action{text-align:right}.friends-request-list li .item-title,.membership-requests-list li .item-title{font-size:22px;text-align:left}.friends-request-list li .item-title h3,.membership-requests-list li .item-title h3{margin:0}}#notifications-user-list{clear:both;padding-top:1em}@media screen and (min-width:46.8em){body:not(.logged-in) .bp-list .item{margin-right:0}}.activity-permalink .item-list,.activity-permalink .item-list li.activity-item{border:0}.activity-update-form{padding:10px 10px 0}.item-body .activity-update-form .activity-form{margin:0;padding:0}.activity-update-form{border:1px solid #ccc;box-shadow:inset 0 0 6px #eee;margin:15px 0}.activity-update-form #whats-new-avatar{margin:10px 0;text-align:center}.activity-update-form #whats-new-avatar img{box-shadow:none;display:inline-block;height:auto;width:auto}.activity-update-form #whats-new-content{padding:0 0 20px 0}.activity-update-form #whats-new-textarea textarea{background:#fff;box-sizing:border-box;color:#333;font-family:inherit;font-size:medium;height:2.2em;line-height:1.4;padding:6px;width:100%}.activity-update-form #whats-new-textarea textarea:focus{box-shadow:0 0 6px 0 #d6d6d6}.activity-update-form #whats-new-post-in-box{margin:10px 0}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items{list-style:none;margin:10px 0;padding-left:0}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li{margin-bottom:10px}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items button.bp-remove-item{margin-left:10px;height:auto}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items #activity-autocomplete{padding:.3em;width:100%}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object{display:flex;align-items:center;padding:.2em}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object .avatar{width:30px;height:30px}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object span{padding-left:10px;vertical-align:middle}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object:focus,.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object:hover{background:#eaeaea;cursor:pointer}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object.selected{border:1px solid #d6d6d6}.activity-update-form #whats-new-submit{margin:15px 0 10px}.activity-update-form #whats-new-submit input{font-size:14px;line-height:inherit;margin-bottom:10px;margin-right:10px;padding:.2em 0;text-align:center;width:100%}@media screen and (min-width:46.8em){.activity-update-form #whats-new-avatar{display:block;float:left;margin:0}.activity-update-form #whats-new-content,.activity-update-form #whats-new-post-in-box,.activity-update-form #whats-new-submit{margin-left:55px}.activity-update-form #whats-new-submit input{margin-bottom:0;margin-right:10px;width:8em}}.activity-list{padding:.5em}.activity-list .activity-item:after,.activity-list .activity-item:before{content:" ";display:table}.activity-list .activity-item:after{clear:both}.activity-list .activity-item{list-style:none;padding:1em}.activity-list .activity-item.has-comments{padding-bottom:1em}.activity-list .activity-item div.item-avatar{margin:0 auto;text-align:center;width:auto}.activity-list .activity-item div.item-avatar img{height:auto;max-width:40%}@media screen and (min-width:46.8em){.activity-list .activity-item div.item-avatar{margin:0 2% 0 0;text-align:left;width:15%}.activity-list .activity-item div.item-avatar img{max-width:80%}}.activity-list .activity-item.mini{font-size:13px;position:relative}.activity-list .activity-item.mini .activity-avatar{margin-left:0;text-align:center;width:auto}.activity-list .activity-item.mini .activity-avatar img.FB_profile_pic,.activity-list .activity-item.mini .activity-avatar img.avatar{max-width:15%}@media screen and (min-width:46.8em){.activity-list .activity-item.mini .activity-avatar{margin-left:15px;text-align:left;width:15%}.activity-list .activity-item.mini .activity-avatar img.FB_profile_pic,.activity-list .activity-item.mini .activity-avatar img.avatar{max-width:60%}}.activity-list .activity-item.new_forum_post .activity-inner,.activity-list .activity-item.new_forum_topic .activity-inner{border-left:2px solid #eaeaea;margin-left:10px;padding-left:1em}.activity-list .activity-item.newest_blogs_activity,.activity-list .activity-item.newest_friends_activity,.activity-list .activity-item.newest_groups_activity,.activity-list .activity-item.newest_mentions_activity{background:rgba(31,179,221,.1)}.activity-list .activity-item .activity-inreplyto{color:#767676;font-size:13px}.activity-list .activity-item .activity-inreplyto>p{display:inline;margin:0}.activity-list .activity-item .activity-inreplyto .activity-inner,.activity-list .activity-item .activity-inreplyto blockquote{background:0 0;border:0;display:inline;margin:0;overflow:hidden;padding:0}.activity-list .activity-item .activity-header{margin:0 auto;width:80%}.activity-list .activity-item .activity-header a,.activity-list .activity-item .activity-header img{display:inline}.activity-list .activity-item .activity-header .avatar{display:inline-block;margin:0 5px;vertical-align:text-top;width:20px;height:20px}.activity-list .activity-item .activity-header .time-since{font-size:14px;color:#767676;text-decoration:none}.activity-list .activity-item .activity-header .time-since:hover{color:#767676;cursor:pointer;text-decoration:underline}.activity-list .activity-item .activity-content .activity-header,.activity-list .activity-item .activity-content .comment-header{color:#767676;margin-bottom:10px}.activity-list .activity-item .activity-content .activity-inner,.activity-list .activity-item .activity-content blockquote{background:#fafafa;margin:15px 0 10px;overflow:hidden;padding:1em}.activity-list .activity-item .activity-content p{margin:0}.activity-list .activity-item .activity-inner p{word-wrap:break-word}.activity-list .activity-item .activity-read-more{margin-left:1em;white-space:nowrap}.activity-list .activity-item ul.activity-meta{margin:0;padding-left:0}.activity-list .activity-item ul.activity-meta li{border:0;display:inline-block}.activity-list .activity-item .activity-meta.action{border:1px solid transparent;background:#fafafa;padding:2px;position:relative;text-align:left}.activity-list .activity-item .activity-meta.action div.generic-button{margin:0}.activity-list .activity-item .activity-meta.action .button{background:0 0;color:#555}.activity-list .activity-item .activity-meta.action a{padding:4px 8px}.activity-list .activity-item .activity-meta.action .button:focus,.activity-list .activity-item .activity-meta.action .button:hover{background:0 0}.activity-list .activity-item .activity-meta.action .button:before,.activity-list .activity-item .activity-meta.action .icons:before{font-family:dashicons;font-size:18px;vertical-align:middle}.activity-list .activity-item .activity-meta.action .acomment-reply.button:before{content:"\f101"}.activity-list .activity-item .activity-meta.action .view:before{content:"\f125"}.activity-list .activity-item .activity-meta.action .fav:before{content:"\f154"}.activity-list .activity-item .activity-meta.action .unfav:before{content:"\f155"}.activity-list .activity-item .activity-meta.action .delete-activity:before{content:"\f153"}.activity-list .activity-item .activity-meta.action .delete-activity:hover{color:#800}.activity-list .activity-item .activity-meta.action .button{border:0;box-shadow:none}.activity-list .activity-item .activity-meta.action .button span{background:0 0;color:#555;font-weight:700}@media screen and (min-width:46.8em){.activity-list.bp-list{padding:30px}.activity-list .activity-item .activity-content{margin:0;position:relative}.activity-list .activity-item .activity-content:after{clear:both;content:"";display:table}.activity-list .activity-item .activity-header{margin:0 15px 0 0;width:auto}}.buddypress-wrap .activity-list .load-more,.buddypress-wrap .activity-list .load-newest{background:#fafafa;border:1px solid #eee;font-size:110%;margin:15px 0;padding:0;text-align:center}.buddypress-wrap .activity-list .load-more a,.buddypress-wrap .activity-list .load-newest a{color:#555;display:block;padding:.5em 0}.buddypress-wrap .activity-list .load-more a:focus,.buddypress-wrap .activity-list .load-more a:hover,.buddypress-wrap .activity-list .load-newest a:focus,.buddypress-wrap .activity-list .load-newest a:hover{background:#fff;color:#333}.buddypress-wrap .activity-list .load-more:focus,.buddypress-wrap .activity-list .load-more:hover,.buddypress-wrap .activity-list .load-newest:focus,.buddypress-wrap .activity-list .load-newest:hover{border-color:#e1e1e1;box-shadow:0 0 6px 0 #eaeaea}body.activity-permalink .activity-list li{border-width:1px;padding:1em 0 0 0}body.activity-permalink .activity-list li:first-child{padding-top:0}body.activity-permalink .activity-list li.has-comments{padding-bottom:0}body.activity-permalink .activity-list .activity-avatar{width:auto}body.activity-permalink .activity-list .activity-avatar a{display:block}body.activity-permalink .activity-list .activity-avatar img{max-width:100%;background-color:#eaeaea}body.activity-permalink .activity-list .activity-content{border:0;font-size:100%;line-height:1.5;padding:0}body.activity-permalink .activity-list .activity-content .activity-header{margin:0;padding:.5em 0 0 0;text-align:center;width:100%}body.activity-permalink .activity-list .activity-content .activity-inner,body.activity-permalink .activity-list .activity-content blockquote{margin-left:0;margin-top:10px}body.activity-permalink .activity-list .activity-meta{margin:10px 0 10px}body.activity-permalink .activity-list .activity-comments{margin-bottom:10px}@media screen and (min-width:46.8em){body.activity-permalink .activity-list .activity-avatar{left:-20px;margin-right:0;position:relative;top:-20px}body.activity-permalink .activity-list .activity-avatar img{box-shadow:0 0 0 8px #fff}body.activity-permalink .activity-list .activity-content{margin-right:10px}body.activity-permalink .activity-list .activity-content .activity-header p{text-align:left}}.buddypress-wrap .activity-comments{clear:both;margin:0 5%;overflow:hidden;position:relative;width:auto}.buddypress-wrap .activity-comments ul{clear:both;list-style:none;margin:15px 0 0;padding:0}.buddypress-wrap .activity-comments ul li{border-top:1px solid #eee;border-bottom:0;padding:1em 0 0}.buddypress-wrap .activity-comments ul li ul{margin-left:5%}.buddypress-wrap .activity-comments ul li:first-child{border-top:0}.buddypress-wrap .activity-comments ul li:last-child{margin-bottom:0}.buddypress-wrap .activity-comments div.acomment-avatar{width:auto}.buddypress-wrap .activity-comments div.acomment-avatar img{border-width:1px;float:left;height:25px;max-width:none;width:25px}.buddypress-wrap .activity-comments .acomment-content p,.buddypress-wrap .activity-comments .acomment-meta{font-size:14px}.buddypress-wrap .activity-comments .acomment-meta{color:#555;overflow:hidden;padding-left:2%}.buddypress-wrap .activity-comments .acomment-content{border-left:1px solid #ccc;margin:15px 0 0 10%;padding:.5em 1em}.buddypress-wrap .activity-comments .acomment-content p{margin-bottom:.5em}.buddypress-wrap .activity-comments .acomment-options{float:left;margin:10px 0 10px 20px}.buddypress-wrap .activity-comments .acomment-options a{color:#767676;font-size:14px}.buddypress-wrap .activity-comments .acomment-options a:focus,.buddypress-wrap .activity-comments .acomment-options a:hover{color:inherit}.buddypress-wrap .activity-comments .activity-meta.action{background:0 0;margin-top:10px}.buddypress-wrap .activity-comments .activity-meta.action button{font-size:14px;font-weight:400;text-transform:none}.buddypress-wrap .activity-comments .show-all button{font-size:14px;text-decoration:underline;padding-left:.5em}.buddypress-wrap .activity-comments .show-all button span{text-decoration:none}.buddypress-wrap .activity-comments .show-all button:focus span,.buddypress-wrap .activity-comments .show-all button:hover span{color:#5087e5}.buddypress-wrap .mini .activity-comments{clear:both;margin-top:0}body.activity-permalink .activity-comments{background:0 0;width:auto}body.activity-permalink .activity-comments>ul{padding:0 .5em 0 1em}body.activity-permalink .activity-comments ul li>ul{margin-top:10px}form.ac-form{display:none;padding:1em}form.ac-form .ac-reply-avatar{float:left}form.ac-form .ac-reply-avatar img{border:1px solid #eee}form.ac-form .ac-reply-content{color:#767676;padding-left:1em}form.ac-form .ac-reply-content a{text-decoration:none}form.ac-form .ac-reply-content .ac-textarea{margin-bottom:15px;padding:0 .5em;overflow:hidden}form.ac-form .ac-reply-content .ac-textarea textarea{background:0 0;box-shadow:none;color:#555;font-family:inherit;font-size:100%;height:60px;margin:0;outline:0;padding:.5em;width:100%}form.ac-form .ac-reply-content .ac-textarea textarea:focus{box-shadow:0 0 6px #d6d6d6}form.ac-form .ac-reply-content input{margin-top:10px}.activity-comments li form.ac-form{clear:both;margin-right:15px}.activity-comments form.root{margin-left:0}@media screen and (min-width:46.8em){.buddypress-wrap .blogs-list li .item-block{float:none;width:auto}.buddypress-wrap .blogs-list li .item-meta{clear:left;float:none}}@media screen and (min-width:46.8em){.buddypress-wrap .bp-dir-vert-nav .blogs-list .list-title{width:auto}}.buddypress-wrap .groups-list li .list-title{text-align:center}.buddypress-wrap .groups-list li .group-details{clear:left}.buddypress-wrap .groups-list li .group-desc{border:1px solid #eaeaea;border-radius:10px;background-clip:padding-box;font-size:13px;color:#737373;font-style:italic;margin:10px auto 0;padding:1em}@media screen and (min-width:46.8em){.buddypress-wrap .groups-list li .group-desc{font-size:16px}}.buddypress-wrap .groups-list li p{margin:0 0 .5em}@media screen and (min-width:46.8em){.buddypress-wrap .groups-list li .item{margin-right:0}.buddypress-wrap .groups-list li .item-meta,.buddypress-wrap .groups-list li .list-title{text-align:left;width:auto}.buddypress-wrap .groups-list li .item-meta{margin-bottom:20px}.buddypress-wrap .groups-list li .last-activity{clear:left;margin-top:-20px}}.buddypress-wrap .groups-list li.group-no-avatar div.group-desc{margin-left:0}.buddypress-wrap .mygroups .groups-list.grid .wrap{min-height:450px;padding-bottom:0}@media screen and (min-width:46.8em){.buddypress-wrap .groups-list.grid.four .group-desc,.buddypress-wrap .groups-list.grid.three .group-desc{font-size:14px}}@media screen and (min-width:46.8em){.buddypress .bp-vertical-navs .groups-list .item-avatar{margin-right:3%;width:15%}}.buddypress-wrap .members-list li .member-name{margin-bottom:10px}.buddypress-wrap .members-list li .item-extra-content{clear:both;font-size:14px}.buddypress-wrap .members-list li .user-update{border:1px solid #eaeaea;border-radius:10px;background-clip:padding-box;color:#737373;font-style:italic;font-size:13px;margin:15px auto;padding:1em}@media screen and (min-width:46.8em){.buddypress-wrap .members-list li .user-update{font-size:16px}}.buddypress-wrap .members-list li .user-update .activity-read-more{display:block;font-size:12px;font-style:normal;margin-top:10px;padding-left:2px}@media screen and (min-width:46.8em){.buddypress-wrap .members-list li .last-activity{clear:left;margin-top:-10px}}@media screen and (min-width:46.8em){.buddypress-wrap .members-group-list li .joined{clear:left;float:none}}@media screen and (min-width:32em){body:not(.logged-in) .members-list .user-update{width:96%}}.register-page .register-section{box-sizing:border-box}.register-page .signup-form{margin-top:20px}.register-page .signup-form .default-profile input{margin-bottom:20px}.register-page .signup-form label,.register-page .signup-form legend{margin:10px 0 0}.register-page .signup-form .editfield{margin:15px 0}.register-page .signup-form .editfield fieldset{border:0;padding:0}.register-page .signup-form .editfield fieldset legend{margin:0 0 5px;text-indent:0}.register-page .signup-form .editfield .field-visibility-settings{padding:.5em}.register-page .signup-form .editfield .field-visibility-settings fieldset{margin:0 0 10px}.register-page .signup-form #signup-avatar img{margin:0 15px 10px 0}.register-page .signup-form .wp-pwd button{vertical-align:middle}.register-page .signup-form #pass-strength-result,.register-page .signup-form #pass1,.register-page .signup-form #pass1-text{width:10em}.register-page .signup-form #pass1{display:inline-block;margin-bottom:inherit}.register-page .signup-form #pass1-text,.register-page .signup-form .pw-weak{display:none}.register-page .signup-form .show-password #pass1-text{display:inline-block;margin-bottom:inherit}.register-page .signup-form .show-password #pass1{display:none}.register-page .signup-form .description.indicator-hint{font-size:14px}.register-page .signup-form #submit:disabled{color:#767676;opacity:.4}.register-page .signup-form .password-entry,.register-page .signup-form .password-entry-confirm{border:1px solid #eee}body.buddypress.register.js .user-pass2-wrap{display:none}body.buddypress.register.no-js .wp-hide-pw{display:none}@media screen and (min-width:46.8em){.buddypress-wrap .register-page .layout-wrap{display:flex;flex-flow:row wrap;justify-content:space-around}.buddypress-wrap .register-page .layout-wrap .default-profile{flex:1;padding-right:2em}.buddypress-wrap .register-page .layout-wrap .blog-details{flex:1;padding-left:2em}.buddypress-wrap .register-page .submit{clear:both}}@media screen and (min-width:46.8em){.buddypress-wrap.extended-default-reg .register-page .default-profile{min-width:14em;flex:1;padding-right:1em}.buddypress-wrap.extended-default-reg .register-page .extended-profile{flex:2;padding-left:1em}.buddypress-wrap.extended-default-reg .register-page .blog-details{flex:1 100%}}#group-create-body{padding:.5em}#group-create-body .creation-step-name{text-align:center}#group-create-body img.avatar{width:auto;height:auto}#group-create-body .avatar-nav-items{margin-top:15px}.single-headers:after,.single-headers:before{content:" ";display:table}.single-headers:after{clear:both}.single-headers{margin-bottom:15px}.single-headers #item-header-avatar a{display:block;text-align:center}.single-headers #item-header-avatar a img{float:none;width:auto;height:auto}.single-headers div#item-header-content{float:none}@media screen and (min-width:46.8em){.single-headers #item-header-avatar a{text-align:left}.single-headers #item-header-avatar a img{float:left}.single-headers #item-header-content{padding-left:2em}}.single-headers .activity,.single-headers .group-status{display:inline}.single-headers .group-status{font-size:18px;color:#333;padding-right:1em}.single-headers .activity{display:inline-block;font-size:12px;padding:0}.single-headers #sitewide-notice p,.single-headers div#message p{background-color:#ffd;border:1px solid #cb2;color:#440;font-weight:400;margin-top:3px;text-decoration:none}.single-headers h2{line-height:1.2;margin:0 0 5px}.single-headers h2 a{color:#767676;text-decoration:none}.single-headers h2 span.highlight{display:inline-block;font-size:60%;font-weight:400;line-height:1.7;vertical-align:middle}.single-headers h2 span.highlight span{background:#a1dcfa;color:#fff;cursor:pointer;font-size:80%;font-weight:700;margin-bottom:2px;padding:1px 4px;position:relative;right:-2px;top:-2px;vertical-align:middle}.single-headers img.avatar{float:left;margin:0 15px 19px 0}.single-headers .item-meta{color:#767676;font-size:14px;margin:15px 0 5px;padding-bottom:.5em}.single-headers ul{margin-bottom:15px}.single-headers ul li{float:right;list-style:none}.single-headers div.generic-button{text-align:center}.single-headers li.generic-button{display:inline-block;text-align:center}@media screen and (min-width:46.8em){.single-headers a.button,.single-headers div.generic-button,.single-headers li.generic-button{float:left}}.single-headers a.button,.single-headers div.generic-button{margin:10px 10px 0 0}.single-headers li.generic-button{margin:2px 10px}.single-headers li.generic-button:first-child{margin-left:0}.single-headers div#message.info{line-height:.8}body.no-js .single-item-header .js-self-profile-button{display:none}#cover-image-container{position:relative}#header-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;left:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1}#item-header-cover-image{position:relative;z-index:2}#item-header-cover-image #item-header-avatar{padding:0 1em}.groups-header .bp-group-type-list{margin:0}.groups-header .bp-feedback{clear:both}.groups-header .group-item-actions{float:left;margin:0 0 15px 15px;padding-top:0;width:100%}.groups-header .moderators-lists{margin-top:0}.groups-header .moderators-lists .moderators-title{font-size:14px}.groups-header .moderators-lists .user-list{margin:0 0 5px}.groups-header .moderators-lists .user-list ul:after{clear:both;content:"";display:table}.groups-header .moderators-lists .user-list li{display:inline-block;float:none;margin-left:4px;padding:4px}.groups-header .moderators-lists img.avatar{box-shadow:none;float:none;height:30px;margin:0;max-width:100%;width:30px}@media screen and (min-width:46.8em){.groups-header div#item-header-content{float:left;margin-left:10%;text-align:left;padding-top:15px;width:42%}.groups-header .group-item-actions{float:right;margin:0 0 15px 15px;text-align:right;width:20%}.groups-header .groups-meta{clear:both}}.groups-header .desc-wrap{background:#eaeaea;border:1px solid #d6d6d6;margin:0 0 15px;padding:1em;text-align:center}.groups-header .desc-wrap .group-description{background:#fafafa;box-shadow:inset 0 0 9px #ccc;padding:1em;text-align:left}.groups-header .desc-wrap .group-description p{margin:0;padding:0}.bp-user .users-header .user-nicename{margin-bottom:5px}.bp-user .member-header-actions{overflow:hidden}.bp-user .member-header-actions *>*{display:block}.buddypress-wrap .item-body{margin:20px 0}.buddypress-wrap .item-body .screen-heading{font-size:20px;font-weight:400}.buddypress-wrap .item-body .button-tabs{margin:30px 0 15px;list-style:none}.buddypress-wrap.bp-single-vert-nav .bp-list:not(.grid) .item-entry{padding-left:.5em}.single-item.group-members .item-body .filters:not(.no-subnav){border-top:5px solid #eaeaea;padding-top:1em}.single-item.group-members .item-body .filters{margin-top:0}.buddypress-wrap .group-status-type ul{margin:0 0 20px 20px}.groups-manage-members-list{padding:.5em 0}.groups-manage-members-list dd{margin:0;padding:1em 0}.groups-manage-members-list .section-title{background:#eaeaea;padding-left:.3em}.groups-manage-members-list ul{list-style:none;margin-bottom:0}.groups-manage-members-list ul li{border-bottom:1px solid #eee;margin-bottom:10px;padding:.5em .3em .3em}.groups-manage-members-list ul li:last-child,.groups-manage-members-list ul li:only-child{border-bottom:0}.groups-manage-members-list ul li:nth-child(even){background:#fafafa}.groups-manage-members-list ul li.banned-user{background:#fad3d3}.groups-manage-members-list ul .member-name{margin-bottom:0;text-align:center}.groups-manage-members-list ul img{display:block;margin:0 auto;width:20%}@media screen and (min-width:32em){.groups-manage-members-list ul .member-name{text-align:left}.groups-manage-members-list ul img{display:inline;width:50px}}.groups-manage-members-list ul .members-manage-buttons:after,.groups-manage-members-list ul .members-manage-buttons:before{content:" ";display:table}.groups-manage-members-list ul .members-manage-buttons:after{clear:both}.groups-manage-members-list ul .members-manage-buttons{margin:15px 0 5px}.groups-manage-members-list ul .members-manage-buttons a.button{color:#767676;display:block;font-size:13px}@media screen and (min-width:32em){.groups-manage-members-list ul .members-manage-buttons a.button{display:inline-block}}.groups-manage-members-list ul .members-manage-buttons.text-links-list{margin-bottom:0}@media screen and (max-width:32em){.groups-manage-members-list ul .members-manage-buttons.text-links-list a.button{background:#fafafa;border:1px solid #eee;display:block;margin-bottom:10px}}.groups-manage-members-list ul .action:not(.text-links-list) a.button{font-size:12px}@media screen and (min-width:46.8em){.groups-manage-members-list ul li .avatar,.groups-manage-members-list ul li .member-name{float:left}.groups-manage-members-list ul li .avatar{margin-right:15px}.groups-manage-members-list ul li .action{clear:both;float:left}}#group-manage-members-ui #group-members-search-form button[type=submit]{float:right;font-size:inherit;font-weight:400;line-height:1.5;text-align:center;text-transform:none}#group-manage-members-ui #group-members-search-form button[type=submit] span{font-family:dashicons;font-size:18px;line-height:1.6}#group-manage-members-ui #group-members-pagination button:last-child{margin-right:2em}#group-manage-members-ui #bp-no-group-members td{border:none}.buddypress .bp-invites-content ul.item-list{border-top:0}.buddypress .bp-invites-content ul.item-list li{border:1px solid #eaeaea;margin:0 0 1%;padding-left:5px;padding-right:5px;position:relative;width:auto}.buddypress .bp-invites-content ul.item-list li .list-title{margin:0 auto;width:80%}.buddypress .bp-invites-content ul.item-list li .action{position:absolute;top:10px;right:10px}.buddypress .bp-invites-content ul.item-list li .action a.button.invite-button{border:0}.buddypress .bp-invites-content ul.item-list li .action a.button.invite-button:focus,.buddypress .bp-invites-content ul.item-list li .action a.button.invite-button:hover{color:#1fb3dd}.buddypress .bp-invites-content ul.item-list li.selected{box-shadow:inset 0 0 12px 0 rgba(237,187,52,.2)}.buddypress .bp-invites-content .group-inviters li,.buddypress .bp-invites-content .item-list .item-meta span{color:#767676}.buddypress .bp-invites-content li ul.group-inviters{clear:both;margin:0}.buddypress .bp-invites-content li ul.group-inviters li{border:0;float:left;font-size:20px;width:inherit}.buddypress .bp-invites-content li .status{font-size:20px;font-style:italic;clear:both;color:#555;margin:10px 0}.buddypress .bp-invites-content #send-invites-editor ul:after,.buddypress .bp-invites-content #send-invites-editor ul:before{content:" ";display:table}.buddypress .bp-invites-content #send-invites-editor ul:after{clear:both}.buddypress .bp-invites-content #send-invites-editor textarea{width:100%}.buddypress .bp-invites-content #send-invites-editor ul{clear:both;list-style:none;margin:10px 0}.buddypress .bp-invites-content #send-invites-editor ul li{float:left;margin:.5%;max-height:50px;max-width:50px}.buddypress .bp-invites-content #send-invites-editor #bp-send-invites-form{clear:both;margin-top:10px}.buddypress .bp-invites-content #send-invites-editor .action{margin-top:10px;padding-top:10px}.buddypress .bp-invites-content #send-invites-editor.bp-hide{display:none}@media screen and (min-width:46.8em){.buddypress .bp-invites-content ul.item-list>li{box-sizing:border-box;border:1px solid #eaeaea;float:left;padding-left:.5em;padding-right:.5em;width:49.5%}.buddypress .bp-invites-content ul.item-list>li:nth-child(odd){margin-right:.5%}.buddypress .bp-invites-content ul.item-list>li:nth-child(even){margin-left:.5%}.buddypress .bp-invites-content ul.item-list ul.group-inviters{float:left;width:auto}}@media screen and (min-width:46.8em){:not(.vertical)+.item-body #group-invites-container{display:-ms-grid;display:grid;-ms-grid-columns:25% auto;grid-template-columns:25% auto;grid-template-areas:"group-invites-nav group-invites-column"}:not(.vertical)+.item-body #group-invites-container .bp-invites-nav{-ms-grid-row:1;-ms-grid-column:1;grid-area:group-invites-nav}:not(.vertical)+.item-body #group-invites-container .bp-invites-nav li{display:block;float:none}:not(.vertical)+.item-body #group-invites-container .group-invites-column{-ms-grid-row:1;-ms-grid-column:2;grid-area:group-invites-column}}.buddypress.groups .activity-update-form{margin-top:0}.buddypress-wrap .profile{margin-top:30px}.buddypress-wrap .public .profile-fields td.label{width:30%}.buddypress-wrap .profile.edit ul.button-nav{list-style:none;margin:30px 0 10px;padding-left:0}.buddypress-wrap .profile.edit ul.button-nav li{display:inline-block;margin-right:10px}.buddypress-wrap .profile.edit ul.button-nav li a{padding:.5em}.buddypress-wrap .profile.edit .editfield{background:#fafafa;border:1px solid #eee;margin:15px 0;padding:1em}.buddypress-wrap .profile.edit .editfield fieldset{border:0}.buddypress-wrap .profile.edit .editfield fieldset label{font-weight:400}.buddypress-wrap .profile.edit .editfield fieldset label.xprofile-field-label{display:inline}.buddypress-wrap .profile.edit .editfield{display:flex;flex-direction:column}.buddypress-wrap .profile.edit .editfield .description{margin-top:10px;order:2}.buddypress-wrap .profile.edit .editfield>fieldset{order:1}.buddypress-wrap .profile.edit .editfield .field-visibility-settings,.buddypress-wrap .profile.edit .editfield .field-visibility-settings-toggle{order:3}body.no-js .buddypress-wrap .field-visibility-settings-close,body.no-js .buddypress-wrap .field-visibility-settings-toggle{display:none}body.no-js .buddypress-wrap .field-visibility-settings{display:block}.buddypress-wrap .field-visibility-settings{margin:10px 0}.buddypress-wrap .current-visibility-level{font-style:normal;font-weight:700}.buddypress-wrap .field-visibility-settings,.buddypress-wrap .field-visibility-settings-header{color:#737373}.buddypress-wrap .field-visibility-settings fieldset{margin:5px 0}.buddypress-wrap .standard-form .editfield fieldset{margin:0}.buddypress-wrap .standard-form .field-visibility-settings label{font-weight:400;margin:0}.buddypress-wrap .standard-form .field-visibility-settings .radio{list-style:none;margin-bottom:0}.buddypress-wrap .standard-form .field-visibility-settings .field-visibility-settings-close{font-size:12px}.buddypress-wrap .standard-form .wp-editor-container{border:1px solid #dedede}.buddypress-wrap .standard-form .wp-editor-container textarea{background:#fff;width:100%}.buddypress-wrap .standard-form .description{background:#fafafa;font-size:inherit}.buddypress-wrap .standard-form .field-visibility-settings legend,.buddypress-wrap .standard-form .field-visibility-settings-header{font-style:italic}.buddypress-wrap .standard-form .field-visibility-settings-header{font-size:14px}.buddypress-wrap .standard-form .field-visibility-settings label,.buddypress-wrap .standard-form .field-visibility-settings legend{font-size:14px}.buddypress-wrap .standard-form .field-visibility select{margin:0}.buddypress-wrap .html-active button.switch-html{background:#f5f5f5;border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.buddypress-wrap .tmce-active button.switch-tmce{background:#f5f5f5;border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.buddypress-wrap .profile.public .profile-group-title{border-bottom:1px solid #ccc}body.register .buddypress-wrap .page ul{list-style:none}.buddypress-wrap .profile .bp-avatar-nav{margin-top:20px}.message-action-delete:before,.message-action-star:before,.message-action-unstar:before,.message-action-view:before{font-family:dashicons;font-size:18px}.message-action-star:before{color:#aaa;content:"\f154"}.message-action-unstar:before{color:#fcdd77;content:"\f155"}.message-action-view:before{content:"\f473"}.message-action-delete:before{content:"\f153"}.message-action-delete:hover:before{color:#a00}.preview-content .actions a{text-decoration:none}.bp-messages-content{margin:15px 0}.bp-messages-content .avatar{box-shadow:none}.bp-messages-content .thread-participants{list-style:none}.bp-messages-content .thread-participants dd{margin-left:0}.bp-messages-content time{color:#737373;font-size:12px}#message-threads{border-top:1px solid #eaeaea;clear:both;list-style:none;margin:0;max-height:220px;overflow-x:hidden;overflow-y:auto;padding:0;width:100%}#message-threads li{border-bottom:1px solid #eaeaea;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row nowrap;flex-flow:row nowrap;margin:0;overflow:hidden;padding:.5em 0}#message-threads li .thread-cb{display:flex;align-items:center;-moz-flex:1 2 5%;-o-flex:1 2 5%;flex:1 2 5%}#message-threads li .thread-from,#message-threads li .thread-to{-moz-flex:1 2 20%;-o-flex:1 2 20%;flex:1 2 20%}#message-threads li .thread-from img.avatar,#message-threads li .thread-to img.avatar{float:left;margin:0 10px 0 0}#message-threads li .thread-from .user-name,#message-threads li .thread-to .user-name{display:inline-block;line-height:1.1}#message-threads li .thread-from .num-recipients,#message-threads li .thread-to .num-recipients{color:#737373;font-weight:400;font-size:12px;margin:0}#message-threads li .thread-content{-moz-flex:1 2 60%;-o-flex:1 2 60%;flex:1 2 60%}#message-threads li .thread-date{-moz-flex:1 2 15%;-o-flex:1 2 15%;flex:1 2 15%}#message-threads li.selected{background-color:#fafafa}#message-threads li.selected .thread-subject .subject{color:#5087e5}#message-threads li.unread{font-weight:700}#message-threads li .thread-content .excerpt{color:#737373;font-size:12px;margin:0}#message-threads li .thread-content .thread-from,#message-threads li .thread-content .thread-subject,#message-threads li .thread-content .thread-to{font-size:13px}@media screen and (min-width:46.8em){#message-threads li .thread-content .thread-from,#message-threads li .thread-content .thread-subject,#message-threads li .thread-content .thread-to{font-size:16px}}#message-threads li .thread-content .thread-subject{vertical-align:top}#message-threads li .thread-content .thread-subject .excerpt{font-weight:400}#message-threads li .thread-date{padding-right:5px;text-align:right}.bp-messages-content .actions{float:right;max-width:30%;line-height:1}.bp-messages-content .actions .bp-icons:not(.bp-hide){display:inline-block;margin:0;padding:.3em .5em}.bp-messages-content .actions .bp-icons:not(.bp-hide):before{font-size:26px}.bp-messages-content #thread-preview{border:1px solid #eaeaea;margin-top:20px}.bp-messages-content #thread-preview .preview-message{overflow:hidden}.bp-messages-content #thread-preview .preview-content{margin:.5em}.bp-messages-content #thread-preview .preview-content .preview-message{background:#fafafa;margin:10px 0;padding:1em .3em .3em}.bp-messages-content #bp-message-thread-list{border-top:1px solid #eaeaea;clear:both;list-style:none;padding:1em 0 .3em}.bp-messages-content #bp-message-thread-list li{padding:.5em}.bp-messages-content #bp-message-thread-list li:nth-child(2n) .message-content{background:#fafafa}.bp-messages-content #bp-message-thread-list .message-metadata{border-bottom:1px solid #ccc;box-shadow:-2px 1px 9px 0 #eee;display:table;padding:.2em;width:100%}.bp-messages-content #bp-message-thread-list .message-metadata .avatar{width:30px}.bp-messages-content #bp-message-thread-list .message-metadata .user-link{display:block;font-size:13px;float:left}@media screen and (min-width:46.8em){.bp-messages-content #bp-message-thread-list .message-metadata .user-link{font-size:16px}}.bp-messages-content #bp-message-thread-list .message-metadata time{color:#737373;font-size:12px;padding:0 .5em}.bp-messages-content #bp-message-thread-list .message-metadata button{padding:0 .3em}.bp-messages-content #bp-message-thread-list .message-metadata button:before{font-size:20px}.bp-messages-content #bp-message-thread-list .message-content{overflow:hidden;margin:1em auto 0;width:90%}.bp-messages-content #bp-message-thread-list img.avatar{float:left;margin:0 10px 0 0}.bp-messages-content #bp-message-thread-list .actions a:before{font-size:18px}.bp-messages-content form.send-reply .avatar-box{padding:.5em 0}.bp-messages-content .preview-pane-header,.bp-messages-content .single-message-thread-header{border-bottom:1px solid #eaeaea}.bp-messages-content .preview-pane-header:after,.bp-messages-content .single-message-thread-header:after{clear:both;content:"";display:table}.bp-messages-content .preview-thread-title,.bp-messages-content .single-thread-title{font-size:16px}.bp-messages-content .preview-thread-title .messages-title,.bp-messages-content .single-thread-title .messages-title{padding-left:2em}.bp-messages-content .thread-participants{float:left;margin:5px 0;width:70%}.bp-messages-content .thread-participants dd,.bp-messages-content .thread-participants ul{margin-bottom:10px}.bp-messages-content .thread-participants ul{list-style:none}.bp-messages-content .thread-participants ul:after{clear:both;content:"";display:table}.bp-messages-content .thread-participants li{float:left;margin-left:5px}.bp-messages-content .thread-participants img{width:30px;height:30px}.bp-messages-content #bp-message-thread-list li .message-content blockquote,.bp-messages-content #bp-message-thread-list li .message-content ol,.bp-messages-content #bp-message-thread-list li .message-content ul,.bp-messages-content #thread-preview .preview-message blockquote,.bp-messages-content #thread-preview .preview-message ol,.bp-messages-content #thread-preview .preview-message ul{list-style-position:inside;margin-left:0}.bp-messages-content #thread-preview:empty,.bp-messages-content ul#message-threads:empty{display:none}.bp-messages-content #bp-message-thread-header h2:first-child,.bp-messages-content #thread-preview h2:first-child{background-color:#eaeaea;color:#555;font-weight:700;margin:0;padding:.5em}.bp-messages-content #bp-message-thread-list li a.user-link,.bp-messages-content #message-threads .thread-content a{border:0;text-decoration:none}.bp-messages-content .standard-form #subject{margin-bottom:20px}div.bp-navs#subsubnav.bp-messages-filters .user-messages-bulk-actions{margin-right:15px;max-width:42.5%}.buddypress.settings .profile-settings.bp-tables-user select{width:100%}body.buddypress.settings .wp-pwd button{vertical-align:middle}body.buddypress.settings #pass-strength-result,body.buddypress.settings #pass1,body.buddypress.settings #pass1-text{width:16em}body.buddypress.settings #pass1{display:inline-block;margin-bottom:inherit}body.buddypress.settings #pass-strength-result,body.buddypress.settings #pass1-text,body.buddypress.settings .pw-weak{display:none}body.buddypress.settings .show-password #pass1-text{display:inline-block;margin-bottom:inherit}body.buddypress.settings .show-password #pass1{display:none}body.buddypress.settings #your-profile #submit:disabled{color:#767676;opacity:.4}body.buddypress.settings.js .user-pass2-wrap,body.buddypress.settings.js .wp-pwd{display:none}body.buddypress.settings.no-js .wp-cancel-pw,body.buddypress.settings.no-js .wp-generate-pw,body.buddypress.settings.no-js .wp-hide-pw{display:none}body.buddypress.settings.data #buddypress.buddypress-wrap .item-body p a{text-decoration:underline}.buddypress-wrap #whats-new-post-in-box select,.buddypress-wrap .filter select{border:1px solid #d6d6d6}.buddypress-wrap input.action[disabled]{cursor:pointer;opacity:.4}.buddypress-wrap #notification-bulk-manage[disabled]{display:none}.buddypress-wrap fieldset legend{font-size:inherit;font-weight:600}.buddypress-wrap input[type=email]:focus,.buddypress-wrap input[type=password]:focus,.buddypress-wrap input[type=tel]:focus,.buddypress-wrap input[type=text]:focus,.buddypress-wrap input[type=url]:focus,.buddypress-wrap textarea:focus{box-shadow:0 0 8px #eaeaea}.buddypress-wrap select{height:auto}.buddypress-wrap textarea{resize:vertical}.buddypress-wrap .standard-form .bp-controls-wrap{margin:1em 0}.buddypress-wrap .standard-form .groups-members-search input[type=search],.buddypress-wrap .standard-form .groups-members-search input[type=text],.buddypress-wrap .standard-form [data-bp-search] input[type=search],.buddypress-wrap .standard-form [data-bp-search] input[type=text],.buddypress-wrap .standard-form input[type=color],.buddypress-wrap .standard-form input[type=date],.buddypress-wrap .standard-form input[type=datetime-local],.buddypress-wrap .standard-form input[type=datetime],.buddypress-wrap .standard-form input[type=email],.buddypress-wrap .standard-form input[type=month],.buddypress-wrap .standard-form input[type=number],.buddypress-wrap .standard-form input[type=password],.buddypress-wrap .standard-form input[type=range],.buddypress-wrap .standard-form input[type=search],.buddypress-wrap .standard-form input[type=tel],.buddypress-wrap .standard-form input[type=text],.buddypress-wrap .standard-form input[type=time],.buddypress-wrap .standard-form input[type=url],.buddypress-wrap .standard-form input[type=week],.buddypress-wrap .standard-form select,.buddypress-wrap .standard-form textarea{background:#fafafa;border:1px solid #d6d6d6;border-radius:0;font:inherit;font-size:100%;padding:.5em}.buddypress-wrap .standard-form input[required],.buddypress-wrap .standard-form select[required],.buddypress-wrap .standard-form textarea[required]{box-shadow:none;border-width:2px;outline:0}.buddypress-wrap .standard-form input[required]:invalid,.buddypress-wrap .standard-form select[required]:invalid,.buddypress-wrap .standard-form textarea[required]:invalid{border-color:#b71717}.buddypress-wrap .standard-form input[required]:valid,.buddypress-wrap .standard-form select[required]:valid,.buddypress-wrap .standard-form textarea[required]:valid{border-color:#91cc2c}.buddypress-wrap .standard-form input[required]:focus,.buddypress-wrap .standard-form select[required]:focus,.buddypress-wrap .standard-form textarea[required]:focus{border-color:#d6d6d6;border-width:1px}.buddypress-wrap .standard-form input.invalid[required],.buddypress-wrap .standard-form select.invalid[required],.buddypress-wrap .standard-form textarea.invalid[required]{border-color:#b71717}.buddypress-wrap .standard-form input:not(.small),.buddypress-wrap .standard-form textarea{width:100%}.buddypress-wrap .standard-form input[type=checkbox],.buddypress-wrap .standard-form input[type=radio]{margin-right:5px;width:auto}.buddypress-wrap .standard-form select{padding:3px}.buddypress-wrap .standard-form textarea{height:120px}.buddypress-wrap .standard-form textarea#message_content{height:200px}.buddypress-wrap .standard-form input[type=password]{margin-bottom:5px}.buddypress-wrap .standard-form input:focus,.buddypress-wrap .standard-form select:focus,.buddypress-wrap .standard-form textarea:focus{background:#fafafa;color:#555;outline:0}.buddypress-wrap .standard-form label,.buddypress-wrap .standard-form span.label{display:block;font-weight:600;margin:15px 0 5px;width:auto}.buddypress-wrap .standard-form a.clear-value{display:block;margin-top:5px;outline:0}.buddypress-wrap .standard-form .submit{clear:both;padding:15px 0 0}.buddypress-wrap .standard-form p.submit{margin-bottom:0}.buddypress-wrap .standard-form div.submit input{margin-right:15px}.buddypress-wrap .standard-form #invite-list label,.buddypress-wrap .standard-form p label{font-weight:400;margin:auto}.buddypress-wrap .standard-form p.description{color:#737373;margin:5px 0}.buddypress-wrap .standard-form div.checkbox label:nth-child(n+2),.buddypress-wrap .standard-form div.radio div label{color:#737373;font-size:100%;font-weight:400;margin:5px 0 0}.buddypress-wrap .standard-form#send-reply textarea{width:97.5%}.buddypress-wrap .standard-form#sidebar-login-form label{margin-top:5px}.buddypress-wrap .standard-form#sidebar-login-form input[type=password],.buddypress-wrap .standard-form#sidebar-login-form input[type=text]{padding:4px;width:95%}.buddypress-wrap .standard-form.profile-edit input:focus{background:#fff}@media screen and (min-width:46.8em){.buddypress-wrap .standard-form .left-menu{float:left}.buddypress-wrap .standard-form #invite-list ul{list-style:none;margin:1%}.buddypress-wrap .standard-form #invite-list ul li{margin:0 0 0 1%}.buddypress-wrap .standard-form .main-column{margin-left:190px}.buddypress-wrap .standard-form .main-column ul#friend-list{clear:none;float:left}.buddypress-wrap .standard-form .main-column ul#friend-list h4{clear:none}}.buddypress-wrap .standard-form .bp-tables-user label{margin:0}.buddypress-wrap .signup-form label,.buddypress-wrap .signup-form legend{font-weight:400}body.no-js .buddypress #delete_inbox_messages,body.no-js .buddypress #delete_sentbox_messages,body.no-js .buddypress #message-type-select,body.no-js .buddypress #messages-bulk-management #select-all-messages,body.no-js .buddypress #notifications-bulk-management #select-all-notifications,body.no-js .buddypress label[for=message-type-select]{display:none}.buddypress-wrap .wp-editor-wrap .wp-editor-wrap button,.buddypress-wrap .wp-editor-wrap .wp-editor-wrap input[type=button],.buddypress-wrap .wp-editor-wrap .wp-editor-wrap input[type=submit],.buddypress-wrap .wp-editor-wrap a.button,.buddypress-wrap .wp-editor-wrap input[type=reset]{padding:0 8px 1px}.buddypress-wrap .select-wrap{border:1px solid #eee}.buddypress-wrap .select-wrap label{display:inline}.buddypress-wrap .select-wrap select::-ms-expand{display:none}.buddypress-wrap .select-wrap select{-moz-appearance:none;-webkit-appearance:none;-o-appearance:none;appearance:none;border:0;cursor:pointer;margin-right:-25px;padding:6px 25px 6px 10px;position:relative;text-indent:-2px;z-index:1;width:auto}.buddypress-wrap .select-wrap select,.buddypress-wrap .select-wrap select:active,.buddypress-wrap .select-wrap select:focus{background:0 0}.buddypress-wrap .select-wrap span.select-arrow{display:inline-block;position:relative;z-index:0}.buddypress-wrap .select-wrap span.select-arrow:before{color:#ccc;content:"\25BC"}.buddypress-wrap .select-wrap:focus .select-arrow:before,.buddypress-wrap .select-wrap:hover .select-arrow:before{color:#a6a6a6}.buddypress-wrap .bp-search form:focus,.buddypress-wrap .bp-search form:hover,.buddypress-wrap .select-wrap:focus,.buddypress-wrap .select-wrap:hover{border:1px solid #d5d4d4;box-shadow:inset 0 0 3px #eee}@media screen and (min-width:32em){.buddypress-wrap .notifications-options-nav .select-wrap{float:left}}.buddypress-wrap .bp-dir-search-form,.buddypress-wrap .bp-messages-search-form:after,.buddypress-wrap .bp-messages-search-form:before{content:" ";display:table}.buddypress-wrap .bp-dir-search-form,.buddypress-wrap .bp-messages-search-form:after{clear:both}.buddypress-wrap form#group-members-search,.buddypress-wrap form.bp-dir-search-form,.buddypress-wrap form.bp-messages-search-form,.buddypress-wrap form[data-bp-search].bp-invites-search-form{border:1px solid #eee;width:100%}.buddypress-wrap form#group-members-search label,.buddypress-wrap form.bp-dir-search-form label,.buddypress-wrap form.bp-messages-search-form label,.buddypress-wrap form[data-bp-search].bp-invites-search-form label{margin:0}.buddypress-wrap form#group-members-search button[type=submit],.buddypress-wrap form#group-members-search input[type=search],.buddypress-wrap form#group-members-search input[type=text],.buddypress-wrap form.bp-dir-search-form button[type=submit],.buddypress-wrap form.bp-dir-search-form input[type=search],.buddypress-wrap form.bp-dir-search-form input[type=text],.buddypress-wrap form.bp-messages-search-form button[type=submit],.buddypress-wrap form.bp-messages-search-form input[type=search],.buddypress-wrap form.bp-messages-search-form input[type=text],.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=text]{background:0 0;border:0;border-radius:0;background-clip:padding-box}.buddypress-wrap form#group-members-search input[type=search],.buddypress-wrap form#group-members-search input[type=text],.buddypress-wrap form.bp-dir-search-form input[type=search],.buddypress-wrap form.bp-dir-search-form input[type=text],.buddypress-wrap form.bp-messages-search-form input[type=search],.buddypress-wrap form.bp-messages-search-form input[type=text],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=text]{float:left;line-height:1.5;padding:3px 10px;width:80%}.buddypress-wrap form#group-members-search button[type=submit],.buddypress-wrap form.bp-dir-search-form button[type=submit],.buddypress-wrap form.bp-messages-search-form button[type=submit],.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit]{float:right;font-size:inherit;font-weight:400;line-height:1.5;padding:3px .7em;text-align:center;text-transform:none;width:20%}.buddypress-wrap form#group-members-search button[type=submit] span,.buddypress-wrap form.bp-dir-search-form button[type=submit] span,.buddypress-wrap form.bp-messages-search-form button[type=submit] span,.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit] span{font-family:dashicons;font-size:18px;line-height:1.6}.buddypress-wrap form#group-members-search button[type=submit].bp-show,.buddypress-wrap form.bp-dir-search-form button[type=submit].bp-show,.buddypress-wrap form.bp-messages-search-form button[type=submit].bp-show,.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit].bp-show{height:auto;left:0;overflow:visible;position:static;top:0}.buddypress-wrap form#group-members-search input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}.buddypress-wrap form#group-members-search input[type=search]::-webkit-search-results-button,.buddypress-wrap form#group-members-search input[type=search]::-webkit-search-results-decoration,.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-results-decoration,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-results-decoration,.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search]::-webkit-search-results-decoration{display:none}.buddypress-wrap form#group-members-search:hover{border:1px solid #d5d4d4;box-shadow:inset 0 0 3px #eee}.buddypress-wrap ul.filters li form label input{line-height:1.4;padding:.1em .7em}.buddypress-wrap .current-member-type{font-style:italic}.buddypress-wrap .dir-form{clear:both}.budypress.no-js form.bp-dir-search-form button[type=submit]{height:auto;left:0;overflow:visible;position:static;top:0}.bp-user [data-bp-search] form input[type=search],.bp-user [data-bp-search] form input[type=text]{padding:6px 10px 7px}.buddypress-wrap .bp-tables-user,.buddypress-wrap table.forum,.buddypress-wrap table.wp-profile-fields{width:100%}.buddypress-wrap .bp-tables-user thead tr,.buddypress-wrap table.forum thead tr,.buddypress-wrap table.wp-profile-fields thead tr{background:0 0;border-bottom:2px solid #ccc}.buddypress-wrap .bp-tables-user tbody tr,.buddypress-wrap table.forum tbody tr,.buddypress-wrap table.wp-profile-fields tbody tr{background:#fafafa}.buddypress-wrap .bp-tables-user tr td,.buddypress-wrap .bp-tables-user tr th,.buddypress-wrap table.forum tr td,.buddypress-wrap table.forum tr th,.buddypress-wrap table.wp-profile-fields tr td,.buddypress-wrap table.wp-profile-fields tr th{padding:.5em;vertical-align:middle}.buddypress-wrap .bp-tables-user tr td.label,.buddypress-wrap table.forum tr td.label,.buddypress-wrap table.wp-profile-fields tr td.label{border-right:1px solid #eaeaea;font-weight:600;width:25%}.buddypress-wrap .bp-tables-user tr.alt td,.buddypress-wrap table.wp-profile-fields tr.alt td{background:#fafafa}.buddypress-wrap table.profile-fields .data{padding:.5em 1em}.buddypress-wrap table.profile-fields tr:last-child{border-bottom:none}.buddypress-wrap table.notifications td{padding:1em .5em}.buddypress-wrap table.notifications .bulk-select-all,.buddypress-wrap table.notifications .bulk-select-check{width:7%}.buddypress-wrap table.notifications .bulk-select-check{vertical-align:middle}.buddypress-wrap table.notifications .date,.buddypress-wrap table.notifications .notification-description,.buddypress-wrap table.notifications .notification-since,.buddypress-wrap table.notifications .title{width:39%}.buddypress-wrap table.notifications .actions,.buddypress-wrap table.notifications .notification-actions{width:15%}.buddypress-wrap table.notification-settings th.title,.buddypress-wrap table.profile-settings th.title{width:80%}.buddypress-wrap table.notifications .notification-actions a.delete,.buddypress-wrap table.notifications .notification-actions a.mark-read{display:inline-block}.buddypress-wrap table.notification-settings{margin-bottom:15px;text-align:left}.buddypress-wrap #groups-notification-settings{margin-bottom:0}.buddypress-wrap table.notification-settings td:first-child,.buddypress-wrap table.notification-settings th.icon,.buddypress-wrap table.notifications td:first-child,.buddypress-wrap table.notifications th.icon{display:none}.buddypress-wrap table.notification-settings .no,.buddypress-wrap table.notification-settings .yes{text-align:center;width:40px;vertical-align:middle}.buddypress-wrap table#message-threads{clear:both}.buddypress-wrap table#message-threads .thread-info{min-width:40%}.buddypress-wrap table#message-threads .thread-info p{margin:0}.buddypress-wrap table#message-threads .thread-info p.thread-excerpt{color:#737373;font-size:12px;margin-top:3px}.buddypress-wrap table.profile-fields{margin-bottom:20px}.buddypress-wrap table.profile-fields:last-child{margin-bottom:0}.buddypress-wrap table.profile-fields p{margin:0}.buddypress-wrap table.profile-fields p:last-child{margin-top:0}.bp-screen-reader-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.center-vert{display:flex;align-items:center}.bp-hide{display:none}.bp-show{height:auto;left:0;overflow:visible;position:static;top:0}.buddypress .buddypress-wrap .activity-read-more a,.buddypress .buddypress-wrap .comment-reply-link,.buddypress .buddypress-wrap .generic-button a,.buddypress .buddypress-wrap a.bp-title-button,.buddypress .buddypress-wrap a.button,.buddypress .buddypress-wrap button,.buddypress .buddypress-wrap input[type=button],.buddypress .buddypress-wrap input[type=reset],.buddypress .buddypress-wrap input[type=submit],.buddypress .buddypress-wrap ul.button-nav:not(.button-tabs) li a{background:#fff;border-color:#ccc;border-style:solid;border-width:1px;border-radius:0;color:#555;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:400;outline:0;padding:.3em .5em;text-align:center;text-decoration:none;width:auto;line-height:1}.buddypress .buddypress-wrap a.button.dashicons,.buddypress .buddypress-wrap button.dashicons{font-family:dashicons}.buddypress .buddypress-wrap .button-small[type=button]{padding:0 8px 1px}.buddypress .buddypress-wrap .activity-read-more a:focus,.buddypress .buddypress-wrap .activity-read-more a:hover,.buddypress .buddypress-wrap .button-nav li a:focus,.buddypress .buddypress-wrap .button-nav li a:hover,.buddypress .buddypress-wrap .button-nav li.current a,.buddypress .buddypress-wrap .comment-reply-link:focus,.buddypress .buddypress-wrap .comment-reply-link:hover,.buddypress .buddypress-wrap .generic-button a:focus,.buddypress .buddypress-wrap .generic-button a:hover,.buddypress .buddypress-wrap a.button:focus,.buddypress .buddypress-wrap a.button:hover,.buddypress .buddypress-wrap button:focus,.buddypress .buddypress-wrap button:hover,.buddypress .buddypress-wrap input[type=button]:focus,.buddypress .buddypress-wrap input[type=button]:hover,.buddypress .buddypress-wrap input[type=reset]:focus,.buddypress .buddypress-wrap input[type=reset]:hover,.buddypress .buddypress-wrap input[type=submit]:focus,.buddypress .buddypress-wrap input[type=submit]:hover{background:#ededed;border-color:#999;color:#333;outline:0;text-decoration:none}.buddypress .buddypress-wrap a.disabled,.buddypress .buddypress-wrap button.disabled,.buddypress .buddypress-wrap button.pending,.buddypress .buddypress-wrap div.pending a,.buddypress .buddypress-wrap input[type=button].disabled,.buddypress .buddypress-wrap input[type=button].pending,.buddypress .buddypress-wrap input[type=reset].disabled,.buddypress .buddypress-wrap input[type=reset].pending,.buddypress .buddypress-wrap input[type=submit].pending,.buddypress .buddypress-wrap input[type=submit][disabled=disabled]{border-color:#eee;color:#767676;cursor:default}.buddypress .buddypress-wrap a.disabled:hover,.buddypress .buddypress-wrap button.disabled:hover,.buddypress .buddypress-wrap button.pending:hover,.buddypress .buddypress-wrap div.pending a:hover,.buddypress .buddypress-wrap input[type=button]:hover.disabled,.buddypress .buddypress-wrap input[type=button]:hover.pending,.buddypress .buddypress-wrap input[type=reset]:hover.disabled,.buddypress .buddypress-wrap input[type=reset]:hover.pending,.buddypress .buddypress-wrap input[type=submit]:hover.disabled,.buddypress .buddypress-wrap input[type=submit]:hover.pending{border-color:#eee;color:#767676}.buddypress .buddypress-wrap button.text-button,.buddypress .buddypress-wrap input.text-button{background:0 0;border:0;box-shadow:none;color:#767676}.buddypress .buddypress-wrap button.text-button.small,.buddypress .buddypress-wrap input.text-button.small{font-size:13px}.buddypress .buddypress-wrap button.text-button:focus,.buddypress .buddypress-wrap button.text-button:hover,.buddypress .buddypress-wrap input.text-button:focus,.buddypress .buddypress-wrap input.text-button:hover{background:0 0;text-decoration:underline}.buddypress .buddypress-wrap .activity-list a.button{border:none}.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.invite-button:hover{color:#1fb3dd}.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.group-remove-invite-button:hover,.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.invite-button:hover,.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li.selected a.group-remove-invite-button:hover,.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li.selected a.invite-button:hover{color:#a00}.buddypress .buddypress-wrap #item-buttons:empty{display:none}.buddypress .buddypress-wrap input:disabled:focus,.buddypress .buddypress-wrap input:disabled:hover{background:0 0}.buddypress .buddypress-wrap .text-links-list a.button{background:0 0;border:none;border-right:1px solid #eee;color:#737373;display:inline-block;padding:.3em 1em}.buddypress .buddypress-wrap .text-links-list a.button:visited{color:#d6d6d6}.buddypress .buddypress-wrap .text-links-list a.button:focus,.buddypress .buddypress-wrap .text-links-list a.button:hover{color:#5087e5}.buddypress .buddypress-wrap .text-links-list a:first-child{padding-left:0}.buddypress .buddypress-wrap .text-links-list a:last-child{border-right:none}.buddypress .buddypress-wrap .bp-list.grid .action a,.buddypress .buddypress-wrap .bp-list.grid .action button{border:1px solid #ccc;display:block;margin:0}.buddypress .buddypress-wrap .bp-list.grid .action a:focus,.buddypress .buddypress-wrap .bp-list.grid .action a:hover,.buddypress .buddypress-wrap .bp-list.grid .action button:focus,.buddypress .buddypress-wrap .bp-list.grid .action button:hover{background:#ededed}.buddypress #buddypress .create-button{background:0 0;text-align:center}.buddypress #buddypress .create-button a:focus,.buddypress #buddypress .create-button a:hover{text-decoration:underline}@media screen and (min-width:46.8em){.buddypress #buddypress .create-button{float:right}}.buddypress #buddypress .create-button a{border:1px solid #ccc;border-radius:5px;background-clip:padding-box;box-shadow:inset 0 0 6px 0 #eaeaea;margin:.2em 0;width:auto}.buddypress #buddypress .create-button a:focus,.buddypress #buddypress .create-button a:hover{background:0 0;border-color:#ccc;box-shadow:inset 0 0 12px 0 #eaeaea}@media screen and (min-width:46.8em){.buddypress #buddypress.bp-dir-vert-nav .create-button{float:none;padding-top:2em}.buddypress #buddypress.bp-dir-vert-nav .create-button a{margin-right:.5em}}.buddypress #buddypress.bp-dir-hori-nav .create-button{float:left}.buddypress #buddypress.bp-dir-hori-nav .create-button a,.buddypress #buddypress.bp-dir-hori-nav .create-button a:hover{background:0 0;border:0;box-shadow:none;margin:0}.buddypress-wrap button.ac-reply-cancel,.buddypress-wrap button.bp-icons{background:0 0;border:0}.buddypress-wrap button.bp-icons:focus,.buddypress-wrap button.bp-icons:hover{background:0 0}.buddypress-wrap button.ac-reply-cancel:focus,.buddypress-wrap button.ac-reply-cancel:hover{background:0 0;text-decoration:underline}.buddypress-wrap .bp-invites-content li .invite-button span.icons:before,.buddypress-wrap .bp-invites-filters .invite-button span.icons:before,.buddypress-wrap .bp-messages-filters li a.messages-button:before,.buddypress-wrap .feed a:before,.buddypress-wrap .filter label:before{font-family:dashicons;font-size:18px}.buddypress-wrap .bp-invites-content .item-list li .invite-button span.icons:before{font-size:27px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-invites-content .item-list li .invite-button span.icons:before{font-size:32px}}.buddypress-wrap .bp-list a.button.invite-button:focus,.buddypress-wrap .bp-list a.button.invite-button:hover{background:0 0}.buddypress-wrap .filter label:before{content:"\f536"}.buddypress-wrap div.feed a:before,.buddypress-wrap li.feed a:before{content:"\f303"}.buddypress-wrap ul.item-list li .invite-button:not(.group-remove-invite-button) span.icons:before{content:"\f502"}.buddypress-wrap ul.item-list li .group-remove-invite-button span.icons:before,.buddypress-wrap ul.item-list li.selected .invite-button span.icons:before{content:"\f153"}.buddypress-wrap .bp-invites-filters ul li #bp-invites-next-page:before,.buddypress-wrap .bp-messages-filters ul li #bp-messages-next-page:before{content:"\f345"}.buddypress-wrap .bp-invites-filters ul li #bp-invites-prev-page:before,.buddypress-wrap .bp-messages-filters ul li #bp-messages-prev-page:before{content:"\f341"}.buddypress-wrap .warn{color:#b71717}.buddypress-wrap .bp-messages{border:1px solid #ccc;margin:0 0 15px}.buddypress-wrap .bp-messages .sitewide-notices{display:block;margin:5px;padding:.5em}.buddypress-wrap .bp-messages.info{margin-bottom:0}.buddypress-wrap .bp-messages.updated{clear:both;display:block}.buddypress-wrap .bp-messages.bp-user-messages-feedback{border:0}.buddypress-wrap #group-create-body .bp-cover-image-status p.warning{background:#0b80a4;border:0;box-shadow:0 0 3px 0 rgba(0,0,0,.2);color:#fff}.buddypress-wrap .bp-feedback:not(.custom-homepage-info){display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row nowrap;flex-flow:row nowrap;align-items:stretch}.buddypress-wrap .bp-feedback{background:#fff;color:#807f7f;box-shadow:0 1px 1px 1px rgba(0,0,0,.1);color:#737373;margin:10px 0;position:relative}.buddypress-wrap .bp-feedback p{margin:0}.buddypress-wrap .bp-feedback span.bp-icon{color:#fff;display:block;font-family:dashicons;left:0;margin-right:10px;position:relative;padding:0 .5em}.buddypress-wrap .bp-feedback .bp-help-text{font-style:italic}.buddypress-wrap .bp-feedback .text{font-size:14px;margin:0;padding:.5em 0}.buddypress-wrap .bp-feedback.no-icon{padding:.5em}.buddypress-wrap .bp-feedback.small:before{line-height:inherit}.buddypress-wrap a[data-bp-close] span:before,.buddypress-wrap button[data-bp-close] span:before{font-size:32px}.buddypress-wrap a[data-bp-close],.buddypress-wrap button[data-bp-close]{border:0;position:absolute;top:10px;right:10px;width:32px}.buddypress-wrap .bp-feedback.no-icon a[data-bp-close],.buddypress-wrap .bp-feedback.no-icon button[data-bp-close]{top:-6px;right:6px}.buddypress-wrap button[data-bp-close]:hover{background-color:transparent}.buddypress-wrap .bp-feedback p{margin:0}.buddypress-wrap .bp-feedback .bp-icon{font-size:20px;padding:0 2px}.buddypress-wrap .bp-feedback.error .bp-icon,.buddypress-wrap .bp-feedback.help .bp-icon,.buddypress-wrap .bp-feedback.info .bp-icon,.buddypress-wrap .bp-feedback.loading .bp-icon,.buddypress-wrap .bp-feedback.success .bp-icon,.buddypress-wrap .bp-feedback.updated .bp-icon,.buddypress-wrap .bp-feedback.warning .bp-icon{display:flex;align-items:center}.buddypress-wrap .bp-feedback.help .bp-icon,.buddypress-wrap .bp-feedback.info .bp-icon{background-color:#0b80a4}.buddypress-wrap .bp-feedback.help .bp-icon:before,.buddypress-wrap .bp-feedback.info .bp-icon:before{content:"\f348"}.buddypress-wrap .bp-feedback.error .bp-icon,.buddypress-wrap .bp-feedback.warning .bp-icon{background-color:#d33}.buddypress-wrap .bp-feedback.error .bp-icon:before,.buddypress-wrap .bp-feedback.warning .bp-icon:before{content:"\f534"}.buddypress-wrap .bp-feedback.loading .bp-icon{background-color:#ffd087}.buddypress-wrap .bp-feedback.loading .bp-icon:before{content:"\f469"}.buddypress-wrap .bp-feedback.success .bp-icon,.buddypress-wrap .bp-feedback.updated .bp-icon{background-color:#8a2}.buddypress-wrap .bp-feedback.success .bp-icon:before,.buddypress-wrap .bp-feedback.updated .bp-icon:before{content:"\f147"}.buddypress-wrap .bp-feedback.help .bp-icon:before{content:"\f468"}.buddypress-wrap #pass-strength-result{background-color:#eee;border-color:#ddd;border-style:solid;border-width:1px;display:none;font-weight:700;margin:10px 0 10px 0;padding:.5em;text-align:center;width:auto}.buddypress-wrap #pass-strength-result.show{display:block}.buddypress-wrap #pass-strength-result.mismatch{background-color:#333;border-color:transparent;color:#fff}.buddypress-wrap #pass-strength-result.bad,.buddypress-wrap #pass-strength-result.error{background-color:#ffb78c;border-color:#ff853c;color:#333}.buddypress-wrap #pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040;color:#333}.buddypress-wrap #pass-strength-result.good{background-color:#ffec8b;border-color:#fc0;color:#333}.buddypress-wrap #pass-strength-result.strong{background-color:#66d66e;border-color:#438c48;color:#333}.buddypress-wrap .standard-form#signup_form div div.error{background:#faa;color:#a00;margin:0 0 10px 0;padding:.5em;width:90%}.buddypress-wrap .accept,.buddypress-wrap .reject{float:left;margin-left:10px}.buddypress-wrap .members-list.grid .bp-ajax-message{background:rgba(255,255,255,.9);border:1px solid #eee;font-size:14px;left:2%;position:absolute;padding:.5em 1em;right:2%;top:30px}.buddypress.widget .item-options{font-size:12px;margin:0 0 1em;padding:1em 0}.buddypress.widget .bp-login-widget-user-avatar{float:left}.buddypress.widget .bp-login-widget-user-links{margin-left:70px}.buddypress.widget ul.item-list{list-style:none;margin:10px 0}.buddypress.widget ul.activity-list{padding:0}.buddypress.widget ul.activity-list blockquote{margin:0 0 1.5em;overflow:visible;padding:0 0 .75em .75em}.buddypress.widget ul.activity-list img{margin-bottom:.5em}.buddypress.widget ul.activity-list li{border-bottom:1px solid #ccc;margin-bottom:1em}.buddypress.widget ul.activity-list li .activity-header p{margin-bottom:.5em}.buddypress.widget ul.activity-list li:last-child{border-bottom:0}.buddypress.widget .avatar-block{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row wrap;flex-flow:row wrap}.buddypress.widget .avatar-block img{margin:.5em}.buddypress.widget ul#friends-list li:after,.buddypress.widget ul#friends-list li:before,.buddypress.widget ul#groups-list li:after,.buddypress.widget ul#groups-list li:before,.buddypress.widget ul#members-list li:after,.buddypress.widget ul#members-list li:before{content:" ";display:table}.buddypress.widget ul#friends-list li:after,.buddypress.widget ul#groups-list li:after,.buddypress.widget ul#members-list li:after{clear:both}.buddypress.widget ul#friends-list li,.buddypress.widget ul#groups-list li,.buddypress.widget ul#members-list li{margin-bottom:1em}.buddypress.widget ul#friends-list li .item-avatar,.buddypress.widget ul#groups-list li .item-avatar,.buddypress.widget ul#members-list li .item-avatar{float:left;width:60px}.buddypress.widget ul#friends-list li .item,.buddypress.widget ul#groups-list li .item,.buddypress.widget ul#members-list li .item{margin-left:70px}.buddypress-wrap .buddypress.widget ul#friends-list,.buddypress-wrap .buddypress.widget ul#groups-list,.buddypress-wrap .buddypress.widget ul#members-list{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:column nowrap;flex-flow:column nowrap}@media screen and (min-width:32em){.buddypress-wrap .buddypress.widget ul#friends-list,.buddypress-wrap .buddypress.widget ul#groups-list,.buddypress-wrap .buddypress.widget ul#members-list{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row wrap;flex-flow:row wrap}}.buddypress-wrap .buddypress.widget ul#friends-list li,.buddypress-wrap .buddypress.widget ul#groups-list li,.buddypress-wrap .buddypress.widget ul#members-list li{border:1px solid #eee;align-items:stretch;-moz-flex:1 1 46%;-o-flex:1 1 46%;flex:1 1 46%;margin:2%}@media screen and (min-width:75em){.buddypress-wrap .buddypress.widget ul#friends-list li,.buddypress-wrap .buddypress.widget ul#groups-list li,.buddypress-wrap .buddypress.widget ul#members-list li{-moz-flex:0 1 20%;-o-flex:0 1 20%;flex:0 1 20%}}.buddypress-wrap .buddypress.widget ul#friends-list li .item-avatar,.buddypress-wrap .buddypress.widget ul#groups-list li .item-avatar,.buddypress-wrap .buddypress.widget ul#members-list li .item-avatar{padding:.5em;text-align:center}.buddypress-wrap .buddypress.widget ul#friends-list li .item,.buddypress-wrap .buddypress.widget ul#groups-list li .item,.buddypress-wrap .buddypress.widget ul#members-list li .item{padding:.5em}.buddypress-wrap .buddypress.widget ul#friends-list li .item .item-meta,.buddypress-wrap .buddypress.widget ul#groups-list li .item .item-meta,.buddypress-wrap .buddypress.widget ul#members-list li .item .item-meta{font-size:12px;overflow-wrap:break-word}@media screen and (min-width:75em){.buddypress-wrap .buddypress.widget ul#friends-list,.buddypress-wrap .buddypress.widget ul#groups-list,.buddypress-wrap .buddypress.widget ul#members-list{margin:10px -2%;width:100%}.buddypress-wrap .buddypress.widget ul#friends-list li,.buddypress-wrap .buddypress.widget ul#groups-list li,.buddypress-wrap .buddypress.widget ul#members-list li{-moz-flex:0 1 auto;-o-flex:0 1 auto;flex:0 1 auto;margin:10px 2% 1%;width:46%}}.buddypress-wrap .buddypress.widget blockquote{margin:0 0 1.5em;overflow:visible;padding:0 0 .75em .75em}#buddypress-wrap *{transition:opacity .1s ease-in-out .1s}#buddypress-wrap a.button,#buddypress-wrap a.generic-button,#buddypress-wrap button,#buddypress-wrap input[type=reset],#buddypress-wrap input[type=submit]{transition:background .1s ease-in-out .1s,color .1s ease-in-out .1s,border-color .1s ease-in-out .1s}.buddypress-wrap a.loading,.buddypress-wrap input.loading{animation:loader-pulsate .5s infinite ease-in-out alternate;border-color:#aaa}@keyframes loader-pulsate{from{border-color:#aaa;box-shadow:0 0 6px #ccc}to{border-color:#ccc;box-shadow:0 0 6px #f8f8f8}}.buddypress-wrap a.loading:hover,.buddypress-wrap input.loading:hover{color:#777}[data-bp-tooltip]{position:relative}[data-bp-tooltip]:after{background-color:#fff;display:none;opacity:0;position:absolute;transform:translate3d(0,0,0);visibility:hidden}[data-bp-tooltip]:after{border:1px solid #737373;border-radius:1px;box-shadow:4px 4px 8px rgba(0,0,0,.2);color:#333;content:attr(data-bp-tooltip);font-family:"Helvetica Neue",helvetica,arial,san-serif;font-size:12px;font-weight:400;letter-spacing:normal;line-height:1.25;max-width:200px;padding:5px 8px;pointer-events:none;text-shadow:none;text-transform:none;transition:all 1.5s ease;white-space:nowrap;word-wrap:break-word;z-index:100000}[data-bp-tooltip]:active:after,[data-bp-tooltip]:focus:after,[data-bp-tooltip]:hover:after{display:block;opacity:1;overflow:visible;visibility:visible}[data-bp-tooltip=""]{display:none;opacity:0;visibility:hidden}.bp-tooltip:after{left:50%;margin-top:7px;top:110%;transform:translate(-50%,0)}.user-list .bp-tooltip:after{left:0;transform:translate(0,0)}@media screen and (min-width:46.8em){.user-list .bp-tooltip:after{left:auto;right:0;transform:translate(0,0)}}.activity-list .bp-tooltip:after,.activity-meta-action .bp-tooltip:after,.avatar-block .item-avatar .bp-tooltip:after,.notification-actions .bp-tooltip:after,.participants-list .bp-tooltip:after{left:0;transform:translate(0,0)}.bp-invites-content .bp-tooltip:after,.message-metadata .actions .bp-tooltip:after,.single-message-thread-header .actions .bp-tooltip:after{left:auto;right:0;transform:translate(0,0)}.bp-invites-content #send-invites-editor .bp-tooltip:after{left:0;right:auto}#item-body,.single-screen-navs{box-sizing:border-box}.grid>li,.grid>li .generic-button a{box-sizing:border-box}.grid>li{border-bottom:0;padding-bottom:10px;padding-top:0}.grid>li .list-wrap{background:#fafafa;border:1px solid #eee;padding-bottom:15px;position:relative;overflow:hidden;padding-top:14px}.grid>li .list-wrap .list-title{padding:.5em}.grid>li .list-wrap .update{color:#737373;padding:.5em 2em}.grid>li .item-avatar{text-align:center}.grid>li .item-avatar .avatar{border-radius:50%;display:inline-block;width:50%}@media screen and (min-width:24em){.grid.members-list .list-wrap{min-height:340px}.grid.members-list .list-wrap .item-block{margin:0 auto;min-height:7rem}.grid.members-group-list .list-wrap .item-block{margin:0 auto;min-height:7rem}.grid.groups-list .list-wrap{min-height:470px}.grid.groups-list .list-wrap .item-block{min-height:6rem}.grid.groups-list .list-wrap .group-desc{margin:15px auto 0;min-height:5em;overflow:hidden}.grid.groups-list .list-wrap .group-details,.grid.groups-list .list-wrap .item-desc,.grid.groups-list .list-wrap .last-activity{margin-bottom:0}.grid.groups-list .list-wrap .group-details p,.grid.groups-list .list-wrap .item-desc p,.grid.groups-list .list-wrap .last-activity p{margin-bottom:0}.grid.blogs-list .list-wrap{min-height:350px}.grid.blogs-list .list-wrap .item-block{margin:0 auto;min-height:7rem}}@media screen and (min-width:24em){.grid>li.item-entry{float:left;margin:0}.grid.two>li{padding-bottom:20px}}@media screen and (min-width:24em) and (min-width:75em){.grid.two>li .list-wrap{max-width:500px;margin:0 auto}}@media screen and (min-width:24em){.grid.three>li,.grid.two>li{width:50%}.grid.three>li:nth-child(odd),.grid.two>li:nth-child(odd){padding-right:10px}.grid.three>li:nth-child(even),.grid.two>li:nth-child(even){padding-left:10px}.grid.three>li .item,.grid.two>li .item{margin:1rem auto 0;width:80%}.grid.three>li .item .item-title,.grid.two>li .item .item-title{width:auto}}@media screen and (min-width:46.8em){.grid.three>li{padding-top:0;width:33.333333%;width:calc(100% / 3)}.grid.three>li:nth-child(1n+1){padding-left:5px;padding-right:5px}.grid.three>li:nth-child(3n+3){padding-left:5px;padding-right:0}.grid.three>li:nth-child(3n+1){padding-left:0;padding-right:5px}}@media screen and (min-width:46.8em){.grid.four>li{width:25%}.grid.four>li:nth-child(1n+1){padding-left:5px;padding-right:5px}.grid.four>li:nth-child(4n+4){padding-left:5px;padding-right:0}.grid.four>li:nth-child(4n+1){padding-left:0;padding-right:5px}}.buddypress-wrap .grid.bp-list{padding-top:1em}.buddypress-wrap .grid.bp-list>li{border-bottom:none}.buddypress-wrap .grid.bp-list>li .list-wrap{padding-bottom:3em}.buddypress-wrap .grid.bp-list>li .item-avatar{margin:0;text-align:center;width:auto}.buddypress-wrap .grid.bp-list>li .item-avatar img.avatar{display:inline-block;height:auto;width:50%}.buddypress-wrap .grid.bp-list>li .item-meta,.buddypress-wrap .grid.bp-list>li .list-title{float:none;text-align:center}.buddypress-wrap .grid.bp-list>li .list-title{font-size:inherit;line-height:1.1}.buddypress-wrap .grid.bp-list>li .item{font-size:18px;left:0;margin:0 auto;text-align:center;width:96%}@media screen and (min-width:46.8em){.buddypress-wrap .grid.bp-list>li .item{font-size:22px}}.buddypress-wrap .grid.bp-list>li .item .group-desc,.buddypress-wrap .grid.bp-list>li .item .item-block{float:none;width:96%}.buddypress-wrap .grid.bp-list>li .item .item-block{margin-bottom:10px}.buddypress-wrap .grid.bp-list>li .item .last-activity{margin-top:5px}.buddypress-wrap .grid.bp-list>li .item .group-desc{clear:none}.buddypress-wrap .grid.bp-list>li .item .user-update{clear:both;text-align:left}.buddypress-wrap .grid.bp-list>li .item .activity-read-more a{display:inline}.buddypress-wrap .grid.bp-list>li .action{bottom:5px;float:none;height:auto;left:0;margin:0;padding:0 5px;position:absolute;text-align:center;top:auto;width:100%}.buddypress-wrap .grid.bp-list>li .action .generic-button{float:none;margin:5px 0 0;text-align:center;width:100%}.buddypress-wrap .grid.bp-list>li .action .generic-button a,.buddypress-wrap .grid.bp-list>li .action .generic-button button{width:100%}.buddypress-wrap .grid.bp-list>li .avatar,.buddypress-wrap .grid.bp-list>li .item,.buddypress-wrap .grid.bp-list>li .item-avatar{float:none}.buddypress-wrap .blogs-list.grid.two>li .blogs-title{min-height:5em}.buddypress-wrap .grid.four>li .group-desc,.buddypress-wrap .grid.three>li .group-desc{min-height:8em}.buddypress-wrap .blogs-list.grid.four>li,.buddypress-wrap .blogs-list.grid.three>li{min-height:350px}.buddypress-wrap .blogs-list.grid.four>li .last-activity,.buddypress-wrap .blogs-list.grid.three>li .last-activity{margin-bottom:0}.buddypress-wrap .blogs-list.grid.four>li .last-post,.buddypress-wrap .blogs-list.grid.three>li .last-post{margin-top:0}.buddypress:not(.logged-in) .grid.bp-list .list-wrap{padding-bottom:5px}.buddypress:not(.logged-in) .grid.groups-list .list-wrap{min-height:430px}.buddypress:not(.logged-in) .grid.members-list .list-wrap{min-height:300px}.buddypress:not(.logged-in) .grid.blogs-list .list-wrap{min-height:320px}@media screen and (min-width:46.8em){.bp-single-vert-nav .bp-navs.vertical{overflow:visible}.bp-single-vert-nav .bp-navs.vertical ul{border-right:1px solid #d6d6d6;border-bottom:0;float:left;margin-right:-1px;width:25%}.bp-single-vert-nav .bp-navs.vertical li{float:none;margin-right:0}.bp-single-vert-nav .bp-navs.vertical li.selected a{background:#ccc;color:#333}.bp-single-vert-nav .bp-navs.vertical li:focus,.bp-single-vert-nav .bp-navs.vertical li:hover{background:#ccc}.bp-single-vert-nav .bp-navs.vertical li span{background:#d6d6d6;border-radius:10%;float:right;margin-right:2px}.bp-single-vert-nav .bp-navs.vertical li:hover span{border-color:#eaeaea}.bp-single-vert-nav .bp-navs.vertical.tabbed-links li.selected a{padding-left:0}.bp-single-vert-nav .bp-wrap{margin-bottom:15px}.bp-single-vert-nav .bp-wrap .group-nav-tabs.groups-nav ul li,.bp-single-vert-nav .bp-wrap .user-nav-tabs.users-nav ul li{left:1px;position:relative}.bp-single-vert-nav .item-body:not(#group-create-body){background:#fff;border-left:1px solid #d6d6d6;float:right;margin:0;min-height:400px;padding:0 0 0 1em;width:calc(75% + 1px)}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links){background:#eaeaea;margin:0 0 0 -5px;width:auto}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li{font-size:16px;margin:10px 0}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a{border-right:1px solid #ccc;padding:0 .5em}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a:focus,.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a:hover{background:0 0}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.current a{background:0 0;color:#333;text-decoration:underline}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li:last-child a{border:none}.bp-dir-vert-nav .dir-navs{float:left;left:1px;position:relative;width:20%}.bp-dir-vert-nav .dir-navs ul li{float:none;overflow:hidden;width:auto}.bp-dir-vert-nav .dir-navs ul li.selected{border:1px solid #eee}.bp-dir-vert-nav .dir-navs ul li.selected a{background:#555;color:#fff}.bp-dir-vert-nav .dir-navs ul li.selected a span{background:#eaeaea;border-color:#ccc;color:#5087e5}.bp-dir-vert-nav .dir-navs ul li a:focus,.bp-dir-vert-nav .dir-navs ul li a:hover{background:#ccc;color:#333}.bp-dir-vert-nav .dir-navs ul li a:focus span,.bp-dir-vert-nav .dir-navs ul li a:hover span{border:1px solid #555}.bp-dir-vert-nav .screen-content{border-left:1px solid #d6d6d6;margin-left:20%;overflow:hidden;padding:0 0 2em 1em}.bp-dir-vert-nav .screen-content .subnav-filters{margin-top:0}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li:not(.selected) a:hover{background:0 0}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li.selected{background:0 0;border:1px solid #d6d6d6;border-right-color:#fff}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li.selected a{background:0 0;color:#333;font-weight:600}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li.selected a span{background:#555;border:1px solid #d6d6d6;color:#fff}} \ No newline at end of file +body #buddypress * a{box-shadow:none;text-decoration:none}body #buddypress div,body #buddypress dl,body #buddypress input[type=reset],body #buddypress input[type=search],body #buddypress input[type=submit],body #buddypress li,body #buddypress select,body #buddypress textarea{border-radius:2px;background-clip:padding-box}body #buddypress #item-body blockquote,body #buddypress .bp-lists blockquote{margin-left:0}body #buddypress .bp-list .action{box-sizing:border-box}@media screen and (min-width:46.8em){body.buddypress .entry-content:not(.alignwide):not(.alignfull),body.buddypress .entry-header:not(.alignwide):not(.alignfull),body.buddypress .site-content .entry-header:not(.alignwide):not(.alignfull){max-width:none}body.buddypress .entry-header{float:none}body.buddypress .entry-content{float:none}body.buddypress .site-content{padding-top:2.5em}body.buddypress #page #primary{max-width:none}body.buddypress #page #primary .entry-content,body.buddypress #page #primary .entry-header{float:none;width:auto}}body.buddypress .buddypress-wrap h1,body.buddypress .buddypress-wrap h2,body.buddypress .buddypress-wrap h3,body.buddypress .buddypress-wrap h4,body.buddypress .buddypress-wrap h5,body.buddypress .buddypress-wrap h6{clear:none;margin:1em 0;padding:0}body.buddypress .buddypress-wrap h2:before{display:none}.bp-wrap:after,.bp-wrap:before{content:" ";display:table}.bp-wrap:after{clear:both}.buddypress-wrap.round-avatars .avatar{border-radius:50%}body.buddypress article.page>.entry-header{margin-bottom:2em;padding:0}body.buddypress article.page>.entry-header:not(.alignwide):not(.alignfull) .entry-title{font-size:28px;font-weight:inherit;color:#767676}@media screen and (min-width:46.8em){body.buddypress article.page>.entry-header:not(.alignwide):not(.alignfull) .entry-title{font-size:34px}}.buddypress-wrap dt.section-title{font-size:18px}@media screen and (min-width:46.8em){.buddypress-wrap dt.section-title{font-size:22px}}.buddypress-wrap .bp-label-text,.buddypress-wrap .message-threads{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-label-text,.buddypress-wrap .message-threads{font-size:16px}}.buddypress-wrap .activity-header{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .activity-header{font-size:16px}}.buddypress-wrap .activity-inner{font-size:15px}@media screen and (min-width:46.8em){.buddypress-wrap .activity-inner{font-size:18px}}.buddypress-wrap #whats-new-post-in{font-size:16px}.buddypress-wrap .acomment-meta,.buddypress-wrap .mini .activity-header{font-size:16px}.buddypress-wrap .dir-component-filters #activity-filter-by{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .dir-component-filters #activity-filter-by{font-size:16px}}.buddypress-wrap .bp-tables-user th{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-tables-user th{font-size:16px}}.buddypress-wrap .bp-tables-user td{font-size:12px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-tables-user td{font-size:14px}}.buddypress-wrap .profile-fields th{font-size:15px}@media screen and (min-width:46.8em){.buddypress-wrap .profile-fields th{font-size:18px}}.buddypress-wrap .profile-fields td{font-size:13px}@media screen and (min-width:46.8em){.buddypress-wrap .profile-fields td{font-size:16px}}.buddypress-wrap #notification-select{font-size:12px}@media screen and (min-width:46.8em){.buddypress-wrap #notification-select{font-size:14px}}.bp-navs{background:0 0;clear:both;overflow:hidden}.bp-navs ul{margin:0;padding:0}.bp-navs ul li{list-style:none;margin:0}.bp-navs ul li.last select{max-width:185px}.bp-navs ul li a,.bp-navs ul li span{border:0;display:block;padding:5px 10px;text-decoration:none}.bp-navs ul li .count{background:#eaeaea;border:1px solid #ccc;border-radius:50%;color:#555;display:inline;font-size:12px;margin-left:2px;padding:3px 6px;text-align:center;vertical-align:middle}.bp-navs ul li.current a,.bp-navs ul li.selected a{color:#333;opacity:1}.bp-navs.bp-invites-filters ul li a,.bp-navs.bp-messages-filters ul li a{border:1px solid #ccc;display:inline-block}.main-navs.dir-navs{margin-bottom:20px}.buddypress-wrap .bp-navs li a:hover a .count,.buddypress-wrap .bp-navs li.current a .count,.buddypress-wrap .bp-navs li.selected a .count{background-color:#ccc}.buddypress-wrap .bp-navs li:not(.current) a:focus,.buddypress-wrap .bp-navs li:not(.current) a:hover,.buddypress-wrap .bp-navs li:not(.selected) a:focus,.buddypress-wrap .bp-navs li:not(.selected) a:hover{background:#ccc;color:#333}.buddypress-wrap .bp-navs li.current a,.buddypress-wrap .bp-navs li.current a:focus,.buddypress-wrap .bp-navs li.current a:hover,.buddypress-wrap .bp-navs li.selected a,.buddypress-wrap .bp-navs li.selected a:focus,.buddypress-wrap .bp-navs li.selected a:hover{background:#555;color:#fafafa}@media screen and (min-width:46.8em){.buddypress-wrap .main-navs:not(.dir-navs) li.current a,.buddypress-wrap .main-navs:not(.dir-navs) li.selected a{background:#fff;color:#333;font-weight:600}.buddypress-wrap .main-navs.vertical li.current a,.buddypress-wrap .main-navs.vertical li.selected a{background:#555;color:#fafafa;text-decoration:none}.buddypress-wrap.bp-dir-hori-nav:not(.bp-vertical-navs) nav:not(.tabbed-links){border-bottom:1px solid #eee;border-top:1px solid #eee;box-shadow:0 2px 12px 0 #fafafa}}.buddypress-wrap .bp-subnavs li.current a,.buddypress-wrap .bp-subnavs li.selected a{background:#fff;color:#333;font-weight:600}@media screen and (max-width:46.8em){.buddypress-wrap:not(.bp-single-vert-nav) .bp-navs li{background:#eaeaea}}.buddypress-wrap:not(.bp-single-vert-nav) .main-navs>ul>li>a{padding:.5em calc(.5em + 2px)}.buddypress-wrap:not(.bp-single-vert-nav) .group-subnav#subsubnav,.buddypress-wrap:not(.bp-single-vert-nav) .user-subnav#subsubnav{background:0 0}.buddypress-wrap .bp-subnavs,.buddypress-wrap ul.subnav{width:100%}.buddypress-wrap .bp-subnavs{margin:10px 0;overflow:hidden}.buddypress-wrap .bp-subnavs ul li{margin-top:0}.buddypress-wrap .bp-subnavs ul li.current :focus,.buddypress-wrap .bp-subnavs ul li.current :hover,.buddypress-wrap .bp-subnavs ul li.selected :focus,.buddypress-wrap .bp-subnavs ul li.selected :hover{background:0 0;color:#333}.buddypress-wrap ul.subnav{width:auto}.buddypress-wrap .bp-navs.bp-invites-filters#subsubnav ul li.last,.buddypress-wrap .bp-navs.bp-invites-nav#subnav ul li.last,.buddypress-wrap .bp-navs.bp-messages-filters#subsubnav ul li.last{margin-top:0}@media screen and (max-width:46.8em){.buddypress-wrap .single-screen-navs{border:1px solid #eee}.buddypress-wrap .single-screen-navs li{border-bottom:1px solid #eee}.buddypress-wrap .single-screen-navs li:last-child{border-bottom:none}.buddypress-wrap .bp-subnavs li a{font-size:14px}.buddypress-wrap .bp-subnavs li.current a,.buddypress-wrap .bp-subnavs li.current a:focus,.buddypress-wrap .bp-subnavs li.current a:hover,.buddypress-wrap .bp-subnavs li.selected a,.buddypress-wrap .bp-subnavs li.selected a:focus,.buddypress-wrap .bp-subnavs li.selected a:hover{background:#555;color:#fff}}.buddypress-wrap .bp-navs li.current a .count,.buddypress-wrap .bp-navs li.selected a .count,.buddypress_object_nav .bp-navs li.current a .count,.buddypress_object_nav .bp-navs li.selected a .count{background-color:#fff}.buddypress-wrap .bp-navs li.dynamic a .count,.buddypress-wrap .bp-navs li.dynamic.current a .count,.buddypress-wrap .bp-navs li.dynamic.selected a .count,.buddypress_object_nav .bp-navs li.dynamic a .count,.buddypress_object_nav .bp-navs li.dynamic.current a .count,.buddypress_object_nav .bp-navs li.dynamic.selected a .count{background-color:#5087e5;border:0;color:#fafafa}.buddypress-wrap .bp-navs li.dynamic a:hover .count,.buddypress_object_nav .bp-navs li.dynamic a:hover .count{background-color:#5087e5;border:0;color:#fff}.buddypress-wrap .bp-navs li a .count:empty,.buddypress_object_nav .bp-navs li a .count:empty{display:none}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current),.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current){color:#767676}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a{color:#767676}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a:focus,.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a:hover,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a:focus,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a:hover{background:0 0;color:#333}.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a[disabled]:focus,.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a[disabled]:hover,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a[disabled]:focus,.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a[disabled]:hover{color:#767676}.buddypress-wrap .bp-navs.group-create-links ul li.current a,.buddypress_object_nav .bp-navs.group-create-links ul li.current a{text-align:center}@media screen and (min-width:46.8em){.buddypress-wrap .bp-navs li{float:left}.buddypress-wrap .subnav{float:left}.buddypress-wrap ul.subnav{width:auto}.buddypress-wrap #subsubnav .activity-search{float:left}.buddypress-wrap #subsubnav .filter{float:right}}.buddypress_object_nav .bp-navs li a .count{display:inline-block;float:right}@media screen and (min-width:46.8em){.bp-dir-vert-nav .bp-navs.dir-navs{background:0 0}.bp-dir-vert-nav .bp-navs.dir-navs a .count{float:right}}@media screen and (min-width:46.8em){.buddypress-wrap .tabbed-links ol,.buddypress-wrap .tabbed-links ul{border-bottom:1px solid #ccc;float:none;margin:20px 0 10px}.buddypress-wrap .tabbed-links ol:after,.buddypress-wrap .tabbed-links ol:before,.buddypress-wrap .tabbed-links ul:after,.buddypress-wrap .tabbed-links ul:before{content:" ";display:block}.buddypress-wrap .tabbed-links ol:after,.buddypress-wrap .tabbed-links ul:after{clear:both}.buddypress-wrap .tabbed-links ol li,.buddypress-wrap .tabbed-links ul li{float:left;list-style:none;margin:0 10px 0 0}.buddypress-wrap .tabbed-links ol li a,.buddypress-wrap .tabbed-links ol li span:not(.count),.buddypress-wrap .tabbed-links ul li a,.buddypress-wrap .tabbed-links ul li span:not(.count){background:0 0;border:none;display:block;padding:4px 10px}.buddypress-wrap .tabbed-links ol li a:focus,.buddypress-wrap .tabbed-links ol li a:hover,.buddypress-wrap .tabbed-links ul li a:focus,.buddypress-wrap .tabbed-links ul li a:hover{background:0 0}.buddypress-wrap .tabbed-links ol li:not(.current),.buddypress-wrap .tabbed-links ul li:not(.current){margin-bottom:2px}.buddypress-wrap .tabbed-links ol li.current,.buddypress-wrap .tabbed-links ul li.current{border-color:#ccc #ccc #fff;border-style:solid;border-top-left-radius:4px;border-top-right-radius:4px;border-width:1px;margin-bottom:-1px;padding:0 .5em 1px}.buddypress-wrap .tabbed-links ol li.current a,.buddypress-wrap .tabbed-links ul li.current a{background:0 0;color:#333}.buddypress-wrap .bp-subnavs.tabbed-links>ul{margin-top:0}.buddypress-wrap .bp-navs.tabbed-links{background:0 0;margin-top:2px}.buddypress-wrap .bp-navs.tabbed-links ul li a{border-right:0;font-size:inherit}.buddypress-wrap .bp-navs.tabbed-links ul li.last{float:right;margin:0}.buddypress-wrap .bp-navs.tabbed-links ul li.last a{margin-top:-.5em}.buddypress-wrap .bp-navs.tabbed-links ul li a,.buddypress-wrap .bp-navs.tabbed-links ul li a:focus,.buddypress-wrap .bp-navs.tabbed-links ul li a:hover,.buddypress-wrap .bp-navs.tabbed-links ul li.current a,.buddypress-wrap .bp-navs.tabbed-links ul li.current a:focus,.buddypress-wrap .bp-navs.tabbed-links ul li.current a:hover{background:0 0;border:0}.buddypress-wrap .bp-navs.tabbed-links ul li a:active,.buddypress-wrap .bp-navs.tabbed-links ul li.current a:active{outline:0}}.buddypress-wrap .dir-component-filters .filter label{display:inline}.buddypress-wrap .subnav-filters:after,.buddypress-wrap .subnav-filters:before{content:" ";display:table}.buddypress-wrap .subnav-filters:after{clear:both}.buddypress-wrap .subnav-filters{background:0 0;list-style:none;margin:15px 0 0;padding:0}.buddypress-wrap .subnav-filters div{margin:0}.buddypress-wrap .subnav-filters>ul{float:left;list-style:none}.buddypress-wrap .subnav-filters.bp-messages-filters ul{width:100%}.buddypress-wrap .subnav-filters.bp-messages-filters .messages-search{margin-bottom:1em}@media screen and (min-width:46.8em){.buddypress-wrap .subnav-filters.bp-messages-filters .messages-search{margin-bottom:0}}.buddypress-wrap .subnav-filters div{float:none}.buddypress-wrap .subnav-filters div input[type=search],.buddypress-wrap .subnav-filters div select{font-size:16px}.buddypress-wrap .subnav-filters div button.nouveau-search-submit{padding:5px .8em 6px}.buddypress-wrap .subnav-filters div button#user_messages_search_submit{padding:7px .8em}.buddypress-wrap .subnav-filters .component-filters{margin-top:10px}.buddypress-wrap .subnav-filters .feed{margin-right:15px}.buddypress-wrap .subnav-filters .last.filter label{display:inline}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:after,.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:before{content:" ";display:table}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:after{clear:both}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap.bp-show{display:inline-block}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap.bp-hide{display:none}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .select-wrap{border:0}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .select-wrap:focus,.buddypress-wrap .subnav-filters .user-messages-bulk-actions .select-wrap:hover{outline:1px solid #d6d6d6}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions{float:left}.buddypress-wrap .subnav-filters .user-messages-bulk-actions label{display:inline-block;font-weight:300;margin-right:25px;padding:5px 0}.buddypress-wrap .subnav-filters .user-messages-bulk-actions div select{-webkit-appearance:textfield}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-apply{border:0;border-radius:0;font-weight:400;line-height:1.8;margin:0 0 0 10px;padding:3px 5px;text-align:center;text-transform:none;width:auto}.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-apply span{vertical-align:middle}@media screen and (min-width:32em){.buddypress-wrap .subnav-filters li{margin-bottom:0}.buddypress-wrap .subnav-filters .bp-search,.buddypress-wrap .subnav-filters .dir-search,.buddypress-wrap .subnav-filters .feed,.buddypress-wrap .subnav-filters .group-act-search,.buddypress-wrap .subnav-filters .group-invites-search,.buddypress-wrap .subnav-filters .subnav-search,.buddypress-wrap .subnav-filters .subnav-search form,.buddypress-wrap .subnav-filters .user-messages-bulk-actions,.buddypress-wrap .subnav-filters .user-messages-search{float:left}.buddypress-wrap .subnav-filters .component-filters,.buddypress-wrap .subnav-filters .last{float:right;margin-top:0;width:auto}.buddypress-wrap .subnav-filters .component-filters select,.buddypress-wrap .subnav-filters .last select{max-width:250px}.buddypress-wrap .subnav-filters .user-messages-search{float:right}}.buddypress-wrap .notifications-options-nav input#notification-bulk-manage{border:0;border-radius:0;line-height:1.6}.buddypress-wrap .group-subnav-filters .group-invites-search{margin-bottom:1em}.buddypress-wrap .group-subnav-filters .last{text-align:center}.buddypress-wrap .bp-pagination{background:0 0;border:0;color:#767676;float:left;font-size:small;margin:0;padding:.5em 0;position:relative;width:100%}.buddypress-wrap .bp-pagination .pag-count{float:left}.buddypress-wrap .bp-pagination .bp-pagination-links{float:right;margin-right:10px}.buddypress-wrap .bp-pagination .bp-pagination-links a,.buddypress-wrap .bp-pagination .bp-pagination-links span{font-size:small;padding:0 5px}.buddypress-wrap .bp-pagination .bp-pagination-links a:focus,.buddypress-wrap .bp-pagination .bp-pagination-links a:hover{opacity:1}.buddypress-wrap .bp-pagination p{margin:0}.bp-list:after,.bp-list:before{content:" ";display:table}.bp-list:after{clear:both}.bp-list{box-sizing:border-box;border-top:1px solid #eaeaea;clear:both;list-style:none;margin:20px 0;padding:.5em 0;width:100%}.bp-list li:after,.bp-list li:before{content:" ";display:table}.bp-list li:after{clear:both}.bp-list>li{border-bottom:1px solid #eaeaea}.bp-list li{list-style:none;margin:10px 0;padding:.5em 0;position:relative}.bp-list li .item-avatar{text-align:center}.bp-list li .item-avatar img.avatar{display:inline-block;width:auto;height:auto}.bp-list li .item .group-details,.bp-list li .item .item-avatar,.bp-list li .item .item-meta,.bp-list li .item .list-title{text-align:center}.bp-list li .item .list-title{clear:none;font-size:22px;font-weight:400;line-height:1.1;margin:0 auto}@media screen and (min-width:46.8em){.bp-list li .item .list-title{font-size:26px}}.bp-list li .item-meta,.bp-list li .meta{color:#737373;font-size:12px;margin-bottom:10px;margin-top:10px}.bp-list li .last-post{text-align:center}.bp-list li .action{margin:0;text-align:center}.bp-list li .action .generic-button{display:inline-block;font-size:12px;margin:0 10px 0 0}.bp-list li .action div.generic-button{margin:10px 0}@media screen and (min-width:46.8em){.bp-list li .item-avatar{float:left;margin-right:5%}.bp-list li .item{margin:0;overflow:hidden}.bp-list li .item .item-block{float:left;margin-right:2%;width:50%}.bp-list li .item .item-meta,.bp-list li .item .list-title{float:left;text-align:left}.bp-list li .item .group-details,.bp-list li .item .last-post{text-align:left}.bp-list li .group-desc,.bp-list li .last-post,.bp-list li .user-update{clear:none;overflow:hidden;width:auto}.bp-list li .action{clear:left;padding:0;text-align:left}.bp-list li .action li.generic-button{margin-right:0}.bp-list li .action div.generic-button{margin:0 0 10px}.bp-list li .generic-button{display:block;margin:0 0 5px 0}}@media screen and (min-width:32em){#activity-stream{clear:both;padding-top:1em}}.activity-list.bp-list{background:#fafafa;border:1px solid #eee}.activity-list.bp-list .activity-item{background:#fff;border:1px solid #b7b7b7;box-shadow:0 0 6px #d2d2d2;margin:20px 0}.activity-list.bp-list li:first-child{margin-top:0}.friends-list{list-style-type:none}.friends-request-list .item-title,.membership-requests-list .item-title{text-align:center}@media screen and (min-width:46.8em){.friends-request-list li,.membership-requests-list li{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row nowrap;flex-flow:row nowrap}.friends-request-list li .item,.membership-requests-list li .item{-moz-flex:1 1 auto;-o-flex:1 1 auto;flex:1 1 auto}.friends-request-list li .action,.membership-requests-list li .action{text-align:right}.friends-request-list li .item-title,.membership-requests-list li .item-title{font-size:22px;text-align:left}.friends-request-list li .item-title h3,.membership-requests-list li .item-title h3{margin:0}}#notifications-user-list{clear:both;padding-top:1em}@media screen and (min-width:46.8em){body:not(.logged-in) .bp-list .item{margin-right:0}}.activity-permalink .item-list,.activity-permalink .item-list li.activity-item{border:0}.activity-update-form{padding:10px 10px 0}.item-body .activity-update-form .activity-form{margin:0;padding:0}.activity-update-form{border:1px solid #ccc;box-shadow:inset 0 0 6px #eee;margin:15px 0}.activity-update-form #whats-new-avatar{margin:10px 0;text-align:center}.activity-update-form #whats-new-avatar img{box-shadow:none;display:inline-block;height:auto;width:auto}.activity-update-form #whats-new-content{padding:0 0 20px 0}.activity-update-form #whats-new-textarea textarea{background:#fff;box-sizing:border-box;color:#333;font-family:inherit;font-size:medium;height:2.2em;line-height:1.4;padding:6px;width:100%}.activity-update-form #whats-new-textarea textarea:focus{box-shadow:0 0 6px 0 #d6d6d6}.activity-update-form #whats-new-post-in-box{margin:10px 0}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items{list-style:none;margin:10px 0;padding-left:0}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li{margin-bottom:10px}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items button.bp-remove-item{margin-left:10px;height:auto}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items #activity-autocomplete{padding:.3em;width:100%}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object{display:flex;align-items:center;padding:.2em}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object .avatar{width:30px;height:30px}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object span{padding-left:10px;vertical-align:middle}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object:focus,.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object:hover{background:#eaeaea;cursor:pointer}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object.selected{border:1px solid #d6d6d6}.activity-update-form #whats-new-submit{margin:15px 0 10px}.activity-update-form #whats-new-submit input{font-size:14px;line-height:inherit;margin-bottom:10px;margin-right:10px;padding:.2em 0;text-align:center;width:100%}@media screen and (min-width:46.8em){.activity-update-form #whats-new-avatar{display:block;float:left;margin:0}.activity-update-form #whats-new-content,.activity-update-form #whats-new-post-in-box,.activity-update-form #whats-new-submit{margin-left:55px}.activity-update-form #whats-new-submit input{margin-bottom:0;margin-right:10px;width:8em}}.activity-list{padding:.5em}.activity-list .activity-item:after,.activity-list .activity-item:before{content:" ";display:table}.activity-list .activity-item:after{clear:both}.activity-list .activity-item{list-style:none;padding:1em}.activity-list .activity-item.has-comments{padding-bottom:1em}.activity-list .activity-item div.item-avatar{margin:0 auto;text-align:center;width:auto}.activity-list .activity-item div.item-avatar img{height:auto;max-width:40%}@media screen and (min-width:46.8em){.activity-list .activity-item div.item-avatar{margin:0 2% 0 0;text-align:left;width:15%}.activity-list .activity-item div.item-avatar img{max-width:80%}}.activity-list .activity-item.mini{font-size:13px;position:relative}.activity-list .activity-item.mini .activity-avatar{margin-left:0;text-align:center;width:auto}.activity-list .activity-item.mini .activity-avatar img.FB_profile_pic,.activity-list .activity-item.mini .activity-avatar img.avatar{max-width:15%}@media screen and (min-width:46.8em){.activity-list .activity-item.mini .activity-avatar{margin-left:15px;text-align:left;width:15%}.activity-list .activity-item.mini .activity-avatar img.FB_profile_pic,.activity-list .activity-item.mini .activity-avatar img.avatar{max-width:60%}}.activity-list .activity-item.new_forum_post .activity-inner,.activity-list .activity-item.new_forum_topic .activity-inner{border-left:2px solid #eaeaea;margin-left:10px;padding-left:1em}.activity-list .activity-item.newest_blogs_activity,.activity-list .activity-item.newest_friends_activity,.activity-list .activity-item.newest_groups_activity,.activity-list .activity-item.newest_mentions_activity{background:rgba(31,179,221,.1)}.activity-list .activity-item .activity-inreplyto{color:#767676;font-size:13px}.activity-list .activity-item .activity-inreplyto>p{display:inline;margin:0}.activity-list .activity-item .activity-inreplyto .activity-inner,.activity-list .activity-item .activity-inreplyto blockquote{background:0 0;border:0;display:inline;margin:0;overflow:hidden;padding:0}.activity-list .activity-item .activity-header{margin:0 auto;width:80%}.activity-list .activity-item .activity-header a,.activity-list .activity-item .activity-header img{display:inline}.activity-list .activity-item .activity-header .avatar{display:inline-block;margin:0 5px;vertical-align:text-top;width:20px;height:20px}.activity-list .activity-item .activity-header .time-since{font-size:14px;color:#767676;text-decoration:none}.activity-list .activity-item .activity-header .time-since:hover{color:#767676;cursor:pointer;text-decoration:underline}.activity-list .activity-item .activity-content .activity-header,.activity-list .activity-item .activity-content .comment-header{color:#767676;margin-bottom:10px}.activity-list .activity-item .activity-content .activity-inner,.activity-list .activity-item .activity-content blockquote{background:#fafafa;margin:15px 0 10px;overflow:hidden;padding:1em}.activity-list .activity-item .activity-content p{margin:0}.activity-list .activity-item .activity-inner p{word-wrap:break-word}.activity-list .activity-item .activity-read-more{margin-left:1em;white-space:nowrap}.activity-list .activity-item ul.activity-meta{margin:0;padding-left:0}.activity-list .activity-item ul.activity-meta li{border:0;display:inline-block}.activity-list .activity-item .activity-meta.action{border:1px solid transparent;background:#fafafa;padding:2px;position:relative;text-align:left}.activity-list .activity-item .activity-meta.action div.generic-button{margin:0}.activity-list .activity-item .activity-meta.action .button{background:0 0;color:#555}.activity-list .activity-item .activity-meta.action a{padding:4px 8px}.activity-list .activity-item .activity-meta.action .button:focus,.activity-list .activity-item .activity-meta.action .button:hover{background:0 0}.activity-list .activity-item .activity-meta.action .button:before,.activity-list .activity-item .activity-meta.action .icons:before{font-family:dashicons;font-size:18px;vertical-align:middle}.activity-list .activity-item .activity-meta.action .acomment-reply.button:before{content:"\f101"}.activity-list .activity-item .activity-meta.action .view:before{content:"\f125"}.activity-list .activity-item .activity-meta.action .fav:before{content:"\f154"}.activity-list .activity-item .activity-meta.action .unfav:before{content:"\f155"}.activity-list .activity-item .activity-meta.action .delete-activity:before{content:"\f153"}.activity-list .activity-item .activity-meta.action .delete-activity:hover{color:#800}.activity-list .activity-item .activity-meta.action .button{border:0;box-shadow:none}.activity-list .activity-item .activity-meta.action .button span{background:0 0;color:#555;font-weight:700}@media screen and (min-width:46.8em){.activity-list.bp-list{padding:30px}.activity-list .activity-item .activity-content{margin:0;position:relative}.activity-list .activity-item .activity-content:after{clear:both;content:"";display:table}.activity-list .activity-item .activity-header{margin:0 15px 0 0;width:auto}}.buddypress-wrap .activity-list .load-more,.buddypress-wrap .activity-list .load-newest{background:#fafafa;border:1px solid #eee;font-size:110%;margin:15px 0;padding:0;text-align:center}.buddypress-wrap .activity-list .load-more a,.buddypress-wrap .activity-list .load-newest a{color:#555;display:block;padding:.5em 0}.buddypress-wrap .activity-list .load-more a:focus,.buddypress-wrap .activity-list .load-more a:hover,.buddypress-wrap .activity-list .load-newest a:focus,.buddypress-wrap .activity-list .load-newest a:hover{background:#fff;color:#333}.buddypress-wrap .activity-list .load-more:focus,.buddypress-wrap .activity-list .load-more:hover,.buddypress-wrap .activity-list .load-newest:focus,.buddypress-wrap .activity-list .load-newest:hover{border-color:#e1e1e1;box-shadow:0 0 6px 0 #eaeaea}body.activity-permalink .activity-list li{border-width:1px;padding:1em 0 0 0}body.activity-permalink .activity-list li:first-child{padding-top:0}body.activity-permalink .activity-list li.has-comments{padding-bottom:0}body.activity-permalink .activity-list .activity-avatar{width:auto}body.activity-permalink .activity-list .activity-avatar a{display:block}body.activity-permalink .activity-list .activity-avatar img{max-width:100%;background-color:#eaeaea}body.activity-permalink .activity-list .activity-content{border:0;font-size:100%;line-height:1.5;padding:0}body.activity-permalink .activity-list .activity-content .activity-header{margin:0;padding:.5em 0 0 0;text-align:center;width:100%}body.activity-permalink .activity-list .activity-content .activity-inner,body.activity-permalink .activity-list .activity-content blockquote{margin-left:0;margin-top:10px}body.activity-permalink .activity-list .activity-meta{margin:10px 0 10px}body.activity-permalink .activity-list .activity-comments{margin-bottom:10px}@media screen and (min-width:46.8em){body.activity-permalink .activity-list .activity-avatar{left:-20px;margin-right:0;position:relative;top:-20px}body.activity-permalink .activity-list .activity-avatar img{box-shadow:0 0 0 8px #fff}body.activity-permalink .activity-list .activity-content{margin-right:10px}body.activity-permalink .activity-list .activity-content .activity-header p{text-align:left}}.buddypress-wrap .activity-comments{clear:both;margin:0 5%;overflow:hidden;position:relative;width:auto}.buddypress-wrap .activity-comments ul{clear:both;list-style:none;margin:15px 0 0;padding:0}.buddypress-wrap .activity-comments ul li{border-top:1px solid #eee;border-bottom:0;padding:1em 0 0}.buddypress-wrap .activity-comments ul li ul{margin-left:5%}.buddypress-wrap .activity-comments ul li:first-child{border-top:0}.buddypress-wrap .activity-comments ul li:last-child{margin-bottom:0}.buddypress-wrap .activity-comments div.acomment-avatar{width:auto}.buddypress-wrap .activity-comments div.acomment-avatar img{border-width:1px;float:left;height:25px;max-width:none;width:25px}.buddypress-wrap .activity-comments .acomment-content p,.buddypress-wrap .activity-comments .acomment-meta{font-size:14px}.buddypress-wrap .activity-comments .acomment-meta{color:#555;overflow:hidden;padding-left:2%}.buddypress-wrap .activity-comments .acomment-content{border-left:1px solid #ccc;margin:15px 0 0 10%;padding:.5em 1em}.buddypress-wrap .activity-comments .acomment-content p{margin-bottom:.5em}.buddypress-wrap .activity-comments .acomment-options{float:left;margin:10px 0 10px 20px}.buddypress-wrap .activity-comments .acomment-options a{color:#767676;font-size:14px}.buddypress-wrap .activity-comments .acomment-options a:focus,.buddypress-wrap .activity-comments .acomment-options a:hover{color:inherit}.buddypress-wrap .activity-comments .activity-meta.action{background:0 0;margin-top:10px}.buddypress-wrap .activity-comments .activity-meta.action button{font-size:14px;font-weight:400;text-transform:none}.buddypress-wrap .activity-comments .show-all button{font-size:14px;text-decoration:underline;padding-left:.5em}.buddypress-wrap .activity-comments .show-all button span{text-decoration:none}.buddypress-wrap .activity-comments .show-all button:focus span,.buddypress-wrap .activity-comments .show-all button:hover span{color:#5087e5}.buddypress-wrap .mini .activity-comments{clear:both;margin-top:0}body.activity-permalink .activity-comments{background:0 0;width:auto}body.activity-permalink .activity-comments>ul{padding:0 .5em 0 1em}body.activity-permalink .activity-comments ul li>ul{margin-top:10px}form.ac-form{display:none;padding:1em}form.ac-form .ac-reply-avatar{float:left}form.ac-form .ac-reply-avatar img{border:1px solid #eee}form.ac-form .ac-reply-content{color:#767676;padding-left:1em}form.ac-form .ac-reply-content a{text-decoration:none}form.ac-form .ac-reply-content .ac-textarea{margin-bottom:15px;padding:0 .5em;overflow:hidden}form.ac-form .ac-reply-content .ac-textarea textarea{background:0 0;box-shadow:none;color:#555;font-family:inherit;font-size:100%;height:60px;margin:0;outline:0;padding:.5em;width:100%}form.ac-form .ac-reply-content .ac-textarea textarea:focus{box-shadow:0 0 6px #d6d6d6}form.ac-form .ac-reply-content input{margin-top:10px}.activity-comments li form.ac-form{clear:both;margin-right:15px}.activity-comments form.root{margin-left:0}.buddypress-wrap .blogs-list li .item-avatar img.avatar-150{max-width:150px;max-height:150px}.buddypress-wrap .blogs-list li .item-avatar img.avatar-50{max-width:50px;max-height:50px}@media screen and (min-width:46.8em){.buddypress-wrap .blogs-list li .item-block{float:none;width:auto}.buddypress-wrap .blogs-list li .item-meta{clear:left;float:none}}@media screen and (min-width:46.8em){.buddypress-wrap .bp-dir-vert-nav .blogs-list .list-title{width:auto}}.buddypress-wrap .groups-list li .list-title{text-align:center}.buddypress-wrap .groups-list li .group-details{clear:left}.buddypress-wrap .groups-list li .group-desc{border:1px solid #eaeaea;border-radius:10px;background-clip:padding-box;font-size:13px;color:#737373;font-style:italic;margin:10px auto 0;padding:1em}@media screen and (min-width:46.8em){.buddypress-wrap .groups-list li .group-desc{font-size:16px}}.buddypress-wrap .groups-list li p{margin:0 0 .5em}@media screen and (min-width:46.8em){.buddypress-wrap .groups-list li .item{margin-right:0}.buddypress-wrap .groups-list li .item-meta,.buddypress-wrap .groups-list li .list-title{text-align:left;width:auto}.buddypress-wrap .groups-list li .item-meta{margin-bottom:20px}.buddypress-wrap .groups-list li .last-activity{clear:left;margin-top:-20px}}.buddypress-wrap .groups-list li.group-no-avatar div.group-desc{margin-left:0}.buddypress-wrap .mygroups .groups-list.grid .wrap{min-height:450px;padding-bottom:0}@media screen and (min-width:46.8em){.buddypress-wrap .groups-list.grid.four .group-desc,.buddypress-wrap .groups-list.grid.three .group-desc{font-size:14px}}@media screen and (min-width:46.8em){.buddypress .bp-vertical-navs .groups-list .item-avatar{margin-right:3%;width:15%}}.buddypress-wrap .members-list li .member-name{margin-bottom:10px}.buddypress-wrap .members-list li .item-extra-content{clear:both;font-size:14px}.buddypress-wrap .members-list li .user-update{border:1px solid #eaeaea;border-radius:10px;background-clip:padding-box;color:#737373;font-style:italic;font-size:13px;margin:15px auto;padding:1em}@media screen and (min-width:46.8em){.buddypress-wrap .members-list li .user-update{font-size:16px}}.buddypress-wrap .members-list li .user-update .activity-read-more{display:block;font-size:12px;font-style:normal;margin-top:10px;padding-left:2px}@media screen and (min-width:46.8em){.buddypress-wrap .members-list li .last-activity{clear:left;margin-top:-10px}}@media screen and (min-width:46.8em){.buddypress-wrap .members-group-list li .joined{clear:left;float:none}}@media screen and (min-width:32em){body:not(.logged-in) .members-list .user-update{width:96%}}.register-page .register-section{box-sizing:border-box}.register-page .signup-form{margin-top:20px}.register-page .signup-form .default-profile input{margin-bottom:20px}.register-page .signup-form label,.register-page .signup-form legend{margin:10px 0 0}.register-page .signup-form .editfield{margin:15px 0}.register-page .signup-form .editfield fieldset{border:0;padding:0}.register-page .signup-form .editfield fieldset legend{margin:0 0 5px;text-indent:0}.register-page .signup-form .editfield .field-visibility-settings{padding:.5em}.register-page .signup-form .editfield .field-visibility-settings fieldset{margin:0 0 10px}.register-page .signup-form #signup-avatar img{margin:0 15px 10px 0}.register-page .signup-form .wp-pwd button{vertical-align:middle}.register-page .signup-form #pass-strength-result,.register-page .signup-form #pass1,.register-page .signup-form #pass1-text{width:10em}.register-page .signup-form #pass1{display:inline-block;margin-bottom:inherit}.register-page .signup-form #pass1-text,.register-page .signup-form .pw-weak{display:none}.register-page .signup-form .show-password #pass1-text{display:inline-block;margin-bottom:inherit}.register-page .signup-form .show-password #pass1{display:none}.register-page .signup-form .description.indicator-hint{font-size:14px}.register-page .signup-form #submit:disabled{color:#767676;opacity:.4}.register-page .signup-form .password-entry,.register-page .signup-form .password-entry-confirm{border:1px solid #eee}body.buddypress.register.js .user-pass2-wrap{display:none}body.buddypress.register.no-js .wp-hide-pw{display:none}@media screen and (min-width:46.8em){.buddypress-wrap .register-page .layout-wrap{display:flex;flex-flow:row wrap;justify-content:space-around}.buddypress-wrap .register-page .layout-wrap .default-profile{flex:1;padding-right:2em}.buddypress-wrap .register-page .layout-wrap .blog-details{flex:1;padding-left:2em}.buddypress-wrap .register-page .submit{clear:both}}@media screen and (min-width:46.8em){.buddypress-wrap.extended-default-reg .register-page .default-profile{min-width:14em;flex:1;padding-right:1em}.buddypress-wrap.extended-default-reg .register-page .extended-profile{flex:2;padding-left:1em}.buddypress-wrap.extended-default-reg .register-page .blog-details{flex:1 100%}}#group-create-body{padding:.5em}#group-create-body .creation-step-name{text-align:center}#group-create-body img.avatar{width:auto;height:auto}#group-create-body .avatar-nav-items{margin-top:15px}.single-headers:after,.single-headers:before{content:" ";display:table}.single-headers:after{clear:both}.single-headers{margin-bottom:15px}.single-headers #item-header-avatar a{display:block;text-align:center}.single-headers #item-header-avatar a img{float:none;width:auto;height:auto}.single-headers div#item-header-content{float:none}@media screen and (min-width:46.8em){.single-headers #item-header-avatar a{text-align:left}.single-headers #item-header-avatar a img{float:left}.single-headers #item-header-content{padding-left:2em}}.single-headers .activity,.single-headers .group-status{display:inline}.single-headers .group-status{font-size:18px;color:#333;padding-right:1em}.single-headers .activity{display:inline-block;font-size:12px;padding:0}.single-headers #sitewide-notice p,.single-headers div#message p{background-color:#ffd;border:1px solid #cb2;color:#440;font-weight:400;margin-top:3px;text-decoration:none}.single-headers h2{line-height:1.2;margin:0 0 5px}.single-headers h2 a{color:#767676;text-decoration:none}.single-headers h2 span.highlight{display:inline-block;font-size:60%;font-weight:400;line-height:1.7;vertical-align:middle}.single-headers h2 span.highlight span{background:#a1dcfa;color:#fff;cursor:pointer;font-size:80%;font-weight:700;margin-bottom:2px;padding:1px 4px;position:relative;right:-2px;top:-2px;vertical-align:middle}.single-headers img.avatar{float:left;margin:0 15px 19px 0}.single-headers .item-meta{color:#767676;font-size:14px;margin:15px 0 5px;padding-bottom:.5em}.single-headers ul{margin-bottom:15px}.single-headers ul li{float:right;list-style:none}.single-headers div.generic-button{text-align:center}.single-headers li.generic-button{display:inline-block;text-align:center}@media screen and (min-width:46.8em){.single-headers a.button,.single-headers div.generic-button,.single-headers li.generic-button{float:left}}.single-headers a.button,.single-headers div.generic-button{margin:10px 10px 0 0}.single-headers li.generic-button{margin:2px 10px}.single-headers li.generic-button:first-child{margin-left:0}.single-headers div#message.info{line-height:.8}body.no-js .single-item-header .js-self-profile-button{display:none}#cover-image-container{position:relative}#header-cover-image{background-color:#c5c5c5;background-position:center top;background-repeat:no-repeat;background-size:cover;border:0;display:block;left:0;margin:0;padding:0;position:absolute;top:0;width:100%;z-index:1}#item-header-cover-image{position:relative;z-index:2}#item-header-cover-image #item-header-avatar{padding:0 1em}.groups-header .bp-group-type-list{font-size:18px;margin:0;color:#333;display:flex}.groups-header .bp-group-type-list strong{padding-right:1em;white-space:nowrap}.groups-header .bp-feedback{clear:both}.groups-header .group-item-actions{float:left;margin:0 0 15px 15px;padding-top:0;width:100%}.groups-header .moderators-lists{margin-top:0}.groups-header .moderators-lists .moderators-title{font-size:14px}.groups-header .moderators-lists .user-list{margin:0 0 5px}.groups-header .moderators-lists .user-list ul:after{clear:both;content:"";display:table}.groups-header .moderators-lists .user-list li{display:inline-block;float:none;margin-left:4px;padding:4px}.groups-header .moderators-lists img.avatar{box-shadow:none;float:none;height:30px;margin:0;max-width:100%;width:30px}@media screen and (min-width:46.8em){.groups-header div#item-header-content{float:left;margin-left:10%;text-align:left;padding-top:15px;width:42%}.groups-header .group-item-actions{float:right;margin:0 0 15px 15px;text-align:right;width:20%}.groups-header .groups-meta{clear:both}}.groups-header .desc-wrap{background:#eaeaea;border:1px solid #d6d6d6;margin:0 0 15px;padding:1em;text-align:center}.groups-header .desc-wrap .group-description{background:#fafafa;box-shadow:inset 0 0 9px #ccc;padding:1em;text-align:left}.groups-header .desc-wrap .group-description p{margin:0;padding:0}body.buddypress.bp-user .buddypress-wrap .users-header h2.user-nicename{margin-top:0;margin-bottom:5px}body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list{padding-bottom:.5em;font-size:18px;margin:0;color:#333;display:flex}body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list strong{padding-right:1em;white-space:nowrap}body.buddypress.bp-user .buddypress-wrap .member-header-actions{overflow:hidden;padding-left:0}body.buddypress.bp-user .buddypress-wrap .member-header-actions *>*{display:block}.buddypress-wrap .item-body{margin:20px 0}.buddypress-wrap .item-body .screen-heading{font-size:20px;font-weight:400}.buddypress-wrap .item-body .button-tabs{margin:30px 0 15px;list-style:none}.buddypress-wrap.bp-single-vert-nav .bp-list:not(.grid) .item-entry{padding-left:.5em}.single-item.group-members .item-body .filters:not(.no-subnav){border-top:5px solid #eaeaea;padding-top:1em}.single-item.group-members .item-body .filters{margin-top:0}.buddypress-wrap .group-status-type ul{margin:0 0 20px 20px}.groups-manage-members-list{padding:.5em 0}.groups-manage-members-list dd{margin:0;padding:1em 0}.groups-manage-members-list .section-title{background:#eaeaea;padding-left:.3em}.groups-manage-members-list ul{list-style:none;margin-bottom:0}.groups-manage-members-list ul li{border-bottom:1px solid #eee;margin-bottom:10px;padding:.5em .3em .3em}.groups-manage-members-list ul li:last-child,.groups-manage-members-list ul li:only-child{border-bottom:0}.groups-manage-members-list ul li:nth-child(even){background:#fafafa}.groups-manage-members-list ul li.banned-user{background:#fad3d3}.groups-manage-members-list ul .member-name{margin-bottom:0;text-align:center}.groups-manage-members-list ul img{display:block;margin:0 auto;width:20%}@media screen and (min-width:32em){.groups-manage-members-list ul .member-name{text-align:left}.groups-manage-members-list ul img{display:inline;width:50px}}.groups-manage-members-list ul .members-manage-buttons:after,.groups-manage-members-list ul .members-manage-buttons:before{content:" ";display:table}.groups-manage-members-list ul .members-manage-buttons:after{clear:both}.groups-manage-members-list ul .members-manage-buttons{margin:15px 0 5px}.groups-manage-members-list ul .members-manage-buttons a.button{color:#767676;display:block;font-size:13px}@media screen and (min-width:32em){.groups-manage-members-list ul .members-manage-buttons a.button{display:inline-block}}.groups-manage-members-list ul .members-manage-buttons.text-links-list{margin-bottom:0}@media screen and (max-width:32em){.groups-manage-members-list ul .members-manage-buttons.text-links-list a.button{background:#fafafa;border:1px solid #eee;display:block;margin-bottom:10px}}.groups-manage-members-list ul .action:not(.text-links-list) a.button{font-size:12px}@media screen and (min-width:46.8em){.groups-manage-members-list ul li .avatar,.groups-manage-members-list ul li .member-name{float:left}.groups-manage-members-list ul li .avatar{margin-right:15px}.groups-manage-members-list ul li .action{clear:both;float:left}}#group-manage-members-ui #group-members-search-form button[type=submit]{float:right;font-size:inherit;font-weight:400;line-height:1.5;text-align:center;text-transform:none}#group-manage-members-ui #group-members-search-form button[type=submit] span{font-family:dashicons;font-size:18px;line-height:1.6}#group-manage-members-ui #group-members-pagination button:last-child{margin-right:2em}#group-manage-members-ui #bp-no-group-members td{border:none}.buddypress .bp-invites-content ul.item-list{border-top:0}.buddypress .bp-invites-content ul.item-list li{border:1px solid #eaeaea;margin:0 0 1%;padding-left:5px;padding-right:5px;position:relative;width:auto}.buddypress .bp-invites-content ul.item-list li .list-title{margin:0 auto;width:80%}.buddypress .bp-invites-content ul.item-list li .action{position:absolute;top:10px;right:10px}.buddypress .bp-invites-content ul.item-list li .action a.button.invite-button{border:0}.buddypress .bp-invites-content ul.item-list li .action a.button.invite-button:focus,.buddypress .bp-invites-content ul.item-list li .action a.button.invite-button:hover{color:#1fb3dd}.buddypress .bp-invites-content ul.item-list li.selected{box-shadow:inset 0 0 12px 0 rgba(237,187,52,.2)}.buddypress .bp-invites-content .group-inviters li,.buddypress .bp-invites-content .item-list .item-meta span{color:#767676}.buddypress .bp-invites-content li ul.group-inviters{clear:both;margin:0}.buddypress .bp-invites-content li ul.group-inviters li{border:0;float:left;font-size:20px;width:inherit}.buddypress .bp-invites-content li .status{font-size:20px;font-style:italic;clear:both;color:#555;margin:10px 0}.buddypress .bp-invites-content #send-invites-editor ul:after,.buddypress .bp-invites-content #send-invites-editor ul:before{content:" ";display:table}.buddypress .bp-invites-content #send-invites-editor ul:after{clear:both}.buddypress .bp-invites-content #send-invites-editor textarea{width:100%}.buddypress .bp-invites-content #send-invites-editor ul{clear:both;list-style:none;margin:10px 0}.buddypress .bp-invites-content #send-invites-editor ul li{float:left;margin:.5%;max-height:50px;max-width:50px}.buddypress .bp-invites-content #send-invites-editor #bp-send-invites-form{clear:both;margin-top:10px}.buddypress .bp-invites-content #send-invites-editor .action{margin-top:10px;padding-top:10px}.buddypress .bp-invites-content #send-invites-editor.bp-hide{display:none}@media screen and (min-width:46.8em){.buddypress .bp-invites-content ul.item-list>li{box-sizing:border-box;border:1px solid #eaeaea;float:left;padding-left:.5em;padding-right:.5em;width:49.5%}.buddypress .bp-invites-content ul.item-list>li:nth-child(odd){margin-right:.5%}.buddypress .bp-invites-content ul.item-list>li:nth-child(even){margin-left:.5%}.buddypress .bp-invites-content ul.item-list ul.group-inviters{float:left;width:auto}}@media screen and (min-width:46.8em){:not(.vertical)+.item-body #group-invites-container{display:-ms-grid;display:grid;-ms-grid-columns:25% auto;grid-template-columns:25% auto;grid-template-areas:"group-invites-nav group-invites-column"}:not(.vertical)+.item-body #group-invites-container .bp-invites-nav{-ms-grid-row:1;-ms-grid-column:1;grid-area:group-invites-nav}:not(.vertical)+.item-body #group-invites-container .bp-invites-nav li{display:block;float:none}:not(.vertical)+.item-body #group-invites-container .group-invites-column{-ms-grid-row:1;-ms-grid-column:2;grid-area:group-invites-column}}.buddypress.groups .activity-update-form{margin-top:0}.buddypress-wrap .profile{margin-top:30px}.buddypress-wrap .public .profile-fields td.label{width:30%}.buddypress-wrap .profile.edit ul.button-nav{list-style:none;margin:30px 0 10px;padding-left:0}.buddypress-wrap .profile.edit ul.button-nav li{display:inline-block;margin-right:10px}.buddypress-wrap .profile.edit ul.button-nav li a{padding:.5em}.buddypress-wrap .profile.edit .editfield{background:#fafafa;border:1px solid #eee;margin:15px 0;padding:1em}.buddypress-wrap .profile.edit .editfield fieldset{border:0}.buddypress-wrap .profile.edit .editfield fieldset label{font-weight:400}.buddypress-wrap .profile.edit .editfield fieldset label.xprofile-field-label{display:inline}.buddypress-wrap .profile.edit .editfield{display:flex;flex-direction:column}.buddypress-wrap .profile.edit .editfield .description{margin-top:10px;order:2}.buddypress-wrap .profile.edit .editfield>fieldset{order:1}.buddypress-wrap .profile.edit .editfield .field-visibility-settings,.buddypress-wrap .profile.edit .editfield .field-visibility-settings-toggle{order:3}body.no-js .buddypress-wrap .field-visibility-settings-close,body.no-js .buddypress-wrap .field-visibility-settings-toggle{display:none}body.no-js .buddypress-wrap .field-visibility-settings{display:block}.buddypress-wrap .field-visibility-settings{margin:10px 0}.buddypress-wrap .current-visibility-level{font-style:normal;font-weight:700}.buddypress-wrap .field-visibility-settings,.buddypress-wrap .field-visibility-settings-header{color:#737373}.buddypress-wrap .field-visibility-settings fieldset{margin:5px 0}.buddypress-wrap .standard-form .editfield fieldset{margin:0}.buddypress-wrap .standard-form .field-visibility-settings label{font-weight:400;margin:0}.buddypress-wrap .standard-form .field-visibility-settings .radio{list-style:none;margin-bottom:0}.buddypress-wrap .standard-form .field-visibility-settings .field-visibility-settings-close{font-size:12px}.buddypress-wrap .standard-form .wp-editor-container{border:1px solid #dedede}.buddypress-wrap .standard-form .wp-editor-container textarea{background:#fff;width:100%}.buddypress-wrap .standard-form .description{background:#fafafa;font-size:inherit}.buddypress-wrap .standard-form .field-visibility-settings legend,.buddypress-wrap .standard-form .field-visibility-settings-header{font-style:italic}.buddypress-wrap .standard-form .field-visibility-settings-header{font-size:14px}.buddypress-wrap .standard-form .field-visibility-settings label,.buddypress-wrap .standard-form .field-visibility-settings legend{font-size:14px}.buddypress-wrap .standard-form .field-visibility select{margin:0}.buddypress-wrap .html-active button.switch-html{background:#f5f5f5;border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.buddypress-wrap .tmce-active button.switch-tmce{background:#f5f5f5;border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.buddypress-wrap .profile.public .profile-group-title{border-bottom:1px solid #ccc}body.register .buddypress-wrap .page ul{list-style:none}.buddypress-wrap .profile .bp-avatar-nav{margin-top:20px}.message-action-delete:before,.message-action-star:before,.message-action-unstar:before,.message-action-view:before{font-family:dashicons;font-size:18px}.message-action-star:before{color:#aaa;content:"\f154"}.message-action-unstar:before{color:#fcdd77;content:"\f155"}.message-action-view:before{content:"\f473"}.message-action-delete:before{content:"\f153"}.message-action-delete:hover:before{color:#a00}.preview-content .actions a{text-decoration:none}.bp-messages-content{margin:15px 0}.bp-messages-content .avatar{box-shadow:none}.bp-messages-content .thread-participants{list-style:none}.bp-messages-content .thread-participants dd{margin-left:0}.bp-messages-content time{color:#737373;font-size:12px}#message-threads{border-top:1px solid #eaeaea;clear:both;list-style:none;margin:0;max-height:220px;overflow-x:hidden;overflow-y:auto;padding:0;width:100%}#message-threads li{border-bottom:1px solid #eaeaea;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row nowrap;flex-flow:row nowrap;margin:0;overflow:hidden;padding:.5em 0}#message-threads li .thread-cb{display:flex;align-items:center;-moz-flex:1 2 5%;-o-flex:1 2 5%;flex:1 2 5%}#message-threads li .thread-from,#message-threads li .thread-to{-moz-flex:1 2 20%;-o-flex:1 2 20%;flex:1 2 20%}#message-threads li .thread-from img.avatar,#message-threads li .thread-to img.avatar{float:left;margin:0 10px 0 0}#message-threads li .thread-from .user-name,#message-threads li .thread-to .user-name{display:inline-block;line-height:1.1}#message-threads li .thread-from .num-recipients,#message-threads li .thread-to .num-recipients{color:#737373;font-weight:400;font-size:12px;margin:0}#message-threads li .thread-content{-moz-flex:1 2 60%;-o-flex:1 2 60%;flex:1 2 60%}#message-threads li .thread-date{-moz-flex:1 2 15%;-o-flex:1 2 15%;flex:1 2 15%}#message-threads li.selected{background-color:#fafafa}#message-threads li.selected .thread-subject .subject{color:#5087e5}#message-threads li.unread{font-weight:700}#message-threads li .thread-content .excerpt{color:#737373;font-size:12px;margin:0}#message-threads li .thread-content .thread-from,#message-threads li .thread-content .thread-subject,#message-threads li .thread-content .thread-to{font-size:13px}@media screen and (min-width:46.8em){#message-threads li .thread-content .thread-from,#message-threads li .thread-content .thread-subject,#message-threads li .thread-content .thread-to{font-size:16px}}#message-threads li .thread-content .thread-subject{vertical-align:top}#message-threads li .thread-content .thread-subject .excerpt{font-weight:400}#message-threads li .thread-date{padding-right:5px;text-align:right}.bp-messages-content .actions{float:right;max-width:30%;line-height:1}.bp-messages-content .actions .bp-icons:not(.bp-hide){display:inline-block;margin:0;padding:.3em .5em}.bp-messages-content .actions .bp-icons:not(.bp-hide):before{font-size:26px}.bp-messages-content #thread-preview{border:1px solid #eaeaea;margin-top:20px}.bp-messages-content #thread-preview .preview-message{overflow:hidden}.bp-messages-content #thread-preview .preview-content{margin:.5em}.bp-messages-content #thread-preview .preview-content .preview-message{background:#fafafa;margin:10px 0;padding:1em .3em .3em}.bp-messages-content #bp-message-thread-list{border-top:1px solid #eaeaea;clear:both;list-style:none;padding:1em 0 .3em}.bp-messages-content #bp-message-thread-list li{padding:.5em}.bp-messages-content #bp-message-thread-list li:nth-child(2n) .message-content{background:#fafafa}.bp-messages-content #bp-message-thread-list .message-metadata{border-bottom:1px solid #ccc;box-shadow:-2px 1px 9px 0 #eee;display:table;padding:.2em;width:100%}.bp-messages-content #bp-message-thread-list .message-metadata .avatar{width:30px}.bp-messages-content #bp-message-thread-list .message-metadata .user-link{display:block;font-size:13px;float:left}@media screen and (min-width:46.8em){.bp-messages-content #bp-message-thread-list .message-metadata .user-link{font-size:16px}}.bp-messages-content #bp-message-thread-list .message-metadata time{color:#737373;font-size:12px;padding:0 .5em}.bp-messages-content #bp-message-thread-list .message-metadata button{padding:0 .3em}.bp-messages-content #bp-message-thread-list .message-metadata button:before{font-size:20px}.bp-messages-content #bp-message-thread-list .message-content{overflow:hidden;margin:1em auto 0;width:90%}.bp-messages-content #bp-message-thread-list img.avatar{float:left;margin:0 10px 0 0}.bp-messages-content #bp-message-thread-list .actions a:before{font-size:18px}.bp-messages-content form.send-reply .avatar-box{padding:.5em 0}.bp-messages-content .preview-pane-header,.bp-messages-content .single-message-thread-header{border-bottom:1px solid #eaeaea}.bp-messages-content .preview-pane-header:after,.bp-messages-content .single-message-thread-header:after{clear:both;content:"";display:table}.bp-messages-content .preview-thread-title,.bp-messages-content .single-thread-title{font-size:16px}.bp-messages-content .preview-thread-title .messages-title,.bp-messages-content .single-thread-title .messages-title{padding-left:2em}.bp-messages-content .thread-participants{float:left;margin:5px 0;width:70%}.bp-messages-content .thread-participants dd,.bp-messages-content .thread-participants ul{margin-bottom:10px}.bp-messages-content .thread-participants ul{list-style:none}.bp-messages-content .thread-participants ul:after{clear:both;content:"";display:table}.bp-messages-content .thread-participants li{float:left;margin-left:5px}.bp-messages-content .thread-participants img{width:30px;height:30px}.bp-messages-content #bp-message-thread-list li .message-content blockquote,.bp-messages-content #bp-message-thread-list li .message-content ol,.bp-messages-content #bp-message-thread-list li .message-content ul,.bp-messages-content #thread-preview .preview-message blockquote,.bp-messages-content #thread-preview .preview-message ol,.bp-messages-content #thread-preview .preview-message ul{list-style-position:inside;margin-left:0}.bp-messages-content #thread-preview:empty,.bp-messages-content ul#message-threads:empty{display:none}.bp-messages-content #bp-message-thread-header h2:first-child,.bp-messages-content #thread-preview h2:first-child{background-color:#eaeaea;color:#555;font-weight:700;margin:0;padding:.5em}.bp-messages-content #bp-message-thread-list li a.user-link,.bp-messages-content #message-threads .thread-content a{border:0;text-decoration:none}.bp-messages-content .standard-form #subject{margin-bottom:20px}div.bp-navs#subsubnav.bp-messages-filters .user-messages-bulk-actions{margin-right:15px;max-width:42.5%}.buddypress.settings .profile-settings.bp-tables-user select{width:100%}body.buddypress.settings .wp-pwd button{vertical-align:middle}body.buddypress.settings #pass-strength-result,body.buddypress.settings #pass1,body.buddypress.settings #pass1-text{width:16em}body.buddypress.settings #pass1{display:inline-block;margin-bottom:inherit}body.buddypress.settings #pass-strength-result,body.buddypress.settings #pass1-text,body.buddypress.settings .pw-weak{display:none}body.buddypress.settings .show-password #pass1-text{display:inline-block;margin-bottom:inherit}body.buddypress.settings .show-password #pass1{display:none}body.buddypress.settings #your-profile #submit:disabled{color:#767676;opacity:.4}body.buddypress.settings.js .user-pass2-wrap,body.buddypress.settings.js .wp-pwd{display:none}body.buddypress.settings.no-js .wp-cancel-pw,body.buddypress.settings.no-js .wp-generate-pw,body.buddypress.settings.no-js .wp-hide-pw{display:none}body.buddypress.settings.data #buddypress.buddypress-wrap .item-body p a{text-decoration:underline}.buddypress-wrap #whats-new-post-in-box select,.buddypress-wrap .filter select{border:1px solid #d6d6d6}.buddypress-wrap input.action[disabled]{cursor:pointer;opacity:.4}.buddypress-wrap #notification-bulk-manage[disabled]{display:none}.buddypress-wrap fieldset legend{font-size:inherit;font-weight:600}.buddypress-wrap input[type=email]:focus,.buddypress-wrap input[type=password]:focus,.buddypress-wrap input[type=tel]:focus,.buddypress-wrap input[type=text]:focus,.buddypress-wrap input[type=url]:focus,.buddypress-wrap textarea:focus{box-shadow:0 0 8px #eaeaea}.buddypress-wrap select{height:auto}.buddypress-wrap textarea{resize:vertical}.buddypress-wrap .standard-form .bp-controls-wrap{margin:1em 0}.buddypress-wrap .standard-form .groups-members-search input[type=search],.buddypress-wrap .standard-form .groups-members-search input[type=text],.buddypress-wrap .standard-form [data-bp-search] input[type=search],.buddypress-wrap .standard-form [data-bp-search] input[type=text],.buddypress-wrap .standard-form input[type=color],.buddypress-wrap .standard-form input[type=date],.buddypress-wrap .standard-form input[type=datetime-local],.buddypress-wrap .standard-form input[type=datetime],.buddypress-wrap .standard-form input[type=email],.buddypress-wrap .standard-form input[type=month],.buddypress-wrap .standard-form input[type=number],.buddypress-wrap .standard-form input[type=password],.buddypress-wrap .standard-form input[type=range],.buddypress-wrap .standard-form input[type=search],.buddypress-wrap .standard-form input[type=tel],.buddypress-wrap .standard-form input[type=text],.buddypress-wrap .standard-form input[type=time],.buddypress-wrap .standard-form input[type=url],.buddypress-wrap .standard-form input[type=week],.buddypress-wrap .standard-form select,.buddypress-wrap .standard-form textarea{background-color:#fafafa;border:1px solid #d6d6d6;border-radius:0;font:inherit;font-size:100%;padding:.5em}.buddypress-wrap .standard-form input[required],.buddypress-wrap .standard-form select[required],.buddypress-wrap .standard-form textarea[required]{box-shadow:none;border-width:2px;outline:0}.buddypress-wrap .standard-form input[required]:invalid,.buddypress-wrap .standard-form select[required]:invalid,.buddypress-wrap .standard-form textarea[required]:invalid{border-color:#b71717}.buddypress-wrap .standard-form input[required]:valid,.buddypress-wrap .standard-form select[required]:valid,.buddypress-wrap .standard-form textarea[required]:valid{border-color:#91cc2c}.buddypress-wrap .standard-form input[required]:focus,.buddypress-wrap .standard-form select[required]:focus,.buddypress-wrap .standard-form textarea[required]:focus{border-color:#d6d6d6;border-width:1px}.buddypress-wrap .standard-form input.invalid[required],.buddypress-wrap .standard-form select.invalid[required],.buddypress-wrap .standard-form textarea.invalid[required]{border-color:#b71717}.buddypress-wrap .standard-form input:not(.small),.buddypress-wrap .standard-form textarea{width:100%}.buddypress-wrap .standard-form input[type=checkbox],.buddypress-wrap .standard-form input[type=radio]{margin-right:5px;width:auto}.buddypress-wrap .standard-form select{padding:3px}.buddypress-wrap .standard-form textarea{height:120px}.buddypress-wrap .standard-form textarea#message_content{height:200px}.buddypress-wrap .standard-form input[type=password]{margin-bottom:5px}.buddypress-wrap .standard-form input:focus,.buddypress-wrap .standard-form select:focus,.buddypress-wrap .standard-form textarea:focus{background-color:#fafafa;color:#555;outline:0}.buddypress-wrap .standard-form label,.buddypress-wrap .standard-form span.label{display:block;font-weight:600;margin:15px 0 5px;width:auto}.buddypress-wrap .standard-form a.clear-value{display:block;margin-top:5px;outline:0}.buddypress-wrap .standard-form .submit{clear:both;padding:15px 0 0}.buddypress-wrap .standard-form p.submit{margin-bottom:0}.buddypress-wrap .standard-form div.submit input{margin-right:15px}.buddypress-wrap .standard-form #invite-list label,.buddypress-wrap .standard-form p label{font-weight:400;margin:auto}.buddypress-wrap .standard-form p.description{color:#737373;margin:5px 0}.buddypress-wrap .standard-form div.checkbox label:nth-child(n+2),.buddypress-wrap .standard-form div.radio div label{color:#737373;font-size:100%;font-weight:400;margin:5px 0 0}.buddypress-wrap .standard-form#send-reply textarea{width:97.5%}.buddypress-wrap .standard-form#sidebar-login-form label{margin-top:5px}.buddypress-wrap .standard-form#sidebar-login-form input[type=password],.buddypress-wrap .standard-form#sidebar-login-form input[type=text]{padding:4px;width:95%}.buddypress-wrap .standard-form.profile-edit input:focus{background:#fff}@media screen and (min-width:46.8em){.buddypress-wrap .standard-form .left-menu{float:left}.buddypress-wrap .standard-form #invite-list ul{list-style:none;margin:1%}.buddypress-wrap .standard-form #invite-list ul li{margin:0 0 0 1%}.buddypress-wrap .standard-form .main-column{margin-left:190px}.buddypress-wrap .standard-form .main-column ul#friend-list{clear:none;float:left}.buddypress-wrap .standard-form .main-column ul#friend-list h4{clear:none}}.buddypress-wrap .standard-form .bp-tables-user label{margin:0}.buddypress-wrap .signup-form label,.buddypress-wrap .signup-form legend{font-weight:400}body.no-js .buddypress #delete_inbox_messages,body.no-js .buddypress #delete_sentbox_messages,body.no-js .buddypress #message-type-select,body.no-js .buddypress #messages-bulk-management #select-all-messages,body.no-js .buddypress #notifications-bulk-management #select-all-notifications,body.no-js .buddypress label[for=message-type-select]{display:none}.buddypress-wrap .wp-editor-wrap .wp-editor-wrap button,.buddypress-wrap .wp-editor-wrap .wp-editor-wrap input[type=button],.buddypress-wrap .wp-editor-wrap .wp-editor-wrap input[type=submit],.buddypress-wrap .wp-editor-wrap a.button,.buddypress-wrap .wp-editor-wrap input[type=reset]{padding:0 8px 1px}.buddypress-wrap .select-wrap{border:1px solid #eee}.buddypress-wrap .select-wrap label{display:inline}.buddypress-wrap .select-wrap select::-ms-expand{display:none}.buddypress-wrap .select-wrap select{-moz-appearance:none;-webkit-appearance:none;-o-appearance:none;appearance:none;border:0;cursor:pointer;margin-right:-25px;padding:6px 25px 6px 10px;position:relative;text-indent:-2px;z-index:1;width:auto}.buddypress-wrap .select-wrap select,.buddypress-wrap .select-wrap select:active,.buddypress-wrap .select-wrap select:focus{background:0 0}.buddypress-wrap .select-wrap span.select-arrow{display:inline-block;position:relative;z-index:0}.buddypress-wrap .select-wrap span.select-arrow:before{color:#ccc;content:"\25BC"}.buddypress-wrap .select-wrap:focus .select-arrow:before,.buddypress-wrap .select-wrap:hover .select-arrow:before{color:#a6a6a6}.buddypress-wrap .bp-search form:focus,.buddypress-wrap .bp-search form:hover,.buddypress-wrap .select-wrap:focus,.buddypress-wrap .select-wrap:hover{border:1px solid #d5d4d4;box-shadow:inset 0 0 3px #eee}@media screen and (min-width:32em){.buddypress-wrap .notifications-options-nav .select-wrap{float:left}}.buddypress-wrap .bp-dir-search-form,.buddypress-wrap .bp-messages-search-form:after,.buddypress-wrap .bp-messages-search-form:before{content:" ";display:table}.buddypress-wrap .bp-dir-search-form,.buddypress-wrap .bp-messages-search-form:after{clear:both}.buddypress-wrap form#group-members-search,.buddypress-wrap form.bp-dir-search-form,.buddypress-wrap form.bp-messages-search-form,.buddypress-wrap form[data-bp-search].bp-invites-search-form{border:1px solid #eee;width:100%}.buddypress-wrap form#group-members-search label,.buddypress-wrap form.bp-dir-search-form label,.buddypress-wrap form.bp-messages-search-form label,.buddypress-wrap form[data-bp-search].bp-invites-search-form label{margin:0}.buddypress-wrap form#group-members-search button[type=submit],.buddypress-wrap form#group-members-search input[type=search],.buddypress-wrap form#group-members-search input[type=text],.buddypress-wrap form.bp-dir-search-form button[type=submit],.buddypress-wrap form.bp-dir-search-form input[type=search],.buddypress-wrap form.bp-dir-search-form input[type=text],.buddypress-wrap form.bp-messages-search-form button[type=submit],.buddypress-wrap form.bp-messages-search-form input[type=search],.buddypress-wrap form.bp-messages-search-form input[type=text],.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=text]{background:0 0;border:0;border-radius:0;background-clip:padding-box}.buddypress-wrap form#group-members-search input[type=search],.buddypress-wrap form#group-members-search input[type=text],.buddypress-wrap form.bp-dir-search-form input[type=search],.buddypress-wrap form.bp-dir-search-form input[type=text],.buddypress-wrap form.bp-messages-search-form input[type=search],.buddypress-wrap form.bp-messages-search-form input[type=text],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search],.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=text]{float:left;line-height:2;padding:3px 10px;width:78%}.buddypress-wrap form#group-members-search button[type=submit],.buddypress-wrap form.bp-dir-search-form button[type=submit],.buddypress-wrap form.bp-messages-search-form button[type=submit],.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit]{float:right;font-size:inherit;font-weight:400;line-height:1.5;padding:3px .7em;text-align:center;text-transform:none;width:20%}.buddypress-wrap form#group-members-search button[type=submit] span,.buddypress-wrap form.bp-dir-search-form button[type=submit] span,.buddypress-wrap form.bp-messages-search-form button[type=submit] span,.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit] span{font-family:dashicons;font-size:18px;line-height:1.6}.buddypress-wrap form#group-members-search button[type=submit].bp-show,.buddypress-wrap form.bp-dir-search-form button[type=submit].bp-show,.buddypress-wrap form.bp-messages-search-form button[type=submit].bp-show,.buddypress-wrap form[data-bp-search].bp-invites-search-form button[type=submit].bp-show{height:auto;left:0;overflow:visible;position:static;top:0}.buddypress-wrap form#group-members-search input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}.buddypress-wrap form#group-members-search input[type=search]::-webkit-search-results-button,.buddypress-wrap form#group-members-search input[type=search]::-webkit-search-results-decoration,.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-results-decoration,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-results-decoration,.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form[data-bp-search].bp-invites-search-form input[type=search]::-webkit-search-results-decoration{display:none}.buddypress-wrap form#group-members-search:hover{border:1px solid #d5d4d4;box-shadow:inset 0 0 3px #eee}.buddypress-wrap ul.filters li form label input{line-height:1.4;padding:.1em .7em}.buddypress-wrap .current-group-type,.buddypress-wrap .current-member-type{font-style:italic}.buddypress-wrap .dir-form{clear:both}.budypress.no-js form.bp-dir-search-form button[type=submit]{height:auto;left:0;overflow:visible;position:static;top:0}.bp-user [data-bp-search] form input[type=search],.bp-user [data-bp-search] form input[type=text]{padding:6px 10px 7px}.buddypress-wrap .bp-tables-user,.buddypress-wrap table.forum,.buddypress-wrap table.wp-profile-fields{width:100%}.buddypress-wrap .bp-tables-user thead tr,.buddypress-wrap table.forum thead tr,.buddypress-wrap table.wp-profile-fields thead tr{background:0 0;border-bottom:2px solid #ccc}.buddypress-wrap .bp-tables-user tbody tr,.buddypress-wrap table.forum tbody tr,.buddypress-wrap table.wp-profile-fields tbody tr{background:#fafafa}.buddypress-wrap .bp-tables-user tr td,.buddypress-wrap .bp-tables-user tr th,.buddypress-wrap table.forum tr td,.buddypress-wrap table.forum tr th,.buddypress-wrap table.wp-profile-fields tr td,.buddypress-wrap table.wp-profile-fields tr th{padding:.5em;vertical-align:middle}.buddypress-wrap .bp-tables-user tr td.label,.buddypress-wrap table.forum tr td.label,.buddypress-wrap table.wp-profile-fields tr td.label{border-right:1px solid #eaeaea;font-weight:600;width:25%}.buddypress-wrap .bp-tables-user tr.alt td,.buddypress-wrap table.wp-profile-fields tr.alt td{background:#fafafa}.buddypress-wrap table.profile-fields .data{padding:.5em 1em}.buddypress-wrap table.profile-fields tr:last-child{border-bottom:none}.buddypress-wrap table.notifications td{padding:1em .5em}.buddypress-wrap table.notifications .bulk-select-all,.buddypress-wrap table.notifications .bulk-select-check{width:7%}.buddypress-wrap table.notifications .bulk-select-check{vertical-align:middle}.buddypress-wrap table.notifications .date,.buddypress-wrap table.notifications .notification-description,.buddypress-wrap table.notifications .notification-since,.buddypress-wrap table.notifications .title{width:39%}.buddypress-wrap table.notifications .actions,.buddypress-wrap table.notifications .notification-actions{width:15%}.buddypress-wrap table.notification-settings th.title,.buddypress-wrap table.profile-settings th.title{width:80%}.buddypress-wrap table.notifications .notification-actions a.delete,.buddypress-wrap table.notifications .notification-actions a.mark-read{display:inline-block}.buddypress-wrap table.notification-settings{margin-bottom:15px;text-align:left}.buddypress-wrap #groups-notification-settings{margin-bottom:0}.buddypress-wrap table.notification-settings td:first-child,.buddypress-wrap table.notification-settings th.icon,.buddypress-wrap table.notifications td:first-child,.buddypress-wrap table.notifications th.icon{display:none}.buddypress-wrap table.notification-settings .no,.buddypress-wrap table.notification-settings .yes{text-align:center;width:40px;vertical-align:middle}.buddypress-wrap table#message-threads{clear:both}.buddypress-wrap table#message-threads .thread-info{min-width:40%}.buddypress-wrap table#message-threads .thread-info p{margin:0}.buddypress-wrap table#message-threads .thread-info p.thread-excerpt{color:#737373;font-size:12px;margin-top:3px}.buddypress-wrap table.profile-fields{margin-bottom:20px}.buddypress-wrap table.profile-fields:last-child{margin-bottom:0}.buddypress-wrap table.profile-fields p{margin:0}.buddypress-wrap table.profile-fields p:last-child{margin-top:0}.bp-screen-reader-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.center-vert{display:flex;align-items:center}.bp-hide{display:none}.bp-show{height:auto;left:0;overflow:visible;position:static;top:0}.buddypress .buddypress-wrap .activity-read-more a,.buddypress .buddypress-wrap .comment-reply-link,.buddypress .buddypress-wrap .generic-button a,.buddypress .buddypress-wrap a.bp-title-button,.buddypress .buddypress-wrap a.button,.buddypress .buddypress-wrap button,.buddypress .buddypress-wrap input[type=button],.buddypress .buddypress-wrap input[type=reset],.buddypress .buddypress-wrap input[type=submit],.buddypress .buddypress-wrap ul.button-nav:not(.button-tabs) li a{background:#fff;border-color:#ccc;border-style:solid;border-width:1px;border-radius:0;color:#555;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:400;outline:0;padding:.3em .5em;text-align:center;text-decoration:none;width:auto;line-height:1}.buddypress .buddypress-wrap a.button.dashicons,.buddypress .buddypress-wrap button.dashicons{font-family:dashicons}.buddypress .buddypress-wrap .button-small[type=button]{padding:0 8px 1px}.buddypress .buddypress-wrap .activity-read-more a:focus,.buddypress .buddypress-wrap .activity-read-more a:hover,.buddypress .buddypress-wrap .button-nav li a:focus,.buddypress .buddypress-wrap .button-nav li a:hover,.buddypress .buddypress-wrap .button-nav li.current a,.buddypress .buddypress-wrap .comment-reply-link:focus,.buddypress .buddypress-wrap .comment-reply-link:hover,.buddypress .buddypress-wrap .generic-button a:focus,.buddypress .buddypress-wrap .generic-button a:hover,.buddypress .buddypress-wrap a.button:focus,.buddypress .buddypress-wrap a.button:hover,.buddypress .buddypress-wrap button:focus,.buddypress .buddypress-wrap button:hover,.buddypress .buddypress-wrap input[type=button]:focus,.buddypress .buddypress-wrap input[type=button]:hover,.buddypress .buddypress-wrap input[type=reset]:focus,.buddypress .buddypress-wrap input[type=reset]:hover,.buddypress .buddypress-wrap input[type=submit]:focus,.buddypress .buddypress-wrap input[type=submit]:hover{background:#ededed;border-color:#999;color:#333;outline:0;text-decoration:none}.buddypress .buddypress-wrap a.disabled,.buddypress .buddypress-wrap button.disabled,.buddypress .buddypress-wrap button.pending,.buddypress .buddypress-wrap div.pending a,.buddypress .buddypress-wrap input[type=button].disabled,.buddypress .buddypress-wrap input[type=button].pending,.buddypress .buddypress-wrap input[type=reset].disabled,.buddypress .buddypress-wrap input[type=reset].pending,.buddypress .buddypress-wrap input[type=submit].pending,.buddypress .buddypress-wrap input[type=submit]:disabled,.buddypress .buddypress-wrap input[type=submit][disabled=disabled]{border-color:#eee;color:#767676;cursor:default}.buddypress .buddypress-wrap a.disabled:hover,.buddypress .buddypress-wrap button.disabled:hover,.buddypress .buddypress-wrap button.pending:hover,.buddypress .buddypress-wrap div.pending a:hover,.buddypress .buddypress-wrap input[type=button]:hover.disabled,.buddypress .buddypress-wrap input[type=button]:hover.pending,.buddypress .buddypress-wrap input[type=reset]:hover.disabled,.buddypress .buddypress-wrap input[type=reset]:hover.pending,.buddypress .buddypress-wrap input[type=submit]:hover.disabled,.buddypress .buddypress-wrap input[type=submit]:hover.pending{border-color:#eee;color:#767676}.buddypress .buddypress-wrap button.text-button,.buddypress .buddypress-wrap input.text-button{background:0 0;border:0;box-shadow:none;color:#767676}.buddypress .buddypress-wrap button.text-button.small,.buddypress .buddypress-wrap input.text-button.small{font-size:13px}.buddypress .buddypress-wrap button.text-button:focus,.buddypress .buddypress-wrap button.text-button:hover,.buddypress .buddypress-wrap input.text-button:focus,.buddypress .buddypress-wrap input.text-button:hover{background:0 0;text-decoration:underline}.buddypress .buddypress-wrap .activity-list a.button{border:none}.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.invite-button:hover{color:#1fb3dd}.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.group-remove-invite-button:hover,.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.invite-button:hover,.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li.selected a.group-remove-invite-button:hover,.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li.selected a.invite-button:hover{color:#a00}.buddypress .buddypress-wrap #item-buttons:empty{display:none}.buddypress .buddypress-wrap input:disabled:focus,.buddypress .buddypress-wrap input:disabled:hover{background:0 0}.buddypress .buddypress-wrap .text-links-list a.button{background:0 0;border:none;border-right:1px solid #eee;color:#737373;display:inline-block;padding:.3em 1em}.buddypress .buddypress-wrap .text-links-list a.button:visited{color:#d6d6d6}.buddypress .buddypress-wrap .text-links-list a.button:focus,.buddypress .buddypress-wrap .text-links-list a.button:hover{color:#5087e5}.buddypress .buddypress-wrap .text-links-list a:first-child{padding-left:0}.buddypress .buddypress-wrap .text-links-list a:last-child{border-right:none}.buddypress .buddypress-wrap .bp-list.grid .action a,.buddypress .buddypress-wrap .bp-list.grid .action button{border:1px solid #ccc;display:block;margin:0}.buddypress .buddypress-wrap .bp-list.grid .action a:focus,.buddypress .buddypress-wrap .bp-list.grid .action a:hover,.buddypress .buddypress-wrap .bp-list.grid .action button:focus,.buddypress .buddypress-wrap .bp-list.grid .action button:hover{background:#ededed}.buddypress #buddypress .create-button{background:0 0;text-align:center}.buddypress #buddypress .create-button a:focus,.buddypress #buddypress .create-button a:hover{text-decoration:underline}@media screen and (min-width:46.8em){.buddypress #buddypress .create-button{float:right}}.buddypress #buddypress .create-button a{border:1px solid #ccc;border-radius:5px;background-clip:padding-box;box-shadow:inset 0 0 6px 0 #eaeaea;margin:.2em 0;width:auto}.buddypress #buddypress .create-button a:focus,.buddypress #buddypress .create-button a:hover{background:0 0;border-color:#ccc;box-shadow:inset 0 0 12px 0 #eaeaea}@media screen and (min-width:46.8em){.buddypress #buddypress.bp-dir-vert-nav .create-button{float:none;padding-top:2em}.buddypress #buddypress.bp-dir-vert-nav .create-button a{margin-right:.5em}}.buddypress #buddypress.bp-dir-hori-nav .create-button{float:left}.buddypress #buddypress.bp-dir-hori-nav .create-button a,.buddypress #buddypress.bp-dir-hori-nav .create-button a:hover{background:0 0;border:0;box-shadow:none;margin:0}.buddypress-wrap button.ac-reply-cancel,.buddypress-wrap button.bp-icons{background:0 0;border:0}.buddypress-wrap button.bp-icons:focus,.buddypress-wrap button.bp-icons:hover{background:0 0}.buddypress-wrap button.ac-reply-cancel:focus,.buddypress-wrap button.ac-reply-cancel:hover{background:0 0;text-decoration:underline}.buddypress-wrap .bp-invites-content li .invite-button span.icons:before,.buddypress-wrap .bp-invites-filters .invite-button span.icons:before,.buddypress-wrap .bp-messages-filters li a.messages-button:before,.buddypress-wrap .feed a:before,.buddypress-wrap .filter label:before{font-family:dashicons;font-size:18px}.buddypress-wrap .bp-invites-content .item-list li .invite-button span.icons:before{font-size:27px}@media screen and (min-width:46.8em){.buddypress-wrap .bp-invites-content .item-list li .invite-button span.icons:before{font-size:32px}}.buddypress-wrap .bp-list a.button.invite-button:focus,.buddypress-wrap .bp-list a.button.invite-button:hover{background:0 0}.buddypress-wrap .filter label:before{content:"\f536"}.buddypress-wrap div.feed a:before,.buddypress-wrap li.feed a:before{content:"\f303"}.buddypress-wrap ul.item-list li .invite-button:not(.group-remove-invite-button) span.icons:before{content:"\f502"}.buddypress-wrap ul.item-list li .group-remove-invite-button span.icons:before,.buddypress-wrap ul.item-list li.selected .invite-button span.icons:before{content:"\f153"}.buddypress-wrap .bp-invites-filters ul li #bp-invites-next-page:before,.buddypress-wrap .bp-messages-filters ul li #bp-messages-next-page:before{content:"\f345"}.buddypress-wrap .bp-invites-filters ul li #bp-invites-prev-page:before,.buddypress-wrap .bp-messages-filters ul li #bp-messages-prev-page:before{content:"\f341"}.buddypress-wrap .warn{color:#b71717}.buddypress-wrap .bp-messages{border:1px solid #ccc;margin:0 0 15px}.buddypress-wrap .bp-messages .sitewide-notices{display:block;margin:5px;padding:.5em}.buddypress-wrap .bp-messages.info{margin-bottom:0}.buddypress-wrap .bp-messages.updated{clear:both;display:block}.buddypress-wrap .bp-messages.bp-user-messages-feedback{border:0}.buddypress-wrap #group-create-body .bp-cover-image-status p.warning{background:#0b80a4;border:0;box-shadow:0 0 3px 0 rgba(0,0,0,.2);color:#fff}.buddypress-wrap .bp-feedback:not(.custom-homepage-info){display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row nowrap;flex-flow:row nowrap;align-items:stretch}.buddypress-wrap .bp-feedback{background:#fff;color:#807f7f;box-shadow:0 1px 1px 1px rgba(0,0,0,.1);color:#737373;margin:10px 0;position:relative}.buddypress-wrap .bp-feedback p{margin:0}.buddypress-wrap .bp-feedback span.bp-icon{color:#fff;display:block;font-family:dashicons;left:0;margin-right:10px;position:relative;padding:0 .5em}.buddypress-wrap .bp-feedback .bp-help-text{font-style:italic}.buddypress-wrap .bp-feedback .text{font-size:14px;margin:0;padding:.5em 0}.buddypress-wrap .bp-feedback.no-icon{padding:.5em}.buddypress-wrap .bp-feedback.small:before{line-height:inherit}.buddypress-wrap a[data-bp-close] span:before,.buddypress-wrap button[data-bp-close] span:before{font-size:32px}.buddypress-wrap a[data-bp-close],.buddypress-wrap button[data-bp-close]{border:0;position:absolute;top:10px;right:10px;width:32px}.buddypress-wrap .bp-feedback.no-icon a[data-bp-close],.buddypress-wrap .bp-feedback.no-icon button[data-bp-close]{top:-6px;right:6px}.buddypress-wrap button[data-bp-close]:hover{background-color:transparent}.buddypress-wrap .bp-feedback p{margin:0}.buddypress-wrap .bp-feedback .bp-icon{font-size:20px;padding:0 2px}.buddypress-wrap .bp-feedback.error .bp-icon,.buddypress-wrap .bp-feedback.help .bp-icon,.buddypress-wrap .bp-feedback.info .bp-icon,.buddypress-wrap .bp-feedback.loading .bp-icon,.buddypress-wrap .bp-feedback.success .bp-icon,.buddypress-wrap .bp-feedback.updated .bp-icon,.buddypress-wrap .bp-feedback.warning .bp-icon{display:flex;align-items:center}.buddypress-wrap .bp-feedback.help .bp-icon,.buddypress-wrap .bp-feedback.info .bp-icon{background-color:#0b80a4}.buddypress-wrap .bp-feedback.help .bp-icon:before,.buddypress-wrap .bp-feedback.info .bp-icon:before{content:"\f348"}.buddypress-wrap .bp-feedback.error .bp-icon,.buddypress-wrap .bp-feedback.warning .bp-icon{background-color:#d33}.buddypress-wrap .bp-feedback.error .bp-icon:before,.buddypress-wrap .bp-feedback.warning .bp-icon:before{content:"\f534"}.buddypress-wrap .bp-feedback.loading .bp-icon{background-color:#ffd087}.buddypress-wrap .bp-feedback.loading .bp-icon:before{content:"\f469"}.buddypress-wrap .bp-feedback.success .bp-icon,.buddypress-wrap .bp-feedback.updated .bp-icon{background-color:#8a2}.buddypress-wrap .bp-feedback.success .bp-icon:before,.buddypress-wrap .bp-feedback.updated .bp-icon:before{content:"\f147"}.buddypress-wrap .bp-feedback.help .bp-icon:before{content:"\f468"}.buddypress-wrap #pass-strength-result{background-color:#eee;border-color:#ddd;border-style:solid;border-width:1px;display:none;font-weight:700;margin:10px 0 10px 0;padding:.5em;text-align:center;width:auto}.buddypress-wrap #pass-strength-result.show{display:block}.buddypress-wrap #pass-strength-result.mismatch{background-color:#333;border-color:transparent;color:#fff}.buddypress-wrap #pass-strength-result.bad,.buddypress-wrap #pass-strength-result.error{background-color:#ffb78c;border-color:#ff853c;color:#333}.buddypress-wrap #pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040;color:#333}.buddypress-wrap #pass-strength-result.good{background-color:#ffec8b;border-color:#fc0;color:#333}.buddypress-wrap #pass-strength-result.strong{background-color:#66d66e;border-color:#438c48;color:#333}.buddypress-wrap .standard-form#signup_form div div.error{background:#faa;color:#a00;margin:0 0 10px 0;padding:.5em;width:90%}.buddypress-wrap .accept,.buddypress-wrap .reject{float:left;margin-left:10px}.buddypress-wrap .members-list.grid .bp-ajax-message{background:rgba(255,255,255,.9);border:1px solid #eee;font-size:14px;left:2%;position:absolute;padding:.5em 1em;right:2%;top:30px}body.create-blog #buddypress .error,body.create-blog #buddypress .success{background:#fff;color:#807f7f;box-shadow:0 1px 1px 1px rgba(0,0,0,.1);color:#737373;padding:10px 15px;background-color:#fff}body.create-blog #buddypress .error{border-left:4px solid #d33}body.create-blog #buddypress .success{border-left:4px solid #8a2}.buddypress.widget .item-options{font-size:12px;margin:0 0 1em;padding:1em 0}.buddypress.widget .bp-login-widget-user-avatar{float:left}.buddypress.widget .bp-login-widget-user-links{margin-left:70px}.buddypress.widget ul.item-list{list-style:none;margin:10px 0}.buddypress.widget ul.activity-list{padding:0}.buddypress.widget ul.activity-list blockquote{margin:0 0 1.5em;overflow:visible;padding:0 0 .75em .75em}.buddypress.widget ul.activity-list img{margin-bottom:.5em}.buddypress.widget ul.activity-list li{border-bottom:1px solid #ccc;margin-bottom:1em}.buddypress.widget ul.activity-list li .activity-header p{margin-bottom:.5em}.buddypress.widget ul.activity-list li:last-child{border-bottom:0}.buddypress.widget .avatar-block{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row wrap;flex-flow:row wrap}.buddypress.widget .avatar-block img{margin:.5em}.buddypress.widget ul#friends-list li:after,.buddypress.widget ul#friends-list li:before,.buddypress.widget ul#groups-list li:after,.buddypress.widget ul#groups-list li:before,.buddypress.widget ul#members-list li:after,.buddypress.widget ul#members-list li:before{content:" ";display:table}.buddypress.widget ul#friends-list li:after,.buddypress.widget ul#groups-list li:after,.buddypress.widget ul#members-list li:after{clear:both}.buddypress.widget ul#friends-list li,.buddypress.widget ul#groups-list li,.buddypress.widget ul#members-list li{margin-bottom:1em}.buddypress.widget ul#friends-list li .item-avatar,.buddypress.widget ul#groups-list li .item-avatar,.buddypress.widget ul#members-list li .item-avatar{float:left;width:60px}.buddypress.widget ul#friends-list li .item,.buddypress.widget ul#groups-list li .item,.buddypress.widget ul#members-list li .item{margin-left:70px}.buddypress-wrap .buddypress.widget ul#friends-list,.buddypress-wrap .buddypress.widget ul#groups-list,.buddypress-wrap .buddypress.widget ul#members-list{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:column nowrap;flex-flow:column nowrap}@media screen and (min-width:32em){.buddypress-wrap .buddypress.widget ul#friends-list,.buddypress-wrap .buddypress.widget ul#groups-list,.buddypress-wrap .buddypress.widget ul#members-list{display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-o-flex-flow:row wrap;flex-flow:row wrap}}.buddypress-wrap .buddypress.widget ul#friends-list li,.buddypress-wrap .buddypress.widget ul#groups-list li,.buddypress-wrap .buddypress.widget ul#members-list li{border:1px solid #eee;align-items:stretch;-moz-flex:1 1 46%;-o-flex:1 1 46%;flex:1 1 46%;margin:2%}@media screen and (min-width:75em){.buddypress-wrap .buddypress.widget ul#friends-list li,.buddypress-wrap .buddypress.widget ul#groups-list li,.buddypress-wrap .buddypress.widget ul#members-list li{-moz-flex:0 1 20%;-o-flex:0 1 20%;flex:0 1 20%}}.buddypress-wrap .buddypress.widget ul#friends-list li .item-avatar,.buddypress-wrap .buddypress.widget ul#groups-list li .item-avatar,.buddypress-wrap .buddypress.widget ul#members-list li .item-avatar{padding:.5em;text-align:center}.buddypress-wrap .buddypress.widget ul#friends-list li .item,.buddypress-wrap .buddypress.widget ul#groups-list li .item,.buddypress-wrap .buddypress.widget ul#members-list li .item{padding:.5em}.buddypress-wrap .buddypress.widget ul#friends-list li .item .item-meta,.buddypress-wrap .buddypress.widget ul#groups-list li .item .item-meta,.buddypress-wrap .buddypress.widget ul#members-list li .item .item-meta{font-size:12px;overflow-wrap:break-word}@media screen and (min-width:75em){.buddypress-wrap .buddypress.widget ul#friends-list,.buddypress-wrap .buddypress.widget ul#groups-list,.buddypress-wrap .buddypress.widget ul#members-list{margin:10px -2%;width:100%}.buddypress-wrap .buddypress.widget ul#friends-list li,.buddypress-wrap .buddypress.widget ul#groups-list li,.buddypress-wrap .buddypress.widget ul#members-list li{-moz-flex:0 1 auto;-o-flex:0 1 auto;flex:0 1 auto;margin:10px 2% 1%;width:46%}}.buddypress-wrap .buddypress.widget blockquote{margin:0 0 1.5em;overflow:visible;padding:0 0 .75em .75em}#buddypress-wrap *{transition:opacity .1s ease-in-out .1s}#buddypress-wrap a.button,#buddypress-wrap a.generic-button,#buddypress-wrap button,#buddypress-wrap input[type=reset],#buddypress-wrap input[type=submit]{transition:background .1s ease-in-out .1s,color .1s ease-in-out .1s,border-color .1s ease-in-out .1s}.buddypress-wrap a.loading,.buddypress-wrap input.loading{animation:loader-pulsate .5s infinite ease-in-out alternate;border-color:#aaa}@keyframes loader-pulsate{from{border-color:#aaa;box-shadow:0 0 6px #ccc}to{border-color:#ccc;box-shadow:0 0 6px #f8f8f8}}.buddypress-wrap a.loading:hover,.buddypress-wrap input.loading:hover{color:#777}[data-bp-tooltip]{position:relative}[data-bp-tooltip]:after{background-color:#fff;display:none;opacity:0;position:absolute;transform:translate3d(0,0,0);visibility:hidden}[data-bp-tooltip]:after{border:1px solid #737373;border-radius:1px;box-shadow:4px 4px 8px rgba(0,0,0,.2);color:#333;content:attr(data-bp-tooltip);font-family:"Helvetica Neue",helvetica,arial,san-serif;font-size:12px;font-weight:400;letter-spacing:normal;line-height:1.25;max-width:200px;padding:5px 8px;pointer-events:none;text-shadow:none;text-transform:none;transition:all 1.5s ease;white-space:nowrap;word-wrap:break-word;z-index:100000}[data-bp-tooltip]:active:after,[data-bp-tooltip]:focus:after,[data-bp-tooltip]:hover:after{display:block;opacity:1;overflow:visible;visibility:visible}[data-bp-tooltip=""]{display:none;opacity:0;visibility:hidden}.bp-tooltip:after{left:50%;margin-top:7px;top:110%;transform:translate(-50%,0)}.user-list .bp-tooltip:after{left:0;transform:translate(0,0)}@media screen and (min-width:46.8em){.user-list .bp-tooltip:after{left:auto;right:0;transform:translate(0,0)}}.activity-list .bp-tooltip:after,.activity-meta-action .bp-tooltip:after,.avatar-block .item-avatar .bp-tooltip:after,.notification-actions .bp-tooltip:after,.participants-list .bp-tooltip:after{left:0;transform:translate(0,0)}.bp-invites-content .bp-tooltip:after,.message-metadata .actions .bp-tooltip:after,.single-message-thread-header .actions .bp-tooltip:after{left:auto;right:0;transform:translate(0,0)}.bp-invites-content #send-invites-editor .bp-tooltip:after{left:0;right:auto}#item-body,.single-screen-navs{box-sizing:border-box}.grid>li,.grid>li .generic-button a{box-sizing:border-box}.grid>li{border-bottom:0;padding-bottom:10px;padding-top:0}.grid>li .list-wrap{background:#fafafa;border:1px solid #eee;padding-bottom:15px;position:relative;overflow:hidden;padding-top:14px}.grid>li .list-wrap .list-title{padding:.5em}.grid>li .list-wrap .update{color:#737373;padding:.5em 2em}.grid>li .item-avatar{text-align:center}.grid>li .item-avatar .avatar{border-radius:50%;display:inline-block;width:50%}@media screen and (min-width:24em){.grid.members-list .list-wrap{min-height:340px}.grid.members-list .list-wrap .item-block{margin:0 auto;min-height:7rem}.grid.members-group-list .list-wrap .item-block{margin:0 auto;min-height:7rem}.grid.groups-list .list-wrap{min-height:470px}.grid.groups-list .list-wrap .item-block{min-height:6rem}.grid.groups-list .list-wrap .group-desc{margin:15px auto 0;min-height:5em;overflow:hidden}.grid.groups-list .list-wrap .group-details,.grid.groups-list .list-wrap .item-desc,.grid.groups-list .list-wrap .last-activity{margin-bottom:0}.grid.groups-list .list-wrap .group-details p,.grid.groups-list .list-wrap .item-desc p,.grid.groups-list .list-wrap .last-activity p{margin-bottom:0}.grid.blogs-list .list-wrap{min-height:350px}.grid.blogs-list .list-wrap .item-block{margin:0 auto;min-height:7rem}}@media screen and (min-width:24em){.grid>li.item-entry{float:left;margin:0}.grid.two>li{padding-bottom:20px}}@media screen and (min-width:24em) and (min-width:75em){.grid.two>li .list-wrap{max-width:500px;margin:0 auto}}@media screen and (min-width:24em){.grid.three>li,.grid.two>li{width:50%}.grid.three>li:nth-child(odd),.grid.two>li:nth-child(odd){padding-right:10px}.grid.three>li:nth-child(even),.grid.two>li:nth-child(even){padding-left:10px}.grid.three>li .item,.grid.two>li .item{margin:1rem auto 0;width:80%}.grid.three>li .item .item-title,.grid.two>li .item .item-title{width:auto}}@media screen and (min-width:46.8em){.grid.three>li{padding-top:0;width:33.333333%;width:calc(100% / 3)}.grid.three>li:nth-child(1n+1){padding-left:5px;padding-right:5px}.grid.three>li:nth-child(3n+3){padding-left:5px;padding-right:0}.grid.three>li:nth-child(3n+1){padding-left:0;padding-right:5px}}@media screen and (min-width:46.8em){.grid.four>li{width:25%}.grid.four>li:nth-child(1n+1){padding-left:5px;padding-right:5px}.grid.four>li:nth-child(4n+4){padding-left:5px;padding-right:0}.grid.four>li:nth-child(4n+1){padding-left:0;padding-right:5px}}.buddypress-wrap .grid.bp-list{padding-top:1em}.buddypress-wrap .grid.bp-list>li{border-bottom:none}.buddypress-wrap .grid.bp-list>li .list-wrap{padding-bottom:3em}.buddypress-wrap .grid.bp-list>li .item-avatar{margin:0;text-align:center;width:auto}.buddypress-wrap .grid.bp-list>li .item-avatar img.avatar{display:inline-block;height:auto;width:50%}.buddypress-wrap .grid.bp-list>li .item-meta,.buddypress-wrap .grid.bp-list>li .list-title{float:none;text-align:center}.buddypress-wrap .grid.bp-list>li .list-title{font-size:inherit;line-height:1.1}.buddypress-wrap .grid.bp-list>li .item{font-size:18px;left:0;margin:0 auto;text-align:center;width:96%}@media screen and (min-width:46.8em){.buddypress-wrap .grid.bp-list>li .item{font-size:22px}}.buddypress-wrap .grid.bp-list>li .item .group-desc,.buddypress-wrap .grid.bp-list>li .item .item-block{float:none;width:96%}.buddypress-wrap .grid.bp-list>li .item .item-block{margin-bottom:10px}.buddypress-wrap .grid.bp-list>li .item .last-activity{margin-top:5px}.buddypress-wrap .grid.bp-list>li .item .group-desc{clear:none}.buddypress-wrap .grid.bp-list>li .item .user-update{clear:both;text-align:left}.buddypress-wrap .grid.bp-list>li .item .activity-read-more a{display:inline}.buddypress-wrap .grid.bp-list>li .action{bottom:5px;float:none;height:auto;left:0;margin:0;padding:0 5px;position:absolute;text-align:center;top:auto;width:100%}.buddypress-wrap .grid.bp-list>li .action .generic-button{float:none;margin:5px 0 0;text-align:center;width:100%}.buddypress-wrap .grid.bp-list>li .action .generic-button a,.buddypress-wrap .grid.bp-list>li .action .generic-button button{width:100%}.buddypress-wrap .grid.bp-list>li .avatar,.buddypress-wrap .grid.bp-list>li .item,.buddypress-wrap .grid.bp-list>li .item-avatar{float:none}.buddypress-wrap .blogs-list.grid.two>li .blogs-title{min-height:5em}.buddypress-wrap .grid.four>li .group-desc,.buddypress-wrap .grid.three>li .group-desc{min-height:8em}.buddypress-wrap .blogs-list.grid.four>li,.buddypress-wrap .blogs-list.grid.three>li{min-height:350px}.buddypress-wrap .blogs-list.grid.four>li .last-activity,.buddypress-wrap .blogs-list.grid.three>li .last-activity{margin-bottom:0}.buddypress-wrap .blogs-list.grid.four>li .last-post,.buddypress-wrap .blogs-list.grid.three>li .last-post{margin-top:0}.buddypress:not(.logged-in) .grid.bp-list .list-wrap{padding-bottom:5px}.buddypress:not(.logged-in) .grid.groups-list .list-wrap{min-height:430px}.buddypress:not(.logged-in) .grid.members-list .list-wrap{min-height:300px}.buddypress:not(.logged-in) .grid.blogs-list .list-wrap{min-height:320px}@media screen and (min-width:46.8em){.bp-single-vert-nav .bp-navs.vertical{overflow:visible}.bp-single-vert-nav .bp-navs.vertical ul{border-right:1px solid #d6d6d6;border-bottom:0;float:left;margin-right:-1px;width:25%}.bp-single-vert-nav .bp-navs.vertical li{float:none;margin-right:0}.bp-single-vert-nav .bp-navs.vertical li.selected a{background:#ccc;color:#333}.bp-single-vert-nav .bp-navs.vertical li:focus,.bp-single-vert-nav .bp-navs.vertical li:hover{background:#ccc}.bp-single-vert-nav .bp-navs.vertical li span{background:#d6d6d6;border-radius:10%;float:right;margin-right:2px}.bp-single-vert-nav .bp-navs.vertical li:hover span{border-color:#eaeaea}.bp-single-vert-nav .bp-navs.vertical.tabbed-links li.selected a{padding-left:0}.bp-single-vert-nav .bp-wrap{margin-bottom:15px}.bp-single-vert-nav .bp-wrap .group-nav-tabs.groups-nav ul li,.bp-single-vert-nav .bp-wrap .user-nav-tabs.users-nav ul li{left:1px;position:relative}.bp-single-vert-nav .item-body:not(#group-create-body){background:#fff;border-left:1px solid #d6d6d6;float:right;margin:0;min-height:400px;padding:0 0 0 1em;width:calc(75% + 1px)}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links){background:#eaeaea;margin:0 0 0 -5px;width:auto}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li{font-size:16px;margin:10px 0}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a{border-right:1px solid #ccc;padding:0 .5em}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a:focus,.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a:hover{background:0 0}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.current a{background:0 0;color:#333;text-decoration:underline}.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li:last-child a{border:none}.bp-dir-vert-nav .dir-navs{float:left;left:1px;position:relative;width:20%}.bp-dir-vert-nav .dir-navs ul li{float:none;overflow:hidden;width:auto}.bp-dir-vert-nav .dir-navs ul li.selected{border:1px solid #eee}.bp-dir-vert-nav .dir-navs ul li.selected a{background:#555;color:#fff}.bp-dir-vert-nav .dir-navs ul li.selected a span{background:#eaeaea;border-color:#ccc;color:#5087e5}.bp-dir-vert-nav .dir-navs ul li a:focus,.bp-dir-vert-nav .dir-navs ul li a:hover{background:#ccc;color:#333}.bp-dir-vert-nav .dir-navs ul li a:focus span,.bp-dir-vert-nav .dir-navs ul li a:hover span{border:1px solid #555}.bp-dir-vert-nav .screen-content{border-left:1px solid #d6d6d6;margin-left:20%;overflow:hidden;padding:0 0 2em 1em}.bp-dir-vert-nav .screen-content .subnav-filters{margin-top:0}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li:not(.selected) a:hover,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li:not(.selected) a:focus,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li:not(.selected) a:hover{background:0 0}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li.selected{background:0 0;border:1px solid #d6d6d6;border-right-color:#fff}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected a,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li.selected a{background:0 0;color:#333;font-weight:600}.buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .dir-navs.groups-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .dir-navs.members-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .dir-navs.sites-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected a span,.buddypress-wrap.bp-vertical-navs .main-navs.user-nav-tabs ul li.selected a span{background:#555;border:1px solid #d6d6d6;color:#fff}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/twentytwentyone-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/twentytwentyone-rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..453826cd5ed4f9272ae5014e7aecd90d49fa05e1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/twentytwentyone-rtl.css @@ -0,0 +1,1383 @@ +/*-------------------------------------------------------------- +Hello, this is the BP Nouveau's Twenty Twenty-One companion stylesheet. + +@since 7.0.0 +@version 7.0.0 + +---------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +1.0 - BP Generic, Typography & Imagery + +2.0 - Navigation - General + 2.1 - Navs - Object Nav / Sub Nav (item-list-tabs) + 2.2 - Pagination + +3.0 - BP Lists / Loops Generic & filters + 3.1 - Activity Loop + 3.1.1 Whats New Activity + 3.1.2 - Activity Entries + 3.1.3 - Activity Comments + 3.2 - Blogs Loop + 3.3 - Groups Loop + 3.4 - Members Loop + +4.0 - Directories - Members, Groups, Blogs, Register, Activation + 4.1 - Groups Creation Steps Screens +5.0 - Single Item screens: User Account & Single Group Screens + 5.1 - Item Headers: Global + 5.1.1 - item-header: Groups + 5.1.2 - item-header: User Accounts + 5.2 - Item Body: Global + 5.2.1 - item-body: Groups + 5.2.1.1 - Management settings screens + 5.2.1.2 - Group Members list + 5.2.1.3 - Group Invite list + 5.2.1.4 - Group Activity + 5.2.2 - item-body: User Accounts + 5.2.2.1 - classes, pag, filters + 5.2.2.2 - Extended Profiles + 5.2.2.3 - Groups + 5.2.2.4 - friends + 5.2.2.5 - Private Messaging Threads + 5.2.2.6 - Settings + +6.0 - Forms - General + 6.1 - Dir Search + +7.0 - Tables - General + +8.0 - Classes - Messages, Ajax, Widgets, Buttons, Tooltips + +9.0 - Layout Classes. +--------------------------------------------------------------*/ +/** +*------------------------------------------------------------------------------- +* @section 1.0 - BP Generic, Typography & Imagery +*------------------------------------------------------------------------------- +*/ +.is-dark-theme #buddypress.twentytwentyone .avatar { + background: var(--global--color-white-90); +} + +/** +*------------------------------------------------------------------------------- +* @section 2.0 - Navigation - General +*------------------------------------------------------------------------------- +*/ +/** +*---------------------------------------------------------- +* @section 2.1 - Navs Object Nav / Sub Nav (bp-list) +* +* The main navigational elements for all BP screens +*---------------------------------------------------------- +*/ +@media screen and (max-width: 46.8em) { + #buddypress.twentytwentyone:not(.bp-single-vert-nav) .bp-navs li { + background: transparent; + } +} + +#buddypress.twentytwentyone .bp-navs li .count { + background-color: var(--button--color-background); + border: 1px solid var(--button--color-background); + border-radius: 50%; + color: var(--button--color-text); +} + +#buddypress.twentytwentyone .bp-navs:not(.tabbed-links) li.selected a .count, +#buddypress.twentytwentyone .bp-navs:not(.tabbed-links) li.current a .count, +#buddypress.twentytwentyone .bp-navs:not(.tabbed-links) li a:hover a .count { + background-color: var(--global--color-background); + border: 1px solid var(--global--color-background); + color: var(--button--color-text-hover); +} + +#buddypress.twentytwentyone .bp-navs li:not(.current):not(.selected) a:focus, +#buddypress.twentytwentyone .bp-navs li:not(.current):not(.selected) a:hover { + background: var(--global--color-background); + color: var(--global--color-primary); + outline-offset: -6px; + outline: 2px dotted currentColor; +} + +#buddypress.twentytwentyone .bp-navs li.selected a, +#buddypress.twentytwentyone .bp-navs li.selected a:focus, +#buddypress.twentytwentyone .bp-navs li.selected a:hover, +#buddypress.twentytwentyone .bp-navs li.current a, +#buddypress.twentytwentyone .bp-navs li.current a:focus, +#buddypress.twentytwentyone .bp-navs li.current a:hover { + color: var(--button--color-text); + background-color: var(--button--color-background); +} + +#buddypress.twentytwentyone .bp-navs.tabbed-links ul, +#buddypress.twentytwentyone .bp-navs.tabbed-links ol { + border-bottom: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-navs.tabbed-links ul li.current, +#buddypress.twentytwentyone .bp-navs.tabbed-links ol li.current { + border-color: var(--global--color-primary) var(--global--color-primary) var(--global--color-background); + border-style: solid; + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} + +#buddypress.twentytwentyone .bp-navs.tabbed-links ul li.current a, +#buddypress.twentytwentyone .bp-navs.tabbed-links ol li.current a { + color: var(--global--color-primary); + background-color: var(--global--color-background); +} + +#buddypress.twentytwentyone #group-invites-container .bp-invites-nav { + border-bottom: none; +} + +#buddypress.twentytwentyone #group-invites-container .bp-invites-nav li .count { + margin-right: 10px; + border-radius: 10%; + vertical-align: 10%; +} + +#buddypress.twentytwentyone #group-invites-container #send-invites-editor ul { + padding-right: 0; +} + +#buddypress.twentytwentyone.bp-dir-hori-nav:not(.bp-vertical-navs) nav:not(.tabbed-links) { + border: none; + border-bottom: 1px solid var(--global--color-primary); + box-shadow: none; +} + +#buddypress.twentytwentyone .subnav-filters > ul { + padding-right: 0; +} + +#buddypress.twentytwentyone .notifications-options-nav { + margin-top: 1em; +} + +#buddypress.twentytwentyone .notifications-options-nav input#notification-bulk-manage { + line-height: 1.2; +} + +/** +*---------------------------------------------------------- +* @section 2.2 - Pagination +*---------------------------------------------------------- +*/ +#buddypress.twentytwentyone .bp-pagination { + color: var(--global--color-secondary); +} + +/** +*------------------------------------------------------------------------------- +* @section 3.0 - BP Lists / Loops Generic +*------------------------------------------------------------------------------- +*/ +#buddypress.twentytwentyone .bp-list { + border-top: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-list > li { + border-bottom: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone .activity-list.bp-list { + background: inherit; + border-right: none; + border-left: none; + border-bottom: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone .activity-list.bp-list .activity-item { + background: inherit; + border: 1px solid var(--global--color-primary); + box-shadow: none; +} + +#buddypress.twentytwentyone .activity-list.bp-list .activity-item .activity-header .time-since, +#buddypress.twentytwentyone .activity-list.bp-list .activity-item .activity-header .time-since:hover { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .bp-list li:not(.mini) .item-avatar img.avatar { + display: block; + margin: 0 auto; + margin-bottom: 1em; +} + +@media screen and (min-width: 46.8em) { + #buddypress.twentytwentyone .bp-list li:not(.mini) .item-avatar { + max-width: 128px; + max-height: 128px; + margin: auto; + margin-left: 5%; + } +} + +#buddypress.twentytwentyone .bp-list li.mini .item-avatar img.avatar { + display: block; + margin: 0 auto; + max-width: 50px; + max-height: 50px; + margin-bottom: 1em; +} + +@media screen and (min-width: 46.8em) { + #buddypress.twentytwentyone .bp-list li.mini .item-avatar { + width: 5%; + margin: auto; + margin-left: 2%; + } +} + +#buddypress.twentytwentyone .bp-list li.mini .activity-meta.action { + clear: none; +} + +#buddypress.twentytwentyone .bp-list li .meta, +#buddypress.twentytwentyone .bp-list li .item-meta { + color: var(--global--color-secondary); +} + +/** +*---------------------------------------------------------- +* @section 3.1 - Activity Loop +*---------------------------------------------------------- +*/ +/** +*----------------------------------------------------- +* @section 3.1.1 - Activity Whats New +*----------------------------------------------------- +*/ +#buddypress.twentytwentyone .activity-update-form { + border: 1px solid var(--global--color-primary); + box-shadow: none; +} + +#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li { + margin-bottom: 0; +} + +#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object { + padding: 5px; + margin-right: 3px; + border-radius: 0; + border-style: dotted; + border-width: 0; + border-right-width: 1px; + border-left-width: 1px; +} + +#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object:not(.selected) { + background: var(--global--color-white-90); + color: var(--form--color-text); + border-color: var(--form--border-color); +} + +#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object:not(.selected):last-child { + border-bottom: dotted 1px; +} + +#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object:not(.selected):hover { + background: var(--global--color-blue); +} + +#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object.selected { + border: none; + background-color: transparent; +} + +/** +*----------------------------------------------------- +* @section 3.1.2 - Activity Entries +*----------------------------------------------------- +*/ +body .site #buddypress.twentytwentyone .activity-list .load-more, +body .site #buddypress.twentytwentyone .activity-list .load-newest { + background-color: var(--button--color-background); + color: var(--button--color-text); + border: 1px solid var(--button--color-background); +} + +body .site #buddypress.twentytwentyone .activity-list .load-more a, +body .site #buddypress.twentytwentyone .activity-list .load-newest a { + color: var(--button--color-text); +} + +body .site #buddypress.twentytwentyone .activity-list .load-more a:focus, +body .site #buddypress.twentytwentyone .activity-list .load-newest a:focus { + color: var(--button--color-text-hover); + background: transparent; + outline-offset: -6px; + outline: 2px dotted currentColor; +} + +body .site #buddypress.twentytwentyone .activity-list .load-more:hover, body .site #buddypress.twentytwentyone .activity-list .load-more:focus, +body .site #buddypress.twentytwentyone .activity-list .load-newest:hover, +body .site #buddypress.twentytwentyone .activity-list .load-newest:focus { + color: var(--button--color-text-hover); + background: transparent; +} + +body .site #buddypress.twentytwentyone .activity-list .load-more:hover a, body .site #buddypress.twentytwentyone .activity-list .load-more:focus a, +body .site #buddypress.twentytwentyone .activity-list .load-newest:hover a, +body .site #buddypress.twentytwentyone .activity-list .load-newest:focus a { + color: var(--button--color-text-hover); + background: transparent; +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-header, +body .site #buddypress.twentytwentyone .activity-list .activity-content .comment-header { + color: var(--global--color-secondary); +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-header a, +body .site #buddypress.twentytwentyone .activity-list .activity-content .comment-header a { + font-weight: 600; +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-header a:hover, +body .site #buddypress.twentytwentyone .activity-list .activity-content .comment-header a:hover { + text-decoration: underline; +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-inner, +body .site #buddypress.twentytwentyone .activity-list .activity-content blockquote { + background: inherit; + border: 1px dotted var(--global--color-primary); +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action { + background: inherit; +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .button:before, +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .icons:before { + height: auto; + width: auto; + display: inline; +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .button { + background: var(--global--color-background); + color: var(--global--color-primary); + border: none; +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .button span { + color: var(--global--color-secondary); +} + +body.activity-permalink #buddypress.twentytwentyone .activity-list { + border: none; +} + +body.activity-permalink #buddypress.twentytwentyone .activity-list .activity-avatar img.avatar { + background: var(--global--color-white); +} + +/** +*----------------------------------------------------- +* @section 3.1.3 - Activity Comments +*----------------------------------------------------- +*/ +#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-avatar { + width: auto; + margin-left: 0; +} + +#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-meta { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-meta a { + font-weight: 600; +} + +#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-meta a:hover { + text-decoration: underline; +} + +#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-content { + border-right: 1px solid var(--global--color-secondary); + margin: 15px 5% 0 0; +} + +/** +*---------------------------------------------------------- +* @section 3.2 - Blogs Loop +*---------------------------------------------------------- +*/ +/** +*---------------------------------------------------------- +* @section 3.3 - Groups Loop +*---------------------------------------------------------- +*/ +#buddypress.twentytwentyone .groups-list li .group-desc { + color: var(--global--color-secondary); + border: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone #groups-dir-list .current-group-type { + text-align: center; +} + +/** +*---------------------------------------------------------- +* @section 3.4 - Members Loop +*---------------------------------------------------------- +*/ +#buddypress.twentytwentyone .members-list li .user-update { + border: 1px dotted var(--global--color-primary); + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone #members-dir-list .current-member-type { + text-align: center; +} + +/** +*------------------------------------------------------------------------------- +* @section 4.0 - Directories +*------------------------------------------------------------------------------- +*/ +/** +*---------------------------------------------------------- +* @section 4.1 - Groups Creation Steps +*---------------------------------------------------------- +*/ +#buddypress.twentytwentyone #group-create-body nav.group-create-links:not(.tabbed-links) { + background: transparent; + clear: both; + overflow: hidden; + border: none; + border-bottom: 1px solid var(--global--color-primary); + box-shadow: none; +} + +#buddypress.twentytwentyone #group-create-body nav.group-create-links:not(.tabbed-links) li a, +#buddypress.twentytwentyone #group-create-body nav.group-create-links:not(.tabbed-links) li span { + padding: 0.5em calc(0.5em + 2px); + display: block; +} + +/** +*------------------------------------------------------------------------------- +* @section 5.0 - Single Item screens: Groups, Users +*------------------------------------------------------------------------------- +*/ +/** +*----------------------------------------------------------- +* @subsection 5.1 - Item Header Global +*----------------------------------------------------------- +*/ +#buddypress.twentytwentyone .single-headers .group-status, +#buddypress.twentytwentyone .single-headers .item-meta, +#buddypress.twentytwentyone .single-headers .bp-group-type-list, +#buddypress.twentytwentyone .single-headers .bp-member-type-list { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .single-headers a:hover { + text-decoration: underline; +} + +/** +*----------------------------------------------------- +* @subsection 5.1.1 - item-header Groups +* +* Group Specific Item Header +*----------------------------------------------------- +*/ +#buddypress.twentytwentyone .groups-header .desc-wrap { + background: var(--global--color-background); + border: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone .groups-header .desc-wrap .group-description { + background: none; + box-shadow: none; +} + +/** +*----------------------------------------------------- +* @subsection 5.1.2 - Item Header User Accounts +* +* User Accounts Specific Item Header +*----------------------------------------------------- +*/ +/** +*----------------------------------------------------------- +* @subsection 5.2 - Item Body: Global +*----------------------------------------------------------- +*/ +#buddypress.twentytwentyone .item-body h2.screen-heading, +#buddypress.twentytwentyone .item-body h2.creation-step-name { + font-size: var(--heading--font-size-h2); + letter-spacing: var(--heading--letter-spacing-h2); +} + +#buddypress.twentytwentyone .item-body h3.screen-heading, +#buddypress.twentytwentyone .item-body h3.creation-step-name { + font-size: var(--heading--font-size-h3); + letter-spacing: var(--heading--letter-spacing-h3); +} + +#buddypress.twentytwentyone .item-body h4.screen-heading, +#buddypress.twentytwentyone .item-body h4.creation-step-name { + font-size: var(--heading--font-size-h4); + letter-spacing: var(--heading--letter-spacing-h4); +} + +#buddypress.twentytwentyone .item-body .bp-avatar #avatar-crop-pane { + margin-bottom: 1em; +} + +#buddypress.twentytwentyone .item-body .bp-avatar-nav ul.avatar-nav-items { + border-bottom: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone .item-body .bp-avatar-nav ul.avatar-nav-items li.current { + border: 1px solid var(--global--color-primary); + border-bottom: 1px solid var(--global--color-background); +} + +#buddypress.twentytwentyone .item-body #drag-drop-area { + border: 4px dashed var(--global--color-secondary); +} + +#buddypress.twentytwentyone .item-body #drag-drop-area .drag-drop-info { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .item-body #drag-drop-area #bp-browse-button { + margin: 50px auto 0; +} + +#buddypress.twentytwentyone .item-body .bp-avatar-status .warning, +#buddypress.twentytwentyone .item-body .bp-avatar-status .success, +#buddypress.twentytwentyone .item-body .bp-cover-image-status .warning, +#buddypress.twentytwentyone .item-body .bp-cover-image-status .success { + background-color: var(--global--color-light-gray); + border: none; + border-right-width: 4px; + border-right-style: solid; + color: var(--global--color-dark-gray); +} + +#buddypress.twentytwentyone .item-body .bp-avatar-status .warning, +#buddypress.twentytwentyone .item-body .bp-cover-image-status .warning { + border-right-color: var(--global--color-orange); +} + +#buddypress.twentytwentyone .item-body .bp-avatar-status .success, +#buddypress.twentytwentyone .item-body .bp-cover-image-status .success { + border-right-color: var(--global--color-green); +} + +#buddypress.twentytwentyone .item-body .bp-avatar-status .error, +#buddypress.twentytwentyone .item-body .bp-cover-image-status .error { + border-right-color: var(--global--color-red); +} + +/** +*---------------------------------------------------- +* @subsection 5.2.1 - Item Body Groups +* +* Groups specific item body rules - screens +*---------------------------------------------------- +*/ +/** +*----------------------------------------- +* @subsection 5.2.1.1 - Management Settings Screens +*----------------------------------------- +*/ +.group-settings #buddypress.twentytwentyone .group-settings-selections { + margin-bottom: 1em; +} + +#buddypress.twentytwentyone #group-manage-members-ui .bp-pagination { + padding: 0.4em 0.5em 0.4em 0; +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form input[type="search"] { + font-size: 16px; +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form input[type="search"]:focus { + outline-offset: -7px; + outline: 2px dotted var(--form--border-color); +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form button[type="submit"] { + border-width: 1px; + border-style: solid; + background-clip: border-box; +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form button[type="submit"]:hover { + border-color: var(--button--color-background); +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-roles-filter label, +#buddypress.twentytwentyone #group-manage-members-ui #group-members-list-table .group-member-edit label { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + word-wrap: normal !important; +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-members-role-filter, +#buddypress.twentytwentyone #group-manage-members-ui #group-members-list-table .group-member-edit select { + font-size: 16px; + padding: 6px 10px 6px 25px; +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-members-role-filter:focus, +#buddypress.twentytwentyone #group-manage-members-ui #group-members-list-table .group-member-edit select:focus { + outline-offset: 2px; + outline: 2px dotted var(--form--border-color); +} + +/** +*----------------------------------------- +* @subsection 5.2.1.2 - Group Members List +*----------------------------------------- +*/ +/* +*----------------------------------------- +* @subsection 5.2.1.3 - Group Invites List +*----------------------------------------- +*/ +#buddypress.twentytwentyone .bp-invites-content ul { + border-top: none; +} + +#buddypress.twentytwentyone .bp-invites-content ul li { + border: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-invites-content ul li.selected { + box-shadow: none; + border-style: solid; +} + +#buddypress.twentytwentyone .bp-invites-content ul li button.invite-button { + border: none; + background: none; + top: -5px; + left: 0; +} + +#buddypress.twentytwentyone .bp-invites-content ul li button.invite-button .icons:before { + border-radius: 50%; + width: 32px; + height: 32px; + color: var(--global--color-primary); + background: var(--global--color-background); +} + +#buddypress.twentytwentyone .bp-invites-content ul li button.invite-button:hover .icons:before { + color: var(--global--color-background); + background: var(--global--color-primary); + width: 32px; + height: 32px; +} + +#buddypress.twentytwentyone .bp-invites-content ul li ul.group-inviters li { + border: none; +} + +/* +*----------------------------------------- +* @subsection 5.2.1.4 - Group Activity +*----------------------------------------- +*/ +/** +*----------------------------------------------------- +* @subsection 5.2.2 - Item Body User Accounts +* +* User Account specific item body rules +*----------------------------------------------------- +*/ +/** +*-------------------------------------------- +* @subsection 5.2.2.1 - classes, pag, filters +*-------------------------------------------- +*/ +/** +*------------------------------------------- +* @subsection 5.2.2.2 - Extended Profiles +*------------------------------------------- +*/ +#buddypress.twentytwentyone .profile table.profile-fields tr.alt td, +#buddypress.twentytwentyone .profile table.profile-fields tr td, +#buddypress.twentytwentyone .profile table.bp-tables-user tr.alt td, +#buddypress.twentytwentyone .profile table.bp-tables-user tr td { + background: transparent; +} + +#buddypress.twentytwentyone .profile table.profile-fields tr.alt td.label, +#buddypress.twentytwentyone .profile table.profile-fields tr td.label, +#buddypress.twentytwentyone .profile table.bp-tables-user tr.alt td.label, +#buddypress.twentytwentyone .profile table.bp-tables-user tr td.label { + border-left-color: var(--global--color-primary); +} + +#buddypress.twentytwentyone .profile.edit .editfield { + background: var(--global--color-background); + border: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone .profile.edit .editfield p.field-visibility-settings-toggle { + margin-top: 1em; +} + +#buddypress.twentytwentyone .profile.edit .editfield .field-visibility-settings .radio label { + margin-bottom: 0.5em; +} + +#buddypress.twentytwentyone .profile.edit .wp-editor-container .mce-toolbar button { + color: var(--global--color-dark-gray); + background: var(--global--color-white-90); + border-color: var(--global--color-dark-gray); +} + +#buddypress.twentytwentyone .profile.edit .button-tabs li { + border: solid 2px var(--global--color-primary); + overflow: hidden; +} + +#buddypress.twentytwentyone .profile.edit .button-tabs li a { + text-decoration: none; +} + +#buddypress.twentytwentyone .profile.edit .button-tabs li.current { + background-color: var(--global--color-primary); + color: var(--button--color-text); +} + +#buddypress.twentytwentyone .profile.edit .button-tabs li.current a { + color: var(--button--color-text); +} + +#buddypress.twentytwentyone .profile.edit .button-tabs li:hover { + outline-offset: 10px; + border-style: dotted; +} + +#buddypress.twentytwentyone .profile.edit .clear-value { + text-decoration: underline; +} + +#buddypress.twentytwentyone .profile.edit legend { + padding: 0; +} + +#buddypress.twentytwentyone .field-visibility-settings, +#buddypress.twentytwentyone .field-visibility-settings-header { + color: var(--global--color-secondary); +} + +/** +*------------------------------------------- +* @subsection 5.2.2.3 - Groups +*------------------------------------------- +*/ +#buddypress.twentytwentyone #group-list.invites h2.list-title { + float: none; +} + +#buddypress.twentytwentyone #group-list.invites .accept { + margin-right: 0; +} + +/** +*------------------------------------------- +* @subsection 5.2.2.5 - Private Messaging +*------------------------------------------- +*/ +#buddypress.twentytwentyone #user_messages_select_all { + vertical-align: -5px; +} + +#buddypress.twentytwentyone #user_messages_select_all:checked { + vertical-align: -3px; +} + +#buddypress.twentytwentyone #message-threads { + border-top: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads > li { + border-bottom: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads > li.selected { + border: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads > li.unread { + border-right: 8px solid var(--global--color-yellow); +} + +#buddypress.twentytwentyone #message-threads li .thread-cb { + padding-right: 15px; +} + +#buddypress.twentytwentyone #message-threads li.unread .thread-cb { + padding-right: 7px; +} + +#buddypress.twentytwentyone #message-threads li .thread-from img.avatar, +#buddypress.twentytwentyone #message-threads li .thread-to img.avatar { + width: 32px; + height: 32px; +} + +#buddypress.twentytwentyone #message-threads li .thread-from .num-recipients, +#buddypress.twentytwentyone #message-threads li .thread-to .num-recipients { + color: var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads li .thread-content .excerpt { + color: var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads li .thread-date time { + color: var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads li.selected { + background: transparent; + font-weight: bolder; + color: var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads li.selected .thread-subject .subject { + color: var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads li:not(.selected) { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .bp-messages-content #thread-preview h2:first-child, +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-header h2:first-child { + background-color: var(--button--color-background); + color: var(--button--color-text); +} + +#buddypress.twentytwentyone .bp-messages-content #thread-preview { + border-color: var(--button--color-background); +} + +#buddypress.twentytwentyone .bp-messages-content #thread-preview dd, +#buddypress.twentytwentyone .bp-messages-content #thread-preview .participants-list { + padding-right: 0; +} + +#buddypress.twentytwentyone .bp-messages-content #thread-preview .preview-pane-header { + border-bottom-style: dotted; + border-bottom-color: var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-messages-content #thread-preview .preview-content .preview-message { + background: transparent; +} + +#buddypress.twentytwentyone .bp-messages-content .single-message-thread-header dd, +#buddypress.twentytwentyone .bp-messages-content .single-message-thread-header .participants-list { + padding-right: 0; +} + +#buddypress.twentytwentyone .bp-messages-content .actions button.bp-tooltip { + border: none; + background: none; +} + +#buddypress.twentytwentyone .bp-messages-content .actions button.bp-tooltip.message-action-delete:before { + width: 32px; + height: 32px; + color: var(--global--color-primary); + background: var(--global--color-background); +} + +#buddypress.twentytwentyone .bp-messages-content .actions button.bp-tooltip.message-action-delete:hover:before { + border-radius: 50%; + color: var(--global--color-background); + background: var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-messages-content .actions .message-action-unstar:before, +#buddypress.twentytwentyone .bp-messages-content .actions .message-action-star:before { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata { + background: transparent; + border: 1px solid var(--global--color-primary); + box-shadow: none; +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata * { + line-height: 1.6; + vertical-align: middle; +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata .user-link { + margin-top: 3px; + margin-bottom: 3px; +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata .user-link strong { + display: inline-block; + margin-top: 2px; +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata .user-link:hover strong { + text-decoration: underline; +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata time { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-content { + background: transparent; + margin: 0; + width: 100%; + padding: 1em; +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li:first-child .message-content { + border: 1px dotted var(--global--color-primary); + border-top: none; +} + +#buddypress.twentytwentyone .bp-messages-content #send-reply .avatar-box img.avatar { + display: inline-block; + vertical-align: -7px; +} + +#buddypress.twentytwentyone .bp-messages-content .wp-editor-container .mce-toolbar button { + color: var(--global--color-dark-gray); + background: var(--global--color-white-90); + border-color: var(--global--color-dark-gray); +} + +#buddypress.twentytwentyone .bp-messages-content #bp-messages-reset { + border-width: 0; + font-size: inherit; +} + +#buddypress.twentytwentyone .bp-messages-content #send-to-input { + width: 100% !important; +} + +#buddypress.twentytwentyone .subnav-filters button#user_messages_search_submit { + padding: 3px 0.7em; + background-color: var(--global--color-background); + color: var(--button--color-text-hover); + border-color: var(--global--color-background); + border-right-color: var(--button--color-background); +} + +#buddypress.twentytwentyone .subnav-filters button#user_messages_search_submit:hover { + background-color: var(--button--color-background); + color: var(--button--color-text); + border-color: var(--button--color-background); +} + +#buddypress.twentytwentyone .subnav-filters .user-messages-bulk-actions .bulk-apply { + line-height: 1.5; + margin: 0 10px 0 0; + padding: 3px 5px; + background-color: var(--global--color-background); + color: var(--button--color-text-hover); +} + +#buddypress.twentytwentyone .subnav-filters .user-messages-bulk-actions .bulk-apply:hover { + background-color: var(--button--color-background); + color: var(--button--color-text); +} + +#buddypress.twentytwentyone .subnav-filters .user-messages-bulk-actions .bulk-apply span { + vertical-align: middle; +} + +/** +*------------------------------------------ +* @subsection 5.2.2.6 - Settings +*------------------------------------------ +*/ +#buddypress.twentytwentyone.buddypress-wrap .bp-tables-user tr.alt td, +#buddypress.twentytwentyone.buddypress-wrap table.wp-profile-fields tr.alt td { + background: transparent; +} + +/** +*------------------------------------------------------------------------------- +* @section 6.0 - Forms - General +*------------------------------------------------------------------------------- +*/ +#buddypress.twentytwentyone fieldset { + padding-top: 0; + margin-top: 1em; +} + +#buddypress.twentytwentyone fieldset legend { + padding: 0 1em; + display: inline-block; +} + +#buddypress.twentytwentyone .select-wrap { + border: 1px solid var(--global--color-primary); + background: var(--global--color-white-90); +} + +#buddypress.twentytwentyone .select-wrap select { + background: transparent; + width: 98%; + text-indent: 0; +} + +#buddypress.twentytwentyone .select-wrap span.select-arrow { + background: transparent; +} + +#buddypress.twentytwentyone .select-wrap span.select-arrow:before { + font-family: dashicons; + content: "\f140"; + color: var(--global--color-black); + vertical-align: -10%; +} + +#buddypress.twentytwentyone .select-wrap:focus .select-arrow:before, #buddypress.twentytwentyone .select-wrap:hover .select-arrow:before { + color: var(--global--color-black); +} + +#buddypress.twentytwentyone input[type="checkbox"], +#buddypress.twentytwentyone input[type="radio"] { + width: 25px; + height: 25px; + vertical-align: top; +} + +#buddypress.twentytwentyone textarea, +#buddypress.twentytwentyone input[type="text"], +#buddypress.twentytwentyone input[type="color"], +#buddypress.twentytwentyone input[type="date"], +#buddypress.twentytwentyone input[type="datetime"], +#buddypress.twentytwentyone input[type="datetime-local"], +#buddypress.twentytwentyone input[type="email"], +#buddypress.twentytwentyone input[type="month"], +#buddypress.twentytwentyone input[type="number"], +#buddypress.twentytwentyone input[type="range"], +#buddypress.twentytwentyone input[type="tel"], +#buddypress.twentytwentyone input[type="time"], +#buddypress.twentytwentyone input[type="url"], +#buddypress.twentytwentyone input[type="week"], +#buddypress.twentytwentyone input[type="password"], +#buddypress.twentytwentyone input[type="search"], +#buddypress.twentytwentyone .groups-members-search input[type="text"] { + color: var(--form--color-text); + background: var(--global--color-white-90); +} + +#buddypress.twentytwentyone .subnav-filters input[type="search"] { + font-size: 16px; + background: transparent; +} + +#buddypress.twentytwentyone .bp-dir-search-form button, +#buddypress.twentytwentyone form#group-members-search button, +#buddypress.twentytwentyone form#group_invites_search_form button { + background-color: var(--global--color-background); + color: var(--button--color-text-hover); + border-color: var(--global--color-background); + border-right-color: var(--button--color-background); +} + +#buddypress.twentytwentyone .bp-dir-search-form button:hover, +#buddypress.twentytwentyone form#group-members-search button:hover, +#buddypress.twentytwentyone form#group_invites_search_form button:hover { + background-color: var(--button--color-background); + color: var(--button--color-text); + border-color: var(--button--color-background); +} + +#buddypress.twentytwentyone .standard-form p.description { + color: var(--global--primary-color); + background-color: var(--global--color-background); +} + +body.bp-user.settings.general #buddypress.twentytwentyone .wp-pwd:not(.is-open) { + display: none; +} + +/** +*---------------------------------------------------------- +* @section 6.1 - Directory Search +* +* The Search form & controls in directory pages +*---------------------------------------------------------- +*/ +.bp-user #buddypress.twentytwentyone [data-bp-search] form #user_messages_search { + padding: 3px 10px; +} + +#buddypress.twentytwentyone form.bp-dir-search-form, +#buddypress.twentytwentyone form.bp-messages-search-form, +#buddypress.twentytwentyone form[data-bp-search].bp-invites-search-form, +#buddypress.twentytwentyone form#group-members-search { + border: 1px solid var(--global--color-primary); + background-color: var(--global--color-white-90); +} + +/** +*------------------------------------------------------------------------------- +* @section 7.0 - Tables - General +*------------------------------------------------------------------------------- +*/ +#buddypress.twentytwentyone .bp-tables-user tbody tr, +#buddypress.twentytwentyone .bp-tables-user tbody tr.alt, +#buddypress.twentytwentyone table.wp-profile-fields tbody tr, +#buddypress.twentytwentyone table.wp-profile-fields tbody tr.alt, +#buddypress.twentytwentyone table.forum tbody tr, +#buddypress.twentytwentyone table.forum tbody tr.alt { + background: transparent; +} + +/** +*------------------------------------------------------------------------------- +* @section 8.0 - Classes - Messages, Ajax, Widgets, Buttons +*------------------------------------------------------------------------------- +*/ +#buddypress.twentytwentyone button, +#buddypress.twentytwentyone a.button, +#buddypress.twentytwentyone input[type="submit"], +#buddypress.twentytwentyone input[type="button"], +#buddypress.twentytwentyone ul.button-nav:not(.button-tabs) li a, +#buddypress.twentytwentyone .generic-button a, +#buddypress.twentytwentyone .comment-reply-link, +#buddypress.twentytwentyone a.bp-title-button, +#buddypress.twentytwentyone .activity-read-more a { + background: var(--button--color-background); + border: 1px solid var(--button--color-background); + border-radius: 0; + color: var(--button--color-text); +} + +#buddypress.twentytwentyone button:hover, +#buddypress.twentytwentyone button:focus, +#buddypress.twentytwentyone a.button:focus, +#buddypress.twentytwentyone a.button:hover, +#buddypress.twentytwentyone input[type="submit"]:focus, +#buddypress.twentytwentyone input[type="submit"]:hover, +#buddypress.twentytwentyone input[type="button"]:focus, +#buddypress.twentytwentyone input[type="button"]:hover, +#buddypress.twentytwentyone input[type="reset"], +#buddypress.twentytwentyone #bp-messages-reset, +#buddypress.twentytwentyone .button-nav li a:focus, +#buddypress.twentytwentyone .button-nav li a:hover, +#buddypress.twentytwentyone .button-nav li.current a, +#buddypress.twentytwentyone .generic-button a:focus, +#buddypress.twentytwentyone .generic-button a:hover, +#buddypress.twentytwentyone .comment-reply-link:focus, +#buddypress.twentytwentyone .comment-reply-link:hover, +#buddypress.twentytwentyone .activity-read-more a:focus, +#buddypress.twentytwentyone .activity-read-more a:hover { + background: transparent; + border-color: var(--button--color-background); + color: var(--button--color-text-hover); + outline: none; + text-decoration: none; +} + +#buddypress.twentytwentyone input[type="reset"]:focus, +#buddypress.twentytwentyone input[type="reset"]:hover, +#buddypress.twentytwentyone #bp-messages-reset:focus, +#buddypress.twentytwentyone #bp-messages-reset:hover { + outline-offset: -1px; + outline: 2px dotted currentColor; +} + +#buddypress.twentytwentyone input[type="submit"].pending, +#buddypress.twentytwentyone input[type="button"].pending, +#buddypress.twentytwentyone input[type="reset"].pending, +#buddypress.twentytwentyone input[type="button"].disabled, +#buddypress.twentytwentyone input[type="reset"].disabled, +#buddypress.twentytwentyone input[type="submit"][disabled="disabled"], +#buddypress.twentytwentyone input[type="submit"]:disabled, +#buddypress.twentytwentyone input[type="submit"]:hover.pending, +#buddypress.twentytwentyone input[type="button"]:hover.pending, +#buddypress.twentytwentyone input[type="reset"]:hover.pending, +#buddypress.twentytwentyone input[type="submit"]:hover.disabled, +#buddypress.twentytwentyone input[type="button"]:hover.disabled, +#buddypress.twentytwentyone input[type="reset"]:hover.disabled, +#buddypress.twentytwentyone button.pending:hover, +#buddypress.twentytwentyone button.disabled:hover, +#buddypress.twentytwentyone div.pending a:hover, +#buddypress.twentytwentyone a.disabled:hover +button.pending, +#buddypress.twentytwentyone button.disabled, +#buddypress.twentytwentyone div.pending a, +#buddypress.twentytwentyone a.disabled { + opacity: 0.6; + cursor: not-allowed; +} + +#buddypress.twentytwentyone .blog-button:after, #buddypress.twentytwentyone .blog-button:before { + display: none; +} + +#buddypress.twentytwentyone .create-button a:focus, +#buddypress.twentytwentyone .create-button a:hover { + text-decoration: none; +} + +#buddypress.twentytwentyone.bp-dir-vert-nav .create-button a { + box-shadow: none; + color: var(--button--color-text); + background-color: var(--button--color-background); + border-radius: var(--button--border-radius); + border: var(--button--border-width) solid var(--button--color-background); + background-clip: border-box; +} + +#buddypress.twentytwentyone .warn { + color: var(--global--color-primary); + font-weight: 600; +} + +#buddypress.twentytwentyone .bp-feedback { + color: var(--global--color-primary); + background: var(--global--color-background); + box-shadow: none; +} + +#buddypress.twentytwentyone .bp-feedback:not(.custom-homepage-info) { + margin-top: 1.5em; + margin-bottom: 1.5em; + border: solid 1px var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-feedback .bp-icon { + background-color: var(--global--color-primary); + color: var(--button--color-text); +} + +#buddypress.twentytwentyone .bp-feedback a { + border-bottom: solid 1px var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-feedback button.bp-tooltip { + border: none; + background: none; + top: -5px; + left: 0; +} + +#buddypress.twentytwentyone .bp-feedback button.bp-tooltip .dashicons-dismiss { + border-radius: 50%; + width: 32px; + height: 32px; + color: var(--global--color-primary); + background: var(--global--color-background); +} + +#buddypress.twentytwentyone .bp-feedback button.bp-tooltip:hover .dashicons-dismiss { + color: var(--global--color-background); + background: var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-feedback.bp-sitewide-notice button.bp-tooltip { + top: 0; + left: 15px; +} + +#buddypress.twentytwentyone .bp-feedback.bp-sitewide-notice .bp-icon:before { + content: "\f16d"; +} + +#buddypress.twentytwentyone #group-create-body .bp-cover-image-status p.warning { + background-color: var(--global--color-light-gray); + border: none; + border-right-width: 4px; + border-right-style: solid; + border-right-color: var(--global--color-orange); + color: var(--global--color-dark-gray); + box-shadow: none; +} + +body.buddypress .site #buddypress.twentytwentyone .button.bp-tooltip:after { + content: attr(data-bp-tooltip); + word-wrap: break-word; + height: auto; + width: auto; +} + +/** +*------------------------------------------------------------------------------- +* @section 9.0 - Layout classes +*------------------------------------------------------------------------------- +*/ +#buddypress.twentytwentyone.bp-single-vert-nav .bp-navs.vertical li span { + background-color: var(--button--color-background); + border-radius: 10%; + display: inline-block; + margin: 3px 0; +} + +#buddypress.twentytwentyone.bp-single-vert-nav .bp-navs.vertical li.selected span, #buddypress.twentytwentyone.bp-single-vert-nav .bp-navs.vertical li.current span { + background-color: var(--global--color-background); +} + +#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) { + background: var(--global--color-background); + border-right: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) { + background: transparent; + border-bottom: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a { + border: none; + text-decoration: none; +} + +#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.current, #buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.selected { + background-color: var(--global--color-primary); + margin: 0; + padding: 10px 0; + border-radius: 0; +} + +#buddypress.twentytwentyone .grid.bp-list { + border-top: none; +} + +#buddypress.twentytwentyone .grid > li { + border: none; +} + +#buddypress.twentytwentyone .grid > li .list-wrap { + border: 1px solid var(--global--color-primary); + background: transparent; +} + +#buddypress.twentytwentyone .grid > li:not(.mini) .item-avatar, +#buddypress.twentytwentyone .grid > li .item-avatar { + margin-left: auto; +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/twentytwentyone-rtl.min.css b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/twentytwentyone-rtl.min.css new file mode 100644 index 0000000000000000000000000000000000000000..9e163ca901b7ec62a15bea03e8f16ca1ee48ce7c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/twentytwentyone-rtl.min.css @@ -0,0 +1 @@ +.is-dark-theme #buddypress.twentytwentyone .avatar{background:var(--global--color-white-90)}@media screen and (max-width:46.8em){#buddypress.twentytwentyone:not(.bp-single-vert-nav) .bp-navs li{background:0 0}}#buddypress.twentytwentyone .bp-navs li .count{background-color:var(--button--color-background);border:1px solid var(--button--color-background);border-radius:50%;color:var(--button--color-text)}#buddypress.twentytwentyone .bp-navs:not(.tabbed-links) li a:hover a .count,#buddypress.twentytwentyone .bp-navs:not(.tabbed-links) li.current a .count,#buddypress.twentytwentyone .bp-navs:not(.tabbed-links) li.selected a .count{background-color:var(--global--color-background);border:1px solid var(--global--color-background);color:var(--button--color-text-hover)}#buddypress.twentytwentyone .bp-navs li:not(.current):not(.selected) a:focus,#buddypress.twentytwentyone .bp-navs li:not(.current):not(.selected) a:hover{background:var(--global--color-background);color:var(--global--color-primary);outline-offset:-6px;outline:2px dotted currentColor}#buddypress.twentytwentyone .bp-navs li.current a,#buddypress.twentytwentyone .bp-navs li.current a:focus,#buddypress.twentytwentyone .bp-navs li.current a:hover,#buddypress.twentytwentyone .bp-navs li.selected a,#buddypress.twentytwentyone .bp-navs li.selected a:focus,#buddypress.twentytwentyone .bp-navs li.selected a:hover{color:var(--button--color-text);background-color:var(--button--color-background)}#buddypress.twentytwentyone .bp-navs.tabbed-links ol,#buddypress.twentytwentyone .bp-navs.tabbed-links ul{border-bottom:1px solid var(--global--color-primary)}#buddypress.twentytwentyone .bp-navs.tabbed-links ol li.current,#buddypress.twentytwentyone .bp-navs.tabbed-links ul li.current{border-color:var(--global--color-primary) var(--global--color-primary) var(--global--color-background);border-style:solid;border-top-right-radius:4px;border-top-left-radius:4px}#buddypress.twentytwentyone .bp-navs.tabbed-links ol li.current a,#buddypress.twentytwentyone .bp-navs.tabbed-links ul li.current a{color:var(--global--color-primary);background-color:var(--global--color-background)}#buddypress.twentytwentyone #group-invites-container .bp-invites-nav{border-bottom:none}#buddypress.twentytwentyone #group-invites-container .bp-invites-nav li .count{margin-right:10px;border-radius:10%;vertical-align:10%}#buddypress.twentytwentyone #group-invites-container #send-invites-editor ul{padding-right:0}#buddypress.twentytwentyone.bp-dir-hori-nav:not(.bp-vertical-navs) nav:not(.tabbed-links){border:none;border-bottom:1px solid var(--global--color-primary);box-shadow:none}#buddypress.twentytwentyone .subnav-filters>ul{padding-right:0}#buddypress.twentytwentyone .notifications-options-nav{margin-top:1em}#buddypress.twentytwentyone .notifications-options-nav input#notification-bulk-manage{line-height:1.2}#buddypress.twentytwentyone .bp-pagination{color:var(--global--color-secondary)}#buddypress.twentytwentyone .bp-list{border-top:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone .bp-list>li{border-bottom:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone .activity-list.bp-list{background:inherit;border-right:none;border-left:none;border-bottom:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone .activity-list.bp-list .activity-item{background:inherit;border:1px solid var(--global--color-primary);box-shadow:none}#buddypress.twentytwentyone .activity-list.bp-list .activity-item .activity-header .time-since,#buddypress.twentytwentyone .activity-list.bp-list .activity-item .activity-header .time-since:hover{color:var(--global--color-secondary)}#buddypress.twentytwentyone .bp-list li:not(.mini) .item-avatar img.avatar{display:block;margin:0 auto;margin-bottom:1em}@media screen and (min-width:46.8em){#buddypress.twentytwentyone .bp-list li:not(.mini) .item-avatar{max-width:128px;max-height:128px;margin:auto;margin-left:5%}}#buddypress.twentytwentyone .bp-list li.mini .item-avatar img.avatar{display:block;margin:0 auto;max-width:50px;max-height:50px;margin-bottom:1em}@media screen and (min-width:46.8em){#buddypress.twentytwentyone .bp-list li.mini .item-avatar{width:5%;margin:auto;margin-left:2%}}#buddypress.twentytwentyone .bp-list li.mini .activity-meta.action{clear:none}#buddypress.twentytwentyone .bp-list li .item-meta,#buddypress.twentytwentyone .bp-list li .meta{color:var(--global--color-secondary)}#buddypress.twentytwentyone .activity-update-form{border:1px solid var(--global--color-primary);box-shadow:none}#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li{margin-bottom:0}#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object{padding:5px;margin-right:3px;border-radius:0;border-style:dotted;border-width:0;border-right-width:1px;border-left-width:1px}#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object:not(.selected){background:var(--global--color-white-90);color:var(--form--color-text);border-color:var(--form--border-color)}#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object:not(.selected):last-child{border-bottom:dotted 1px}#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object:not(.selected):hover{background:var(--global--color-blue)}#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object.selected{border:none;background-color:transparent}body .site #buddypress.twentytwentyone .activity-list .load-more,body .site #buddypress.twentytwentyone .activity-list .load-newest{background-color:var(--button--color-background);color:var(--button--color-text);border:1px solid var(--button--color-background)}body .site #buddypress.twentytwentyone .activity-list .load-more a,body .site #buddypress.twentytwentyone .activity-list .load-newest a{color:var(--button--color-text)}body .site #buddypress.twentytwentyone .activity-list .load-more a:focus,body .site #buddypress.twentytwentyone .activity-list .load-newest a:focus{color:var(--button--color-text-hover);background:0 0;outline-offset:-6px;outline:2px dotted currentColor}body .site #buddypress.twentytwentyone .activity-list .load-more:focus,body .site #buddypress.twentytwentyone .activity-list .load-more:hover,body .site #buddypress.twentytwentyone .activity-list .load-newest:focus,body .site #buddypress.twentytwentyone .activity-list .load-newest:hover{color:var(--button--color-text-hover);background:0 0}body .site #buddypress.twentytwentyone .activity-list .load-more:focus a,body .site #buddypress.twentytwentyone .activity-list .load-more:hover a,body .site #buddypress.twentytwentyone .activity-list .load-newest:focus a,body .site #buddypress.twentytwentyone .activity-list .load-newest:hover a{color:var(--button--color-text-hover);background:0 0}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-header,body .site #buddypress.twentytwentyone .activity-list .activity-content .comment-header{color:var(--global--color-secondary)}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-header a,body .site #buddypress.twentytwentyone .activity-list .activity-content .comment-header a{font-weight:600}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-header a:hover,body .site #buddypress.twentytwentyone .activity-list .activity-content .comment-header a:hover{text-decoration:underline}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-inner,body .site #buddypress.twentytwentyone .activity-list .activity-content blockquote{background:inherit;border:1px dotted var(--global--color-primary)}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action{background:inherit}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .button:before,body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .icons:before{height:auto;width:auto;display:inline}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .button{background:var(--global--color-background);color:var(--global--color-primary);border:none}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .button span{color:var(--global--color-secondary)}body.activity-permalink #buddypress.twentytwentyone .activity-list{border:none}body.activity-permalink #buddypress.twentytwentyone .activity-list .activity-avatar img.avatar{background:var(--global--color-white)}#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-avatar{width:auto;margin-left:0}#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-meta{color:var(--global--color-secondary)}#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-meta a{font-weight:600}#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-meta a:hover{text-decoration:underline}#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-content{border-right:1px solid var(--global--color-secondary);margin:15px 5% 0 0}#buddypress.twentytwentyone .groups-list li .group-desc{color:var(--global--color-secondary);border:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone #groups-dir-list .current-group-type{text-align:center}#buddypress.twentytwentyone .members-list li .user-update{border:1px dotted var(--global--color-primary);color:var(--global--color-secondary)}#buddypress.twentytwentyone #members-dir-list .current-member-type{text-align:center}#buddypress.twentytwentyone #group-create-body nav.group-create-links:not(.tabbed-links){background:0 0;clear:both;overflow:hidden;border:none;border-bottom:1px solid var(--global--color-primary);box-shadow:none}#buddypress.twentytwentyone #group-create-body nav.group-create-links:not(.tabbed-links) li a,#buddypress.twentytwentyone #group-create-body nav.group-create-links:not(.tabbed-links) li span{padding:.5em calc(.5em + 2px);display:block}#buddypress.twentytwentyone .single-headers .bp-group-type-list,#buddypress.twentytwentyone .single-headers .bp-member-type-list,#buddypress.twentytwentyone .single-headers .group-status,#buddypress.twentytwentyone .single-headers .item-meta{color:var(--global--color-secondary)}#buddypress.twentytwentyone .single-headers a:hover{text-decoration:underline}#buddypress.twentytwentyone .groups-header .desc-wrap{background:var(--global--color-background);border:1px solid var(--global--color-primary)}#buddypress.twentytwentyone .groups-header .desc-wrap .group-description{background:0 0;box-shadow:none}#buddypress.twentytwentyone .item-body h2.creation-step-name,#buddypress.twentytwentyone .item-body h2.screen-heading{font-size:var(--heading--font-size-h2);letter-spacing:var(--heading--letter-spacing-h2)}#buddypress.twentytwentyone .item-body h3.creation-step-name,#buddypress.twentytwentyone .item-body h3.screen-heading{font-size:var(--heading--font-size-h3);letter-spacing:var(--heading--letter-spacing-h3)}#buddypress.twentytwentyone .item-body h4.creation-step-name,#buddypress.twentytwentyone .item-body h4.screen-heading{font-size:var(--heading--font-size-h4);letter-spacing:var(--heading--letter-spacing-h4)}#buddypress.twentytwentyone .item-body .bp-avatar #avatar-crop-pane{margin-bottom:1em}#buddypress.twentytwentyone .item-body .bp-avatar-nav ul.avatar-nav-items{border-bottom:1px solid var(--global--color-primary)}#buddypress.twentytwentyone .item-body .bp-avatar-nav ul.avatar-nav-items li.current{border:1px solid var(--global--color-primary);border-bottom:1px solid var(--global--color-background)}#buddypress.twentytwentyone .item-body #drag-drop-area{border:4px dashed var(--global--color-secondary)}#buddypress.twentytwentyone .item-body #drag-drop-area .drag-drop-info{color:var(--global--color-secondary)}#buddypress.twentytwentyone .item-body #drag-drop-area #bp-browse-button{margin:50px auto 0}#buddypress.twentytwentyone .item-body .bp-avatar-status .success,#buddypress.twentytwentyone .item-body .bp-avatar-status .warning,#buddypress.twentytwentyone .item-body .bp-cover-image-status .success,#buddypress.twentytwentyone .item-body .bp-cover-image-status .warning{background-color:var(--global--color-light-gray);border:none;border-right-width:4px;border-right-style:solid;color:var(--global--color-dark-gray)}#buddypress.twentytwentyone .item-body .bp-avatar-status .warning,#buddypress.twentytwentyone .item-body .bp-cover-image-status .warning{border-right-color:var(--global--color-orange)}#buddypress.twentytwentyone .item-body .bp-avatar-status .success,#buddypress.twentytwentyone .item-body .bp-cover-image-status .success{border-right-color:var(--global--color-green)}#buddypress.twentytwentyone .item-body .bp-avatar-status .error,#buddypress.twentytwentyone .item-body .bp-cover-image-status .error{border-right-color:var(--global--color-red)}.group-settings #buddypress.twentytwentyone .group-settings-selections{margin-bottom:1em}#buddypress.twentytwentyone #group-manage-members-ui .bp-pagination{padding:.4em .5em .4em 0}#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form input[type=search]{font-size:16px}#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form input[type=search]:focus{outline-offset:-7px;outline:2px dotted var(--form--border-color)}#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form button[type=submit]{border-width:1px;border-style:solid;background-clip:border-box}#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form button[type=submit]:hover{border-color:var(--button--color-background)}#buddypress.twentytwentyone #group-manage-members-ui #group-members-list-table .group-member-edit label,#buddypress.twentytwentyone #group-manage-members-ui #group-roles-filter label{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}#buddypress.twentytwentyone #group-manage-members-ui #group-members-list-table .group-member-edit select,#buddypress.twentytwentyone #group-manage-members-ui #group-members-role-filter{font-size:16px;padding:6px 10px 6px 25px}#buddypress.twentytwentyone #group-manage-members-ui #group-members-list-table .group-member-edit select:focus,#buddypress.twentytwentyone #group-manage-members-ui #group-members-role-filter:focus{outline-offset:2px;outline:2px dotted var(--form--border-color)}#buddypress.twentytwentyone .bp-invites-content ul{border-top:none}#buddypress.twentytwentyone .bp-invites-content ul li{border:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone .bp-invites-content ul li.selected{box-shadow:none;border-style:solid}#buddypress.twentytwentyone .bp-invites-content ul li button.invite-button{border:none;background:0 0;top:-5px;left:0}#buddypress.twentytwentyone .bp-invites-content ul li button.invite-button .icons:before{border-radius:50%;width:32px;height:32px;color:var(--global--color-primary);background:var(--global--color-background)}#buddypress.twentytwentyone .bp-invites-content ul li button.invite-button:hover .icons:before{color:var(--global--color-background);background:var(--global--color-primary);width:32px;height:32px}#buddypress.twentytwentyone .bp-invites-content ul li ul.group-inviters li{border:none}#buddypress.twentytwentyone .profile table.bp-tables-user tr td,#buddypress.twentytwentyone .profile table.bp-tables-user tr.alt td,#buddypress.twentytwentyone .profile table.profile-fields tr td,#buddypress.twentytwentyone .profile table.profile-fields tr.alt td{background:0 0}#buddypress.twentytwentyone .profile table.bp-tables-user tr td.label,#buddypress.twentytwentyone .profile table.bp-tables-user tr.alt td.label,#buddypress.twentytwentyone .profile table.profile-fields tr td.label,#buddypress.twentytwentyone .profile table.profile-fields tr.alt td.label{border-left-color:var(--global--color-primary)}#buddypress.twentytwentyone .profile.edit .editfield{background:var(--global--color-background);border:1px solid var(--global--color-primary)}#buddypress.twentytwentyone .profile.edit .editfield p.field-visibility-settings-toggle{margin-top:1em}#buddypress.twentytwentyone .profile.edit .editfield .field-visibility-settings .radio label{margin-bottom:.5em}#buddypress.twentytwentyone .profile.edit .wp-editor-container .mce-toolbar button{color:var(--global--color-dark-gray);background:var(--global--color-white-90);border-color:var(--global--color-dark-gray)}#buddypress.twentytwentyone .profile.edit .button-tabs li{border:solid 2px var(--global--color-primary);overflow:hidden}#buddypress.twentytwentyone .profile.edit .button-tabs li a{text-decoration:none}#buddypress.twentytwentyone .profile.edit .button-tabs li.current{background-color:var(--global--color-primary);color:var(--button--color-text)}#buddypress.twentytwentyone .profile.edit .button-tabs li.current a{color:var(--button--color-text)}#buddypress.twentytwentyone .profile.edit .button-tabs li:hover{outline-offset:10px;border-style:dotted}#buddypress.twentytwentyone .profile.edit .clear-value{text-decoration:underline}#buddypress.twentytwentyone .profile.edit legend{padding:0}#buddypress.twentytwentyone .field-visibility-settings,#buddypress.twentytwentyone .field-visibility-settings-header{color:var(--global--color-secondary)}#buddypress.twentytwentyone #group-list.invites h2.list-title{float:none}#buddypress.twentytwentyone #group-list.invites .accept{margin-right:0}#buddypress.twentytwentyone #user_messages_select_all{vertical-align:-5px}#buddypress.twentytwentyone #user_messages_select_all:checked{vertical-align:-3px}#buddypress.twentytwentyone #message-threads{border-top:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone #message-threads>li{border-bottom:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone #message-threads>li.selected{border:1px solid var(--global--color-primary)}#buddypress.twentytwentyone #message-threads>li.unread{border-right:8px solid var(--global--color-yellow)}#buddypress.twentytwentyone #message-threads li .thread-cb{padding-right:15px}#buddypress.twentytwentyone #message-threads li.unread .thread-cb{padding-right:7px}#buddypress.twentytwentyone #message-threads li .thread-from img.avatar,#buddypress.twentytwentyone #message-threads li .thread-to img.avatar{width:32px;height:32px}#buddypress.twentytwentyone #message-threads li .thread-from .num-recipients,#buddypress.twentytwentyone #message-threads li .thread-to .num-recipients{color:var(--global--color-primary)}#buddypress.twentytwentyone #message-threads li .thread-content .excerpt{color:var(--global--color-primary)}#buddypress.twentytwentyone #message-threads li .thread-date time{color:var(--global--color-primary)}#buddypress.twentytwentyone #message-threads li.selected{background:0 0;font-weight:bolder;color:var(--global--color-primary)}#buddypress.twentytwentyone #message-threads li.selected .thread-subject .subject{color:var(--global--color-primary)}#buddypress.twentytwentyone #message-threads li:not(.selected){color:var(--global--color-secondary)}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-header h2:first-child,#buddypress.twentytwentyone .bp-messages-content #thread-preview h2:first-child{background-color:var(--button--color-background);color:var(--button--color-text)}#buddypress.twentytwentyone .bp-messages-content #thread-preview{border-color:var(--button--color-background)}#buddypress.twentytwentyone .bp-messages-content #thread-preview .participants-list,#buddypress.twentytwentyone .bp-messages-content #thread-preview dd{padding-right:0}#buddypress.twentytwentyone .bp-messages-content #thread-preview .preview-pane-header{border-bottom-style:dotted;border-bottom-color:var(--global--color-primary)}#buddypress.twentytwentyone .bp-messages-content #thread-preview .preview-content .preview-message{background:0 0}#buddypress.twentytwentyone .bp-messages-content .single-message-thread-header .participants-list,#buddypress.twentytwentyone .bp-messages-content .single-message-thread-header dd{padding-right:0}#buddypress.twentytwentyone .bp-messages-content .actions button.bp-tooltip{border:none;background:0 0}#buddypress.twentytwentyone .bp-messages-content .actions button.bp-tooltip.message-action-delete:before{width:32px;height:32px;color:var(--global--color-primary);background:var(--global--color-background)}#buddypress.twentytwentyone .bp-messages-content .actions button.bp-tooltip.message-action-delete:hover:before{border-radius:50%;color:var(--global--color-background);background:var(--global--color-primary)}#buddypress.twentytwentyone .bp-messages-content .actions .message-action-star:before,#buddypress.twentytwentyone .bp-messages-content .actions .message-action-unstar:before{color:var(--global--color-secondary)}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata{background:0 0;border:1px solid var(--global--color-primary);box-shadow:none}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata *{line-height:1.6;vertical-align:middle}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata .user-link{margin-top:3px;margin-bottom:3px}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata .user-link strong{display:inline-block;margin-top:2px}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata .user-link:hover strong{text-decoration:underline}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata time{color:var(--global--color-secondary)}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-content{background:0 0;margin:0;width:100%;padding:1em}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li:first-child .message-content{border:1px dotted var(--global--color-primary);border-top:none}#buddypress.twentytwentyone .bp-messages-content #send-reply .avatar-box img.avatar{display:inline-block;vertical-align:-7px}#buddypress.twentytwentyone .bp-messages-content .wp-editor-container .mce-toolbar button{color:var(--global--color-dark-gray);background:var(--global--color-white-90);border-color:var(--global--color-dark-gray)}#buddypress.twentytwentyone .bp-messages-content #bp-messages-reset{border-width:0;font-size:inherit}#buddypress.twentytwentyone .bp-messages-content #send-to-input{width:100%!important}#buddypress.twentytwentyone .subnav-filters button#user_messages_search_submit{padding:3px .7em;background-color:var(--global--color-background);color:var(--button--color-text-hover);border-color:var(--global--color-background);border-right-color:var(--button--color-background)}#buddypress.twentytwentyone .subnav-filters button#user_messages_search_submit:hover{background-color:var(--button--color-background);color:var(--button--color-text);border-color:var(--button--color-background)}#buddypress.twentytwentyone .subnav-filters .user-messages-bulk-actions .bulk-apply{line-height:1.5;margin:0 10px 0 0;padding:3px 5px;background-color:var(--global--color-background);color:var(--button--color-text-hover)}#buddypress.twentytwentyone .subnav-filters .user-messages-bulk-actions .bulk-apply:hover{background-color:var(--button--color-background);color:var(--button--color-text)}#buddypress.twentytwentyone .subnav-filters .user-messages-bulk-actions .bulk-apply span{vertical-align:middle}#buddypress.twentytwentyone.buddypress-wrap .bp-tables-user tr.alt td,#buddypress.twentytwentyone.buddypress-wrap table.wp-profile-fields tr.alt td{background:0 0}#buddypress.twentytwentyone fieldset{padding-top:0;margin-top:1em}#buddypress.twentytwentyone fieldset legend{padding:0 1em;display:inline-block}#buddypress.twentytwentyone .select-wrap{border:1px solid var(--global--color-primary);background:var(--global--color-white-90)}#buddypress.twentytwentyone .select-wrap select{background:0 0;width:98%;text-indent:0}#buddypress.twentytwentyone .select-wrap span.select-arrow{background:0 0}#buddypress.twentytwentyone .select-wrap span.select-arrow:before{font-family:dashicons;content:"\f140";color:var(--global--color-black);vertical-align:-10%}#buddypress.twentytwentyone .select-wrap:focus .select-arrow:before,#buddypress.twentytwentyone .select-wrap:hover .select-arrow:before{color:var(--global--color-black)}#buddypress.twentytwentyone input[type=checkbox],#buddypress.twentytwentyone input[type=radio]{width:25px;height:25px;vertical-align:top}#buddypress.twentytwentyone .groups-members-search input[type=text],#buddypress.twentytwentyone input[type=color],#buddypress.twentytwentyone input[type=date],#buddypress.twentytwentyone input[type=datetime-local],#buddypress.twentytwentyone input[type=datetime],#buddypress.twentytwentyone input[type=email],#buddypress.twentytwentyone input[type=month],#buddypress.twentytwentyone input[type=number],#buddypress.twentytwentyone input[type=password],#buddypress.twentytwentyone input[type=range],#buddypress.twentytwentyone input[type=search],#buddypress.twentytwentyone input[type=tel],#buddypress.twentytwentyone input[type=text],#buddypress.twentytwentyone input[type=time],#buddypress.twentytwentyone input[type=url],#buddypress.twentytwentyone input[type=week],#buddypress.twentytwentyone textarea{color:var(--form--color-text);background:var(--global--color-white-90)}#buddypress.twentytwentyone .subnav-filters input[type=search]{font-size:16px;background:0 0}#buddypress.twentytwentyone .bp-dir-search-form button,#buddypress.twentytwentyone form#group-members-search button,#buddypress.twentytwentyone form#group_invites_search_form button{background-color:var(--global--color-background);color:var(--button--color-text-hover);border-color:var(--global--color-background);border-right-color:var(--button--color-background)}#buddypress.twentytwentyone .bp-dir-search-form button:hover,#buddypress.twentytwentyone form#group-members-search button:hover,#buddypress.twentytwentyone form#group_invites_search_form button:hover{background-color:var(--button--color-background);color:var(--button--color-text);border-color:var(--button--color-background)}#buddypress.twentytwentyone .standard-form p.description{color:var(--global--primary-color);background-color:var(--global--color-background)}body.bp-user.settings.general #buddypress.twentytwentyone .wp-pwd:not(.is-open){display:none}.bp-user #buddypress.twentytwentyone [data-bp-search] form #user_messages_search{padding:3px 10px}#buddypress.twentytwentyone form#group-members-search,#buddypress.twentytwentyone form.bp-dir-search-form,#buddypress.twentytwentyone form.bp-messages-search-form,#buddypress.twentytwentyone form[data-bp-search].bp-invites-search-form{border:1px solid var(--global--color-primary);background-color:var(--global--color-white-90)}#buddypress.twentytwentyone .bp-tables-user tbody tr,#buddypress.twentytwentyone .bp-tables-user tbody tr.alt,#buddypress.twentytwentyone table.forum tbody tr,#buddypress.twentytwentyone table.forum tbody tr.alt,#buddypress.twentytwentyone table.wp-profile-fields tbody tr,#buddypress.twentytwentyone table.wp-profile-fields tbody tr.alt{background:0 0}#buddypress.twentytwentyone .activity-read-more a,#buddypress.twentytwentyone .comment-reply-link,#buddypress.twentytwentyone .generic-button a,#buddypress.twentytwentyone a.bp-title-button,#buddypress.twentytwentyone a.button,#buddypress.twentytwentyone button,#buddypress.twentytwentyone input[type=button],#buddypress.twentytwentyone input[type=submit],#buddypress.twentytwentyone ul.button-nav:not(.button-tabs) li a{background:var(--button--color-background);border:1px solid var(--button--color-background);border-radius:0;color:var(--button--color-text)}#buddypress.twentytwentyone #bp-messages-reset,#buddypress.twentytwentyone .activity-read-more a:focus,#buddypress.twentytwentyone .activity-read-more a:hover,#buddypress.twentytwentyone .button-nav li a:focus,#buddypress.twentytwentyone .button-nav li a:hover,#buddypress.twentytwentyone .button-nav li.current a,#buddypress.twentytwentyone .comment-reply-link:focus,#buddypress.twentytwentyone .comment-reply-link:hover,#buddypress.twentytwentyone .generic-button a:focus,#buddypress.twentytwentyone .generic-button a:hover,#buddypress.twentytwentyone a.button:focus,#buddypress.twentytwentyone a.button:hover,#buddypress.twentytwentyone button:focus,#buddypress.twentytwentyone button:hover,#buddypress.twentytwentyone input[type=button]:focus,#buddypress.twentytwentyone input[type=button]:hover,#buddypress.twentytwentyone input[type=reset],#buddypress.twentytwentyone input[type=submit]:focus,#buddypress.twentytwentyone input[type=submit]:hover{background:0 0;border-color:var(--button--color-background);color:var(--button--color-text-hover);outline:0;text-decoration:none}#buddypress.twentytwentyone #bp-messages-reset:focus,#buddypress.twentytwentyone #bp-messages-reset:hover,#buddypress.twentytwentyone input[type=reset]:focus,#buddypress.twentytwentyone input[type=reset]:hover{outline-offset:-1px;outline:2px dotted currentColor}#buddypress.twentytwentyone a.disabled,#buddypress.twentytwentyone a.disabled:hover button.pending,#buddypress.twentytwentyone button.disabled,#buddypress.twentytwentyone button.disabled:hover,#buddypress.twentytwentyone button.pending:hover,#buddypress.twentytwentyone div.pending a,#buddypress.twentytwentyone div.pending a:hover,#buddypress.twentytwentyone input[type=button].disabled,#buddypress.twentytwentyone input[type=button].pending,#buddypress.twentytwentyone input[type=button]:hover.disabled,#buddypress.twentytwentyone input[type=button]:hover.pending,#buddypress.twentytwentyone input[type=reset].disabled,#buddypress.twentytwentyone input[type=reset].pending,#buddypress.twentytwentyone input[type=reset]:hover.disabled,#buddypress.twentytwentyone input[type=reset]:hover.pending,#buddypress.twentytwentyone input[type=submit].pending,#buddypress.twentytwentyone input[type=submit]:disabled,#buddypress.twentytwentyone input[type=submit]:hover.disabled,#buddypress.twentytwentyone input[type=submit]:hover.pending,#buddypress.twentytwentyone input[type=submit][disabled=disabled]{opacity:.6;cursor:not-allowed}#buddypress.twentytwentyone .blog-button:after,#buddypress.twentytwentyone .blog-button:before{display:none}#buddypress.twentytwentyone .create-button a:focus,#buddypress.twentytwentyone .create-button a:hover{text-decoration:none}#buddypress.twentytwentyone.bp-dir-vert-nav .create-button a{box-shadow:none;color:var(--button--color-text);background-color:var(--button--color-background);border-radius:var(--button--border-radius);border:var(--button--border-width) solid var(--button--color-background);background-clip:border-box}#buddypress.twentytwentyone .warn{color:var(--global--color-primary);font-weight:600}#buddypress.twentytwentyone .bp-feedback{color:var(--global--color-primary);background:var(--global--color-background);box-shadow:none}#buddypress.twentytwentyone .bp-feedback:not(.custom-homepage-info){margin-top:1.5em;margin-bottom:1.5em;border:solid 1px var(--global--color-primary)}#buddypress.twentytwentyone .bp-feedback .bp-icon{background-color:var(--global--color-primary);color:var(--button--color-text)}#buddypress.twentytwentyone .bp-feedback a{border-bottom:solid 1px var(--global--color-primary)}#buddypress.twentytwentyone .bp-feedback button.bp-tooltip{border:none;background:0 0;top:-5px;left:0}#buddypress.twentytwentyone .bp-feedback button.bp-tooltip .dashicons-dismiss{border-radius:50%;width:32px;height:32px;color:var(--global--color-primary);background:var(--global--color-background)}#buddypress.twentytwentyone .bp-feedback button.bp-tooltip:hover .dashicons-dismiss{color:var(--global--color-background);background:var(--global--color-primary)}#buddypress.twentytwentyone .bp-feedback.bp-sitewide-notice button.bp-tooltip{top:0;left:15px}#buddypress.twentytwentyone .bp-feedback.bp-sitewide-notice .bp-icon:before{content:"\f16d"}#buddypress.twentytwentyone #group-create-body .bp-cover-image-status p.warning{background-color:var(--global--color-light-gray);border:none;border-right-width:4px;border-right-style:solid;border-right-color:var(--global--color-orange);color:var(--global--color-dark-gray);box-shadow:none}body.buddypress .site #buddypress.twentytwentyone .button.bp-tooltip:after{content:attr(data-bp-tooltip);word-wrap:break-word;height:auto;width:auto}#buddypress.twentytwentyone.bp-single-vert-nav .bp-navs.vertical li span{background-color:var(--button--color-background);border-radius:10%;display:inline-block;margin:3px 0}#buddypress.twentytwentyone.bp-single-vert-nav .bp-navs.vertical li.current span,#buddypress.twentytwentyone.bp-single-vert-nav .bp-navs.vertical li.selected span{background-color:var(--global--color-background)}#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body){background:var(--global--color-background);border-right:1px solid var(--global--color-primary)}#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links){background:0 0;border-bottom:1px solid var(--global--color-primary)}#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a{border:none;text-decoration:none}#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.current,#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.selected{background-color:var(--global--color-primary);margin:0;padding:10px 0;border-radius:0}#buddypress.twentytwentyone .grid.bp-list{border-top:none}#buddypress.twentytwentyone .grid>li{border:none}#buddypress.twentytwentyone .grid>li .list-wrap{border:1px solid var(--global--color-primary);background:0 0}#buddypress.twentytwentyone .grid>li .item-avatar,#buddypress.twentytwentyone .grid>li:not(.mini) .item-avatar{margin-left:auto} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/twentytwentyone.css b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/twentytwentyone.css new file mode 100644 index 0000000000000000000000000000000000000000..ecfaf8d9eedc0480e942ef1f923be157ef3367a0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/twentytwentyone.css @@ -0,0 +1,1383 @@ +/*-------------------------------------------------------------- +Hello, this is the BP Nouveau's Twenty Twenty-One companion stylesheet. + +@since 7.0.0 +@version 7.0.0 + +---------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +1.0 - BP Generic, Typography & Imagery + +2.0 - Navigation - General + 2.1 - Navs - Object Nav / Sub Nav (item-list-tabs) + 2.2 - Pagination + +3.0 - BP Lists / Loops Generic & filters + 3.1 - Activity Loop + 3.1.1 Whats New Activity + 3.1.2 - Activity Entries + 3.1.3 - Activity Comments + 3.2 - Blogs Loop + 3.3 - Groups Loop + 3.4 - Members Loop + +4.0 - Directories - Members, Groups, Blogs, Register, Activation + 4.1 - Groups Creation Steps Screens +5.0 - Single Item screens: User Account & Single Group Screens + 5.1 - Item Headers: Global + 5.1.1 - item-header: Groups + 5.1.2 - item-header: User Accounts + 5.2 - Item Body: Global + 5.2.1 - item-body: Groups + 5.2.1.1 - Management settings screens + 5.2.1.2 - Group Members list + 5.2.1.3 - Group Invite list + 5.2.1.4 - Group Activity + 5.2.2 - item-body: User Accounts + 5.2.2.1 - classes, pag, filters + 5.2.2.2 - Extended Profiles + 5.2.2.3 - Groups + 5.2.2.4 - friends + 5.2.2.5 - Private Messaging Threads + 5.2.2.6 - Settings + +6.0 - Forms - General + 6.1 - Dir Search + +7.0 - Tables - General + +8.0 - Classes - Messages, Ajax, Widgets, Buttons, Tooltips + +9.0 - Layout Classes. +--------------------------------------------------------------*/ +/** +*------------------------------------------------------------------------------- +* @section 1.0 - BP Generic, Typography & Imagery +*------------------------------------------------------------------------------- +*/ +.is-dark-theme #buddypress.twentytwentyone .avatar { + background: var(--global--color-white-90); +} + +/** +*------------------------------------------------------------------------------- +* @section 2.0 - Navigation - General +*------------------------------------------------------------------------------- +*/ +/** +*---------------------------------------------------------- +* @section 2.1 - Navs Object Nav / Sub Nav (bp-list) +* +* The main navigational elements for all BP screens +*---------------------------------------------------------- +*/ +@media screen and (max-width: 46.8em) { + #buddypress.twentytwentyone:not(.bp-single-vert-nav) .bp-navs li { + background: transparent; + } +} + +#buddypress.twentytwentyone .bp-navs li .count { + background-color: var(--button--color-background); + border: 1px solid var(--button--color-background); + border-radius: 50%; + color: var(--button--color-text); +} + +#buddypress.twentytwentyone .bp-navs:not(.tabbed-links) li.selected a .count, +#buddypress.twentytwentyone .bp-navs:not(.tabbed-links) li.current a .count, +#buddypress.twentytwentyone .bp-navs:not(.tabbed-links) li a:hover a .count { + background-color: var(--global--color-background); + border: 1px solid var(--global--color-background); + color: var(--button--color-text-hover); +} + +#buddypress.twentytwentyone .bp-navs li:not(.current):not(.selected) a:focus, +#buddypress.twentytwentyone .bp-navs li:not(.current):not(.selected) a:hover { + background: var(--global--color-background); + color: var(--global--color-primary); + outline-offset: -6px; + outline: 2px dotted currentColor; +} + +#buddypress.twentytwentyone .bp-navs li.selected a, +#buddypress.twentytwentyone .bp-navs li.selected a:focus, +#buddypress.twentytwentyone .bp-navs li.selected a:hover, +#buddypress.twentytwentyone .bp-navs li.current a, +#buddypress.twentytwentyone .bp-navs li.current a:focus, +#buddypress.twentytwentyone .bp-navs li.current a:hover { + color: var(--button--color-text); + background-color: var(--button--color-background); +} + +#buddypress.twentytwentyone .bp-navs.tabbed-links ul, +#buddypress.twentytwentyone .bp-navs.tabbed-links ol { + border-bottom: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-navs.tabbed-links ul li.current, +#buddypress.twentytwentyone .bp-navs.tabbed-links ol li.current { + border-color: var(--global--color-primary) var(--global--color-primary) var(--global--color-background); + border-style: solid; + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} + +#buddypress.twentytwentyone .bp-navs.tabbed-links ul li.current a, +#buddypress.twentytwentyone .bp-navs.tabbed-links ol li.current a { + color: var(--global--color-primary); + background-color: var(--global--color-background); +} + +#buddypress.twentytwentyone #group-invites-container .bp-invites-nav { + border-bottom: none; +} + +#buddypress.twentytwentyone #group-invites-container .bp-invites-nav li .count { + margin-left: 10px; + border-radius: 10%; + vertical-align: 10%; +} + +#buddypress.twentytwentyone #group-invites-container #send-invites-editor ul { + padding-left: 0; +} + +#buddypress.twentytwentyone.bp-dir-hori-nav:not(.bp-vertical-navs) nav:not(.tabbed-links) { + border: none; + border-bottom: 1px solid var(--global--color-primary); + box-shadow: none; +} + +#buddypress.twentytwentyone .subnav-filters > ul { + padding-left: 0; +} + +#buddypress.twentytwentyone .notifications-options-nav { + margin-top: 1em; +} + +#buddypress.twentytwentyone .notifications-options-nav input#notification-bulk-manage { + line-height: 1.2; +} + +/** +*---------------------------------------------------------- +* @section 2.2 - Pagination +*---------------------------------------------------------- +*/ +#buddypress.twentytwentyone .bp-pagination { + color: var(--global--color-secondary); +} + +/** +*------------------------------------------------------------------------------- +* @section 3.0 - BP Lists / Loops Generic +*------------------------------------------------------------------------------- +*/ +#buddypress.twentytwentyone .bp-list { + border-top: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-list > li { + border-bottom: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone .activity-list.bp-list { + background: inherit; + border-left: none; + border-right: none; + border-bottom: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone .activity-list.bp-list .activity-item { + background: inherit; + border: 1px solid var(--global--color-primary); + box-shadow: none; +} + +#buddypress.twentytwentyone .activity-list.bp-list .activity-item .activity-header .time-since, +#buddypress.twentytwentyone .activity-list.bp-list .activity-item .activity-header .time-since:hover { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .bp-list li:not(.mini) .item-avatar img.avatar { + display: block; + margin: 0 auto; + margin-bottom: 1em; +} + +@media screen and (min-width: 46.8em) { + #buddypress.twentytwentyone .bp-list li:not(.mini) .item-avatar { + max-width: 128px; + max-height: 128px; + margin: auto; + margin-right: 5%; + } +} + +#buddypress.twentytwentyone .bp-list li.mini .item-avatar img.avatar { + display: block; + margin: 0 auto; + max-width: 50px; + max-height: 50px; + margin-bottom: 1em; +} + +@media screen and (min-width: 46.8em) { + #buddypress.twentytwentyone .bp-list li.mini .item-avatar { + width: 5%; + margin: auto; + margin-right: 2%; + } +} + +#buddypress.twentytwentyone .bp-list li.mini .activity-meta.action { + clear: none; +} + +#buddypress.twentytwentyone .bp-list li .meta, +#buddypress.twentytwentyone .bp-list li .item-meta { + color: var(--global--color-secondary); +} + +/** +*---------------------------------------------------------- +* @section 3.1 - Activity Loop +*---------------------------------------------------------- +*/ +/** +*----------------------------------------------------- +* @section 3.1.1 - Activity Whats New +*----------------------------------------------------- +*/ +#buddypress.twentytwentyone .activity-update-form { + border: 1px solid var(--global--color-primary); + box-shadow: none; +} + +#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li { + margin-bottom: 0; +} + +#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object { + padding: 5px; + margin-left: 3px; + border-radius: 0; + border-style: dotted; + border-width: 0; + border-left-width: 1px; + border-right-width: 1px; +} + +#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object:not(.selected) { + background: var(--global--color-white-90); + color: var(--form--color-text); + border-color: var(--form--border-color); +} + +#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object:not(.selected):last-child { + border-bottom: dotted 1px; +} + +#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object:not(.selected):hover { + background: var(--global--color-blue); +} + +#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object.selected { + border: none; + background-color: transparent; +} + +/** +*----------------------------------------------------- +* @section 3.1.2 - Activity Entries +*----------------------------------------------------- +*/ +body .site #buddypress.twentytwentyone .activity-list .load-more, +body .site #buddypress.twentytwentyone .activity-list .load-newest { + background-color: var(--button--color-background); + color: var(--button--color-text); + border: 1px solid var(--button--color-background); +} + +body .site #buddypress.twentytwentyone .activity-list .load-more a, +body .site #buddypress.twentytwentyone .activity-list .load-newest a { + color: var(--button--color-text); +} + +body .site #buddypress.twentytwentyone .activity-list .load-more a:focus, +body .site #buddypress.twentytwentyone .activity-list .load-newest a:focus { + color: var(--button--color-text-hover); + background: transparent; + outline-offset: -6px; + outline: 2px dotted currentColor; +} + +body .site #buddypress.twentytwentyone .activity-list .load-more:hover, body .site #buddypress.twentytwentyone .activity-list .load-more:focus, +body .site #buddypress.twentytwentyone .activity-list .load-newest:hover, +body .site #buddypress.twentytwentyone .activity-list .load-newest:focus { + color: var(--button--color-text-hover); + background: transparent; +} + +body .site #buddypress.twentytwentyone .activity-list .load-more:hover a, body .site #buddypress.twentytwentyone .activity-list .load-more:focus a, +body .site #buddypress.twentytwentyone .activity-list .load-newest:hover a, +body .site #buddypress.twentytwentyone .activity-list .load-newest:focus a { + color: var(--button--color-text-hover); + background: transparent; +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-header, +body .site #buddypress.twentytwentyone .activity-list .activity-content .comment-header { + color: var(--global--color-secondary); +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-header a, +body .site #buddypress.twentytwentyone .activity-list .activity-content .comment-header a { + font-weight: 600; +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-header a:hover, +body .site #buddypress.twentytwentyone .activity-list .activity-content .comment-header a:hover { + text-decoration: underline; +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-inner, +body .site #buddypress.twentytwentyone .activity-list .activity-content blockquote { + background: inherit; + border: 1px dotted var(--global--color-primary); +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action { + background: inherit; +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .button:before, +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .icons:before { + height: auto; + width: auto; + display: inline; +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .button { + background: var(--global--color-background); + color: var(--global--color-primary); + border: none; +} + +body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .button span { + color: var(--global--color-secondary); +} + +body.activity-permalink #buddypress.twentytwentyone .activity-list { + border: none; +} + +body.activity-permalink #buddypress.twentytwentyone .activity-list .activity-avatar img.avatar { + background: var(--global--color-white); +} + +/** +*----------------------------------------------------- +* @section 3.1.3 - Activity Comments +*----------------------------------------------------- +*/ +#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-avatar { + width: auto; + margin-right: 0; +} + +#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-meta { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-meta a { + font-weight: 600; +} + +#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-meta a:hover { + text-decoration: underline; +} + +#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-content { + border-left: 1px solid var(--global--color-secondary); + margin: 15px 0 0 5%; +} + +/** +*---------------------------------------------------------- +* @section 3.2 - Blogs Loop +*---------------------------------------------------------- +*/ +/** +*---------------------------------------------------------- +* @section 3.3 - Groups Loop +*---------------------------------------------------------- +*/ +#buddypress.twentytwentyone .groups-list li .group-desc { + color: var(--global--color-secondary); + border: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone #groups-dir-list .current-group-type { + text-align: center; +} + +/** +*---------------------------------------------------------- +* @section 3.4 - Members Loop +*---------------------------------------------------------- +*/ +#buddypress.twentytwentyone .members-list li .user-update { + border: 1px dotted var(--global--color-primary); + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone #members-dir-list .current-member-type { + text-align: center; +} + +/** +*------------------------------------------------------------------------------- +* @section 4.0 - Directories +*------------------------------------------------------------------------------- +*/ +/** +*---------------------------------------------------------- +* @section 4.1 - Groups Creation Steps +*---------------------------------------------------------- +*/ +#buddypress.twentytwentyone #group-create-body nav.group-create-links:not(.tabbed-links) { + background: transparent; + clear: both; + overflow: hidden; + border: none; + border-bottom: 1px solid var(--global--color-primary); + box-shadow: none; +} + +#buddypress.twentytwentyone #group-create-body nav.group-create-links:not(.tabbed-links) li a, +#buddypress.twentytwentyone #group-create-body nav.group-create-links:not(.tabbed-links) li span { + padding: 0.5em calc(0.5em + 2px); + display: block; +} + +/** +*------------------------------------------------------------------------------- +* @section 5.0 - Single Item screens: Groups, Users +*------------------------------------------------------------------------------- +*/ +/** +*----------------------------------------------------------- +* @subsection 5.1 - Item Header Global +*----------------------------------------------------------- +*/ +#buddypress.twentytwentyone .single-headers .group-status, +#buddypress.twentytwentyone .single-headers .item-meta, +#buddypress.twentytwentyone .single-headers .bp-group-type-list, +#buddypress.twentytwentyone .single-headers .bp-member-type-list { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .single-headers a:hover { + text-decoration: underline; +} + +/** +*----------------------------------------------------- +* @subsection 5.1.1 - item-header Groups +* +* Group Specific Item Header +*----------------------------------------------------- +*/ +#buddypress.twentytwentyone .groups-header .desc-wrap { + background: var(--global--color-background); + border: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone .groups-header .desc-wrap .group-description { + background: none; + box-shadow: none; +} + +/** +*----------------------------------------------------- +* @subsection 5.1.2 - Item Header User Accounts +* +* User Accounts Specific Item Header +*----------------------------------------------------- +*/ +/** +*----------------------------------------------------------- +* @subsection 5.2 - Item Body: Global +*----------------------------------------------------------- +*/ +#buddypress.twentytwentyone .item-body h2.screen-heading, +#buddypress.twentytwentyone .item-body h2.creation-step-name { + font-size: var(--heading--font-size-h2); + letter-spacing: var(--heading--letter-spacing-h2); +} + +#buddypress.twentytwentyone .item-body h3.screen-heading, +#buddypress.twentytwentyone .item-body h3.creation-step-name { + font-size: var(--heading--font-size-h3); + letter-spacing: var(--heading--letter-spacing-h3); +} + +#buddypress.twentytwentyone .item-body h4.screen-heading, +#buddypress.twentytwentyone .item-body h4.creation-step-name { + font-size: var(--heading--font-size-h4); + letter-spacing: var(--heading--letter-spacing-h4); +} + +#buddypress.twentytwentyone .item-body .bp-avatar #avatar-crop-pane { + margin-bottom: 1em; +} + +#buddypress.twentytwentyone .item-body .bp-avatar-nav ul.avatar-nav-items { + border-bottom: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone .item-body .bp-avatar-nav ul.avatar-nav-items li.current { + border: 1px solid var(--global--color-primary); + border-bottom: 1px solid var(--global--color-background); +} + +#buddypress.twentytwentyone .item-body #drag-drop-area { + border: 4px dashed var(--global--color-secondary); +} + +#buddypress.twentytwentyone .item-body #drag-drop-area .drag-drop-info { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .item-body #drag-drop-area #bp-browse-button { + margin: 50px auto 0; +} + +#buddypress.twentytwentyone .item-body .bp-avatar-status .warning, +#buddypress.twentytwentyone .item-body .bp-avatar-status .success, +#buddypress.twentytwentyone .item-body .bp-cover-image-status .warning, +#buddypress.twentytwentyone .item-body .bp-cover-image-status .success { + background-color: var(--global--color-light-gray); + border: none; + border-left-width: 4px; + border-left-style: solid; + color: var(--global--color-dark-gray); +} + +#buddypress.twentytwentyone .item-body .bp-avatar-status .warning, +#buddypress.twentytwentyone .item-body .bp-cover-image-status .warning { + border-left-color: var(--global--color-orange); +} + +#buddypress.twentytwentyone .item-body .bp-avatar-status .success, +#buddypress.twentytwentyone .item-body .bp-cover-image-status .success { + border-left-color: var(--global--color-green); +} + +#buddypress.twentytwentyone .item-body .bp-avatar-status .error, +#buddypress.twentytwentyone .item-body .bp-cover-image-status .error { + border-left-color: var(--global--color-red); +} + +/** +*---------------------------------------------------- +* @subsection 5.2.1 - Item Body Groups +* +* Groups specific item body rules - screens +*---------------------------------------------------- +*/ +/** +*----------------------------------------- +* @subsection 5.2.1.1 - Management Settings Screens +*----------------------------------------- +*/ +.group-settings #buddypress.twentytwentyone .group-settings-selections { + margin-bottom: 1em; +} + +#buddypress.twentytwentyone #group-manage-members-ui .bp-pagination { + padding: 0.4em 0 0.4em 0.5em; +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form input[type="search"] { + font-size: 16px; +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form input[type="search"]:focus { + outline-offset: -7px; + outline: 2px dotted var(--form--border-color); +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form button[type="submit"] { + border-width: 1px; + border-style: solid; + background-clip: border-box; +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form button[type="submit"]:hover { + border-color: var(--button--color-background); +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-roles-filter label, +#buddypress.twentytwentyone #group-manage-members-ui #group-members-list-table .group-member-edit label { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + word-wrap: normal !important; +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-members-role-filter, +#buddypress.twentytwentyone #group-manage-members-ui #group-members-list-table .group-member-edit select { + font-size: 16px; + padding: 6px 25px 6px 10px; +} + +#buddypress.twentytwentyone #group-manage-members-ui #group-members-role-filter:focus, +#buddypress.twentytwentyone #group-manage-members-ui #group-members-list-table .group-member-edit select:focus { + outline-offset: 2px; + outline: 2px dotted var(--form--border-color); +} + +/** +*----------------------------------------- +* @subsection 5.2.1.2 - Group Members List +*----------------------------------------- +*/ +/* +*----------------------------------------- +* @subsection 5.2.1.3 - Group Invites List +*----------------------------------------- +*/ +#buddypress.twentytwentyone .bp-invites-content ul { + border-top: none; +} + +#buddypress.twentytwentyone .bp-invites-content ul li { + border: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-invites-content ul li.selected { + box-shadow: none; + border-style: solid; +} + +#buddypress.twentytwentyone .bp-invites-content ul li button.invite-button { + border: none; + background: none; + top: -5px; + right: 0; +} + +#buddypress.twentytwentyone .bp-invites-content ul li button.invite-button .icons:before { + border-radius: 50%; + width: 32px; + height: 32px; + color: var(--global--color-primary); + background: var(--global--color-background); +} + +#buddypress.twentytwentyone .bp-invites-content ul li button.invite-button:hover .icons:before { + color: var(--global--color-background); + background: var(--global--color-primary); + width: 32px; + height: 32px; +} + +#buddypress.twentytwentyone .bp-invites-content ul li ul.group-inviters li { + border: none; +} + +/* +*----------------------------------------- +* @subsection 5.2.1.4 - Group Activity +*----------------------------------------- +*/ +/** +*----------------------------------------------------- +* @subsection 5.2.2 - Item Body User Accounts +* +* User Account specific item body rules +*----------------------------------------------------- +*/ +/** +*-------------------------------------------- +* @subsection 5.2.2.1 - classes, pag, filters +*-------------------------------------------- +*/ +/** +*------------------------------------------- +* @subsection 5.2.2.2 - Extended Profiles +*------------------------------------------- +*/ +#buddypress.twentytwentyone .profile table.profile-fields tr.alt td, +#buddypress.twentytwentyone .profile table.profile-fields tr td, +#buddypress.twentytwentyone .profile table.bp-tables-user tr.alt td, +#buddypress.twentytwentyone .profile table.bp-tables-user tr td { + background: transparent; +} + +#buddypress.twentytwentyone .profile table.profile-fields tr.alt td.label, +#buddypress.twentytwentyone .profile table.profile-fields tr td.label, +#buddypress.twentytwentyone .profile table.bp-tables-user tr.alt td.label, +#buddypress.twentytwentyone .profile table.bp-tables-user tr td.label { + border-right-color: var(--global--color-primary); +} + +#buddypress.twentytwentyone .profile.edit .editfield { + background: var(--global--color-background); + border: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone .profile.edit .editfield p.field-visibility-settings-toggle { + margin-top: 1em; +} + +#buddypress.twentytwentyone .profile.edit .editfield .field-visibility-settings .radio label { + margin-bottom: 0.5em; +} + +#buddypress.twentytwentyone .profile.edit .wp-editor-container .mce-toolbar button { + color: var(--global--color-dark-gray); + background: var(--global--color-white-90); + border-color: var(--global--color-dark-gray); +} + +#buddypress.twentytwentyone .profile.edit .button-tabs li { + border: solid 2px var(--global--color-primary); + overflow: hidden; +} + +#buddypress.twentytwentyone .profile.edit .button-tabs li a { + text-decoration: none; +} + +#buddypress.twentytwentyone .profile.edit .button-tabs li.current { + background-color: var(--global--color-primary); + color: var(--button--color-text); +} + +#buddypress.twentytwentyone .profile.edit .button-tabs li.current a { + color: var(--button--color-text); +} + +#buddypress.twentytwentyone .profile.edit .button-tabs li:hover { + outline-offset: 10px; + border-style: dotted; +} + +#buddypress.twentytwentyone .profile.edit .clear-value { + text-decoration: underline; +} + +#buddypress.twentytwentyone .profile.edit legend { + padding: 0; +} + +#buddypress.twentytwentyone .field-visibility-settings, +#buddypress.twentytwentyone .field-visibility-settings-header { + color: var(--global--color-secondary); +} + +/** +*------------------------------------------- +* @subsection 5.2.2.3 - Groups +*------------------------------------------- +*/ +#buddypress.twentytwentyone #group-list.invites h2.list-title { + float: none; +} + +#buddypress.twentytwentyone #group-list.invites .accept { + margin-left: 0; +} + +/** +*------------------------------------------- +* @subsection 5.2.2.5 - Private Messaging +*------------------------------------------- +*/ +#buddypress.twentytwentyone #user_messages_select_all { + vertical-align: -5px; +} + +#buddypress.twentytwentyone #user_messages_select_all:checked { + vertical-align: -3px; +} + +#buddypress.twentytwentyone #message-threads { + border-top: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads > li { + border-bottom: 1px dotted var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads > li.selected { + border: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads > li.unread { + border-left: 8px solid var(--global--color-yellow); +} + +#buddypress.twentytwentyone #message-threads li .thread-cb { + padding-left: 15px; +} + +#buddypress.twentytwentyone #message-threads li.unread .thread-cb { + padding-left: 7px; +} + +#buddypress.twentytwentyone #message-threads li .thread-from img.avatar, +#buddypress.twentytwentyone #message-threads li .thread-to img.avatar { + width: 32px; + height: 32px; +} + +#buddypress.twentytwentyone #message-threads li .thread-from .num-recipients, +#buddypress.twentytwentyone #message-threads li .thread-to .num-recipients { + color: var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads li .thread-content .excerpt { + color: var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads li .thread-date time { + color: var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads li.selected { + background: transparent; + font-weight: bolder; + color: var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads li.selected .thread-subject .subject { + color: var(--global--color-primary); +} + +#buddypress.twentytwentyone #message-threads li:not(.selected) { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .bp-messages-content #thread-preview h2:first-child, +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-header h2:first-child { + background-color: var(--button--color-background); + color: var(--button--color-text); +} + +#buddypress.twentytwentyone .bp-messages-content #thread-preview { + border-color: var(--button--color-background); +} + +#buddypress.twentytwentyone .bp-messages-content #thread-preview dd, +#buddypress.twentytwentyone .bp-messages-content #thread-preview .participants-list { + padding-left: 0; +} + +#buddypress.twentytwentyone .bp-messages-content #thread-preview .preview-pane-header { + border-bottom-style: dotted; + border-bottom-color: var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-messages-content #thread-preview .preview-content .preview-message { + background: transparent; +} + +#buddypress.twentytwentyone .bp-messages-content .single-message-thread-header dd, +#buddypress.twentytwentyone .bp-messages-content .single-message-thread-header .participants-list { + padding-left: 0; +} + +#buddypress.twentytwentyone .bp-messages-content .actions button.bp-tooltip { + border: none; + background: none; +} + +#buddypress.twentytwentyone .bp-messages-content .actions button.bp-tooltip.message-action-delete:before { + width: 32px; + height: 32px; + color: var(--global--color-primary); + background: var(--global--color-background); +} + +#buddypress.twentytwentyone .bp-messages-content .actions button.bp-tooltip.message-action-delete:hover:before { + border-radius: 50%; + color: var(--global--color-background); + background: var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-messages-content .actions .message-action-unstar:before, +#buddypress.twentytwentyone .bp-messages-content .actions .message-action-star:before { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata { + background: transparent; + border: 1px solid var(--global--color-primary); + box-shadow: none; +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata * { + line-height: 1.6; + vertical-align: middle; +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata .user-link { + margin-top: 3px; + margin-bottom: 3px; +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata .user-link strong { + display: inline-block; + margin-top: 2px; +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata .user-link:hover strong { + text-decoration: underline; +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata time { + color: var(--global--color-secondary); +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-content { + background: transparent; + margin: 0; + width: 100%; + padding: 1em; +} + +#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li:first-child .message-content { + border: 1px dotted var(--global--color-primary); + border-top: none; +} + +#buddypress.twentytwentyone .bp-messages-content #send-reply .avatar-box img.avatar { + display: inline-block; + vertical-align: -7px; +} + +#buddypress.twentytwentyone .bp-messages-content .wp-editor-container .mce-toolbar button { + color: var(--global--color-dark-gray); + background: var(--global--color-white-90); + border-color: var(--global--color-dark-gray); +} + +#buddypress.twentytwentyone .bp-messages-content #bp-messages-reset { + border-width: 0; + font-size: inherit; +} + +#buddypress.twentytwentyone .bp-messages-content #send-to-input { + width: 100% !important; +} + +#buddypress.twentytwentyone .subnav-filters button#user_messages_search_submit { + padding: 3px 0.7em; + background-color: var(--global--color-background); + color: var(--button--color-text-hover); + border-color: var(--global--color-background); + border-left-color: var(--button--color-background); +} + +#buddypress.twentytwentyone .subnav-filters button#user_messages_search_submit:hover { + background-color: var(--button--color-background); + color: var(--button--color-text); + border-color: var(--button--color-background); +} + +#buddypress.twentytwentyone .subnav-filters .user-messages-bulk-actions .bulk-apply { + line-height: 1.5; + margin: 0 0 0 10px; + padding: 3px 5px; + background-color: var(--global--color-background); + color: var(--button--color-text-hover); +} + +#buddypress.twentytwentyone .subnav-filters .user-messages-bulk-actions .bulk-apply:hover { + background-color: var(--button--color-background); + color: var(--button--color-text); +} + +#buddypress.twentytwentyone .subnav-filters .user-messages-bulk-actions .bulk-apply span { + vertical-align: middle; +} + +/** +*------------------------------------------ +* @subsection 5.2.2.6 - Settings +*------------------------------------------ +*/ +#buddypress.twentytwentyone.buddypress-wrap .bp-tables-user tr.alt td, +#buddypress.twentytwentyone.buddypress-wrap table.wp-profile-fields tr.alt td { + background: transparent; +} + +/** +*------------------------------------------------------------------------------- +* @section 6.0 - Forms - General +*------------------------------------------------------------------------------- +*/ +#buddypress.twentytwentyone fieldset { + padding-top: 0; + margin-top: 1em; +} + +#buddypress.twentytwentyone fieldset legend { + padding: 0 1em; + display: inline-block; +} + +#buddypress.twentytwentyone .select-wrap { + border: 1px solid var(--global--color-primary); + background: var(--global--color-white-90); +} + +#buddypress.twentytwentyone .select-wrap select { + background: transparent; + width: 98%; + text-indent: 0; +} + +#buddypress.twentytwentyone .select-wrap span.select-arrow { + background: transparent; +} + +#buddypress.twentytwentyone .select-wrap span.select-arrow:before { + font-family: dashicons; + content: "\f140"; + color: var(--global--color-black); + vertical-align: -10%; +} + +#buddypress.twentytwentyone .select-wrap:focus .select-arrow:before, #buddypress.twentytwentyone .select-wrap:hover .select-arrow:before { + color: var(--global--color-black); +} + +#buddypress.twentytwentyone input[type="checkbox"], +#buddypress.twentytwentyone input[type="radio"] { + width: 25px; + height: 25px; + vertical-align: top; +} + +#buddypress.twentytwentyone textarea, +#buddypress.twentytwentyone input[type="text"], +#buddypress.twentytwentyone input[type="color"], +#buddypress.twentytwentyone input[type="date"], +#buddypress.twentytwentyone input[type="datetime"], +#buddypress.twentytwentyone input[type="datetime-local"], +#buddypress.twentytwentyone input[type="email"], +#buddypress.twentytwentyone input[type="month"], +#buddypress.twentytwentyone input[type="number"], +#buddypress.twentytwentyone input[type="range"], +#buddypress.twentytwentyone input[type="tel"], +#buddypress.twentytwentyone input[type="time"], +#buddypress.twentytwentyone input[type="url"], +#buddypress.twentytwentyone input[type="week"], +#buddypress.twentytwentyone input[type="password"], +#buddypress.twentytwentyone input[type="search"], +#buddypress.twentytwentyone .groups-members-search input[type="text"] { + color: var(--form--color-text); + background: var(--global--color-white-90); +} + +#buddypress.twentytwentyone .subnav-filters input[type="search"] { + font-size: 16px; + background: transparent; +} + +#buddypress.twentytwentyone .bp-dir-search-form button, +#buddypress.twentytwentyone form#group-members-search button, +#buddypress.twentytwentyone form#group_invites_search_form button { + background-color: var(--global--color-background); + color: var(--button--color-text-hover); + border-color: var(--global--color-background); + border-left-color: var(--button--color-background); +} + +#buddypress.twentytwentyone .bp-dir-search-form button:hover, +#buddypress.twentytwentyone form#group-members-search button:hover, +#buddypress.twentytwentyone form#group_invites_search_form button:hover { + background-color: var(--button--color-background); + color: var(--button--color-text); + border-color: var(--button--color-background); +} + +#buddypress.twentytwentyone .standard-form p.description { + color: var(--global--primary-color); + background-color: var(--global--color-background); +} + +body.bp-user.settings.general #buddypress.twentytwentyone .wp-pwd:not(.is-open) { + display: none; +} + +/** +*---------------------------------------------------------- +* @section 6.1 - Directory Search +* +* The Search form & controls in directory pages +*---------------------------------------------------------- +*/ +.bp-user #buddypress.twentytwentyone [data-bp-search] form #user_messages_search { + padding: 3px 10px; +} + +#buddypress.twentytwentyone form.bp-dir-search-form, +#buddypress.twentytwentyone form.bp-messages-search-form, +#buddypress.twentytwentyone form[data-bp-search].bp-invites-search-form, +#buddypress.twentytwentyone form#group-members-search { + border: 1px solid var(--global--color-primary); + background-color: var(--global--color-white-90); +} + +/** +*------------------------------------------------------------------------------- +* @section 7.0 - Tables - General +*------------------------------------------------------------------------------- +*/ +#buddypress.twentytwentyone .bp-tables-user tbody tr, +#buddypress.twentytwentyone .bp-tables-user tbody tr.alt, +#buddypress.twentytwentyone table.wp-profile-fields tbody tr, +#buddypress.twentytwentyone table.wp-profile-fields tbody tr.alt, +#buddypress.twentytwentyone table.forum tbody tr, +#buddypress.twentytwentyone table.forum tbody tr.alt { + background: transparent; +} + +/** +*------------------------------------------------------------------------------- +* @section 8.0 - Classes - Messages, Ajax, Widgets, Buttons +*------------------------------------------------------------------------------- +*/ +#buddypress.twentytwentyone button, +#buddypress.twentytwentyone a.button, +#buddypress.twentytwentyone input[type="submit"], +#buddypress.twentytwentyone input[type="button"], +#buddypress.twentytwentyone ul.button-nav:not(.button-tabs) li a, +#buddypress.twentytwentyone .generic-button a, +#buddypress.twentytwentyone .comment-reply-link, +#buddypress.twentytwentyone a.bp-title-button, +#buddypress.twentytwentyone .activity-read-more a { + background: var(--button--color-background); + border: 1px solid var(--button--color-background); + border-radius: 0; + color: var(--button--color-text); +} + +#buddypress.twentytwentyone button:hover, +#buddypress.twentytwentyone button:focus, +#buddypress.twentytwentyone a.button:focus, +#buddypress.twentytwentyone a.button:hover, +#buddypress.twentytwentyone input[type="submit"]:focus, +#buddypress.twentytwentyone input[type="submit"]:hover, +#buddypress.twentytwentyone input[type="button"]:focus, +#buddypress.twentytwentyone input[type="button"]:hover, +#buddypress.twentytwentyone input[type="reset"], +#buddypress.twentytwentyone #bp-messages-reset, +#buddypress.twentytwentyone .button-nav li a:focus, +#buddypress.twentytwentyone .button-nav li a:hover, +#buddypress.twentytwentyone .button-nav li.current a, +#buddypress.twentytwentyone .generic-button a:focus, +#buddypress.twentytwentyone .generic-button a:hover, +#buddypress.twentytwentyone .comment-reply-link:focus, +#buddypress.twentytwentyone .comment-reply-link:hover, +#buddypress.twentytwentyone .activity-read-more a:focus, +#buddypress.twentytwentyone .activity-read-more a:hover { + background: transparent; + border-color: var(--button--color-background); + color: var(--button--color-text-hover); + outline: none; + text-decoration: none; +} + +#buddypress.twentytwentyone input[type="reset"]:focus, +#buddypress.twentytwentyone input[type="reset"]:hover, +#buddypress.twentytwentyone #bp-messages-reset:focus, +#buddypress.twentytwentyone #bp-messages-reset:hover { + outline-offset: -1px; + outline: 2px dotted currentColor; +} + +#buddypress.twentytwentyone input[type="submit"].pending, +#buddypress.twentytwentyone input[type="button"].pending, +#buddypress.twentytwentyone input[type="reset"].pending, +#buddypress.twentytwentyone input[type="button"].disabled, +#buddypress.twentytwentyone input[type="reset"].disabled, +#buddypress.twentytwentyone input[type="submit"][disabled="disabled"], +#buddypress.twentytwentyone input[type="submit"]:disabled, +#buddypress.twentytwentyone input[type="submit"]:hover.pending, +#buddypress.twentytwentyone input[type="button"]:hover.pending, +#buddypress.twentytwentyone input[type="reset"]:hover.pending, +#buddypress.twentytwentyone input[type="submit"]:hover.disabled, +#buddypress.twentytwentyone input[type="button"]:hover.disabled, +#buddypress.twentytwentyone input[type="reset"]:hover.disabled, +#buddypress.twentytwentyone button.pending:hover, +#buddypress.twentytwentyone button.disabled:hover, +#buddypress.twentytwentyone div.pending a:hover, +#buddypress.twentytwentyone a.disabled:hover +button.pending, +#buddypress.twentytwentyone button.disabled, +#buddypress.twentytwentyone div.pending a, +#buddypress.twentytwentyone a.disabled { + opacity: 0.6; + cursor: not-allowed; +} + +#buddypress.twentytwentyone .blog-button:after, #buddypress.twentytwentyone .blog-button:before { + display: none; +} + +#buddypress.twentytwentyone .create-button a:focus, +#buddypress.twentytwentyone .create-button a:hover { + text-decoration: none; +} + +#buddypress.twentytwentyone.bp-dir-vert-nav .create-button a { + box-shadow: none; + color: var(--button--color-text); + background-color: var(--button--color-background); + border-radius: var(--button--border-radius); + border: var(--button--border-width) solid var(--button--color-background); + background-clip: border-box; +} + +#buddypress.twentytwentyone .warn { + color: var(--global--color-primary); + font-weight: 600; +} + +#buddypress.twentytwentyone .bp-feedback { + color: var(--global--color-primary); + background: var(--global--color-background); + box-shadow: none; +} + +#buddypress.twentytwentyone .bp-feedback:not(.custom-homepage-info) { + margin-top: 1.5em; + margin-bottom: 1.5em; + border: solid 1px var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-feedback .bp-icon { + background-color: var(--global--color-primary); + color: var(--button--color-text); +} + +#buddypress.twentytwentyone .bp-feedback a { + border-bottom: solid 1px var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-feedback button.bp-tooltip { + border: none; + background: none; + top: -5px; + right: 0; +} + +#buddypress.twentytwentyone .bp-feedback button.bp-tooltip .dashicons-dismiss { + border-radius: 50%; + width: 32px; + height: 32px; + color: var(--global--color-primary); + background: var(--global--color-background); +} + +#buddypress.twentytwentyone .bp-feedback button.bp-tooltip:hover .dashicons-dismiss { + color: var(--global--color-background); + background: var(--global--color-primary); +} + +#buddypress.twentytwentyone .bp-feedback.bp-sitewide-notice button.bp-tooltip { + top: 0; + right: 15px; +} + +#buddypress.twentytwentyone .bp-feedback.bp-sitewide-notice .bp-icon:before { + content: "\f16d"; +} + +#buddypress.twentytwentyone #group-create-body .bp-cover-image-status p.warning { + background-color: var(--global--color-light-gray); + border: none; + border-left-width: 4px; + border-left-style: solid; + border-left-color: var(--global--color-orange); + color: var(--global--color-dark-gray); + box-shadow: none; +} + +body.buddypress .site #buddypress.twentytwentyone .button.bp-tooltip:after { + content: attr(data-bp-tooltip); + word-wrap: break-word; + height: auto; + width: auto; +} + +/** +*------------------------------------------------------------------------------- +* @section 9.0 - Layout classes +*------------------------------------------------------------------------------- +*/ +#buddypress.twentytwentyone.bp-single-vert-nav .bp-navs.vertical li span { + background-color: var(--button--color-background); + border-radius: 10%; + display: inline-block; + margin: 3px 0; +} + +#buddypress.twentytwentyone.bp-single-vert-nav .bp-navs.vertical li.selected span, #buddypress.twentytwentyone.bp-single-vert-nav .bp-navs.vertical li.current span { + background-color: var(--global--color-background); +} + +#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) { + background: var(--global--color-background); + border-left: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) { + background: transparent; + border-bottom: 1px solid var(--global--color-primary); +} + +#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a { + border: none; + text-decoration: none; +} + +#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.current, #buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.selected { + background-color: var(--global--color-primary); + margin: 0; + padding: 10px 0; + border-radius: 0; +} + +#buddypress.twentytwentyone .grid.bp-list { + border-top: none; +} + +#buddypress.twentytwentyone .grid > li { + border: none; +} + +#buddypress.twentytwentyone .grid > li .list-wrap { + border: 1px solid var(--global--color-primary); + background: transparent; +} + +#buddypress.twentytwentyone .grid > li:not(.mini) .item-avatar, +#buddypress.twentytwentyone .grid > li .item-avatar { + margin-right: auto; +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/twentytwentyone.min.css b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/twentytwentyone.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e83c245538faf7541175a83166f24463bae8c407 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/twentytwentyone.min.css @@ -0,0 +1 @@ +.is-dark-theme #buddypress.twentytwentyone .avatar{background:var(--global--color-white-90)}@media screen and (max-width:46.8em){#buddypress.twentytwentyone:not(.bp-single-vert-nav) .bp-navs li{background:0 0}}#buddypress.twentytwentyone .bp-navs li .count{background-color:var(--button--color-background);border:1px solid var(--button--color-background);border-radius:50%;color:var(--button--color-text)}#buddypress.twentytwentyone .bp-navs:not(.tabbed-links) li a:hover a .count,#buddypress.twentytwentyone .bp-navs:not(.tabbed-links) li.current a .count,#buddypress.twentytwentyone .bp-navs:not(.tabbed-links) li.selected a .count{background-color:var(--global--color-background);border:1px solid var(--global--color-background);color:var(--button--color-text-hover)}#buddypress.twentytwentyone .bp-navs li:not(.current):not(.selected) a:focus,#buddypress.twentytwentyone .bp-navs li:not(.current):not(.selected) a:hover{background:var(--global--color-background);color:var(--global--color-primary);outline-offset:-6px;outline:2px dotted currentColor}#buddypress.twentytwentyone .bp-navs li.current a,#buddypress.twentytwentyone .bp-navs li.current a:focus,#buddypress.twentytwentyone .bp-navs li.current a:hover,#buddypress.twentytwentyone .bp-navs li.selected a,#buddypress.twentytwentyone .bp-navs li.selected a:focus,#buddypress.twentytwentyone .bp-navs li.selected a:hover{color:var(--button--color-text);background-color:var(--button--color-background)}#buddypress.twentytwentyone .bp-navs.tabbed-links ol,#buddypress.twentytwentyone .bp-navs.tabbed-links ul{border-bottom:1px solid var(--global--color-primary)}#buddypress.twentytwentyone .bp-navs.tabbed-links ol li.current,#buddypress.twentytwentyone .bp-navs.tabbed-links ul li.current{border-color:var(--global--color-primary) var(--global--color-primary) var(--global--color-background);border-style:solid;border-top-left-radius:4px;border-top-right-radius:4px}#buddypress.twentytwentyone .bp-navs.tabbed-links ol li.current a,#buddypress.twentytwentyone .bp-navs.tabbed-links ul li.current a{color:var(--global--color-primary);background-color:var(--global--color-background)}#buddypress.twentytwentyone #group-invites-container .bp-invites-nav{border-bottom:none}#buddypress.twentytwentyone #group-invites-container .bp-invites-nav li .count{margin-left:10px;border-radius:10%;vertical-align:10%}#buddypress.twentytwentyone #group-invites-container #send-invites-editor ul{padding-left:0}#buddypress.twentytwentyone.bp-dir-hori-nav:not(.bp-vertical-navs) nav:not(.tabbed-links){border:none;border-bottom:1px solid var(--global--color-primary);box-shadow:none}#buddypress.twentytwentyone .subnav-filters>ul{padding-left:0}#buddypress.twentytwentyone .notifications-options-nav{margin-top:1em}#buddypress.twentytwentyone .notifications-options-nav input#notification-bulk-manage{line-height:1.2}#buddypress.twentytwentyone .bp-pagination{color:var(--global--color-secondary)}#buddypress.twentytwentyone .bp-list{border-top:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone .bp-list>li{border-bottom:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone .activity-list.bp-list{background:inherit;border-left:none;border-right:none;border-bottom:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone .activity-list.bp-list .activity-item{background:inherit;border:1px solid var(--global--color-primary);box-shadow:none}#buddypress.twentytwentyone .activity-list.bp-list .activity-item .activity-header .time-since,#buddypress.twentytwentyone .activity-list.bp-list .activity-item .activity-header .time-since:hover{color:var(--global--color-secondary)}#buddypress.twentytwentyone .bp-list li:not(.mini) .item-avatar img.avatar{display:block;margin:0 auto;margin-bottom:1em}@media screen and (min-width:46.8em){#buddypress.twentytwentyone .bp-list li:not(.mini) .item-avatar{max-width:128px;max-height:128px;margin:auto;margin-right:5%}}#buddypress.twentytwentyone .bp-list li.mini .item-avatar img.avatar{display:block;margin:0 auto;max-width:50px;max-height:50px;margin-bottom:1em}@media screen and (min-width:46.8em){#buddypress.twentytwentyone .bp-list li.mini .item-avatar{width:5%;margin:auto;margin-right:2%}}#buddypress.twentytwentyone .bp-list li.mini .activity-meta.action{clear:none}#buddypress.twentytwentyone .bp-list li .item-meta,#buddypress.twentytwentyone .bp-list li .meta{color:var(--global--color-secondary)}#buddypress.twentytwentyone .activity-update-form{border:1px solid var(--global--color-primary);box-shadow:none}#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li{margin-bottom:0}#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object{padding:5px;margin-left:3px;border-radius:0;border-style:dotted;border-width:0;border-left-width:1px;border-right-width:1px}#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object:not(.selected){background:var(--global--color-white-90);color:var(--form--color-text);border-color:var(--form--border-color)}#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object:not(.selected):last-child{border-bottom:dotted 1px}#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object:not(.selected):hover{background:var(--global--color-blue)}#buddypress.twentytwentyone .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items li.bp-activity-object.selected{border:none;background-color:transparent}body .site #buddypress.twentytwentyone .activity-list .load-more,body .site #buddypress.twentytwentyone .activity-list .load-newest{background-color:var(--button--color-background);color:var(--button--color-text);border:1px solid var(--button--color-background)}body .site #buddypress.twentytwentyone .activity-list .load-more a,body .site #buddypress.twentytwentyone .activity-list .load-newest a{color:var(--button--color-text)}body .site #buddypress.twentytwentyone .activity-list .load-more a:focus,body .site #buddypress.twentytwentyone .activity-list .load-newest a:focus{color:var(--button--color-text-hover);background:0 0;outline-offset:-6px;outline:2px dotted currentColor}body .site #buddypress.twentytwentyone .activity-list .load-more:focus,body .site #buddypress.twentytwentyone .activity-list .load-more:hover,body .site #buddypress.twentytwentyone .activity-list .load-newest:focus,body .site #buddypress.twentytwentyone .activity-list .load-newest:hover{color:var(--button--color-text-hover);background:0 0}body .site #buddypress.twentytwentyone .activity-list .load-more:focus a,body .site #buddypress.twentytwentyone .activity-list .load-more:hover a,body .site #buddypress.twentytwentyone .activity-list .load-newest:focus a,body .site #buddypress.twentytwentyone .activity-list .load-newest:hover a{color:var(--button--color-text-hover);background:0 0}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-header,body .site #buddypress.twentytwentyone .activity-list .activity-content .comment-header{color:var(--global--color-secondary)}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-header a,body .site #buddypress.twentytwentyone .activity-list .activity-content .comment-header a{font-weight:600}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-header a:hover,body .site #buddypress.twentytwentyone .activity-list .activity-content .comment-header a:hover{text-decoration:underline}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-inner,body .site #buddypress.twentytwentyone .activity-list .activity-content blockquote{background:inherit;border:1px dotted var(--global--color-primary)}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action{background:inherit}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .button:before,body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .icons:before{height:auto;width:auto;display:inline}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .button{background:var(--global--color-background);color:var(--global--color-primary);border:none}body .site #buddypress.twentytwentyone .activity-list .activity-content .activity-meta.action .button span{color:var(--global--color-secondary)}body.activity-permalink #buddypress.twentytwentyone .activity-list{border:none}body.activity-permalink #buddypress.twentytwentyone .activity-list .activity-avatar img.avatar{background:var(--global--color-white)}#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-avatar{width:auto;margin-right:0}#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-meta{color:var(--global--color-secondary)}#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-meta a{font-weight:600}#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-meta a:hover{text-decoration:underline}#buddypress.twentytwentyone .bp-list li .activity-comments .acomment-content{border-left:1px solid var(--global--color-secondary);margin:15px 0 0 5%}#buddypress.twentytwentyone .groups-list li .group-desc{color:var(--global--color-secondary);border:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone #groups-dir-list .current-group-type{text-align:center}#buddypress.twentytwentyone .members-list li .user-update{border:1px dotted var(--global--color-primary);color:var(--global--color-secondary)}#buddypress.twentytwentyone #members-dir-list .current-member-type{text-align:center}#buddypress.twentytwentyone #group-create-body nav.group-create-links:not(.tabbed-links){background:0 0;clear:both;overflow:hidden;border:none;border-bottom:1px solid var(--global--color-primary);box-shadow:none}#buddypress.twentytwentyone #group-create-body nav.group-create-links:not(.tabbed-links) li a,#buddypress.twentytwentyone #group-create-body nav.group-create-links:not(.tabbed-links) li span{padding:.5em calc(.5em + 2px);display:block}#buddypress.twentytwentyone .single-headers .bp-group-type-list,#buddypress.twentytwentyone .single-headers .bp-member-type-list,#buddypress.twentytwentyone .single-headers .group-status,#buddypress.twentytwentyone .single-headers .item-meta{color:var(--global--color-secondary)}#buddypress.twentytwentyone .single-headers a:hover{text-decoration:underline}#buddypress.twentytwentyone .groups-header .desc-wrap{background:var(--global--color-background);border:1px solid var(--global--color-primary)}#buddypress.twentytwentyone .groups-header .desc-wrap .group-description{background:0 0;box-shadow:none}#buddypress.twentytwentyone .item-body h2.creation-step-name,#buddypress.twentytwentyone .item-body h2.screen-heading{font-size:var(--heading--font-size-h2);letter-spacing:var(--heading--letter-spacing-h2)}#buddypress.twentytwentyone .item-body h3.creation-step-name,#buddypress.twentytwentyone .item-body h3.screen-heading{font-size:var(--heading--font-size-h3);letter-spacing:var(--heading--letter-spacing-h3)}#buddypress.twentytwentyone .item-body h4.creation-step-name,#buddypress.twentytwentyone .item-body h4.screen-heading{font-size:var(--heading--font-size-h4);letter-spacing:var(--heading--letter-spacing-h4)}#buddypress.twentytwentyone .item-body .bp-avatar #avatar-crop-pane{margin-bottom:1em}#buddypress.twentytwentyone .item-body .bp-avatar-nav ul.avatar-nav-items{border-bottom:1px solid var(--global--color-primary)}#buddypress.twentytwentyone .item-body .bp-avatar-nav ul.avatar-nav-items li.current{border:1px solid var(--global--color-primary);border-bottom:1px solid var(--global--color-background)}#buddypress.twentytwentyone .item-body #drag-drop-area{border:4px dashed var(--global--color-secondary)}#buddypress.twentytwentyone .item-body #drag-drop-area .drag-drop-info{color:var(--global--color-secondary)}#buddypress.twentytwentyone .item-body #drag-drop-area #bp-browse-button{margin:50px auto 0}#buddypress.twentytwentyone .item-body .bp-avatar-status .success,#buddypress.twentytwentyone .item-body .bp-avatar-status .warning,#buddypress.twentytwentyone .item-body .bp-cover-image-status .success,#buddypress.twentytwentyone .item-body .bp-cover-image-status .warning{background-color:var(--global--color-light-gray);border:none;border-left-width:4px;border-left-style:solid;color:var(--global--color-dark-gray)}#buddypress.twentytwentyone .item-body .bp-avatar-status .warning,#buddypress.twentytwentyone .item-body .bp-cover-image-status .warning{border-left-color:var(--global--color-orange)}#buddypress.twentytwentyone .item-body .bp-avatar-status .success,#buddypress.twentytwentyone .item-body .bp-cover-image-status .success{border-left-color:var(--global--color-green)}#buddypress.twentytwentyone .item-body .bp-avatar-status .error,#buddypress.twentytwentyone .item-body .bp-cover-image-status .error{border-left-color:var(--global--color-red)}.group-settings #buddypress.twentytwentyone .group-settings-selections{margin-bottom:1em}#buddypress.twentytwentyone #group-manage-members-ui .bp-pagination{padding:.4em 0 .4em .5em}#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form input[type=search]{font-size:16px}#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form input[type=search]:focus{outline-offset:-7px;outline:2px dotted var(--form--border-color)}#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form button[type=submit]{border-width:1px;border-style:solid;background-clip:border-box}#buddypress.twentytwentyone #group-manage-members-ui #group-members-search-form button[type=submit]:hover{border-color:var(--button--color-background)}#buddypress.twentytwentyone #group-manage-members-ui #group-members-list-table .group-member-edit label,#buddypress.twentytwentyone #group-manage-members-ui #group-roles-filter label{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}#buddypress.twentytwentyone #group-manage-members-ui #group-members-list-table .group-member-edit select,#buddypress.twentytwentyone #group-manage-members-ui #group-members-role-filter{font-size:16px;padding:6px 25px 6px 10px}#buddypress.twentytwentyone #group-manage-members-ui #group-members-list-table .group-member-edit select:focus,#buddypress.twentytwentyone #group-manage-members-ui #group-members-role-filter:focus{outline-offset:2px;outline:2px dotted var(--form--border-color)}#buddypress.twentytwentyone .bp-invites-content ul{border-top:none}#buddypress.twentytwentyone .bp-invites-content ul li{border:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone .bp-invites-content ul li.selected{box-shadow:none;border-style:solid}#buddypress.twentytwentyone .bp-invites-content ul li button.invite-button{border:none;background:0 0;top:-5px;right:0}#buddypress.twentytwentyone .bp-invites-content ul li button.invite-button .icons:before{border-radius:50%;width:32px;height:32px;color:var(--global--color-primary);background:var(--global--color-background)}#buddypress.twentytwentyone .bp-invites-content ul li button.invite-button:hover .icons:before{color:var(--global--color-background);background:var(--global--color-primary);width:32px;height:32px}#buddypress.twentytwentyone .bp-invites-content ul li ul.group-inviters li{border:none}#buddypress.twentytwentyone .profile table.bp-tables-user tr td,#buddypress.twentytwentyone .profile table.bp-tables-user tr.alt td,#buddypress.twentytwentyone .profile table.profile-fields tr td,#buddypress.twentytwentyone .profile table.profile-fields tr.alt td{background:0 0}#buddypress.twentytwentyone .profile table.bp-tables-user tr td.label,#buddypress.twentytwentyone .profile table.bp-tables-user tr.alt td.label,#buddypress.twentytwentyone .profile table.profile-fields tr td.label,#buddypress.twentytwentyone .profile table.profile-fields tr.alt td.label{border-right-color:var(--global--color-primary)}#buddypress.twentytwentyone .profile.edit .editfield{background:var(--global--color-background);border:1px solid var(--global--color-primary)}#buddypress.twentytwentyone .profile.edit .editfield p.field-visibility-settings-toggle{margin-top:1em}#buddypress.twentytwentyone .profile.edit .editfield .field-visibility-settings .radio label{margin-bottom:.5em}#buddypress.twentytwentyone .profile.edit .wp-editor-container .mce-toolbar button{color:var(--global--color-dark-gray);background:var(--global--color-white-90);border-color:var(--global--color-dark-gray)}#buddypress.twentytwentyone .profile.edit .button-tabs li{border:solid 2px var(--global--color-primary);overflow:hidden}#buddypress.twentytwentyone .profile.edit .button-tabs li a{text-decoration:none}#buddypress.twentytwentyone .profile.edit .button-tabs li.current{background-color:var(--global--color-primary);color:var(--button--color-text)}#buddypress.twentytwentyone .profile.edit .button-tabs li.current a{color:var(--button--color-text)}#buddypress.twentytwentyone .profile.edit .button-tabs li:hover{outline-offset:10px;border-style:dotted}#buddypress.twentytwentyone .profile.edit .clear-value{text-decoration:underline}#buddypress.twentytwentyone .profile.edit legend{padding:0}#buddypress.twentytwentyone .field-visibility-settings,#buddypress.twentytwentyone .field-visibility-settings-header{color:var(--global--color-secondary)}#buddypress.twentytwentyone #group-list.invites h2.list-title{float:none}#buddypress.twentytwentyone #group-list.invites .accept{margin-left:0}#buddypress.twentytwentyone #user_messages_select_all{vertical-align:-5px}#buddypress.twentytwentyone #user_messages_select_all:checked{vertical-align:-3px}#buddypress.twentytwentyone #message-threads{border-top:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone #message-threads>li{border-bottom:1px dotted var(--global--color-primary)}#buddypress.twentytwentyone #message-threads>li.selected{border:1px solid var(--global--color-primary)}#buddypress.twentytwentyone #message-threads>li.unread{border-left:8px solid var(--global--color-yellow)}#buddypress.twentytwentyone #message-threads li .thread-cb{padding-left:15px}#buddypress.twentytwentyone #message-threads li.unread .thread-cb{padding-left:7px}#buddypress.twentytwentyone #message-threads li .thread-from img.avatar,#buddypress.twentytwentyone #message-threads li .thread-to img.avatar{width:32px;height:32px}#buddypress.twentytwentyone #message-threads li .thread-from .num-recipients,#buddypress.twentytwentyone #message-threads li .thread-to .num-recipients{color:var(--global--color-primary)}#buddypress.twentytwentyone #message-threads li .thread-content .excerpt{color:var(--global--color-primary)}#buddypress.twentytwentyone #message-threads li .thread-date time{color:var(--global--color-primary)}#buddypress.twentytwentyone #message-threads li.selected{background:0 0;font-weight:bolder;color:var(--global--color-primary)}#buddypress.twentytwentyone #message-threads li.selected .thread-subject .subject{color:var(--global--color-primary)}#buddypress.twentytwentyone #message-threads li:not(.selected){color:var(--global--color-secondary)}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-header h2:first-child,#buddypress.twentytwentyone .bp-messages-content #thread-preview h2:first-child{background-color:var(--button--color-background);color:var(--button--color-text)}#buddypress.twentytwentyone .bp-messages-content #thread-preview{border-color:var(--button--color-background)}#buddypress.twentytwentyone .bp-messages-content #thread-preview .participants-list,#buddypress.twentytwentyone .bp-messages-content #thread-preview dd{padding-left:0}#buddypress.twentytwentyone .bp-messages-content #thread-preview .preview-pane-header{border-bottom-style:dotted;border-bottom-color:var(--global--color-primary)}#buddypress.twentytwentyone .bp-messages-content #thread-preview .preview-content .preview-message{background:0 0}#buddypress.twentytwentyone .bp-messages-content .single-message-thread-header .participants-list,#buddypress.twentytwentyone .bp-messages-content .single-message-thread-header dd{padding-left:0}#buddypress.twentytwentyone .bp-messages-content .actions button.bp-tooltip{border:none;background:0 0}#buddypress.twentytwentyone .bp-messages-content .actions button.bp-tooltip.message-action-delete:before{width:32px;height:32px;color:var(--global--color-primary);background:var(--global--color-background)}#buddypress.twentytwentyone .bp-messages-content .actions button.bp-tooltip.message-action-delete:hover:before{border-radius:50%;color:var(--global--color-background);background:var(--global--color-primary)}#buddypress.twentytwentyone .bp-messages-content .actions .message-action-star:before,#buddypress.twentytwentyone .bp-messages-content .actions .message-action-unstar:before{color:var(--global--color-secondary)}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata{background:0 0;border:1px solid var(--global--color-primary);box-shadow:none}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata *{line-height:1.6;vertical-align:middle}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata .user-link{margin-top:3px;margin-bottom:3px}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata .user-link strong{display:inline-block;margin-top:2px}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata .user-link:hover strong{text-decoration:underline}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-metadata time{color:var(--global--color-secondary)}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li .message-content{background:0 0;margin:0;width:100%;padding:1em}#buddypress.twentytwentyone .bp-messages-content #bp-message-thread-list li:first-child .message-content{border:1px dotted var(--global--color-primary);border-top:none}#buddypress.twentytwentyone .bp-messages-content #send-reply .avatar-box img.avatar{display:inline-block;vertical-align:-7px}#buddypress.twentytwentyone .bp-messages-content .wp-editor-container .mce-toolbar button{color:var(--global--color-dark-gray);background:var(--global--color-white-90);border-color:var(--global--color-dark-gray)}#buddypress.twentytwentyone .bp-messages-content #bp-messages-reset{border-width:0;font-size:inherit}#buddypress.twentytwentyone .bp-messages-content #send-to-input{width:100%!important}#buddypress.twentytwentyone .subnav-filters button#user_messages_search_submit{padding:3px .7em;background-color:var(--global--color-background);color:var(--button--color-text-hover);border-color:var(--global--color-background);border-left-color:var(--button--color-background)}#buddypress.twentytwentyone .subnav-filters button#user_messages_search_submit:hover{background-color:var(--button--color-background);color:var(--button--color-text);border-color:var(--button--color-background)}#buddypress.twentytwentyone .subnav-filters .user-messages-bulk-actions .bulk-apply{line-height:1.5;margin:0 0 0 10px;padding:3px 5px;background-color:var(--global--color-background);color:var(--button--color-text-hover)}#buddypress.twentytwentyone .subnav-filters .user-messages-bulk-actions .bulk-apply:hover{background-color:var(--button--color-background);color:var(--button--color-text)}#buddypress.twentytwentyone .subnav-filters .user-messages-bulk-actions .bulk-apply span{vertical-align:middle}#buddypress.twentytwentyone.buddypress-wrap .bp-tables-user tr.alt td,#buddypress.twentytwentyone.buddypress-wrap table.wp-profile-fields tr.alt td{background:0 0}#buddypress.twentytwentyone fieldset{padding-top:0;margin-top:1em}#buddypress.twentytwentyone fieldset legend{padding:0 1em;display:inline-block}#buddypress.twentytwentyone .select-wrap{border:1px solid var(--global--color-primary);background:var(--global--color-white-90)}#buddypress.twentytwentyone .select-wrap select{background:0 0;width:98%;text-indent:0}#buddypress.twentytwentyone .select-wrap span.select-arrow{background:0 0}#buddypress.twentytwentyone .select-wrap span.select-arrow:before{font-family:dashicons;content:"\f140";color:var(--global--color-black);vertical-align:-10%}#buddypress.twentytwentyone .select-wrap:focus .select-arrow:before,#buddypress.twentytwentyone .select-wrap:hover .select-arrow:before{color:var(--global--color-black)}#buddypress.twentytwentyone input[type=checkbox],#buddypress.twentytwentyone input[type=radio]{width:25px;height:25px;vertical-align:top}#buddypress.twentytwentyone .groups-members-search input[type=text],#buddypress.twentytwentyone input[type=color],#buddypress.twentytwentyone input[type=date],#buddypress.twentytwentyone input[type=datetime-local],#buddypress.twentytwentyone input[type=datetime],#buddypress.twentytwentyone input[type=email],#buddypress.twentytwentyone input[type=month],#buddypress.twentytwentyone input[type=number],#buddypress.twentytwentyone input[type=password],#buddypress.twentytwentyone input[type=range],#buddypress.twentytwentyone input[type=search],#buddypress.twentytwentyone input[type=tel],#buddypress.twentytwentyone input[type=text],#buddypress.twentytwentyone input[type=time],#buddypress.twentytwentyone input[type=url],#buddypress.twentytwentyone input[type=week],#buddypress.twentytwentyone textarea{color:var(--form--color-text);background:var(--global--color-white-90)}#buddypress.twentytwentyone .subnav-filters input[type=search]{font-size:16px;background:0 0}#buddypress.twentytwentyone .bp-dir-search-form button,#buddypress.twentytwentyone form#group-members-search button,#buddypress.twentytwentyone form#group_invites_search_form button{background-color:var(--global--color-background);color:var(--button--color-text-hover);border-color:var(--global--color-background);border-left-color:var(--button--color-background)}#buddypress.twentytwentyone .bp-dir-search-form button:hover,#buddypress.twentytwentyone form#group-members-search button:hover,#buddypress.twentytwentyone form#group_invites_search_form button:hover{background-color:var(--button--color-background);color:var(--button--color-text);border-color:var(--button--color-background)}#buddypress.twentytwentyone .standard-form p.description{color:var(--global--primary-color);background-color:var(--global--color-background)}body.bp-user.settings.general #buddypress.twentytwentyone .wp-pwd:not(.is-open){display:none}.bp-user #buddypress.twentytwentyone [data-bp-search] form #user_messages_search{padding:3px 10px}#buddypress.twentytwentyone form#group-members-search,#buddypress.twentytwentyone form.bp-dir-search-form,#buddypress.twentytwentyone form.bp-messages-search-form,#buddypress.twentytwentyone form[data-bp-search].bp-invites-search-form{border:1px solid var(--global--color-primary);background-color:var(--global--color-white-90)}#buddypress.twentytwentyone .bp-tables-user tbody tr,#buddypress.twentytwentyone .bp-tables-user tbody tr.alt,#buddypress.twentytwentyone table.forum tbody tr,#buddypress.twentytwentyone table.forum tbody tr.alt,#buddypress.twentytwentyone table.wp-profile-fields tbody tr,#buddypress.twentytwentyone table.wp-profile-fields tbody tr.alt{background:0 0}#buddypress.twentytwentyone .activity-read-more a,#buddypress.twentytwentyone .comment-reply-link,#buddypress.twentytwentyone .generic-button a,#buddypress.twentytwentyone a.bp-title-button,#buddypress.twentytwentyone a.button,#buddypress.twentytwentyone button,#buddypress.twentytwentyone input[type=button],#buddypress.twentytwentyone input[type=submit],#buddypress.twentytwentyone ul.button-nav:not(.button-tabs) li a{background:var(--button--color-background);border:1px solid var(--button--color-background);border-radius:0;color:var(--button--color-text)}#buddypress.twentytwentyone #bp-messages-reset,#buddypress.twentytwentyone .activity-read-more a:focus,#buddypress.twentytwentyone .activity-read-more a:hover,#buddypress.twentytwentyone .button-nav li a:focus,#buddypress.twentytwentyone .button-nav li a:hover,#buddypress.twentytwentyone .button-nav li.current a,#buddypress.twentytwentyone .comment-reply-link:focus,#buddypress.twentytwentyone .comment-reply-link:hover,#buddypress.twentytwentyone .generic-button a:focus,#buddypress.twentytwentyone .generic-button a:hover,#buddypress.twentytwentyone a.button:focus,#buddypress.twentytwentyone a.button:hover,#buddypress.twentytwentyone button:focus,#buddypress.twentytwentyone button:hover,#buddypress.twentytwentyone input[type=button]:focus,#buddypress.twentytwentyone input[type=button]:hover,#buddypress.twentytwentyone input[type=reset],#buddypress.twentytwentyone input[type=submit]:focus,#buddypress.twentytwentyone input[type=submit]:hover{background:0 0;border-color:var(--button--color-background);color:var(--button--color-text-hover);outline:0;text-decoration:none}#buddypress.twentytwentyone #bp-messages-reset:focus,#buddypress.twentytwentyone #bp-messages-reset:hover,#buddypress.twentytwentyone input[type=reset]:focus,#buddypress.twentytwentyone input[type=reset]:hover{outline-offset:-1px;outline:2px dotted currentColor}#buddypress.twentytwentyone a.disabled,#buddypress.twentytwentyone a.disabled:hover button.pending,#buddypress.twentytwentyone button.disabled,#buddypress.twentytwentyone button.disabled:hover,#buddypress.twentytwentyone button.pending:hover,#buddypress.twentytwentyone div.pending a,#buddypress.twentytwentyone div.pending a:hover,#buddypress.twentytwentyone input[type=button].disabled,#buddypress.twentytwentyone input[type=button].pending,#buddypress.twentytwentyone input[type=button]:hover.disabled,#buddypress.twentytwentyone input[type=button]:hover.pending,#buddypress.twentytwentyone input[type=reset].disabled,#buddypress.twentytwentyone input[type=reset].pending,#buddypress.twentytwentyone input[type=reset]:hover.disabled,#buddypress.twentytwentyone input[type=reset]:hover.pending,#buddypress.twentytwentyone input[type=submit].pending,#buddypress.twentytwentyone input[type=submit]:disabled,#buddypress.twentytwentyone input[type=submit]:hover.disabled,#buddypress.twentytwentyone input[type=submit]:hover.pending,#buddypress.twentytwentyone input[type=submit][disabled=disabled]{opacity:.6;cursor:not-allowed}#buddypress.twentytwentyone .blog-button:after,#buddypress.twentytwentyone .blog-button:before{display:none}#buddypress.twentytwentyone .create-button a:focus,#buddypress.twentytwentyone .create-button a:hover{text-decoration:none}#buddypress.twentytwentyone.bp-dir-vert-nav .create-button a{box-shadow:none;color:var(--button--color-text);background-color:var(--button--color-background);border-radius:var(--button--border-radius);border:var(--button--border-width) solid var(--button--color-background);background-clip:border-box}#buddypress.twentytwentyone .warn{color:var(--global--color-primary);font-weight:600}#buddypress.twentytwentyone .bp-feedback{color:var(--global--color-primary);background:var(--global--color-background);box-shadow:none}#buddypress.twentytwentyone .bp-feedback:not(.custom-homepage-info){margin-top:1.5em;margin-bottom:1.5em;border:solid 1px var(--global--color-primary)}#buddypress.twentytwentyone .bp-feedback .bp-icon{background-color:var(--global--color-primary);color:var(--button--color-text)}#buddypress.twentytwentyone .bp-feedback a{border-bottom:solid 1px var(--global--color-primary)}#buddypress.twentytwentyone .bp-feedback button.bp-tooltip{border:none;background:0 0;top:-5px;right:0}#buddypress.twentytwentyone .bp-feedback button.bp-tooltip .dashicons-dismiss{border-radius:50%;width:32px;height:32px;color:var(--global--color-primary);background:var(--global--color-background)}#buddypress.twentytwentyone .bp-feedback button.bp-tooltip:hover .dashicons-dismiss{color:var(--global--color-background);background:var(--global--color-primary)}#buddypress.twentytwentyone .bp-feedback.bp-sitewide-notice button.bp-tooltip{top:0;right:15px}#buddypress.twentytwentyone .bp-feedback.bp-sitewide-notice .bp-icon:before{content:"\f16d"}#buddypress.twentytwentyone #group-create-body .bp-cover-image-status p.warning{background-color:var(--global--color-light-gray);border:none;border-left-width:4px;border-left-style:solid;border-left-color:var(--global--color-orange);color:var(--global--color-dark-gray);box-shadow:none}body.buddypress .site #buddypress.twentytwentyone .button.bp-tooltip:after{content:attr(data-bp-tooltip);word-wrap:break-word;height:auto;width:auto}#buddypress.twentytwentyone.bp-single-vert-nav .bp-navs.vertical li span{background-color:var(--button--color-background);border-radius:10%;display:inline-block;margin:3px 0}#buddypress.twentytwentyone.bp-single-vert-nav .bp-navs.vertical li.current span,#buddypress.twentytwentyone.bp-single-vert-nav .bp-navs.vertical li.selected span{background-color:var(--global--color-background)}#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body){background:var(--global--color-background);border-left:1px solid var(--global--color-primary)}#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links){background:0 0;border-bottom:1px solid var(--global--color-primary)}#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li a{border:none;text-decoration:none}#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.current,#buddypress.twentytwentyone.bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.selected{background-color:var(--global--color-primary);margin:0;padding:10px 0;border-radius:0}#buddypress.twentytwentyone .grid.bp-list{border-top:none}#buddypress.twentytwentyone .grid>li{border:none}#buddypress.twentytwentyone .grid>li .list-wrap{border:1px solid var(--global--color-primary);background:0 0}#buddypress.twentytwentyone .grid>li .item-avatar,#buddypress.twentytwentyone .grid>li:not(.mini) .item-avatar{margin-right:auto} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/functions.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/functions.php index 68103e68193196ed777b5a774c9dfd457e214c84..f8ac08c9178ac25becf0cef257ed714e737a0d38 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/functions.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/functions.php @@ -3,7 +3,7 @@ * Activity functions * * @since 3.0.0 - * @version 5.0.0 + * @version 7.0.0 */ // Exit if accessed directly. @@ -538,3 +538,20 @@ function bp_nouveau_activity_customizer_controls( $controls = array() ) { ), ) ); } + +/** + * Remove brackets around the "Read more" text. + * + * @since 7.0.0 + * + * @param string $read_more The read more text. + * @return string The read more text without brackets. + */ +function bp_nouveau_activity_excerpt_append_text( $read_more = '' ) { + /** + * As this was added during a string freeze period, we + * are using the `str_replace()` function. + */ + return str_replace( array( '[', ']' ), '', $read_more ); +} +add_filter( 'bp_activity_excerpt_append_text', 'bp_nouveau_activity_excerpt_append_text', 10, 1 ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/loader.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/loader.php index ed626af1f8bad55a18ef4b59cce528930ac364b8..7baa058df803fdb3f6f26bdb0461447400312c9e 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/loader.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/loader.php @@ -3,6 +3,7 @@ * BP Nouveau Blogs * * @since 3.0.0 + * @version 6.1.0 */ // Exit if accessed directly. @@ -88,6 +89,9 @@ class BP_Nouveau_Blogs { // Add controls into the Blogs sections of the customizer. add_filter( 'bp_nouveau_customizer_controls', 'bp_nouveau_blogs_customizer_controls', 11, 1 ); + + // The number formatting is done into the `bp_nouveau_nav_count()` template tag. + remove_filter( 'bp_get_total_blog_count_for_user', 'bp_core_number_format' ); } } } diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/friends/loader.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/friends/loader.php index d09eab0509f097cb150060d58680eb664f94d805..ad4a4f07fce9df2a2459228470687d0b678bb732 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/friends/loader.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/friends/loader.php @@ -3,7 +3,7 @@ * BP Nouveau Friends * * @since 3.0.0 - * @version 3.0.0 + * @version 6.1.0 */ // Exit if accessed directly. @@ -87,6 +87,10 @@ class BP_Nouveau_Friends { foreach ( $buttons as $button ) { add_filter( 'bp_button_' . $button, 'bp_nouveau_ajax_button', 10, 5 ); } + + // The number formatting is done into the `bp_nouveau_nav_count()` template tag. + remove_filter( 'friends_get_total_friend_count', 'bp_core_number_format' ); + remove_filter( 'bp_get_total_friend_count', 'bp_core_number_format' ); } /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/ajax.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/ajax.php index 4d4ba9451560f8440a892d7235f5322545cbbee2..2e05d6472829c2250da71321f4f049ca10a24867 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/ajax.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/ajax.php @@ -3,7 +3,7 @@ * Groups Ajax functions * * @since 3.0.0 - * @version 4.4.0 + * @version 6.3.0 */ // Exit if accessed directly. @@ -189,7 +189,7 @@ function bp_nouveau_ajax_joinleave_group() { break; case 'groups_request_membership' : - if ( ! groups_send_membership_request( bp_loggedin_user_id(), $group->id ) ) { + if ( ! groups_send_membership_request( [ 'user_id' => bp_loggedin_user_id(), 'group_id' => $group->id ] ) ) { $response = array( 'feedback' => sprintf( '<div class="bp-feedback error"><span class="bp-icon" aria-hidden="true"></span><p>%s</p></div>', @@ -407,21 +407,9 @@ function bp_nouveau_ajax_send_group_invites() { wp_send_json_error( $response ); } - if ( ! empty( $_POST['message'] ) ) { - $bp->groups->invites_message = wp_kses( wp_unslash( $_POST['message'] ), array() ); - - add_filter( 'groups_notification_group_invites_message', 'bp_nouveau_groups_invites_custom_message', 10, 1 ); - } - // Send the invites. groups_send_invites( array( 'group_id' => $group_id ) ); - if ( ! empty( $_POST['message'] ) ) { - unset( $bp->groups->invites_message ); - - remove_filter( 'groups_notification_group_invites_message', 'bp_nouveau_groups_invites_custom_message', 10, 1 ); - } - if ( array_search( false, $invited ) ) { $errors = array_keys( $invited, false ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/classes.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/classes.php index 3b68f8003c404f28445d1ab103f8fd36aeeee509..f57e81f8786ad01064b952906cf1d0c97cf5df8f 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/classes.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/classes.php @@ -3,7 +3,7 @@ * Groups classes * * @since 3.0.0 - * @version 3.0.0 + * @version 7.0.0 */ // Exit if accessed directly. @@ -376,3 +376,46 @@ class BP_Nouveau_Customizer_Group_Nav extends BP_Core_Nav { return $this->get_secondary( array( 'parent_slug' => $this->group->slug ) ); } } + +/** + * Group template meta backwards compatibility class. + * + * @since 7.0.0 + */ +class BP_Nouveau_Group_Meta { + /** + * Used to get the template meta used in Groups loop. + * + * @since 7.0.0 + * @var string $meta The template meta used in Groups loop. + */ + public $meta = ''; + + /** + * Magic getter. + * + * This exists specifically for supporting deprecated object vars. + * + * @since 7.0.0 + * + * @param string $key + * @return string + */ + public function __get( $key = '' ) { + /* translators: %s is the name of the function to use instead of the deprecated one */ + _doing_it_wrong( 'bp_nouveau_group_meta', sprintf( __( 'Please use %s instead', 'buddypress' ), 'bp_nouveau_the_group_meta( array( \'keys\' => \'' . $key . '\' ) )' ) , '7.0.0' ); + + // Backwards compatibility. + return bp_nouveau_the_group_meta( array( 'keys' => $key, 'echo' => false ) ); + } + + /** + * Constructor + * + * @since 7.0.0 + */ + public function __construct() { + // Backwards compatibility. + $this->meta = bp_nouveau_the_group_meta( array( 'echo' => false ) ); + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/functions.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/functions.php index 3b3dbb324a9362b9d9ccaa793c868a3702d1f848..06be6985b497dd5f86ac97859f4ef4bd02159a6c 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/functions.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/functions.php @@ -3,7 +3,7 @@ * Groups functions * * @since 3.0.0 - * @version 5.0.0 + * @version 7.2.1 */ // Exit if accessed directly. @@ -363,9 +363,16 @@ function bp_nouveau_group_setup_nav() { } /** + * Includes a message into the sent invitation email. + * * @since 3.0.0 + * @deprecated 6.3.0 + * + * @param string $message The message to send with the invite */ function bp_nouveau_groups_invites_custom_message( $message = '' ) { + _deprecated_function( __FUNCTION__, '6.3.0' ); + if ( empty( $message ) ) { return $message; } @@ -501,6 +508,40 @@ function bp_nouveau_groups_screen_invites_restriction() { bp_core_load_template( apply_filters( 'bp_nouveau_groups_screen_invites_restriction', 'members/single/settings/group-invites' ) ); } +/** + * Makes sure the BP REST API groups/invites endpoint respects invite restrictions. + * + * @since 7.2.1 + * + * @param bool|WP_Error $retval Whether the request can continue. + * @param WP_REST_Request $request The request sent to the API. + * @return bool|WP_Error + */ +function bp_nouveau_restrict_rest_group_invite_to_friends( $retval, $request ) { + if ( true === $retval && bp_is_active( 'friends' ) ) { + $group_id = $request->get_param( 'group_id' ); + $user_id = $request->get_param( 'user_id' ); + $inviter_id = $request->get_param( 'inviter_id' ); + + if ( ! $inviter_id ) { + $inviter_id = bp_loggedin_user_id(); + } + + if ( bp_nouveau_groups_get_group_invites_setting( $user_id ) && 'is_friend' !== BP_Friends_Friendship::check_is_friend( $inviter_id, $user_id ) ) { + $retval = new WP_Error( + 'bp_rest_group_invite_cannot_create_item', + __( 'Sorry, you are not allowed to create the invitation as requested.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } + } + + return $retval; +} +add_filter( 'bp_rest_group_invites_create_item_permissions_check', 'bp_nouveau_restrict_rest_group_invite_to_friends', 10, 2 ); + /** * @since 3.0.0 */ @@ -1229,3 +1270,25 @@ function bp_nouveau_groups_notification_filters() { bp_nouveau_notifications_register_filter( $notification ); } } + +/** + * Makes sure the Nouveau specific behavior about Group invites visibility is applied to the REST API. + * + * @since 7.2.1 + * + * @param true|WP_Error $retval Whether the current user can list invites. + * @param WP_REST_Request $request The request sent to the API. + * @return true|WP_Error Whether the current user can list invites. + */ +function bp_nouveau_rest_group_invites_get_items_permissions_check( $retval, $request ) { + if ( is_wp_error( $retval ) ) { + $group_id = (int) $request['group_id']; + + if ( groups_is_user_member( bp_loggedin_user_id(), $group_id ) ) { + $retval = true; + } + } + + return $retval; +} +add_filter( 'bp_rest_group_invites_get_items_permissions_check', 'bp_nouveau_rest_group_invites_get_items_permissions_check', 10, 2 ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/loader.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/loader.php index e76db63f0c0c7285e443cb05f912a650520101b8..5623fd5558caa8f19104c4e51c0bfd2b6952c136 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/loader.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/loader.php @@ -3,7 +3,7 @@ * BP Nouveau Groups * * @since 3.0.0 - * @version 6.0.0 + * @version 6.1.0 */ // Exit if accessed directly. @@ -133,6 +133,7 @@ class BP_Nouveau_Groups { // The number formatting is done into the `bp_nouveau_nav_count()` template tag. remove_filter( 'bp_get_total_group_count', 'bp_core_number_format' ); + remove_filter( 'bp_get_total_group_count_for_user', 'bp_core_number_format' ); } /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/template-tags.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/template-tags.php index 03a9f42553c50eea2577075b5ee774621ca120e0..4e2028956e56de8daf2dad1d31cb97d984432e0d 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/template-tags.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/template-tags.php @@ -1067,13 +1067,16 @@ function bp_nouveau_groups_manage_members_buttons( $args = array() ) { * @return bool True if the group has meta. False otherwise. */ function bp_nouveau_group_has_meta( $meta_key = '' ) { - $group_meta = bp_nouveau_get_group_meta(); - if ( ! $meta_key ) { - return (bool) $group_meta; + $meta_keys = array( 'status', 'count' ); + } else { + $meta_keys = array( $meta_key ); } - return ! empty( $group_meta[ $meta_key ] ); + $group_meta = bp_nouveau_get_group_meta( $meta_keys ); + $group_meta = array_filter( $group_meta ); + + return ! empty( $group_meta ); } /** @@ -1084,95 +1087,140 @@ function bp_nouveau_group_has_meta( $meta_key = '' ) { * @return bool True if the group has meta. False otherwise. */ function bp_nouveau_group_has_meta_extra() { - return (bool) bp_nouveau_get_hooked_group_meta(); + return false !== bp_nouveau_get_hooked_group_meta(); } /** * Display the group meta. * * @since 3.0.0 + * @deprecated 7.0.0 Use bp_nouveau_the_group_meta() + * @see bp_nouveau_the_group_meta() * * @return string HTML Output. */ function bp_nouveau_group_meta() { - $meta = bp_nouveau_get_group_meta(); + _deprecated_function( __FUNCTION__, '7.0.0', 'bp_nouveau_the_group_meta()' ); + $group_meta = new BP_Nouveau_Group_Meta(); if ( ! bp_is_group() ) { - echo join( ' / ', array_map( 'esc_html', (array) $meta ) ); + echo $group_meta->meta; } else { + return $group_meta; + } +} - /* - * Lets return an object not echo an array here for the single groups, - * more flexible for the template!!?? ~hnla - * - * @todo Paul says that a function that prints and/or returns a value, - * depending on global state, is madness. This needs changing. - */ - return (object) bp_nouveau_get_group_meta(); +/** + * Outputs or returns the group meta(s). + * + * @since 7.0.0 + * + * @param array $args { + * Optional. An array of arguments. + * + * @type array $keys The list of template meta keys. + * @type string $delimeter The delimeter to use in case there is more than + * one key to output. + * @type boolean $echo True to output the template meta value. False otherwise. + * } + * @return string HTML Output. + */ +function bp_nouveau_the_group_meta( $args = array() ) { + $r = bp_parse_args( $args, array( + 'keys' => array(), + 'delimeter' => '/', + 'echo' => true, + ), 'nouveau_the_group_meta' ); + + $group_meta = (array) bp_nouveau_get_group_meta( $r['keys'] ); + + if ( ! $group_meta ) { + return; } + + $meta = ''; + if ( 1 < count( $group_meta ) ) { + $group_meta = array_filter( $group_meta ); + $meta = join( ' ' . $r['delimeter'] . ' ', array_map( 'esc_html', $group_meta ) ); + } else { + $meta = reset( $group_meta ); + } + + if ( ! $r['echo'] ) { + return $meta; + } + + echo $meta; } /** - * Get the group meta. + * Get the group template meta. * * @since 3.0.0 + * @since 7.0.0 Adds the `$keys` parameter. * - * @return array The group meta. + * @param array $keys One or more template meta keys to populate with their values. + * Possible keys are `status`, `count`, `group_type_list`, `description`, `extra`. + * @return array The corresponding group template meta values. */ - function bp_nouveau_get_group_meta() { - /* - * @todo For brevity required approapriate markup is added here as strings - * this needs to be either filterable or the function needs to be able to accept - * & parse args! - */ - $meta = array(); - $is_group = bp_is_group(); + function bp_nouveau_get_group_meta( $keys = array() ) { + $keys = (array) $keys; + $group = false; + $group_meta = array(); + $is_group = bp_is_group(); - if ( ! empty( $GLOBALS['groups_template']->group ) ) { + if ( isset( $GLOBALS['groups_template']->group ) ) { $group = $GLOBALS['groups_template']->group; + } else { + $group = groups_get_current_group(); } - if ( empty( $group->id ) ) { - return $meta; + if ( ! $group ) { + return ''; } - if ( empty( $group->template_meta ) ) { - // It's a single group - if ( $is_group ) { - $meta = array( - 'status' => bp_get_group_type(), - 'group_type_list' => bp_get_group_type_list(), - 'description' => bp_get_group_description(), - ); + if ( ! $keys && ! $is_group ) { + $keys = array( 'status', 'count' ); + } - // Make sure to include hooked meta. - $extra_meta = bp_nouveau_get_hooked_group_meta(); + foreach ( $keys as $key ) { + switch ( $key ) { + case 'status' : + $group_meta['status'] = bp_get_group_type( $group ); + break; - if ( $extra_meta ) { - $meta['extra'] = $extra_meta; - } + case 'count' : + $group_meta['count'] = bp_get_group_member_count( $group ); + break; - // We're in the groups loop - } else { - $meta = array( - 'status' => bp_get_group_type(), - 'count' => bp_get_group_member_count(), - ); - } + case 'group_type_list' : + $group_meta['group_type_list'] = bp_get_group_type_list( $group->id ); + break; - /** - * Filter to add/remove Group meta. - * - * @since 3.0.0 - * - * @param array $meta The list of meta to output. - * @param object $group The current Group of the loop object. - * @param bool $is_group True if a single group is displayed. False otherwise. - */ - $group->template_meta = apply_filters( 'bp_nouveau_get_group_meta', $meta, $group, $is_group ); + case 'description' : + $group_meta['description'] = bp_get_group_description( $group ); + break; + + case 'extra' : + $group_meta['extra'] = ''; + + if ( $is_group ) { + $group_meta['extra'] = bp_nouveau_get_hooked_group_meta(); + } + break; + } } - return $group->template_meta; + /** + * Filter to add/remove Group template meta. + * + * @since 3.0.0 + * + * @param array $group_meta The list of meta to output. + * @param object $group The current Group of the loop object. + * @param bool $is_group True if a single group is displayed. False otherwise. + */ + return apply_filters( 'bp_nouveau_get_group_meta', $group_meta, $group, $is_group ); } /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/notifications/loader.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/notifications/loader.php index 90e8215c77470695bef393f2b7eca9c39d9f2b69..c8cd319d0d0253314331ef0e34e5e96e769b0057 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/notifications/loader.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/notifications/loader.php @@ -3,7 +3,7 @@ * BP Nouveau Notifications * * @since 3.0.0 - * @version 3.0.0 + * @version 6.1.0 */ // Exit if accessed directly. @@ -87,6 +87,9 @@ class BP_Nouveau_Notifications { add_filter( 'bp_get_the_notification_mark_unread_link', 'bp_nouveau_notifications_mark_unread_link', 10, 1 ); add_filter( 'bp_get_the_notification_mark_read_link', 'bp_nouveau_notifications_mark_read_link', 10, 1 ); add_filter( 'bp_get_the_notification_delete_link', 'bp_nouveau_notifications_delete_link', 10, 1 ); + + // The number formatting is done into the `bp_nouveau_nav_count()` template tag. + remove_filter( 'bp_notifications_get_total_notification_count', 'bp_core_number_format' ); } } diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/template-tags.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/template-tags.php index fdd1f7f8fd2eb8077bfe524e61f83662d14896ef..3439280fb5d2646f006f1b670be6739e52839a9d 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/template-tags.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/template-tags.php @@ -3,7 +3,7 @@ * Common template tags * * @since 3.0.0 - * @version 6.0.0 + * @version 7.0.0 */ // Exit if accessed directly. @@ -547,16 +547,25 @@ function bp_nouveau_loop_classes() { $bp_nouveau = bp_nouveau(); // @todo: this function could do with passing args so we can pass simple strings in or array of strings + $is_directory = bp_is_directory(); // The $component is faked if it's the single group member loop - if ( ! bp_is_directory() && ( bp_is_group() && 'members' === bp_current_action() ) ) { + if ( ! $is_directory && ( bp_is_group() && 'members' === bp_current_action() ) ) { $component = 'members_group'; - } elseif ( ! bp_is_directory() && ( bp_is_user() && 'my-friends' === bp_current_action() ) ) { + } elseif ( ! $is_directory && ( bp_is_user() && 'my-friends' === bp_current_action() ) ) { $component = 'members_friends'; } else { $component = sanitize_key( bp_current_component() ); } + /* + * For the groups component, we need to take in account the + * Groups directory can list Groups according to a Group Type. + */ + if ( 'groups' === $component ) { + $is_directory = bp_is_groups_directory(); + } + $classes = array( 'item-list', sprintf( '%s-list', str_replace( '_', '-', $component ) ), @@ -584,7 +593,7 @@ function bp_nouveau_loop_classes() { ); // Only the available components supports custom layouts. - if ( ! empty( $available_components[ $component ] ) && ( bp_is_directory() || bp_is_group() || bp_is_user() ) ) { + if ( ! empty( $available_components[ $component ] ) && ( $is_directory || bp_is_group() || bp_is_user() ) ) { $customizer_option = sprintf( '%s_layout', $component ); $layout_prefs = bp_nouveau_get_temporary_setting( $customizer_option, @@ -1448,11 +1457,12 @@ function bp_nouveau_container_classes() { * Returns the main BuddyPress container classes. * * @since 3.0.0 + * @since 7.0.0 Add a class to inform about the active Theme. * * @return string CSS classes */ function bp_nouveau_get_container_classes() { - $classes = array( 'buddypress-wrap' ); + $classes = array( 'buddypress-wrap', get_template() ); $component = bp_current_component(); $bp_nouveau = bp_nouveau(); $member_type_class = ''; @@ -1790,6 +1800,14 @@ function bp_nouveau_get_search_objects( $objects = array() ) { $objects['secondary'] = bp_current_component(); } elseif ( 'group' === $primary ) { $objects['secondary'] = bp_current_action(); + + if ( bp_is_group_home() && ! bp_is_group_custom_front() ) { + $objects['secondary'] = 'members'; + + if ( bp_is_active( 'activity' ) ) { + $objects['secondary'] = 'activity'; + } + } } else { /** @@ -2035,7 +2053,18 @@ function bp_nouveau_current_object() { $component['data_filter'] = bp_current_action(); if ( 'activity' !== bp_current_action() ) { - $component['data_filter'] = 'group_' . bp_current_action(); + /** + * If the Group's front page is not used, Activities are displayed on Group's home page. + * To make sure filters are behaving the right way, we need to override the component object + * and data filter to `activity`. + */ + if ( bp_is_group_activity() ) { + $activity_id = buddypress()->activity->id; + $component['object'] = $activity_id; + $component['data_filter'] = $activity_id; + } else { + $component['data_filter'] = 'group_' . bp_current_action(); + } } } else { @@ -2574,7 +2603,7 @@ function bp_nouveau_signup_privacy_policy_acceptance_section() { * * @param string $action The action to get the submit button for. Required. */ -function bp_nouveau_submit_button( $action ) { +function bp_nouveau_submit_button( $action, $object_id = 0 ) { $submit_data = bp_nouveau_get_submit_button( $action ); if ( empty( $submit_data['attributes'] ) || empty( $submit_data['nonce'] ) ) { return; @@ -2608,6 +2637,10 @@ function bp_nouveau_submit_button( $action ) { if ( empty( $submit_data['nonce_key'] ) ) { wp_nonce_field( $submit_data['nonce'] ); } else { + if ( $object_id ) { + $submit_data['nonce_key'] .= '_' . (int) $object_id; + } + wp_nonce_field( $submit_data['nonce'], $submit_data['nonce_key'] ); } diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity.js index 50ea597d3bcd727fa2a59f41225535b589a93e34..1e6ded9cc80157d980feefafc6b55d260ffb6be5 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity.js +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity.js @@ -1,6 +1,7 @@ /* jshint browser: true */ /* global bp, BP_Nouveau */ -/* @version 3.1.0 */ +/* @since 3.0.0 */ +/* @version 7.0.0 */ window.bp = window.bp || {}; ( function( exports, $ ) { @@ -735,7 +736,7 @@ window.bp = window.bp || {}; comment_data = { action : 'new_activity_comment', - _wpnonce_new_activity_comment : $( '#_wpnonce_new_activity_comment' ).val(), + _wpnonce_new_activity_comment : $( '#_wpnonce_new_activity_comment' + '_' + activity_id ).val(), comment_id : item_id, form_id : activity_id, content : comment_content.val() diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity.min.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity.min.js index 9912d1bd901e92415a02cd43875c3e4874d08988..898bfd8a906dc8ecbb5df6e708ca31c40cd237cb 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity.min.js +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity.min.js @@ -1 +1 @@ -window.bp=window.bp||{},function(t,a){"undefined"!=typeof BP_Nouveau&&(bp.Nouveau=bp.Nouveau||{},bp.Nouveau.Activity={start:function(){this.setupGlobals(),this.addListeners()},setupGlobals:function(){this.just_posted=[],this.current_page=1,this.mentions_count=Number(a(bp.Nouveau.objectNavParent+' [data-bp-scope="mentions"]').find("a span").html())||0,this.heartbeat_data={newest:"",highlights:{},last_recorded:0,first_recorded:0,document_title:a(document).prop("title")}},addListeners:function(){a("#buddypress").on("bp_heartbeat_send",this.heartbeatSend.bind(this)),a("#buddypress").on("bp_heartbeat_tick",this.heartbeatTick.bind(this)),a('#buddypress [data-bp-list="activity"]').on("click","li.load-newest, li.load-more",this.injectActivities.bind(this)),a("#buddypress").on("bp_ajax_request",'[data-bp-list="activity"]',this.scopeLoaded.bind(this)),a('#buddypress [data-bp-list="activity"]').on("bp_ajax_append",this.hideComments),a('#buddypress [data-bp-list="activity"]').on("click",".show-all",this.showComments),a('#buddypress [data-bp-list="activity"]').on("click",".activity-item",bp.Nouveau,this.activityActions),a(document).keydown(this.commentFormAction)},heartbeatSend:function(t,e){this.heartbeat_data.first_recorded=a("#buddypress [data-bp-list] [data-bp-activity-id]").first().data("bp-timestamp")||0,(0===this.heartbeat_data.last_recorded||this.heartbeat_data.first_recorded>this.heartbeat_data.last_recorded)&&(this.heartbeat_data.last_recorded=this.heartbeat_data.first_recorded),e.bp_activity_last_recorded=this.heartbeat_data.last_recorded,a("#buddypress .dir-search input[type=search]").length&&(e.bp_activity_last_recorded_search_terms=a("#buddypress .dir-search input[type=search]").val()),a.extend(e,{bp_heartbeat:bp.Nouveau.getStorage("bp-activity")})},heartbeatTick:function(t,e){var i,s,n=bp.Nouveau.objects,d=bp.Nouveau.getStorage("bp-activity","scope"),o=this;if(void 0!==e&&e.bp_activity_newest_activities){if(this.heartbeat_data.newest=a.trim(e.bp_activity_newest_activities.activities)+this.heartbeat_data.newest,this.heartbeat_data.last_recorded=Number(e.bp_activity_newest_activities.last_recorded),s=a(this.heartbeat_data.newest).filter(".activity-item"),i=Number(s.length),n.push("mentions"),"all"===d){a.each(s,function(t,e){e=a(e),a.each(n,function(t,i){-1!==a.inArray("bp-my-"+i,e.get(0).classList)&&(void 0===o.heartbeat_data.highlights[i]?o.heartbeat_data.highlights[i]=[e.data("bp-activity-id")]:-1===a.inArray(e.data("bp-activity-id"),o.heartbeat_data.highlights[i])&&o.heartbeat_data.highlights[i].push(e.data("bp-activity-id")))})});var r=new RegExp("bp-my-("+n.join("|")+")","g");this.heartbeat_data.newest=this.heartbeat_data.newest.replace(r,""),a(bp.Nouveau.objectNavParent+' [data-bp-scope="all"]').find("a span").html(i)}else this.heartbeat_data.highlights[d]=[],a.each(s,function(t,e){o.heartbeat_data.highlights[d].push(a(e).data("bp-activity-id"))});if(a.each(n,function(t,e){if(void 0!==o.heartbeat_data.highlights[e]&&o.heartbeat_data.highlights[e].length){var i=0;"mentions"===e&&(i=o.mentions_count),a(bp.Nouveau.objectNavParent+' [data-bp-scope="'+e+'"]').find("a span").html(Number(o.heartbeat_data.highlights[e].length)+i)}}),n.pop(),a(document).prop("title","("+i+") "+this.heartbeat_data.document_title),a('#buddypress [data-bp-list="activity"] li').first().hasClass("load-newest")){var c=a('#buddypress [data-bp-list="activity"] .load-newest a').html();a('#buddypress [data-bp-list="activity"] .load-newest a').html(c.replace(/([0-9]+)/,i))}else a('#buddypress [data-bp-list="activity"] ul.activity-list').prepend('<li class="load-newest"><a href="#newest">'+BP_Nouveau.newest+" ("+i+")</a></li>");a('#buddypress [data-bp-list="activity"]').trigger("bp_heartbeat_pending",this.heartbeat_data)}},injectActivities:function(t){var e=bp.Nouveau.getStorage("bp-activity"),i=e.scope||null,s=e.filter||null;if(a(t.currentTarget).hasClass("load-newest")){t.preventDefault(),a(t.currentTarget).remove();var n=a.parseHTML(this.heartbeat_data.newest);a.each(n,function(t,e){"LI"===e.nodeName&&a(e).hasClass("just-posted")&&a("#"+a(e).prop("id")).length&&a("#"+a(e).prop("id")).remove()}),a(t.delegateTarget).find(".activity-list").prepend(this.heartbeat_data.newest).trigger("bp_heartbeat_prepend",this.heartbeat_data),this.heartbeat_data.newest="","all"===i&&a(bp.Nouveau.objectNavParent+' [data-bp-scope="all"]').find("a span").html(""),"mentions"===i&&(bp.Nouveau.ajax({action:"activity_clear_new_mentions"},"activity"),this.mentions_count=0),a(bp.Nouveau.objectNavParent+' [data-bp-scope="'+i+'"]').find("a span").html(""),void 0!==this.heartbeat_data.highlights[i]&&(this.heartbeat_data.highlights[i]=[]),setTimeout(function(){a(t.delegateTarget).find("[data-bp-activity-id]").removeClass("newest_"+i+"_activity")},3e3),a(document).prop("title",this.heartbeat_data.document_title)}else if(a(t.currentTarget).hasClass("load-more")){var d=1*Number(this.current_page)+1,o=this,r="";t.preventDefault(),a(t.currentTarget).find("a").first().addClass("loading"),this.just_posted=[],a(t.delegateTarget).children(".just-posted").each(function(){o.just_posted.push(a(this).data("bp-activity-id"))}),a("#buddypress .dir-search input[type=search]").length&&(r=a("#buddypress .dir-search input[type=search]").val()),bp.Nouveau.objectRequest({object:"activity",scope:i,filter:s,search_terms:r,page:d,method:"append",exclude_just_posted:this.just_posted.join(","),target:"#buddypress [data-bp-list] ul.bp-list"}).done(function(e){!0===e.success&&(a(t.currentTarget).remove(),o.current_page=d)})}},hideComments:function(t){var e,i,s,n,d=a(t.target).find(".activity-comments");d.length&&d.each(function(t,d){n=a(d).children("ul"),(i=a(n).find("li")).length&&(e=a(d).closest(".activity-item"),s=a("#acomment-comment-"+e.data("bp-activity-id")+" span.comment-count").html()||" ",i.each(function(t,n){if(t<i.length-5&&(a(n).addClass("bp-hidden").hide(),!t)){var d=e.data("bpActivityId");void 0!==d&&(d=parseInt(d,10),a(n).before('<li class="show-all"><button class="text-button" type="button" data-bp-show-comments-id="#activity-'+d+'/show-all/"><span class="icon dashicons dashicons-visibility" aria-hidden="true"></span> '+BP_Nouveau.show_x_comments.replace("%d",s)+"</button></li>"))}}),a(n).children(".bp-hidden").length===a(n).children("li").length-1&&a(n).find("li.show-all").length&&a(n).children("li").removeClass("bp-hidden").toggle())})},showComments:function(t){t.preventDefault(),a(t.target).addClass("loading"),setTimeout(function(){a(t.target).closest("ul").find("li").removeClass("bp-hidden").fadeIn(300,function(){a(t.target).parent("li").remove()})},600)},scopeLoaded:function(t,e){this.hideComments(t),this.current_page=1,"mentions"===e.scope&&void 0!==e.response.new_mentions?(a.each(e.response.new_mentions,function(t,e){a("#buddypress #activity-stream").find('[data-bp-activity-id="'+e+'"]').addClass("newest_mentions_activity")}),this.mentions_count=0):void 0!==this.heartbeat_data.highlights[e.scope]&&this.heartbeat_data.highlights[e.scope].length&&a.each(this.heartbeat_data.highlights[e.scope],function(t,i){a("#buddypress #activity-stream").find('[data-bp-activity-id="'+i+'"]').length&&a("#buddypress #activity-stream").find('[data-bp-activity-id="'+i+'"]').addClass("newest_"+e.scope+"_activity")}),this.heartbeat_data.newest="",a.each(a(bp.Nouveau.objectNavParent+" [data-bp-scope]").find("a span"),function(t,e){0===parseInt(a(e).html(),10)&&a(e).html("")}),void 0!==this.heartbeat_data.highlights[e.scope]&&(this.heartbeat_data.highlights[e.scope]=[]),a(document).prop("title",this.heartbeat_data.document_title),setTimeout(function(){a("#buddypress #activity-stream .activity-item").removeClass("newest_"+e.scope+"_activity")},3e3)},activityActions:function(t){var e,i,s=t.data,n=a(t.target),d=a(t.currentTarget),o=d.data("bp-activity-id"),r=a(t.delegateTarget);if(a(n).is("span")&&(n=a(n).closest("a")),n.hasClass("fav")||n.hasClass("unfav")){var c=n.hasClass("fav")?"fav":"unfav";t.preventDefault(),n.addClass("loading"),s.ajax({action:"activity_mark_"+c,id:o},"activity").done(function(t){if(n.removeClass("loading"),!1!==t.success)if(n.fadeOut(200,function(){a(this).find("span").first().length?a(this).find("span").first().html(t.data.content):a(this).html(t.data.content),a(this).attr("data-bp-tooltip",t.data.content),"false"===a(this).attr("aria-pressed")?a(this).attr("aria-pressed","true"):a(this).attr("aria-pressed","false"),a(this).fadeIn(200)}),"fav"===c)void 0!==t.data.directory_tab&&(a(s.objectNavParent+' [data-bp-scope="favorites"]').length||a(s.objectNavParent+' [data-bp-scope="all"]').after(t.data.directory_tab)),n.removeClass("fav"),n.addClass("unfav");else if("unfav"===c){var e=a('[data-bp-user-scope="favorites"]').hasClass("selected")||a(s.objectNavParent+' [data-bp-scope="favorites"]').hasClass("selected");e&&d.remove(),void 0!==t.data.no_favorite&&(a(s.objectNavParent+' [data-bp-scope="all"]').length&&a(s.objectNavParent+' [data-bp-scope="all"]').hasClass("selected")?a(s.objectNavParent+' [data-bp-scope="favorites"]').remove():e&&r.append(t.data.no_favorite)),n.removeClass("unfav"),n.addClass("fav")}})}if(n.hasClass("delete-activity")||n.hasClass("acomment-delete")||n.hasClass("spam-activity")||n.hasClass("spam-activity-comment")){var l,p,h,b,v=n.closest("[data-bp-activity-comment-id]"),m=v.data("bp-activity-comment-id"),u=0;if(t.preventDefault(),void 0!==BP_Nouveau.confirm&&!1===window.confirm(BP_Nouveau.confirm))return!1;n.addClass("loading");var f={action:"delete_activity",id:o,_wpnonce:s.getLinkParams(n.prop("href"),"_wpnonce"),is_single:n.closest("[data-bp-single]").length};(n.hasClass("spam-activity")||n.hasClass("spam-activity-comment"))&&(f.action="bp_spam_activity"),l=d,m&&(delete f.is_single,f.id=m,f.is_comment=!0,l=v),s.ajax(f,"activity").done(function(t){if(n.removeClass("loading"),!1===t.success)l.prepend(t.data.feedback),l.find(".bp-feedback").hide().fadeIn(300);else{if(t.data.redirect)return window.location.href=t.data.redirect;m&&(u=1,d.append(v.find("form")),a.each(v.find("li"),function(){u+=1}),p=d.find(".acomment-reply span.comment-count"),h=Number(p.html()-u),p.html(h),(b=d.find("li.show-all a")).length&&b.html(BP_Nouveau.show_x_comments.replace("%d",h)),0===h&&d.removeClass("has-comments")),l.slideUp(300,function(){l.remove()}),m||d.data("bp-timestamp")!==s.Activity.heartbeat_data.last_recorded||(s.Activity.heartbeat_data.newest="",s.Activity.heartbeat_data.last_recorded=0)}})}if(n.closest("span").hasClass("activity-read-more")){var _=n.closest("div"),y=n.closest("span");if(e=null,a(_).hasClass("activity-inner")?e=o:a(_).hasClass("acomment-content")&&(e=n.closest("li").data("bp-activity-comment-id")),!e)return t;t.preventDefault(),a(y).addClass("loading"),s.ajax({action:"get_single_activity_content",id:e},"activity").done(function(t){a(y).removeClass("loading"),_.parent().find(".bp-feedback").length&&_.parent().find(".bp-feedback").remove(),!1===t.success?(_.after(t.data.feedback),_.parent().find(".bp-feedback").hide().fadeIn(300)):a(_).slideUp(300).html(t.data.contents).slideDown(300)})}if(n.hasClass("acomment-reply")||n.parent().hasClass("acomment-reply")){i=a("#ac-form-"+o),e=o,t.preventDefault(),n.parent().hasClass("acomment-reply")&&n.parent(),n.closest("li").data("bp-activity-comment-id")&&(e=n.closest("li").data("bp-activity-comment-id")),i.removeClass("root"),a(".ac-form").hide(),a.each(i.children("div"),function(t,e){a(e).hasClass("error")&&a(e).remove()}),e===o?(a('[data-bp-activity-id="'+e+'"] .activity-comments').append(i),i.addClass("root")):a('[data-bp-activity-comment-id="'+e+'"]').append(i),i.slideDown(200),n.attr("aria-expanded","true"),a.scrollTo(i,500,{offset:-100,easing:"swing"}),a("#ac-form-"+o+" textarea").focus()}if(n.hasClass("ac-reply-cancel")&&(a(n).closest(".ac-form").slideUp(200),a(".acomment-reply").attr("aria-expanded","false"),t.preventDefault()),"ac_form_submit"===n.prop("name")){var g,w;i=n.closest("form"),e=o,t.preventDefault(),n.closest("li").data("bp-activity-comment-id")&&(e=n.closest("li").data("bp-activity-comment-id")),g=a(i).find("textarea").first(),n.addClass("loading").prop("disabled",!0),g.addClass("loading").prop("disabled",!0),w={action:"new_activity_comment",_wpnonce_new_activity_comment:a("#_wpnonce_new_activity_comment").val(),comment_id:e,form_id:o,content:g.val()},a("#_bp_as_nonce_"+o).val()&&(w["_bp_as_nonce_"+o]=a("#_bp_as_nonce_"+o).val()),s.ajax(w,"activity").done(function(t){if(n.removeClass("loading"),g.removeClass("loading"),a(".acomment-reply").attr("aria-expanded","false"),!1===t.success)i.append(a(t.data.feedback).hide().fadeIn(200));else{var e=i.parent(),s=a.trim(t.data.contents);i.fadeOut(200,function(){0===e.children("ul").length&&(e.hasClass("activity-comments")?e.prepend("<ul></ul>"):e.append("<ul></ul>")),e.children("ul").append(a(s).hide().fadeIn(200)),a(i).find("textarea").first().val(""),e.parent().addClass("has-comments")}),h=Number(a(d).find("a span.comment-count").html()||0)+1,a(d).find("a span.comment-count").html(h),(b=a(d).find(".show-all a"))&&b.html(BP_Nouveau.show_x_comments.replace("%d",h))}n.prop("disabled",!1),g.prop("disabled",!1)})}},commentFormAction:function(t){var e,i;return(t=t||window.event).target?e=t.target:t.srcElement&&(e=t.srcElement),3===e.nodeType&&(e=e.parentNode),!0===t.altKey||!0===t.metaKey?t:"TEXTAREA"===e.tagName&&a(e).hasClass("ac-input")?void(27===(i=t.keyCode?t.keyCode:t.which)&&!1===t.ctrlKey?"TEXTAREA"===e.tagName&&a(e).closest("form").slideUp(200):t.ctrlKey&&13===i&&a(e).val()&&a(e).closest("form").find("[type=submit]").first().trigger("click")):t}},bp.Nouveau.Activity.start())}(bp,jQuery); \ No newline at end of file +window.bp=window.bp||{},function(t,a){"undefined"!=typeof BP_Nouveau&&(bp.Nouveau=bp.Nouveau||{},bp.Nouveau.Activity={start:function(){this.setupGlobals(),this.addListeners()},setupGlobals:function(){this.just_posted=[],this.current_page=1,this.mentions_count=Number(a(bp.Nouveau.objectNavParent+' [data-bp-scope="mentions"]').find("a span").html())||0,this.heartbeat_data={newest:"",highlights:{},last_recorded:0,first_recorded:0,document_title:a(document).prop("title")}},addListeners:function(){a("#buddypress").on("bp_heartbeat_send",this.heartbeatSend.bind(this)),a("#buddypress").on("bp_heartbeat_tick",this.heartbeatTick.bind(this)),a('#buddypress [data-bp-list="activity"]').on("click","li.load-newest, li.load-more",this.injectActivities.bind(this)),a("#buddypress").on("bp_ajax_request",'[data-bp-list="activity"]',this.scopeLoaded.bind(this)),a('#buddypress [data-bp-list="activity"]').on("bp_ajax_append",this.hideComments),a('#buddypress [data-bp-list="activity"]').on("click",".show-all",this.showComments),a('#buddypress [data-bp-list="activity"]').on("click",".activity-item",bp.Nouveau,this.activityActions),a(document).keydown(this.commentFormAction)},heartbeatSend:function(t,e){this.heartbeat_data.first_recorded=a("#buddypress [data-bp-list] [data-bp-activity-id]").first().data("bp-timestamp")||0,(0===this.heartbeat_data.last_recorded||this.heartbeat_data.first_recorded>this.heartbeat_data.last_recorded)&&(this.heartbeat_data.last_recorded=this.heartbeat_data.first_recorded),e.bp_activity_last_recorded=this.heartbeat_data.last_recorded,a("#buddypress .dir-search input[type=search]").length&&(e.bp_activity_last_recorded_search_terms=a("#buddypress .dir-search input[type=search]").val()),a.extend(e,{bp_heartbeat:bp.Nouveau.getStorage("bp-activity")})},heartbeatTick:function(t,e){var i,s,n=bp.Nouveau.objects,d=bp.Nouveau.getStorage("bp-activity","scope"),o=this;if(void 0!==e&&e.bp_activity_newest_activities){if(this.heartbeat_data.newest=a.trim(e.bp_activity_newest_activities.activities)+this.heartbeat_data.newest,this.heartbeat_data.last_recorded=Number(e.bp_activity_newest_activities.last_recorded),s=a(this.heartbeat_data.newest).filter(".activity-item"),i=Number(s.length),n.push("mentions"),"all"===d){a.each(s,function(t,e){e=a(e),a.each(n,function(t,i){-1!==a.inArray("bp-my-"+i,e.get(0).classList)&&(void 0===o.heartbeat_data.highlights[i]?o.heartbeat_data.highlights[i]=[e.data("bp-activity-id")]:-1===a.inArray(e.data("bp-activity-id"),o.heartbeat_data.highlights[i])&&o.heartbeat_data.highlights[i].push(e.data("bp-activity-id")))})});var r=new RegExp("bp-my-("+n.join("|")+")","g");this.heartbeat_data.newest=this.heartbeat_data.newest.replace(r,""),a(bp.Nouveau.objectNavParent+' [data-bp-scope="all"]').find("a span").html(i)}else this.heartbeat_data.highlights[d]=[],a.each(s,function(t,e){o.heartbeat_data.highlights[d].push(a(e).data("bp-activity-id"))});if(a.each(n,function(t,e){if(void 0!==o.heartbeat_data.highlights[e]&&o.heartbeat_data.highlights[e].length){var i=0;"mentions"===e&&(i=o.mentions_count),a(bp.Nouveau.objectNavParent+' [data-bp-scope="'+e+'"]').find("a span").html(Number(o.heartbeat_data.highlights[e].length)+i)}}),n.pop(),a(document).prop("title","("+i+") "+this.heartbeat_data.document_title),a('#buddypress [data-bp-list="activity"] li').first().hasClass("load-newest")){var c=a('#buddypress [data-bp-list="activity"] .load-newest a').html();a('#buddypress [data-bp-list="activity"] .load-newest a').html(c.replace(/([0-9]+)/,i))}else a('#buddypress [data-bp-list="activity"] ul.activity-list').prepend('<li class="load-newest"><a href="#newest">'+BP_Nouveau.newest+" ("+i+")</a></li>");a('#buddypress [data-bp-list="activity"]').trigger("bp_heartbeat_pending",this.heartbeat_data)}},injectActivities:function(t){var e=bp.Nouveau.getStorage("bp-activity"),i=e.scope||null,s=e.filter||null;if(a(t.currentTarget).hasClass("load-newest")){t.preventDefault(),a(t.currentTarget).remove();var n=a.parseHTML(this.heartbeat_data.newest);a.each(n,function(t,e){"LI"===e.nodeName&&a(e).hasClass("just-posted")&&a("#"+a(e).prop("id")).length&&a("#"+a(e).prop("id")).remove()}),a(t.delegateTarget).find(".activity-list").prepend(this.heartbeat_data.newest).trigger("bp_heartbeat_prepend",this.heartbeat_data),this.heartbeat_data.newest="","all"===i&&a(bp.Nouveau.objectNavParent+' [data-bp-scope="all"]').find("a span").html(""),"mentions"===i&&(bp.Nouveau.ajax({action:"activity_clear_new_mentions"},"activity"),this.mentions_count=0),a(bp.Nouveau.objectNavParent+' [data-bp-scope="'+i+'"]').find("a span").html(""),void 0!==this.heartbeat_data.highlights[i]&&(this.heartbeat_data.highlights[i]=[]),setTimeout(function(){a(t.delegateTarget).find("[data-bp-activity-id]").removeClass("newest_"+i+"_activity")},3e3),a(document).prop("title",this.heartbeat_data.document_title)}else if(a(t.currentTarget).hasClass("load-more")){var d=1*Number(this.current_page)+1,o=this,r="";t.preventDefault(),a(t.currentTarget).find("a").first().addClass("loading"),this.just_posted=[],a(t.delegateTarget).children(".just-posted").each(function(){o.just_posted.push(a(this).data("bp-activity-id"))}),a("#buddypress .dir-search input[type=search]").length&&(r=a("#buddypress .dir-search input[type=search]").val()),bp.Nouveau.objectRequest({object:"activity",scope:i,filter:s,search_terms:r,page:d,method:"append",exclude_just_posted:this.just_posted.join(","),target:"#buddypress [data-bp-list] ul.bp-list"}).done(function(e){!0===e.success&&(a(t.currentTarget).remove(),o.current_page=d)})}},hideComments:function(t){var e,i,s,n,d=a(t.target).find(".activity-comments");d.length&&d.each(function(t,d){n=a(d).children("ul"),(i=a(n).find("li")).length&&(e=a(d).closest(".activity-item"),s=a("#acomment-comment-"+e.data("bp-activity-id")+" span.comment-count").html()||" ",i.each(function(t,n){if(t<i.length-5&&(a(n).addClass("bp-hidden").hide(),!t)){var d=e.data("bpActivityId");void 0!==d&&(d=parseInt(d,10),a(n).before('<li class="show-all"><button class="text-button" type="button" data-bp-show-comments-id="#activity-'+d+'/show-all/"><span class="icon dashicons dashicons-visibility" aria-hidden="true"></span> '+BP_Nouveau.show_x_comments.replace("%d",s)+"</button></li>"))}}),a(n).children(".bp-hidden").length===a(n).children("li").length-1&&a(n).find("li.show-all").length&&a(n).children("li").removeClass("bp-hidden").toggle())})},showComments:function(t){t.preventDefault(),a(t.target).addClass("loading"),setTimeout(function(){a(t.target).closest("ul").find("li").removeClass("bp-hidden").fadeIn(300,function(){a(t.target).parent("li").remove()})},600)},scopeLoaded:function(t,e){this.hideComments(t),this.current_page=1,"mentions"===e.scope&&void 0!==e.response.new_mentions?(a.each(e.response.new_mentions,function(t,e){a("#buddypress #activity-stream").find('[data-bp-activity-id="'+e+'"]').addClass("newest_mentions_activity")}),this.mentions_count=0):void 0!==this.heartbeat_data.highlights[e.scope]&&this.heartbeat_data.highlights[e.scope].length&&a.each(this.heartbeat_data.highlights[e.scope],function(t,i){a("#buddypress #activity-stream").find('[data-bp-activity-id="'+i+'"]').length&&a("#buddypress #activity-stream").find('[data-bp-activity-id="'+i+'"]').addClass("newest_"+e.scope+"_activity")}),this.heartbeat_data.newest="",a.each(a(bp.Nouveau.objectNavParent+" [data-bp-scope]").find("a span"),function(t,e){0===parseInt(a(e).html(),10)&&a(e).html("")}),void 0!==this.heartbeat_data.highlights[e.scope]&&(this.heartbeat_data.highlights[e.scope]=[]),a(document).prop("title",this.heartbeat_data.document_title),setTimeout(function(){a("#buddypress #activity-stream .activity-item").removeClass("newest_"+e.scope+"_activity")},3e3)},activityActions:function(t){var e,i,s=t.data,n=a(t.target),d=a(t.currentTarget),o=d.data("bp-activity-id"),r=a(t.delegateTarget);if(a(n).is("span")&&(n=a(n).closest("a")),n.hasClass("fav")||n.hasClass("unfav")){var c=n.hasClass("fav")?"fav":"unfav";t.preventDefault(),n.addClass("loading"),s.ajax({action:"activity_mark_"+c,id:o},"activity").done(function(t){if(n.removeClass("loading"),!1!==t.success)if(n.fadeOut(200,function(){a(this).find("span").first().length?a(this).find("span").first().html(t.data.content):a(this).html(t.data.content),a(this).attr("data-bp-tooltip",t.data.content),"false"===a(this).attr("aria-pressed")?a(this).attr("aria-pressed","true"):a(this).attr("aria-pressed","false"),a(this).fadeIn(200)}),"fav"===c)void 0!==t.data.directory_tab&&(a(s.objectNavParent+' [data-bp-scope="favorites"]').length||a(s.objectNavParent+' [data-bp-scope="all"]').after(t.data.directory_tab)),n.removeClass("fav"),n.addClass("unfav");else if("unfav"===c){var e=a('[data-bp-user-scope="favorites"]').hasClass("selected")||a(s.objectNavParent+' [data-bp-scope="favorites"]').hasClass("selected");e&&d.remove(),void 0!==t.data.no_favorite&&(a(s.objectNavParent+' [data-bp-scope="all"]').length&&a(s.objectNavParent+' [data-bp-scope="all"]').hasClass("selected")?a(s.objectNavParent+' [data-bp-scope="favorites"]').remove():e&&r.append(t.data.no_favorite)),n.removeClass("unfav"),n.addClass("fav")}})}if(n.hasClass("delete-activity")||n.hasClass("acomment-delete")||n.hasClass("spam-activity")||n.hasClass("spam-activity-comment")){var l,p,h,b,v=n.closest("[data-bp-activity-comment-id]"),m=v.data("bp-activity-comment-id"),u=0;if(t.preventDefault(),void 0!==BP_Nouveau.confirm&&!1===window.confirm(BP_Nouveau.confirm))return!1;n.addClass("loading");var _={action:"delete_activity",id:o,_wpnonce:s.getLinkParams(n.prop("href"),"_wpnonce"),is_single:n.closest("[data-bp-single]").length};(n.hasClass("spam-activity")||n.hasClass("spam-activity-comment"))&&(_.action="bp_spam_activity"),l=d,m&&(delete _.is_single,_.id=m,_.is_comment=!0,l=v),s.ajax(_,"activity").done(function(t){if(n.removeClass("loading"),!1===t.success)l.prepend(t.data.feedback),l.find(".bp-feedback").hide().fadeIn(300);else{if(t.data.redirect)return window.location.href=t.data.redirect;m&&(u=1,d.append(v.find("form")),a.each(v.find("li"),function(){u+=1}),p=d.find(".acomment-reply span.comment-count"),h=Number(p.html()-u),p.html(h),(b=d.find("li.show-all a")).length&&b.html(BP_Nouveau.show_x_comments.replace("%d",h)),0===h&&d.removeClass("has-comments")),l.slideUp(300,function(){l.remove()}),m||d.data("bp-timestamp")!==s.Activity.heartbeat_data.last_recorded||(s.Activity.heartbeat_data.newest="",s.Activity.heartbeat_data.last_recorded=0)}})}if(n.closest("span").hasClass("activity-read-more")){var f=n.closest("div"),y=n.closest("span");if(e=null,a(f).hasClass("activity-inner")?e=o:a(f).hasClass("acomment-content")&&(e=n.closest("li").data("bp-activity-comment-id")),!e)return t;t.preventDefault(),a(y).addClass("loading"),s.ajax({action:"get_single_activity_content",id:e},"activity").done(function(t){a(y).removeClass("loading"),f.parent().find(".bp-feedback").length&&f.parent().find(".bp-feedback").remove(),!1===t.success?(f.after(t.data.feedback),f.parent().find(".bp-feedback").hide().fadeIn(300)):a(f).slideUp(300).html(t.data.contents).slideDown(300)})}if(n.hasClass("acomment-reply")||n.parent().hasClass("acomment-reply")){i=a("#ac-form-"+o),e=o,t.preventDefault(),n.parent().hasClass("acomment-reply")&&n.parent(),n.closest("li").data("bp-activity-comment-id")&&(e=n.closest("li").data("bp-activity-comment-id")),i.removeClass("root"),a(".ac-form").hide(),a.each(i.children("div"),function(t,e){a(e).hasClass("error")&&a(e).remove()}),e===o?(a('[data-bp-activity-id="'+e+'"] .activity-comments').append(i),i.addClass("root")):a('[data-bp-activity-comment-id="'+e+'"]').append(i),i.slideDown(200),n.attr("aria-expanded","true"),a.scrollTo(i,500,{offset:-100,easing:"swing"}),a("#ac-form-"+o+" textarea").focus()}if(n.hasClass("ac-reply-cancel")&&(a(n).closest(".ac-form").slideUp(200),a(".acomment-reply").attr("aria-expanded","false"),t.preventDefault()),"ac_form_submit"===n.prop("name")){var g,w;i=n.closest("form"),e=o,t.preventDefault(),n.closest("li").data("bp-activity-comment-id")&&(e=n.closest("li").data("bp-activity-comment-id")),g=a(i).find("textarea").first(),n.addClass("loading").prop("disabled",!0),g.addClass("loading").prop("disabled",!0),w={action:"new_activity_comment",_wpnonce_new_activity_comment:a("#_wpnonce_new_activity_comment_"+o).val(),comment_id:e,form_id:o,content:g.val()},a("#_bp_as_nonce_"+o).val()&&(w["_bp_as_nonce_"+o]=a("#_bp_as_nonce_"+o).val()),s.ajax(w,"activity").done(function(t){if(n.removeClass("loading"),g.removeClass("loading"),a(".acomment-reply").attr("aria-expanded","false"),!1===t.success)i.append(a(t.data.feedback).hide().fadeIn(200));else{var e=i.parent(),s=a.trim(t.data.contents);i.fadeOut(200,function(){0===e.children("ul").length&&(e.hasClass("activity-comments")?e.prepend("<ul></ul>"):e.append("<ul></ul>")),e.children("ul").append(a(s).hide().fadeIn(200)),a(i).find("textarea").first().val(""),e.parent().addClass("has-comments")}),h=Number(a(d).find("a span.comment-count").html()||0)+1,a(d).find("a span.comment-count").html(h),(b=a(d).find(".show-all a"))&&b.html(BP_Nouveau.show_x_comments.replace("%d",h))}n.prop("disabled",!1),g.prop("disabled",!1)})}},commentFormAction:function(t){var e,i;return(t=t||window.event).target?e=t.target:t.srcElement&&(e=t.srcElement),3===e.nodeType&&(e=e.parentNode),!0===t.altKey||!0===t.metaKey?t:"TEXTAREA"===e.tagName&&a(e).hasClass("ac-input")?void(27===(i=t.keyCode?t.keyCode:t.which)&&!1===t.ctrlKey?"TEXTAREA"===e.tagName&&a(e).closest("form").slideUp(200):t.ctrlKey&&13===i&&a(e).val()&&a(e).closest("form").find("[type=submit]").first().trigger("click")):t}},bp.Nouveau.Activity.start())}(bp,jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-nouveau.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-nouveau.js index 20c10b863498ac62a200ec022a079965f6dca48c..66f45baca2186e41715603952c9235851c17b2cf 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-nouveau.js +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-nouveau.js @@ -1,7 +1,8 @@ /* global wp, bp, BP_Nouveau, JSON */ /* jshint devel: true */ /* jshint browser: true */ -/* @version 3.2.0 */ +/* @since 3.0.0 */ +/* @version 7.0.0 */ window.wp = window.wp || {}; window.bp = window.bp || {}; @@ -464,26 +465,22 @@ window.bp = window.bp || {}; /** Event Callbacks ***********************************************************/ /** - * [enableDisabledInput description] - * @param {[type]} event [description] - * @param {[type]} data [description] - * @return {[type]} [description] + * Toggle the availability of Delete My account button. + * + * @param {Object} event The change event. */ - toggleDisabledInput: function() { - - // Fetch the data attr value (id) - // This a pro tem approach due to current conditions see - // https://github.com/buddypress/next-template-packs/issues/180. - var disabledControl = $(this).attr('data-bp-disable-input'); + toggleDisabledInput: function( event ) { + var target = $( event.currentTarget ), disabledControl = '#' + target.data( 'bp-disable-input' ), + isChecked = target.prop( 'checked' ); - if ( $( disabledControl ).prop( 'disabled', true ) && !$(this).hasClass('enabled') ) { - $(this).addClass('enabled').removeClass('disabled'); - $( disabledControl ).removeProp( 'disabled' ); + target.removeClass( 'enabled disabled' ); - } else if( $( disabledControl ).prop( 'disabled', false ) && $(this).hasClass('enabled') ) { - $(this).removeClass('enabled').addClass('disabled'); - // Set using attr not .prop else DOM renders as 'disable=""' CSS needs 'disable="disable"'. - $( disabledControl ).attr( 'disabled', 'disabled' ); + if ( isChecked ) { + target.addClass( 'enabled' ); + $( disabledControl ).prop( 'disabled', false ); + } else { + $( disabledControl ).prop( 'disabled', true ); + target.addClass( 'disabled' ); } }, diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-nouveau.min.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-nouveau.min.js index b825125ac4f5de614287e30e50d6ba70a688c508..69d2a1599e913588ef75b4ed5d8d4bba3def2af6 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-nouveau.min.js +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-nouveau.min.js @@ -1 +1 @@ -window.wp=window.wp||{},window.bp=window.bp||{},function(e,t){"undefined"!=typeof BP_Nouveau&&(bp.Nouveau={start:function(){this.setupGlobals(),this.prepareDocument(),this.initObjects(),this.setHeartBeat(),this.addListeners()},setupGlobals:function(){this.ajax_request=null,this.objects=t.map(BP_Nouveau.objects,function(e){return e}),this.objectNavParent=BP_Nouveau.object_nav_parent,this.heartbeat=wp.heartbeat||{},this.querystring=this.getLinkParams()},prepareDocument:function(){if(t("body").hasClass("no-js")&&t("body").removeClass("no-js").addClass("js"),BP_Nouveau.warnings&&"undefined"!=typeof console&&console.warn&&t.each(BP_Nouveau.warnings,function(e,t){console.warn(t)}),t(".buddypress_object_nav .widget-title").length){var e=t(".buddypress_object_nav .widget-title").html();t("body").find('*:contains("'+e+'")').each(function(a,s){t(s).hasClass("widget-title")||e!==t(s).html()||t(s).is("a")||t(s).remove()})}},getStorage:function(e,t){var a=sessionStorage.getItem(e);return a=a?JSON.parse(a):{},void 0!==t?a[t]||!1:a},setStorage:function(e,t,a){var s=this.getStorage(e);return void 0===a&&void 0!==s[t]?delete s[t]:s[t]=a,sessionStorage.setItem(e,JSON.stringify(s)),null!==sessionStorage.getItem(e)},getLinkParams:function(e,t){var a;if(!(a=e?-1!==e.indexOf("?")?"?"+e.split("?")[1]:"":document.location.search))return null;var s=a.replace(/(^\?)/,"").split("&").map(function(e){return e=e.split("="),this[e[0]]=e[1],this}.bind({}))[0];return t?s[t]:s},urlDecode:function(e,t){var a=t||{amp:"&",lt:"<",gt:">",quot:'"',"#039":"'"};return decodeURIComponent(e.replace(/\+/g," ")).replace(/&([^;]+);/g,function(e,t){return a[t]||""})},ajax:function(e,a){this.ajax_request&&this.ajax_request.abort();var s=t.extend({},bp.Nouveau.getStorage("bp-"+a),{nonce:BP_Nouveau.nonces[a]},e);return void 0!==BP_Nouveau.customizer_settings&&(s.customized=BP_Nouveau.customizer_settings),this.ajax_request=t.post(BP_Nouveau.ajaxurl,s,"json"),this.ajax_request},inject:function(e,a,s){t(e).length&&a&&("append"===(s=s||"reset")?t(e).append(a):"prepend"===s?t(e).prepend(a):t(e).html(a),"undefined"==typeof bp_mentions&&void 0===bp.mentions||t(".bp-suggestions").bp_mentions(bp.mentions.users))},objectRequest:function(e){var a={},s=this;if((e=t.extend({object:"",scope:null,filter:null,target:"#buddypress [data-bp-list]",search_terms:"",page:1,extras:null,caller:null,template:null,method:"reset"},e)).object&&e.target)return e.search_terms&&(e.search_terms=e.search_terms.replace(/</g,"<").replace(/>/g,">")),null!==e.scope&&this.setStorage("bp-"+e.object,"scope",e.scope),null!==e.filter&&this.setStorage("bp-"+e.object,"filter",e.filter),null!==e.extras&&this.setStorage("bp-"+e.object,"extras",e.extras),t(this.objectNavParent+" [data-bp-object]").each(function(){t(this).removeClass("selected loading")}),t(this.objectNavParent+' [data-bp-scope="'+e.scope+'"], #object-nav li.current').addClass("selected loading"),t('#buddypress [data-bp-filter="'+e.object+'"] option[value="'+e.filter+'"]').prop("selected",!0),"friends"===e.object||"friend_requests"===e.object||"group_members"===e.object?(e.template=e.object,e.object="members"):"group_requests"===e.object?(e.object="groups",e.template="group_requests"):"notifications"===e.object&&(e.object="members",e.template="member_notifications"),a=t.extend({action:e.object+"_filter"},e),this.ajax(a,e.object).done(function(a){if(!1!==a.success)if(t(s.objectNavParent+' [data-bp-scope="'+e.scope+'"]').removeClass("loading"),"reset"!==e.method)s.inject(e.target,a.data.contents,e.method),t(e.target).trigger("bp_ajax_"+e.method,t.extend(e,{response:a.data}));else if("pag-bottom"===e.caller&&t("#subnav").length){var r=t("#subnav").parent();t("html,body").animate({scrollTop:r.offset().top},"slow",function(){t(e.target).fadeOut(100,function(){s.inject(this,a.data.contents,e.method),t(this).fadeIn(100,"swing",function(){t(e.target).trigger("bp_ajax_request",t.extend(e,{response:a.data}))})})})}else t(e.target).fadeOut(100,function(){s.inject(this,a.data.contents,e.method),t(this).fadeIn(100,"swing",function(){t(e.target).trigger("bp_ajax_request",t.extend(e,{response:a.data}))})})})},initObjects:function(){var e=this,a={},s={},r="all",n="",i=null,o=null;t.each(this.objects,function(d,p){void 0!==(a=e.getStorage("bp-"+p)).scope&&(r=a.scope),void 0!==a.extras&&"notifications"!==p&&(i=a.extras),t('#buddypress [data-bp-filter="'+p+'"]').length&&("-1"!==t('#buddypress [data-bp-filter="'+p+'"]').val()&&"0"!==t('#buddypress [data-bp-filter="'+p+'"]').val()?o=t('#buddypress [data-bp-filter="'+p+'"]').val():void 0!==a.filter&&(o=a.filter,t('#buddypress [data-bp-filter="'+p+'"] option[value="'+o+'"]').prop("selected",!0))),t(this.objectNavParent+' [data-bp-object="'+p+'"]').length&&(t(this.objectNavParent+' [data-bp-object="'+p+'"]').each(function(){t(this).removeClass("selected")}),t(this.objectNavParent+' [data-bp-scope="'+p+'"], #object-nav li.current').addClass("selected")),null!==e.querystring&&(void 0!==e.querystring[p+"_search"]?n=e.querystring[p+"_search"]:void 0!==e.querystring.s&&(n=e.querystring.s),n&&(n=e.urlDecode(n),t('#buddypress [data-bp-search="'+p+'"] input[type=search]').val(n))),t('#buddypress [data-bp-list="'+p+'"]').length&&(s={object:p,scope:r,filter:o,search_terms:n,extras:i},e.objectRequest(s))})},setHeartBeat:function(){void 0!==BP_Nouveau.pulse&&this.heartbeat&&(this.heartbeat.interval(Number(BP_Nouveau.pulse)),t.fn.extend({"heartbeat-send":function(){return this.bind("heartbeat-send.buddypress")}}),t.fn.extend({"heartbeat-tick":function(){return this.bind("heartbeat-tick.buddypress")}}))},addListeners:function(){t("[data-bp-disable-input]").on("change",this.toggleDisabledInput),t(document).on("heartbeat-send.buddypress",this.heartbeatSend),t(document).on("heartbeat-tick.buddypress",this.heartbeatTick),t(this.objectNavParent+" .bp-navs").on("click","a",this,this.scopeQuery),t("#buddypress [data-bp-filter]").on("change",this,this.filterQuery),t("#buddypress [data-bp-search]").on("submit","form",this,this.searchQuery),t("#buddypress [data-bp-search] form").on("search","input[type=search]",this.resetSearch),t("#buddypress [data-bp-list], #buddypress #item-header").on("click","[data-bp-btn-action]",this,this.buttonAction),t("#buddypress [data-bp-close]").on("click",this,this.closeNotice),t("#buddypress [data-bp-list]").on("click","[data-bp-pagination] a",this,this.paginateAction)},toggleDisabledInput:function(){var e=t(this).attr("data-bp-disable-input");t(e).prop("disabled",!0)&&!t(this).hasClass("enabled")?(t(this).addClass("enabled").removeClass("disabled"),t(e).removeProp("disabled")):t(e).prop("disabled",!1)&&t(this).hasClass("enabled")&&(t(this).removeClass("enabled").addClass("disabled"),t(e).attr("disabled","disabled"))},heartbeatSend:function(e,a){t("#buddypress").trigger("bp_heartbeat_send",a)},heartbeatTick:function(e,a){t("#buddypress").trigger("bp_heartbeat_tick",a)},scopeQuery:function(e){var a,s=e.data,r=t(e.currentTarget).parent(),n="all",i=null,o="";return r.hasClass("no-ajax")||t(e.currentTarget).hasClass("no-ajax")||!r.attr("data-bp-scope")?e:(n=r.data("bp-scope"),a=r.data("bp-object"),n&&a?(e.preventDefault(),i=t("#buddypress").find('[data-bp-filter="'+a+'"]').first().val(),t('#buddypress [data-bp-search="'+a+'"] input[type=search]').length&&(o=t('#buddypress [data-bp-search="'+a+'"] input[type=search]').val()),r.hasClass("dynamic")&&r.find("a span").html(""),void s.objectRequest({object:a,scope:n,filter:i,search_terms:o,page:1})):e)},filterQuery:function(e){var a=e.data,s=t(e.target).data("bp-filter"),r="all",n=t(e.target).val(),i="";if(!s)return e;t(a.objectNavParent+" [data-bp-object].selected").length&&(r=t(a.objectNavParent+" [data-bp-object].selected").data("bp-scope")),t('#buddypress [data-bp-search="'+s+'"] input[type=search]').length&&(i=t('#buddypress [data-bp-search="'+s+'"] input[type=search]').val()),a.objectRequest({object:s,scope:r,filter:n,search_terms:i,page:1,template:null})},searchQuery:function(e){var a,s=e.data,r="all",n=null,i="";if(t(e.delegateTarget).hasClass("no-ajax")||void 0===t(e.delegateTarget).data("bp-search"))return e;e.preventDefault(),a=t(e.delegateTarget).data("bp-search"),n=t("#buddypress").find('[data-bp-filter="'+a+'"]').first().val(),i=t(e.delegateTarget).find("input[type=search]").first().val(),t(s.objectNavParent+" [data-bp-object]").length&&(r=t(s.objectNavParent+' [data-bp-object="'+a+'"].selected').data("bp-scope")),s.objectRequest({object:a,scope:r,filter:n,search_terms:i,page:1,template:null})},showSearchSubmit:function(e){t(e.delegateTarget).find("[type=submit]").addClass("bp-show"),t("[type=submit]").hasClass("bp-hide")&&t("[type=submit]").removeClass("bp-hide")},resetSearch:function(e){t(e.target).val()?t(e.delegateTarget).find("[type=submit]").show():t(e.delegateTarget).submit()},buttonAction:function(e){var a=e.data,s=t(e.currentTarget),r=s.data("bp-btn-action"),n=s.data("bp-nonce"),i=s.closest("[data-bp-item-id]"),o=i.data("bp-item-id"),d=s.closest(".list-wrap"),p=i.data("bp-item-component"),c="";if(!r||!o||!p)return e;if(e.preventDefault(),void 0!==BP_Nouveau[r+"_confirm"]&&!1===window.confirm(BP_Nouveau[r+"_confirm"])||s.hasClass("pending"))return!1;c=n?(c=n.split("?_wpnonce="))[1]:a.getLinkParams(s.prop("href"),"_wpnonce");var l={is_friend:"remove_friend",not_friends:"add_friend",pending:"withdraw_friendship",accept_friendship:"accept_friendship",reject_friendship:"reject_friendship"};"members"===p&&void 0!==l[r]&&(r=l[r],p="friends"),s.addClass("pending loading"),a.ajax({action:p+"_"+r,item_id:o,_wpnonce:c},p).done(function(e){if(!1===e.success)d.prepend(e.data.feedback),s.removeClass("pending loading"),i.find(".bp-feedback").fadeOut(6e3);else{if("groups"===p&&void 0!==e.data.is_group&&e.data.is_group)return window.location.reload();if(void 0!==e.data.is_user&&e.data.is_user)return s.parent().html(e.data.feedback),void i.fadeOut(1500);if(t(a.objectNavParent+' [data-bp-scope="personal"]').length){var n=Number(t(a.objectNavParent+' [data-bp-scope="personal"] span').html())||0;-1!==t.inArray(r,["leave_group","remove_friend"])?n-=1:-1!==t.inArray(r,["join_group"])&&(n+=1),n<0&&(n=0),t(a.objectNavParent+' [data-bp-scope="personal"] span').html(n)}s.parent().replaceWith(e.data.contents)}})},closeNotice:function(e){var a=t(e.currentTarget);e.preventDefault(),"clear"===a.data("bp-close")&&(void 0!==t.cookie("bp-message")&&t.removeCookie("bp-message"),void 0!==t.cookie("bp-message-type")&&t.removeCookie("bp-message-type")),a.closest(".bp-feedback").hasClass("bp-sitewide-notice")&&bp.Nouveau.ajax({action:"messages_dismiss_sitewide_notice"},"messages"),a.closest(".bp-feedback").remove()},paginateAction:function(e){var a,s,r,n=e.data,i=t(e.currentTarget),o=null,d=null,p=null,c=null;if(null===(a=i.closest("[data-bp-pagination]").data("bp-pagination")||null))return e;e.preventDefault(),null!==(s=t(e.delegateTarget).data("bp-list")||null)&&(void 0!==(r=n.getStorage("bp-"+s)).scope&&(o=r.scope),void 0!==r.filter&&(d=r.filter),void 0!==r.extras&&(c=r.extras)),t('#buddypress [data-bp-search="'+s+'"] input[type=search]').length&&(p=t('#buddypress [data-bp-search="'+s+'"] input[type=search]').val());var l={object:s,scope:o,filter:d,search_terms:p,extras:c,page:n.getLinkParams(i.prop("href"),a)||1};n.objectRequest(l)}},bp.Nouveau.start())}(bp,jQuery); \ No newline at end of file +window.wp=window.wp||{},window.bp=window.bp||{},function(e,t){"undefined"!=typeof BP_Nouveau&&(bp.Nouveau={start:function(){this.setupGlobals(),this.prepareDocument(),this.initObjects(),this.setHeartBeat(),this.addListeners()},setupGlobals:function(){this.ajax_request=null,this.objects=t.map(BP_Nouveau.objects,function(e){return e}),this.objectNavParent=BP_Nouveau.object_nav_parent,this.heartbeat=wp.heartbeat||{},this.querystring=this.getLinkParams()},prepareDocument:function(){if(t("body").hasClass("no-js")&&t("body").removeClass("no-js").addClass("js"),BP_Nouveau.warnings&&"undefined"!=typeof console&&console.warn&&t.each(BP_Nouveau.warnings,function(e,t){console.warn(t)}),t(".buddypress_object_nav .widget-title").length){var e=t(".buddypress_object_nav .widget-title").html();t("body").find('*:contains("'+e+'")').each(function(a,s){t(s).hasClass("widget-title")||e!==t(s).html()||t(s).is("a")||t(s).remove()})}},getStorage:function(e,t){var a=sessionStorage.getItem(e);return a=a?JSON.parse(a):{},void 0!==t?a[t]||!1:a},setStorage:function(e,t,a){var s=this.getStorage(e);return void 0===a&&void 0!==s[t]?delete s[t]:s[t]=a,sessionStorage.setItem(e,JSON.stringify(s)),null!==sessionStorage.getItem(e)},getLinkParams:function(e,t){var a;if(!(a=e?-1!==e.indexOf("?")?"?"+e.split("?")[1]:"":document.location.search))return null;var s=a.replace(/(^\?)/,"").split("&").map(function(e){return e=e.split("="),this[e[0]]=e[1],this}.bind({}))[0];return t?s[t]:s},urlDecode:function(e,t){var a=t||{amp:"&",lt:"<",gt:">",quot:'"',"#039":"'"};return decodeURIComponent(e.replace(/\+/g," ")).replace(/&([^;]+);/g,function(e,t){return a[t]||""})},ajax:function(e,a){this.ajax_request&&this.ajax_request.abort();var s=t.extend({},bp.Nouveau.getStorage("bp-"+a),{nonce:BP_Nouveau.nonces[a]},e);return void 0!==BP_Nouveau.customizer_settings&&(s.customized=BP_Nouveau.customizer_settings),this.ajax_request=t.post(BP_Nouveau.ajaxurl,s,"json"),this.ajax_request},inject:function(e,a,s){t(e).length&&a&&("append"===(s=s||"reset")?t(e).append(a):"prepend"===s?t(e).prepend(a):t(e).html(a),"undefined"==typeof bp_mentions&&void 0===bp.mentions||t(".bp-suggestions").bp_mentions(bp.mentions.users))},objectRequest:function(e){var a={},s=this;if((e=t.extend({object:"",scope:null,filter:null,target:"#buddypress [data-bp-list]",search_terms:"",page:1,extras:null,caller:null,template:null,method:"reset"},e)).object&&e.target)return e.search_terms&&(e.search_terms=e.search_terms.replace(/</g,"<").replace(/>/g,">")),null!==e.scope&&this.setStorage("bp-"+e.object,"scope",e.scope),null!==e.filter&&this.setStorage("bp-"+e.object,"filter",e.filter),null!==e.extras&&this.setStorage("bp-"+e.object,"extras",e.extras),t(this.objectNavParent+" [data-bp-object]").each(function(){t(this).removeClass("selected loading")}),t(this.objectNavParent+' [data-bp-scope="'+e.scope+'"], #object-nav li.current').addClass("selected loading"),t('#buddypress [data-bp-filter="'+e.object+'"] option[value="'+e.filter+'"]').prop("selected",!0),"friends"===e.object||"friend_requests"===e.object||"group_members"===e.object?(e.template=e.object,e.object="members"):"group_requests"===e.object?(e.object="groups",e.template="group_requests"):"notifications"===e.object&&(e.object="members",e.template="member_notifications"),a=t.extend({action:e.object+"_filter"},e),this.ajax(a,e.object).done(function(a){if(!1!==a.success)if(t(s.objectNavParent+' [data-bp-scope="'+e.scope+'"]').removeClass("loading"),"reset"!==e.method)s.inject(e.target,a.data.contents,e.method),t(e.target).trigger("bp_ajax_"+e.method,t.extend(e,{response:a.data}));else if("pag-bottom"===e.caller&&t("#subnav").length){var r=t("#subnav").parent();t("html,body").animate({scrollTop:r.offset().top},"slow",function(){t(e.target).fadeOut(100,function(){s.inject(this,a.data.contents,e.method),t(this).fadeIn(100,"swing",function(){t(e.target).trigger("bp_ajax_request",t.extend(e,{response:a.data}))})})})}else t(e.target).fadeOut(100,function(){s.inject(this,a.data.contents,e.method),t(this).fadeIn(100,"swing",function(){t(e.target).trigger("bp_ajax_request",t.extend(e,{response:a.data}))})})})},initObjects:function(){var e=this,a={},s={},r="all",n="",i=null,o=null;t.each(this.objects,function(d,p){void 0!==(a=e.getStorage("bp-"+p)).scope&&(r=a.scope),void 0!==a.extras&&"notifications"!==p&&(i=a.extras),t('#buddypress [data-bp-filter="'+p+'"]').length&&("-1"!==t('#buddypress [data-bp-filter="'+p+'"]').val()&&"0"!==t('#buddypress [data-bp-filter="'+p+'"]').val()?o=t('#buddypress [data-bp-filter="'+p+'"]').val():void 0!==a.filter&&(o=a.filter,t('#buddypress [data-bp-filter="'+p+'"] option[value="'+o+'"]').prop("selected",!0))),t(this.objectNavParent+' [data-bp-object="'+p+'"]').length&&(t(this.objectNavParent+' [data-bp-object="'+p+'"]').each(function(){t(this).removeClass("selected")}),t(this.objectNavParent+' [data-bp-scope="'+p+'"], #object-nav li.current').addClass("selected")),null!==e.querystring&&(void 0!==e.querystring[p+"_search"]?n=e.querystring[p+"_search"]:void 0!==e.querystring.s&&(n=e.querystring.s),n&&(n=e.urlDecode(n),t('#buddypress [data-bp-search="'+p+'"] input[type=search]').val(n))),t('#buddypress [data-bp-list="'+p+'"]').length&&(s={object:p,scope:r,filter:o,search_terms:n,extras:i},e.objectRequest(s))})},setHeartBeat:function(){void 0!==BP_Nouveau.pulse&&this.heartbeat&&(this.heartbeat.interval(Number(BP_Nouveau.pulse)),t.fn.extend({"heartbeat-send":function(){return this.bind("heartbeat-send.buddypress")}}),t.fn.extend({"heartbeat-tick":function(){return this.bind("heartbeat-tick.buddypress")}}))},addListeners:function(){t("[data-bp-disable-input]").on("change",this.toggleDisabledInput),t(document).on("heartbeat-send.buddypress",this.heartbeatSend),t(document).on("heartbeat-tick.buddypress",this.heartbeatTick),t(this.objectNavParent+" .bp-navs").on("click","a",this,this.scopeQuery),t("#buddypress [data-bp-filter]").on("change",this,this.filterQuery),t("#buddypress [data-bp-search]").on("submit","form",this,this.searchQuery),t("#buddypress [data-bp-search] form").on("search","input[type=search]",this.resetSearch),t("#buddypress [data-bp-list], #buddypress #item-header").on("click","[data-bp-btn-action]",this,this.buttonAction),t("#buddypress [data-bp-close]").on("click",this,this.closeNotice),t("#buddypress [data-bp-list]").on("click","[data-bp-pagination] a",this,this.paginateAction)},toggleDisabledInput:function(e){var a=t(e.currentTarget),s="#"+a.data("bp-disable-input"),r=a.prop("checked");a.removeClass("enabled disabled"),r?(a.addClass("enabled"),t(s).prop("disabled",!1)):(t(s).prop("disabled",!0),a.addClass("disabled"))},heartbeatSend:function(e,a){t("#buddypress").trigger("bp_heartbeat_send",a)},heartbeatTick:function(e,a){t("#buddypress").trigger("bp_heartbeat_tick",a)},scopeQuery:function(e){var a,s=e.data,r=t(e.currentTarget).parent(),n="all",i=null,o="";return r.hasClass("no-ajax")||t(e.currentTarget).hasClass("no-ajax")||!r.attr("data-bp-scope")?e:(n=r.data("bp-scope"),a=r.data("bp-object"),n&&a?(e.preventDefault(),i=t("#buddypress").find('[data-bp-filter="'+a+'"]').first().val(),t('#buddypress [data-bp-search="'+a+'"] input[type=search]').length&&(o=t('#buddypress [data-bp-search="'+a+'"] input[type=search]').val()),r.hasClass("dynamic")&&r.find("a span").html(""),void s.objectRequest({object:a,scope:n,filter:i,search_terms:o,page:1})):e)},filterQuery:function(e){var a=e.data,s=t(e.target).data("bp-filter"),r="all",n=t(e.target).val(),i="";if(!s)return e;t(a.objectNavParent+" [data-bp-object].selected").length&&(r=t(a.objectNavParent+" [data-bp-object].selected").data("bp-scope")),t('#buddypress [data-bp-search="'+s+'"] input[type=search]').length&&(i=t('#buddypress [data-bp-search="'+s+'"] input[type=search]').val()),a.objectRequest({object:s,scope:r,filter:n,search_terms:i,page:1,template:null})},searchQuery:function(e){var a,s=e.data,r="all",n=null,i="";if(t(e.delegateTarget).hasClass("no-ajax")||void 0===t(e.delegateTarget).data("bp-search"))return e;e.preventDefault(),a=t(e.delegateTarget).data("bp-search"),n=t("#buddypress").find('[data-bp-filter="'+a+'"]').first().val(),i=t(e.delegateTarget).find("input[type=search]").first().val(),t(s.objectNavParent+" [data-bp-object]").length&&(r=t(s.objectNavParent+' [data-bp-object="'+a+'"].selected').data("bp-scope")),s.objectRequest({object:a,scope:r,filter:n,search_terms:i,page:1,template:null})},showSearchSubmit:function(e){t(e.delegateTarget).find("[type=submit]").addClass("bp-show"),t("[type=submit]").hasClass("bp-hide")&&t("[type=submit]").removeClass("bp-hide")},resetSearch:function(e){t(e.target).val()?t(e.delegateTarget).find("[type=submit]").show():t(e.delegateTarget).submit()},buttonAction:function(e){var a=e.data,s=t(e.currentTarget),r=s.data("bp-btn-action"),n=s.data("bp-nonce"),i=s.closest("[data-bp-item-id]"),o=i.data("bp-item-id"),d=s.closest(".list-wrap"),p=i.data("bp-item-component"),c="";if(!r||!o||!p)return e;if(e.preventDefault(),void 0!==BP_Nouveau[r+"_confirm"]&&!1===window.confirm(BP_Nouveau[r+"_confirm"])||s.hasClass("pending"))return!1;c=n?(c=n.split("?_wpnonce="))[1]:a.getLinkParams(s.prop("href"),"_wpnonce");var u={is_friend:"remove_friend",not_friends:"add_friend",pending:"withdraw_friendship",accept_friendship:"accept_friendship",reject_friendship:"reject_friendship"};"members"===p&&void 0!==u[r]&&(r=u[r],p="friends"),s.addClass("pending loading"),a.ajax({action:p+"_"+r,item_id:o,_wpnonce:c},p).done(function(e){if(!1===e.success)d.prepend(e.data.feedback),s.removeClass("pending loading"),i.find(".bp-feedback").fadeOut(6e3);else{if("groups"===p&&void 0!==e.data.is_group&&e.data.is_group)return window.location.reload();if(void 0!==e.data.is_user&&e.data.is_user)return s.parent().html(e.data.feedback),void i.fadeOut(1500);if(t(a.objectNavParent+' [data-bp-scope="personal"]').length){var n=Number(t(a.objectNavParent+' [data-bp-scope="personal"] span').html())||0;-1!==t.inArray(r,["leave_group","remove_friend"])?n-=1:-1!==t.inArray(r,["join_group"])&&(n+=1),n<0&&(n=0),t(a.objectNavParent+' [data-bp-scope="personal"] span').html(n)}s.parent().replaceWith(e.data.contents)}})},closeNotice:function(e){var a=t(e.currentTarget);e.preventDefault(),"clear"===a.data("bp-close")&&(void 0!==t.cookie("bp-message")&&t.removeCookie("bp-message"),void 0!==t.cookie("bp-message-type")&&t.removeCookie("bp-message-type")),a.closest(".bp-feedback").hasClass("bp-sitewide-notice")&&bp.Nouveau.ajax({action:"messages_dismiss_sitewide_notice"},"messages"),a.closest(".bp-feedback").remove()},paginateAction:function(e){var a,s,r,n=e.data,i=t(e.currentTarget),o=null,d=null,p=null,c=null;if(null===(a=i.closest("[data-bp-pagination]").data("bp-pagination")||null))return e;e.preventDefault(),null!==(s=t(e.delegateTarget).data("bp-list")||null)&&(void 0!==(r=n.getStorage("bp-"+s)).scope&&(o=r.scope),void 0!==r.filter&&(d=r.filter),void 0!==r.extras&&(c=r.extras)),t('#buddypress [data-bp-search="'+s+'"] input[type=search]').length&&(p=t('#buddypress [data-bp-search="'+s+'"] input[type=search]').val());var u={object:s,scope:o,filter:d,search_terms:p,extras:c,page:n.getLinkParams(i.prop("href"),a)||1};n.objectRequest(u)}},bp.Nouveau.start())}(bp,jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/password-verify.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/password-verify.js index a0f9e278d28e53c3d11d2b39a675260ebe588e39..db822f16c70b91ea9c0338644974ca2c32b87007 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/password-verify.js +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/password-verify.js @@ -21,7 +21,12 @@ return; } - strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass2 ); + // wp.passwordStrength.userInputBlacklist() has been deprecated in WP 5.5.0. + if ( 'function' === typeof wp.passwordStrength.userInputDisallowedList ) { + strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputDisallowedList(), pass2 ); + } else { + strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass2 ); + } switch ( strength ) { case 2: diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/password-verify.min.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/password-verify.min.js index a560ee0f05fbccd68c84f41027c6ec57974a938e..43af815ff78f2cb3174b429691dd2b83aca9ce1e 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/password-verify.min.js +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/password-verify.min.js @@ -1 +1 @@ -!function(s){function t(){var t=s(".password-entry").val(),e=s(".password-entry-confirm").val();if(s("#pass-strength-result").removeClass("show mismatch short bad good strong"),t)switch(wp.passwordStrength.meter(t,wp.passwordStrength.userInputBlacklist(),e)){case 2:s("#pass-strength-result").addClass("show bad").html(pwsL10n.bad);break;case 3:s("#pass-strength-result").addClass("show good").html(pwsL10n.good);break;case 4:s("#pass-strength-result").addClass("show strong").html(pwsL10n.strong);break;case 5:s("#pass-strength-result").addClass("show mismatch").html(pwsL10n.mismatch);break;default:s("#pass-strength-result").addClass("show short").html(pwsL10n.short)}else s("#pass-strength-result").html(pwsL10n.empty)}s(document).ready(function(){s(".password-entry").val("").keyup(t),s(".password-entry-confirm").val("").keyup(t),console.warn("The bp-nouveau/js/password-verify.js script is deprecated since 5.0.0 and will be deleted in version 6.0.0.")})}(jQuery); \ No newline at end of file +!function(s){function t(){var t=s(".password-entry").val(),e=s(".password-entry-confirm").val();if(s("#pass-strength-result").removeClass("show mismatch short bad good strong"),t)switch("function"==typeof wp.passwordStrength.userInputDisallowedList?wp.passwordStrength.meter(t,wp.passwordStrength.userInputDisallowedList(),e):wp.passwordStrength.meter(t,wp.passwordStrength.userInputBlacklist(),e)){case 2:s("#pass-strength-result").addClass("show bad").html(pwsL10n.bad);break;case 3:s("#pass-strength-result").addClass("show good").html(pwsL10n.good);break;case 4:s("#pass-strength-result").addClass("show strong").html(pwsL10n.strong);break;case 5:s("#pass-strength-result").addClass("show mismatch").html(pwsL10n.mismatch);break;default:s("#pass-strength-result").addClass("show short").html(pwsL10n.short)}else s("#pass-strength-result").html(pwsL10n.empty)}s(document).ready(function(){s(".password-entry").val("").keyup(t),s(".password-entry-confirm").val("").keyup(t),console.warn("The bp-nouveau/js/password-verify.js script is deprecated since 5.0.0 and will be deleted in version 6.0.0.")})}(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/buddypress.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/buddypress.scss index 8eaa6305a9bfb2b416583774fa0154f026068bd4..c6b005608258344d3b2a2455b95d781b8a96a11f 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/buddypress.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/buddypress.scss @@ -26,7 +26,8 @@ /*-------------------------------------------------------------- Hello, this is the BuddyPress Nouveau stylesheet. -@version 4.0.0 +@since 3.0.0 +@version 7.0.0 ---------------------------------------------------------------- >>> TABLE OF CONTENTS: diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/twentytwentyone.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/twentytwentyone.scss new file mode 100644 index 0000000000000000000000000000000000000000..af56e9a794a1c7b2c57f481296c821ec72f56b37 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/twentytwentyone.scss @@ -0,0 +1,1869 @@ +// +// +// Twenty Twenty-One companion stylesheet source. +// +// +// This file compiles to twentytwentyone.css. + +// Import our partials mixins & variables files + +@import "../common-styles/_bp-variables"; +@import "../common-styles/_bp-mixins"; + +/*-------------------------------------------------------------- +Hello, this is the BP Nouveau's Twenty Twenty-One companion stylesheet. + +@since 7.0.0 +@version 7.0.0 + +---------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +1.0 - BP Generic, Typography & Imagery + +2.0 - Navigation - General + 2.1 - Navs - Object Nav / Sub Nav (item-list-tabs) + 2.2 - Pagination + +3.0 - BP Lists / Loops Generic & filters + 3.1 - Activity Loop + 3.1.1 Whats New Activity + 3.1.2 - Activity Entries + 3.1.3 - Activity Comments + 3.2 - Blogs Loop + 3.3 - Groups Loop + 3.4 - Members Loop + +4.0 - Directories - Members, Groups, Blogs, Register, Activation + 4.1 - Groups Creation Steps Screens +5.0 - Single Item screens: User Account & Single Group Screens + 5.1 - Item Headers: Global + 5.1.1 - item-header: Groups + 5.1.2 - item-header: User Accounts + 5.2 - Item Body: Global + 5.2.1 - item-body: Groups + 5.2.1.1 - Management settings screens + 5.2.1.2 - Group Members list + 5.2.1.3 - Group Invite list + 5.2.1.4 - Group Activity + 5.2.2 - item-body: User Accounts + 5.2.2.1 - classes, pag, filters + 5.2.2.2 - Extended Profiles + 5.2.2.3 - Groups + 5.2.2.4 - friends + 5.2.2.5 - Private Messaging Threads + 5.2.2.6 - Settings + +6.0 - Forms - General + 6.1 - Dir Search + +7.0 - Tables - General + +8.0 - Classes - Messages, Ajax, Widgets, Buttons, Tooltips + +9.0 - Layout Classes. +--------------------------------------------------------------*/ + +/** +*------------------------------------------------------------------------------- +* @section 1.0 - BP Generic, Typography & Imagery +*------------------------------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .is-dark-theme & { + + .avatar { + background: var(--global--color-white-90); + } + } +} + +/** +*------------------------------------------------------------------------------- +* @section 2.0 - Navigation - General +*------------------------------------------------------------------------------- +*/ + + +/** +*---------------------------------------------------------- +* @section 2.1 - Navs Object Nav / Sub Nav (bp-list) +* +* The main navigational elements for all BP screens +*---------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + &:not(.bp-single-vert-nav) { + + @include medium-max { + + .bp-navs { + + li { + background: transparent; + } + } + } + } + + .bp-navs { + + li { + + .count { + background-color: var(--button--color-background); + border: 1px solid var(--button--color-background); + border-radius: 50%; + color: var(--button--color-text); + } + } + + &:not(.tabbed-links) { + + li.selected, + li.current, + li a:hover { + + a { + + .count { + background-color: var(--global--color-background); + border: 1px solid var(--global--color-background); + color: var(--button--color-text-hover); + } + } + } + } + + li:not(.current):not(.selected) { + + a:focus, + a:hover { + background: var(--global--color-background); + color: var(--global--color-primary); + outline-offset: -6px; + outline: 2px dotted currentColor; + } + } + + li.selected, + li.current { + + a, + a:focus, + a:hover { + color: var(--button--color-text); + background-color: var(--button--color-background); + } + } + + &.tabbed-links ul, + &.tabbed-links ol { + border-bottom: 1px solid var(--global--color-primary); + + li.current { + border-color: var(--global--color-primary) var(--global--color-primary) var(--global--color-background); + border-style: solid; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + + a { + color: var(--global--color-primary); + background-color: var(--global--color-background); + } + } + } + } + + #group-invites-container { + + .bp-invites-nav { + border-bottom: none; + + li { + + .count { + margin-left: 10px; + border-radius: 10%; + vertical-align: 10%; + } + } + } + + #send-invites-editor { + + ul { + padding-left: 0; + } + } + } + + &.bp-dir-hori-nav:not(.bp-vertical-navs) { + + nav:not(.tabbed-links) { + border: none; + border-bottom: 1px solid var(--global--color-primary); + box-shadow: none; + } + } +} + +#buddypress.twentytwentyone { + + .subnav-filters { + + > ul { + padding-left: 0; + } + } + + .notifications-options-nav { + margin-top: 1em; + + input#notification-bulk-manage { + line-height: 1.2; + } + } +} + +/** +*---------------------------------------------------------- +* @section 2.2 - Pagination +*---------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .bp-pagination { + color: var(--global--color-secondary); + } +} + +/** +*------------------------------------------------------------------------------- +* @section 3.0 - BP Lists / Loops Generic +*------------------------------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .bp-list { + + border-top: 1px dotted var(--global--color-primary); + + > li { + border-bottom: 1px dotted var(--global--color-primary); + } + } + + .activity-list.bp-list { + background: inherit; + border-left: none; + border-right: none; + border-bottom: 1px dotted var(--global--color-primary); + + .activity-item { + background: inherit; + border: 1px solid var(--global--color-primary); + box-shadow: none; + + .activity-header { + + .time-since, + .time-since:hover { + color: var(--global--color-secondary); + } + } + } + } + + .bp-list { + + li { + + &:not(.mini) { + + .item-avatar { + + img.avatar { + display: block; + margin: 0 auto; + margin-bottom: 1em; + } + + @include medium-up() { + max-width: 128px; + max-height: 128px; + margin: auto; + margin-right: 5%; + } + } + } + + &.mini { + + .item-avatar { + + img.avatar { + display: block; + margin: 0 auto; + max-width: 50px; + max-height: 50px; + margin-bottom: 1em; + } + + @include medium-up() { + width: 5%; + margin: auto; + margin-right: 2%; + } + } + + .activity-meta { + + &.action { + clear: none; + } + } + } + + .meta, + .item-meta { + color: var(--global--color-secondary); + } + } + } +} + +/** +*---------------------------------------------------------- +* @section 3.1 - Activity Loop +*---------------------------------------------------------- +*/ + +/** +*----------------------------------------------------- +* @section 3.1.1 - Activity Whats New +*----------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .activity-update-form { + border: 1px solid var(--global--color-primary); + box-shadow: none; + + #whats-new-post-in-box { + + #whats-new-post-in-box-items { + + li { + margin-bottom: 0; + + &.bp-activity-object { + padding: 5px; + margin-left: 3px; + border-radius: 0; + border-style: dotted; + border-width: 0; + border-left-width: 1px; + border-right-width: 1px; + + &:not(.selected) { + background: var(--global--color-white-90); + color: var(--form--color-text); + border-color: var(--form--border-color); + + &:last-child { + border-bottom: dotted 1px; + } + + &:hover { + background: var(--global--color-blue); + } + } + + &.selected { + border: none; + background-color: transparent; + } + } + } + } + } + } +} + +/** +*----------------------------------------------------- +* @section 3.1.2 - Activity Entries +*----------------------------------------------------- +*/ + +body { + + .site { + + #buddypress.twentytwentyone { + + .activity-list { + + .load-more, + .load-newest { + background-color: var(--button--color-background); + color: var(--button--color-text); + border: 1px solid var(--button--color-background); + + a { + color: var(--button--color-text); + + &:focus { + color: var(--button--color-text-hover); + background: transparent; + outline-offset: -6px; + outline: 2px dotted currentColor; + } + } + + &:hover, + &:focus { + color: var(--button--color-text-hover); + background: transparent; + + a { + color: var(--button--color-text-hover); + background: transparent; + } + } + } + + .activity-content { + + .activity-header, + .comment-header { + color: var(--global--color-secondary); + + a { + font-weight: 600; + + &:hover { + text-decoration: underline; + } + } + } + + .activity-inner, + blockquote { + background: inherit; + border: 1px dotted var(--global--color-primary); + } + + .activity-meta.action { + background: inherit; + + .button:before, + .icons:before { + height: auto; + width: auto; + display: inline; + } + + .button { + background: var(--global--color-background); + color: var(--global--color-primary); + border: none; + + span { + color: var(--global--color-secondary); + } + } + } + } + } + } + } + + &.activity-permalink { + + #buddypress.twentytwentyone { + + .activity-list { + border: none; + + .activity-avatar { + + img.avatar { + background: var(--global--color-white); + } + } + } + } + } +} + +/** +*----------------------------------------------------- +* @section 3.1.3 - Activity Comments +*----------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .bp-list { + + li { + + .activity-comments { + + .acomment-avatar { + width: auto; + margin-right: 0; + } + + .acomment-meta { + color: var(--global--color-secondary); + + a { + font-weight: 600; + + &:hover { + text-decoration: underline; + } + } + } + + .acomment-content { + border-left: 1px solid var(--global--color-secondary); + margin: 15px 0 0 5%; + } + } + } + } +} + +/** +*---------------------------------------------------------- +* @section 3.2 - Blogs Loop +*---------------------------------------------------------- +*/ + +// Nothing special for Blogs loop so far. + +/** +*---------------------------------------------------------- +* @section 3.3 - Groups Loop +*---------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .groups-list { // ul + + li { + + .group-desc { + color: var(--global--color-secondary); + border: 1px dotted var(--global--color-primary); + } + } + } + + #groups-dir-list { + + .current-group-type { + text-align: center; + } + } +} + + +/** +*---------------------------------------------------------- +* @section 3.4 - Members Loop +*---------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .members-list { // ul + + li { + + .user-update { + border: 1px dotted var(--global--color-primary); + color: var(--global--color-secondary); + } + } + } + + #members-dir-list { + + .current-member-type { + text-align: center; + } + } +} + +/** +*------------------------------------------------------------------------------- +* @section 4.0 - Directories +*------------------------------------------------------------------------------- +*/ + +// Nothing special for Registration index screen (directory) so far. + +/** +*---------------------------------------------------------- +* @section 4.1 - Groups Creation Steps +*---------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + #group-create-body { + + nav.group-create-links { + + &:not(.tabbed-links) { + background: transparent; + clear: both; + overflow: hidden; + border: none; + border-bottom: 1px solid var(--global--color-primary); + box-shadow: none; + + li { + + a, + span { + padding: 0.5em calc(0.5em + 2px); + display: block; + } + } + } + } + } +} + +/** +*------------------------------------------------------------------------------- +* @section 5.0 - Single Item screens: Groups, Users +*------------------------------------------------------------------------------- +*/ + +/** +*----------------------------------------------------------- +* @subsection 5.1 - Item Header Global +*----------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .single-headers { + + .group-status, + .item-meta, + .bp-group-type-list, + .bp-member-type-list { + color: var(--global--color-secondary); + } + + a:hover { + text-decoration: underline; + } + } +} + +/** +*----------------------------------------------------- +* @subsection 5.1.1 - item-header Groups +* +* Group Specific Item Header +*----------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .groups-header { + + .desc-wrap { + background: var(--global--color-background); + border: 1px solid var(--global--color-primary); + + .group-description { + background: none; + box-shadow: none; + } + } + } +} + +/** +*----------------------------------------------------- +* @subsection 5.1.2 - Item Header User Accounts +* +* User Accounts Specific Item Header +*----------------------------------------------------- +*/ + +// Nothing specific for the Single User specific header rules so far. + +/** +*----------------------------------------------------------- +* @subsection 5.2 - Item Body: Global +*----------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .item-body { + + h2.screen-heading, + h2.creation-step-name { + font-size: var(--heading--font-size-h2); + letter-spacing: var(--heading--letter-spacing-h2); + } + + h3.screen-heading, + h3.creation-step-name { + font-size: var(--heading--font-size-h3); + letter-spacing: var(--heading--letter-spacing-h3); + } + + h4.screen-heading, + h4.creation-step-name { + font-size: var(--heading--font-size-h4); + letter-spacing: var(--heading--letter-spacing-h4); + } + + .bp-avatar { + + #avatar-crop-pane { + margin-bottom: 1em; + } + } + + .bp-avatar-nav { + + ul.avatar-nav-items { + border-bottom: 1px solid var(--global--color-primary); + + li { + + &.current { + border: 1px solid var(--global--color-primary); + border-bottom: 1px solid var(--global--color-background); + } + } + } + } + + #drag-drop-area { + border: 4px dashed var(--global--color-secondary); + + .drag-drop-info { + color: var(--global--color-secondary); + } + + #bp-browse-button { + margin: 50px auto 0; + } + } + + .bp-avatar-status, + .bp-cover-image-status { + + .warning, + .success { + background-color: var(--global--color-light-gray); + border: none; + border-left-width: 4px; + border-left-style: solid; + color: var(--global--color-dark-gray); + } + + .warning { + border-left-color: var(--global--color-orange); + } + + .success { + border-left-color: var(--global--color-green); + } + + .error { + border-left-color: var(--global--color-red); + } + } + } +} + +/** +*---------------------------------------------------- +* @subsection 5.2.1 - Item Body Groups +* +* Groups specific item body rules - screens +*---------------------------------------------------- +*/ + +// Nothing specific for the single screen item-body so far. + +/** +*----------------------------------------- +* @subsection 5.2.1.1 - Management Settings Screens +*----------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .group-settings & { + + .group-settings-selections { + margin-bottom: 1em; + } + } + + #group-manage-members-ui { + + .bp-pagination { + padding: 0.4em 0 0.4em 0.5em; + } + + #group-members-search-form { + + input[type="search"] { + font-size: 16px; + + &:focus { + outline-offset: -7px; + outline: 2px dotted var(--form--border-color); + } + } + + button[type="submit"] { + border-width: 1px; + border-style: solid; + background-clip: border-box; + + &:hover { + border-color: var(--button--color-background); + } + } + } + + #group-roles-filter, + #group-members-list-table .group-member-edit { + + label { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + word-wrap: normal !important; + } + } + + #group-members-role-filter, + #group-members-list-table .group-member-edit select { + font-size: 16px; + padding: 6px 25px 6px 10px; + + &:focus { + outline-offset: 2px; + outline: 2px dotted var(--form--border-color); + } + } + } +} + +/** +*----------------------------------------- +* @subsection 5.2.1.2 - Group Members List +*----------------------------------------- +*/ + +/* +*----------------------------------------- +* @subsection 5.2.1.3 - Group Invites List +*----------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .bp-invites-content { + + ul { + border-top: none; + + li { + border: 1px dotted var(--global--color-primary); + + &.selected { + box-shadow: none; + border-style: solid; + } + + button.invite-button { + border: none; + background: none; + top: -5px; + right: 0; + + .icons:before { + border-radius: 50%; + width: 32px; + height: 32px; + color: var(--global--color-primary); + background: var(--global--color-background); + } + + &:hover { + + .icons:before { + color: var(--global--color-background); + background: var(--global--color-primary); + width: 32px; + height: 32px; + } + } + } + + ul.group-inviters { + + li { + border: none; + } + } + } + } + } +} + +/* +*----------------------------------------- +* @subsection 5.2.1.4 - Group Activity +*----------------------------------------- +*/ + +// Nothing particular for the Group's activity. + +/** +*----------------------------------------------------- +* @subsection 5.2.2 - Item Body User Accounts +* +* User Account specific item body rules +*----------------------------------------------------- +*/ + +/** +*-------------------------------------------- +* @subsection 5.2.2.1 - classes, pag, filters +*-------------------------------------------- +*/ + +/** +*------------------------------------------- +* @subsection 5.2.2.2 - Extended Profiles +*------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .profile { + + table.profile-fields, + table.bp-tables-user { + + tr.alt, + tr { + + td { + background: transparent; + + &.label { + border-right-color: var(--global--color-primary); + } + } + } + } + + &.edit { + + .editfield { + background: var(--global--color-background); + border: 1px solid var(--global--color-primary); + + p.field-visibility-settings-toggle { + margin-top: 1em; + } + + .field-visibility-settings { + + .radio { + + label { + margin-bottom: 0.5em; + } + } + } + } + + .wp-editor-container { + + .mce-toolbar { + + button { + color: var(--global--color-dark-gray); + background: var(--global--color-white-90); + border-color: var(--global--color-dark-gray); + } + } + } + + .button-tabs { + + li { + border: solid 2px var(--global--color-primary); + overflow: hidden; + + a { + text-decoration: none; + } + + &.current { + background-color: var(--global--color-primary); + color: var(--button--color-text); + + a { + color: var(--button--color-text); + } + } + + &:hover { + outline-offset: 10px; + border-style: dotted; + } + } + } + + .clear-value { + text-decoration: underline; + } + + legend { + padding: 0; + } + } + } + + .field-visibility-settings, + .field-visibility-settings-header { + color: var(--global--color-secondary); + } +} + +/** +*------------------------------------------- +* @subsection 5.2.2.3 - Groups +*------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + #group-list { + + &.invites { + + h2.list-title { + float: none; + } + + .accept { + margin-left: 0; + } + } + } +} + +/** +*------------------------------------------- +* @subsection 5.2.2.5 - Private Messaging +*------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + #user_messages_select_all { + vertical-align: -5px; + } + + #user_messages_select_all:checked { + vertical-align: -3px; + } + + #message-threads { + border-top: 1px dotted var(--global--color-primary); + + > li { + border-bottom: 1px dotted var(--global--color-primary); + + &.selected { + border: 1px solid var(--global--color-primary); + } + + &.unread { + border-left: 8px solid var(--global--color-yellow); + } + } + + li { + + .thread-cb { + padding-left: 15px; + } + + &.unread { + + .thread-cb { + padding-left: 7px; + } + } + + .thread-from, + .thread-to { + + img.avatar { + width: 32px; + height: 32px; + } + + .num-recipients { + color: var(--global--color-primary); + } + } + + .thread-content { + + .excerpt { + color: var(--global--color-primary); + } + } + + .thread-date { + + time { + color: var(--global--color-primary); + } + } + } + + li.selected { + background: transparent; + font-weight: bolder; + color: var(--global--color-primary); + + .thread-subject { + + .subject { + color: var(--global--color-primary); + } + } + } + + li:not(.selected) { + color: var(--global--color-secondary); + } + } + + .bp-messages-content { + + #thread-preview h2:first-child, + #bp-message-thread-header h2:first-child { + background-color: var(--button--color-background); + color: var(--button--color-text); + } + + #thread-preview { + border-color: var(--button--color-background); + + dd, + .participants-list { + padding-left: 0; + } + + .preview-pane-header { + border-bottom-style: dotted; + border-bottom-color: var(--global--color-primary); + } + + .preview-content { + + .preview-message { + background: transparent; + } + } + } + + .single-message-thread-header { + + dd, + .participants-list { + padding-left: 0; + } + } + + .actions { + + button.bp-tooltip { + border: none; + background: none; + + &.message-action-delete { + + &:before { + width: 32px; + height: 32px; + color: var(--global--color-primary); + background: var(--global--color-background); + } + + &:hover { + + &:before { + border-radius: 50%; + color: var(--global--color-background); + background: var(--global--color-primary); + } + } + } + } + + .message-action-unstar:before, + .message-action-star:before { + color: var(--global--color-secondary); + } + } + + #bp-message-thread-list { + + li { + + .message-metadata { + background: transparent; + border: 1px solid var(--global--color-primary); + box-shadow: none; + + * { + line-height: 1.6; + vertical-align: middle; + } + + .user-link { + margin-top: 3px; + margin-bottom: 3px; + + strong { + display: inline-block; + margin-top: 2px; + } + + &:hover { + + strong { + text-decoration: underline; + } + } + } + + time { + color: var(--global--color-secondary); + } + } + + .message-content { + background: transparent; + margin: 0; + width: 100%; + padding: 1em; + } + + &:first-child { + + .message-content { + border: 1px dotted var(--global--color-primary); + border-top: none; + } + } + } + } + + #send-reply { + + .avatar-box { + + img.avatar { + display: inline-block; + vertical-align: -7px; + } + } + } + + .wp-editor-container { + + .mce-toolbar { + + button { + color: var(--global--color-dark-gray); + background: var(--global--color-white-90); + border-color: var(--global--color-dark-gray); + } + } + } + + #bp-messages-reset { + border-width: 0; + font-size: inherit; + } + + #send-to-input { + width: 100% !important; + } + } + + .subnav-filters { + + button#user_messages_search_submit { + padding: 3px 0.7em; + + background-color: var(--global--color-background); + color: var(--button--color-text-hover); + border-color: var(--global--color-background); + border-left-color: var(--button--color-background); + + &:hover { + background-color: var(--button--color-background); + color: var(--button--color-text); + border-color: var(--button--color-background); + } + } + + .user-messages-bulk-actions { + + .bulk-apply { + line-height: 1.5; + margin: 0 0 0 10px; + padding: 3px 5px; + background-color: var(--global--color-background); + color: var(--button--color-text-hover); + + &:hover { + background-color: var(--button--color-background); + color: var(--button--color-text); + } + + span { + vertical-align: middle; + } + } + } + } +} + +/** +*------------------------------------------ +* @subsection 5.2.2.6 - Settings +*------------------------------------------ +*/ + +#buddypress.twentytwentyone { + + &.buddypress-wrap .bp-tables-user tr.alt td, + &.buddypress-wrap table.wp-profile-fields tr.alt td { + background: transparent; + } +} + +/** +*------------------------------------------------------------------------------- +* @section 6.0 - Forms - General +*------------------------------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + fieldset { + padding-top: 0; + margin-top: 1em; + + legend { + padding: 0 1em; + display: inline-block; + } + } + + .select-wrap { + border: 1px solid var(--global--color-primary); + background: var(--global--color-white-90); + + select { + background: transparent; + width: 98%; + text-indent: 0; + } + + span.select-arrow { + background: transparent; + + &:before { + font-family: dashicons; + content: "\f140"; + color: var(--global--color-black); + vertical-align: -10%; + } + } + + &:focus, + &:hover { + + .select-arrow:before { + color: var(--global--color-black); + } + } + } + + input[type="checkbox"], + input[type="radio"] { + width: 25px; + height: 25px; + vertical-align: top; + } + + textarea, + input[type="text"], + input[type="color"], + input[type="date"], + input[type="datetime"], + input[type="datetime-local"], + input[type="email"], + input[type="month"], + input[type="number"], + input[type="range"], + input[type="tel"], + input[type="time"], + input[type="url"], + input[type="week"], + input[type="password"], + input[type="search"], + .groups-members-search input[type="text"] { + color: var(--form--color-text); + background: var(--global--color-white-90); + } + + .subnav-filters { + + input[type="search"] { + font-size: 16px; + background: transparent; + } + } + + .bp-dir-search-form, + form#group-members-search, + form#group_invites_search_form { + + button { + background-color: var(--global--color-background); + color: var(--button--color-text-hover); + border-color: var(--global--color-background); + border-left-color: var(--button--color-background); + + &:hover { + background-color: var(--button--color-background); + color: var(--button--color-text); + border-color: var(--button--color-background); + } + } + } + + .standard-form { + + p.description { + color: var(--global--primary-color); + background-color: var(--global--color-background); + } + } +} + +body.bp-user.settings.general { + + #buddypress.twentytwentyone { + + .wp-pwd { + + &:not(.is-open) { + display: none; + } + } + } +} + + +/** +*---------------------------------------------------------- +* @section 6.1 - Directory Search +* +* The Search form & controls in directory pages +*---------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .bp-user & { + + [data-bp-search] { + + form { + + #user_messages_search { + padding: 3px 10px; + } + } + } + } + + form.bp-dir-search-form, + form.bp-messages-search-form, + form[data-bp-search].bp-invites-search-form, + form#group-members-search { + border: 1px solid var(--global--color-primary); + background-color: var(--global--color-white-90); + } +} + +/** +*------------------------------------------------------------------------------- +* @section 7.0 - Tables - General +*------------------------------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + .bp-tables-user, + table.wp-profile-fields, + table.forum { + + tbody { + + tr, + tr.alt { + background: transparent; + } + } + } +} + +/** +*------------------------------------------------------------------------------- +* @section 8.0 - Classes - Messages, Ajax, Widgets, Buttons +*------------------------------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + button, + a.button, + input[type="submit"], + input[type="button"], + ul.button-nav:not(.button-tabs) li a, + .generic-button a, + .comment-reply-link, + a.bp-title-button, + .activity-read-more a { + background: var(--button--color-background); + border: 1px solid var(--button--color-background); + border-radius: 0; + color: var(--button--color-text); + } + + button:hover, + button:focus, + a.button:focus, + a.button:hover, + input[type="submit"]:focus, + input[type="submit"]:hover, + input[type="button"]:focus, + input[type="button"]:hover, + input[type="reset"], + #bp-messages-reset, + .button-nav li a:focus, + .button-nav li a:hover, + .button-nav li.current a, + .generic-button a:focus, + .generic-button a:hover, + .comment-reply-link:focus, + .comment-reply-link:hover, + .activity-read-more a:focus, + .activity-read-more a:hover { + background: transparent; + border-color: var(--button--color-background); + color: var(--button--color-text-hover); + outline: none; + text-decoration: none; + } + + input[type="reset"]:focus, + input[type="reset"]:hover, + #bp-messages-reset:focus, + #bp-messages-reset:hover { + outline-offset: -1px; + outline: 2px dotted currentColor; + } + + input[type="submit"].pending, + input[type="button"].pending, + input[type="reset"].pending, + input[type="button"].disabled, + input[type="reset"].disabled, + input[type="submit"][disabled="disabled"], + input[type="submit"]:disabled, + input[type="submit"]:hover.pending, + input[type="button"]:hover.pending, + input[type="reset"]:hover.pending, + input[type="submit"]:hover.disabled, + input[type="button"]:hover.disabled, + input[type="reset"]:hover.disabled, + button.pending:hover, + button.disabled:hover, + div.pending a:hover, + a.disabled:hover + button.pending, + button.disabled, + div.pending a, + a.disabled { + opacity: 0.6; + cursor: not-allowed; + } + + .blog-button { + + &:after, + &:before { + display: none; + } + } + + .create-button { + + a:focus, + a:hover { + text-decoration: none; + } + } + + &.bp-dir-vert-nav { + + .create-button { + + a { + box-shadow: none; + color: var(--button--color-text); + background-color: var(--button--color-background); + border-radius: var(--button--border-radius); + border: var(--button--border-width) solid var(--button--color-background); + background-clip: border-box; + } + } + } +} + +#buddypress.twentytwentyone { + + .warn { + color: var(--global--color-primary); + font-weight: 600; + } + + .bp-feedback { + color: var(--global--color-primary); + background: var(--global--color-background); + box-shadow: none; + + &:not(.custom-homepage-info) { + margin-top: 1.5em; + margin-bottom: 1.5em; + border: solid 1px var(--global--color-primary); + } + + .bp-icon { + background-color: var(--global--color-primary); + color: var(--button--color-text); + } + + a { + border-bottom: solid 1px var(--global--color-primary); + } + + button.bp-tooltip { + border: none; + background: none; + top: -5px; + right: 0; + + .dashicons-dismiss { + border-radius: 50%; + width: 32px; + height: 32px; + color: var(--global--color-primary); + background: var(--global--color-background); + } + + &:hover { + + .dashicons-dismiss { + color: var(--global--color-background); + background: var(--global--color-primary); + } + } + } + + &.bp-sitewide-notice { + + button.bp-tooltip { + top: 0; + right: 15px; + } + + .bp-icon:before { + content: "\f16d"; + } + } + } + + #group-create-body { + + .bp-cover-image-status { + + p.warning { + background-color: var(--global--color-light-gray); + border: none; + border-left-width: 4px; + border-left-style: solid; + border-left-color: var(--global--color-orange); + color: var(--global--color-dark-gray); + box-shadow: none; + } + } + } +} + +body.buddypress { + + .site { + + #buddypress.twentytwentyone { + + .button { + + &.bp-tooltip { + + &:after { + content: attr(data-bp-tooltip); + word-wrap: break-word; + height: auto; + width: auto; + } + } + } + } + } +} + +/** +*------------------------------------------------------------------------------- +* @section 9.0 - Layout classes +*------------------------------------------------------------------------------- +*/ + +#buddypress.twentytwentyone { + + &.bp-single-vert-nav { + + .bp-navs { + + &.vertical { + + li { + + span { + background-color: var(--button--color-background); + border-radius: 10%; + display: inline-block; + margin: 3px 0; + } + + &.selected, + &.current { + + span { + background-color: var(--global--color-background); + } + } + } + } + } + + .item-body:not(#group-create-body) { + background: var(--global--color-background); + border-left: 1px solid var(--global--color-primary); + + #subnav:not(.tabbed-links) { + background: transparent; + border-bottom: 1px solid var(--global--color-primary); + + li { + + a { + border: none; + text-decoration: none; + } + + &.current, + &.selected { + background-color: var(--global--color-primary); + margin: 0; + padding: 10px 0; + border-radius: 0; + } + } + } + } + } + + .grid { + + &.bp-list { + border-top: none; + } + + > li { + border: none; + + .list-wrap { + border: 1px solid var(--global--color-primary); + background: transparent; + } + + &:not(.mini) .item-avatar, + .item-avatar { + margin-right: auto; + } + } + } +} diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin-rtl.css b/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin-rtl.css index ad9a350a5610e3781fa08d122a07f23b237b2919..83994ca162ae3f79fc8891dfd64c5e07c04dfa41 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin-rtl.css +++ b/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin-rtl.css @@ -322,6 +322,12 @@ p.member-type-none-notice { word-break: break-all; /* e.g. Chinese, Japanese, Korean chars */ } +ul.bp-xprofile-delete-group-list { + list-style-type: disc; + margin: 4px 26px; +} + + @media screen and (max-width: 782px) { .bp-date-formats .bp-date-format-option:first-of-type { diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin-rtl.min.css b/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin-rtl.min.css index 41fbc796be9eaa3fd523aedc3c25cec145aaaee3..742e8f5bdace722e614d0dc09ab6f46b774b6fa9 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin-rtl.min.css @@ -1 +1 @@ -#profile-field-form{margin-top:12px}#tabs{position:relative}p.nofields{margin:20px 0 0}ul#field-group-tabs{float:right;padding:0 15px 0 0;margin:0;display:none}ul#field-group-tabs li{float:right;margin-left:8px;margin-bottom:-1px}ul#field-group-tabs li.ui-state-hover a.ui-tab{color:#d54e21}ul#field-group-tabs li.ui-state-acceptable:not(.ui-state-active) a.ui-tab{animation:tab-throb 2s infinite}ul#field-group-tabs li.drop-candidate.ui-state-acceptable:not(.ui-state-active) a.ui-tab{-o-box-shadow:0 0 10px #0f0;box-shadow:0 0 10px #0f0;animation:none;color:#000}ul#field-group-tabs li a.ui-tab{font-size:14px;display:block;margin-top:3px;padding:5px 10px 6px;border:1px solid #e5e5e5;background-color:#f5f5f5;text-decoration:none;color:#000;outline:0}ul#field-group-tabs li.ui-state-active a.ui-tab{background-color:#fff;margin-top:0;padding:7px 10px;border-bottom:1px solid transparent;color:#000}.tab-toolbar{clear:right;background:#fff;border-width:1px;border-color:#e5e5e5;border-style:solid;box-shadow:0 1px 1px rgba(0,0,0,.04);padding:10px;margin-bottom:10px}.bp-option a.delete,.field-wrapper a.deletion,.tab-toolbar a.deletion{color:#a00;border-bottom:1px solid #a00;text-decoration:none;padding:0}div.delete-button{float:left;line-height:28px}div.field-group{clear:right}.field-group{cursor:default;border:1px solid #e5e5e5;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04);margin-top:10px;padding:0 20px 20px}.field-group .xprofile-field{position:relative}.field-group fieldset{position:relative;border:1px solid #ddd;margin:20px 0 0;cursor:move;background:#fafafa;padding:10px 0 0}.field-group fieldset legend{position:absolute;top:10px;right:10px;padding:0}fieldset.checkbox div label,fieldset.radio div div label{margin-left:20px}fieldset.clear-value{margin-right:10px}fieldset div.field-wrapper{padding:25px 10px 10px}.field-group div.actions{float:none;border-top:1px solid #ddd;margin:10px 0 0;padding-top:10px}.field-group div.actions a,.field-group div.actions button,.field-group div.actions input{float:none}.field-group fieldset:hover{border-color:#999}.field-group fieldset:hover div.actions{display:block}#field-group-tabs .ui-sortable-placeholder,.bp-options-box .ui-sortable-placeholder,.field-group fieldset.ui-sortable-placeholder{border:1px dashed #999;background-color:#fff;visibility:visible!important}#field-group-tabs .ui-sortable-placeholder{background:0 0;border-bottom:none;margin:-1px 0 -1px 6px}ul.forTab{list-style:none;padding:0;margin:0 1em 0 0}ul.forTab li{margin:0 0 1em}ul.forTab li label{display:block}ul.forTab li input{font-size:1.4em}p.success{background:#0f0}p.err{border-top:2px solid red;border-bottom:2px solid red;color:red;padding:5px 0;width:40%}span.desc,span.signup-description{display:block;font-size:11px;color:#555}ul.multi-checkbox{margin:0 0 0 5px;padding:.5em .9em;height:10em;overflow:auto;list-style:none;border:solid 1px #ccc;width:90%}ul.multi-checkbox li{padding:0;margin:0}div.bp-option{background:#fafafa;border:1px solid #dfdfdf;margin:10px 0;padding:10px 5px}div.bp-option:hover{border:1px solid #999}.bp-option-icon{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 2px 0 0;top:5px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#888}div.bp-option .grabber:before{content:"\f329"}th a{background:#fff;padding:2px 5px;top:-2px}textarea#description,textarea#group_description{border:1px solid #ddd;width:100%}#bp-xprofile-add-field .titlewrap,#bp-xprofile-add-field-group .titlewrap{margin-bottom:20px}#bp-xprofile-add-field #post-body-content{margin-bottom:0}p.member-type-none-notice,span.member-type-none-notice{color:red}.hide{display:none;visibility:hidden}.form-table.bp-date-options{margin:0 8px}.form-table.bp-date-options th{width:150px}.form-table td .date-format-section select{margin-top:-2px}.date-format-label{display:inline-block;width:150px}.date-format-custom-value,.date-range-numeric{width:56px}.bp-date-range-type-label{float:right;font-style:italic;width:auto}.bp-date-range-type-values{margin-left:25px;padding-right:100px}#bp-xprofile-add-field select#fieldtype{max-width:100%;word-wrap:break-word;word-break:break-all}@media screen and (max-width:782px){.bp-date-formats .bp-date-format-option:first-of-type{margin-top:1em}.bp-range-types .bp-date-format-option{margin-bottom:1em;margin-top:1em}.form-table td input.date-format-custom-value,.form-table td input.date-range-numeric{display:inline-block;margin-left:10px;width:56px}.form-table td .bp-date-range-type-values select{display:inline-block;width:auto}.bp-date-range-type-label{float:none;width:auto}.bp-date-range-type-values{padding-right:0;margin-right:35px}}@media screen and (max-width:480px){.form-table .bp-range-types label{clear:both;display:block}} \ No newline at end of file +#profile-field-form{margin-top:12px}#tabs{position:relative}p.nofields{margin:20px 0 0}ul#field-group-tabs{float:right;padding:0 15px 0 0;margin:0;display:none}ul#field-group-tabs li{float:right;margin-left:8px;margin-bottom:-1px}ul#field-group-tabs li.ui-state-hover a.ui-tab{color:#d54e21}ul#field-group-tabs li.ui-state-acceptable:not(.ui-state-active) a.ui-tab{animation:tab-throb 2s infinite}ul#field-group-tabs li.drop-candidate.ui-state-acceptable:not(.ui-state-active) a.ui-tab{-o-box-shadow:0 0 10px #0f0;box-shadow:0 0 10px #0f0;animation:none;color:#000}ul#field-group-tabs li a.ui-tab{font-size:14px;display:block;margin-top:3px;padding:5px 10px 6px;border:1px solid #e5e5e5;background-color:#f5f5f5;text-decoration:none;color:#000;outline:0}ul#field-group-tabs li.ui-state-active a.ui-tab{background-color:#fff;margin-top:0;padding:7px 10px;border-bottom:1px solid transparent;color:#000}.tab-toolbar{clear:right;background:#fff;border-width:1px;border-color:#e5e5e5;border-style:solid;box-shadow:0 1px 1px rgba(0,0,0,.04);padding:10px;margin-bottom:10px}.bp-option a.delete,.field-wrapper a.deletion,.tab-toolbar a.deletion{color:#a00;border-bottom:1px solid #a00;text-decoration:none;padding:0}div.delete-button{float:left;line-height:28px}div.field-group{clear:right}.field-group{cursor:default;border:1px solid #e5e5e5;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04);margin-top:10px;padding:0 20px 20px}.field-group .xprofile-field{position:relative}.field-group fieldset{position:relative;border:1px solid #ddd;margin:20px 0 0;cursor:move;background:#fafafa;padding:10px 0 0}.field-group fieldset legend{position:absolute;top:10px;right:10px;padding:0}fieldset.checkbox div label,fieldset.radio div div label{margin-left:20px}fieldset.clear-value{margin-right:10px}fieldset div.field-wrapper{padding:25px 10px 10px}.field-group div.actions{float:none;border-top:1px solid #ddd;margin:10px 0 0;padding-top:10px}.field-group div.actions a,.field-group div.actions button,.field-group div.actions input{float:none}.field-group fieldset:hover{border-color:#999}.field-group fieldset:hover div.actions{display:block}#field-group-tabs .ui-sortable-placeholder,.bp-options-box .ui-sortable-placeholder,.field-group fieldset.ui-sortable-placeholder{border:1px dashed #999;background-color:#fff;visibility:visible!important}#field-group-tabs .ui-sortable-placeholder{background:0 0;border-bottom:none;margin:-1px 0 -1px 6px}ul.forTab{list-style:none;padding:0;margin:0 1em 0 0}ul.forTab li{margin:0 0 1em}ul.forTab li label{display:block}ul.forTab li input{font-size:1.4em}p.success{background:#0f0}p.err{border-top:2px solid red;border-bottom:2px solid red;color:red;padding:5px 0;width:40%}span.desc,span.signup-description{display:block;font-size:11px;color:#555}ul.multi-checkbox{margin:0 0 0 5px;padding:.5em .9em;height:10em;overflow:auto;list-style:none;border:solid 1px #ccc;width:90%}ul.multi-checkbox li{padding:0;margin:0}div.bp-option{background:#fafafa;border:1px solid #dfdfdf;margin:10px 0;padding:10px 5px}div.bp-option:hover{border:1px solid #999}.bp-option-icon{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 2px 0 0;top:5px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#888}div.bp-option .grabber:before{content:"\f329"}th a{background:#fff;padding:2px 5px;top:-2px}textarea#description,textarea#group_description{border:1px solid #ddd;width:100%}#bp-xprofile-add-field .titlewrap,#bp-xprofile-add-field-group .titlewrap{margin-bottom:20px}#bp-xprofile-add-field #post-body-content{margin-bottom:0}p.member-type-none-notice,span.member-type-none-notice{color:red}.hide{display:none;visibility:hidden}.form-table.bp-date-options{margin:0 8px}.form-table.bp-date-options th{width:150px}.form-table td .date-format-section select{margin-top:-2px}.date-format-label{display:inline-block;width:150px}.date-format-custom-value,.date-range-numeric{width:56px}.bp-date-range-type-label{float:right;font-style:italic;width:auto}.bp-date-range-type-values{margin-left:25px;padding-right:100px}#bp-xprofile-add-field select#fieldtype{max-width:100%;word-wrap:break-word;word-break:break-all}ul.bp-xprofile-delete-group-list{list-style-type:disc;margin:4px 26px}@media screen and (max-width:782px){.bp-date-formats .bp-date-format-option:first-of-type{margin-top:1em}.bp-range-types .bp-date-format-option{margin-bottom:1em;margin-top:1em}.form-table td input.date-format-custom-value,.form-table td input.date-range-numeric{display:inline-block;margin-left:10px;width:56px}.form-table td .bp-date-range-type-values select{display:inline-block;width:auto}.bp-date-range-type-label{float:none;width:auto}.bp-date-range-type-values{padding-right:0;margin-right:35px}}@media screen and (max-width:480px){.form-table .bp-range-types label{clear:both;display:block}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.css b/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.css index 0a7b376bc0a79e123d30efad5a13a15c181db25f..b84db929af7b4c1b4e500ef06de0443ee95db153 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.css +++ b/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.css @@ -322,6 +322,12 @@ p.member-type-none-notice { word-break: break-all; /* e.g. Chinese, Japanese, Korean chars */ } +ul.bp-xprofile-delete-group-list { + list-style-type: disc; + margin: 4px 26px; +} + + @media screen and (max-width: 782px) { .bp-date-formats .bp-date-format-option:first-of-type { diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.min.css b/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.min.css index f5c719af44ffadcc4ad778e58203d3c19dd25fe6..ec9df479ad21bb0321f00e82d8d159bba293be84 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.min.css +++ b/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.min.css @@ -1 +1 @@ -#profile-field-form{margin-top:12px}#tabs{position:relative}p.nofields{margin:20px 0 0}ul#field-group-tabs{float:left;padding:0 0 0 15px;margin:0;display:none}ul#field-group-tabs li{float:left;margin-right:8px;margin-bottom:-1px}ul#field-group-tabs li.ui-state-hover a.ui-tab{color:#d54e21}ul#field-group-tabs li.ui-state-acceptable:not(.ui-state-active) a.ui-tab{animation:tab-throb 2s infinite}ul#field-group-tabs li.drop-candidate.ui-state-acceptable:not(.ui-state-active) a.ui-tab{-o-box-shadow:0 0 10px #0f0;box-shadow:0 0 10px #0f0;animation:none;color:#000}ul#field-group-tabs li a.ui-tab{font-size:14px;display:block;margin-top:3px;padding:5px 10px 6px;border:1px solid #e5e5e5;background-color:#f5f5f5;text-decoration:none;color:#000;outline:0}ul#field-group-tabs li.ui-state-active a.ui-tab{background-color:#fff;margin-top:0;padding:7px 10px;border-bottom:1px solid transparent;color:#000}.tab-toolbar{clear:left;background:#fff;border-width:1px;border-color:#e5e5e5;border-style:solid;box-shadow:0 1px 1px rgba(0,0,0,.04);padding:10px;margin-bottom:10px}.bp-option a.delete,.field-wrapper a.deletion,.tab-toolbar a.deletion{color:#a00;border-bottom:1px solid #a00;text-decoration:none;padding:0}div.delete-button{float:right;line-height:28px}div.field-group{clear:left}.field-group{cursor:default;border:1px solid #e5e5e5;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04);margin-top:10px;padding:0 20px 20px}.field-group .xprofile-field{position:relative}.field-group fieldset{position:relative;border:1px solid #ddd;margin:20px 0 0;cursor:move;background:#fafafa;padding:10px 0 0}.field-group fieldset legend{position:absolute;top:10px;left:10px;padding:0}fieldset.checkbox div label,fieldset.radio div div label{margin-right:20px}fieldset.clear-value{margin-left:10px}fieldset div.field-wrapper{padding:25px 10px 10px}.field-group div.actions{float:none;border-top:1px solid #ddd;margin:10px 0 0;padding-top:10px}.field-group div.actions a,.field-group div.actions button,.field-group div.actions input{float:none}.field-group fieldset:hover{border-color:#999}.field-group fieldset:hover div.actions{display:block}#field-group-tabs .ui-sortable-placeholder,.bp-options-box .ui-sortable-placeholder,.field-group fieldset.ui-sortable-placeholder{border:1px dashed #999;background-color:#fff;visibility:visible!important}#field-group-tabs .ui-sortable-placeholder{background:0 0;border-bottom:none;margin:-1px 6px -1px 0}ul.forTab{list-style:none;padding:0;margin:0 0 0 1em}ul.forTab li{margin:0 0 1em}ul.forTab li label{display:block}ul.forTab li input{font-size:1.4em}p.success{background:#0f0}p.err{border-top:2px solid red;border-bottom:2px solid red;color:red;padding:5px 0;width:40%}span.desc,span.signup-description{display:block;font-size:11px;color:#555}ul.multi-checkbox{margin:0 5px 0 0;padding:.5em .9em;height:10em;overflow:auto;list-style:none;border:solid 1px #ccc;width:90%}ul.multi-checkbox li{padding:0;margin:0}div.bp-option{background:#fafafa;border:1px solid #dfdfdf;margin:10px 0;padding:10px 5px}div.bp-option:hover{border:1px solid #999}.bp-option-icon{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 2px;top:5px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#888}div.bp-option .grabber:before{content:"\f329"}th a{background:#fff;padding:2px 5px;top:-2px}textarea#description,textarea#group_description{border:1px solid #ddd;width:100%}#bp-xprofile-add-field .titlewrap,#bp-xprofile-add-field-group .titlewrap{margin-bottom:20px}#bp-xprofile-add-field #post-body-content{margin-bottom:0}p.member-type-none-notice,span.member-type-none-notice{color:red}.hide{display:none;visibility:hidden}.form-table.bp-date-options{margin:0 8px}.form-table.bp-date-options th{width:150px}.form-table td .date-format-section select{margin-top:-2px}.date-format-label{display:inline-block;width:150px}.date-format-custom-value,.date-range-numeric{width:56px}.bp-date-range-type-label{float:left;font-style:italic;width:auto}.bp-date-range-type-values{margin-right:25px;padding-left:100px}#bp-xprofile-add-field select#fieldtype{max-width:100%;word-wrap:break-word;word-break:break-all}@media screen and (max-width:782px){.bp-date-formats .bp-date-format-option:first-of-type{margin-top:1em}.bp-range-types .bp-date-format-option{margin-bottom:1em;margin-top:1em}.form-table td input.date-format-custom-value,.form-table td input.date-range-numeric{display:inline-block;margin-right:10px;width:56px}.form-table td .bp-date-range-type-values select{display:inline-block;width:auto}.bp-date-range-type-label{float:none;width:auto}.bp-date-range-type-values{padding-left:0;margin-left:35px}}@media screen and (max-width:480px){.form-table .bp-range-types label{clear:both;display:block}} \ No newline at end of file +#profile-field-form{margin-top:12px}#tabs{position:relative}p.nofields{margin:20px 0 0}ul#field-group-tabs{float:left;padding:0 0 0 15px;margin:0;display:none}ul#field-group-tabs li{float:left;margin-right:8px;margin-bottom:-1px}ul#field-group-tabs li.ui-state-hover a.ui-tab{color:#d54e21}ul#field-group-tabs li.ui-state-acceptable:not(.ui-state-active) a.ui-tab{animation:tab-throb 2s infinite}ul#field-group-tabs li.drop-candidate.ui-state-acceptable:not(.ui-state-active) a.ui-tab{-o-box-shadow:0 0 10px #0f0;box-shadow:0 0 10px #0f0;animation:none;color:#000}ul#field-group-tabs li a.ui-tab{font-size:14px;display:block;margin-top:3px;padding:5px 10px 6px;border:1px solid #e5e5e5;background-color:#f5f5f5;text-decoration:none;color:#000;outline:0}ul#field-group-tabs li.ui-state-active a.ui-tab{background-color:#fff;margin-top:0;padding:7px 10px;border-bottom:1px solid transparent;color:#000}.tab-toolbar{clear:left;background:#fff;border-width:1px;border-color:#e5e5e5;border-style:solid;box-shadow:0 1px 1px rgba(0,0,0,.04);padding:10px;margin-bottom:10px}.bp-option a.delete,.field-wrapper a.deletion,.tab-toolbar a.deletion{color:#a00;border-bottom:1px solid #a00;text-decoration:none;padding:0}div.delete-button{float:right;line-height:28px}div.field-group{clear:left}.field-group{cursor:default;border:1px solid #e5e5e5;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04);margin-top:10px;padding:0 20px 20px}.field-group .xprofile-field{position:relative}.field-group fieldset{position:relative;border:1px solid #ddd;margin:20px 0 0;cursor:move;background:#fafafa;padding:10px 0 0}.field-group fieldset legend{position:absolute;top:10px;left:10px;padding:0}fieldset.checkbox div label,fieldset.radio div div label{margin-right:20px}fieldset.clear-value{margin-left:10px}fieldset div.field-wrapper{padding:25px 10px 10px}.field-group div.actions{float:none;border-top:1px solid #ddd;margin:10px 0 0;padding-top:10px}.field-group div.actions a,.field-group div.actions button,.field-group div.actions input{float:none}.field-group fieldset:hover{border-color:#999}.field-group fieldset:hover div.actions{display:block}#field-group-tabs .ui-sortable-placeholder,.bp-options-box .ui-sortable-placeholder,.field-group fieldset.ui-sortable-placeholder{border:1px dashed #999;background-color:#fff;visibility:visible!important}#field-group-tabs .ui-sortable-placeholder{background:0 0;border-bottom:none;margin:-1px 6px -1px 0}ul.forTab{list-style:none;padding:0;margin:0 0 0 1em}ul.forTab li{margin:0 0 1em}ul.forTab li label{display:block}ul.forTab li input{font-size:1.4em}p.success{background:#0f0}p.err{border-top:2px solid red;border-bottom:2px solid red;color:red;padding:5px 0;width:40%}span.desc,span.signup-description{display:block;font-size:11px;color:#555}ul.multi-checkbox{margin:0 5px 0 0;padding:.5em .9em;height:10em;overflow:auto;list-style:none;border:solid 1px #ccc;width:90%}ul.multi-checkbox li{padding:0;margin:0}div.bp-option{background:#fafafa;border:1px solid #dfdfdf;margin:10px 0;padding:10px 5px}div.bp-option:hover{border:1px solid #999}.bp-option-icon{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 2px;top:5px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#888}div.bp-option .grabber:before{content:"\f329"}th a{background:#fff;padding:2px 5px;top:-2px}textarea#description,textarea#group_description{border:1px solid #ddd;width:100%}#bp-xprofile-add-field .titlewrap,#bp-xprofile-add-field-group .titlewrap{margin-bottom:20px}#bp-xprofile-add-field #post-body-content{margin-bottom:0}p.member-type-none-notice,span.member-type-none-notice{color:red}.hide{display:none;visibility:hidden}.form-table.bp-date-options{margin:0 8px}.form-table.bp-date-options th{width:150px}.form-table td .date-format-section select{margin-top:-2px}.date-format-label{display:inline-block;width:150px}.date-format-custom-value,.date-range-numeric{width:56px}.bp-date-range-type-label{float:left;font-style:italic;width:auto}.bp-date-range-type-values{margin-right:25px;padding-left:100px}#bp-xprofile-add-field select#fieldtype{max-width:100%;word-wrap:break-word;word-break:break-all}ul.bp-xprofile-delete-group-list{list-style-type:disc;margin:4px 26px}@media screen and (max-width:782px){.bp-date-formats .bp-date-format-option:first-of-type{margin-top:1em}.bp-range-types .bp-date-format-option{margin-bottom:1em;margin-top:1em}.form-table td input.date-format-custom-value,.form-table td input.date-range-numeric{display:inline-block;margin-right:10px;width:56px}.form-table td .bp-date-range-type-values select{display:inline-block;width:auto}.bp-date-range-type-label{float:none;width:auto}.bp-date-range-type-values{padding-left:0;margin-left:35px}}@media screen and (max-width:480px){.form-table .bp-range-types label{clear:both;display:block}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-activity.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-activity.php index 55fea946929b9745ea870188a8cadeb1bcb0410e..1adfae605c60850e4146a5d9fcae6d71f8e02282 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-activity.php +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-activity.php @@ -237,7 +237,7 @@ function bp_xprofile_new_avatar_activity( $user_id = 0 ) { 'type' => 'new_avatar' ) ); } -add_action( 'xprofile_avatar_uploaded', 'bp_xprofile_new_avatar_activity' ); +add_action( 'bp_members_avatar_uploaded', 'bp_xprofile_new_avatar_activity' ); /** * Add an activity item when a user has updated his profile. diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-admin.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-admin.php index b1311f55df62367303d09cb992222d124d6e8328..a817939492035fa11e103934e6934f1d9bb58dc9 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-admin.php +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-admin.php @@ -65,10 +65,13 @@ function xprofile_admin( $message = '', $type = 'error' ) { 'add_group', 'edit_group', 'delete_group', + 'do_delete_group', 'add_field', 'edit_field', 'delete_field', - 'delete_option' + 'do_delete_field', + 'delete_option', + 'do_delete_option' ); // Is an allowed mode. @@ -86,7 +89,7 @@ function xprofile_admin( $message = '', $type = 'error' ) { xprofile_admin_manage_field( $group_id, $field_id ); // Delete group. - } elseif ( 'delete_group' === $mode ) { + } elseif ( in_array( $mode, array( 'delete_group', 'do_delete_group' ), true ) ) { xprofile_admin_delete_group( $group_id ); // Edit group. @@ -95,11 +98,11 @@ function xprofile_admin( $message = '', $type = 'error' ) { } // Delete field. - } elseif ( ( false !== $field_id ) && ( 'delete_field' === $mode ) ) { - xprofile_admin_delete_field( $field_id, 'field'); + } elseif ( ( false !== $field_id ) && ( in_array( $mode, array( 'delete_field', 'do_delete_field' ), true ) ) ) { + xprofile_admin_delete_field( $field_id, 'field' ); // Delete option. - } elseif ( ! empty( $option_id ) && 'delete_option' === $mode ) { + } elseif ( ! empty( $option_id ) && in_array( $mode, array( 'delete_option', 'do_delete_option' ), true ) ) { xprofile_admin_delete_field( $option_id, 'option' ); // Add group. @@ -142,22 +145,11 @@ function xprofile_admin_screen( $message = '', $type = 'error' ) { ) ); ?> <div class="wrap"> - <?php if ( version_compare( $GLOBALS['wp_version'], '4.8', '>=' ) ) : ?> + <h1 class="wp-heading-inline"><?php _ex( 'Profile Fields', 'Settings page header', 'buddypress'); ?></h1> - <h1 class="wp-heading-inline"><?php _ex( 'Profile Fields', 'Settings page header', 'buddypress'); ?></h1> + <a id="add_group" class="page-title-action" href="<?php echo esc_url( $add_group_url ); ?>"><?php _e( 'Add New Field Group', 'buddypress' ); ?></a> - <a id="add_group" class="page-title-action" href="<?php echo esc_url( $add_group_url ); ?>"><?php _e( 'Add New Field Group', 'buddypress' ); ?></a> - - <hr class="wp-header-end"> - - <?php else : ?> - - <h1> - <?php _ex( 'Profile Fields', 'Settings page header', 'buddypress'); ?> - <a id="add_group" class="add-new-h2" href="<?php echo esc_url( $add_group_url ); ?>"><?php _e( 'Add New Field Group', 'buddypress' ); ?></a> - </h1> - - <?php endif; ?> + <hr class="wp-header-end"> <form action="" id="profile-field-form" method="post"> @@ -169,7 +161,7 @@ function xprofile_admin_screen( $message = '', $type = 'error' ) { if ( ! empty( $message ) ) : $type = ( $type == 'error' ) ? 'error' : 'updated'; ?> - <div id="message" class="<?php echo $type; ?> fade"> + <div id="message" class="<?php echo $type; ?> fade notice is-dismissible"> <p><?php echo esc_html( $message ); ?></p> </div> @@ -279,7 +271,7 @@ function xprofile_admin_screen( $message = '', $type = 'error' ) { foreach ( $group->fields as $field ) { // Load the field. - $field = xprofile_get_field( $field->id ); + $field = xprofile_get_field( $field->id, null, false ); $class = ''; if ( empty( $field->can_delete ) ) { @@ -312,7 +304,7 @@ function xprofile_admin_screen( $message = '', $type = 'error' ) { <?php endforeach; else : ?> - <div id="message" class="error"><p><?php _ex( 'You have no groups.', 'You have no profile fields groups.', 'buddypress' ); ?></p></div> + <div id="message" class="error notice is-dismissible"><p><?php _ex( 'You have no groups.', 'You have no profile fields groups.', 'buddypress' ); ?></p></div> <p><a href="<?php echo esc_url( $add_group_url ); ?>"><?php _ex( 'Add New Group', 'Add New Profile Fields Group', 'buddypress' ); ?></a></p> <?php endif; ?> @@ -403,26 +395,71 @@ function xprofile_admin_delete_group( $group_id ) { check_admin_referer( 'bp_xprofile_delete_group' ); - $group = new BP_XProfile_Group( $group_id ); + $mode = ! empty( $_GET['mode'] ) + ? sanitize_key( $_GET['mode'] ) + : false; - if ( !$group->delete() ) { - $message = _x( 'There was an error deleting the group. Please try again.', 'Error when deleting profile fields group', 'buddypress' ); - $type = 'error'; + // Display the group delete confirmation screen. + if ( 'delete_group' === $mode ) { + xprofile_admin_delete_group_screen( $group_id ); + + // Handle the deletion of group. } else { - $message = _x( 'The group was deleted successfully.', 'Profile fields group was deleted successfully', 'buddypress' ); - $type = 'success'; - - /** - * Fires at the end of group deletion process, if successful. - * - * @since 1.0.0 - * - * @param BP_XProfile_Group $group Current BP_XProfile_Group object. - */ - do_action( 'xprofile_groups_deleted_group', $group ); + $group = new BP_XProfile_Group( $group_id ); + + if ( ! $group->delete() ) { + $message = _x( 'There was an error deleting the group. Please try again.', 'Error when deleting profile fields group', 'buddypress' ); + $type = 'error'; + } else { + $message = _x( 'The group was deleted successfully.', 'Profile fields group was deleted successfully', 'buddypress' ); + $type = 'success'; + + /** + * Fires at the end of group deletion process, if successful. + * + * @since 1.0.0 + * + * @param BP_XProfile_Group $group Current BP_XProfile_Group object. + */ + do_action( 'xprofile_groups_deleted_group', $group ); + } + + xprofile_admin_screen( $message, $type ); + } +} + +/** + * Display the delete confirmation screen of profile data groups. + * + * @since 7.0.0 + */ +function xprofile_admin_delete_group_screen( $group_id ) { + + if ( ! bp_current_user_can( 'bp_moderate' ) ) { + die( '-1' ); } - xprofile_admin_screen( $message, $type ); + $group = new BP_XProfile_Group( $group_id ); + + $base_url = remove_query_arg( array( 'mode', 'group_id', '_wpnonce' ), $_SERVER['REQUEST_URI'] ); ?> + + <div class="wrap"> + <h1 class="wp-heading-inline"><?php esc_html_e( 'Delete Field Group', 'buddypress' ) ?></h1> + <hr class="wp-header-end"> + + <p><?php esc_html_e( 'You are about to delete the following field group:', 'buddypress' ) ?></p> + + <ul class="bp-xprofile-delete-group-list"> + <li><?php echo esc_html( $group->name ); ?></li> + </ul> + + <p><strong><?php esc_html_e( 'This action cannot be undone.', 'buddypress' ) ?></strong></p> + + <a class="button-primary" href="<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'mode' => 'do_delete_group', 'group_id' => $group_id ), $base_url ), 'bp_xprofile_delete_group' ) ); ?>"><?php esc_html_e( 'Delete Permanently', 'buddypress' ) ?></a> + <a class="button" href="<?php echo esc_attr( $base_url ); ?>"><?php esc_html_e( 'Cancel', 'buddypress' ) ?></a> + </div> + + <?php } /** @@ -441,7 +478,7 @@ function xprofile_admin_manage_field( $group_id, $field_id = null ) { if ( is_null( $field_id ) ) { $field = new BP_XProfile_Field(); } else { - $field = xprofile_get_field( $field_id ); + $field = xprofile_get_field( $field_id, null, false ); } $field->group_id = $group_id; @@ -566,33 +603,95 @@ function xprofile_admin_delete_field( $field_id, $field_type = 'field', $delete_ check_admin_referer( 'bp_xprofile_delete_field-' . $field_id, 'bp_xprofile_delete_field' ); + $mode = ! empty( $_GET['mode'] ) ? sanitize_key( $_GET['mode'] ) : false; + // Switch type to 'option' if type is not 'field'. // @todo trust this param. $field_type = ( 'field' == $field_type ) ? __( 'field', 'buddypress' ) : __( 'option', 'buddypress' ); - $field = xprofile_get_field( $field_id ); - if ( !$field->delete( (bool) $delete_data ) ) { - /* translators: %s: the field type */ - $message = sprintf( __( 'There was an error deleting the %s. Please try again.', 'buddypress' ), $field_type ); - $type = 'error'; + // Display the field/option delete confirmation screen. + if ( in_array( $mode, array( 'delete_field', 'delete_option' ) ) ) { + xprofile_admin_delete_field_screen( $field_id, $field_type ); + + // Handle the deletion of field } else { - /* translators: %s: the field type */ - $message = sprintf( __( 'The %s was deleted successfully!', 'buddypress' ), $field_type ); - $type = 'success'; - - /** - * Fires at the end of the field deletion process, if successful. - * - * @since 1.0.0 - * - * @param BP_XProfile_Field $field Current BP_XProfile_Field object. - */ - do_action( 'xprofile_fields_deleted_field', $field ); + $field = xprofile_get_field( $field_id, null, false ); + + if ( !$field->delete( (bool) $delete_data ) ) { + /* translators: %s: the field type */ + $message = sprintf( __( 'There was an error deleting the %s. Please try again.', 'buddypress' ), $field_type ); + $type = 'error'; + } else { + /* translators: %s: the field type */ + $message = sprintf( __( 'The %s was deleted successfully!', 'buddypress' ), $field_type ); + $type = 'success'; + + /** + * Fires at the end of the field deletion process, if successful. + * + * @since 1.0.0 + * + * @param BP_XProfile_Field $field Current BP_XProfile_Field object. + */ + do_action( 'xprofile_fields_deleted_field', $field ); + } + + xprofile_admin_screen( $message, $type ); } +} + +/** + * Display the delete confirmation screen of xprofile field/option. + * + * @since 7.0.0 + */ +function xprofile_admin_delete_field_screen( $field_id, $field_type ) { + if ( ! bp_current_user_can( 'bp_moderate' ) ) { + die( '-1' ); + } + + $field = xprofile_get_field( $field_id, null, false ); - xprofile_admin_screen( $message, $type ); + $base_url = remove_query_arg( array( 'mode', 'field_id', 'bp_xprofile_delete_field' ), $_SERVER['REQUEST_URI'] ); ?> + + <div class="wrap"> + <h1 class="wp-heading-inline"> + <?php + printf( + /* translators: %s is the field type name. */ + esc_html__( 'Delete %s', 'buddypress' ), + $field_type + ); + ?> + </h1> + + <hr class="wp-header-end"> + + <p> + <?php + printf( + /* translators: %s is the field type name. */ + esc_html__( 'You are about to delete the following %s:', 'buddypress' ), + $field_type + ); + ?> + </p> + + <ul class="bp-xprofile-delete-group-list"> + <li><?php echo esc_html( $field->name ); ?></li> + </ul> + + <p><strong><?php esc_html_e( 'This action cannot be undone.', 'buddypress' ); ?></strong></p> + + <a class="button-primary" href="<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'mode' => 'do_delete_field', 'field_id' => $field_id ), $base_url ), 'bp_xprofile_delete_field-' . $field_id, 'bp_xprofile_delete_field' ) ); ?>"><?php esc_html_e( 'Delete Permanently', 'buddypress' ); ?></a> + <a class="button" href="<?php echo esc_attr( $base_url ); ?>"><?php esc_html_e( 'Cancel', 'buddypress' ); ?></a> + </div> + + <?php } + + /** * Handles the ajax reordering of fields within a group. * diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-caps.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-caps.php index e93c748998b8f35a9d5b9aed9904faecd7b53269..b4566c636875a2c7563bc525da220616dd2a5ded 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-caps.php +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-caps.php @@ -85,7 +85,7 @@ add_filter( 'bp_map_meta_caps', 'bp_xprofile_map_meta_caps', 10, 4 ); function bp_xprofile_grant_bp_xprofile_change_field_visibility_for_logged_out_users( $user_can, $user_id, $capability ) { if ( 'bp_xprofile_change_field_visibility' === $capability && 0 === $user_id ) { $field_id = bp_get_the_profile_field_id(); - if ( $field_id && $field = xprofile_get_field( $field_id ) ) { + if ( $field_id && $field = xprofile_get_field( $field_id, null, false ) ) { $user_can = 'allowed' === $field->allow_custom_visibility; } } diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-filters.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-filters.php index d88b19b5dffe6b0246fa3a3bf4b36ceeeacd1bf0..66e2780c82f8c5fa52c84f3268afb5cb443fe5a1 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-filters.php +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-filters.php @@ -141,10 +141,16 @@ function xprofile_filter_kses( $content, $data_obj = null, $field_id = null ) { 'ul' => array(), 'ol' => array(), 'li' => array(), - 'span' => array( 'style' => 1 ), - 'p' => array( 'style' => 1 ), + 'span' => array(), + 'p' => array(), ); + // Allow style attributes on certain elements for capable users + if ( bp_current_user_can( 'unfiltered_html' ) ) { + $richtext_tags['span'] = array( 'style' => 1 ); + $richtext_tags['p'] = array( 'style' => 1 ); + } + $xprofile_allowedtags = array_merge( $allowedtags, $richtext_tags ); } @@ -164,7 +170,7 @@ function xprofile_filter_kses( $content, $data_obj = null, $field_id = null ) { } /** - * Filters profile field values for whitelisted HTML. + * Filters profile field values for allowed HTML. * * @since 5.0.0 * @@ -177,7 +183,7 @@ function xprofile_sanitize_data_value_before_display( $value, $type, $field_id ) } /** - * Filters profile field values for whitelisted HTML, when coming from xprofile_get_field_data(). + * Filters profile field values for allowed HTML, when coming from xprofile_get_field_data(). * * @since 5.0.0 * @@ -310,7 +316,7 @@ function xprofile_filter_format_field_value_by_type( $field_value, $field_type = * @return string */ function xprofile_filter_format_field_value_by_field_id( $field_value, $field_id ) { - $field = xprofile_get_field( $field_id ); + $field = xprofile_get_field( $field_id, null, false ); return xprofile_filter_format_field_value_by_type( $field_value, $field->type, $field_id ); } @@ -336,7 +342,7 @@ function xprofile_filter_pre_validate_value_by_field_type( $value, $field, $fiel * Escape field value for display. * * Most field values are simply run through esc_html(). Those that support rich text (by default, `textarea` only) - * are sanitized using kses, which allows a whitelist of HTML tags. + * are sanitized using kses, which allows HTML tags from a controlled list. * * @since 2.4.0 * diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-functions.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-functions.php index 3698f5fa39d3bc30cca5a7a0bbbb332a64f0e791..060b2ff61dba9629a7402052d9d18bc2a99d7e84 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-functions.php +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-functions.php @@ -207,7 +207,7 @@ function bp_xprofile_create_field_type( $type ) { * @type int $field_id Optional. Pass the ID of an existing field to edit that field. * @type int $field_group_id ID of the associated field group. * @type int $parent_id Optional. ID of the parent field. - * @type string $type Field type. Checked against a field_types whitelist. + * @type string $type Field type. Checked against a list of allowed field_types. * @type string $name Name of the new field. * @type string $description Optional. Descriptive text for the field. * @type bool $is_required Optional. Whether users must provide a value for the field. Default: false. @@ -254,7 +254,7 @@ function xprofile_insert_field( $args = '' ) { // Instantiate a new field object. if ( ! empty( $r['field_id'] ) ) { - $field = xprofile_get_field( $r['field_id'] ); + $field = xprofile_get_field( $r['field_id'], null, false ); } else { $field = new BP_XProfile_Field; } @@ -452,9 +452,9 @@ function xprofile_set_field_data( $field, $user_id, $value, $is_required = false return true; } - // For certain fields, only certain parameters are acceptable, so add them to the whitelist. + // For certain fields, only certain parameters are acceptable, so add them to the list of allowed values. if ( $field_type_obj->supports_options ) { - $field_type_obj->set_whitelist_values( wp_list_pluck( $field->get_children(), 'name' ) ); + $field_type_obj->set_allowed_values( wp_list_pluck( $field->get_children(), 'name' ) ); } // Check the value is in an accepted format for this form field. @@ -487,7 +487,7 @@ function xprofile_set_field_visibility_level( $field_id = 0, $user_id = 0, $visi return false; } - // Check against a whitelist. + // Check against a list of registered visibility levels. $allowed_values = bp_xprofile_get_visibility_levels(); if ( !array_key_exists( $visibility_level, $allowed_values ) ) { return false; @@ -525,7 +525,7 @@ function xprofile_get_field_visibility_level( $field_id = 0, $user_id = 0 ) { $current_level = isset( $current_levels[ $field_id ] ) ? $current_levels[ $field_id ] : ''; // Use the user's stored level, unless custom visibility is disabled. - $field = xprofile_get_field( $field_id ); + $field = xprofile_get_field( $field_id, null, false ); if ( isset( $field->allow_custom_visibility ) && 'disabled' === $field->allow_custom_visibility ) { $current_level = $field->default_visibility; } @@ -1099,7 +1099,7 @@ function bp_xprofile_is_richtext_enabled_for_field( $field_id = null ) { $field_id = bp_get_the_profile_field_id(); } - $field = xprofile_get_field( $field_id ); + $field = xprofile_get_field( $field_id, null, false ); $enabled = false; if ( $field instanceof BP_XProfile_Field ) { diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-template.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-template.php index 5bfbb5d3ef412577faf978422b03edf701626b05..5ef8f9f726993bbce229a7e39b7ee4e43e34a371 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-template.php +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-template.php @@ -767,7 +767,7 @@ function bp_the_profile_field_options( $args = array() ) { * However, we have to make sure that all data originally in $field gets merged back in, after reinstantiation. */ if ( ! method_exists( $field, 'get_children' ) ) { - $field_obj = xprofile_get_field( $field->id ); + $field_obj = xprofile_get_field( $field->id, null, false ); foreach ( $field as $field_prop => $field_prop_value ) { if ( ! isset( $field_obj->{$field_prop} ) ) { diff --git a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php index 8931f63820d55ca128cefba571a1f8c2039a25c2..031bf4e8dbd80ba9a91071ca52acd7903f030a14 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php +++ b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php @@ -50,10 +50,12 @@ class BP_REST_XProfile_Data_Endpoint extends WP_REST_Controller { 'args' => array( 'field_id' => array( 'description' => __( 'The ID of the field the data is from.', 'buddypress' ), + 'required' => true, 'type' => 'integer', ), 'user_id' => array( 'description' => __( 'The ID of user the field data is from.', 'buddypress' ), + 'required' => true, 'type' => 'integer', ), ), @@ -68,15 +70,12 @@ class BP_REST_XProfile_Data_Endpoint extends WP_REST_Controller { 'permission_callback' => array( $this, 'update_item_permissions_check' ), 'args' => array( 'value' => array( - 'description' => __( 'The list of values for the field data.', 'buddypress' ), + 'description' => __( 'The value(s) for the field data.', 'buddypress' ), + 'required' => true, 'type' => 'array', 'items' => array( 'type' => 'string', ), - 'arg_options' => array( - 'validate_callback' => 'rest_validate_request_arg', - 'sanitize_callback' => 'rest_sanitize_request_arg', - ), ), ), ), @@ -130,10 +129,16 @@ class BP_REST_XProfile_Data_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_hidden_profile_field', + __( 'Sorry, the profile field value is not viewable for this user.', 'buddypress' ), + array( + 'status' => 403, + ) + ); // Check the field exists. $field = $this->get_xprofile_field_object( $request->get_param( 'field_id' ) ); @@ -146,30 +151,25 @@ class BP_REST_XProfile_Data_Endpoint extends WP_REST_Controller { 'status' => 404, ) ); - } - - // Check the requested user exists. - if ( true === $retval && ! bp_rest_get_user( $request->get_param( 'user_id' ) ) ) { - $retval = new WP_Error( - 'bp_rest_member_invalid_id', - __( 'Invalid member ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - // Check the user can view this field value. - $hidden_user_fields = bp_xprofile_get_hidden_fields_for_user( $request->get_param( 'user_id' ) ); - - if ( true === $retval && in_array( $field->id, $hidden_user_fields, true ) ) { - $retval = new WP_Error( - 'bp_rest_hidden_profile_field', - __( 'Sorry, the profile field value is not viewable for this user.', 'buddypress' ), - array( - 'status' => 403, - ) - ); + } else { + $user = bp_rest_get_user( $request->get_param( 'user_id' ) ); + + if ( ! $user instanceof WP_User ) { + $retval = new WP_Error( + 'bp_rest_member_invalid_id', + __( 'Invalid member ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } else { + // Check the user can view this field value. + $hidden_user_fields = bp_xprofile_get_hidden_fields_for_user( $user->ID ); + + if ( ! in_array( $field->id, $hidden_user_fields, true ) ) { + $retval = true; + } + } } /** @@ -177,7 +177,7 @@ class BP_REST_XProfile_Data_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_data_get_item_permissions_check', $retval, $request ); @@ -215,7 +215,9 @@ class BP_REST_XProfile_Data_Endpoint extends WP_REST_Controller { * the submitted value was not an array. */ if ( ! $field->type_obj->supports_multiple_defaults ) { - $value = implode( ' ', $value ); + $value = implode( ' ', (array) $value ); + } else { + $value = preg_split( '/[,]+/', $value ); } if ( ! xprofile_set_field_data( $field->id, $user->ID, $value ) ) { @@ -268,12 +270,32 @@ class BP_REST_XProfile_Data_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function update_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you cannot save XProfile field data.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( ! is_user_logged_in() ) { + if ( is_user_logged_in() ) { + $user = bp_rest_get_user( $request->get_param( 'user_id' ) ); + + if ( ! $user instanceof WP_User ) { + $retval = new WP_Error( + 'bp_rest_invalid_id', + __( 'Invalid member ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( $this->can_see( $user->ID ) ) { + $retval = true; + } + } else { $retval = new WP_Error( 'bp_rest_authorization_required', __( 'Sorry, you need to be logged in to save XProfile data.', 'buddypress' ), @@ -283,34 +305,12 @@ class BP_REST_XProfile_Data_Endpoint extends WP_REST_Controller { ); } - $user = bp_rest_get_user( $request->get_param( 'user_id' ) ); - - if ( true === $retval && ! $user instanceof WP_User ) { - $retval = new WP_Error( - 'bp_rest_invalid_id', - __( 'Invalid member ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } - - if ( true === $retval && ! $this->can_see( $user->ID ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you cannot save XProfile field data.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } - /** * Filter the XProfile data `update_item` permissions check. * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_data_update_item_permissions_check', $retval, $request ); @@ -344,10 +344,11 @@ class BP_REST_XProfile_Data_Endpoint extends WP_REST_Controller { // Get the field data before it's deleted. $field_data = $this->get_xprofile_field_data_object( $field->id, $user->ID ); + $previous = clone $field_data; // Set empty for the response. $field_data->value = ''; - $previous = $this->prepare_item_for_response( $field_data, $request ); + $previous = $this->prepare_item_for_response( $previous, $request ); if ( false === $field_data->delete() ) { return new WP_Error( @@ -390,7 +391,7 @@ class BP_REST_XProfile_Data_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { $retval = $this->update_item_permissions_check( $request ); @@ -400,7 +401,7 @@ class BP_REST_XProfile_Data_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_data_delete_item_permissions_check', $retval, $request ); diff --git a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php index 27dd4ae49b1ddc5d9de12456e530234eaafca24c..53cde403b5b3791a90a68595e3a494d26df96560 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php +++ b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php @@ -104,7 +104,7 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { * @return array Endpoint arguments. */ public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { - $args = WP_REST_Controller::get_endpoint_args_for_item_schema( $method ); + $args = parent::get_endpoint_args_for_item_schema( $method ); $key = 'get_item'; if ( WP_REST_Server::CREATABLE === $method || WP_REST_Server::EDITABLE === $method ) { @@ -208,7 +208,7 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return bool + * @return true|WP_Error */ public function get_items_permissions_check( $request ) { @@ -217,7 +217,7 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_field_groups_get_items_permissions_check', true, $request ); @@ -272,7 +272,7 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return bool|WP_Error + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { $retval = $this->get_items_permissions_check( $request ); @@ -282,7 +282,7 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_field_groups_get_item_permissions_check', $retval, $request ); @@ -303,7 +303,6 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { $args = array( 'name' => $request['name'], 'description' => $request['description'], - 'can_delete' => $request['can_delete'], ); /** @@ -321,7 +320,7 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { 'bp_rest_required_param_missing', __( 'Required param missing.', 'buddypress' ), array( - 'status' => 500, + 'status' => 400, ) ); } @@ -375,19 +374,19 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to view this XProfile field group.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( ! ( is_user_logged_in() && bp_current_user_can( 'bp_moderate' ) ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to view this XProfile field group.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( is_user_logged_in() && bp_current_user_can( 'bp_moderate' ) ) { + $retval = true; } /** @@ -395,7 +394,7 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_field_groups_create_item_permissions_check', $retval, $request ); @@ -429,7 +428,6 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { 'field_group_id' => $field_group->id, 'name' => is_null( $request['name'] ) ? $field_group->name : $request['name'], 'description' => is_null( $request['description'] ) ? $field_group->description : $request['description'], - 'can_delete' => is_null( $request['can_delete'] ) ? (bool) $field_group->can_delete : $request['can_delete'], ); $group_id = xprofile_insert_field_group( $args ); @@ -486,7 +484,7 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function update_item_permissions_check( $request ) { $retval = $this->create_item_permissions_check( $request ); @@ -496,7 +494,7 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_field_groups_update_item_permissions_check', $retval, $request ); @@ -567,7 +565,7 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { $retval = $this->create_item_permissions_check( $request ); @@ -577,7 +575,7 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_field_groups_delete_item_permissions_check', $retval, $request ); @@ -673,26 +671,30 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { * @return BP_XProfile_Group|string XProfile field group object. */ public function get_xprofile_field_group_object( $request ) { - $profile_group_id = is_numeric( $request ) ? $request : (int) $request['id']; - - $args = array( - 'profile_group_id' => $profile_group_id, - 'user_id' => $request['user_id'], - 'member_type' => $request['member_type'], - 'hide_empty_fields' => $request['hide_empty_fields'], - 'fetch_fields' => $request['fetch_fields'], - 'fetch_field_data' => $request['fetch_field_data'], - 'fetch_visibility_level' => $request['fetch_visibility_level'], - 'exclude_fields' => $request['exclude_fields'], - 'update_meta_cache' => $request['update_meta_cache'], - ); + if ( is_numeric( $request ) ) { + $args = array( + 'profile_group_id' => $request, + ); + } else { + $args = array( + 'profile_group_id' => (int) $request['id'], + 'user_id' => $request['user_id'], + 'member_type' => $request['member_type'], + 'hide_empty_fields' => $request['hide_empty_fields'], + 'fetch_fields' => $request['fetch_fields'], + 'fetch_field_data' => $request['fetch_field_data'], + 'fetch_visibility_level' => $request['fetch_visibility_level'], + 'exclude_fields' => $request['exclude_fields'], + 'update_meta_cache' => $request['update_meta_cache'], + ); - if ( empty( $request['member_type'] ) ) { - $args['member_type'] = null; - } + if ( empty( $request['member_type'] ) ) { + $args['member_type'] = null; + } - if ( empty( $request['exclude_fields'] ) ) { - $args['exclude_fields'] = false; + if ( empty( $request['exclude_fields'] ) ) { + $args['exclude_fields'] = false; + } } $field_group = current( bp_xprofile_get_groups( $args ) ); @@ -762,6 +764,7 @@ class BP_REST_XProfile_Field_Groups_Endpoint extends WP_REST_Controller { 'context' => array( 'view', 'edit' ), 'description' => __( 'Whether the group of profile fields can be deleted or not.', 'buddypress' ), 'type' => 'boolean', + 'readonly' => true, ), 'fields' => array( 'context' => array( 'view', 'edit' ), diff --git a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php index 63b45c58fa039f2ea20c7d317e6ad7a53e6089a2..2ec0159a3479e0c039ca8f0ae89caaa3c60f2c87 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php +++ b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php @@ -181,7 +181,7 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return bool + * @return true|WP_Error */ public function get_items_permissions_check( $request ) { @@ -190,7 +190,7 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_fields_get_items_permissions_check', true, $request ); @@ -259,7 +259,7 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return bool + * @return true|WP_Error */ public function get_item_permissions_check( $request ) { @@ -268,7 +268,7 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_fields_get_item_permissions_check', true, $request ); @@ -282,7 +282,7 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * @param integer $field_id The profile field object ID. * @param WP_REST_Request $request The request sent to the API. */ - public function set_additional_field_properties( $field_id = 0, WP_REST_Request $request ) { + public function set_additional_field_properties( $field_id, WP_REST_Request $request ) { if ( ! $field_id ) { return; } @@ -414,19 +414,19 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function create_item_permissions_check( $request ) { - $retval = true; + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to create a XProfile field.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( ! is_user_logged_in() || ! bp_current_user_can( 'bp_moderate' ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to create a XProfile field.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( is_user_logged_in() && bp_current_user_can( 'bp_moderate' ) ) { + $retval = true; } /** @@ -434,7 +434,7 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_fields_create_item_permissions_check', $retval, $request ); @@ -545,7 +545,7 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function update_item_permissions_check( $request ) { $retval = $this->delete_item_permissions_check( $request ); @@ -555,7 +555,7 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_fields_update_item_permissions_check', $retval, $request ); @@ -616,41 +616,31 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param WP_REST_Request $request Full data about the request. - * @return WP_Error|bool + * @return true|WP_Error */ public function delete_item_permissions_check( $request ) { - $retval = true; - - if ( ! is_user_logged_in() ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to delete this field.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); - } - - $field = $this->get_xprofile_field_object( $request ); + $retval = new WP_Error( + 'bp_rest_authorization_required', + __( 'Sorry, you are not allowed to delete this field.', 'buddypress' ), + array( + 'status' => rest_authorization_required_code(), + ) + ); - if ( true === $retval && empty( $field->id ) ) { - $retval = new WP_Error( - 'bp_rest_invalid_id', - __( 'Invalid field ID.', 'buddypress' ), - array( - 'status' => 404, - ) - ); - } + if ( is_user_logged_in() ) { + $field = $this->get_xprofile_field_object( $request ); - if ( true === $retval && ! bp_current_user_can( 'bp_moderate' ) ) { - $retval = new WP_Error( - 'bp_rest_authorization_required', - __( 'Sorry, you are not allowed to delete this field.', 'buddypress' ), - array( - 'status' => rest_authorization_required_code(), - ) - ); + if ( empty( $field->id ) ) { + $retval = new WP_Error( + 'bp_rest_invalid_id', + __( 'Invalid field ID.', 'buddypress' ), + array( + 'status' => 404, + ) + ); + } elseif ( bp_current_user_can( 'bp_moderate' ) ) { + $retval = true; + } } /** @@ -658,7 +648,7 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * * @since 5.0.0 * - * @param bool|WP_Error $retval Returned value. + * @param true|WP_Error $retval Returned value. * @param WP_REST_Request $request The request sent to the API. */ return apply_filters( 'bp_rest_xprofile_fields_delete_item_permissions_check', $retval, $request ); @@ -871,7 +861,7 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * @since 5.0.0 * * @param string $value The raw value of the field. - * @return array The unserialized field value. + * @return array The unserialized field value. */ public function get_profile_field_unserialized_value( $value = '' ) { if ( empty( $value ) ) { @@ -895,7 +885,7 @@ class BP_REST_XProfile_Fields_Endpoint extends WP_REST_Controller { * @return array Endpoint arguments. */ public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) { - $args = WP_REST_Controller::get_endpoint_args_for_item_schema( $method ); + $args = parent::get_endpoint_args_for_item_schema( $method ); $key = 'get_item'; if ( WP_REST_Server::CREATABLE === $method || WP_REST_Server::EDITABLE === $method ) { diff --git a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-component.php b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-component.php index 6acd98a3ce1ab082d999535e1bca8c68a744de6a..8350c9ab6970f2661a7cb7bebeafd12ecad4c954 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-component.php +++ b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-component.php @@ -162,9 +162,11 @@ class BP_XProfile_Component extends BP_Component { */ $this->field_types = apply_filters( 'xprofile_field_types', array_keys( bp_xprofile_get_field_types() ) ); - // 'option' is a special case. It is not a top-level field, so - // does not have an associated BP_XProfile_Field_Type class, - // but it must be whitelisted. + /* + * 'option' is a special case. It is not a top-level field, so + * does not have an associated BP_XProfile_Field_Type class, + * but it must be explicitly allowed. + */ $this->field_types[] = 'option'; // Register the visibility levels. See bp_xprofile_get_visibility_levels() to filter. diff --git a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field-type.php b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field-type.php index 92f7689a5b0b862229ea07e986e699ca3f7dcaaa..d509d3dc792d5ebdb1439b6a7bf1fb6c945043bb 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field-type.php +++ b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field-type.php @@ -26,12 +26,12 @@ abstract class BP_XProfile_Field_Type { protected $validation_regex = array(); /** - * Whitelisted values for field type. + * Allowed values for field type. * * @since 2.0.0 - * @var array Field type whitelisted values. + * @var array Field type allowed values. */ - protected $validation_whitelist = array(); + protected $validation_allowed_values = array(); /** * Name for field type. @@ -58,7 +58,7 @@ abstract class BP_XProfile_Field_Type { public $accepts_null_value = false; /** - * If this is set, BP will set this field type's validation whitelist from the field's options (e.g checkbox, selectbox). + * If this is set, BP will set this field type's list of allowed values from the field's options (e.g checkbox, selectbox). * * @since 2.0.0 * @var bool Does this field support options? e.g. selectbox, radio buttons, etc. @@ -153,29 +153,55 @@ abstract class BP_XProfile_Field_Type { } /** - * Add a value to this type's whitelist that profile data will be asserted against. - * - * You can call this method multiple times to set multiple formats. When validation is performed, - * it's successful as long as the new value matches any one of the registered formats. + * Add a value to this type's list of allowed values that profile data will be asserted against. * * @since 2.0.0 + * @deprecated 7.0.0 Use set_allowed_values() instead. * * @param string|array $values Whitelisted values. * @return BP_XProfile_Field_Type */ public function set_whitelist_values( $values ) { + _deprecated_function( __METHOD__, '7.0.0', 'BP_XProfile_Field_Type::set_allowed_values()' ); + $this->set_allowed_values( $values ); + } + + /** + * Add a value to this type's list of allowed values that profile data will be asserted against. + * + * You can call this method multiple times to set multiple formats. When validation is performed, + * it's successful as long as the new value matches any one of the registered formats. + * + * @since 7.0.0 + * + * @param string|array $values Allowed values. + * @return BP_XProfile_Field_Type + */ + public function set_allowed_values( $values ) { foreach ( (array) $values as $value ) { /** - * Filters values for field type's whitelist that profile data will be asserted against. + * Filters values for field type's list of allowed values that profile data will be asserted against. * * @since 2.0.0 + * @deprecated 7.0.0 Use 'bp_xprofile_field_type_set_allowed_values' instead. + * + * @param string $value Field value. + * @param array $values Original array of values. + * @param BP_XProfile_Field_Type $this Current instance of the BP_XProfile_Field_Type class. + */ + $this->validation_allowed_values[] = apply_filters_deprecated( 'bp_xprofile_field_type_set_whitelist_values', array( $value, $values, $this ), '7.0.0', 'bp_xprofile_field_type_set_allowed_values' ); + + /** + * Filters values for field type's list of allowed values that profile data will be asserted against. + * + * @since 7.0.0 * * @param string $value Field value. * @param array $values Original array of values. * @param BP_XProfile_Field_Type $this Current instance of the BP_XProfile_Field_Type class. */ - $this->validation_whitelist[] = apply_filters( 'bp_xprofile_field_type_set_whitelist_values', $value, $values, $this ); + $this->validation_allowed_values[] = apply_filters( 'bp_xprofile_field_type_set_allowed_values', $value, $values, $this ); } return $this; @@ -214,10 +240,10 @@ abstract class BP_XProfile_Field_Type { $validated = true; } - // If there's a whitelist set, make sure that each value is a whitelisted value. - if ( ( true === $validated ) && ! empty( $values ) && ! empty( $this->validation_whitelist ) ) { + // If there's a list of allowed values, make sure that each value is on that list. + if ( ( true === $validated ) && ! empty( $values ) && ! empty( $this->validation_allowed_values ) ) { foreach ( (array) $values as $value ) { - if ( ! in_array( $value, $this->validation_whitelist, true ) ) { + if ( ! in_array( $value, $this->validation_allowed_values, true ) ) { $validated = false; break; } diff --git a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field.php b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field.php index 1ee34cbc7a0c20773ce79fe2887cbbb7f55de64e..cfe021c437cd101564dc7fbef91043c3b5f0ccdd 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field.php +++ b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field.php @@ -1226,11 +1226,12 @@ class BP_XProfile_Field { <div class="wrap"> - <h1><?php echo esc_html( $title ); ?></h1> + <h1 class="wp-heading-inline"><?php echo esc_html( $title ); ?></h1> + <hr class="wp-header-end"> <?php if ( !empty( $message ) ) : ?> - <div id="message" class="error fade"> + <div id="message" class="error fade notice is-dismissible"> <p><?php echo esc_html( $message ); ?></p> </div> @@ -1331,6 +1332,15 @@ class BP_XProfile_Field { 'page' => 'bp-profile-setup' ), $users_url ); + + // Delete. + if ( $this->can_delete ) { + $delete_url = wp_nonce_url( add_query_arg( array( + 'page' => 'bp-profile-setup', + 'mode' => 'delete_field', + 'field_id' => (int) $this->id + ), $users_url ), 'bp_xprofile_delete_field-' . $this->id, 'bp_xprofile_delete_field' ); + } /** * Fires before XProfile Field submit metabox. * @@ -1368,7 +1378,11 @@ class BP_XProfile_Field { <?php endif; ?> <div id="delete-action"> - <a href="<?php echo esc_url( $cancel_url ); ?>" class="deletion"><?php esc_html_e( 'Cancel', 'buddypress' ); ?></a> + <?php if ( ! empty( $this->id ) && isset( $delete_url ) ) : ?> + <a href="<?php echo esc_url( $delete_url ); ?>" class="submitdelete deletion"><?php esc_html_e( 'Delete', 'buddypress' ); ?></a> + <?php endif; ?> + + <div><a href="<?php echo esc_url( $cancel_url ); ?>" class="deletion"><?php esc_html_e( 'Cancel', 'buddypress' ); ?></a></div> </div> <?php wp_nonce_field( 'xprofile_delete_option' ); ?> diff --git a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-group.php b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-group.php index acb35f0677f5410135e4718121e71c47f4f36a6c..60bd589cd885fd07782b982376523d11e2dbed2e 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-group.php +++ b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-group.php @@ -831,15 +831,25 @@ class BP_XProfile_Group { 'mode' => 'edit_group', 'group_id' => (int) $this->id ), $users_url ); + + if ( $this->can_delete ) { + // Delete Group URL. + $delete_url = wp_nonce_url( add_query_arg( array( + 'page' => 'bp-profile-setup', + 'mode' => 'delete_group', + 'group_id' => (int) $this->id + ), $users_url ), 'bp_xprofile_delete_group' ); + } } ?> <div class="wrap"> - <h1><?php echo esc_html( $title ); ?></h1> + <h1 class="wp-heading-inline"><?php echo esc_html( $title ); ?></h1> + <hr class="wp-header-end"> <?php if ( ! empty( $message ) ) : ?> - <div id="message" class="error fade"> + <div id="message" class="error fade notice is-dismissible"> <p><?php echo esc_html( $message ); ?></p> </div> @@ -893,7 +903,7 @@ class BP_XProfile_Group { do_action( 'xprofile_group_before_submitbox', $this ); ?> <div id="submitdiv" class="postbox"> - <h2><?php _e( 'Submit', 'buddypress' ); ?></h2> + <h2><?php esc_html_e( 'Submit', 'buddypress' ); ?></h2> <div class="inside"> <div id="submitcomment" class="submitbox"> <div id="major-publishing-actions"> @@ -917,7 +927,11 @@ class BP_XProfile_Group { <input type="submit" name="save_group" value="<?php echo esc_attr( $button ); ?>" class="button-primary"/> </div> <div id="delete-action"> - <a href="<?php echo esc_url( $cancel_url ); ?>" class="deletion"><?php _e( 'Cancel', 'buddypress' ); ?></a> + <?php if ( ! empty( $this->id ) && isset( $delete_url ) ) : ?> + <a href="<?php echo esc_url( $delete_url ); ?>" class="submitdelete deletion"><?php esc_html_e( 'Delete Group', 'buddypress' ); ?></a> + <?php endif; ?> + + <div><a href="<?php echo esc_url( $cancel_url ); ?>" class="deletion"><?php esc_html_e( 'Cancel', 'buddypress' ); ?></a></div> </div> <div class="clear"></div> </div> diff --git a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-profiledata.php b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-profiledata.php index 9db8bfc3ad9af45c463b22815eddb331d0e87e4f..9553b2e300f574b33a4d1a69d80b5af76b56d37b 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-profiledata.php +++ b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-profiledata.php @@ -681,7 +681,17 @@ class BP_XProfile_ProfileData { $bp = buddypress(); - return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->profile->table_name_data} WHERE user_id = %d", $user_id ) ); + $field_ids = $wpdb->get_col( $wpdb->prepare( "SELECT field_id FROM {$bp->profile->table_name_data} WHERE user_id = %d", $user_id ) ); + + if ( ! $field_ids ) { + return false; + } + + foreach ( $field_ids as $field_id ) { + xprofile_delete_field_data( $field_id, $user_id ); + } + + return count( $field_ids ); } /** diff --git a/wp-content/plugins/buddypress/buddypress.pot b/wp-content/plugins/buddypress/buddypress.pot index 11d1e4e0489a83cb0dc159e0023417aeac66971a..883ec642909588ffd559eb4d3c23de2489fc1bfc 100644 --- a/wp-content/plugins/buddypress/buddypress.pot +++ b/wp-content/plugins/buddypress/buddypress.pot @@ -1,4 +1,4 @@ -# Copyright (C) 2020 The BuddyPress Community +# Copyright (C) 2021 The BuddyPress Community # This file is distributed under the same license as the BuddyPress plugin. msgid "" msgstr "" @@ -9,19 +9,18 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2020-05-14T21:50:09+00:00\n" +"POT-Creation-Date: 2021-04-14T04:36:34+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.4.0\n" "X-Domain: buddypress\n" #. Plugin Name of the plugin -#: bp-core/admin/bp-core-admin-functions.php:758 -#: bp-core/admin/bp-core-admin-functions.php:1229 -#: bp-core/admin/bp-core-admin-tools.php:620 -#: bp-core/classes/class-bp-admin.php:210 -#: bp-core/classes/class-bp-admin.php:211 -#: bp-core/classes/class-bp-admin.php:231 -#: bp-core/classes/class-bp-admin.php:295 +#: bp-core/admin/bp-core-admin-functions.php:1301 +#: bp-core/admin/bp-core-admin-tools.php:691 +#: bp-core/classes/class-bp-admin.php:213 +#: bp-core/classes/class-bp-admin.php:214 +#: bp-core/classes/class-bp-admin.php:234 +#: bp-core/classes/class-bp-admin.php:298 msgid "BuddyPress" msgstr "" @@ -168,23 +167,23 @@ msgid "Activity" msgstr "" #: bp-activity/bp-activity-admin.php:88 -msgid "ERROR: Please type a reply." +msgid "Error: Please type a reply." msgstr "" #: bp-activity/bp-activity-admin.php:93 -msgid "ERROR: The item you are trying to reply to cannot be found, or it has been deleted." +msgid "Error: The item you are trying to reply to cannot be found, or it has been deleted." msgstr "" #: bp-activity/bp-activity-admin.php:223 #: bp-activity/bp-activity-admin.php:277 -#: bp-core/admin/bp-core-admin-functions.php:485 -#: bp-core/admin/bp-core-admin-functions.php:504 -#: bp-core/admin/bp-core-admin-functions.php:524 -#: bp-core/admin/bp-core-admin-functions.php:544 -#: bp-groups/bp-groups-admin.php:115 -#: bp-groups/bp-groups-admin.php:168 +#: bp-core/admin/bp-core-admin-functions.php:486 +#: bp-core/admin/bp-core-admin-functions.php:505 +#: bp-core/admin/bp-core-admin-functions.php:525 +#: bp-core/admin/bp-core-admin-functions.php:545 +#: bp-groups/bp-groups-admin.php:175 +#: bp-groups/bp-groups-admin.php:228 #: bp-members/classes/class-bp-members-admin.php:791 -#: bp-members/classes/class-bp-members-admin.php:1645 +#: bp-members/classes/class-bp-members-admin.php:1633 msgid "Overview" msgstr "" @@ -222,14 +221,14 @@ msgstr "" #: bp-activity/bp-activity-admin.php:242 #: bp-activity/bp-activity-admin.php:294 -#: bp-core/admin/bp-core-admin-functions.php:492 -#: bp-core/admin/bp-core-admin-functions.php:511 -#: bp-core/admin/bp-core-admin-functions.php:531 -#: bp-core/admin/bp-core-admin-functions.php:551 -#: bp-groups/bp-groups-admin.php:123 -#: bp-groups/bp-groups-admin.php:184 +#: bp-core/admin/bp-core-admin-functions.php:493 +#: bp-core/admin/bp-core-admin-functions.php:512 +#: bp-core/admin/bp-core-admin-functions.php:532 +#: bp-core/admin/bp-core-admin-functions.php:552 +#: bp-groups/bp-groups-admin.php:183 +#: bp-groups/bp-groups-admin.php:244 #: bp-members/classes/class-bp-members-admin.php:800 -#: bp-members/classes/class-bp-members-admin.php:1666 +#: bp-members/classes/class-bp-members-admin.php:1654 msgid "For more information:" msgstr "" @@ -239,13 +238,13 @@ msgstr "" #: bp-activity/bp-activity-admin.php:244 #: bp-activity/bp-activity-admin.php:295 -#: bp-core/admin/bp-core-admin-functions.php:494 -#: bp-core/admin/bp-core-admin-functions.php:513 -#: bp-core/admin/bp-core-admin-functions.php:533 -#: bp-core/admin/bp-core-admin-functions.php:553 -#: bp-groups/bp-groups-admin.php:185 +#: bp-core/admin/bp-core-admin-functions.php:495 +#: bp-core/admin/bp-core-admin-functions.php:514 +#: bp-core/admin/bp-core-admin-functions.php:534 +#: bp-core/admin/bp-core-admin-functions.php:554 +#: bp-groups/bp-groups-admin.php:245 #: bp-members/classes/class-bp-members-admin.php:802 -#: bp-members/classes/class-bp-members-admin.php:1667 +#: bp-members/classes/class-bp-members-admin.php:1655 msgid "<a href=\"https://buddypress.org/support/\">Support Forums</a>" msgstr "" @@ -304,202 +303,240 @@ msgstr "" msgid "Activity list navigation" msgstr "" +#: bp-activity/bp-activity-admin.php:672 +msgid "Delete Activities" +msgstr "" + +#: bp-activity/bp-activity-admin.php:675 +msgid "You are about to delete the following activities:" +msgstr "" + +#. translators: %s: the name of the activity type +#: bp-activity/bp-activity-admin.php:687 +#: bp-activity/classes/class-bp-activity-list-table.php:608 +msgid "Unregistered action - %s" +msgstr "" + +#. translators: 1: activity type. 2: activity author. 3: activity date and time. +#: bp-activity/bp-activity-admin.php:692 +msgid "\"%1$s\" activity submitted by %2$s on %3$s" +msgstr "" + +#: bp-activity/bp-activity-admin.php:706 +#: bp-groups/bp-groups-admin.php:771 +#: bp-members/classes/class-bp-members-admin.php:2304 +#: bp-xprofile/bp-xprofile-admin.php:456 +#: bp-xprofile/bp-xprofile-admin.php:684 +msgid "This action cannot be undone." +msgstr "" + +#: bp-activity/bp-activity-admin.php:708 +#: bp-activity/bp-activity-admin.php:891 +#: bp-activity/classes/class-bp-activity-list-table.php:404 +#: bp-activity/classes/class-bp-activity-list-table.php:668 +#: bp-groups/bp-groups-admin.php:773 +#: bp-xprofile/bp-xprofile-admin.php:458 +#: bp-xprofile/bp-xprofile-admin.php:686 +msgid "Delete Permanently" +msgstr "" + +#: bp-activity/bp-activity-admin.php:709 +#: bp-activity/bp-activity-admin.php:1206 +#: bp-groups/bp-groups-admin.php:774 +#: bp-members/classes/class-bp-members-admin.php:2309 +#: bp-templates/bp-legacy/buddypress/activity/entry.php:135 +#: bp-templates/bp-nouveau/buddypress/members/single/settings/general.php:56 +#: bp-templates/bp-nouveau/includes/activity/functions.php:170 +#: bp-xprofile/bp-xprofile-admin.php:459 +#: bp-xprofile/bp-xprofile-admin.php:687 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1385 +#: bp-xprofile/classes/class-bp-xprofile-group.php:934 +msgid "Cancel" +msgstr "" + #. translators: %s: the activity ID -#: bp-activity/bp-activity-admin.php:666 +#: bp-activity/bp-activity-admin.php:764 msgid "Editing Activity (ID #%s)" msgstr "" -#: bp-activity/bp-activity-admin.php:679 +#: bp-activity/bp-activity-admin.php:779 msgid "Action" msgstr "" #. translators: accessibility text -#: bp-activity/bp-activity-admin.php:683 +#: bp-activity/bp-activity-admin.php:783 msgid "Edit activity action" msgstr "" -#: bp-activity/bp-activity-admin.php:690 -#: bp-messages/classes/class-bp-messages-notices-admin.php:209 +#: bp-activity/bp-activity-admin.php:790 +#: bp-messages/classes/class-bp-messages-notices-admin.php:201 msgid "Content" msgstr "" #. translators: accessibility text -#: bp-activity/bp-activity-admin.php:694 +#: bp-activity/bp-activity-admin.php:794 msgid "Edit activity content" msgstr "" -#: bp-activity/bp-activity-admin.php:723 +#: bp-activity/bp-activity-admin.php:823 msgid "No activity found with this ID." msgstr "" -#: bp-activity/bp-activity-admin.php:725 -#: bp-groups/bp-groups-admin.php:669 -#: bp-members/classes/class-bp-members-admin.php:1076 +#: bp-activity/bp-activity-admin.php:825 +#: bp-groups/bp-groups-admin.php:715 +#: bp-members/classes/class-bp-members-admin.php:1053 msgid "Go back and try again." msgstr "" -#: bp-activity/bp-activity-admin.php:751 -#: bp-activity/classes/class-bp-activity-list-table.php:747 +#: bp-activity/bp-activity-admin.php:855 +#: bp-activity/classes/class-bp-activity-list-table.php:748 msgid "View Activity" msgstr "" -#: bp-activity/bp-activity-admin.php:759 +#: bp-activity/bp-activity-admin.php:863 msgid "Approved" msgstr "" -#: bp-activity/bp-activity-admin.php:760 +#: bp-activity/bp-activity-admin.php:864 #: bp-activity/classes/class-bp-activity-list-table.php:664 #: bp-activity/classes/class-bp-akismet.php:208 #: bp-activity/classes/class-bp-akismet.php:237 -#: bp-core/admin/bp-core-admin-functions.php:1067 +#: bp-core/admin/bp-core-admin-functions.php:1139 msgid "Spam" msgstr "" #. Translators: Publish box date format, see http://php.net/date. -#: bp-activity/bp-activity-admin.php:766 -#: bp-members/classes/class-bp-members-admin.php:1142 -#: bp-members/classes/class-bp-members-admin.php:1212 +#: bp-activity/bp-activity-admin.php:870 +#: bp-members/classes/class-bp-members-admin.php:1119 +#: bp-members/classes/class-bp-members-admin.php:1189 msgid "M j, Y @ G:i" msgstr "" #. translators: %s: the date the activity was submitted on -#: bp-activity/bp-activity-admin.php:772 +#: bp-activity/bp-activity-admin.php:876 msgid "Submitted on: %s" msgstr "" -#: bp-activity/bp-activity-admin.php:774 +#: bp-activity/bp-activity-admin.php:878 #: bp-activity/classes/class-bp-activity-list-table.php:657 #: bp-groups/classes/class-bp-groups-list-table.php:605 msgid "Edit" msgstr "" -#: bp-activity/bp-activity-admin.php:787 +#: bp-activity/bp-activity-admin.php:895 #: bp-xprofile/classes/class-bp-xprofile-field.php:1218 #: bp-xprofile/classes/class-bp-xprofile-group.php:828 msgid "Update" msgstr "" #. translators: accessibility text -#: bp-activity/bp-activity-admin.php:809 +#: bp-activity/bp-activity-admin.php:917 msgid "Link" msgstr "" -#: bp-activity/bp-activity-admin.php:812 +#: bp-activity/bp-activity-admin.php:920 msgid "Activity generated by posts and comments uses the link field for a permalink back to the content item." msgstr "" #. translators: accessibility text -#: bp-activity/bp-activity-admin.php:829 +#: bp-activity/bp-activity-admin.php:937 msgid "Author ID" msgstr "" #. translators: %s: the name of the activity type -#: bp-activity/bp-activity-admin.php:916 +#: bp-activity/bp-activity-admin.php:1024 msgid "This activity item has a type (%s) that is not registered using bp_activity_set_action(), so no label is available." msgstr "" #. translators: accessibility text -#: bp-activity/bp-activity-admin.php:929 +#: bp-activity/bp-activity-admin.php:1037 msgid "Select activity type" msgstr "" -#: bp-activity/bp-activity-admin.php:950 +#: bp-activity/bp-activity-admin.php:1058 msgid "Primary Item ID" msgstr "" -#: bp-activity/bp-activity-admin.php:954 +#: bp-activity/bp-activity-admin.php:1062 msgid "Secondary Item ID" msgstr "" -#: bp-activity/bp-activity-admin.php:957 +#: bp-activity/bp-activity-admin.php:1065 msgid "These identify the object that created this activity. For example, the fields could reference a pair of site and comment IDs." msgstr "" #. translators: %s: the number of permanently deleted activities -#: bp-activity/bp-activity-admin.php:997 +#: bp-activity/bp-activity-admin.php:1105 msgid "%s activity item has been permanently deleted." msgid_plural "%s activity items have been permanently deleted." msgstr[0] "" msgstr[1] "" #. translators: %s: the ID of the activity which errored during an update -#: bp-activity/bp-activity-admin.php:1003 +#: bp-activity/bp-activity-admin.php:1111 msgid "An error occurred when trying to update activity ID #%s." msgstr "" -#: bp-activity/bp-activity-admin.php:1006 +#: bp-activity/bp-activity-admin.php:1114 msgid "Errors occurred when trying to update these activity items:" msgstr "" #. Translators: %s: the activity ID -#: bp-activity/bp-activity-admin.php:1012 +#: bp-activity/bp-activity-admin.php:1120 msgid "#%s" msgstr "" #. translators: %s: the number of activities successfully marked as spam -#: bp-activity/bp-activity-admin.php:1022 +#: bp-activity/bp-activity-admin.php:1130 msgid "%s activity item has been successfully spammed." msgid_plural "%s activity items have been successfully spammed." msgstr[0] "" msgstr[1] "" #. translators: %s: the number of activities successfully marked as ham -#: bp-activity/bp-activity-admin.php:1027 +#: bp-activity/bp-activity-admin.php:1135 msgid "%s activity item has been successfully unspammed." msgid_plural "%s activity items have been successfully unspammed." msgstr[0] "" msgstr[1] "" -#: bp-activity/bp-activity-admin.php:1031 +#: bp-activity/bp-activity-admin.php:1139 msgid "The activity item has been updated successfully." msgstr "" #. translators: %s: the activity ID -#: bp-activity/bp-activity-admin.php:1052 +#: bp-activity/bp-activity-admin.php:1160 msgid "Activity related to ID #%s" msgstr "" -#: bp-activity/bp-activity-admin.php:1055 +#: bp-activity/bp-activity-admin.php:1163 msgctxt "Admin SWA page" msgid "Activity" msgstr "" #. translators: %s: the activity search terms -#: bp-activity/bp-activity-admin.php:1062 -#: bp-groups/bp-groups-admin.php:781 -#: bp-groups/bp-groups-admin.php:796 -#: bp-members/classes/class-bp-members-admin.php:2094 -#: bp-members/classes/class-bp-members-admin.php:2115 +#: bp-activity/bp-activity-admin.php:1170 +#: bp-groups/bp-groups-admin.php:828 +#: bp-members/classes/class-bp-members-admin.php:2080 msgid "Search results for “%s”" msgstr "" -#: bp-activity/bp-activity-admin.php:1077 +#: bp-activity/bp-activity-admin.php:1187 msgid "Search all Activity" msgstr "" -#: bp-activity/bp-activity-admin.php:1088 +#: bp-activity/bp-activity-admin.php:1198 msgid "Reply to Activity" msgstr "" #. translators: accessibility text -#: bp-activity/bp-activity-admin.php:1091 -#: bp-activity/bp-activity-admin.php:1097 +#: bp-activity/bp-activity-admin.php:1201 +#: bp-activity/bp-activity-admin.php:1207 #: bp-activity/classes/class-bp-activity-list-table.php:651 #: bp-templates/bp-legacy/buddypress/activity/comment.php:40 msgid "Reply" msgstr "" -#: bp-activity/bp-activity-admin.php:1096 -#: bp-groups/bp-groups-admin.php:726 -#: bp-members/classes/class-bp-members-admin.php:2344 -#: bp-templates/bp-legacy/buddypress/activity/entry.php:135 -#: bp-templates/bp-nouveau/buddypress/members/single/settings/general.php:56 -#: bp-templates/bp-nouveau/includes/activity/functions.php:170 -#: bp-xprofile/classes/class-bp-xprofile-field.php:1371 -#: bp-xprofile/classes/class-bp-xprofile-group.php:920 -msgid "Cancel" -msgstr "" - #: bp-activity/bp-activity-adminbar.php:43 msgid "Edit Activity" msgstr "" @@ -522,23 +559,23 @@ msgstr "" msgid "Your browser does not support HTML5 audio" msgstr "" -#: bp-activity/bp-activity-filters.php:434 +#: bp-activity/bp-activity-filters.php:438 msgid "[Read more]" msgstr "" -#: bp-activity/bp-activity-filters.php:438 +#: bp-activity/bp-activity-filters.php:442 msgid "…" msgstr "" -#: bp-activity/bp-activity-filters.php:644 +#: bp-activity/bp-activity-filters.php:648 msgid "Load Newest" msgstr "" -#: bp-activity/bp-activity-filters.php:828 +#: bp-activity/bp-activity-filters.php:832 msgid "BuddyPress Activity Data" msgstr "" -#: bp-activity/bp-activity-filters.php:830 +#: bp-activity/bp-activity-filters.php:834 msgctxt "BuddyPress Activity data exporter friendly name" msgid "Activity Data" msgstr "" @@ -648,7 +685,7 @@ msgstr "" #: bp-activity/bp-activity-notifications.php:401 #: bp-activity/classes/class-bp-activity-oembed-extension.php:138 #: bp-activity/classes/class-bp-activity-theme-compat.php:161 -#: bp-core/classes/class-bp-admin.php:583 +#: bp-core/classes/class-bp-admin.php:586 msgid "Activity" msgstr "" @@ -696,11 +733,12 @@ msgid "%1$s replied to one of your activity comments" msgstr "" #: bp-activity/bp-activity-notifications.php:402 -#: bp-blogs/bp-blogs-template.php:1159 -#: bp-core/admin/bp-core-admin-tools.php:600 +#: bp-blogs/bp-blogs-template.php:1183 +#: bp-core/admin/bp-core-admin-tools.php:671 +#: bp-core/classes/class-bp-admin-types.php:435 #: bp-friends/bp-friends-functions.php:962 #: bp-friends/bp-friends-notifications.php:256 -#: bp-groups/bp-groups-notifications.php:1138 +#: bp-groups/bp-groups-notifications.php:1143 #: bp-messages/bp-messages-notifications.php:268 #: bp-settings/bp-settings-functions.php:135 #: bp-templates/bp-legacy/buddypress/members/register.php:319 @@ -709,11 +747,11 @@ msgid "Yes" msgstr "" #: bp-activity/bp-activity-notifications.php:403 -#: bp-blogs/bp-blogs-template.php:1163 -#: bp-core/admin/bp-core-admin-tools.php:602 +#: bp-blogs/bp-blogs-template.php:1190 +#: bp-core/admin/bp-core-admin-tools.php:673 #: bp-friends/bp-friends-functions.php:962 #: bp-friends/bp-friends-notifications.php:257 -#: bp-groups/bp-groups-notifications.php:1139 +#: bp-groups/bp-groups-notifications.php:1144 #: bp-messages/bp-messages-notifications.php:269 #: bp-settings/bp-settings-functions.php:136 #: bp-templates/bp-legacy/buddypress/members/register.php:320 @@ -731,11 +769,11 @@ msgstr "" #: bp-activity/bp-activity-notifications.php:433 #: bp-friends/bp-friends-notifications.php:267 #: bp-friends/bp-friends-notifications.php:279 -#: bp-groups/bp-groups-notifications.php:1149 -#: bp-groups/bp-groups-notifications.php:1161 -#: bp-groups/bp-groups-notifications.php:1173 -#: bp-groups/bp-groups-notifications.php:1185 -#: bp-groups/bp-groups-notifications.php:1197 +#: bp-groups/bp-groups-notifications.php:1154 +#: bp-groups/bp-groups-notifications.php:1166 +#: bp-groups/bp-groups-notifications.php:1178 +#: bp-groups/bp-groups-notifications.php:1190 +#: bp-groups/bp-groups-notifications.php:1202 #: bp-messages/bp-messages-notifications.php:279 msgid "Yes, send email" msgstr "" @@ -745,11 +783,11 @@ msgstr "" #: bp-activity/bp-activity-notifications.php:437 #: bp-friends/bp-friends-notifications.php:271 #: bp-friends/bp-friends-notifications.php:283 -#: bp-groups/bp-groups-notifications.php:1153 -#: bp-groups/bp-groups-notifications.php:1165 -#: bp-groups/bp-groups-notifications.php:1177 -#: bp-groups/bp-groups-notifications.php:1189 -#: bp-groups/bp-groups-notifications.php:1201 +#: bp-groups/bp-groups-notifications.php:1158 +#: bp-groups/bp-groups-notifications.php:1170 +#: bp-groups/bp-groups-notifications.php:1182 +#: bp-groups/bp-groups-notifications.php:1194 +#: bp-groups/bp-groups-notifications.php:1206 #: bp-messages/bp-messages-notifications.php:283 msgid "No, do not send email" msgstr "" @@ -777,25 +815,25 @@ msgstr "" #: bp-activity/bp-activity-template.php:1041 #: bp-activity/bp-activity-template.php:1214 #: bp-activity/bp-activity-template.php:1226 -#: bp-activity/classes/class-bp-activity-component.php:436 +#: bp-activity/classes/class-bp-activity-component.php:437 #: bp-blogs/classes/class-bp-blogs-component.php:334 #: bp-core/deprecated/2.1.php:461 #: bp-friends/classes/class-bp-friends-component.php:301 -#: bp-groups/bp-groups-template.php:1623 -#: bp-groups/bp-groups-template.php:1669 -#: bp-groups/bp-groups-template.php:2294 -#: bp-groups/bp-groups-template.php:2322 -#: bp-groups/bp-groups-template.php:2400 -#: bp-groups/bp-groups-template.php:2428 -#: bp-groups/bp-groups-template.php:3827 -#: bp-groups/bp-groups-template.php:3866 -#: bp-groups/bp-groups-template.php:3907 -#: bp-groups/bp-groups-template.php:5497 +#: bp-groups/bp-groups-template.php:1705 +#: bp-groups/bp-groups-template.php:1751 +#: bp-groups/bp-groups-template.php:2384 +#: bp-groups/bp-groups-template.php:2412 +#: bp-groups/bp-groups-template.php:2490 +#: bp-groups/bp-groups-template.php:2518 +#: bp-groups/bp-groups-template.php:3917 +#: bp-groups/bp-groups-template.php:3956 +#: bp-groups/bp-groups-template.php:3997 +#: bp-groups/bp-groups-template.php:5587 #: bp-groups/classes/class-bp-groups-component.php:876 -#: bp-members/bp-members-template.php:808 -#: bp-members/bp-members-template.php:1564 -#: bp-members/bp-members-template.php:1619 -#: bp-members/classes/class-bp-members-component.php:630 +#: bp-members/bp-members-template.php:799 +#: bp-members/bp-members-template.php:1556 +#: bp-members/bp-members-template.php:1611 +#: bp-members/classes/class-bp-members-component.php:631 #: bp-messages/bp-messages-template.php:727 #: bp-messages/classes/class-bp-messages-component.php:410 #: bp-notifications/classes/class-bp-notifications-component.php:294 @@ -808,7 +846,7 @@ msgstr "" #. translators: %s: the Group name #: bp-activity/bp-activity-template.php:1191 -#: bp-groups/bp-groups-template.php:790 +#: bp-groups/bp-groups-template.php:872 #: bp-groups/classes/class-bp-groups-list-table.php:632 msgid "Group logo of %s" msgstr "" @@ -842,16 +880,17 @@ msgstr "" #: bp-templates/bp-legacy/buddypress/activity/comment.php:46 #: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:148 #: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:51 -#: bp-xprofile/classes/class-bp-xprofile-field-type.php:405 +#: bp-xprofile/classes/class-bp-xprofile-field-type.php:431 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1382 msgid "Delete" msgstr "" #: bp-activity/bp-activity-template.php:2772 -#: bp-core/admin/bp-core-admin-functions.php:1073 -#: bp-core/admin/bp-core-admin-slugs.php:149 -#: bp-core/admin/bp-core-admin-slugs.php:232 +#: bp-core/admin/bp-core-admin-functions.php:1145 +#: bp-core/admin/bp-core-admin-slugs.php:150 +#: bp-core/admin/bp-core-admin-slugs.php:233 #: bp-groups/classes/class-bp-groups-list-table.php:611 -#: bp-members/bp-members-template.php:1053 +#: bp-members/bp-members-template.php:1045 #: bp-templates/bp-legacy/buddypress-functions.php:317 msgid "View" msgstr "" @@ -892,6 +931,7 @@ msgstr "" #: bp-groups/classes/class-bp-groups-invite-template.php:86 #: bp-groups/classes/class-bp-groups-membership-requests-template.php:93 #: bp-groups/classes/class-bp-groups-template.php:135 +#: bp-members/classes/class-bp-core-members-template.php:129 #: bp-messages/classes/class-bp-messages-box-template.php:114 #: bp-messages/classes/class-bp-messages-thread.php:452 #: bp-xprofile/classes/class-bp-xprofile-data-template.php:130 @@ -899,81 +939,81 @@ msgid "Arguments passed to %1$s should be in an associative array. See the inlin msgstr "" #: bp-activity/classes/class-bp-activity-component.php:30 -#: bp-core/bp-core-functions.php:2476 +#: bp-core/bp-core-functions.php:2489 msgid "Activity Streams" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:206 +#: bp-activity/classes/class-bp-activity-component.php:207 msgid "Search Activity..." msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:245 +#: bp-activity/classes/class-bp-activity-component.php:246 msgctxt "Profile activity screen nav" msgid "Activity" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:255 +#: bp-activity/classes/class-bp-activity-component.php:256 msgctxt "Profile activity screen sub nav" msgid "Personal" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:266 +#: bp-activity/classes/class-bp-activity-component.php:267 msgctxt "Profile activity screen sub nav" msgid "Mentions" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:279 +#: bp-activity/classes/class-bp-activity-component.php:280 msgctxt "Profile activity screen sub nav" msgid "Favorites" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:292 +#: bp-activity/classes/class-bp-activity-component.php:293 msgctxt "Profile activity screen sub nav" msgid "Friends" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:305 +#: bp-activity/classes/class-bp-activity-component.php:306 msgctxt "Profile activity screen sub nav" msgid "Groups" msgstr "" #. translators: %s: Unread mention count for the current user -#: bp-activity/classes/class-bp-activity-component.php:343 +#: bp-activity/classes/class-bp-activity-component.php:344 msgctxt "Toolbar Mention logged in user" msgid "Mentions %s" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:347 +#: bp-activity/classes/class-bp-activity-component.php:348 msgctxt "Toolbar Mention logged in user" msgid "Mentions" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:355 +#: bp-activity/classes/class-bp-activity-component.php:356 msgctxt "My Account Activity sub nav" msgid "Activity" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:363 +#: bp-activity/classes/class-bp-activity-component.php:364 msgctxt "My Account Activity sub nav" msgid "Personal" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:384 +#: bp-activity/classes/class-bp-activity-component.php:385 msgctxt "My Account Activity sub nav" msgid "Favorites" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:395 +#: bp-activity/classes/class-bp-activity-component.php:396 msgctxt "My Account Activity sub nav" msgid "Friends" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:406 +#: bp-activity/classes/class-bp-activity-component.php:407 msgctxt "My Account Activity sub nav" msgid "Groups" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:429 +#: bp-activity/classes/class-bp-activity-component.php:430 msgctxt "Page and <title>" msgid "My Activity" msgstr "" @@ -1017,16 +1057,10 @@ msgstr "" #: bp-activity/classes/class-bp-activity-list-table.php:403 #: bp-activity/classes/class-bp-activity-list-table.php:662 -#: bp-core/admin/bp-core-admin-functions.php:1055 +#: bp-core/admin/bp-core-admin-functions.php:1127 msgid "Not Spam" msgstr "" -#: bp-activity/classes/class-bp-activity-list-table.php:404 -#: bp-activity/classes/class-bp-activity-list-table.php:667 -#: bp-groups/bp-groups-admin.php:725 -msgid "Delete Permanently" -msgstr "" - #: bp-activity/classes/class-bp-activity-list-table.php:428 msgctxt "Admin SWA column header" msgid "Author" @@ -1065,28 +1099,17 @@ msgstr "" msgid "Select activity item %1$d" msgstr "" -#. translators: %s: the name of the activity type -#: bp-activity/classes/class-bp-activity-list-table.php:608 -msgid "Unregistered action - %s" -msgstr "" - #: bp-activity/classes/class-bp-activity-list-table.php:653 msgid "Replies disabled" msgstr "" -#: bp-activity/classes/class-bp-activity-list-table.php:667 -#: bp-core/bp-core-cssjs.php:181 -#: bp-templates/bp-nouveau/buddypress-functions.php:427 -msgid "Are you sure?" -msgstr "" - #. translators: %s: activity date and time -#: bp-activity/classes/class-bp-activity-list-table.php:684 +#: bp-activity/classes/class-bp-activity-list-table.php:685 msgid "Submitted on %s" msgstr "" #. translators: 1: activity date, 2: activity time -#: bp-activity/classes/class-bp-activity-list-table.php:690 +#: bp-activity/classes/class-bp-activity-list-table.php:691 #: bp-core/bp-core-template.php:427 msgid "%1$s at %2$s" msgstr "" @@ -1169,210 +1192,210 @@ msgstr "" #: bp-activity/classes/class-bp-rest-activity-endpoint.php:71 #: bp-activity/classes/class-bp-rest-activity-endpoint.php:109 -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1284 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1272 +#: bp-members/classes/class-bp-rest-members-endpoint.php:927 msgid "A unique numeric ID for the activity." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:289 -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:592 -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:705 -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:767 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:293 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:597 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:700 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:755 msgid "Invalid activity ID." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:332 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:333 msgid "Sorry, you cannot view the activities." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:364 -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:518 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:368 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:526 msgid "Please, enter some content." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:413 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:417 msgid "Cannot create new activity." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:471 -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:485 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:475 msgid "Sorry, you are not allowed to create activities." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:530 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:538 msgid "Cannot update existing activity." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:580 -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:602 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:585 msgid "Sorry, you are not allowed to update this activity." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:649 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:647 msgid "Could not delete the activity." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:693 -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:715 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:688 msgid "Sorry, you are not allowed to delete this activity." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:779 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:767 msgid "Sorry, you cannot remove the activity from your favorites." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:785 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:773 msgid "Sorry, you cannot add the activity to your favorites." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:839 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:824 msgid "Sorry, you are not allowed to update favorites." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1290 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1278 msgid "The ID of some other object primarily associated with this one." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1295 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1283 msgid "The ID of some other object also associated with this one." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1300 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1288 msgid "The ID for the author of the activity." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1305 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1294 msgid "The permalink to this activity on the site." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1311 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1300 msgid "The active BuddyPress component the activity relates to." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1320 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1309 msgid "The activity type of the activity." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1329 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1318 msgid "The description of the activity's type (eg: Username posted an update)" msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1338 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1327 msgid "Allowed HTML content for the activity." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1346 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1335 +#: bp-members/classes/class-bp-rest-members-endpoint.php:932 msgid "Content for the activity, as it exists in the database." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1351 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1340 +#: bp-members/classes/class-bp-rest-members-endpoint.php:937 msgid "HTML content for the activity, transformed for display." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1360 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1349 msgid "The date the activity was published, in the site's timezone." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1366 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1355 msgid "Whether the activity has been marked as spam or not." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1376 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1365 msgid "A list of objects children of the activity object." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1382 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1371 msgid "Total number of comments of the activity object." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1388 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1377 msgid "Whether the activity object should be sitewide hidden or not." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1393 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1382 msgid "Whether the activity object has been favorited by the current user." msgstr "" #. translators: 1: Full avatar width in pixels. 2: Full avatar height in pixels -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1407 -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:460 -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1126 -#: bp-members/classes/class-bp-rest-members-endpoint.php:741 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1396 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:689 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1274 +#: bp-members/classes/class-bp-rest-members-endpoint.php:960 msgid "Avatar URL with full image size (%1$d x %2$d pixels)." msgstr "" #. translators: 1: Thumb avatar width in pixels. 2: Thumb avatar height in pixels -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1415 -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:468 -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1134 -#: bp-members/classes/class-bp-rest-members-endpoint.php:749 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1404 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:697 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1282 +#: bp-members/classes/class-bp-rest-members-endpoint.php:968 msgid "Avatar URL with thumb image size (%1$d x %2$d pixels)." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1422 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1411 msgid "Avatar URLs for the author of the activity." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1449 -#: bp-members/classes/class-bp-rest-members-endpoint.php:826 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1438 +#: bp-members/classes/class-bp-rest-members-endpoint.php:1045 msgid "Ensure result set excludes specific IDs." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1458 -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:513 -#: bp-members/classes/class-bp-rest-members-endpoint.php:817 -#: bp-members/classes/class-bp-rest-signup-endpoint.php:1026 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1447 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:742 +#: bp-members/classes/class-bp-rest-members-endpoint.php:1036 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:1012 msgid "Ensure result set includes specific IDs." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1467 -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1178 -#: bp-members/classes/class-bp-rest-signup-endpoint.php:1044 -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:834 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1456 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1326 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:1030 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:830 msgid "Order sort attribute ascending or descending." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1476 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1465 msgid "Limit result set to items published after a given ISO8601 compliant date." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1483 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1472 msgid "Limit result set to items created by a specific user (ID)." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1491 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1480 #: bp-core/classes/class-bp-rest-components-endpoint.php:480 msgid "Limit result set to items with a specific status." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1500 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1489 msgid "Limit result set to items with a specific scope." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1508 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1497 msgid "Limit result set to items created by a specific group." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1516 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1505 msgid "Limit result set to items created by a specific site." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1524 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1513 msgid "Limit result set to items with a specific prime association ID." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1532 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1521 msgid "Limit result set to items with a specific secondary association ID." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1540 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1529 msgid "Limit result set to items with a specific active BuddyPress component." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1548 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1537 msgid "Limit result set to items with a specific activity type." msgstr "" -#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1556 +#: bp-activity/classes/class-bp-rest-activity-endpoint.php:1548 msgid "No comments by default, stream for within stream display, threaded for below each activity item." msgstr "" @@ -1448,100 +1471,110 @@ msgid_plural "Viewing %1$s - %2$s of %3$s sites" msgstr[0] "" msgstr[1] "" -#. translators: %s: the author display name -#: bp-blogs/bp-blogs-template.php:364 -msgid "Profile picture of site author %s" -msgstr "" - -#: bp-blogs/bp-blogs-template.php:423 +#: bp-blogs/bp-blogs-template.php:340 msgid "Site icon for the blog" msgstr "" -#. translators: %s is the placeholder for the name of the blog -#: bp-blogs/bp-blogs-template.php:426 +#. translators: %s is the blog name +#: bp-blogs/bp-blogs-template.php:348 msgid "Site icon for %s" msgstr "" #. translators: %s: human time diff of the last time the site was active. -#: bp-blogs/bp-blogs-template.php:665 +#: bp-blogs/bp-blogs-template.php:641 msgctxt "last time the site was active" -msgid "active %s" +msgid "Active %s" msgstr "" -#: bp-blogs/bp-blogs-template.php:678 -#: bp-members/bp-members-template.php:985 +#: bp-blogs/bp-blogs-template.php:654 +#: bp-members/bp-members-template.php:977 msgid "Never active" msgstr "" #. translators: %s: the title of the latest post -#: bp-blogs/bp-blogs-template.php:732 +#: bp-blogs/bp-blogs-template.php:708 msgid "Latest Post: %s" msgstr "" -#: bp-blogs/bp-blogs-template.php:1071 +#: bp-blogs/bp-blogs-template.php:1021 msgid "There was a problem; please correct the form below and try again." msgstr "" -#: bp-blogs/bp-blogs-template.php:1074 -msgid "By filling out the form below, you can <strong>add a site to your account</strong>. There is no limit to the number of sites that you can have, so create to your heart's content, but blog responsibly!" +#: bp-blogs/bp-blogs-template.php:1033 +msgid "By filling out the form below, you can" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:1034 +msgid "add a site to your account" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:1035 +msgid "There is no limit to the number of sites that you can have, so create to your heart’s content, but blog responsibly!" msgstr "" -#: bp-blogs/bp-blogs-template.php:1076 -msgid "If you’re not going to use a great domain, leave it for a new user. Now have at it!" +#: bp-blogs/bp-blogs-template.php:1040 +msgid "If you’re not going to use a great domain, leave it for a new user. Now have at it!" msgstr "" -#: bp-blogs/bp-blogs-template.php:1092 +#: bp-blogs/bp-blogs-template.php:1057 msgid "Create Site" msgstr "" -#: bp-blogs/bp-blogs-template.php:1114 +#: bp-blogs/bp-blogs-template.php:1112 msgid "Site Name:" msgstr "" -#: bp-blogs/bp-blogs-template.php:1116 +#: bp-blogs/bp-blogs-template.php:1114 msgid "Site Domain:" msgstr "" -#: bp-blogs/bp-blogs-template.php:1130 -msgid "Your address will be " +#. translators: %s is the site domain and path. +#: bp-blogs/bp-blogs-template.php:1141 +msgid "domain.%s" msgstr "" -#: bp-blogs/bp-blogs-template.php:1133 -msgid "blogname" +#. translators: %s is the site domain and path. +#: bp-blogs/bp-blogs-template.php:1148 +msgid "%sblogname" msgstr "" -#: bp-blogs/bp-blogs-template.php:1135 -msgid "domain." +#. translators: %s is the site url. +#: bp-blogs/bp-blogs-template.php:1157 +msgid "Your address will be %s" msgstr "" -#: bp-blogs/bp-blogs-template.php:1138 -msgid "Must be at least 4 characters, letters and numbers only. It cannot be changed so choose carefully!)" +#: bp-blogs/bp-blogs-template.php:1159 +msgid "Must be at least 4 characters, letters and numbers only. It cannot be changed so choose carefully!" msgstr "" -#: bp-blogs/bp-blogs-template.php:1144 +#: bp-blogs/bp-blogs-template.php:1166 msgid "Site Title:" msgstr "" -#: bp-blogs/bp-blogs-template.php:1155 +#: bp-blogs/bp-blogs-template.php:1178 msgid "Privacy: I would like my site to appear in search engines, and in public listings around this network" msgstr "" -#: bp-blogs/bp-blogs-template.php:1267 +#: bp-blogs/bp-blogs-template.php:1229 +msgid "Sorry, we cannot create the site. Please try again later." +msgstr "" + +#: bp-blogs/bp-blogs-template.php:1288 msgid "Congratulations! You have successfully registered a new site." msgstr "" #. translators: %s: the link of the new site -#: bp-blogs/bp-blogs-template.php:1273 +#: bp-blogs/bp-blogs-template.php:1294 msgid "%s is your new site." msgstr "" #. translators: 1: Login URL, 2: User name -#: bp-blogs/bp-blogs-template.php:1278 +#: bp-blogs/bp-blogs-template.php:1299 msgid "<a href=\"%1$s\">Log in</a> as \"%2$s\" using your existing password." msgstr "" -#: bp-blogs/bp-blogs-template.php:1315 -#: bp-blogs/bp-blogs-template.php:1422 +#: bp-blogs/bp-blogs-template.php:1336 +#: bp-blogs/bp-blogs-template.php:1443 #: bp-blogs/classes/class-bp-blogs-component.php:302 #: bp-blogs/classes/class-bp-blogs-theme-compat.php:175 #: bp-core/bp-core-template.php:3149 @@ -1550,35 +1583,35 @@ msgid "Create a Site" msgstr "" #. translators: %s: the User Display Name -#: bp-blogs/bp-blogs-template.php:1335 +#: bp-blogs/bp-blogs-template.php:1356 msgid "%s's Sites" msgstr "" #. translators: %s: the User Display Name -#: bp-blogs/bp-blogs-template.php:1343 +#: bp-blogs/bp-blogs-template.php:1364 msgid "%s's Recent Posts" msgstr "" #. translators: %s: the User Display Name -#: bp-blogs/bp-blogs-template.php:1351 +#: bp-blogs/bp-blogs-template.php:1372 msgid "%s's Recent Comments" msgstr "" -#: bp-blogs/bp-blogs-template.php:1382 +#: bp-blogs/bp-blogs-template.php:1403 #: bp-core/deprecated/1.5.php:423 -#: bp-groups/bp-groups-template.php:5155 -#: bp-members/bp-members-template.php:1279 +#: bp-groups/bp-groups-template.php:5245 +#: bp-members/bp-members-template.php:1271 #: bp-messages/bp-messages-template.php:861 #: bp-templates/bp-legacy/buddypress/common/search/dir-search-form.php:15 msgid "Search" msgstr "" -#: bp-blogs/bp-blogs-template.php:1538 +#: bp-blogs/bp-blogs-template.php:1559 msgid "Visit Site" msgstr "" #. translators: %s: the number of blogs -#: bp-blogs/bp-blogs-template.php:1601 +#: bp-blogs/bp-blogs-template.php:1622 msgid "%s site" msgid_plural "%s sites" msgstr[0] "" @@ -1653,115 +1686,169 @@ msgid "→" msgstr "" #: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:62 -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:401 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:630 msgid "A unique numeric ID for the blog." msgstr "" -#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:89 +#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:91 msgid "There was a problem confirming the blog's user admin is valid." msgstr "" -#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:118 +#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:129 msgid "Sorry, there was a problem fetching the blog avatar." msgstr "" -#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:162 -#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:178 -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:211 -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:461 -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:324 -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:484 -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:621 -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:207 -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:449 -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:245 -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:454 -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:558 +#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:169 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:365 +#: bp-core/classes/class-bp-rest-components-endpoint.php:164 +#: bp-groups/classes/class-bp-rest-attachments-group-cover-endpoint.php:334 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:344 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:476 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:600 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:321 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:475 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:624 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:184 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:287 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:416 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:535 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:663 +#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:254 +#: bp-members/classes/class-bp-rest-attachments-member-cover-endpoint.php:333 +#: bp-members/classes/class-bp-rest-members-endpoint.php:235 +#: bp-members/classes/class-bp-rest-members-endpoint.php:310 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:185 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:375 +msgid "Sorry, you are not allowed to perform this action." +msgstr "" + +#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:180 +#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:174 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:229 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:508 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:206 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:353 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:508 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:657 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:210 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:446 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:280 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:479 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:577 msgid "Invalid group ID." msgstr "" -#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:172 +#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:190 msgid "Sorry, blog avatar is disabled." msgstr "" -#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:237 -#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:439 -#: bp-groups/classes/class-bp-rest-attachments-group-cover-endpoint.php:415 -#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:445 -#: bp-members/classes/class-bp-rest-attachments-member-cover-endpoint.php:415 +#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:255 +#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:438 +#: bp-groups/classes/class-bp-rest-attachments-group-cover-endpoint.php:421 +#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:449 +#: bp-members/classes/class-bp-rest-attachments-member-cover-endpoint.php:421 msgid "Full size of the image file." msgstr "" -#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:244 -#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:445 -#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:452 +#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:262 +#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:444 +#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:456 msgid "Thumb size of the image file." msgstr "" -#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:275 -#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:483 +#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:293 +#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:487 msgid "Whether to return an <img> HTML element, vs a raw URL to an avatar." msgstr "" -#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:283 -#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:483 -#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:491 +#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:301 +#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:482 +#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:495 msgid "The alt attribute for the <img> element." msgstr "" -#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:291 +#: bp-blogs/classes/class-bp-rest-attachments-blog-avatar-endpoint.php:309 msgid "Whether to disable the default Gravatar Admin user fallback." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:57 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:63 msgid "A unique numeric ID for the Blog." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:119 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:125 msgid "There was a problem confirming if user ID provided is a valid one." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:189 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:195 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:325 msgid "Invalid blog ID." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:407 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:313 +msgid "There was a problem creating blog." +msgstr "" + +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:377 +msgid "Sorry, blog creation is disabled." +msgstr "" + +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:562 +msgid "The new site's name (used for the site URL)." +msgstr "" + +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:570 +msgid "The new site's title." +msgstr "" + +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:579 +msgid "The new site's network ID. (Only relevant on multi-network installations)" +msgstr "" + +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:588 +msgid "The user ID of the new site's admin." +msgstr "" + +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:596 +msgid "Set initial Blog options." +msgstr "" + +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:636 msgid "A unique numeric ID for the blog admin." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:413 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:642 msgid "The name of the blog." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:422 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:651 msgid "The permalink of the blog." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:429 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:658 msgid "The description of the blog." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:435 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:664 msgid "The path of the blog." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:441 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:670 msgid "the domain of the blog." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:447 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:676 msgid "The last activity date from the blog, in the site's timezone." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:475 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:704 msgid "Avatar URLs for the blog." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:505 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:734 msgid "ID of the user whose blogs user can post to." msgstr "" -#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:522 +#: bp-blogs/classes/class-bp-rest-blogs-endpoint.php:751 #: bp-core/classes/class-bp-rest-components-endpoint.php:489 msgid "Limit result set to items with a specific type." msgstr "" @@ -1769,45 +1856,45 @@ msgstr "" #: bp-core/admin/bp-core-admin-components.php:24 #: bp-core/admin/bp-core-admin-settings.php:275 #: bp-core/admin/bp-core-admin-slugs.php:24 -#: bp-core/classes/class-bp-admin.php:831 +#: bp-core/classes/class-bp-admin.php:865 msgid "BuddyPress Settings" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:26 -#: bp-core/admin/bp-core-admin-functions.php:437 +#: bp-core/admin/bp-core-admin-components.php:27 +#: bp-core/admin/bp-core-admin-functions.php:438 msgid "Components" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:32 -#: bp-core/admin/bp-core-admin-settings.php:286 -#: bp-core/admin/bp-core-admin-slugs.php:32 +#: bp-core/admin/bp-core-admin-components.php:33 +#: bp-core/admin/bp-core-admin-settings.php:287 +#: bp-core/admin/bp-core-admin-slugs.php:33 #: bp-templates/bp-legacy/buddypress/members/single/settings/profile.php:68 msgid "Save Settings" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:67 -#: bp-core/bp-core-functions.php:2460 +#: bp-core/admin/bp-core-admin-components.php:68 +#: bp-core/bp-core-functions.php:2473 msgid "Extended Profiles" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:68 -#: bp-core/bp-core-functions.php:2461 +#: bp-core/admin/bp-core-admin-components.php:69 +#: bp-core/bp-core-functions.php:2474 msgid "Customize your community with fully editable profile fields that allow your users to describe themselves." msgstr "" -#: bp-core/admin/bp-core-admin-components.php:71 -#: bp-core/bp-core-functions.php:2464 +#: bp-core/admin/bp-core-admin-components.php:72 +#: bp-core/bp-core-functions.php:2477 msgid "Account Settings" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:72 -#: bp-core/bp-core-functions.php:2465 +#: bp-core/admin/bp-core-admin-components.php:73 +#: bp-core/bp-core-functions.php:2478 msgid "Allow your users to modify their account and notification settings directly from within their profiles." msgstr "" #. translators: accessibility text -#: bp-core/admin/bp-core-admin-components.php:75 -#: bp-core/bp-core-functions.php:2480 +#: bp-core/admin/bp-core-admin-components.php:76 +#: bp-core/bp-core-functions.php:2493 #: bp-core/deprecated/2.1.php:555 #: bp-notifications/bp-notifications-functions.php:898 #: bp-notifications/classes/class-bp-notifications-component.php:289 @@ -1815,13 +1902,13 @@ msgstr "" msgid "Notifications" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:76 -#: bp-core/bp-core-functions.php:2481 +#: bp-core/admin/bp-core-admin-components.php:77 +#: bp-core/bp-core-functions.php:2494 msgid "Notify members of relevant activity with a toolbar bubble and/or via email, and allow them to customize their notification settings." msgstr "" #. translators: %s: the number of installed components -#: bp-core/admin/bp-core-admin-components.php:152 +#: bp-core/admin/bp-core-admin-components.php:153 msgctxt "plugins" msgid "All <span class=\"count\">(%s)</span>" msgid_plural "All <span class=\"count\">(%s)</span>" @@ -1829,65 +1916,65 @@ msgstr[0] "" msgstr[1] "" #. translators: %s: the number of active components -#: bp-core/admin/bp-core-admin-components.php:160 +#: bp-core/admin/bp-core-admin-components.php:161 msgid "Active <span class=\"count\">(%s)</span>" msgid_plural "Active <span class=\"count\">(%s)</span>" msgstr[0] "" msgstr[1] "" #. translators: %s: the number of inactive components -#: bp-core/admin/bp-core-admin-components.php:168 +#: bp-core/admin/bp-core-admin-components.php:169 msgid "Inactive <span class=\"count\">(%s)</span>" msgid_plural "Inactive <span class=\"count\">(%s)</span>" msgstr[0] "" msgstr[1] "" #. translators: %s: the number of must-Use components -#: bp-core/admin/bp-core-admin-components.php:176 +#: bp-core/admin/bp-core-admin-components.php:177 msgid "Must-Use <span class=\"count\">(%s)</span>" msgid_plural "Must-Use <span class=\"count\">(%s)</span>" msgstr[0] "" msgstr[1] "" #. translators: %s: the number of retired components -#: bp-core/admin/bp-core-admin-components.php:184 +#: bp-core/admin/bp-core-admin-components.php:185 msgid "Retired <span class=\"count\">(%s)</span>" msgid_plural "Retired <span class=\"count\">(%s)</span>" msgstr[0] "" msgstr[1] "" #. translators: accessibility text -#: bp-core/admin/bp-core-admin-components.php:193 +#: bp-core/admin/bp-core-admin-components.php:194 msgid "Filter components list" msgstr "" #. translators: accessibility text -#: bp-core/admin/bp-core-admin-components.php:208 +#: bp-core/admin/bp-core-admin-components.php:209 msgid "Components list" msgstr "" #. translators: accessibility text -#: bp-core/admin/bp-core-admin-components.php:217 -#: bp-core/admin/bp-core-admin-components.php:280 +#: bp-core/admin/bp-core-admin-components.php:218 +#: bp-core/admin/bp-core-admin-components.php:281 msgid "Enable or disable all optional components in bulk" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:219 -#: bp-core/admin/bp-core-admin-components.php:282 +#: bp-core/admin/bp-core-admin-components.php:220 +#: bp-core/admin/bp-core-admin-components.php:283 msgid "Component" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:220 -#: bp-core/admin/bp-core-admin-components.php:283 +#: bp-core/admin/bp-core-admin-components.php:221 +#: bp-core/admin/bp-core-admin-components.php:284 msgid "Description" msgstr "" #. translators: accessibility text -#: bp-core/admin/bp-core-admin-components.php:243 +#: bp-core/admin/bp-core-admin-components.php:244 msgid "Select %s" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:268 +#: bp-core/admin/bp-core-admin-components.php:269 msgid "No components found." msgstr "" @@ -1895,22 +1982,22 @@ msgstr "" msgid "Why have all my BuddyPress menus disappeared?" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:107 +#: bp-core/admin/bp-core-admin-functions.php:108 msgid "Don't worry! We've moved the BuddyPress options into more convenient and easier to find locations. You're seeing this page because you are running a legacy BuddyPress plugin which has not been updated." msgstr "" #. Translators: 1: is the url to the BP Components settings screen. 2: is the url to the xProfile administration screen. -#: bp-core/admin/bp-core-admin-functions.php:112 +#: bp-core/admin/bp-core-admin-functions.php:113 msgid "Components, Pages, Settings, and Forums, have been moved to <a href=\"%1$s\">Settings > BuddyPress</a>. Profile Fields has been moved into the <a href=\"%2$s\">Users</a> menu." msgstr "" #. Translators: %s is the url to the permalink settings. -#: bp-core/admin/bp-core-admin-functions.php:253 +#: bp-core/admin/bp-core-admin-functions.php:254 msgid "<strong>BuddyPress is almost ready</strong>. You must <a href=\"%s\">update your permalink structure</a> to something other than the default for it to work." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:284 -#: bp-core/admin/bp-core-admin-slugs.php:91 +#: bp-core/admin/bp-core-admin-functions.php:285 +#: bp-core/admin/bp-core-admin-slugs.php:92 #: bp-members/classes/class-bp-members-list-table.php:316 #: bp-members/classes/class-bp-members-ms-list-table.php:309 #: bp-messages/bp-messages-template.php:1300 @@ -1918,137 +2005,137 @@ msgstr "" msgid "Activate" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:289 -#: bp-core/admin/bp-core-admin-slugs.php:90 +#: bp-core/admin/bp-core-admin-functions.php:290 +#: bp-core/admin/bp-core-admin-slugs.php:91 #: bp-core/classes/class-bp-core-login-widget.php:120 #: bp-members/bp-members-adminbar.php:63 msgid "Register" msgstr "" #. Translators: %s is the comma separated list of components needing a directory page. -#: bp-core/admin/bp-core-admin-functions.php:311 +#: bp-core/admin/bp-core-admin-functions.php:312 msgid "The following active BuddyPress Components do not have associated WordPress Pages: %s." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:315 -#: bp-core/admin/bp-core-admin-functions.php:346 +#: bp-core/admin/bp-core-admin-functions.php:316 +#: bp-core/admin/bp-core-admin-functions.php:347 msgid "Repair" msgstr "" #. Translators: %s is the list of directory pages associated to more than one component. -#: bp-core/admin/bp-core-admin-functions.php:342 +#: bp-core/admin/bp-core-admin-functions.php:343 msgid "Each BuddyPress Component needs its own WordPress page. The following WordPress Pages have more than one component associated with them: %s." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:441 -#: bp-core/admin/bp-core-admin-settings.php:277 +#: bp-core/admin/bp-core-admin-functions.php:442 +#: bp-core/admin/bp-core-admin-settings.php:278 #: bp-core/bp-core-template.php:120 msgid "Options" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:445 -#: bp-core/admin/bp-core-admin-slugs.php:26 +#: bp-core/admin/bp-core-admin-functions.php:446 +#: bp-core/admin/bp-core-admin-slugs.php:27 msgid "Pages" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:449 -#: bp-core/classes/class-bp-admin.php:833 +#: bp-core/admin/bp-core-admin-functions.php:450 +#: bp-core/classes/class-bp-admin.php:868 msgid "Credits" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:493 +#: bp-core/admin/bp-core-admin-functions.php:494 msgid "<a href=\"https://codex.buddypress.org/getting-started/configure-components/\">Managing Components</a>" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:512 +#: bp-core/admin/bp-core-admin-functions.php:513 msgid "<a href=\"https://codex.buddypress.org/getting-started/configure-components/#settings-buddypress-pages\">Managing Pages</a>" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:532 +#: bp-core/admin/bp-core-admin-functions.php:533 msgid "<a href=\"https://codex.buddypress.org/getting-started/configure-components/#settings-buddypress-settings\">Managing Settings</a>" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:552 +#: bp-core/admin/bp-core-admin-functions.php:553 msgid "<a href=\"https://codex.buddypress.org/administrator-guide/extended-profiles/\">Managing Profile Fields</a>" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:576 +#: bp-core/admin/bp-core-admin-functions.php:577 msgid "By default, all but four of the BuddyPress components are enabled. You can selectively enable or disable any of the components by using the form below. Your BuddyPress installation will continue to function. However, the features of the disabled components will no longer be accessible to anyone using the site." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:580 +#: bp-core/admin/bp-core-admin-functions.php:581 msgid "BuddyPress Components use WordPress Pages for their root directory/archive pages. You can change the page associations for each active component by using the form below." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:584 +#: bp-core/admin/bp-core-admin-functions.php:585 msgid "Extra configuration settings are provided and activated. You can selectively enable or disable any setting by using the form on this screen." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:588 +#: bp-core/admin/bp-core-admin-functions.php:589 msgid "Your users will distinguish themselves through their profile page. Create relevant profile fields that will show on each users profile." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:588 +#: bp-core/admin/bp-core-admin-functions.php:589 msgid "Note: Any fields in the first group will appear on the signup page." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:780 -#: bp-core/admin/bp-core-admin-functions.php:789 -msgid "Logged-In" +#: bp-core/admin/bp-core-admin-functions.php:759 +#: bp-members/js/blocks/member.js:91 +msgid "BuddyPress Member" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:783 -#: bp-core/admin/bp-core-admin-functions.php:798 -msgid "Logged-Out" +#: bp-core/admin/bp-core-admin-functions.php:805 +msgid "Search BuddyPress member menu items" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:790 -msgid "<em>Logged-In</em> links are relative to the current user, and are not visible to visitors who are not logged in." +#: bp-core/admin/bp-core-admin-functions.php:806 +#: bp-core/admin/bp-core-admin-functions.php:831 +msgid "All BuddyPress Member menu items" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:799 -msgid "<em>Logged-Out</em> links are not visible to users who are logged in." +#: bp-core/admin/bp-core-admin-functions.php:842 +msgid "Logged-In" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:832 -msgid "Select All" +#: bp-core/admin/bp-core-admin-functions.php:843 +msgid "Logged-Out" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:841 -msgid "Add to Menu" +#: bp-core/admin/bp-core-admin-functions.php:844 +msgid "All" msgstr "" #. Translators: %s is the url to the BuddyPress tools administration screen. -#: bp-core/admin/bp-core-admin-functions.php:877 +#: bp-core/admin/bp-core-admin-functions.php:949 msgid "Are these emails not written in your site's language? Go to <a href=\"%s\">BuddyPress Tools and try the \"reinstall emails\"</a> tool." msgstr "" #. Translators: %s is the url to the BuddyPress codex page about BP Email tokens. -#: bp-core/admin/bp-core-admin-functions.php:898 +#: bp-core/admin/bp-core-admin-functions.php:970 msgid "Phrases wrapped in braces <code>{{ }}</code> are email tokens. <a href=\"%s\">Learn about tokens on the BuddyPress Codex</a>." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:949 +#: bp-core/admin/bp-core-admin-functions.php:1021 msgid "Choose when this email will be sent." msgstr "" #. translators: accessibility text -#: bp-core/admin/bp-core-admin-functions.php:962 -#: bp-core/admin/bp-core-admin-functions.php:981 +#: bp-core/admin/bp-core-admin-functions.php:1034 +#: bp-core/admin/bp-core-admin-functions.php:1053 msgid "Plain text email content" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:985 +#: bp-core/admin/bp-core-admin-functions.php:1057 msgid "Most email clients support HTML email. However, some people prefer to receive plain text email. Enter a plain text alternative version of your email here." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:1125 +#: bp-core/admin/bp-core-admin-functions.php:1197 #: bp-core/deprecated/3.0.php:136 #: bp-members/classes/class-bp-members-admin.php:365 msgid "User marked as spammer. Spam users are visible only to site admins." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:1127 +#: bp-core/admin/bp-core-admin-functions.php:1199 msgid "User removed from spam." msgstr "" @@ -2118,197 +2205,241 @@ msgstr "" msgid "Allow customizable cover images for groups" msgstr "" -#: bp-core/admin/bp-core-admin-slugs.php:121 +#: bp-core/admin/bp-core-admin-slugs.php:122 msgid "Directories" msgstr "" -#: bp-core/admin/bp-core-admin-slugs.php:123 +#: bp-core/admin/bp-core-admin-slugs.php:124 msgid "Associate a WordPress Page with each BuddyPress component directory." msgstr "" -#: bp-core/admin/bp-core-admin-slugs.php:142 -#: bp-core/admin/bp-core-admin-slugs.php:226 +#: bp-core/admin/bp-core-admin-slugs.php:143 +#: bp-core/admin/bp-core-admin-slugs.php:227 msgid "- None -" msgstr "" -#: bp-core/admin/bp-core-admin-slugs.php:150 +#: bp-core/admin/bp-core-admin-slugs.php:151 msgid "(opens in a new tab)" msgstr "" -#: bp-core/admin/bp-core-admin-slugs.php:187 +#: bp-core/admin/bp-core-admin-slugs.php:188 msgid "Registration" msgstr "" -#: bp-core/admin/bp-core-admin-slugs.php:190 +#: bp-core/admin/bp-core-admin-slugs.php:191 msgid "Associate WordPress Pages with the following BuddyPress Registration pages." msgstr "" #. translators: %s: the link to the Network settings page -#: bp-core/admin/bp-core-admin-slugs.php:196 +#: bp-core/admin/bp-core-admin-slugs.php:197 msgid "Registration is currently disabled. Before associating a page is allowed, please enable registration by selecting either the \"User accounts may be registered\" or \"Both sites and user accounts can be registered\" option on <a href=\"%s\">this page</a>." msgstr "" #. translators: %s: the link to the Site settings page -#: bp-core/admin/bp-core-admin-slugs.php:203 +#: bp-core/admin/bp-core-admin-slugs.php:204 msgid "Registration is currently disabled. Before associating a page is allowed, please enable registration by clicking on the \"Anyone can register\" checkbox on <a href=\"%s\">this page</a>." msgstr "" #: bp-core/admin/bp-core-admin-tools.php:22 -#: bp-core/admin/bp-core-admin-tools.php:474 -#: bp-core/admin/bp-core-admin-tools.php:481 -#: bp-core/classes/class-bp-admin.php:294 +#: bp-core/admin/bp-core-admin-tools.php:545 +#: bp-core/admin/bp-core-admin-tools.php:552 +#: bp-core/classes/class-bp-admin.php:297 msgid "BuddyPress Tools" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:24 -msgid "BuddyPress keeps track of various relationships between members, groups, and activity items. Occasionally these relationships become out of sync, most often after an import, update, or migration." +#: bp-core/admin/bp-core-admin-tools.php:25 +msgid "BuddyPress keeps track of various relationships between members, groups, and activity items." msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:25 -msgid "Use the tools below to manually recalculate these relationships." +#: bp-core/admin/bp-core-admin-tools.php:26 +msgid "Occasionally these relationships become out of sync, most often after an import, update, or migration." msgstr "" #: bp-core/admin/bp-core-admin-tools.php:27 +msgid "Use the tools below to manually recalculate these relationships." +msgstr "" + +#: bp-core/admin/bp-core-admin-tools.php:29 msgid "Some of these tools create substantial database overhead. Avoid running more than one repair job at a time." msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:32 +#: bp-core/admin/bp-core-admin-tools.php:31 +msgid "Activate checkboxe(s) to select the operation(s) to perform" +msgstr "" + +#: bp-core/admin/bp-core-admin-tools.php:36 msgid "Repair tools" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:41 +#: bp-core/admin/bp-core-admin-tools.php:47 msgid "Repair Items" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:102 +#: bp-core/admin/bp-core-admin-tools.php:108 msgid "Repair total members count." msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:108 +#: bp-core/admin/bp-core-admin-tools.php:114 msgid "Repair member \"last activity\" data." msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:117 +#: bp-core/admin/bp-core-admin-tools.php:123 msgid "Repair total friends count for each member." msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:127 +#: bp-core/admin/bp-core-admin-tools.php:133 msgid "Repair total groups count for each member." msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:137 +#: bp-core/admin/bp-core-admin-tools.php:143 msgid "Repopulate site tracking records." msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:146 +#: bp-core/admin/bp-core-admin-tools.php:150 +msgid "Repair site tracking site icons/blog avatars synchronization." +msgstr "" + +#: bp-core/admin/bp-core-admin-tools.php:160 msgid "Reinstall emails (delete and restore from defaults)." msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:154 +#: bp-core/admin/bp-core-admin-tools.php:168 msgid "Create the database table for Invitations and migrate existing group invitations if needed." msgstr "" #. translators: %s: the result of the action performed by the repair tool -#: bp-core/admin/bp-core-admin-tools.php:185 +#: bp-core/admin/bp-core-admin-tools.php:199 msgid "Counting the number of friends for each user… %s" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:186 -#: bp-core/admin/bp-core-admin-tools.php:245 -#: bp-core/admin/bp-core-admin-tools.php:290 +#: bp-core/admin/bp-core-admin-tools.php:200 +#: bp-core/admin/bp-core-admin-tools.php:259 +#: bp-core/admin/bp-core-admin-tools.php:304 +#: bp-core/admin/bp-core-admin-tools.php:336 msgid "Failed!" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:226 -#: bp-core/admin/bp-core-admin-tools.php:274 -#: bp-core/admin/bp-core-admin-tools.php:302 -#: bp-core/admin/bp-core-admin-tools.php:319 -#: bp-core/admin/bp-core-admin-tools.php:333 +#: bp-core/admin/bp-core-admin-tools.php:240 +#: bp-core/admin/bp-core-admin-tools.php:288 +#: bp-core/admin/bp-core-admin-tools.php:316 +#: bp-core/admin/bp-core-admin-tools.php:377 +#: bp-core/admin/bp-core-admin-tools.php:390 +#: bp-core/admin/bp-core-admin-tools.php:404 msgid "Complete!" msgstr "" #. translators: %s: the result of the action performed by the repair tool -#: bp-core/admin/bp-core-admin-tools.php:244 +#: bp-core/admin/bp-core-admin-tools.php:258 msgid "Counting the number of groups for each user… %s" msgstr "" #. translators: %s: the result of the action performed by the repair tool -#: bp-core/admin/bp-core-admin-tools.php:287 +#: bp-core/admin/bp-core-admin-tools.php:301 msgid "Repopulating Blogs records… %s" msgstr "" #. translators: %s: the result of the action performed by the repair tool -#: bp-core/admin/bp-core-admin-tools.php:316 +#: bp-core/admin/bp-core-admin-tools.php:333 +msgid "Repairing site icons/blog avatars synchronization… %s" +msgstr "" + +#. translators: %s: the result of the action performed by the repair tool +#: bp-core/admin/bp-core-admin-tools.php:387 msgid "Counting the number of active members on the site… %s" msgstr "" #. translators: %s: the result of the action performed by the repair tool -#: bp-core/admin/bp-core-admin-tools.php:331 +#: bp-core/admin/bp-core-admin-tools.php:402 msgid "Determining last activity dates for each user… %s" msgstr "" #. translators: %s: the result of the action performed by the repair tool -#: bp-core/admin/bp-core-admin-tools.php:351 +#: bp-core/admin/bp-core-admin-tools.php:422 msgid "Creating the Invitations database table if it does not exist… %s" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:352 +#: bp-core/admin/bp-core-admin-tools.php:423 msgid "Failed to create table!" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:364 +#: bp-core/admin/bp-core-admin-tools.php:434 msgid "Created invitations table!" msgstr "" #. translators: %s: the result of the action performed by the repair tool -#: bp-core/admin/bp-core-admin-tools.php:372 +#: bp-core/admin/bp-core-admin-tools.php:442 msgid "Migrating group invitations… %s" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:373 +#: bp-core/admin/bp-core-admin-tools.php:443 msgid "Failed to migrate invitations!" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:380 +#: bp-core/admin/bp-core-admin-tools.php:450 msgid "Migrated invitations!" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:445 -#: bp-core/classes/class-bp-admin.php:271 -#: bp-core/classes/class-bp-admin.php:272 +#: bp-core/admin/bp-core-admin-tools.php:515 +#: bp-core/classes/class-bp-admin.php:274 +#: bp-core/classes/class-bp-admin.php:275 msgid "Tools" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:476 +#: bp-core/admin/bp-core-admin-tools.php:547 msgid "BuddyPress keeps track of various relationships between users, groups, and activity items. Occasionally these relationships become out of sync, most often after an import, update, or migration." msgstr "" #. translators: %s: the link to the BuddyPress repair tools -#: bp-core/admin/bp-core-admin-tools.php:480 +#: bp-core/admin/bp-core-admin-tools.php:551 msgctxt "buddypress tools intro" msgid "Use the %s to repair these relationships." msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:541 +#: bp-core/admin/bp-core-admin-tools.php:612 msgid "Emails have been successfully reinstalled." msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:561 +#: bp-core/admin/bp-core-admin-tools.php:632 msgid "It looks like you have more sites to record. Resume recording by checking the \"Repopulate site tracking records\" option." msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:624 +#: bp-core/admin/bp-core-admin-tools.php:695 msgid "Version" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:628 +#: bp-core/admin/bp-core-admin-tools.php:699 msgid "Active components" msgstr "" -#: bp-core/admin/bp-core-admin-tools.php:632 +#: bp-core/admin/bp-core-admin-tools.php:703 msgid "Active template pack" msgstr "" +#: bp-core/admin/bp-core-admin-types.php:69 +msgid "The Type ID value is missing" +msgstr "" + +#: bp-core/admin/bp-core-admin-types.php:92 +msgid "The Type already exists" +msgstr "" + +#: bp-core/admin/bp-core-admin-types.php:170 +#: bp-core/admin/bp-core-admin-types.php:240 +msgid "The Term Type ID value is missing" +msgstr "" + +#: bp-core/admin/bp-core-admin-types.php:254 +msgid "The type was not deleted: it does not exist." +msgstr "" + +#: bp-core/admin/bp-core-admin-types.php:267 +msgid "This type is registered using code, deactivate the plugin or remove the custom code before trying to delete it again." +msgstr "" + +#: bp-core/admin/bp-core-admin-types.php:279 +msgid "There was an error while trying to delete this type." +msgstr "" + #: bp-core/bp-core-admin.php:25 msgid "Maintenance Release" msgid_plural "Maintenance Releases" @@ -2519,7 +2650,7 @@ msgid "Upload Failed! Error was: %s" msgstr "" #: bp-core/bp-core-attachments.php:1373 -#: bp-core/classes/trait-attachments.php:107 +#: bp-core/classes/trait-attachments.php:110 msgid "There was a problem uploading the cover image." msgstr "" @@ -2529,7 +2660,7 @@ msgstr "" #. translators: %s: the upload error message #: bp-core/bp-core-avatars.php:944 -#: bp-core/classes/trait-attachments.php:279 +#: bp-core/classes/trait-attachments.php:293 msgid "Upload failed! Error was: %s" msgstr "" @@ -2547,10 +2678,10 @@ msgstr "" msgid "You do not have access to this page." msgstr "" -#: bp-core/bp-core-caps.php:410 -#: bp-core/bp-core-caps.php:422 -#: bp-core/bp-core-caps.php:436 -#: bp-core/bp-core-caps.php:446 +#: bp-core/bp-core-caps.php:452 +#: bp-core/bp-core-caps.php:464 +#: bp-core/bp-core-caps.php:478 +#: bp-core/bp-core-caps.php:488 msgid "Special community roles no longer exist. Use mapped capabilities instead" msgstr "" @@ -2563,12 +2694,17 @@ msgstr "" msgid "You must log in to access the page you requested." msgstr "" +#: bp-core/bp-core-cssjs.php:181 +#: bp-templates/bp-nouveau/buddypress-functions.php:454 +msgid "Are you sure?" +msgstr "" + #: bp-core/bp-core-customizer-email.php:26 msgid "Customize the appearance of emails sent by BuddyPress." msgstr "" #: bp-core/bp-core-customizer-email.php:27 -#: bp-core/bp-core-filters.php:1156 +#: bp-core/bp-core-filters.php:1194 msgctxt "screen heading" msgid "BuddyPress Emails" msgstr "" @@ -2629,204 +2765,204 @@ msgstr "" msgid "Footer text" msgstr "" -#: bp-core/bp-core-filters.php:405 -#: bp-core/bp-core-filters.php:438 +#: bp-core/bp-core-filters.php:408 +#: bp-core/bp-core-filters.php:441 msgid "[User Set]" msgstr "" #. translators: %s: the page number. -#: bp-core/bp-core-filters.php:604 +#: bp-core/bp-core-filters.php:607 msgid "Page %s" msgstr "" -#: bp-core/bp-core-filters.php:800 +#: bp-core/bp-core-filters.php:813 msgctxt "customizer menu type label" msgid "Custom Link" msgstr "" -#: bp-core/bp-core-filters.php:821 +#: bp-core/bp-core-filters.php:834 msgctxt "customizer menu section title" msgid "BuddyPress (logged-in)" msgstr "" -#: bp-core/bp-core-filters.php:826 +#: bp-core/bp-core-filters.php:839 msgctxt "customizer menu section title" msgid "BuddyPress (logged-out)" msgstr "" -#: bp-core/bp-core-functions.php:750 +#: bp-core/bp-core-functions.php:763 msgctxt "Page title for the Activity directory." msgid "Activity" msgstr "" -#: bp-core/bp-core-functions.php:751 +#: bp-core/bp-core-functions.php:764 msgctxt "Page title for the Groups directory." msgid "Groups" msgstr "" -#: bp-core/bp-core-functions.php:752 +#: bp-core/bp-core-functions.php:765 msgctxt "Page title for the Sites directory." msgid "Sites" msgstr "" -#: bp-core/bp-core-functions.php:753 +#: bp-core/bp-core-functions.php:766 msgctxt "Page title for the Members directory." msgid "Members" msgstr "" -#: bp-core/bp-core-functions.php:754 +#: bp-core/bp-core-functions.php:767 msgctxt "Page title for the user activation screen." msgid "Activate" msgstr "" -#: bp-core/bp-core-functions.php:755 +#: bp-core/bp-core-functions.php:768 msgctxt "Page title for the user registration screen." msgid "Register" msgstr "" -#: bp-core/bp-core-functions.php:1170 +#: bp-core/bp-core-functions.php:1183 msgid "sometime" msgstr "" -#: bp-core/bp-core-functions.php:1179 +#: bp-core/bp-core-functions.php:1192 msgid "right now" msgstr "" #. translators: %s: the human time diff. -#: bp-core/bp-core-functions.php:1191 +#: bp-core/bp-core-functions.php:1204 msgid "%s ago" msgstr "" #. translators: %s: the number of years. -#: bp-core/bp-core-functions.php:1254 +#: bp-core/bp-core-functions.php:1267 msgid "%s year" msgid_plural "%s years" msgstr[0] "" msgstr[1] "" #. translators: %s: the number of months. -#: bp-core/bp-core-functions.php:1258 -#: bp-core/bp-core-functions.php:1298 +#: bp-core/bp-core-functions.php:1271 +#: bp-core/bp-core-functions.php:1311 msgid "%s month" msgid_plural "%s months" msgstr[0] "" msgstr[1] "" #. translators: %s: the number of weeks. -#: bp-core/bp-core-functions.php:1262 -#: bp-core/bp-core-functions.php:1302 +#: bp-core/bp-core-functions.php:1275 +#: bp-core/bp-core-functions.php:1315 msgid "%s week" msgid_plural "%s weeks" msgstr[0] "" msgstr[1] "" #. translators: %s: the number of days. -#: bp-core/bp-core-functions.php:1266 -#: bp-core/bp-core-functions.php:1306 +#: bp-core/bp-core-functions.php:1279 +#: bp-core/bp-core-functions.php:1319 msgid "%s day" msgid_plural "%s days" msgstr[0] "" msgstr[1] "" #. translators: %s: the number of hours. -#: bp-core/bp-core-functions.php:1270 -#: bp-core/bp-core-functions.php:1310 +#: bp-core/bp-core-functions.php:1283 +#: bp-core/bp-core-functions.php:1323 msgid "%s hour" msgid_plural "%s hours" msgstr[0] "" msgstr[1] "" #. translators: %s: the number of minutes. -#: bp-core/bp-core-functions.php:1274 -#: bp-core/bp-core-functions.php:1314 +#: bp-core/bp-core-functions.php:1287 +#: bp-core/bp-core-functions.php:1327 msgid "%s minute" msgid_plural "%s minutes" msgstr[0] "" msgstr[1] "" #. translators: %s: the number of seconds. -#: bp-core/bp-core-functions.php:1278 -#: bp-core/bp-core-functions.php:1318 +#: bp-core/bp-core-functions.php:1291 +#: bp-core/bp-core-functions.php:1331 msgid "%s second" msgid_plural "%s seconds" msgstr[0] "" msgstr[1] "" -#: bp-core/bp-core-functions.php:1293 +#: bp-core/bp-core-functions.php:1306 msgctxt "Separator in time since" msgid "," msgstr "" -#: bp-core/bp-core-functions.php:1577 +#: bp-core/bp-core-functions.php:1590 msgid "Not recently active" msgstr "" -#: bp-core/bp-core-functions.php:2446 +#: bp-core/bp-core-functions.php:2459 #: bp-core/classes/class-bp-core.php:31 msgid "BuddyPress Core" msgstr "" -#: bp-core/bp-core-functions.php:2447 +#: bp-core/bp-core-functions.php:2460 msgid "It‘s what makes <del>time travel</del> BuddyPress possible!" msgstr "" -#: bp-core/bp-core-functions.php:2450 +#: bp-core/bp-core-functions.php:2463 msgid "Community Members" msgstr "" -#: bp-core/bp-core-functions.php:2451 +#: bp-core/bp-core-functions.php:2464 msgid "Everything in a BuddyPress community revolves around its members." msgstr "" -#: bp-core/bp-core-functions.php:2468 +#: bp-core/bp-core-functions.php:2481 msgid "Friend Connections" msgstr "" -#: bp-core/bp-core-functions.php:2469 +#: bp-core/bp-core-functions.php:2482 msgid "Let your users make connections so they can track the activity of others and focus on the people they care about the most." msgstr "" -#: bp-core/bp-core-functions.php:2472 +#: bp-core/bp-core-functions.php:2485 msgid "Private Messaging" msgstr "" -#: bp-core/bp-core-functions.php:2473 +#: bp-core/bp-core-functions.php:2486 msgid "Allow your users to talk to each other directly and in private. Not just limited to one-on-one discussions, messages can be sent between any number of members." msgstr "" -#: bp-core/bp-core-functions.php:2477 +#: bp-core/bp-core-functions.php:2490 msgid "Global, personal, and group activity streams with threaded commenting, direct posting, favoriting, and @mentions, all with full RSS feed and email notification support." msgstr "" -#: bp-core/bp-core-functions.php:2484 +#: bp-core/bp-core-functions.php:2497 msgid "User Groups" msgstr "" -#: bp-core/bp-core-functions.php:2485 +#: bp-core/bp-core-functions.php:2498 msgid "Groups allow your users to organize themselves into specific public, private or hidden sections with separate activity streams and member listings." msgstr "" -#: bp-core/bp-core-functions.php:2488 +#: bp-core/bp-core-functions.php:2501 msgid "Site Tracking" msgstr "" -#: bp-core/bp-core-functions.php:2489 +#: bp-core/bp-core-functions.php:2502 msgid "Record activity for new posts and comments from your site." msgstr "" -#: bp-core/bp-core-functions.php:2495 +#: bp-core/bp-core-functions.php:2508 msgid "Record activity for new sites, posts, and comments across your network." msgstr "" -#: bp-core/bp-core-functions.php:2560 +#: bp-core/bp-core-functions.php:2573 #: bp-core/classes/class-bp-core-login-widget.php:84 #: bp-core/deprecated/1.5.php:313 #: bp-core/deprecated/2.1.php:258 -#: bp-members/bp-members-template.php:1372 +#: bp-members/bp-members-template.php:1364 msgid "Log Out" msgstr "" -#: bp-core/bp-core-functions.php:2626 +#: bp-core/bp-core-functions.php:2639 #: bp-core/classes/class-bp-core-login-widget.php:116 #: bp-core/deprecated/2.1.php:190 #: bp-members/bp-members-adminbar.php:55 @@ -2834,180 +2970,227 @@ msgstr "" msgid "Log In" msgstr "" -#: bp-core/bp-core-functions.php:2892 +#: bp-core/bp-core-functions.php:2905 msgctxt "email post type label" msgid "Add New" msgstr "" -#: bp-core/bp-core-functions.php:2893 +#: bp-core/bp-core-functions.php:2906 msgctxt "email post type label" msgid "Add a New Email" msgstr "" -#: bp-core/bp-core-functions.php:2894 +#: bp-core/bp-core-functions.php:2907 msgctxt "email post type label" msgid "All Emails" msgstr "" -#: bp-core/bp-core-functions.php:2895 +#: bp-core/bp-core-functions.php:2908 msgctxt "email post type label" msgid "Edit Email" msgstr "" -#: bp-core/bp-core-functions.php:2896 +#: bp-core/bp-core-functions.php:2909 msgctxt "email post type label" msgid "Filter email list" msgstr "" -#: bp-core/bp-core-functions.php:2897 +#: bp-core/bp-core-functions.php:2910 msgctxt "email post type label" msgid "Email list" msgstr "" -#: bp-core/bp-core-functions.php:2898 +#: bp-core/bp-core-functions.php:2911 msgctxt "email post type label" msgid "Email list navigation" msgstr "" -#: bp-core/bp-core-functions.php:2899 +#: bp-core/bp-core-functions.php:2912 msgctxt "email post type name" msgid "Emails" msgstr "" -#: bp-core/bp-core-functions.php:2900 +#: bp-core/bp-core-functions.php:2913 msgctxt "email post type label" msgid "BuddyPress Emails" msgstr "" -#: bp-core/bp-core-functions.php:2901 +#: bp-core/bp-core-functions.php:2914 msgctxt "email post type label" msgid "New Email" msgstr "" -#: bp-core/bp-core-functions.php:2902 +#: bp-core/bp-core-functions.php:2915 msgctxt "email post type label" msgid "No emails found" msgstr "" -#: bp-core/bp-core-functions.php:2903 +#: bp-core/bp-core-functions.php:2916 msgctxt "email post type label" msgid "No emails found in Trash" msgstr "" -#: bp-core/bp-core-functions.php:2904 +#: bp-core/bp-core-functions.php:2917 msgctxt "email post type label" msgid "Search Emails" msgstr "" -#: bp-core/bp-core-functions.php:2905 +#: bp-core/bp-core-functions.php:2918 msgctxt "email post type singular name" msgid "Email" msgstr "" -#: bp-core/bp-core-functions.php:2906 +#: bp-core/bp-core-functions.php:2919 msgctxt "email post type label" msgid "Uploaded to this email" msgstr "" -#: bp-core/bp-core-functions.php:2907 +#: bp-core/bp-core-functions.php:2920 msgctxt "email post type label" msgid "View Email" msgstr "" +#: bp-core/bp-core-functions.php:2980 +msgctxt "BP Type name label" +msgid "Plural Name" +msgstr "" + +#: bp-core/bp-core-functions.php:2981 +msgctxt "BP Type singular name label" +msgid "Singular name" +msgstr "" + +#: bp-core/bp-core-functions.php:2982 +msgctxt "BP Type has directory checkbox label" +msgid "Has Directory View" +msgstr "" + #: bp-core/bp-core-functions.php:2983 +msgctxt "BP Type slug label" +msgid "Custom type directory slug" +msgstr "" + +#: bp-core/bp-core-functions.php:3031 msgctxt "email type taxonomy label" msgid "New Email Situation" msgstr "" -#: bp-core/bp-core-functions.php:2984 +#: bp-core/bp-core-functions.php:3032 msgctxt "email type taxonomy label" msgid "All Email Situations" msgstr "" -#: bp-core/bp-core-functions.php:2985 +#: bp-core/bp-core-functions.php:3033 msgctxt "email type taxonomy label" msgid "Edit Email Situations" msgstr "" -#: bp-core/bp-core-functions.php:2986 +#: bp-core/bp-core-functions.php:3034 msgctxt "email type taxonomy label" msgid "Email list" msgstr "" -#: bp-core/bp-core-functions.php:2987 +#: bp-core/bp-core-functions.php:3035 msgctxt "email type taxonomy label" msgid "Email list navigation" msgstr "" -#: bp-core/bp-core-functions.php:2988 +#: bp-core/bp-core-functions.php:3036 msgctxt "email type taxonomy label" msgid "Situations" msgstr "" -#: bp-core/bp-core-functions.php:2989 +#: bp-core/bp-core-functions.php:3037 msgctxt "email type taxonomy name" msgid "Situation" msgstr "" -#: bp-core/bp-core-functions.php:2990 +#: bp-core/bp-core-functions.php:3038 msgctxt "email type taxonomy label" msgid "New email situation name" msgstr "" -#: bp-core/bp-core-functions.php:2991 +#: bp-core/bp-core-functions.php:3039 msgctxt "email type taxonomy label" msgid "No email situations found." msgstr "" -#: bp-core/bp-core-functions.php:2992 +#: bp-core/bp-core-functions.php:3040 msgctxt "email type taxonomy label" msgid "No email situations" msgstr "" -#: bp-core/bp-core-functions.php:2993 +#: bp-core/bp-core-functions.php:3041 msgctxt "email type taxonomy label" msgid "Popular Email Situation" msgstr "" -#: bp-core/bp-core-functions.php:2994 +#: bp-core/bp-core-functions.php:3042 msgctxt "email type taxonomy label" msgid "Search Emails" msgstr "" -#: bp-core/bp-core-functions.php:2995 +#: bp-core/bp-core-functions.php:3043 msgctxt "email type taxonomy singular name" msgid "Email" msgstr "" -#: bp-core/bp-core-functions.php:2996 +#: bp-core/bp-core-functions.php:3044 msgctxt "email type taxonomy label" msgid "Update Email Situation" msgstr "" -#: bp-core/bp-core-functions.php:2997 +#: bp-core/bp-core-functions.php:3045 msgctxt "email type taxonomy label" msgid "View Email Situation" msgstr "" +#: bp-core/bp-core-functions.php:3069 +msgctxt "email type taxonomy description" +msgid "BuddyPress email types" +msgstr "" + +#: bp-core/bp-core-functions.php:3090 +msgid "The name of this type in singular form. " +msgstr "" + +#: bp-core/bp-core-functions.php:3096 +msgid "The name of this type in plural form." +msgstr "" + +#: bp-core/bp-core-functions.php:3102 +msgid "Make a list matching this type available on the directory." +msgstr "" + +#: bp-core/bp-core-functions.php:3108 +msgid "Type slug" +msgstr "" + +#: bp-core/bp-core-functions.php:3109 +#: bp-groups/bp-groups-functions.php:2632 +#: bp-members/bp-members-functions.php:2773 +msgid "Enter if you want the type slug to be different from its ID." +msgstr "" + #. translators: 1. Copyright year, 2. Site name -#: bp-core/bp-core-functions.php:3277 +#: bp-core/bp-core-functions.php:3552 msgctxt "copyright text for email footers" msgid "© %1$s %2$s" msgstr "" #. translators: link to Privacy Policy -#: bp-core/bp-core-functions.php:3289 -#: bp-templates/bp-nouveau/includes/template-tags.php:2563 +#: bp-core/bp-core-functions.php:3564 +#: bp-templates/bp-nouveau/includes/template-tags.php:2592 msgid "Privacy Policy" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3406 +#: bp-core/bp-core-functions.php:3689 msgid "[{{{site.name}}}] {{poster.name}} replied to one of your updates" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3408 +#: bp-core/bp-core-functions.php:3691 msgid "" "{{poster.name}} replied to one of your updates:\n" "\n" @@ -3017,7 +3200,7 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3410 +#: bp-core/bp-core-functions.php:3693 msgid "" "{{poster.name}} replied to one of your updates:\n" "\n" @@ -3027,12 +3210,12 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3414 +#: bp-core/bp-core-functions.php:3697 msgid "[{{{site.name}}}] {{poster.name}} replied to one of your comments" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3416 +#: bp-core/bp-core-functions.php:3699 msgid "" "{{poster.name}} replied to one of your comments:\n" "\n" @@ -3042,7 +3225,7 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3418 +#: bp-core/bp-core-functions.php:3701 msgid "" "{{poster.name}} replied to one of your comments:\n" "\n" @@ -3052,12 +3235,12 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3422 +#: bp-core/bp-core-functions.php:3705 msgid "[{{{site.name}}}] {{poster.name}} mentioned you in a status update" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3424 +#: bp-core/bp-core-functions.php:3707 msgid "" "{{poster.name}} mentioned you in a status update:\n" "\n" @@ -3067,7 +3250,7 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3426 +#: bp-core/bp-core-functions.php:3709 msgid "" "{{poster.name}} mentioned you in a status update:\n" "\n" @@ -3077,12 +3260,12 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3430 +#: bp-core/bp-core-functions.php:3713 msgid "[{{{site.name}}}] {{poster.name}} mentioned you in an update" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3432 +#: bp-core/bp-core-functions.php:3715 msgid "" "{{poster.name}} mentioned you in the group \"{{group.name}}\":\n" "\n" @@ -3092,7 +3275,7 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3434 +#: bp-core/bp-core-functions.php:3717 msgid "" "{{poster.name}} mentioned you in the group \"{{group.name}}\":\n" "\n" @@ -3102,12 +3285,12 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3438 +#: bp-core/bp-core-functions.php:3721 msgid "[{{{site.name}}}] Activate your account" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3440 +#: bp-core/bp-core-functions.php:3723 msgid "" "Thanks for registering!\n" "\n" @@ -3118,7 +3301,7 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3442 +#: bp-core/bp-core-functions.php:3725 msgid "" "Thanks for registering!\n" "\n" @@ -3128,12 +3311,12 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3446 +#: bp-core/bp-core-functions.php:3729 msgid "[{{{site.name}}}] Activate {{{user-site.url}}}" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3448 +#: bp-core/bp-core-functions.php:3731 msgid "" "Thanks for registering!\n" "\n" @@ -3143,7 +3326,7 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3450 +#: bp-core/bp-core-functions.php:3733 msgid "" "Thanks for registering!\n" "\n" @@ -3153,12 +3336,12 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3457 +#: bp-core/bp-core-functions.php:3740 msgid "[{{{site.name}}}] New friendship request from {{initiator.name}}" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3459 +#: bp-core/bp-core-functions.php:3742 msgid "" "<a href=\"{{{initiator.url}}}\">{{initiator.name}}</a> wants to add you as a friend.\n" "\n" @@ -3166,7 +3349,7 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3461 +#: bp-core/bp-core-functions.php:3744 msgid "" "{{initiator.name}} wants to add you as a friend.\n" "\n" @@ -3176,17 +3359,17 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3465 +#: bp-core/bp-core-functions.php:3748 msgid "[{{{site.name}}}] {{friend.name}} accepted your friendship request" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3467 +#: bp-core/bp-core-functions.php:3750 msgid "<a href=\"{{{friendship.url}}}\">{{friend.name}}</a> accepted your friend request." msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3469 +#: bp-core/bp-core-functions.php:3752 msgid "" "{{friend.name}} accepted your friend request.\n" "\n" @@ -3194,19 +3377,19 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3473 +#: bp-core/bp-core-functions.php:3756 msgid "[{{{site.name}}}] Group details updated" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3475 +#: bp-core/bp-core-functions.php:3758 msgid "" "Group details for the group "<a href=\"{{{group.url}}}\">{{group.name}}</a>" were updated:\n" "<blockquote>{{changed_text}}</blockquote>" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3477 +#: bp-core/bp-core-functions.php:3760 msgid "" "Group details for the group \"{{group.name}}\" were updated:\n" "\n" @@ -3216,12 +3399,12 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3481 +#: bp-core/bp-core-functions.php:3764 msgid "[{{{site.name}}}] You have an invitation to the group: \"{{group.name}}\"" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3483 +#: bp-core/bp-core-functions.php:3766 msgid "" "<a href=\"{{{inviter.url}}}\">{{inviter.name}}</a> has invited you to join the group: "{{group.name}}".\n" "{{invite.message}}\n" @@ -3229,7 +3412,7 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3485 +#: bp-core/bp-core-functions.php:3768 msgid "" "{{inviter.name}} has invited you to join the group: \"{{group.name}}\".\n" "\n" @@ -3240,17 +3423,17 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3489 +#: bp-core/bp-core-functions.php:3772 msgid "[{{{site.name}}}] You have been promoted in the group: \"{{group.name}}\"" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3491 +#: bp-core/bp-core-functions.php:3774 msgid "You have been promoted to <b>{{promoted_to}}</b> in the group "<a href=\"{{{group.url}}}\">{{group.name}}</a>"." msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3493 +#: bp-core/bp-core-functions.php:3776 msgid "" "You have been promoted to {{promoted_to}} in the group: \"{{group.name}}\".\n" "\n" @@ -3258,12 +3441,12 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3497 +#: bp-core/bp-core-functions.php:3780 msgid "[{{{site.name}}}] Membership request for group: {{group.name}}" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3499 +#: bp-core/bp-core-functions.php:3782 msgid "" "<a href=\"{{{profile.url}}}\">{{requesting-user.name}}</a> wants to join the group "{{group.name}}".\n" " {{request.message}}\n" @@ -3273,7 +3456,7 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3501 +#: bp-core/bp-core-functions.php:3784 msgid "" "{{requesting-user.name}} wants to join the group \"{{group.name}}\". As you are the administrator of this group, you must either accept or reject the membership request.\n" "\n" @@ -3283,12 +3466,12 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3505 +#: bp-core/bp-core-functions.php:3788 msgid "[{{{site.name}}}] New message from {{sender.name}}" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3507 +#: bp-core/bp-core-functions.php:3790 msgid "" "{{sender.name}} sent you a new message: "{{usersubject}}"\n" "\n" @@ -3298,7 +3481,7 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3509 +#: bp-core/bp-core-functions.php:3792 msgid "" "{{sender.name}} sent you a new message: \"{{usersubject}}\"\n" "\n" @@ -3308,12 +3491,12 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3513 +#: bp-core/bp-core-functions.php:3796 msgid "[{{{site.name}}}] Verify your new email address" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3515 +#: bp-core/bp-core-functions.php:3798 msgid "" "You recently changed the email address associated with your account on {{site.name}} to {{user.email}}. If this is correct, <a href=\"{{{verify.url}}}\">go here to confirm the change</a>.\n" "\n" @@ -3321,7 +3504,7 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3517 +#: bp-core/bp-core-functions.php:3800 msgid "" "You recently changed the email address associated with your account on {{site.name}} to {{user.email}}. If this is correct, go to the following link to confirm the change: {{{verify.url}}}\n" "\n" @@ -3329,17 +3512,17 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3521 +#: bp-core/bp-core-functions.php:3804 msgid "[{{{site.name}}}] Membership request for group \"{{group.name}}\" accepted" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3523 +#: bp-core/bp-core-functions.php:3806 msgid "Your membership request for the group "<a href=\"{{{group.url}}}\">{{group.name}}</a>" has been accepted." msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3525 +#: bp-core/bp-core-functions.php:3808 msgid "" "Your membership request for the group \"{{group.name}}\" has been accepted.\n" "\n" @@ -3347,146 +3530,146 @@ msgid "" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3529 +#: bp-core/bp-core-functions.php:3812 msgid "[{{{site.name}}}] Membership request for group \"{{group.name}}\" rejected" msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3531 +#: bp-core/bp-core-functions.php:3814 msgid "Your membership request for the group "<a href=\"{{{group.url}}}\">{{group.name}}</a>" has been rejected." msgstr "" #. translators: do not remove {} brackets or translate its contents. -#: bp-core/bp-core-functions.php:3533 +#: bp-core/bp-core-functions.php:3816 msgid "" "Your membership request for the group \"{{group.name}}\" has been rejected.\n" "\n" "To request membership again, visit: {{{group.url}}}" msgstr "" -#: bp-core/bp-core-functions.php:3558 +#: bp-core/bp-core-functions.php:3841 msgid "A member has replied to an activity update that the recipient posted." msgstr "" -#: bp-core/bp-core-functions.php:3561 -#: bp-core/bp-core-functions.php:3569 +#: bp-core/bp-core-functions.php:3844 +#: bp-core/bp-core-functions.php:3852 msgid "You will no longer receive emails when someone replies to an update or comment you posted." msgstr "" -#: bp-core/bp-core-functions.php:3566 +#: bp-core/bp-core-functions.php:3849 msgid "A member has replied to a comment on an activity update that the recipient posted." msgstr "" -#: bp-core/bp-core-functions.php:3574 +#: bp-core/bp-core-functions.php:3857 msgid "Recipient was mentioned in an activity update." msgstr "" -#: bp-core/bp-core-functions.php:3577 -#: bp-core/bp-core-functions.php:3585 +#: bp-core/bp-core-functions.php:3860 +#: bp-core/bp-core-functions.php:3868 msgid "You will no longer receive emails when someone mentions you in an update." msgstr "" -#: bp-core/bp-core-functions.php:3582 +#: bp-core/bp-core-functions.php:3865 msgid "Recipient was mentioned in a group activity update." msgstr "" -#: bp-core/bp-core-functions.php:3590 +#: bp-core/bp-core-functions.php:3873 msgid "Recipient has registered for an account." msgstr "" -#: bp-core/bp-core-functions.php:3595 +#: bp-core/bp-core-functions.php:3878 msgid "Recipient has registered for an account and site." msgstr "" -#: bp-core/bp-core-functions.php:3600 +#: bp-core/bp-core-functions.php:3883 msgid "A member has sent a friend request to the recipient." msgstr "" -#: bp-core/bp-core-functions.php:3603 +#: bp-core/bp-core-functions.php:3886 msgid "You will no longer receive emails when someone sends you a friend request." msgstr "" -#: bp-core/bp-core-functions.php:3608 +#: bp-core/bp-core-functions.php:3891 msgid "Recipient has had a friend request accepted by a member." msgstr "" -#: bp-core/bp-core-functions.php:3611 +#: bp-core/bp-core-functions.php:3894 msgid "You will no longer receive emails when someone accepts your friendship request." msgstr "" -#: bp-core/bp-core-functions.php:3616 +#: bp-core/bp-core-functions.php:3899 msgid "A group's details were updated." msgstr "" -#: bp-core/bp-core-functions.php:3619 +#: bp-core/bp-core-functions.php:3902 msgid "You will no longer receive emails when one of your groups is updated." msgstr "" -#: bp-core/bp-core-functions.php:3624 +#: bp-core/bp-core-functions.php:3907 msgid "A member has sent a group invitation to the recipient." msgstr "" -#: bp-core/bp-core-functions.php:3627 +#: bp-core/bp-core-functions.php:3910 msgid "You will no longer receive emails when you are invited to join a group." msgstr "" -#: bp-core/bp-core-functions.php:3632 +#: bp-core/bp-core-functions.php:3915 msgid "Recipient's status within a group has changed." msgstr "" -#: bp-core/bp-core-functions.php:3635 +#: bp-core/bp-core-functions.php:3918 msgid "You will no longer receive emails when you have been promoted in a group." msgstr "" -#: bp-core/bp-core-functions.php:3640 +#: bp-core/bp-core-functions.php:3923 msgid "A member has requested permission to join a group." msgstr "" -#: bp-core/bp-core-functions.php:3643 +#: bp-core/bp-core-functions.php:3926 msgid "You will no longer receive emails when someone requests to be a member of your group." msgstr "" -#: bp-core/bp-core-functions.php:3648 +#: bp-core/bp-core-functions.php:3931 msgid "Recipient has received a private message." msgstr "" -#: bp-core/bp-core-functions.php:3651 +#: bp-core/bp-core-functions.php:3934 msgid "You will no longer receive emails when someone sends you a message." msgstr "" -#: bp-core/bp-core-functions.php:3656 +#: bp-core/bp-core-functions.php:3939 msgid "Recipient has changed their email address." msgstr "" -#: bp-core/bp-core-functions.php:3661 +#: bp-core/bp-core-functions.php:3944 msgid "Recipient had requested to join a group, which was accepted." msgstr "" -#: bp-core/bp-core-functions.php:3664 -#: bp-core/bp-core-functions.php:3672 +#: bp-core/bp-core-functions.php:3947 +#: bp-core/bp-core-functions.php:3955 msgid "You will no longer receive emails when your request to join a group has been accepted or denied." msgstr "" -#: bp-core/bp-core-functions.php:3669 +#: bp-core/bp-core-functions.php:3952 msgid "Recipient had requested to join a group, which was rejected." msgstr "" -#: bp-core/bp-core-functions.php:3717 -#: bp-core/bp-core-functions.php:3723 -#: bp-core/bp-core-functions.php:3728 +#: bp-core/bp-core-functions.php:4000 +#: bp-core/bp-core-functions.php:4006 +#: bp-core/bp-core-functions.php:4011 msgid "Something has gone wrong." msgstr "" -#: bp-core/bp-core-functions.php:3718 -#: bp-core/bp-core-functions.php:3724 +#: bp-core/bp-core-functions.php:4001 +#: bp-core/bp-core-functions.php:4007 msgid "Please log in and go to your settings to unsubscribe from notification emails." msgstr "" -#: bp-core/bp-core-functions.php:3729 +#: bp-core/bp-core-functions.php:4012 msgid "Please go to your notifications settings to unsubscribe from emails." msgstr "" -#: bp-core/bp-core-functions.php:3757 +#: bp-core/bp-core-functions.php:4040 msgid "You can change this or any other email notification preferences in your email settings." msgstr "" @@ -3499,8 +3682,8 @@ msgctxt "Comment moderation" msgid "You have posted an inappropriate word." msgstr "" -#: bp-core/bp-core-moderation.php:289 -msgctxt "Comment blacklist" +#: bp-core/bp-core-moderation.php:308 +msgctxt "Comment disallowed key" msgid "You have posted an inappropriate word." msgstr "" @@ -3518,9 +3701,20 @@ msgstr "" msgid "The group type you provided, %1$s, is not one of %2$s." msgstr "" -#: bp-core/bp-core-taxonomy.php:33 -msgctxt "email type taxonomy description" -msgid "BuddyPress email types" +#: bp-core/bp-core-taxonomy.php:324 +msgid "Invalid taxonomy." +msgstr "" + +#: bp-core/bp-core-taxonomy.php:450 +msgid "Sorry, the term ID and the taxonomy are required arguments." +msgstr "" + +#: bp-core/bp-core-taxonomy.php:483 +msgid "Sorry, the term does not exist." +msgstr "" + +#: bp-core/bp-core-taxonomy.php:487 +msgid "Sorry, the default term cannot be deleted." msgstr "" #. translators: %s: Name of the BuddyPress component @@ -3538,7 +3732,10 @@ msgstr "" #: bp-groups/classes/class-bp-groups-invite-template.php:254 #: bp-groups/classes/class-bp-groups-invite-template.php:266 #: bp-members/bp-members-blocks.php:115 +#: bp-members/bp-members-blocks.php:268 #: bp-templates/bp-nouveau/includes/activity/functions.php:93 +#: bp-groups/js/blocks/groups.js:334 +#: bp-members/js/blocks/members.js:320 msgid "Profile photo of %s" msgstr "" @@ -3599,8 +3796,8 @@ msgid "Activate Your Account" msgstr "" #: bp-core/bp-core-template.php:3145 -#: bp-groups/bp-groups-template.php:3467 -#: bp-templates/bp-nouveau/includes/groups/functions.php:544 +#: bp-groups/bp-groups-template.php:3557 +#: bp-templates/bp-nouveau/includes/groups/functions.php:585 msgid "Create a Group" msgstr "" @@ -3630,440 +3827,514 @@ msgctxt "component directory title" msgid "Members" msgstr "" -#: bp-core/classes/class-bp-admin.php:220 +#: bp-core/classes/class-bp-admin-types.php:324 +#: bp-core/classes/class-bp-admin-types.php:498 +msgid "Type ID" +msgstr "" + +#: bp-core/classes/class-bp-admin-types.php:325 +msgid "Enter a lower-case string without spaces or special characters (used internally to identify the type)." +msgstr "" + +#: bp-core/classes/class-bp-admin-types.php:367 +msgid "Type metadata labels need to be set into the labels argument when registering your taxonomy using the meta key as the label’s key." +msgstr "" + +#. translators: %s is the name of the Type meta key +#: bp-core/classes/class-bp-admin-types.php:371 +msgid "As a result, the form elements for the \"%s\" meta key cannot be displayed" +msgstr "" + +#: bp-core/classes/class-bp-admin-types.php:503 +#: bp-core/deprecated/1.5.php:153 +#: bp-members/classes/class-bp-members-list-table.php:151 +#: bp-members/classes/class-bp-members-ms-list-table.php:138 +#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:36 +#: bp-templates/bp-nouveau/includes/members/functions.php:472 +msgid "Name" +msgstr "" + +#: bp-core/classes/class-bp-admin-types.php:504 +msgctxt "Number/count of types" +msgid "Count" +msgstr "" + +#: bp-core/classes/class-bp-admin.php:223 msgid "BuddyPress Help" msgstr "" -#: bp-core/classes/class-bp-admin.php:221 +#: bp-core/classes/class-bp-admin.php:224 msgid "Help" msgstr "" -#: bp-core/classes/class-bp-admin.php:230 +#: bp-core/classes/class-bp-admin.php:233 msgid "BuddyPress Components" msgstr "" -#: bp-core/classes/class-bp-admin.php:239 -#: bp-core/classes/class-bp-admin.php:240 +#: bp-core/classes/class-bp-admin.php:242 +#: bp-core/classes/class-bp-admin.php:243 msgid "BuddyPress Pages" msgstr "" -#: bp-core/classes/class-bp-admin.php:248 -#: bp-core/classes/class-bp-admin.php:249 +#: bp-core/classes/class-bp-admin.php:251 +#: bp-core/classes/class-bp-admin.php:252 msgid "BuddyPress Options" msgstr "" -#: bp-core/classes/class-bp-admin.php:258 -#: bp-core/classes/class-bp-admin.php:259 +#: bp-core/classes/class-bp-admin.php:261 +#: bp-core/classes/class-bp-admin.php:262 msgid "BuddyPress Credits" msgstr "" -#: bp-core/classes/class-bp-admin.php:282 -#: bp-core/classes/class-bp-admin.php:283 +#: bp-core/classes/class-bp-admin.php:285 +#: bp-core/classes/class-bp-admin.php:286 msgid "Available Tools" msgstr "" -#: bp-core/classes/class-bp-admin.php:339 -#: bp-core/classes/class-bp-admin.php:340 +#: bp-core/classes/class-bp-admin.php:342 +#: bp-core/classes/class-bp-admin.php:343 msgctxt "screen heading" msgid "Emails" msgstr "" -#: bp-core/classes/class-bp-admin.php:349 -#: bp-core/classes/class-bp-admin.php:350 +#: bp-core/classes/class-bp-admin.php:352 +#: bp-core/classes/class-bp-admin.php:353 msgctxt "email menu label" msgid "Customize" msgstr "" -#: bp-core/classes/class-bp-admin.php:372 +#: bp-core/classes/class-bp-admin.php:375 msgid "Main Settings" msgstr "" -#: bp-core/classes/class-bp-admin.php:375 -#: bp-core/classes/class-bp-admin.php:385 +#: bp-core/classes/class-bp-admin.php:378 +#: bp-core/classes/class-bp-admin.php:388 msgid "Toolbar" msgstr "" -#: bp-core/classes/class-bp-admin.php:390 +#: bp-core/classes/class-bp-admin.php:393 msgid "Account Deletion" msgstr "" -#: bp-core/classes/class-bp-admin.php:394 +#: bp-core/classes/class-bp-admin.php:397 msgid "Template Pack" msgstr "" -#: bp-core/classes/class-bp-admin.php:400 +#: bp-core/classes/class-bp-admin.php:403 msgctxt "BuddyPress setting tab" msgid "Members Settings" msgstr "" -#: bp-core/classes/class-bp-admin.php:403 +#: bp-core/classes/class-bp-admin.php:406 msgid "Profile Photo Uploads" msgstr "" -#: bp-core/classes/class-bp-admin.php:408 +#: bp-core/classes/class-bp-admin.php:411 msgid "Cover Image Uploads" msgstr "" -#: bp-core/classes/class-bp-admin.php:417 +#: bp-core/classes/class-bp-admin.php:420 msgctxt "BuddyPress setting tab" msgid "Profile Settings" msgstr "" -#: bp-core/classes/class-bp-admin.php:420 +#: bp-core/classes/class-bp-admin.php:423 msgid "Profile Syncing" msgstr "" -#: bp-core/classes/class-bp-admin.php:429 +#: bp-core/classes/class-bp-admin.php:432 msgid "Groups Settings" msgstr "" -#: bp-core/classes/class-bp-admin.php:432 +#: bp-core/classes/class-bp-admin.php:435 msgid "Group Creation" msgstr "" -#: bp-core/classes/class-bp-admin.php:436 +#: bp-core/classes/class-bp-admin.php:439 msgid "Group Photo Uploads" msgstr "" -#: bp-core/classes/class-bp-admin.php:441 +#: bp-core/classes/class-bp-admin.php:444 msgid "Group Cover Image Uploads" msgstr "" -#: bp-core/classes/class-bp-admin.php:451 +#: bp-core/classes/class-bp-admin.php:454 msgid "Activity Settings" msgstr "" -#: bp-core/classes/class-bp-admin.php:454 +#: bp-core/classes/class-bp-admin.php:457 msgid "Post Comments" msgstr "" -#: bp-core/classes/class-bp-admin.php:458 +#: bp-core/classes/class-bp-admin.php:461 msgid "Activity auto-refresh" msgstr "" -#: bp-core/classes/class-bp-admin.php:463 +#: bp-core/classes/class-bp-admin.php:466 msgid "Akismet" msgstr "" -#: bp-core/classes/class-bp-admin.php:485 -#: bp-core/classes/class-bp-admin.php:512 +#: bp-core/classes/class-bp-admin.php:488 +#: bp-core/classes/class-bp-admin.php:515 msgctxt "Colloquial alternative to \"learn about BuddyPress\"" msgid "Hello, BuddyPress!" msgstr "" -#: bp-core/classes/class-bp-admin.php:511 +#: bp-core/classes/class-bp-admin.php:514 #: bp-groups/classes/class-bp-groups-component.php:715 #: bp-settings/bp-settings-functions.php:208 #: bp-settings/classes/class-bp-settings-component.php:28 #: bp-settings/classes/class-bp-settings-component.php:142 #: bp-settings/classes/class-bp-settings-component.php:243 -#: bp-groups/js/blocks/group.js:70 -#: bp-members/js/blocks/member.js:69 +#: bp-groups/js/blocks/group.js:132 +#: bp-groups/js/blocks/groups.js:382 +#: bp-members/js/blocks/member.js:120 +#: bp-members/js/blocks/members.js:371 msgid "Settings" msgstr "" -#: bp-core/classes/class-bp-admin.php:549 +#: bp-core/classes/class-bp-admin.php:552 msgid "Sorry, the page you requested was not found." msgstr "" -#: bp-core/classes/class-bp-admin.php:550 +#: bp-core/classes/class-bp-admin.php:553 msgid "Hello BuddyPress" msgstr "" -#: bp-core/classes/class-bp-admin.php:566 +#: bp-core/classes/class-bp-admin.php:569 msgid "Suggested text:" msgstr "" -#: bp-core/classes/class-bp-admin.php:571 +#: bp-core/classes/class-bp-admin.php:574 msgid "What personal data we collect and why we collect it" msgstr "" -#: bp-core/classes/class-bp-admin.php:572 +#: bp-core/classes/class-bp-admin.php:575 msgid "Sites powered by BuddyPress rely heavily on user-provided data. In this section, you should note what data you collect, from both registered users and anonymous visitors." msgstr "" -#: bp-core/classes/class-bp-admin.php:575 +#: bp-core/classes/class-bp-admin.php:578 msgid "Profile Data" msgstr "" -#: bp-core/classes/class-bp-admin.php:576 +#: bp-core/classes/class-bp-admin.php:579 msgid "In this section you should note what information is collected on user profiles. The suggested text gives an overview of the kinds of profile data collected by BuddyPress." msgstr "" -#: bp-core/classes/class-bp-admin.php:578 +#: bp-core/classes/class-bp-admin.php:581 msgid "When you register for the site, you may be asked to provide certain personal data for display on your profile. The \"Name\" field is required as well as public, and user profiles are visible to any site visitor. Other profile information may be required or optional, as configured by the site administrator." msgstr "" -#: bp-core/classes/class-bp-admin.php:579 +#: bp-core/classes/class-bp-admin.php:582 msgid "User information provided during account registration can be modified or removed on the Profile > Edit panel. In most cases, users also have control over who is able to view a particular piece of profile content, limiting visibility on a field-by-field basis to friends, logged-in users, or administrators only. Site administrators can read and edit all profile data for all users." msgstr "" -#: bp-core/classes/class-bp-admin.php:584 +#: bp-core/classes/class-bp-admin.php:587 msgid "In this section you should describe the kinds of information collected in the activity stream, how and whether it can be edited or deleted, and to whom the activity is visible." msgstr "" -#: bp-core/classes/class-bp-admin.php:586 +#: bp-core/classes/class-bp-admin.php:589 msgid "This site records certain user actions, in the form of \"activity\" data. Activity includes updates and comments posted directly to activity streams, as well as descriptions of other actions performed while using the site, such as new friendships, newly joined groups, and profile updates." msgstr "" -#: bp-core/classes/class-bp-admin.php:587 +#: bp-core/classes/class-bp-admin.php:590 msgid "The content of activity items obey the same privacy rules as the contexts in which the activity items are created. For example, activity updates created in a user's profile is publicly visible, while activity items generated in a private group are visible only to members of that group. Site administrators can view all activity items, regardless of context." msgstr "" -#: bp-core/classes/class-bp-admin.php:588 +#: bp-core/classes/class-bp-admin.php:591 msgid "Activity items may be deleted at any time by users who created them. Site administrators can edit all activity items." msgstr "" -#: bp-core/classes/class-bp-admin.php:592 +#: bp-core/classes/class-bp-admin.php:595 #: bp-messages/bp-messages-notifications.php:267 #: bp-messages/classes/class-bp-messages-component.php:223 #: bp-messages/classes/class-bp-messages-component.php:331 msgid "Messages" msgstr "" -#: bp-core/classes/class-bp-admin.php:593 +#: bp-core/classes/class-bp-admin.php:596 msgid "In this section you should describe any personal data related to private messages." msgstr "" -#: bp-core/classes/class-bp-admin.php:595 +#: bp-core/classes/class-bp-admin.php:598 msgid "The content of private messages is visible only to the sender and the recipients of the message. With the exception of site administrators, who can read all private messages, private message content is never visible to other users or site visitors. Site administrators may delete the content of any message." msgstr "" -#: bp-core/classes/class-bp-admin.php:598 +#: bp-core/classes/class-bp-admin.php:601 msgid "Cookies" msgstr "" -#: bp-core/classes/class-bp-admin.php:599 +#: bp-core/classes/class-bp-admin.php:602 msgid "In this section you should describe the BuddyPress-specific cookies that your site collects. The suggested text describes the default cookies." msgstr "" -#: bp-core/classes/class-bp-admin.php:601 +#: bp-core/classes/class-bp-admin.php:604 msgid "We use a cookie to show success and failure messages to logged-in users, in response to certain actions, like joining a group. These cookies contain no personal data, and are deleted immediately after the next page load." msgstr "" -#: bp-core/classes/class-bp-admin.php:603 +#: bp-core/classes/class-bp-admin.php:606 msgid "We use cookies on group, member, and activity directories to keep track of a user's browsing preferences. These preferences include the last-selected values of the sort and filter dropdowns, as well as pagination information. These cookies contain no personal data, and are deleted after 24 hours." msgstr "" -#: bp-core/classes/class-bp-admin.php:606 +#: bp-core/classes/class-bp-admin.php:609 msgid "When a logged-in user creates a new group, we use a number of cookies to keep track of the group creation process. These cookies contain no personal data, and are deleted either upon the successful creation of the group or after 24 hours." msgstr "" #. translators: %s is the placeholder for the BuddyPress version number. -#: bp-core/classes/class-bp-admin.php:642 +#: bp-core/classes/class-bp-admin.php:645 msgid "BuddyPress %s" msgstr "" -#: bp-core/classes/class-bp-admin.php:648 +#: bp-core/classes/class-bp-admin.php:651 msgid "What's new?" msgstr "" -#: bp-core/classes/class-bp-admin.php:649 +#: bp-core/classes/class-bp-admin.php:652 msgid "Changelog" msgstr "" -#: bp-core/classes/class-bp-admin.php:650 +#: bp-core/classes/class-bp-admin.php:653 msgid "Get involved" msgstr "" -#: bp-core/classes/class-bp-admin.php:656 -msgid "Say hello to the first two BuddyPress blocks!" +#: bp-core/classes/class-bp-admin.php:659 +msgid "Manage Member Types and Group Types right from your WordPress Dashboard." msgstr "" -#: bp-core/classes/class-bp-admin.php:658 -msgid "Gif Animation showing how to insert the BuddyPress Group Block." +#: bp-core/classes/class-bp-admin.php:661 +msgid "Illustration showing how to access to the BP Types Admin areas." msgstr "" -#: bp-core/classes/class-bp-admin.php:661 -msgid "BuddyPress 6.0.0 comes with two awesome blocks for your WordPress Editor: the BP Member and BP Group Blocks." +#: bp-core/classes/class-bp-admin.php:664 +msgid "Playing with BP Types just became much easier! The Member Types and Group Types were primarily introduced in BuddyPress as features for advanced users, just like the WordPress Custom Post Type feature." msgstr "" -#: bp-core/classes/class-bp-admin.php:662 -msgid "Available from the BuddyPress blocks category of your WordPress Block menu, these lovely blocks let you insert a rich content block featuring a specific member or group from your community site in a WordPress post or page." +#. translators: %s is the placeholder for the link to the BP Types Admin developer note. +#: bp-core/classes/class-bp-admin.php:667 +msgid "Thanks to the two new %s, adding, editing and deleting Member & Group Types has never been so easy!" msgstr "" -#. translators: %s is the placeholder for the link to the Advanced section of the BP Blocks development note. -#: bp-core/classes/class-bp-admin.php:666 -msgid "If you're an Advanced BuddyPresser and wish to fine tune the BuddyPress blocks for your community site, learn more in %s about the new BP Blocks." +#: bp-core/classes/class-bp-admin.php:671 +msgid "WordPress Administration Screens" msgstr "" -#: bp-core/classes/class-bp-admin.php:670 -msgid "this section of our development note" +#: bp-core/classes/class-bp-admin.php:674 +msgid "Now you can set up BP Types using custom code or by simply using the Administration interfaces." msgstr "" -#: bp-core/classes/class-bp-admin.php:677 -msgid "The BP REST API is now completed!" +#: bp-core/classes/class-bp-admin.php:676 +msgid "Multiple Member Type assignment." msgstr "" -#. translators: %s is the placeholder for the link to the BP REST API documentation. -#: bp-core/classes/class-bp-admin.php:684 -msgid "In 5.0.0, we introduced the first endpoints and provided %s for them." +#. translators: %s is the placeholder for the link to the BP Types Admin developer note. +#: bp-core/classes/class-bp-admin.php:680 +msgid "As we were pretty hot on the subject, we also improved Member Types assignment. You can now %s to users from their extended profile in the WordPress Dashboard." msgstr "" -#: bp-core/classes/class-bp-admin.php:688 -msgid "reference documentation" +#: bp-core/classes/class-bp-admin.php:684 +msgid "add more than one member type" msgstr "" #: bp-core/classes/class-bp-admin.php:691 -msgid "In 6.0.0, we are adding the 6 remaining endpoints you were waiting for: Blogs, Blog avatar, Friends, Group Cover Image, Member Cover Image and User Signups. You can now build full-featured BuddyPress Apps!" +msgid "The BP Blocks category now includes 5 blocks!" +msgstr "" + +#: bp-core/classes/class-bp-admin.php:693 +msgid "Illustration showing the BuddyPress Blocks category inside the Block Editor Inserter." msgstr "" #: bp-core/classes/class-bp-admin.php:696 -msgid "BP Nouveau has been improved" +msgid "3 new BP Blocks are now available via your WordPress Editor." msgstr "" -#: bp-core/classes/class-bp-admin.php:698 -msgid "Your active theme supports wide layouts? Awesome! BP Nouveau now supports wide (and really, really wide) content areas, too!" +#: bp-core/classes/class-bp-admin.php:697 +msgid "From the BuddyPress blocks category of the WordPress Block Inserter, you can pick a BP Block to feature a list of members, a list of groups or embed a public BuddyPress Activity into your post or page." msgstr "" -#: bp-core/classes/class-bp-admin.php:701 -msgid "Screenshot of the BP Nouveau customizer setting to take advantage of wide layouts" +#. translators: %s is the placeholder for the link to the BP Blocks developer note. +#: bp-core/classes/class-bp-admin.php:700 +msgid "Read more about it in this %s." msgstr "" #: bp-core/classes/class-bp-admin.php:704 -msgid "This is the first of the many improvements we are bringing to our default Template Pack. It never looked so beautiful in your theme." +#: bp-core/classes/class-bp-admin.php:734 +msgid "development note" msgstr "" -#: bp-core/classes/class-bp-admin.php:709 -msgid "Under the hood" +#: bp-core/classes/class-bp-admin.php:711 +msgid "Get the best of the BP REST API improvements!" msgstr "" -#: bp-core/classes/class-bp-admin.php:714 -msgid "6.0.0 includes more than 80 changes to improve your BuddyPress experience as users, as contributors to our code and as contributors to our translations." +#. translators: %s is the placeholder for the link to the BP REST API documentation. +#: bp-core/classes/class-bp-admin.php:718 +msgid "The %s has been updated according to the latest improvements we’ve brought to the BuddyPress REST API." msgstr "" -#. translators: %s is the placeholder for the link to the Avatar changes development note. -#: bp-core/classes/class-bp-admin.php:719 -msgid "The biggest change moves local avatar management to the Members component. Read more about it in %s." +#: bp-core/classes/class-bp-admin.php:722 +msgid "Developer documentation" msgstr "" -#: bp-core/classes/class-bp-admin.php:723 -msgid "this development note" +#: bp-core/classes/class-bp-admin.php:727 +msgid "To name two: get the groups the logged in user is a member of, and create a blog when BuddyPress is activated on a network of WordPress sites." msgstr "" +#. translators: %s is the placeholder for the link to the BP REST API developer note. #: bp-core/classes/class-bp-admin.php:730 -msgid "We want to hear your voice" +msgid "Read this %s to learn about all the others." +msgstr "" + +#: bp-core/classes/class-bp-admin.php:741 +msgid "BP Nouveau is ready for Twenty Twenty-One" msgstr "" -#. translators: %s is the placeholder for the link to the 2020 BuddyPress survey. -#: bp-core/classes/class-bp-admin.php:737 -msgid "Take the %s." +#: bp-core/classes/class-bp-admin.php:743 +msgid "You love the latest default WordPress Theme, so do we!" msgstr "" -#: bp-core/classes/class-bp-admin.php:741 -msgid "2020 BuddyPress Survey" +#: bp-core/classes/class-bp-admin.php:744 +msgid "It’s important for us to make sure the BP Nouveau template pack looks great in the default themes included in the WordPress package." +msgstr "" + +#: bp-core/classes/class-bp-admin.php:745 +msgid "This is the first of the many improvements we are bringing to our default Template Pack." +msgstr "" + +#: bp-core/classes/class-bp-admin.php:748 +msgid "Screenshot of the BuddyPress Members directory" +msgstr "" + +#: bp-core/classes/class-bp-admin.php:753 +msgid "Improved support for WP CLI." +msgstr "" + +#: bp-core/classes/class-bp-admin.php:758 +msgid "WP-CLI is the command-line interface for WordPress. You can update plugins, configure multisite installs, and much more, all without using a web browser." +msgstr "" + +#: bp-core/classes/class-bp-admin.php:759 +msgid "In 7.0.0, you will be able to use new BuddyPress CLI commands to manage BuddyPress Group Meta, BuddyPress Activity Meta, activate or deactivate the BuddyPress signup feature and create BuddyPress-specific testing code for plugins." +msgstr "" + +#. translators: %s is the placeholder for the link to the WP BP CLI developer note. +#: bp-core/classes/class-bp-admin.php:764 +msgid "Discover more about it from this %s." msgstr "" -#: bp-core/classes/class-bp-admin.php:746 -msgid "Knowing how you use BuddyPress and getting your point of view about future BuddyPress development is very important to us." +#: bp-core/classes/class-bp-admin.php:768 +msgid "developer note" msgstr "" -#: bp-core/classes/class-bp-admin.php:747 -msgid "Please, take some time to help us decide what's best for the BuddyPress project." +#: bp-core/classes/class-bp-admin.php:775 +msgid "Under the hood" +msgstr "" + +#: bp-core/classes/class-bp-admin.php:777 +msgid "7.0.0 includes more than 65 changes to improve your BuddyPress experience as users, and as contributors to our project; click on the “Changelog” tab to discover them all!" msgstr "" -#: bp-core/classes/class-bp-admin.php:752 +#: bp-core/classes/class-bp-admin.php:785 msgctxt "screen heading" msgid "Your feedback" msgstr "" +#: bp-core/classes/class-bp-admin.php:787 +msgid "How are you using BuddyPress? Receiving your feedback and suggestions for future versions of BuddyPress genuinely motivates and encourages our contributors." +msgstr "" + #. translators: %s is the placeholder for the link to BuddyPress support forums. -#: bp-core/classes/class-bp-admin.php:757 -msgid " How are you using BuddyPress? Receiving your feedback and suggestions for future versions of BuddyPress genuinely motivates and encourages our contributors. Please %s about this version of BuddyPress on our website. " +#: bp-core/classes/class-bp-admin.php:791 +msgid "Please %s about this version of BuddyPress on our website." msgstr "" -#: bp-core/classes/class-bp-admin.php:761 +#: bp-core/classes/class-bp-admin.php:795 msgid "share your feedback" msgstr "" -#: bp-core/classes/class-bp-admin.php:766 +#: bp-core/classes/class-bp-admin.php:800 msgid "Thank you for using BuddyPress! 😊" msgstr "" #. translators: 1: heart dashicons. 2: BP Credits screen url. 3: number of BuddyPress contributors to this version. -#: bp-core/classes/class-bp-admin.php:778 +#: bp-core/classes/class-bp-admin.php:812 msgid "Built with %1$s by <a href=\"%2$s\">%3$d volunteer</a>." msgid_plural "Built with %1$s by <a href=\"%2$s\">%3$d volunteers</a>." msgstr[0] "" msgstr[1] "" -#: bp-core/classes/class-bp-admin.php:793 -#: bp-core/classes/class-bp-admin.php:795 +#: bp-core/classes/class-bp-admin.php:827 +#: bp-core/classes/class-bp-admin.php:829 msgid "Follow BuddyPress on Twitter" msgstr "" -#: bp-core/classes/class-bp-admin.php:804 -#: bp-core/classes/class-bp-admin.php:806 +#: bp-core/classes/class-bp-admin.php:838 +#: bp-core/classes/class-bp-admin.php:840 msgid "Visit the Support Forums" msgstr "" -#: bp-core/classes/class-bp-admin.php:835 +#: bp-core/classes/class-bp-admin.php:870 msgid "Meet the contributors behind BuddyPress:" msgstr "" -#: bp-core/classes/class-bp-admin.php:837 +#: bp-core/classes/class-bp-admin.php:872 msgid "Project Leaders" msgstr "" -#: bp-core/classes/class-bp-admin.php:842 +#: bp-core/classes/class-bp-admin.php:877 msgid "Project Lead" msgstr "" -#: bp-core/classes/class-bp-admin.php:847 -#: bp-core/classes/class-bp-admin.php:852 +#: bp-core/classes/class-bp-admin.php:882 +#: bp-core/classes/class-bp-admin.php:887 +#: bp-core/classes/class-bp-admin.php:892 +#: bp-core/classes/class-bp-admin.php:897 +#: bp-core/classes/class-bp-admin.php:902 msgid "Lead Developer" msgstr "" -#: bp-core/classes/class-bp-admin.php:856 +#: bp-core/classes/class-bp-admin.php:906 msgid "BuddyPress Team" msgstr "" -#: bp-core/classes/class-bp-admin.php:861 -#: bp-core/classes/class-bp-admin.php:866 -#: bp-core/classes/class-bp-admin.php:871 -#: bp-core/classes/class-bp-admin.php:881 -#: bp-core/classes/class-bp-admin.php:886 -#: bp-core/classes/class-bp-admin.php:906 #: bp-core/classes/class-bp-admin.php:911 #: bp-core/classes/class-bp-admin.php:916 #: bp-core/classes/class-bp-admin.php:921 +#: bp-core/classes/class-bp-admin.php:941 +#: bp-core/classes/class-bp-admin.php:946 +#: bp-core/classes/class-bp-admin.php:951 +#: bp-core/classes/class-bp-admin.php:956 msgid "Core Developer" msgstr "" -#: bp-core/classes/class-bp-admin.php:876 -msgid "Navigator" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:891 -#: bp-core/classes/class-bp-admin.php:896 -#: bp-core/classes/class-bp-admin.php:901 #: bp-core/classes/class-bp-admin.php:926 +#: bp-core/classes/class-bp-admin.php:931 +#: bp-core/classes/class-bp-admin.php:936 +#: bp-core/classes/class-bp-admin.php:961 msgid "Community Support" msgstr "" #. translators: %s: BuddyPress version number -#: bp-core/classes/class-bp-admin.php:934 +#: bp-core/classes/class-bp-admin.php:969 msgid "Noteworthy Contributors to %s" msgstr "" #. translators: %s: BuddyPress version number -#: bp-core/classes/class-bp-admin.php:958 +#: bp-core/classes/class-bp-admin.php:993 msgid "All Contributors to BuddyPress %s" msgstr "" -#: bp-core/classes/class-bp-admin.php:1008 +#: bp-core/classes/class-bp-admin.php:1056 msgid "With our thanks to these Open Source projects" msgstr "" -#: bp-core/classes/class-bp-admin.php:1022 +#: bp-core/classes/class-bp-admin.php:1070 msgid "Contributor Emeriti" msgstr "" -#: bp-core/classes/class-bp-admin.php:1027 +#: bp-core/classes/class-bp-admin.php:1075 msgid "Project Founder" msgstr "" -#: bp-core/classes/class-bp-admin.php:1067 +#: bp-core/classes/class-bp-admin.php:1115 msgctxt "Email post type" msgid "Situations" msgstr "" @@ -4296,7 +4567,7 @@ msgstr "" #. translators: %s: human time diff of the last time the user was active on the site. #: bp-core/classes/class-bp-core-user.php:208 msgctxt "last time the user was active" -msgid "active %s" +msgid "Active %s" msgstr "" #. translators: %s: total groups count @@ -4307,7 +4578,7 @@ msgid_plural "%d groups" msgstr[0] "" msgstr[1] "" -#: bp-core/classes/class-bp-core.php:308 +#: bp-core/classes/class-bp-core.php:329 msgctxt "email post type description" msgid "BuddyPress emails" msgstr "" @@ -4320,11 +4591,6 @@ msgstr "" msgid "Whether to activate or deactivate the component." msgstr "" -#: bp-core/classes/class-bp-rest-components-endpoint.php:167 -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:188 -msgid "Sorry, you are not allowed to perform this action." -msgstr "" - #: bp-core/classes/class-bp-rest-components-endpoint.php:199 msgid "Sorry, this component does not exist." msgstr "" @@ -4365,31 +4631,31 @@ msgstr "" msgid "HTML description of the object." msgstr "" -#: bp-core/classes/trait-attachments.php:73 +#: bp-core/classes/trait-attachments.php:74 msgid "The BuddyPress attachments uploads directory is not set." msgstr "" -#: bp-core/classes/trait-attachments.php:87 +#: bp-core/classes/trait-attachments.php:89 msgid "The cover image directory is not valid." msgstr "" #. translators: %$1s and %$2s is replaced with the correct sizes. -#: bp-core/classes/trait-attachments.php:124 +#: bp-core/classes/trait-attachments.php:128 msgid "You have selected an image that is smaller than recommended. For better results, make sure to upload an image that is larger than %1$spx wide, and %2$spx tall." msgstr "" #. translators: %s: the upload error message -#: bp-core/classes/trait-attachments.php:176 +#: bp-core/classes/trait-attachments.php:183 msgid "Upload failed! Error was: %s." msgstr "" #. translators: %1$s and %2$s is replaced with the correct sizes. -#: bp-core/classes/trait-attachments.php:197 +#: bp-core/classes/trait-attachments.php:208 msgid "You have selected an image that is smaller than recommended. For best results, upload a picture larger than %1$s x %2$s pixels." msgstr "" #. translators: %s is replaced with object type. -#: bp-core/classes/trait-attachments.php:355 +#: bp-core/classes/trait-attachments.php:370 msgid "There was a problem cropping your %s photo." msgstr "" @@ -4400,14 +4666,6 @@ msgstr "" msgid "My Profile" msgstr "" -#: bp-core/deprecated/1.5.php:153 -#: bp-members/classes/class-bp-members-list-table.php:151 -#: bp-members/classes/class-bp-members-ms-list-table.php:138 -#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:36 -#: bp-templates/bp-nouveau/includes/members/functions.php:472 -msgid "Name" -msgstr "" - #: bp-core/deprecated/1.5.php:162 #: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:45 #: bp-templates/bp-nouveau/includes/members/functions.php:473 @@ -4457,8 +4715,8 @@ msgstr "" #: bp-core/deprecated/1.6.php:127 #: bp-core/deprecated/1.6.php:148 -#: bp-groups/bp-groups-template.php:5179 -#: bp-groups/bp-groups-template.php:5202 +#: bp-groups/bp-groups-template.php:5269 +#: bp-groups/bp-groups-template.php:5292 msgid "Recently Active" msgstr "" @@ -4466,7 +4724,7 @@ msgstr "" #: bp-core/deprecated/1.6.php:151 #: bp-friends/classes/class-bp-core-friends-widget.php:105 #: bp-friends/classes/class-bp-core-friends-widget.php:197 -#: bp-groups/bp-groups-template.php:4442 +#: bp-groups/bp-groups-template.php:4532 #: bp-groups/classes/class-bp-groups-widget.php:126 #: bp-groups/classes/class-bp-groups-widget.php:236 #: bp-members/classes/class-bp-core-members-widget.php:114 @@ -4480,8 +4738,8 @@ msgstr "" #: bp-core/deprecated/1.6.php:129 #: bp-core/deprecated/1.6.php:154 -#: bp-groups/bp-groups-template.php:5184 -#: bp-groups/bp-groups-template.php:5217 +#: bp-groups/bp-groups-template.php:5274 +#: bp-groups/bp-groups-template.php:5307 msgid "Alphabetically" msgstr "" @@ -4567,10 +4825,11 @@ msgid "Membership Requests" msgstr "" #: bp-core/deprecated/2.1.php:391 -#: bp-groups/bp-groups-admin.php:1088 +#: bp-groups/bp-groups-admin.php:1119 #: bp-templates/bp-legacy/buddypress/groups/single/admin/delete-group.php:12 #: bp-templates/bp-legacy/buddypress/groups/single/admin/delete-group.php:39 #: bp-templates/bp-nouveau/includes/groups/template-tags.php:366 +#: bp-xprofile/classes/class-bp-xprofile-group.php:931 msgid "Delete Group" msgstr "" @@ -4705,29 +4964,29 @@ msgstr "" msgid "%1$s and %2$s are now friends" msgstr "" -#: bp-friends/bp-friends-filters.php:62 +#: bp-friends/bp-friends-filters.php:66 msgid "BuddyPress Friends" msgstr "" -#: bp-friends/bp-friends-filters.php:64 +#: bp-friends/bp-friends-filters.php:68 msgctxt "BuddyPress Friends data exporter friendly name" msgid "Friends" msgstr "" -#: bp-friends/bp-friends-filters.php:68 +#: bp-friends/bp-friends-filters.php:72 msgid "BuddyPress Friend Requests (Sent)" msgstr "" -#: bp-friends/bp-friends-filters.php:70 +#: bp-friends/bp-friends-filters.php:74 msgctxt "BuddyPress Friend Requests data exporter friendly name" msgid "Friend Requests (Sent)" msgstr "" -#: bp-friends/bp-friends-filters.php:74 +#: bp-friends/bp-friends-filters.php:78 msgid "BuddyPress Friend Requests (Received)" msgstr "" -#: bp-friends/bp-friends-filters.php:76 +#: bp-friends/bp-friends-filters.php:80 msgctxt "BuddyPress Friend Requests data exporter friendly name" msgid "Friend Requests (Received)" msgstr "" @@ -4756,9 +5015,9 @@ msgstr "" #: bp-friends/bp-friends-functions.php:1028 #: bp-friends/bp-friends-functions.php:1091 -#: bp-groups/bp-groups-functions.php:2990 -#: bp-groups/bp-groups-functions.php:3060 -#: bp-groups/bp-groups-functions.php:3130 +#: bp-groups/bp-groups-functions.php:3267 +#: bp-groups/bp-groups-functions.php:3337 +#: bp-groups/bp-groups-functions.php:3407 #: bp-messages/bp-messages-functions.php:709 msgid "Date Sent" msgstr "" @@ -4848,7 +5107,7 @@ msgstr "" #. translators: %d: total friend count #: bp-friends/bp-friends-template.php:268 -#: bp-friends/bp-friends-template.php:739 +#: bp-friends/bp-friends-template.php:738 msgid "%d friend" msgid_plural "%d friends" msgstr[0] "" @@ -4893,7 +5152,7 @@ msgstr "" #: bp-groups/classes/class-bp-groups-widget.php:237 #: bp-members/classes/class-bp-core-members-widget.php:116 #: bp-members/classes/class-bp-core-members-widget.php:236 -#: bp-members/classes/class-bp-members-admin.php:1132 +#: bp-members/classes/class-bp-members-admin.php:1109 msgid "Active" msgstr "" @@ -4983,96 +5242,99 @@ msgstr "" #: bp-friends/classes/class-bp-rest-friends-endpoint.php:132 #: bp-friends/classes/class-bp-rest-friends-endpoint.php:213 #: bp-friends/classes/class-bp-rest-friends-endpoint.php:305 -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:416 -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:511 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:433 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:528 msgid "There was a problem confirming if user is valid." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:180 -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:271 -#: bp-groups/classes/class-bp-rest-attachments-group-cover-endpoint.php:341 -#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:261 -#: bp-members/classes/class-bp-rest-attachments-member-cover-endpoint.php:340 -#: bp-members/classes/class-bp-rest-signup-endpoint.php:190 -#: bp-members/classes/class-bp-rest-signup-endpoint.php:267 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:177 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:268 +#: bp-groups/classes/class-bp-rest-attachments-group-cover-endpoint.php:351 +#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:271 +#: bp-members/classes/class-bp-rest-attachments-member-cover-endpoint.php:350 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:202 msgid "Sorry, you need to be logged in to perform this action." msgstr "" #: bp-friends/classes/class-bp-rest-friends-endpoint.php:228 -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:350 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:367 msgid "Friendship does not exist." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:318 -#: bp-templates/bp-nouveau/includes/groups/functions.php:488 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:316 +msgid "Those users are already friends or have sent friendship request(s) recently." +msgstr "" + +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:338 +#: bp-templates/bp-nouveau/includes/groups/functions.php:495 msgid "You are not allowed to perform this action." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:335 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:352 msgid "There was an error trying to create the friendship." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:431 -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:526 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:448 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:543 msgid "Invalid friendship ID." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:442 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:459 msgid "Could not accept friendship." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:560 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:577 msgid "Could not delete friendship." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:715 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:732 msgid "A unique numeric ID of a user." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:734 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:751 msgid "Whether to force the friendship agreement." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:746 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:763 msgid "Whether to force friendship removal." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:806 -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:876 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:823 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:893 msgid "Unique numeric identifier of the friendship." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:811 -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:884 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:828 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:901 msgid "The ID of the user who is requesting the Friendship." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:816 -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:892 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:833 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:909 msgid "The ID of the user who is invited to agree to the Friendship request." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:821 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:838 msgid "Whether the friendship been confirmed/accepted." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:827 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:844 msgid "The date the friendship was created, in the site's timezone." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:859 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:876 msgid "ID of the member whose friendships are being retrieved." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:868 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:885 msgid "Wether the friendship has been accepted." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:900 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:917 msgid "Column name to order the results by." msgstr "" -#: bp-friends/classes/class-bp-rest-friends-endpoint.php:909 +#: bp-friends/classes/class-bp-rest-friends-endpoint.php:926 msgid "Order results ascending or descending." msgstr "" @@ -5109,7 +5371,7 @@ msgid "You are not an admin of this group." msgstr "" #: bp-groups/actions/create.php:27 -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:357 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:381 msgid "Sorry, you are not allowed to create groups." msgstr "" @@ -5188,7 +5450,7 @@ msgid "Joined a group" msgstr "" #: bp-groups/bp-groups-activity.php:44 -#: bp-groups/bp-groups-functions.php:2931 +#: bp-groups/bp-groups-functions.php:3208 msgid "Group Memberships" msgstr "" @@ -5249,356 +5511,369 @@ msgstr "" msgid "%1$s posted an update in the group %2$s" msgstr "" -#: bp-groups/bp-groups-admin.php:32 +#: bp-groups/bp-groups-admin.php:35 +#: bp-groups/bp-groups-admin.php:82 msgctxt "Admin Groups page title" msgid "Groups" msgstr "" -#: bp-groups/bp-groups-admin.php:33 +#: bp-groups/bp-groups-admin.php:36 +#: bp-groups/bp-groups-admin.php:83 msgctxt "Admin Groups menu" msgid "Groups" msgstr "" -#: bp-groups/bp-groups-admin.php:117 +#: bp-groups/bp-groups-admin.php:73 +#: bp-groups/bp-groups-admin.php:74 +#: bp-groups/bp-groups-admin.php:96 +#: bp-groups/bp-groups-admin.php:97 +#: bp-templates/bp-legacy/buddypress/groups/create.php:153 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:61 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:67 +#: bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php:50 +#: bp-templates/bp-nouveau/buddypress/groups/single/group-header.php:47 +msgid "Group Types" +msgstr "" + +#: bp-groups/bp-groups-admin.php:177 msgid "This page is a convenient way to edit the details associated with one of your groups." msgstr "" -#: bp-groups/bp-groups-admin.php:118 +#: bp-groups/bp-groups-admin.php:178 msgid "The Name and Description box is fixed in place, but you can reposition all the other boxes using drag and drop, and can minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to hide or unhide, or to choose a 1- or 2-column layout for this screen." msgstr "" -#: bp-groups/bp-groups-admin.php:124 +#: bp-groups/bp-groups-admin.php:184 msgid "Support Forums" msgstr "" -#: bp-groups/bp-groups-admin.php:128 +#: bp-groups/bp-groups-admin.php:188 msgctxt "group admin edit screen" msgid "Save" msgstr "" -#: bp-groups/bp-groups-admin.php:129 +#: bp-groups/bp-groups-admin.php:189 msgctxt "group admin edit screen" msgid "Settings" msgstr "" -#: bp-groups/bp-groups-admin.php:130 +#: bp-groups/bp-groups-admin.php:190 msgctxt "group admin edit screen" msgid "Add New Members" msgstr "" -#: bp-groups/bp-groups-admin.php:131 +#: bp-groups/bp-groups-admin.php:191 msgctxt "group admin edit screen" msgid "Manage Members" msgstr "" -#: bp-groups/bp-groups-admin.php:138 +#: bp-groups/bp-groups-admin.php:198 msgctxt "groups admin edit screen" msgid "Group Type" msgstr "" -#: bp-groups/bp-groups-admin.php:163 +#: bp-groups/bp-groups-admin.php:223 msgctxt "Groups per page (screen options)" msgid "Groups" msgstr "" -#: bp-groups/bp-groups-admin.php:170 +#: bp-groups/bp-groups-admin.php:230 msgid "You can manage groups much like you can manage comments and other content. This screen is customizable in the same ways as other management screens, and you can act on groups by using the on-hover action links or the Bulk Actions." msgstr "" -#: bp-groups/bp-groups-admin.php:175 +#: bp-groups/bp-groups-admin.php:235 msgid "Group Actions" msgstr "" -#: bp-groups/bp-groups-admin.php:177 +#: bp-groups/bp-groups-admin.php:237 msgid "Clicking \"Visit\" will take you to the group’s public page. Use this link to see what the group looks like on the front end of your site." msgstr "" -#: bp-groups/bp-groups-admin.php:178 +#: bp-groups/bp-groups-admin.php:238 msgid "Clicking \"Edit\" will take you to a Dashboard panel where you can manage various details about the group, such as its name and description, its members, and other settings." msgstr "" -#: bp-groups/bp-groups-admin.php:179 +#: bp-groups/bp-groups-admin.php:239 msgid "If you click \"Delete\" under a specific group, or select a number of groups and then choose Delete from the Bulk Actions menu, you will be led to a page where you’ll be asked to confirm the permanent deletion of the group(s)." msgstr "" #. translators: accessibility text -#: bp-groups/bp-groups-admin.php:191 +#: bp-groups/bp-groups-admin.php:251 msgid "Groups list navigation" msgstr "" -#: bp-groups/bp-groups-admin.php:200 +#: bp-groups/bp-groups-admin.php:260 msgid "Start typing a username to add a new member." msgstr "" -#: bp-groups/bp-groups-admin.php:201 +#: bp-groups/bp-groups-admin.php:261 msgid "If you leave this page, you will lose any unsaved changes you have made to the group." msgstr "" -#: bp-groups/bp-groups-admin.php:525 +#: bp-groups/bp-groups-admin.php:585 msgid "You cannot remove all administrators from a group." msgstr "" -#: bp-groups/bp-groups-admin.php:530 +#: bp-groups/bp-groups-admin.php:590 msgid "Group name, slug, and description are all required fields." msgstr "" -#: bp-groups/bp-groups-admin.php:532 +#: bp-groups/bp-groups-admin.php:592 msgid "An error occurred when trying to update your group details." msgstr "" -#: bp-groups/bp-groups-admin.php:536 +#: bp-groups/bp-groups-admin.php:596 msgid "The group has been updated successfully." msgstr "" #. translators: %s: comma separated list of usernames -#: bp-groups/bp-groups-admin.php:541 +#: bp-groups/bp-groups-admin.php:601 msgid "The following users could not be added to the group: %s" msgstr "" #. translators: %s: comma separated list of usernames -#: bp-groups/bp-groups-admin.php:546 +#: bp-groups/bp-groups-admin.php:606 msgid "The following users were successfully added to the group: %s" msgstr "" #. translators: %s: comma separated list of usernames -#: bp-groups/bp-groups-admin.php:552 +#: bp-groups/bp-groups-admin.php:612 msgid "An error occurred when trying to modify the following members: %s" msgstr "" #. translators: %s: comma separated list of usernames -#: bp-groups/bp-groups-admin.php:558 +#: bp-groups/bp-groups-admin.php:618 msgid "The following members were successfully modified: %s" msgstr "" -#: bp-groups/bp-groups-admin.php:587 -#: bp-groups/bp-groups-admin.php:597 +#: bp-groups/bp-groups-admin.php:645 #: bp-groups/bp-groups-adminbar.php:45 msgid "Edit Group" msgstr "" -#: bp-groups/bp-groups-admin.php:590 -#: bp-groups/bp-groups-admin.php:600 -#: bp-groups/bp-groups-admin.php:777 -#: bp-groups/bp-groups-admin.php:792 +#: bp-groups/bp-groups-admin.php:648 +#: bp-groups/bp-groups-admin.php:824 msgid "Add New" msgstr "" -#: bp-groups/bp-groups-admin.php:621 +#: bp-groups/bp-groups-admin.php:667 msgid "Name and Description" msgstr "" #. translators: accessibility text -#: bp-groups/bp-groups-admin.php:625 -#: bp-groups/bp-groups-functions.php:2893 -#: bp-groups/bp-groups-functions.php:2982 -#: bp-groups/bp-groups-functions.php:3048 -#: bp-groups/bp-groups-functions.php:3118 +#: bp-groups/bp-groups-admin.php:671 +#: bp-groups/bp-groups-functions.php:3170 +#: bp-groups/bp-groups-functions.php:3259 +#: bp-groups/bp-groups-functions.php:3325 +#: bp-groups/bp-groups-functions.php:3395 msgid "Group Name" msgstr "" -#: bp-groups/bp-groups-admin.php:629 +#: bp-groups/bp-groups-admin.php:675 msgid "Permalink:" msgstr "" -#: bp-groups/bp-groups-admin.php:633 +#: bp-groups/bp-groups-admin.php:679 #: bp-groups/bp-groups-blocks.php:165 msgid "Visit Group" msgstr "" #. translators: accessibility text -#: bp-groups/bp-groups-admin.php:638 +#: bp-groups/bp-groups-admin.php:684 msgid "Group Description" msgstr "" -#: bp-groups/bp-groups-admin.php:667 +#: bp-groups/bp-groups-admin.php:713 msgid "No group found with this ID." msgstr "" -#: bp-groups/bp-groups-admin.php:714 +#: bp-groups/bp-groups-admin.php:760 msgid "Delete Groups" msgstr "" -#: bp-groups/bp-groups-admin.php:715 +#: bp-groups/bp-groups-admin.php:763 msgid "You are about to delete the following groups:" msgstr "" -#: bp-groups/bp-groups-admin.php:723 -#: bp-members/classes/class-bp-members-admin.php:2339 -msgid "This action cannot be undone." -msgstr "" - #. translators: %s: number of deleted groups -#: bp-groups/bp-groups-admin.php:753 +#: bp-groups/bp-groups-admin.php:801 msgid "%s group has been permanently deleted." msgid_plural "%s groups have been permanently deleted." msgstr[0] "" msgstr[1] "" -#: bp-groups/bp-groups-admin.php:774 -#: bp-groups/bp-groups-admin.php:789 +#: bp-groups/bp-groups-admin.php:821 #: bp-groups/classes/class-bp-groups-widget.php:75 #: bp-groups/classes/class-bp-groups-widget.php:212 +#: bp-groups/js/blocks/groups.js:495 msgid "Groups" msgstr "" -#: bp-groups/bp-groups-admin.php:811 +#: bp-groups/bp-groups-admin.php:842 msgid "Search all Groups" msgstr "" -#: bp-groups/bp-groups-admin.php:834 +#: bp-groups/bp-groups-admin.php:865 msgid "Enable discussion forum" msgstr "" -#: bp-groups/bp-groups-admin.php:840 +#: bp-groups/bp-groups-admin.php:871 msgid "Privacy" msgstr "" -#: bp-groups/bp-groups-admin.php:842 +#: bp-groups/bp-groups-admin.php:873 #: bp-groups/classes/class-bp-groups-list-table.php:679 +#: bp-groups/js/blocks/group.js:36 +#: bp-groups/js/blocks/groups.js:140 msgid "Public" msgstr "" -#: bp-groups/bp-groups-admin.php:843 +#: bp-groups/bp-groups-admin.php:874 #: bp-groups/classes/class-bp-groups-list-table.php:682 +#: bp-groups/js/blocks/group.js:37 +#: bp-groups/js/blocks/groups.js:141 msgid "Private" msgstr "" -#: bp-groups/bp-groups-admin.php:844 +#: bp-groups/bp-groups-admin.php:875 #: bp-groups/classes/class-bp-groups-list-table.php:685 +#: bp-groups/js/blocks/group.js:38 +#: bp-groups/js/blocks/groups.js:142 msgid "Hidden" msgstr "" -#: bp-groups/bp-groups-admin.php:850 +#: bp-groups/bp-groups-admin.php:881 msgid "Who can invite others to this group?" msgstr "" -#: bp-groups/bp-groups-admin.php:852 +#: bp-groups/bp-groups-admin.php:883 #: bp-templates/bp-legacy/buddypress/groups/create.php:183 #: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:91 #: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:96 msgid "All group members" msgstr "" -#: bp-groups/bp-groups-admin.php:853 +#: bp-groups/bp-groups-admin.php:884 #: bp-templates/bp-legacy/buddypress/groups/create.php:185 #: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:93 #: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:101 msgid "Group admins and mods only" msgstr "" -#: bp-groups/bp-groups-admin.php:854 +#: bp-groups/bp-groups-admin.php:885 #: bp-templates/bp-legacy/buddypress/groups/create.php:187 #: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:95 #: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:106 msgid "Group admins only" msgstr "" -#: bp-groups/bp-groups-admin.php:871 +#: bp-groups/bp-groups-admin.php:902 msgid "Enter a comma-separated list of user logins." msgstr "" #. translators: accessibility text -#: bp-groups/bp-groups-admin.php:881 +#: bp-groups/bp-groups-admin.php:912 msgid "Add new members" msgstr "" -#: bp-groups/bp-groups-admin.php:967 +#: bp-groups/bp-groups-admin.php:998 #: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:26 #: bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php:28 msgid "Administrators" msgstr "" -#: bp-groups/bp-groups-admin.php:968 +#: bp-groups/bp-groups-admin.php:999 #: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:119 #: bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php:59 msgid "Moderators" msgstr "" #. translators: accessibility text -#: bp-groups/bp-groups-admin.php:969 -#: bp-groups/bp-groups-template.php:4421 +#: bp-groups/bp-groups-admin.php:1000 +#: bp-groups/bp-groups-template.php:4511 #: bp-groups/classes/class-bp-groups-component.php:737 #: bp-members/classes/class-bp-core-members-widget.php:255 #: bp-members/classes/class-bp-members-component.php:38 #: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:214 #: bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php:89 #: bp-templates/bp-nouveau/includes/customizer.php:273 +#: bp-members/js/blocks/members.js:499 msgid "Members" msgstr "" -#: bp-groups/bp-groups-admin.php:970 +#: bp-groups/bp-groups-admin.php:1001 msgid "Banned Members" msgstr "" -#: bp-groups/bp-groups-admin.php:982 +#: bp-groups/bp-groups-admin.php:1013 msgctxt "Group member user_id in group admin" msgid "ID" msgstr "" -#: bp-groups/bp-groups-admin.php:983 +#: bp-groups/bp-groups-admin.php:1014 msgctxt "Group member name in group admin" msgid "Name" msgstr "" -#: bp-groups/bp-groups-admin.php:984 +#: bp-groups/bp-groups-admin.php:1015 msgctxt "Group member role in group admin" msgid "Group Role" msgstr "" #. translators: accessibility text -#: bp-groups/bp-groups-admin.php:1007 +#: bp-groups/bp-groups-admin.php:1038 msgid "Select group role for member" msgstr "" -#: bp-groups/bp-groups-admin.php:1010 +#: bp-groups/bp-groups-admin.php:1041 msgid "Roles" msgstr "" -#: bp-groups/bp-groups-admin.php:1011 +#: bp-groups/bp-groups-admin.php:1042 #: bp-groups/bp-groups-functions.php:1197 msgid "Administrator" msgstr "" -#: bp-groups/bp-groups-admin.php:1012 +#: bp-groups/bp-groups-admin.php:1043 #: bp-groups/bp-groups-functions.php:1205 -#: bp-groups/bp-groups-functions.php:2914 +#: bp-groups/bp-groups-functions.php:3191 msgid "Moderator" msgstr "" -#: bp-groups/bp-groups-admin.php:1013 +#: bp-groups/bp-groups-admin.php:1044 #: bp-groups/bp-groups-functions.php:1213 -#: bp-groups/bp-groups-functions.php:2916 +#: bp-groups/bp-groups-functions.php:3193 #: bp-members/classes/class-bp-members-admin.php:836 -#: bp-members/js/blocks/member.js:143 +#: bp-members/js/blocks/member.js:213 msgid "Member" msgstr "" -#: bp-groups/bp-groups-admin.php:1015 +#: bp-groups/bp-groups-admin.php:1046 #: bp-groups/bp-groups-functions.php:1221 msgid "Banned" msgstr "" -#: bp-groups/bp-groups-admin.php:1018 -#: bp-members/classes/class-bp-members-admin.php:1655 +#: bp-groups/bp-groups-admin.php:1049 +#: bp-members/classes/class-bp-members-admin.php:1643 #: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:86 #: bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php:22 #: bp-templates/bp-nouveau/buddypress/members/single/notifications/notifications-loop.php:24 msgid "Actions" msgstr "" -#: bp-groups/bp-groups-admin.php:1019 +#: bp-groups/bp-groups-admin.php:1050 msgid "Remove" msgstr "" -#: bp-groups/bp-groups-admin.php:1021 +#: bp-groups/bp-groups-admin.php:1052 msgid "Ban" msgstr "" -#: bp-groups/bp-groups-admin.php:1063 +#: bp-groups/bp-groups-admin.php:1094 msgid "No members of this type" msgstr "" -#: bp-groups/bp-groups-admin.php:1092 +#: bp-groups/bp-groups-admin.php:1123 #: bp-groups/classes/class-bp-group-extension.php:522 #: bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php:53 #: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:110 @@ -5614,30 +5889,30 @@ msgid "Save Changes" msgstr "" #. translators: accessibility text -#: bp-groups/bp-groups-admin.php:1122 +#: bp-groups/bp-groups-admin.php:1153 msgid "Select group type" msgstr "" -#: bp-groups/bp-groups-admin.php:1132 +#: bp-groups/bp-groups-admin.php:1163 msgid "(Not available on the front end)" msgstr "" -#: bp-groups/bp-groups-admin.php:1227 +#: bp-groups/bp-groups-admin.php:1258 msgid "«" msgstr "" -#: bp-groups/bp-groups-admin.php:1228 +#: bp-groups/bp-groups-admin.php:1259 msgid "»" msgstr "" -#: bp-groups/bp-groups-admin.php:1234 -#: bp-groups/bp-groups-template.php:4267 -#: bp-members/bp-members-template.php:503 +#: bp-groups/bp-groups-admin.php:1265 +#: bp-groups/bp-groups-template.php:4357 +#: bp-members/bp-members-template.php:494 msgid "Viewing 1 member" msgstr "" #. translators: 1: group member from number. 2: group member to number. 3: total group members. -#: bp-groups/bp-groups-admin.php:1238 +#: bp-groups/bp-groups-admin.php:1269 msgctxt "Group members pagination in group admin" msgid "Viewing %1$s - %2$s of %3$s member" msgid_plural "Viewing %1$s - %2$s of %3$s members" @@ -5645,18 +5920,58 @@ msgstr[0] "" msgstr[1] "" #. Translators: 1: user_login, 2: user_email. -#: bp-groups/bp-groups-admin.php:1304 +#: bp-groups/bp-groups-admin.php:1335 msgid "%1$s (%2$s)" msgstr "" -#: bp-groups/bp-groups-admin.php:1400 +#: bp-groups/bp-groups-admin.php:1428 msgid "There was an error while changing group type. Please try again." msgstr "" -#: bp-groups/bp-groups-admin.php:1403 +#: bp-groups/bp-groups-admin.php:1431 msgid "Group type was changed successfully." msgstr "" +#: bp-groups/bp-groups-admin.php:1471 +msgid "Please define the Group Type ID field." +msgstr "" + +#: bp-groups/bp-groups-admin.php:1472 +msgid "Group type successfully added." +msgstr "" + +#: bp-groups/bp-groups-admin.php:1473 +msgid "Sorry, there was an error and the Group type wasn’t added." +msgstr "" + +#: bp-groups/bp-groups-admin.php:1475 +msgid "Group type successfully updated." +msgstr "" + +#: bp-groups/bp-groups-admin.php:1476 +msgid "Sorry, this Group type already exists." +msgstr "" + +#: bp-groups/bp-groups-admin.php:1477 +msgid "Sorry, the Group type was not deleted: it does not exist." +msgstr "" + +#: bp-groups/bp-groups-admin.php:1478 +msgid "Sorry, This Group type is registered using code, deactivate the plugin or remove the custom code before trying to delete it again." +msgstr "" + +#: bp-groups/bp-groups-admin.php:1479 +msgid "Sorry, there was an error while trying to delete this Group type." +msgstr "" + +#: bp-groups/bp-groups-admin.php:1480 +msgid "Group type successfully deleted." +msgstr "" + +#: bp-groups/bp-groups-admin.php:1481 +msgid "Group type could not be updated due to missing required information." +msgstr "" + #. translators: %s the group menu name #: bp-groups/bp-groups-adminbar.php:68 msgctxt "Group WP Admin Bar manage links" @@ -5671,46 +5986,72 @@ msgstr "" #. Translators: %s is the group's name. #: bp-groups/bp-groups-blocks.php:119 +#: bp-groups/bp-groups-blocks.php:272 msgid "Group Profile photo of %s" msgstr "" +#. translators: %s: last activity timestamp (e.g. "Active 1 hour ago") +#: bp-groups/bp-groups-blocks.php:307 +#: bp-groups/classes/class-bp-groups-invite-template.php:279 +#: bp-groups/classes/class-bp-groups-widget.php:153 +#: bp-members/bp-members-blocks.php:336 +#: bp-members/bp-members-template.php:959 +#: bp-members/bp-members-template.php:1695 +#: bp-templates/bp-legacy/buddypress/groups/groups-loop.php:71 +#: bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php:66 +#: bp-templates/bp-legacy/buddypress/groups/single/group-header.php:75 +#: bp-templates/bp-nouveau/buddypress/groups/groups-loop.php:48 +#: bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php:35 +#: bp-templates/bp-nouveau/buddypress/groups/single/group-header.php:32 +#: bp-groups/js/blocks/groups.js:355 +#: bp-members/js/blocks/members.js:359 +msgid "Active %s" +msgstr "" + +#. translators: %d: the number of group members. +#: bp-groups/bp-groups-blocks.php:315 +msgid "%d member" +msgid_plural "%d members" +msgstr[0] "" +msgstr[1] "" + #: bp-groups/bp-groups-cssjs.php:62 msgctxt "Group Manage Members dropdown default option" msgid "All members" msgstr "" -#: bp-groups/bp-groups-filters.php:377 +#: bp-groups/bp-groups-filters.php:375 msgid "BuddyPress Group Memberships" msgstr "" -#: bp-groups/bp-groups-filters.php:379 +#: bp-groups/bp-groups-filters.php:377 msgctxt "BuddyPress Group Memberships data exporter friendly name" msgid "Group Memberships" msgstr "" -#: bp-groups/bp-groups-filters.php:383 +#: bp-groups/bp-groups-filters.php:381 msgid "BuddyPress Pending Group Membership Requests" msgstr "" -#: bp-groups/bp-groups-filters.php:385 +#: bp-groups/bp-groups-filters.php:383 msgctxt "BuddyPress Pending Group Membership Requests data exporter friendly name" msgid "Pending Group Membership Requests" msgstr "" -#: bp-groups/bp-groups-filters.php:389 +#: bp-groups/bp-groups-filters.php:387 msgid "BuddyPress Pending Group Invitations (Received)" msgstr "" -#: bp-groups/bp-groups-filters.php:391 +#: bp-groups/bp-groups-filters.php:389 msgctxt "BuddyPress Pending Group Invitations data exporter friendly name" msgid "Pending Group Invitations (Received)" msgstr "" -#: bp-groups/bp-groups-filters.php:395 +#: bp-groups/bp-groups-filters.php:393 msgid "BuddyPress Pending Group Invitations (Sent)" msgstr "" -#: bp-groups/bp-groups-filters.php:397 +#: bp-groups/bp-groups-filters.php:395 msgctxt "BuddyPress Pending Group Invitations data exporter friendly name" msgid "Pending Group Invitations (Sent)" msgstr "" @@ -5735,55 +6076,198 @@ msgstr "" msgid "Argument `membership_id` passed to %1$s is deprecated. See the inline documentation at %2$s for more details." msgstr "" +#: bp-groups/bp-groups-functions.php:2514 +msgctxt "Group type taxonomy name" +msgid "Group Types" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2515 +msgctxt "Group type taxonomy singular name" +msgid "Group Type" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2516 +msgctxt "Group type taxonomy search items label" +msgid "Search Group Types" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2517 +msgctxt "Group type taxonomy popular items label" +msgid "Popular Group Types" +msgstr "" + #: bp-groups/bp-groups-functions.php:2518 +msgctxt "Group type taxonomy all items label" +msgid "All Group Types" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2519 +msgctxt "Group type taxonomy parent item label" +msgid "Parent Group Type" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2520 +msgctxt "Group type taxonomy parent item label" +msgid "Parent Group Type:" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2521 +msgctxt "Group type taxonomy edit item label" +msgid "Edit Group Type" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2522 +msgctxt "Group type taxonomy view item label" +msgid "View Group Type" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2523 +msgctxt "Group type taxonomy update item label" +msgid "Update Group Type" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2524 +msgctxt "Group type taxonomy add new item label" +msgid "Add New Group Type" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2525 +msgctxt "Group type taxonomy new item name label" +msgid "New Group Type Name" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2526 +msgctxt "Group type taxonomy separate items with commas label" +msgid "Separate group types with commas" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2527 +msgctxt "Group type taxonomy add or remove items label" +msgid "Add or remove group types" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2528 +msgctxt "Group type taxonomy choose from most used label" +msgid "Choose from the most used group types" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2529 +msgctxt "Group type taxonomy not found label" +msgid "No group types found." +msgstr "" + +#: bp-groups/bp-groups-functions.php:2530 +msgctxt "Group type taxonomy no terms label" +msgid "No group types" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2531 +msgctxt "Group type taxonomy items list navigation label" +msgid "Group Types list navigation" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2532 +msgctxt "Group type taxonomy items list label" +msgid "Group Types list" +msgstr "" + +#. translators: Tab heading when selecting from the most used terms. +#: bp-groups/bp-groups-functions.php:2535 +msgctxt "Group type taxonomy most used items label" +msgid "Most Used" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2536 +msgctxt "Group type taxonomy back to items label" +msgid "← Back to Group Types" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2539 +msgctxt "BP Member type ID label" +msgid "Group Type ID" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2540 +msgctxt "BP Group type ID description" +msgid "Lower-case string, no spaces or special characters. Used to identify the group type." +msgstr "" + +#: bp-groups/bp-groups-functions.php:2541 +msgctxt "BP Group type show in create screen" +msgid "Show on Group Creation" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2542 +msgctxt "BP Group type show in list" +msgid "Show on Group" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2567 +msgctxt "Group type taxonomy description" +msgid "BuddyPress Group Types" +msgstr "" + +#: bp-groups/bp-groups-functions.php:2627 +msgid "Make a list of groups matching this type available on the groups directory." +msgstr "" + +#: bp-groups/bp-groups-functions.php:2637 +msgid "Show during group creation, and when a group admin is on the group’s settings page." +msgstr "" + +#: bp-groups/bp-groups-functions.php:2645 +msgid "Show where group types may be listed, like in the group header." +msgstr "" + +#: bp-groups/bp-groups-functions.php:2707 msgid "Group type already exists." msgstr "" -#: bp-groups/bp-groups-functions.php:2545 +#: bp-groups/bp-groups-functions.php:2736 msgid "You may not register a group type with this name." msgstr "" -#: bp-groups/bp-groups-functions.php:2897 -#: bp-groups/bp-groups-functions.php:2986 -#: bp-groups/bp-groups-functions.php:3052 -#: bp-groups/bp-groups-functions.php:3122 +#: bp-groups/bp-groups-functions.php:3174 +#: bp-groups/bp-groups-functions.php:3263 +#: bp-groups/bp-groups-functions.php:3329 +#: bp-groups/bp-groups-functions.php:3399 msgid "Group URL" msgstr "" -#: bp-groups/bp-groups-functions.php:2904 -#: bp-groups/bp-groups-functions.php:3126 +#: bp-groups/bp-groups-functions.php:3181 +#: bp-groups/bp-groups-functions.php:3403 msgid "Invited By" msgstr "" -#: bp-groups/bp-groups-functions.php:2910 +#: bp-groups/bp-groups-functions.php:3187 msgid "Creator" msgstr "" -#: bp-groups/bp-groups-functions.php:2912 +#: bp-groups/bp-groups-functions.php:3189 msgid "Admin" msgstr "" -#: bp-groups/bp-groups-functions.php:2920 +#: bp-groups/bp-groups-functions.php:3197 msgid "Group Role" msgstr "" -#: bp-groups/bp-groups-functions.php:2925 +#: bp-groups/bp-groups-functions.php:3202 msgid "Date Joined" msgstr "" -#: bp-groups/bp-groups-functions.php:2997 +#: bp-groups/bp-groups-functions.php:3274 msgid "Pending Group Membership Requests" msgstr "" -#: bp-groups/bp-groups-functions.php:3056 +#: bp-groups/bp-groups-functions.php:3333 msgid "Sent To" msgstr "" -#: bp-groups/bp-groups-functions.php:3067 +#: bp-groups/bp-groups-functions.php:3344 msgid "Pending Group Invitations (Sent)" msgstr "" -#: bp-groups/bp-groups-functions.php:3137 +#: bp-groups/bp-groups-functions.php:3414 msgid "Pending Group Invitations (Received)" msgstr "" @@ -5805,100 +6289,100 @@ msgctxt "Group update email text" msgid "* Permalink changed from \"%1$s\" to \"%2$s\"." msgstr "" -#: bp-groups/bp-groups-notifications.php:256 +#: bp-groups/bp-groups-notifications.php:261 msgid "an administrator" msgstr "" -#: bp-groups/bp-groups-notifications.php:259 +#: bp-groups/bp-groups-notifications.php:264 msgid "a moderator" msgstr "" #. translators: 1: number of group membership requests. 2: group name. -#: bp-groups/bp-groups-notifications.php:400 +#: bp-groups/bp-groups-notifications.php:405 msgid "%1$d new membership requests for the group \"%2$s\"" msgstr "" #. translators: %s: member name -#: bp-groups/bp-groups-notifications.php:447 +#: bp-groups/bp-groups-notifications.php:452 msgid "%s requests group membership" msgstr "" #. translators: 1: number of accepted group membership requests. 2: group name. -#: bp-groups/bp-groups-notifications.php:503 +#: bp-groups/bp-groups-notifications.php:508 msgid "%1$d accepted group membership requests for the group \"%2$s\"" msgstr "" #. translators: %s: group name. -#: bp-groups/bp-groups-notifications.php:543 +#: bp-groups/bp-groups-notifications.php:548 msgid "Membership for group \"%s\" accepted" msgstr "" #. translators: 1: number of accepted group membership requests. 2: group name. -#: bp-groups/bp-groups-notifications.php:594 +#: bp-groups/bp-groups-notifications.php:599 msgid "%1$d rejected group membership requests for the group \"%2$s\"" msgstr "" #. translators: %s: group name. -#: bp-groups/bp-groups-notifications.php:634 +#: bp-groups/bp-groups-notifications.php:639 msgid "Membership for group \"%s\" rejected" msgstr "" #. translators: %d: number of groups the user has been promoted admin for -#: bp-groups/bp-groups-notifications.php:684 +#: bp-groups/bp-groups-notifications.php:689 msgid "You were promoted to an admin in %d groups" msgstr "" #. translators: %s: group name. -#: bp-groups/bp-groups-notifications.php:720 +#: bp-groups/bp-groups-notifications.php:725 msgid "You were promoted to an admin in the group \"%s\"" msgstr "" #. translators: %d: number of groups the user has been promoted mod for -#: bp-groups/bp-groups-notifications.php:768 +#: bp-groups/bp-groups-notifications.php:773 msgid "You were promoted to a mod in %d groups" msgstr "" #. translators: %s: group name. -#: bp-groups/bp-groups-notifications.php:804 +#: bp-groups/bp-groups-notifications.php:809 msgid "You were promoted to a mod in the group \"%s\"" msgstr "" #. translators: %d: number of group invites -#: bp-groups/bp-groups-notifications.php:853 +#: bp-groups/bp-groups-notifications.php:858 msgid "You have %d new group invitations" msgstr "" #. translators: %s: group name. -#: bp-groups/bp-groups-notifications.php:888 +#: bp-groups/bp-groups-notifications.php:893 msgid "You have an invitation to the group: %s" msgstr "" -#: bp-groups/bp-groups-notifications.php:1137 +#: bp-groups/bp-groups-notifications.php:1142 msgctxt "Group settings on notification settings page" msgid "Groups" msgstr "" -#: bp-groups/bp-groups-notifications.php:1146 +#: bp-groups/bp-groups-notifications.php:1151 msgctxt "group settings on notification settings page" msgid "A member invites you to join a group" msgstr "" -#: bp-groups/bp-groups-notifications.php:1158 +#: bp-groups/bp-groups-notifications.php:1163 msgctxt "group settings on notification settings page" msgid "Group information is updated" msgstr "" -#: bp-groups/bp-groups-notifications.php:1170 +#: bp-groups/bp-groups-notifications.php:1175 msgctxt "group settings on notification settings page" msgid "You are promoted to a group administrator or moderator" msgstr "" -#: bp-groups/bp-groups-notifications.php:1182 +#: bp-groups/bp-groups-notifications.php:1187 msgctxt "group settings on notification settings page" msgid "A member requests to join a private group for which you are an admin" msgstr "" -#: bp-groups/bp-groups-notifications.php:1194 +#: bp-groups/bp-groups-notifications.php:1199 msgctxt "group settings on notification settings page" msgid "Your request to join a group has been approved or denied" msgstr "" @@ -5908,69 +6392,74 @@ msgctxt "group type URL base" msgid "type" msgstr "" -#: bp-groups/bp-groups-template.php:235 +#: bp-groups/bp-groups-template.php:276 +#: bp-groups/bp-groups-template.php:283 msgid "Group Types:" msgstr "" -#: bp-groups/bp-groups-template.php:684 +#: bp-groups/bp-groups-template.php:284 +msgid "Group Type:" +msgstr "" + +#: bp-groups/bp-groups-template.php:766 msgid "Public Group" msgstr "" -#: bp-groups/bp-groups-template.php:686 +#: bp-groups/bp-groups-template.php:768 msgid "Hidden Group" msgstr "" -#: bp-groups/bp-groups-template.php:688 +#: bp-groups/bp-groups-template.php:770 msgid "Private Group" msgstr "" -#: bp-groups/bp-groups-template.php:690 -#: bp-groups/js/blocks/group.js:142 +#: bp-groups/bp-groups-template.php:772 +#: bp-groups/js/blocks/group.js:223 msgid "Group" msgstr "" -#: bp-groups/bp-groups-template.php:998 +#: bp-groups/bp-groups-template.php:1080 msgid "not yet active" msgstr "" #. translators: %s: group creator name -#: bp-groups/bp-groups-template.php:1550 +#: bp-groups/bp-groups-template.php:1632 msgid "Group creator profile photo of %s" msgstr "" -#: bp-groups/bp-groups-template.php:1634 +#: bp-groups/bp-groups-template.php:1716 msgid "No Admins" msgstr "" -#: bp-groups/bp-groups-template.php:1683 +#: bp-groups/bp-groups-template.php:1765 msgid "No Mods" msgstr "" -#: bp-groups/bp-groups-template.php:1823 +#: bp-groups/bp-groups-template.php:1905 msgid "Filter Groups" msgstr "" -#: bp-groups/bp-groups-template.php:1923 +#: bp-groups/bp-groups-template.php:2005 msgid "Viewing 1 group" msgstr "" #. translators: 1: group from number. 2: group to number. 3: total groups. -#: bp-groups/bp-groups-template.php:1926 +#: bp-groups/bp-groups-template.php:2008 msgid "Viewing %1$s - %2$s of %3$s group" msgid_plural "Viewing %1$s - %2$s of %3$s groups" msgstr[0] "" msgstr[1] "" #. translators: %s = number of members -#: bp-groups/bp-groups-template.php:2026 +#: bp-groups/bp-groups-template.php:2116 #: bp-templates/bp-nouveau/buddypress/members/single/groups/invites.php:40 msgid "%s member" msgid_plural "%s members" msgstr[0] "" msgstr[1] "" -#: bp-groups/bp-groups-template.php:2306 -#: bp-groups/bp-groups-template.php:2412 +#: bp-groups/bp-groups-template.php:2396 +#: bp-groups/bp-groups-template.php:2502 #: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:75 #: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:169 #: bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php:45 @@ -5979,17 +6468,17 @@ msgid "Demote to Member" msgstr "" #. translators: %s: human time diff -#: bp-groups/bp-groups-template.php:2333 -#: bp-groups/bp-groups-template.php:2440 -#: bp-groups/bp-groups-template.php:4151 +#: bp-groups/bp-groups-template.php:2423 +#: bp-groups/bp-groups-template.php:2530 +#: bp-groups/bp-groups-template.php:4241 msgid "joined %s" msgstr "" -#: bp-groups/bp-groups-template.php:2357 +#: bp-groups/bp-groups-template.php:2447 msgid "This group has no administrators" msgstr "" -#: bp-groups/bp-groups-template.php:2411 +#: bp-groups/bp-groups-template.php:2501 #: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:168 #: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:277 #: bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php:74 @@ -5997,78 +6486,78 @@ msgstr "" msgid "Promote to Admin" msgstr "" -#: bp-groups/bp-groups-template.php:2462 +#: bp-groups/bp-groups-template.php:2552 msgid "This group has no moderators" msgstr "" -#: bp-groups/bp-groups-template.php:2819 +#: bp-groups/bp-groups-template.php:2909 msgid "This action should not be used directly. Please use the BuddyPress Group Extension API to generate Manage tabs." msgstr "" -#: bp-groups/bp-groups-template.php:3350 +#: bp-groups/bp-groups-template.php:3440 #: bp-templates/bp-legacy/buddypress-functions.php:1564 #: bp-templates/bp-legacy/buddypress-functions.php:1578 msgid "Leave Group" msgstr "" -#: bp-groups/bp-groups-template.php:3371 +#: bp-groups/bp-groups-template.php:3461 #: bp-templates/bp-legacy/buddypress-functions.php:1598 msgid "Join Group" msgstr "" -#: bp-groups/bp-groups-template.php:3389 +#: bp-groups/bp-groups-template.php:3479 msgid "Accept Invitation" msgstr "" -#: bp-groups/bp-groups-template.php:3404 +#: bp-groups/bp-groups-template.php:3494 #: bp-templates/bp-legacy/buddypress-functions.php:1588 msgid "Request Sent" msgstr "" -#: bp-groups/bp-groups-template.php:3419 +#: bp-groups/bp-groups-template.php:3509 #: bp-templates/bp-legacy/buddypress-functions.php:1600 msgid "Request Membership" msgstr "" -#: bp-groups/bp-groups-template.php:3564 +#: bp-groups/bp-groups-template.php:3654 msgid "This group is not currently accessible." msgstr "" -#: bp-groups/bp-groups-template.php:3575 +#: bp-groups/bp-groups-template.php:3665 msgid "You must accept your pending invitation before you can access this private group." msgstr "" -#: bp-groups/bp-groups-template.php:3577 +#: bp-groups/bp-groups-template.php:3667 msgid "This is a private group and you must request group membership in order to join." msgstr "" -#: bp-groups/bp-groups-template.php:3580 +#: bp-groups/bp-groups-template.php:3670 msgid "This is a private group. To join you must be a registered site member and request group membership." msgstr "" -#: bp-groups/bp-groups-template.php:3583 +#: bp-groups/bp-groups-template.php:3673 msgid "This is a private group. Your membership request is awaiting approval from the group administrator." msgstr "" -#: bp-groups/bp-groups-template.php:3591 +#: bp-groups/bp-groups-template.php:3681 msgid "This is a hidden group and only invited members can join." msgstr "" #. translators: 1: group member from number. 2: group member to number. 3: total group members. -#: bp-groups/bp-groups-template.php:4270 +#: bp-groups/bp-groups-template.php:4360 msgctxt "group members pagination" msgid "Viewing %1$s - %2$s of %3$s member" msgid_plural "Viewing %1$s - %2$s of %3$s members" msgstr[0] "" msgstr[1] "" -#: bp-groups/bp-groups-template.php:4398 +#: bp-groups/bp-groups-template.php:4488 #: bp-templates/bp-legacy/buddypress/groups/single/activity.php:11 #: bp-templates/bp-legacy/buddypress/groups/single/admin.php:11 msgid "Group secondary navigation" msgstr "" -#: bp-groups/bp-groups-template.php:4440 +#: bp-groups/bp-groups-template.php:4530 #: bp-notifications/bp-notifications-template.php:1001 #: bp-templates/bp-legacy/buddypress/blogs/index.php:109 #: bp-templates/bp-legacy/buddypress/groups/index.php:107 @@ -6076,21 +6565,21 @@ msgstr "" #: bp-templates/bp-legacy/buddypress/members/single/blogs.php:19 #: bp-templates/bp-legacy/buddypress/members/single/friends.php:20 #: bp-templates/bp-legacy/buddypress/members/single/groups.php:20 -#: bp-templates/bp-nouveau/includes/template-tags.php:2160 +#: bp-templates/bp-nouveau/includes/template-tags.php:2189 msgid "Order By:" msgstr "" -#: bp-groups/bp-groups-template.php:4443 +#: bp-groups/bp-groups-template.php:4533 #: bp-templates/bp-nouveau/includes/members/functions.php:113 msgid "Oldest" msgstr "" -#: bp-groups/bp-groups-template.php:4446 +#: bp-groups/bp-groups-template.php:4536 #: bp-templates/bp-nouveau/includes/members/functions.php:117 msgid "Group Activity" msgstr "" -#: bp-groups/bp-groups-template.php:4449 +#: bp-groups/bp-groups-template.php:4539 #: bp-groups/classes/class-bp-groups-widget.php:132 #: bp-groups/classes/class-bp-groups-widget.php:239 #: bp-templates/bp-legacy/buddypress/blogs/index.php:113 @@ -6100,78 +6589,78 @@ msgstr "" #: bp-templates/bp-legacy/buddypress/members/single/friends.php:24 #: bp-templates/bp-legacy/buddypress/members/single/groups.php:25 #: bp-templates/bp-nouveau/includes/blogs/functions.php:108 -#: bp-templates/bp-nouveau/includes/groups/functions.php:602 +#: bp-templates/bp-nouveau/includes/groups/functions.php:643 #: bp-templates/bp-nouveau/includes/members/functions.php:102 #: bp-templates/bp-nouveau/includes/members/functions.php:120 msgid "Alphabetical" msgstr "" -#: bp-groups/bp-groups-template.php:4871 +#: bp-groups/bp-groups-template.php:4961 msgid "Group photo" msgstr "" -#: bp-groups/bp-groups-template.php:5180 -#: bp-groups/bp-groups-template.php:5205 +#: bp-groups/bp-groups-template.php:5270 +#: bp-groups/bp-groups-template.php:5295 msgid "Recently Joined" msgstr "" -#: bp-groups/bp-groups-template.php:5181 -#: bp-groups/bp-groups-template.php:5208 +#: bp-groups/bp-groups-template.php:5271 +#: bp-groups/bp-groups-template.php:5298 msgid "Most Popular" msgstr "" -#: bp-groups/bp-groups-template.php:5182 -#: bp-groups/bp-groups-template.php:5211 +#: bp-groups/bp-groups-template.php:5272 +#: bp-groups/bp-groups-template.php:5301 msgid "Administrator Of" msgstr "" -#: bp-groups/bp-groups-template.php:5183 -#: bp-groups/bp-groups-template.php:5214 +#: bp-groups/bp-groups-template.php:5273 +#: bp-groups/bp-groups-template.php:5304 msgid "Moderator Of" msgstr "" #. translators: %s: group type singular name -#: bp-groups/bp-groups-template.php:5242 +#: bp-groups/bp-groups-template.php:5332 msgid "Viewing groups of the type: %s" msgstr "" -#: bp-groups/bp-groups-template.php:5326 +#: bp-groups/bp-groups-template.php:5416 msgid "Group avatar" msgstr "" #. translators: %s: human time diff -#: bp-groups/bp-groups-template.php:5602 +#: bp-groups/bp-groups-template.php:5692 msgid "requested %s" msgstr "" -#: bp-groups/bp-groups-template.php:5674 +#: bp-groups/bp-groups-template.php:5764 msgid "Viewing 1 request" msgstr "" #. translators: 1: group request from number. 2: group request to number. 3: total group requests. -#: bp-groups/bp-groups-template.php:5677 +#: bp-groups/bp-groups-template.php:5767 msgid "Viewing %1$s - %2$s of %3$s request" msgid_plural "Viewing %1$s - %2$s of %3$s requests" msgstr[0] "" msgstr[1] "" -#: bp-groups/bp-groups-template.php:5944 +#: bp-groups/bp-groups-template.php:6034 msgid "Viewing 1 invitation" msgstr "" #. translators: 1: group invite from number. 2: group invite to number. 3: total group invites. -#: bp-groups/bp-groups-template.php:5947 +#: bp-groups/bp-groups-template.php:6037 msgid "Viewing %1$s - %2$s of %3$s invitation" msgid_plural "Viewing %1$s - %2$s of %3$s invitations" msgstr[0] "" msgstr[1] "" -#: bp-groups/bp-groups-template.php:5968 +#: bp-groups/bp-groups-template.php:6058 msgid "Group Activity RSS Feed" msgstr "" #. translators: %s: number of groups -#: bp-groups/bp-groups-template.php:6253 +#: bp-groups/bp-groups-template.php:6343 msgid "%s group" msgid_plural "%s groups" msgstr[0] "" @@ -6183,10 +6672,10 @@ msgstr[1] "" msgid "created %s" msgstr "" -#. translators: %s: last activity timestamp (e.g. "active 1 hour ago") +#. translators: %s: last activity timestamp (e.g. "Active 1 hour ago") #: bp-groups/bp-groups-widgets.php:80 msgctxt "last time the group was active" -msgid "active %s" +msgid "Active %s" msgstr "" #: bp-groups/bp-groups-widgets.php:94 @@ -6347,20 +6836,6 @@ msgstr "" msgid "No Group Profile Photo" msgstr "" -#. translators: %s: last activity timestamp (e.g. "active 1 hour ago") -#: bp-groups/classes/class-bp-groups-invite-template.php:279 -#: bp-groups/classes/class-bp-groups-widget.php:153 -#: bp-members/bp-members-template.php:967 -#: bp-members/bp-members-template.php:1701 -#: bp-templates/bp-legacy/buddypress/groups/groups-loop.php:67 -#: bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php:63 -#: bp-templates/bp-legacy/buddypress/groups/single/group-header.php:72 -#: bp-templates/bp-nouveau/buddypress/groups/groups-loop.php:51 -#: bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php:31 -#: bp-templates/bp-nouveau/buddypress/groups/single/group-header.php:31 -msgid "active %s" -msgstr "" - #: bp-groups/classes/class-bp-groups-list-table.php:253 msgid "No groups found." msgstr "" @@ -6441,7 +6916,7 @@ msgid "No Group Type" msgstr "" #: bp-groups/classes/class-bp-groups-list-table.php:866 -#: bp-members/classes/class-bp-members-admin.php:2392 +#: bp-members/classes/class-bp-members-admin.php:2357 #: bp-xprofile/classes/class-bp-xprofile-user-admin.php:330 msgid "Change" msgstr "" @@ -6450,12 +6925,12 @@ msgstr "" msgid "Group Mod" msgstr "" -#: bp-groups/classes/class-bp-groups-template.php:296 +#: bp-groups/classes/class-bp-groups-template.php:298 msgctxt "Group pagination previous text" msgid "←" msgstr "" -#: bp-groups/classes/class-bp-groups-template.php:297 +#: bp-groups/classes/class-bp-groups-template.php:299 msgctxt "Group pagination next text" msgid "→" msgstr "" @@ -6495,7 +6970,7 @@ msgstr "" #: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:63 #: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:89 #: bp-groups/classes/class-bp-rest-groups-endpoint.php:60 -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:992 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1134 msgid "A unique numeric ID for the Group." msgstr "" @@ -6510,28 +6985,24 @@ msgstr "" msgid "Sorry, you need an image file to upload." msgstr "" -#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:262 +#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:263 msgid "Sorry, group avatar upload is disabled." msgstr "" -#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:275 -#: bp-groups/classes/class-bp-rest-attachments-group-cover-endpoint.php:351 -#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:281 -#: bp-members/classes/class-bp-rest-attachments-member-cover-endpoint.php:350 -#: bp-members/classes/class-bp-rest-signup-endpoint.php:200 -#: bp-members/classes/class-bp-rest-signup-endpoint.php:287 +#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:273 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:187 msgid "Sorry, you are not authorized to perform this action." msgstr "" -#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:308 +#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:307 msgid "Sorry, there are no uploaded avatars for this group on this site." msgstr "" -#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:341 +#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:340 msgid "Sorry, there was a problem deleting this group avatar." msgstr "" -#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:475 +#: bp-groups/classes/class-bp-rest-attachments-group-avatar-endpoint.php:474 msgid "Whether to return an <img> HTML element, vs a raw URL to a group avatar." msgstr "" @@ -6539,7 +7010,7 @@ msgstr "" msgid "Sorry, there was a problem fetching this group cover." msgstr "" -#: bp-groups/classes/class-bp-rest-attachments-group-cover-endpoint.php:164 +#: bp-groups/classes/class-bp-rest-attachments-group-cover-endpoint.php:160 msgid "Invalid group id." msgstr "" @@ -6555,132 +7026,134 @@ msgstr "" msgid "A unique numeric ID for the group invitation." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:200 -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:321 -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:565 -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:690 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:187 +msgid "Sorry, you are not allowed to fetch group invitations with those arguments." +msgstr "" + +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:201 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:353 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:610 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:734 msgid "Sorry, you need to be logged in to see the group invitations." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:222 -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:233 -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:471 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:217 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:252 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:274 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:497 #: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:218 #: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:438 -#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:169 -#: bp-members/classes/class-bp-rest-attachments-member-cover-endpoint.php:159 -#: bp-members/classes/class-bp-rest-members-endpoint.php:155 -#: bp-members/classes/class-bp-rest-members-endpoint.php:232 -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:200 -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:155 -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:291 +#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:165 +#: bp-members/classes/class-bp-rest-attachments-member-cover-endpoint.php:155 +#: bp-members/classes/class-bp-rest-members-endpoint.php:245 +#: bp-members/classes/class-bp-rest-members-endpoint.php:323 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:197 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:160 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:290 msgid "Invalid member ID." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:257 -msgid "Sorry, you are not allowed to fetch group invitations with those arguments." -msgstr "" - -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:331 -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:575 -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:700 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:364 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:621 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:744 msgid "Invalid group invitation ID." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:351 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:381 msgid "Sorry, you are not allowed to fetch an invitation." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:396 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:427 msgid "Could not invite member to the group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:451 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:485 msgid "Sorry, you need to be logged in to create an invitation." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:482 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:519 +#: bp-templates/bp-nouveau/includes/groups/functions.php:533 msgid "Sorry, you are not allowed to create the invitation as requested." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:516 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:556 msgid "Could not accept group invitation." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:588 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:631 msgid "Sorry, you are not allowed to accept the invitation as requested." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:640 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:684 msgid "Could not delete group invitation." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:715 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:759 msgid "Sorry, you are not allowed to delete the invitation as requested." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:862 -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:826 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:905 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:823 msgid "The optional message to send to the invited user." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:871 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:914 msgid "Whether the invite should be sent to the invitee." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:907 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:950 msgid "A unique numeric ID for the BP Invitation object." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:913 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:956 msgid "The ID of the user who is invited to join the Group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:918 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:961 msgid "Whether the invite has been sent to the invitee." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:923 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:966 msgid "The ID of the user who made the invite." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:928 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:971 msgid "The ID of the group to which the user has been invited." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:933 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:976 msgid "The date the object was created or last updated, in the site's timezone." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:939 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:982 msgid "Invitation or request." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:946 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:989 msgid "The raw and rendered versions for the content of the message." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:954 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:997 msgid "Content for the object, as it exists in the database." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:959 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:1002 msgid "HTML content for the object, transformed for display." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:993 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:1036 msgid "ID of the group to limit results to." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:1002 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:1045 msgid "Return only invitations extended to this user." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:1011 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:1054 msgid "Return only invitations extended by this user." msgstr "" -#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:1020 +#: bp-groups/classes/class-bp-rest-group-invites-endpoint.php:1063 msgid "Limit result set to invites that have been sent, not sent, or include all." msgstr "" @@ -6688,125 +7161,128 @@ msgstr "" msgid "A unique numeric ID for the Group Member." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:219 -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:347 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:196 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:270 +msgid "Sorry, you cannot view the group." +msgstr "" + +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:242 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:363 msgid "Could not join the group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:244 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:267 msgid "Could not add member to the group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:301 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:330 msgid "Sorry, you need to be logged in to join a group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:313 -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:473 -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:610 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:342 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:497 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:646 msgid "Invalid group member ID." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:386 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:403 msgid "Could not promote member." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:396 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:413 msgid "Could not demote member." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:405 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:422 msgid "Could not demote member from the group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:406 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:423 msgid "Could not ban member from the group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:407 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:424 msgid "Could not unban member from the group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:461 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:485 #: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:546 msgid "Sorry, you need to be logged in to make an update." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:500 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:530 msgid "Sorry, you are not allowed to ban this group member." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:501 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:531 msgid "Sorry, you are not allowed to unban this group member." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:502 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:532 msgid "Sorry, you are not allowed to promote this group member." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:503 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:533 msgid "Sorry, you are not allowed to demote this group member." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:549 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:578 msgid "Could not remove member from this group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:598 -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:639 -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:655 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:634 msgid "Sorry, you need to be logged in to view a group membership." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:774 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:791 msgid "Group role to assign the user to." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:788 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:805 msgid "A unique numeric ID for the Member to add to the Group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:799 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:816 msgid "Action used to update a group member." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:839 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:856 msgid "Whether the member is a group moderator." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:845 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:862 msgid "Whether the member has been banned from the group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:851 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:868 msgid "Whether the member is a group administrator." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:857 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:874 msgid "Whether the membership of this user has been confirmed." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:863 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:880 msgid "The date of the last time the membership of this user was modified, in the site's timezone." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:893 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:910 msgid "Sort the order of results by the status of the group members." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:902 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:919 msgid "Ensure result set includes specific group roles." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:914 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:931 msgid "Ensure result set excludes specific member IDs." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:923 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:940 msgid "Whether results should exclude group admins and mods." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:931 +#: bp-groups/classes/class-bp-rest-group-membership-endpoint.php:948 msgid "Whether results should exclude banned group members." msgstr "" @@ -6814,231 +7290,255 @@ msgstr "" msgid "A unique numeric ID for the group membership request." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:196 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:202 msgid "Sorry, you need to be logged in to view membership requests." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:232 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:228 msgid "Sorry, you are not allowed to view membership requests." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:296 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:298 msgid "Sorry, you need to be logged in to get a membership." msgstr "" #: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:306 -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:556 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:554 #: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:682 msgid "Invalid group membership request ID." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:319 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:316 msgid "Sorry, you are not allowed to view a membership request." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:354 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:351 msgid "There is already a request to this member." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:372 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:369 msgid "Could not send membership request to this group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:427 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:430 msgid "Sorry, you need to be logged in to create a membership request." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:462 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:456 msgid "User may not extend requests on behalf of another user." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:494 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:488 msgid "There was an error accepting the membership request." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:568 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:564 msgid "User is not allowed to approve membership requests to this group." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:622 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:618 msgid "There was an error rejecting the membership request." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:672 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:674 msgid "Sorry, you need to be logged in to delete a request." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:695 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:692 msgid "User is not allowed to delete this membership request." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:866 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:863 msgid "The ID of the user who requested a Group membership." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:867 -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:894 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:864 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:891 msgid "The ID of the group the user requested a membership for." msgstr "" -#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:893 +#: bp-groups/classes/class-bp-rest-group-membership-request-endpoint.php:890 msgid "Return only Membership requests made by a specific user." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:179 -msgid "Sorry, you cannot view hidden groups." +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:75 +msgid "Whether to fetch extra BP data about the returned group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:255 -msgid "Sorry, you cannot view the group." +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:105 +msgid "The maximum amount of groups the user is member of to return. Defaults to all groups." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:290 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:317 msgid "Please, enter the name of group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:302 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:329 msgid "Cannot create new group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:392 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:422 msgid "Cannot update existing group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:442 -msgid "Sorry, you need to be logged in to update this group." +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:469 +msgid "Sorry, you are not allowed to update this group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:465 -msgid "Sorry, you are not allowed to update this group." +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:487 +msgid "Sorry, you need to be logged in to update this group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:502 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:526 msgid "Could not delete the group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:546 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:567 +msgid "Sorry, you are not allowed to delete this group." +msgstr "" + +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:585 msgid "Sorry, you need to be logged in to delete this group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:568 -msgid "Sorry, you are not allowed to delete this group." +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:620 +msgid "Invalid user ID." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:948 -msgid "Set type(s) for a group." +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:690 +msgid "Sorry, you need to be logged in to view your groups." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:998 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1075 +msgid "Assign one or more type to a group. To assign more than one type, use a comma separated list of types." +msgstr "" + +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1088 +msgid "Append one or more type to a group. To append more than one type, use a comma separated list of types." +msgstr "" + +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1097 +msgid "Remove one or more type of a group. To remove more than one type, use a comma separated list of types." +msgstr "" + +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1140 msgid "The ID of the user who created the Group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1004 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1146 msgid "The name of the Group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1013 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1155 msgid "The URL-friendly slug for the Group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1021 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1163 msgid "The permalink to the Group on the site." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1028 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1170 msgid "The description of the Group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1037 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1179 msgid "Content for the description of the Group, as it exists in the database." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1042 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1184 msgid "HTML content for the description of the Group, transformed for display." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1051 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1193 msgid "The status of the Group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1061 -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1261 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1203 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1409 msgid "Whether the Group has a forum enabled or not." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1066 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1208 msgid "ID of the parent Group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1071 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1213 msgid "The date the Group was created, in the site's timezone." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1078 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1220 msgid "The type(s) of the Group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1088 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1230 msgid "Group administrators." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1097 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1239 msgid "Group moderators." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1106 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1248 msgid "Count of all Group members." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1112 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1254 msgid "The date the Group was last active, in the site's timezone." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1141 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1261 +msgid "The human diff time the Group was last active, in the site's timezone." +msgstr "" + +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1289 msgid "Avatar URLs for the group." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1169 -#: bp-members/classes/class-bp-rest-members-endpoint.php:791 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1317 +#: bp-members/classes/class-bp-rest-members-endpoint.php:1010 msgid "Shorthand for certain orderby/order combinations." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1187 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1335 msgid "Order Groups by which attribute." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1196 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1344 msgid "Group statuses to limit results to." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1208 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1356 msgid "Pass a user_id to limit to only Groups that this user is a member of." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1216 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1364 msgid "Get Groups that are children of the specified Group(s) IDs." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1226 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1374 msgid "Get Groups based on their meta data information." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1234 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1382 msgid "Ensure result set includes Groups with specific IDs." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1243 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1391 msgid "Ensure result set excludes Groups with specific IDs" msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1252 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1400 msgid "Limit results set to a certain Group type." msgstr "" -#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1269 +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1417 msgid "Whether results should include hidden Groups." msgstr "" +#: bp-groups/classes/class-bp-rest-groups-endpoint.php:1425 +msgid "Whether to fetch extra BP data about the returned groups." +msgstr "" + #: bp-groups/screens/single/admin/delete-group.php:43 msgid "There was an error deleting the group. Please try again." msgstr "" @@ -7127,19 +7627,19 @@ msgstr "" msgid "Group membership request rejected" msgstr "" -#: bp-groups/screens/single/request-membership.php:28 +#: bp-groups/screens/single/request-membership.php:30 msgid "Group invite accepted" msgstr "" -#: bp-groups/screens/single/request-membership.php:30 +#: bp-groups/screens/single/request-membership.php:32 msgid "There was an error accepting the group invitation. Please try again." msgstr "" -#: bp-groups/screens/single/request-membership.php:42 +#: bp-groups/screens/single/request-membership.php:58 msgid "There was an error sending your group membership request. Please try again." msgstr "" -#: bp-groups/screens/single/request-membership.php:44 +#: bp-groups/screens/single/request-membership.php:60 msgid "Your membership request was sent to the group administrator successfully. You will be notified when the group administrator responds to your request." msgstr "" @@ -7200,6 +7700,56 @@ msgstr "" msgid "%s became a registered member" msgstr "" +#: bp-members/bp-members-admin.php:32 +#: bp-members/bp-members-admin.php:33 +#: bp-members/bp-members-admin.php:41 +#: bp-members/bp-members-admin.php:42 +#: bp-templates/bp-nouveau/buddypress/members/single/cover-image-header.php:53 +#: bp-templates/bp-nouveau/buddypress/members/single/member-header.php:39 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1459 +msgid "Member Types" +msgstr "" + +#: bp-members/bp-members-admin.php:81 +msgid "Please define the Member Type ID field." +msgstr "" + +#: bp-members/bp-members-admin.php:82 +msgid "Member type successfully added." +msgstr "" + +#: bp-members/bp-members-admin.php:83 +msgid "Sorry, there was an error and the Member type wasn’t added." +msgstr "" + +#: bp-members/bp-members-admin.php:85 +msgid "Member type successfully updated." +msgstr "" + +#: bp-members/bp-members-admin.php:86 +msgid "Sorry, this Member type already exists." +msgstr "" + +#: bp-members/bp-members-admin.php:87 +msgid "Sorry, the Member type was not deleted: it does not exist." +msgstr "" + +#: bp-members/bp-members-admin.php:88 +msgid "Sorry, This Member type is registered using code, deactivate the plugin or remove the custom code before trying to delete it again." +msgstr "" + +#: bp-members/bp-members-admin.php:89 +msgid "Sorry, there was an error while trying to delete this Member type." +msgstr "" + +#: bp-members/bp-members-admin.php:90 +msgid "Member type successfully deleted." +msgstr "" + +#: bp-members/bp-members-admin.php:91 +msgid "Member type could not be updated due to missing required information." +msgstr "" + #: bp-members/bp-members-adminbar.php:41 msgid "Edit My Profile" msgstr "" @@ -7219,129 +7769,271 @@ msgid "Edit Profile" msgstr "" #: bp-members/bp-members-adminbar.php:113 -#: bp-members/classes/class-bp-members-admin.php:1288 +#: bp-members/classes/class-bp-members-admin.php:1265 msgid "Edit Profile Photo" msgstr "" -#: bp-members/bp-members-adminbar.php:123 -msgid "Edit Cover Image" +#: bp-members/bp-members-adminbar.php:123 +msgid "Edit Cover Image" +msgstr "" + +#. translators: Link to Delete Account Settings page +#: bp-members/bp-members-adminbar.php:143 +#: bp-settings/classes/class-bp-settings-component.php:211 +#: bp-settings/classes/class-bp-settings-component.php:286 +#: bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php:44 +#: bp-templates/bp-nouveau/buddypress/members/single/settings/data.php:66 +#: bp-templates/bp-nouveau/buddypress/members/single/settings/delete-account.php:12 +#: bp-templates/bp-nouveau/includes/functions.php:1279 +msgid "Delete Account" +msgstr "" + +#: bp-members/bp-members-blocks.php:157 +#: bp-members/classes/class-bp-members-admin.php:1137 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/profile-loop.php:11 +msgid "View Profile" +msgstr "" + +#: bp-members/bp-members-functions.php:1135 +msgid "User last_activity data is no longer stored in usermeta. Use bp_get_user_last_activity() instead." +msgstr "" + +#: bp-members/bp-members-functions.php:1170 +msgid "User last_activity data is no longer stored in usermeta. Use bp_update_user_last_activity() instead." +msgstr "" + +#: bp-members/bp-members-functions.php:1429 +#: bp-members/bp-members-functions.php:2612 +msgid "<strong>Error</strong>: Your account has been marked as a spammer." +msgstr "" + +#: bp-members/bp-members-functions.php:1677 +msgid "Please check your email address." +msgstr "" + +#: bp-members/bp-members-functions.php:1681 +#: bp-members/bp-members-functions.php:1685 +msgid "Sorry, that email address is not allowed!" +msgstr "" + +#: bp-members/bp-members-functions.php:1689 +msgid "Sorry, that email address is already used!" +msgstr "" + +#: bp-members/bp-members-functions.php:1729 +msgid "Please enter a username" +msgstr "" + +#: bp-members/bp-members-functions.php:1735 +msgid "That username is not allowed" +msgstr "" + +#: bp-members/bp-members-functions.php:1740 +msgid "Usernames can contain only letters, numbers, ., -, and @" +msgstr "" + +#: bp-members/bp-members-functions.php:1745 +msgid "Username must be at least 4 characters" +msgstr "" + +#: bp-members/bp-members-functions.php:1750 +msgid "Sorry, usernames may not contain the character \"_\"!" +msgstr "" + +#: bp-members/bp-members-functions.php:1757 +msgid "Sorry, usernames must have letters too!" +msgstr "" + +#: bp-members/bp-members-functions.php:1769 +msgid "Sorry, that username already exists!" +msgstr "" + +#: bp-members/bp-members-functions.php:1812 +msgid "Please make sure you enter your password twice" +msgstr "" + +#: bp-members/bp-members-functions.php:1816 +msgid "The passwords you entered do not match." +msgstr "" + +#: bp-members/bp-members-functions.php:2022 +#: bp-members/bp-members-functions.php:2049 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:645 +msgid "Invalid activation key." +msgstr "" + +#: bp-members/bp-members-functions.php:2029 +msgid "The user is already active." +msgstr "" + +#: bp-members/bp-members-functions.php:2031 +msgid "The site is already active." +msgstr "" + +#: bp-members/bp-members-functions.php:2061 +msgid "Could not create user" +msgstr "" + +#: bp-members/bp-members-functions.php:2075 +msgid "That username is already activated." +msgstr "" + +#. translators: %s: the activation url +#: bp-members/bp-members-functions.php:2434 +msgid "If you have not received an email yet, <a href=\"%s\">click here to resend it</a>." +msgstr "" + +#: bp-members/bp-members-functions.php:2436 +msgid "<strong>Error</strong>: Your account has not been activated. Check your email for the activation link." +msgstr "" + +#: bp-members/bp-members-functions.php:2467 +msgid "<strong>Error</strong>: Your account has already been activated." +msgstr "" + +#: bp-members/bp-members-functions.php:2469 +msgid "Activation email resent! Please check your inbox or spam folder." +msgstr "" + +#: bp-members/bp-members-functions.php:2694 +msgctxt "Member type taxonomy name" +msgid "Member Types" +msgstr "" + +#: bp-members/bp-members-functions.php:2695 +msgctxt "Member type taxonomy singular name" +msgid "Member Type" +msgstr "" + +#: bp-members/bp-members-functions.php:2696 +msgctxt "Member type taxonomy search items label" +msgid "Search Member Types" msgstr "" -#. translators: Link to Delete Account Settings page -#: bp-members/bp-members-adminbar.php:143 -#: bp-settings/classes/class-bp-settings-component.php:211 -#: bp-settings/classes/class-bp-settings-component.php:286 -#: bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php:44 -#: bp-templates/bp-nouveau/buddypress/members/single/settings/data.php:66 -#: bp-templates/bp-nouveau/buddypress/members/single/settings/delete-account.php:12 -#: bp-templates/bp-nouveau/includes/functions.php:1279 -msgid "Delete Account" +#: bp-members/bp-members-functions.php:2697 +msgctxt "Member type taxonomy popular items label" +msgid "Popular Member Types" msgstr "" -#: bp-members/bp-members-blocks.php:157 -#: bp-members/classes/class-bp-members-admin.php:1160 -#: bp-templates/bp-nouveau/buddypress/members/single/profile/profile-loop.php:11 -msgid "View Profile" +#: bp-members/bp-members-functions.php:2698 +msgctxt "Member type taxonomy all items label" +msgid "All Member Types" msgstr "" -#: bp-members/bp-members-functions.php:1073 -msgid "User last_activity data is no longer stored in usermeta. Use bp_get_user_last_activity() instead." +#: bp-members/bp-members-functions.php:2699 +msgctxt "Member type taxonomy parent item label" +msgid "Parent Member Type" msgstr "" -#: bp-members/bp-members-functions.php:1108 -msgid "User last_activity data is no longer stored in usermeta. Use bp_update_user_last_activity() instead." +#: bp-members/bp-members-functions.php:2700 +msgctxt "Member type taxonomy parent item label" +msgid "Parent Member Type:" msgstr "" -#: bp-members/bp-members-functions.php:1367 -#: bp-members/bp-members-functions.php:2516 -msgid "<strong>ERROR</strong>: Your account has been marked as a spammer." +#: bp-members/bp-members-functions.php:2701 +msgctxt "Member type taxonomy edit item label" +msgid "Edit Member Type" msgstr "" -#: bp-members/bp-members-functions.php:1615 -msgid "Please check your email address." +#: bp-members/bp-members-functions.php:2702 +msgctxt "Member type taxonomy view item label" +msgid "View Member Type" msgstr "" -#: bp-members/bp-members-functions.php:1619 -#: bp-members/bp-members-functions.php:1623 -msgid "Sorry, that email address is not allowed!" +#: bp-members/bp-members-functions.php:2703 +msgctxt "Member type taxonomy update item label" +msgid "Update Member Type" msgstr "" -#: bp-members/bp-members-functions.php:1627 -msgid "Sorry, that email address is already used!" +#: bp-members/bp-members-functions.php:2704 +msgctxt "Member type taxonomy add new item label" +msgid "Add New Member Type" msgstr "" -#: bp-members/bp-members-functions.php:1667 -msgid "Please enter a username" +#: bp-members/bp-members-functions.php:2705 +msgctxt "Member type taxonomy new item name label" +msgid "New Member Type Name" msgstr "" -#: bp-members/bp-members-functions.php:1673 -msgid "That username is not allowed" +#: bp-members/bp-members-functions.php:2706 +msgctxt "Member type taxonomy separate items with commas label" +msgid "Separate member types with commas" msgstr "" -#: bp-members/bp-members-functions.php:1678 -msgid "Usernames can contain only letters, numbers, ., -, and @" +#: bp-members/bp-members-functions.php:2707 +msgctxt "Member type taxonomy add or remove items label" +msgid "Add or remove member types" msgstr "" -#: bp-members/bp-members-functions.php:1683 -msgid "Username must be at least 4 characters" +#: bp-members/bp-members-functions.php:2708 +msgctxt "Member type taxonomy choose from most used label" +msgid "Choose from the most used meber types" msgstr "" -#: bp-members/bp-members-functions.php:1688 -msgid "Sorry, usernames may not contain the character \"_\"!" +#: bp-members/bp-members-functions.php:2709 +msgctxt "Member type taxonomy not found label" +msgid "No member types found." msgstr "" -#: bp-members/bp-members-functions.php:1695 -msgid "Sorry, usernames must have letters too!" +#: bp-members/bp-members-functions.php:2710 +msgctxt "Member type taxonomy no terms label" +msgid "No member types" msgstr "" -#: bp-members/bp-members-functions.php:1707 -msgid "Sorry, that username already exists!" +#: bp-members/bp-members-functions.php:2711 +msgctxt "Member type taxonomy items list navigation label" +msgid "Member Types list navigation" msgstr "" -#: bp-members/bp-members-functions.php:1926 -#: bp-members/bp-members-functions.php:1953 -#: bp-members/classes/class-bp-rest-signup-endpoint.php:666 -msgid "Invalid activation key." +#: bp-members/bp-members-functions.php:2712 +msgctxt "Member type taxonomy items list label" +msgid "Member Types list" msgstr "" -#: bp-members/bp-members-functions.php:1933 -msgid "The user is already active." +#. translators: Tab heading when selecting from the most used terms. +#: bp-members/bp-members-functions.php:2715 +msgctxt "Member type taxonomy most used items label" +msgid "Most Used" msgstr "" -#: bp-members/bp-members-functions.php:1935 -msgid "The site is already active." +#: bp-members/bp-members-functions.php:2716 +msgctxt "Member type taxonomy back to items label" +msgid "← Back to Member Types" msgstr "" -#: bp-members/bp-members-functions.php:1965 -msgid "Could not create user" +#: bp-members/bp-members-functions.php:2719 +msgctxt "BP Member type ID label" +msgid "Member Type ID" msgstr "" -#: bp-members/bp-members-functions.php:1979 -msgid "That username is already activated." +#: bp-members/bp-members-functions.php:2720 +msgctxt "BP Member type ID description" +msgid "Enter a lower-case string without spaces or special characters (used internally to identify the member type)." msgstr "" -#. translators: %s: the activation url -#: bp-members/bp-members-functions.php:2338 -msgid "If you have not received an email yet, <a href=\"%s\">click here to resend it</a>." +#: bp-members/bp-members-functions.php:2721 +msgctxt "BP Member type show in list" +msgid "Show on Member" msgstr "" -#: bp-members/bp-members-functions.php:2340 -msgid "<strong>ERROR</strong>: Your account has not been activated. Check your email for the activation link." +#: bp-members/bp-members-functions.php:2746 +msgctxt "Member type taxonomy description" +msgid "BuddyPress Member Types" msgstr "" -#: bp-members/bp-members-functions.php:2371 -msgid "<strong>ERROR</strong>: Your account has already been activated." +#: bp-members/bp-members-functions.php:2768 +msgid "Make a list of members matching this type available on the members directory." msgstr "" -#: bp-members/bp-members-functions.php:2373 -msgid "Activation email resent! Please check your inbox or spam folder." +#: bp-members/bp-members-functions.php:2778 +msgid "Show where member types may be listed, like in the member header." msgstr "" -#: bp-members/bp-members-functions.php:2603 +#: bp-members/bp-members-functions.php:2833 msgid "Member type already exists." msgstr "" -#: bp-members/bp-members-functions.php:2626 +#: bp-members/bp-members-functions.php:2859 msgid "You may not register a member type with this name." msgstr "" @@ -7350,77 +8042,85 @@ msgctxt "member type URL base" msgid "type" msgstr "" -#: bp-members/bp-members-template.php:482 +#: bp-members/bp-members-template.php:473 msgid "Viewing 1 active member" msgstr "" #. translators: 1: active member from number. 2: active member to number. 3: total active members. -#: bp-members/bp-members-template.php:485 +#: bp-members/bp-members-template.php:476 msgid "Viewing %1$s - %2$s of %3$s active member" msgid_plural "Viewing %1$s - %2$s of %3$s active members" msgstr[0] "" msgstr[1] "" -#: bp-members/bp-members-template.php:489 +#: bp-members/bp-members-template.php:480 msgid "Viewing 1 member with friends" msgstr "" #. translators: 1: member with friends from number. 2: member with friends to number. 3: total members with friends. -#: bp-members/bp-members-template.php:492 +#: bp-members/bp-members-template.php:483 msgid "Viewing %1$s - %2$s of %3$s member with friends" msgid_plural "Viewing %1$s - %2$s of %3$s members with friends" msgstr[0] "" msgstr[1] "" -#: bp-members/bp-members-template.php:496 +#: bp-members/bp-members-template.php:487 msgid "Viewing 1 online member" msgstr "" #. translators: 1: online member from number. 2: online member to number. 3: total online members. -#: bp-members/bp-members-template.php:499 +#: bp-members/bp-members-template.php:490 msgid "Viewing %1$s - %2$s of %3$s online member" msgid_plural "Viewing %1$s - %2$s of %3$s online members" msgstr[0] "" msgstr[1] "" #. translators: 1: member from number. 2: member to number. 3: total members. -#: bp-members/bp-members-template.php:506 +#: bp-members/bp-members-template.php:497 msgid "Viewing %1$s - %2$s of %3$s member" msgid_plural "Viewing %1$s - %2$s of %3$s members" msgstr[0] "" msgstr[1] "" #. translators: %s: the member latest activity update -#: bp-members/bp-members-template.php:1048 +#: bp-members/bp-members-template.php:1040 msgctxt "member latest update in member directory" msgid "- "%s"" msgstr "" #. translators: %s: last activity timestamp (e.g. "active 1 hour ago") -#: bp-members/bp-members-template.php:1214 +#: bp-members/bp-members-template.php:1206 msgctxt "Records the timestamp that the user registered into the activity stream" msgid "registered %s" msgstr "" #. translators: %s: member type singular name -#: bp-members/bp-members-template.php:2017 +#: bp-members/bp-members-template.php:2011 msgid "Viewing members of the type: %s" msgstr "" -#: bp-members/bp-members-template.php:2499 +#: bp-members/bp-members-template.php:2131 +msgid "Member Types:" +msgstr "" + +#: bp-members/bp-members-template.php:2132 +msgid "Member Type:" +msgstr "" + +#: bp-members/bp-members-template.php:2677 msgid "Your Profile Photo" msgstr "" -#: bp-members/bp-members-template.php:2589 +#: bp-members/bp-members-template.php:2767 msgid "Activity RSS Feed" msgstr "" -#: bp-members/classes/class-bp-core-members-template.php:191 +#: bp-members/classes/class-bp-core-members-template.php:251 msgctxt "Member pagination previous text" msgid "←" msgstr "" -#: bp-members/classes/class-bp-core-members-template.php:192 +#: bp-members/classes/class-bp-core-members-template.php:252 msgctxt "Member pagination next text" msgid "→" msgstr "" @@ -7579,140 +8279,127 @@ msgstr "" msgid "← Back to Users" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1009 -#: bp-members/classes/class-bp-members-admin.php:1029 -#: bp-members/classes/class-bp-members-admin.php:2085 -#: bp-members/classes/class-bp-members-admin.php:2106 +#: bp-members/classes/class-bp-members-admin.php:1007 +#: bp-members/classes/class-bp-members-admin.php:2071 msgctxt "user" msgid "Add New" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1013 -#: bp-members/classes/class-bp-members-admin.php:1033 -#: bp-members/classes/class-bp-members-admin.php:2089 -#: bp-members/classes/class-bp-members-admin.php:2110 +#: bp-members/classes/class-bp-members-admin.php:1011 +#: bp-members/classes/class-bp-members-admin.php:2075 msgctxt "user" msgid "Add Existing" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1074 +#: bp-members/classes/class-bp-members-admin.php:1051 msgid "No user found with this ID." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1107 +#: bp-members/classes/class-bp-members-admin.php:1084 msgid "User account has not yet been activated" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1133 +#: bp-members/classes/class-bp-members-admin.php:1110 msgid "Spammer" msgstr "" #. translators: %s: registration date -#: bp-members/classes/class-bp-members-admin.php:1148 +#: bp-members/classes/class-bp-members-admin.php:1125 msgid "Registered on: %s" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1161 +#: bp-members/classes/class-bp-members-admin.php:1138 msgid "Update Profile" msgstr "" #. translators: %s: member name -#: bp-members/classes/class-bp-members-admin.php:1183 +#: bp-members/classes/class-bp-members-admin.php:1160 #: bp-xprofile/classes/class-bp-xprofile-user-admin.php:375 msgid "%s has been marked as a spammer. All BuddyPress data associated with the user has been removed" msgstr "" #. translators: %s: date -#: bp-members/classes/class-bp-members-admin.php:1219 +#: bp-members/classes/class-bp-members-admin.php:1196 msgid "Last active: %1$s" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1282 +#: bp-members/classes/class-bp-members-admin.php:1259 msgid "Delete Profile Photo" msgstr "" #. translators: accessibility text -#: bp-members/classes/class-bp-members-admin.php:1318 +#: bp-members/classes/class-bp-members-admin.php:1297 msgid "Select member type" msgstr "" -#. translators: no option picked in select box -#: bp-members/classes/class-bp-members-admin.php:1323 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:209 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:232 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:240 -#: bp-xprofile/classes/class-bp-xprofile-field-type-selectbox.php:108 -msgid "----" -msgstr "" - -#: bp-members/classes/class-bp-members-admin.php:1403 +#: bp-members/classes/class-bp-members-admin.php:1391 msgid "Extended" msgstr "" #. translators: %s: number of pending accounts -#: bp-members/classes/class-bp-members-admin.php:1566 +#: bp-members/classes/class-bp-members-admin.php:1554 msgctxt "signup users" msgid "Pending %s" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1641 +#: bp-members/classes/class-bp-members-admin.php:1629 msgctxt "Pending Accounts per page (screen options)" msgid "Pending Accounts" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1647 +#: bp-members/classes/class-bp-members-admin.php:1635 msgid "This is the administration screen for pending accounts on your site." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1648 +#: bp-members/classes/class-bp-members-admin.php:1636 msgid "From the screen options, you can customize the displayed columns and the pagination of this screen." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1649 +#: bp-members/classes/class-bp-members-admin.php:1637 msgid "You can reorder the list of your pending accounts by clicking on the Username, Email or Registered column headers." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1650 +#: bp-members/classes/class-bp-members-admin.php:1638 msgid "Using the search form, you can find pending accounts more easily. The Username and Email fields will be included in the search." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1657 +#: bp-members/classes/class-bp-members-admin.php:1645 msgid "Hovering over a row in the pending accounts list will display action links that allow you to manage pending accounts. You can perform the following actions:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1658 +#: bp-members/classes/class-bp-members-admin.php:1646 msgid "\"Email\" takes you to the confirmation screen before being able to send the activation link to the desired pending account. You can only send the activation email once per day." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1659 +#: bp-members/classes/class-bp-members-admin.php:1647 msgid "\"Delete\" allows you to delete a pending account from your site. You will be asked to confirm this deletion." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1660 +#: bp-members/classes/class-bp-members-admin.php:1648 msgid "By clicking on a Username you will be able to activate a pending account from the confirmation screen." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1661 +#: bp-members/classes/class-bp-members-admin.php:1649 msgid "Bulk actions allow you to perform these 3 actions for the selected rows." msgstr "" #. translators: accessibility text -#: bp-members/classes/class-bp-members-admin.php:1673 +#: bp-members/classes/class-bp-members-admin.php:1661 msgid "Filter users list" msgstr "" #. translators: accessibility text -#: bp-members/classes/class-bp-members-admin.php:1675 +#: bp-members/classes/class-bp-members-admin.php:1663 msgid "Pending users list navigation" msgstr "" #. translators: accessibility text -#: bp-members/classes/class-bp-members-admin.php:1677 +#: bp-members/classes/class-bp-members-admin.php:1665 msgid "Pending users list" msgstr "" #. translators: %s: number of activation emails sent -#: bp-members/classes/class-bp-members-admin.php:1836 +#: bp-members/classes/class-bp-members-admin.php:1824 msgctxt "signup resent" msgid "%s activation email successfully sent! " msgid_plural "%s activation emails successfully sent! " @@ -7720,7 +8407,7 @@ msgstr[0] "" msgstr[1] "" #. translators: %s: number of unsent activation emails -#: bp-members/classes/class-bp-members-admin.php:1848 +#: bp-members/classes/class-bp-members-admin.php:1836 msgctxt "signup notsent" msgid "%s activation email was not sent." msgid_plural "%s activation emails were not sent." @@ -7728,7 +8415,7 @@ msgstr[0] "" msgstr[1] "" #. translators: %s: number of activated accounts -#: bp-members/classes/class-bp-members-admin.php:1872 +#: bp-members/classes/class-bp-members-admin.php:1860 msgctxt "signup resent" msgid "%s account successfully activated! " msgid_plural "%s accounts successfully activated! " @@ -7736,7 +8423,7 @@ msgstr[0] "" msgstr[1] "" #. translators: %s: number of accounts not activated -#: bp-members/classes/class-bp-members-admin.php:1884 +#: bp-members/classes/class-bp-members-admin.php:1872 msgctxt "signup notsent" msgid "%s account was not activated." msgid_plural "%s accounts were not activated." @@ -7744,7 +8431,7 @@ msgstr[0] "" msgstr[1] "" #. translators: %s: number of deleted signups -#: bp-members/classes/class-bp-members-admin.php:1908 +#: bp-members/classes/class-bp-members-admin.php:1896 msgctxt "signup deleted" msgid "%s sign-up successfully deleted!" msgid_plural "%s sign-ups successfully deleted!" @@ -7752,75 +8439,74 @@ msgstr[0] "" msgstr[1] "" #. translators: %s: number of deleted signups not deleted -#: bp-members/classes/class-bp-members-admin.php:1920 +#: bp-members/classes/class-bp-members-admin.php:1908 msgctxt "signup notdeleted" msgid "%s sign-up was not deleted." msgid_plural "%s sign-ups were not deleted." msgstr[0] "" msgstr[1] "" -#: bp-members/classes/class-bp-members-admin.php:1943 +#: bp-members/classes/class-bp-members-admin.php:1931 msgid "There was a problem sending the activation emails. Please try again." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1950 +#: bp-members/classes/class-bp-members-admin.php:1938 msgid "There was a problem activating accounts. Please try again." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1957 +#: bp-members/classes/class-bp-members-admin.php:1945 msgid "There was a problem deleting sign-ups. Please try again." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2081 -#: bp-members/classes/class-bp-members-admin.php:2102 +#: bp-members/classes/class-bp-members-admin.php:2067 msgid "Users" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2128 +#: bp-members/classes/class-bp-members-admin.php:2091 msgid "Search Pending Users" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2176 +#: bp-members/classes/class-bp-members-admin.php:2139 msgid "Delete Pending Accounts" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2178 +#: bp-members/classes/class-bp-members-admin.php:2141 msgid "You are about to delete the following account:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2180 +#: bp-members/classes/class-bp-members-admin.php:2143 msgid "You are about to delete the following accounts:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2185 +#: bp-members/classes/class-bp-members-admin.php:2148 msgid "Activate Pending Accounts" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2187 +#: bp-members/classes/class-bp-members-admin.php:2150 msgid "You are about to activate the following account:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2189 +#: bp-members/classes/class-bp-members-admin.php:2152 msgid "You are about to activate the following accounts:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2194 +#: bp-members/classes/class-bp-members-admin.php:2157 msgid "Resend Activation Emails" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2196 +#: bp-members/classes/class-bp-members-admin.php:2159 msgid "You are about to resend an activation email to the following account:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2198 +#: bp-members/classes/class-bp-members-admin.php:2161 msgid "You are about to resend an activation email to the following accounts:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2267 +#: bp-members/classes/class-bp-members-admin.php:2232 msgid "Display Name" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2272 +#: bp-members/classes/class-bp-members-admin.php:2237 #: bp-members/classes/class-bp-members-list-table.php:152 #: bp-members/classes/class-bp-members-list-table.php:317 #: bp-members/classes/class-bp-members-ms-list-table.php:139 @@ -7831,36 +8517,36 @@ msgid "Email" msgstr "" #. translators: %s: notification date -#: bp-members/classes/class-bp-members-admin.php:2320 +#: bp-members/classes/class-bp-members-admin.php:2285 msgid "Last notified: %s" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2325 +#: bp-members/classes/class-bp-members-admin.php:2290 msgid "(less than 24 hours ago)" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2343 +#: bp-members/classes/class-bp-members-admin.php:2308 msgid "Confirm" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2377 -#: bp-members/classes/class-bp-members-admin.php:2379 +#: bp-members/classes/class-bp-members-admin.php:2342 +#: bp-members/classes/class-bp-members-admin.php:2344 msgid "Change member type to…" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2387 +#: bp-members/classes/class-bp-members-admin.php:2352 msgid "No Member Type" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2482 +#: bp-members/classes/class-bp-members-admin.php:2444 msgid "There was an error while changing member type. Please try again." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2485 +#: bp-members/classes/class-bp-members-admin.php:2447 msgid "Member type was changed successfully." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2503 +#: bp-members/classes/class-bp-members-admin.php:2465 msgctxt "Label for the WP users table member type column" msgid "Member Type" msgstr "" @@ -7869,55 +8555,55 @@ msgstr "" msgid "Search Members..." msgstr "" -#: bp-members/classes/class-bp-members-component.php:321 +#: bp-members/classes/class-bp-members-component.php:322 msgctxt "Profile header sub menu" msgid "Change Profile Photo" msgstr "" -#: bp-members/classes/class-bp-members-component.php:334 +#: bp-members/classes/class-bp-members-component.php:335 msgctxt "Profile header sub menu" msgid "Change Cover Image" msgstr "" -#: bp-members/classes/class-bp-members-component.php:392 +#: bp-members/classes/class-bp-members-component.php:393 msgctxt "Member profile main navigation" msgid "Profile" msgstr "" -#: bp-members/classes/class-bp-members-component.php:417 +#: bp-members/classes/class-bp-members-component.php:418 msgctxt "Member profile view" msgid "View" msgstr "" -#: bp-members/classes/class-bp-members-component.php:431 +#: bp-members/classes/class-bp-members-component.php:432 #: bp-templates/bp-nouveau/includes/members/functions.php:493 msgctxt "Member Home page" msgid "Home" msgstr "" -#: bp-members/classes/class-bp-members-component.php:530 +#: bp-members/classes/class-bp-members-component.php:531 msgctxt "My Account Profile sub nav" msgid "Change Profile Photo" msgstr "" -#: bp-members/classes/class-bp-members-component.php:541 +#: bp-members/classes/class-bp-members-component.php:542 msgctxt "My Account Profile sub nav" msgid "Change Cover Image" msgstr "" -#: bp-members/classes/class-bp-members-component.php:567 -#: bp-xprofile/classes/class-bp-xprofile-component.php:336 +#: bp-members/classes/class-bp-members-component.php:568 +#: bp-xprofile/classes/class-bp-xprofile-component.php:338 msgctxt "My Account Profile" msgid "Profile" msgstr "" -#: bp-members/classes/class-bp-members-component.php:575 -#: bp-xprofile/classes/class-bp-xprofile-component.php:344 +#: bp-members/classes/class-bp-members-component.php:576 +#: bp-xprofile/classes/class-bp-xprofile-component.php:346 msgctxt "My Account Profile sub nav" msgid "View" msgstr "" -#: bp-members/classes/class-bp-members-component.php:624 +#: bp-members/classes/class-bp-members-component.php:625 msgid "You" msgstr "" @@ -7980,7 +8666,7 @@ msgid "Account Activated" msgstr "" #: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:70 -#: bp-members/classes/class-bp-rest-members-endpoint.php:641 +#: bp-members/classes/class-bp-rest-members-endpoint.php:802 msgid "A unique numeric ID for the Member." msgstr "" @@ -7988,19 +8674,19 @@ msgstr "" msgid "Sorry, there was a problem fetching the avatar." msgstr "" -#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:271 +#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:279 msgid "Sorry, member avatar upload is disabled." msgstr "" -#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:314 +#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:318 msgid "Sorry, there are no uploaded avatars for this user on this site." msgstr "" -#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:347 +#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:351 msgid "Sorry, there was a problem deleting the avatar." msgstr "" -#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:499 +#: bp-members/classes/class-bp-rest-attachments-member-avatar-endpoint.php:503 msgid "Whether to disable the default Gravatar fallback." msgstr "" @@ -8020,104 +8706,141 @@ msgstr "" msgid "Sorry, there was a problem deleting this user cover." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:143 -#: bp-members/classes/class-bp-rest-members-endpoint.php:167 -#: bp-members/classes/class-bp-rest-members-endpoint.php:199 -#: bp-members/classes/class-bp-rest-members-endpoint.php:247 +#: bp-members/classes/class-bp-rest-members-endpoint.php:44 +msgid "Unique identifier for the member." +msgstr "" + +#: bp-members/classes/class-bp-rest-members-endpoint.php:55 +msgid "Whether to fetch extra BP data about the returned member." +msgstr "" + +#: bp-members/classes/class-bp-rest-members-endpoint.php:78 +msgid "Required to be true, as members do not support trashing." +msgstr "" + +#: bp-members/classes/class-bp-rest-members-endpoint.php:82 +msgid "Reassign the deleted member's posts and links to this user ID." +msgstr "" + +#: bp-members/classes/class-bp-rest-members-endpoint.php:256 +msgid "Sorry, you are not allowed to view members with the edit context." +msgstr "" + +#: bp-members/classes/class-bp-rest-members-endpoint.php:344 msgid "Sorry, you are not allowed to view members." msgstr "" #. translators: %s: transport method name -#: bp-members/classes/class-bp-rest-members-endpoint.php:301 +#: bp-members/classes/class-bp-rest-members-endpoint.php:401 msgid "'%s' Transport Method not implemented." msgstr "" #. translators: %s: transport method name -#: bp-members/classes/class-bp-rest-members-endpoint.php:322 +#: bp-members/classes/class-bp-rest-members-endpoint.php:422 msgid "'%s' Transport method not implemented." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:511 +#: bp-members/classes/class-bp-rest-members-endpoint.php:672 msgid "No extended profile data available as the component is inactive" msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:552 +#: bp-members/classes/class-bp-rest-members-endpoint.php:713 msgid "The data for the user was not found." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:576 -msgid "Set type(s) for a member." +#: bp-members/classes/class-bp-rest-members-endpoint.php:737 +msgid "Assign a member type to a member, use a comma separated list of member types to assign more than one." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:595 +#: bp-members/classes/class-bp-rest-members-endpoint.php:756 msgid "The email address for the member." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:647 +#: bp-members/classes/class-bp-rest-members-endpoint.php:808 msgid "Display name for the member." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:655 +#: bp-members/classes/class-bp-rest-members-endpoint.php:816 msgid "The name used for that user in @-mentions." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:663 +#: bp-members/classes/class-bp-rest-members-endpoint.php:825 msgid "Profile URL of the member." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:670 +#: bp-members/classes/class-bp-rest-members-endpoint.php:832 msgid "An alphanumeric identifier for the Member." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:679 +#: bp-members/classes/class-bp-rest-members-endpoint.php:841 msgid "Member types associated with the member." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:685 +#: bp-members/classes/class-bp-rest-members-endpoint.php:851 msgid "Registration date for the member." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:692 +#: bp-members/classes/class-bp-rest-members-endpoint.php:858 msgid "Password for the member (never included)." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:701 +#: bp-members/classes/class-bp-rest-members-endpoint.php:867 msgid "Roles assigned to the member." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:709 +#: bp-members/classes/class-bp-rest-members-endpoint.php:875 msgid "All capabilities assigned to the user." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:715 +#: bp-members/classes/class-bp-rest-members-endpoint.php:881 msgid "Any extra capabilities assigned to the user." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:721 +#: bp-members/classes/class-bp-rest-members-endpoint.php:887 msgid "Member XProfile groups and its fields." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:727 +#: bp-members/classes/class-bp-rest-members-endpoint.php:893 msgid "Friendship relation with, current, logged in user." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:756 +#: bp-members/classes/class-bp-rest-members-endpoint.php:899 +msgid "Slug of the friendship status with current logged in user." +msgstr "" + +#: bp-members/classes/class-bp-rest-members-endpoint.php:906 +msgid "Last date the member was active on the site." +msgstr "" + +#: bp-members/classes/class-bp-rest-members-endpoint.php:922 +msgid "The content of the latest activity posted by the member." +msgstr "" + +#: bp-members/classes/class-bp-rest-members-endpoint.php:947 +msgid "Total number of friends for the member." +msgstr "" + +#: bp-members/classes/class-bp-rest-members-endpoint.php:975 msgid "Avatar URLs for the member." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:800 +#: bp-members/classes/class-bp-rest-members-endpoint.php:1019 msgid "Limit results to friends of a user." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:808 +#: bp-members/classes/class-bp-rest-members-endpoint.php:1027 msgid "Pass IDs of users to limit result set." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:835 +#: bp-members/classes/class-bp-rest-members-endpoint.php:1054 +msgid "Whether to fetch extra BP data about the returned members." +msgstr "" + +#: bp-members/classes/class-bp-rest-members-endpoint.php:1062 msgid "Limit results set to certain type(s)." msgstr "" -#: bp-members/classes/class-bp-rest-members-endpoint.php:844 +#: bp-members/classes/class-bp-rest-members-endpoint.php:1071 msgid "Limit results set to a certain XProfile field." msgstr "" @@ -8126,96 +8849,96 @@ msgid "Identifier for the signup. Can be a signup ID, an email address, or an ac msgstr "" #: bp-members/classes/class-bp-rest-signup-endpoint.php:99 -#: bp-members/classes/class-bp-rest-signup-endpoint.php:906 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:892 msgid "Activation key of the signup." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:277 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:275 msgid "Invalid signup id." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:447 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:436 msgid "Cannot create new signup." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:545 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:532 msgid "Could not delete signup." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:618 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:605 msgid "Fail to activate the signup." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:794 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:780 msgid "Passwords cannot be empty or contain the \"\\\" character." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:845 -#: bp-members/classes/class-bp-rest-signup-endpoint.php:936 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:831 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:922 msgid "Password for the new user (never included)." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:888 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:874 msgid "A unique numeric ID for the signup." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:894 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:880 msgid "The username of the user the signup is for." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:900 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:886 msgid "The email for the user the signup is for." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:912 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:898 msgid "The registered date for the user, in the site's timezone." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:919 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:905 msgid "The date the activation email was sent to the user, in the site's timezone." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:925 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:911 msgid "The number of times the activation email was sent to the user." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:932 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:918 msgid "The signup meta information" msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:948 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:934 msgid "The new user's full name." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:960 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:946 msgid "Unique site name (slug) of the new user's child site." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:967 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:953 msgid "Title of the new user's child site." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:974 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:960 msgid "Search engine visibility of the new user's site." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:981 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:967 msgid "Language to use for the new user's site." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:1010 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:996 msgid "Total number of signups to return." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:1018 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:1004 msgid "Offset the result set by a specific number of items." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:1035 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:1021 msgid "Order by a specific parameter (default: signup_id)." msgstr "" -#: bp-members/classes/class-bp-rest-signup-endpoint.php:1053 +#: bp-members/classes/class-bp-rest-signup-endpoint.php:1039 msgid "Specific user login to return." msgstr "" @@ -8229,19 +8952,11 @@ msgstr "" msgid "Your account is now active!" msgstr "" -#: bp-members/screens/register.php:70 -msgid "Please make sure you enter your password twice" -msgstr "" - -#: bp-members/screens/register.php:74 -msgid "The passwords you entered do not match." -msgstr "" - -#: bp-members/screens/register.php:77 +#: bp-members/screens/register.php:89 msgid "You must indicate that you have read and agreed to the Privacy Policy." msgstr "" -#: bp-members/screens/register.php:107 +#: bp-members/screens/register.php:119 msgid "This is a required field" msgstr "" @@ -8293,12 +9008,12 @@ msgid "Your message was not sent. Please enter some content." msgstr "" #: bp-messages/actions/compose.php:54 -#: bp-messages/classes/class-bp-messages-notices-admin.php:233 +#: bp-messages/classes/class-bp-messages-notices-admin.php:225 msgid "Notice successfully created." msgstr "" #: bp-messages/actions/compose.php:60 -#: bp-messages/classes/class-bp-messages-notices-admin.php:227 +#: bp-messages/classes/class-bp-messages-notices-admin.php:219 msgid "Notice was not created. Please try again." msgstr "" @@ -8673,8 +9388,7 @@ msgid "My Messages" msgstr "" #: bp-messages/classes/class-bp-messages-notices-admin.php:101 -#: bp-messages/classes/class-bp-messages-notices-admin.php:188 -#: bp-messages/classes/class-bp-messages-notices-admin.php:193 +#: bp-messages/classes/class-bp-messages-notices-admin.php:186 msgctxt "Notices admin page title" msgid "Site Notices" msgstr "" @@ -8684,34 +9398,34 @@ msgctxt "Admin Users menu" msgid "Site Notices" msgstr "" -#: bp-messages/classes/class-bp-messages-notices-admin.php:197 +#: bp-messages/classes/class-bp-messages-notices-admin.php:189 msgid "Manage notices shown at front end of your site to all logged-in users." msgstr "" -#: bp-messages/classes/class-bp-messages-notices-admin.php:201 +#: bp-messages/classes/class-bp-messages-notices-admin.php:193 msgid "Add New Notice" msgstr "" -#: bp-messages/classes/class-bp-messages-notices-admin.php:206 +#: bp-messages/classes/class-bp-messages-notices-admin.php:198 #: bp-templates/bp-legacy/buddypress/members/single/messages/compose.php:39 #: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:65 #: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:39 msgid "Subject" msgstr "" -#: bp-messages/classes/class-bp-messages-notices-admin.php:213 +#: bp-messages/classes/class-bp-messages-notices-admin.php:205 msgid "Publish Notice" msgstr "" -#: bp-messages/classes/class-bp-messages-notices-admin.php:229 +#: bp-messages/classes/class-bp-messages-notices-admin.php:221 msgid "Notice was not updated. Please try again." msgstr "" -#: bp-messages/classes/class-bp-messages-notices-admin.php:235 +#: bp-messages/classes/class-bp-messages-notices-admin.php:227 msgid "Notice successfully updated." msgstr "" -#: bp-messages/classes/class-bp-messages-notices-admin.php:245 +#: bp-messages/classes/class-bp-messages-notices-admin.php:237 msgid "Notices List" msgstr "" @@ -8765,24 +9479,23 @@ msgstr "" msgid "ID of one of the message of the Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:210 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:207 msgid "Sorry, you cannot view the messages." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:275 -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:301 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:270 msgid "Sorry, you are not allowed to see this thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:287 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:283 msgid "Sorry, this thread does not exist." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:343 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:325 msgid "There was an error trying to create the message." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:396 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:384 msgid "Sorry, you need to be logged in to create a message." msgstr "" @@ -8802,127 +9515,127 @@ msgstr "" msgid "Sorry, you cannot remove the message from your starred box." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:609 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:605 msgid "Sorry, you are not allowed to star/unstar messages." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:655 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:658 msgid "There was an error trying to delete the thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1012 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1015 msgid "ID of the Messages Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1018 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1021 msgid "ID of the Messages Thread. Required when replying to an existing Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1023 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1026 msgid "The user ID of the Message sender." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1034 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1037 msgid "Subject of the Message initializing the Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1038 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1041 msgid "Content of the Message to add to the Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1045 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1048 msgid "The list of the recipients user IDs of the Message." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1057 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1060 msgid "By default the latest message of the thread will be updated. Specify this message ID to edit another message of the thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1069 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1072 msgid "The user ID to remove from the thread" msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1105 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1108 msgid "A unique numeric ID for the Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1110 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1113 msgid "The ID of the latest message of the Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1116 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1119 msgid "The ID of latest sender of the Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1122 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1125 msgid "Title of the latest message of the Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1130 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1133 msgid "Title of the latest message of the Thread, as it exists in the database." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1136 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1139 msgid "Title of the latest message of the Thread, transformed for display." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1146 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1149 msgid "Summary of the latest message of the Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1155 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1158 msgid "Summary for the latest message of the Thread, as it exists in the database." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1160 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1163 msgid "HTML summary for the latest message of the Thread, transformed for display." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1168 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1171 msgid "Content of the latest message of the Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1177 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1180 msgid "Content for the latest message of the Thread, as it exists in the database." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1182 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1185 msgid "HTML content for the latest message of the Thread, transformed for display." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1191 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1194 msgid "The date the latest message of the Thread, in the site's timezone." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1198 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1201 msgid "Total count of unread messages into the Thread for the requested user." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1204 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1207 msgid "The list of user IDs for all messages in the Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1213 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1216 msgid "The list of recipient User Objects involved into the Thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1221 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1224 msgid "List of message objects for the thread." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1230 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1233 msgid "List of starred message IDs." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1268 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1271 msgid "Filter the result by box." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1277 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1280 msgid "Filter the result by thread status." msgstr "" -#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1286 +#: bp-messages/classes/class-bp-rest-messages-endpoint.php:1289 msgid "Limit result to messages created by a specific user." msgstr "" @@ -8967,11 +9680,11 @@ msgstr "" msgid "No new notifications" msgstr "" -#: bp-notifications/bp-notifications-filters.php:24 +#: bp-notifications/bp-notifications-filters.php:28 msgid "BuddyPress Notifications Data" msgstr "" -#: bp-notifications/bp-notifications-filters.php:26 +#: bp-notifications/bp-notifications-filters.php:30 msgctxt "BuddyPress Notifications data exporter friendly name" msgid "Notifications Data" msgstr "" @@ -9097,92 +9810,92 @@ msgid "→" msgstr "" #: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:60 -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:757 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:753 msgid "A unique numeric ID for the notification." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:172 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:169 msgid "Sorry, you are not allowed to see the notifications." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:237 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:232 msgid "Sorry, you are not allowed to see the notification." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:249 -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:464 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:244 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:460 msgid "Invalid notification ID." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:259 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:254 msgid "Sorry, you cannot view this notification." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:294 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:290 msgid "Cannot create new notification." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:369 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:365 msgid "Notification is already with the status you are trying to update into." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:384 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:380 msgid "Cannot update the status of this notification." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:763 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:759 msgid "The ID of the user the notification is addressed to." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:769 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:765 msgid "The ID of the item associated with the notification." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:774 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:770 msgid "The ID of the secondary item associated with the notification." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:779 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:775 msgid "The name of the BuddyPress component the notification relates to." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:784 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:780 msgid "The name of the component's action the notification is about." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:788 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:784 msgid "The date the notification was created, in the site's timezone." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:795 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:791 msgid "Whether it's a new notification or not." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:825 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:821 msgid "Name of the field to order according to." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:843 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:839 msgid "Limit result set to notifications associated with a specific component" msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:851 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:847 msgid "Limit result set to notifications associated with a specific component's action name." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:859 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:855 msgid "Limit result set to notifications addressed to a specific user." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:867 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:863 msgid "Limit result set to notifications associated with a specific item ID." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:875 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:871 msgid "Limit result set to notifications associated with a specific secondary item ID." msgstr "" -#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:883 +#: bp-notifications/classes/class-bp-rest-notifications-endpoint.php:879 msgid "Limit result set to items from specific states." msgstr "" @@ -9212,59 +9925,55 @@ msgstr "" msgid "%s was successfully deleted." msgstr "" -#: bp-settings/actions/general.php:189 -msgid "That email address is invalid. Check the formatting and try again." -msgstr "" - -#: bp-settings/actions/general.php:192 -msgid "That email address is currently unavailable for use." +#: bp-settings/actions/general.php:147 +msgid "The new password must be different from the current password." msgstr "" -#: bp-settings/actions/general.php:195 -msgid "That email address is already taken." +#: bp-settings/actions/general.php:157 +msgid "One of the password fields was empty." msgstr "" -#: bp-settings/actions/general.php:198 -msgid "Email address cannot be empty." +#: bp-settings/actions/general.php:182 +msgid "Your current password is invalid." msgstr "" -#: bp-settings/actions/general.php:208 -msgid "Your current password is invalid." +#: bp-settings/actions/general.php:188 +msgid "That email address is invalid. Check the formatting and try again." msgstr "" -#: bp-settings/actions/general.php:211 -msgid "The new password fields did not match." +#: bp-settings/actions/general.php:191 +msgid "That email address is currently unavailable for use." msgstr "" -#: bp-settings/actions/general.php:214 -msgid "One of the password fields was empty." +#: bp-settings/actions/general.php:194 +msgid "That email address is already taken." msgstr "" -#: bp-settings/actions/general.php:217 -msgid "The new password must be different from the current password." +#: bp-settings/actions/general.php:197 +msgid "Email address cannot be empty." msgstr "" -#: bp-settings/actions/general.php:226 +#: bp-settings/actions/general.php:210 msgid "Your settings have been saved." msgstr "" -#: bp-settings/actions/general.php:232 +#: bp-settings/actions/general.php:216 msgid "No changes were made to your account." msgstr "" -#: bp-settings/actions/general.php:234 +#: bp-settings/actions/general.php:218 msgid "No changes were made to this account." msgstr "" -#: bp-settings/actions/general.php:289 +#: bp-settings/actions/general.php:273 msgid "You have successfully verified your new email address." msgstr "" -#: bp-settings/actions/general.php:292 +#: bp-settings/actions/general.php:276 msgid "There was a problem verifying your new email address. Please try again." msgstr "" -#: bp-settings/actions/general.php:304 +#: bp-settings/actions/general.php:288 msgid "You have successfully dismissed your pending email change." msgstr "" @@ -9361,7 +10070,7 @@ msgid "Export Data" msgstr "" #: bp-templates/bp-legacy/buddypress-functions.php:61 -#: class-buddypress.php:780 +#: class-buddypress.php:794 msgid "BuddyPress Legacy" msgstr "" @@ -9425,7 +10134,7 @@ msgid "Show all comments (%d)" msgstr "" #: bp-templates/bp-legacy/buddypress-functions.php:316 -#: bp-templates/bp-nouveau/buddypress-functions.php:431 +#: bp-templates/bp-nouveau/buddypress-functions.php:458 msgid "Your profile has unsaved changes. If you leave the page, the changes will be lost." msgstr "" @@ -9603,7 +10312,7 @@ msgstr "" #: bp-templates/bp-legacy/buddypress/activity/index.php:204 #: bp-templates/bp-legacy/buddypress/groups/single/activity.php:25 #: bp-templates/bp-legacy/buddypress/members/single/activity.php:18 -#: bp-templates/bp-nouveau/includes/template-tags.php:2163 +#: bp-templates/bp-nouveau/includes/template-tags.php:2192 msgid "Show:" msgstr "" @@ -9752,7 +10461,7 @@ msgstr "" msgid "Sorry, there were no sites found." msgstr "" -#: bp-templates/bp-legacy/buddypress/blogs/create.php:41 +#: bp-templates/bp-legacy/buddypress/blogs/create.php:43 msgid "Site registration is currently disabled" msgstr "" @@ -9781,7 +10490,7 @@ msgstr "" #: bp-templates/bp-legacy/buddypress/members/single/friends.php:22 #: bp-templates/bp-legacy/buddypress/members/single/groups.php:22 #: bp-templates/bp-nouveau/includes/blogs/functions.php:106 -#: bp-templates/bp-nouveau/includes/groups/functions.php:599 +#: bp-templates/bp-nouveau/includes/groups/functions.php:640 #: bp-templates/bp-nouveau/includes/members/functions.php:97 msgid "Last Active" msgstr "" @@ -9878,12 +10587,6 @@ msgstr "" msgid "This group will not be listed in the groups directory or search results." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:153 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:61 -#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:67 -msgid "Group Types" -msgstr "" - #: bp-templates/bp-legacy/buddypress/groups/create.php:155 #: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:63 #: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:69 @@ -10004,7 +10707,7 @@ msgstr "" msgid "Finish" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/groups-loop.php:136 +#: bp-templates/bp-legacy/buddypress/groups/groups-loop.php:143 msgid "There were no groups found." msgstr "" @@ -10023,13 +10726,13 @@ msgstr "" #: bp-templates/bp-legacy/buddypress/groups/index.php:111 #: bp-templates/bp-legacy/buddypress/members/single/groups.php:23 -#: bp-templates/bp-nouveau/includes/groups/functions.php:600 +#: bp-templates/bp-nouveau/includes/groups/functions.php:641 msgid "Most Members" msgstr "" #: bp-templates/bp-legacy/buddypress/groups/index.php:112 #: bp-templates/bp-legacy/buddypress/members/single/groups.php:24 -#: bp-templates/bp-nouveau/includes/groups/functions.php:601 +#: bp-templates/bp-nouveau/includes/groups/functions.php:642 msgid "Newly Created" msgstr "" @@ -10052,7 +10755,7 @@ msgid "Manage Group Details" msgstr "" #: bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php:40 -#: bp-templates/bp-nouveau/includes/groups/template-tags.php:1414 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:1462 msgid "Notify group members of these changes via email" msgstr "" @@ -10107,12 +10810,12 @@ msgstr "" msgid "Manage Membership Requests" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php:75 +#: bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php:80 #: bp-templates/bp-legacy/buddypress/groups/single/group-header.php:23 msgid "Group Admins" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php:95 +#: bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php:100 #: bp-templates/bp-legacy/buddypress/groups/single/group-header.php:43 #: bp-templates/bp-nouveau/buddypress/groups/single/parts/header-item-actions.php:28 msgid "Group Mods" @@ -10252,7 +10955,7 @@ msgstr "" #: bp-templates/bp-legacy/buddypress/members/register.php:119 #: bp-templates/bp-legacy/buddypress/members/register.php:281 #: bp-templates/bp-legacy/buddypress/members/register.php:297 -#: bp-templates/bp-nouveau/includes/template-tags.php:2409 +#: bp-templates/bp-nouveau/includes/template-tags.php:2438 #: bp-xprofile/bp-xprofile-template.php:1439 msgid "(required)" msgstr "" @@ -10371,7 +11074,7 @@ msgstr "" #. translators: accessibility text #: bp-templates/bp-legacy/buddypress/members/single/groups/invites.php:21 -#: bp-templates/bp-nouveau/includes/groups/functions.php:1223 +#: bp-templates/bp-nouveau/includes/groups/functions.php:1264 msgid "Group invitations" msgstr "" @@ -10729,12 +11432,12 @@ msgstr "" #: bp-templates/bp-legacy/buddypress/members/single/settings/profile.php:34 #: bp-templates/bp-nouveau/buddypress/members/single/settings/profile.php:34 -#: bp-xprofile/classes/class-bp-xprofile-field.php:1491 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1505 msgid "Visibility" msgstr "" #. translators: %s: number of activity comments -#: bp-templates/bp-nouveau/buddypress-functions.php:430 +#: bp-templates/bp-nouveau/buddypress-functions.php:457 msgid "Show all %d comments" msgstr "" @@ -11130,6 +11833,11 @@ msgstr "" msgid "Manage your group members; promote to moderators, admins or demote or ban." msgstr "" +#: bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php:51 +#: bp-templates/bp-nouveau/buddypress/groups/single/group-header.php:48 +msgid "Group Type" +msgstr "" + #: bp-templates/bp-nouveau/buddypress/groups/single/default-front.php:16 msgid "Manage the Groups default front page" msgstr "" @@ -11188,6 +11896,11 @@ msgstr "" msgid "Sites menu" msgstr "" +#: bp-templates/bp-nouveau/buddypress/members/single/cover-image-header.php:54 +#: bp-templates/bp-nouveau/buddypress/members/single/member-header.php:40 +msgid "Member Type" +msgstr "" + #: bp-templates/bp-nouveau/buddypress/members/single/default-front.php:15 msgid "Manage the members default front page" msgstr "" @@ -11407,7 +12120,7 @@ msgid "All Members" msgstr "" #: bp-templates/bp-nouveau/includes/activity/functions.php:256 -#: bp-templates/bp-nouveau/includes/groups/functions.php:531 +#: bp-templates/bp-nouveau/includes/groups/functions.php:572 msgid "My Groups" msgstr "" @@ -11663,11 +12376,11 @@ msgstr "" msgid "Friendship cancelled." msgstr "" -#: bp-templates/bp-nouveau/includes/friends/loader.php:101 +#: bp-templates/bp-nouveau/includes/friends/loader.php:105 msgid "Accepted friendship requests" msgstr "" -#: bp-templates/bp-nouveau/includes/friends/loader.php:106 +#: bp-templates/bp-nouveau/includes/friends/loader.php:110 msgid "Pending friendship requests" msgstr "" @@ -11890,26 +12603,26 @@ msgid "You are not allowed to send invitations for this group." msgstr "" #. translators: count of users affected -#: bp-templates/bp-nouveau/includes/groups/ajax.php:431 +#: bp-templates/bp-nouveau/includes/groups/ajax.php:419 msgid "Invitation failed for %s user." msgid_plural "Invitation failed for %s users." msgstr[0] "" msgstr[1] "" -#: bp-templates/bp-nouveau/includes/groups/ajax.php:450 +#: bp-templates/bp-nouveau/includes/groups/ajax.php:438 msgid "Invitations sent." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/ajax.php:464 -#: bp-templates/bp-nouveau/includes/groups/ajax.php:507 +#: bp-templates/bp-nouveau/includes/groups/ajax.php:452 +#: bp-templates/bp-nouveau/includes/groups/ajax.php:495 msgid "Group invitation could not be removed." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/ajax.php:496 +#: bp-templates/bp-nouveau/includes/groups/ajax.php:484 msgid "The member is already a member of the group." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/ajax.php:516 +#: bp-templates/bp-nouveau/includes/groups/ajax.php:504 msgid "There are no more pending invitations for the group." msgstr "" @@ -11933,6 +12646,11 @@ msgctxt "My Group screen nav" msgid "Members" msgstr "" +#. translators: %s is the name of the function to use instead of the deprecated one +#: bp-templates/bp-nouveau/includes/groups/classes.php:406 +msgid "Please use %s instead" +msgstr "" + #: bp-templates/bp-nouveau/includes/groups/functions.php:130 msgid "Pending Invites" msgstr "" @@ -11966,110 +12684,110 @@ msgctxt "Group invitations menu title" msgid "Invite" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:428 -#: bp-templates/bp-nouveau/includes/groups/functions.php:456 +#: bp-templates/bp-nouveau/includes/groups/functions.php:435 +#: bp-templates/bp-nouveau/includes/groups/functions.php:463 msgctxt "Group invitations main menu title" msgid "Group Invites" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:486 +#: bp-templates/bp-nouveau/includes/groups/functions.php:493 msgid "Group invites preferences saved." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:515 +#: bp-templates/bp-nouveau/includes/groups/functions.php:556 msgid "All Groups" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:700 +#: bp-templates/bp-nouveau/includes/groups/functions.php:741 msgid "Group front page" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:703 +#: bp-templates/bp-nouveau/includes/groups/functions.php:744 msgid "Configure the default front page for groups." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:706 +#: bp-templates/bp-nouveau/includes/groups/functions.php:747 msgid "Group navigation" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:709 +#: bp-templates/bp-nouveau/includes/groups/functions.php:750 msgid "Customize the navigation menu for groups. See your changes by navigating to a group in the live-preview window." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:810 +#: bp-templates/bp-nouveau/includes/groups/functions.php:851 msgid "Enable custom front pages for groups." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:816 +#: bp-templates/bp-nouveau/includes/groups/functions.php:857 msgid "Enable widget region for group homepages. When enabled, the site admin can add widgets to group pages via the Widgets panel." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:822 +#: bp-templates/bp-nouveau/includes/groups/functions.php:863 msgid "Display the group description in the body of the group's front page." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:828 +#: bp-templates/bp-nouveau/includes/groups/functions.php:869 msgid "Display the group navigation vertically." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:834 +#: bp-templates/bp-nouveau/includes/groups/functions.php:875 msgid "Use tab styling for primary navigation." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:840 +#: bp-templates/bp-nouveau/includes/groups/functions.php:881 msgid "Use tab styling for secondary navigation." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:846 +#: bp-templates/bp-nouveau/includes/groups/functions.php:887 msgid "Use tab styling for the group creation process." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:853 +#: bp-templates/bp-nouveau/includes/groups/functions.php:894 msgid "Reorder the primary navigation for a group." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:859 +#: bp-templates/bp-nouveau/includes/groups/functions.php:900 msgctxt "Customizer control label" msgid "Groups" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:866 +#: bp-templates/bp-nouveau/includes/groups/functions.php:907 msgid "Group > Members" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:873 +#: bp-templates/bp-nouveau/includes/groups/functions.php:914 msgid "Use column navigation for the Groups directory." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:879 +#: bp-templates/bp-nouveau/includes/groups/functions.php:920 msgid "Use tab styling for Groups directory navigation." msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:1198 +#: bp-templates/bp-nouveau/includes/groups/functions.php:1239 msgid "Pending Group membership requests" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:1203 +#: bp-templates/bp-nouveau/includes/groups/functions.php:1244 msgid "Accepted Group membership requests" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:1208 +#: bp-templates/bp-nouveau/includes/groups/functions.php:1249 msgid "Rejected Group membership requests" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:1213 +#: bp-templates/bp-nouveau/includes/groups/functions.php:1254 msgid "Group Administrator promotions" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/functions.php:1218 +#: bp-templates/bp-nouveau/includes/groups/functions.php:1259 msgid "Group Moderator promotions" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/template-tags.php:1300 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:1348 msgid "Groups default front page" msgstr "" -#: bp-templates/bp-nouveau/includes/groups/template-tags.php:1318 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:1366 #: bp-templates/bp-nouveau/includes/members/template-tags.php:743 msgid "(BuddyPress) Widgets" msgstr "" @@ -12234,33 +12952,33 @@ msgctxt "button" msgid "Mark unread" msgstr "" -#: bp-templates/bp-nouveau/includes/template-tags.php:2365 +#: bp-templates/bp-nouveau/includes/template-tags.php:2394 msgid "Choose a Password (required)" msgstr "" -#: bp-templates/bp-nouveau/includes/template-tags.php:2374 +#: bp-templates/bp-nouveau/includes/template-tags.php:2403 msgid "Strength indicator" msgstr "" -#: bp-templates/bp-nouveau/includes/template-tags.php:2379 +#: bp-templates/bp-nouveau/includes/template-tags.php:2408 msgid "Confirm use of weak password" msgstr "" -#: bp-templates/bp-nouveau/includes/template-tags.php:2387 +#: bp-templates/bp-nouveau/includes/template-tags.php:2416 msgid "Confirm new password" msgstr "" #. translators: Do not translate placeholders. 2 = form field name, 3 = "(required)". -#: bp-templates/bp-nouveau/includes/template-tags.php:2403 +#: bp-templates/bp-nouveau/includes/template-tags.php:2432 msgid "<label for=\"%1$s\">%2$s %3$s</label>" msgstr "" -#: bp-templates/bp-nouveau/includes/template-tags.php:2422 +#: bp-templates/bp-nouveau/includes/template-tags.php:2451 msgid "I would like my site to appear in search engines, and in public listings around this network." msgstr "" #. translators: link to Privacy Policy -#: bp-templates/bp-nouveau/includes/template-tags.php:2563 +#: bp-templates/bp-nouveau/includes/template-tags.php:2592 msgid "I have read and agree to this site's %s." msgstr "" @@ -12301,129 +13019,145 @@ msgctxt "Admin Users menu" msgid "Profile Fields" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:147 -#: bp-xprofile/bp-xprofile-admin.php:156 +#: bp-xprofile/bp-xprofile-admin.php:148 msgctxt "Settings page header" msgid "Profile Fields" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:149 -#: bp-xprofile/bp-xprofile-admin.php:157 +#: bp-xprofile/bp-xprofile-admin.php:150 #: bp-xprofile/classes/class-bp-xprofile-group.php:818 msgid "Add New Field Group" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:191 -#: bp-xprofile/bp-xprofile-admin.php:681 +#: bp-xprofile/bp-xprofile-admin.php:183 +#: bp-xprofile/bp-xprofile-admin.php:780 msgid "(Primary)" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:234 +#: bp-xprofile/bp-xprofile-admin.php:226 #: bp-xprofile/classes/class-bp-xprofile-field.php:1195 msgid "Add New Field" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:235 +#: bp-xprofile/bp-xprofile-admin.php:227 msgctxt "Edit Profile Fields Group" msgid "Edit Group" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:240 +#: bp-xprofile/bp-xprofile-admin.php:232 msgctxt "Delete Profile Fields Group" msgid "Delete Group" msgstr "" #. translators: accessibility text -#: bp-xprofile/bp-xprofile-admin.php:273 +#: bp-xprofile/bp-xprofile-admin.php:265 msgid "Fields for \"%s\" Group" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:299 +#: bp-xprofile/bp-xprofile-admin.php:291 msgid "There are no fields in this group." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:307 +#: bp-xprofile/bp-xprofile-admin.php:299 msgid "* Fields in this group appear on the signup page." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:315 +#: bp-xprofile/bp-xprofile-admin.php:307 msgctxt "You have no profile fields groups." msgid "You have no groups." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:316 +#: bp-xprofile/bp-xprofile-admin.php:308 msgctxt "Add New Profile Fields Group" msgid "Add New Group" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:361 +#: bp-xprofile/bp-xprofile-admin.php:353 msgid "There was an error saving the group. Please try again." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:366 +#: bp-xprofile/bp-xprofile-admin.php:358 msgid "The group was saved successfully." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:409 +#: bp-xprofile/bp-xprofile-admin.php:411 msgctxt "Error when deleting profile fields group" msgid "There was an error deleting the group. Please try again." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:412 +#: bp-xprofile/bp-xprofile-admin.php:414 msgctxt "Profile fields group was deleted successfully" msgid "The group was deleted successfully." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:480 +#: bp-xprofile/bp-xprofile-admin.php:447 +msgid "Delete Field Group" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:450 +msgid "You are about to delete the following field group:" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:517 msgid "There was an error saving the field. Please try again." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:483 +#: bp-xprofile/bp-xprofile-admin.php:520 msgid "The field was saved successfully." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:571 +#: bp-xprofile/bp-xprofile-admin.php:610 msgid "field" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:571 +#: bp-xprofile/bp-xprofile-admin.php:610 msgid "option" msgstr "" #. translators: %s: the field type -#: bp-xprofile/bp-xprofile-admin.php:576 +#: bp-xprofile/bp-xprofile-admin.php:622 msgid "There was an error deleting the %s. Please try again." msgstr "" #. translators: %s: the field type -#: bp-xprofile/bp-xprofile-admin.php:580 +#: bp-xprofile/bp-xprofile-admin.php:626 msgid "The %s was deleted successfully!" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:683 +#. translators: %s is the field type name. +#: bp-xprofile/bp-xprofile-admin.php:662 +msgid "Delete %s" +msgstr "" + +#. translators: %s is the field type name. +#: bp-xprofile/bp-xprofile-admin.php:674 +msgid "You are about to delete the following %s:" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:782 msgid "(Sign-up)" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:727 +#: bp-xprofile/bp-xprofile-admin.php:826 msgctxt "Edit field link" msgid "Edit" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:732 +#: bp-xprofile/bp-xprofile-admin.php:831 msgctxt "Delete field link" msgid "Delete" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:778 +#: bp-xprofile/bp-xprofile-admin.php:877 msgctxt "xprofile field type category" msgid "Other" msgstr "" -#: bp-xprofile/bp-xprofile-filters.php:676 +#: bp-xprofile/bp-xprofile-filters.php:682 msgid "BuddyPress Extended Profile Data" msgstr "" -#: bp-xprofile/bp-xprofile-filters.php:678 +#: bp-xprofile/bp-xprofile-filters.php:684 msgctxt "BuddyPress Extended Profile data exporter friendly name" msgid "Extended Profile information" msgstr "" @@ -12455,188 +13189,188 @@ msgid "Select visibility" msgstr "" #: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:52 -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:541 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:542 msgid "The ID of the field the data is from." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:56 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:57 msgid "The ID of user the field data is from." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:71 -msgid "The list of values for the field data." +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:73 +msgid "The value(s) for the field data." +msgstr "" + +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:137 +msgid "Sorry, the profile field value is not viewable for this user." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:144 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:149 #: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:203 #: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:336 #: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:213 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:639 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:636 msgid "Invalid field ID." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:168 -msgid "Sorry, the profile field value is not viewable for this user." -msgstr "" - -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:224 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:226 msgid "Cannot save XProfile data." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:279 -msgid "Sorry, you need to be logged in to save XProfile data." +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:278 +msgid "Sorry, you cannot save XProfile field data." msgstr "" #: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:301 -msgid "Sorry, you cannot save XProfile field data." +msgid "Sorry, you need to be logged in to save XProfile data." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:355 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:356 msgid "Could not delete XProfile data." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:535 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:536 msgid "A unique numeric ID for the profile data." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:547 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:548 msgid "The ID of the user the field data is from." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:553 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:554 msgid "The value of the field data." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:561 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1083 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:562 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1073 msgid "Value for the field, as it exists in the database." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:566 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1088 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:567 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1078 msgid "Unserialized value for the field, regular string will be casted as array." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:575 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1094 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:576 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1084 msgid "HTML value for the field, transformed for display." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:584 +#: bp-xprofile/classes/class-bp-rest-xprofile-data-endpoint.php:585 msgid "The date the field data was last updated, in the site's timezone." msgstr "" #: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:73 -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:722 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:724 msgid "A unique numeric ID for the group of profile fields." msgstr "" #: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:240 -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:421 -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:523 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:420 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:521 msgid "Invalid field group ID." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:322 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:321 msgid "Required param missing." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:334 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:333 msgid "Cannot create new XProfile field group." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:386 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:382 msgid "Sorry, you are not allowed to view this XProfile field group." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:440 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:438 msgid "Cannot update XProfile field group." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:533 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:531 msgid "Could not delete XProfile field group." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:728 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:730 msgid "The name of group of profile fields." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:736 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:738 msgid "The description of the group of profile fields." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:744 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:746 msgid "Content for the group of profile fields, as it exists in the database." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:749 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:751 msgid "HTML content for the group of profile fields, transformed for display." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:758 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:760 msgid "The order of the group of profile fields." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:763 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:765 msgid "Whether the group of profile fields can be deleted or not." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:768 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:771 msgid "The fields associated with this group of profile fields." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:795 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:798 msgid "ID of the field group that have fields." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:803 -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:828 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1132 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:806 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:831 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1122 msgid "Whether to hide profile groups of fields that do not have any profile fields or not." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:811 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:814 #: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:73 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1140 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1130 msgid "Required if you want to load a specific user's data." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:819 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1148 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:822 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1138 msgid "Limit fields by those restricted to a given member type, or array of member types. If `$user_id` is provided, the value of `$member_type` will be overridden by the member types of the provided user. The special value of 'any' will return only those fields that are unrestricted by member type - i.e., those applicable to any type." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:836 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:839 msgid "Whether to fetch the fields for each group." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:844 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1165 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:847 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1155 msgid "Whether to fetch data for each field. Requires a $user_id." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:852 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1173 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:855 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1163 msgid "Whether to fetch the visibility level for each field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:860 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1181 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:863 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1171 msgid "Ensure result set excludes specific profile field groups." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:869 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1190 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:872 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1180 msgid "Ensure result set excludes specific profile fields." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:878 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1199 +#: bp-xprofile/classes/class-bp-rest-xprofile-field-groups-endpoint.php:881 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1189 msgid "Whether to pre-fetch xprofilemeta for all retrieved groups, fields, and data." msgstr "" #: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:63 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:977 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:967 msgid "A unique numeric ID for the profile field." msgstr "" @@ -12656,7 +13390,7 @@ msgstr "" msgid "Cannot create new XProfile field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:425 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:422 msgid "Sorry, you are not allowed to create a XProfile field." msgstr "" @@ -12672,92 +13406,91 @@ msgstr "" msgid "Could not delete XProfile field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:627 -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:649 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:624 msgid "Sorry, you are not allowed to delete this field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:910 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:900 msgid "Default visibility for the profile field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:918 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:908 msgid "Whether to allow members to set the visibility for the profile field data or not." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:926 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:916 msgid "Autolink status for this profile field" msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:983 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:973 msgid "The ID of the group the field is part of." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:988 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:978 msgid "The ID of the parent field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:993 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:983 msgid "The type for the profile field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1002 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:992 msgid "The name of the profile field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1010 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1000 msgid "The description of the profile field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1018 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1008 msgid "Content for the profile field, as it exists in the database." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1023 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1013 msgid "HTML content for the profile field, transformed for display." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1032 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1022 msgid "Whether the profile field must have a value." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1037 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1027 msgid "Whether the profile field can be deleted or not." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1043 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1033 msgid "The order of the profile field into the group of fields." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1048 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1038 msgid "The order of the option into the profile field list of options" msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1053 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1043 msgid "The way profile field's options are ordered." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1060 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1050 msgid "Whether the option is the default one for the profile field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1065 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1055 msgid "Who may see the saved value for this profile field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1072 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1062 msgid "Options of the profile field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1078 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1068 msgid "The saved value for this profile field." msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1124 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1114 msgid "ID of the profile group of fields that have profile fields" msgstr "" -#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1157 +#: bp-xprofile/classes/class-bp-rest-xprofile-fields-endpoint.php:1147 msgid "Whether to hide profile fields where the user has not provided data or not." msgstr "" @@ -12766,63 +13499,63 @@ msgctxt "Component page <title>" msgid "Extended Profiles" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:174 +#: bp-xprofile/classes/class-bp-xprofile-component.php:176 msgctxt "Visibility level setting" msgid "Everyone" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:178 +#: bp-xprofile/classes/class-bp-xprofile-component.php:180 msgctxt "Visibility level setting" msgid "Only Me" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:182 +#: bp-xprofile/classes/class-bp-xprofile-component.php:184 msgctxt "Visibility level setting" msgid "All Members" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:189 +#: bp-xprofile/classes/class-bp-xprofile-component.php:191 msgctxt "Visibility level setting" msgid "My Friends" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:245 +#: bp-xprofile/classes/class-bp-xprofile-component.php:247 msgctxt "Profile header menu" msgid "Profile" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:255 +#: bp-xprofile/classes/class-bp-xprofile-component.php:257 msgctxt "Profile header sub menu" msgid "View" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:265 +#: bp-xprofile/classes/class-bp-xprofile-component.php:267 msgctxt "Profile header sub menu" msgid "Edit" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:307 +#: bp-xprofile/classes/class-bp-xprofile-component.php:309 msgctxt "Profile settings sub nav" msgid "Profile Visibility" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:353 +#: bp-xprofile/classes/class-bp-xprofile-component.php:355 msgctxt "My Account Profile sub nav" msgid "Edit" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:382 +#: bp-xprofile/classes/class-bp-xprofile-component.php:384 msgctxt "Page title" msgid "My Profile" msgstr "" #. translators: %s: member name -#: bp-xprofile/classes/class-bp-xprofile-component.php:389 +#: bp-xprofile/classes/class-bp-xprofile-component.php:391 msgctxt "Avatar alt" msgid "Profile picture of %s" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:434 +#: bp-xprofile/classes/class-bp-xprofile-component.php:436 msgctxt "My Account Settings sub nav" msgid "Profile" msgstr "" @@ -12870,6 +13603,14 @@ msgstr "" msgid "Year" msgstr "" +#. translators: no option picked in select box +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:209 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:232 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:240 +#: bp-xprofile/classes/class-bp-xprofile-field-type-selectbox.php:108 +msgid "----" +msgstr "" + #: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:218 msgid "January" msgstr "" @@ -13055,41 +13796,41 @@ msgstr "" msgid "URL" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type.php:324 +#: bp-xprofile/classes/class-bp-xprofile-field-type.php:350 msgid "Please enter options for this Field:" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type.php:327 +#: bp-xprofile/classes/class-bp-xprofile-field-type.php:353 msgid "Sort Order:" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type.php:329 +#: bp-xprofile/classes/class-bp-xprofile-field-type.php:355 msgid "Custom" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type.php:330 +#: bp-xprofile/classes/class-bp-xprofile-field-type.php:356 msgid "Ascending" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type.php:331 +#: bp-xprofile/classes/class-bp-xprofile-field-type.php:357 msgid "Descending" msgstr "" #. translators: accessibility text -#: bp-xprofile/classes/class-bp-xprofile-field-type.php:395 +#: bp-xprofile/classes/class-bp-xprofile-field-type.php:421 msgid "Add an option" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type.php:400 +#: bp-xprofile/classes/class-bp-xprofile-field-type.php:426 msgid "Default Value" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type.php:417 +#: bp-xprofile/classes/class-bp-xprofile-field-type.php:443 msgid "Add Another Option" msgstr "" #: bp-xprofile/classes/class-bp-xprofile-field.php:784 -#: bp-xprofile/classes/class-bp-xprofile-field.php:1462 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1476 msgid "Users with no member type" msgstr "" @@ -13133,81 +13874,77 @@ msgstr "" msgid "Edit Field" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1344 -#: bp-xprofile/classes/class-bp-xprofile-group.php:896 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1354 +#: bp-xprofile/classes/class-bp-xprofile-group.php:906 msgid "Submit" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1404 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1418 msgctxt "XProfile admin edit field" msgid "Name (required)" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1410 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1424 msgctxt "XProfile admin edit field" msgid "Description" msgstr "" #. translators: accessibility text -#: bp-xprofile/classes/class-bp-xprofile-field.php:1414 -#: bp-xprofile/classes/class-bp-xprofile-group.php:863 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1428 +#: bp-xprofile/classes/class-bp-xprofile-group.php:873 msgid "Add description" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1445 -msgid "Member Types" -msgstr "" - -#: bp-xprofile/classes/class-bp-xprofile-field.php:1447 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1461 msgid "This field should be available to:" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1467 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1481 msgid "Unavailable to all members." msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1511 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1525 msgid "Allow members to override" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1515 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1529 msgid "Enforce field visibility" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1540 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1554 msgid "Requirement" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1543 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1557 msgid "Not Required" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1544 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1558 msgid "Required" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1563 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1577 msgid "Autolink" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1565 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1579 msgid "On user profiles, link this field to a search of the Members directory, using the field value as a search term." msgstr "" #. translators: accessibility text -#: bp-xprofile/classes/class-bp-xprofile-field.php:1570 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1584 msgid "Autolink status for this field" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1573 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1587 msgid "Enabled" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1574 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1588 msgid "Disabled" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1598 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1612 msgid "Type" msgstr "" @@ -13219,11 +13956,11 @@ msgstr "" msgid "Edit Field Group" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-group.php:854 +#: bp-xprofile/classes/class-bp-xprofile-group.php:864 msgid "Field Group Name (required)" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-group.php:859 +#: bp-xprofile/classes/class-bp-xprofile-group.php:869 msgid "Field Group Description" msgstr "" @@ -13241,156 +13978,321 @@ msgstr "" msgid "Cheatin’ huh?" msgstr "" -#: class-buddypress.php:788 +#: class-buddypress.php:802 msgid "BuddyPress Nouveau" msgstr "" -#: bp-core/js/block-components.js:167 +#: bp-activity/js/blocks/embed-activity.js:119 +msgid "BuddyPress Activity URL" +msgstr "" + +#: bp-activity/js/blocks/embed-activity.js:145 +msgid "Edit URL" +msgstr "" + +#: bp-activity/js/blocks/embed-activity.js:158 +msgid "Paste the link to the activity content you want to display on your site." +msgstr "" + +#: bp-activity/js/blocks/embed-activity.js:166 +msgid "Enter URL to embed here…" +msgstr "" + +#: bp-activity/js/blocks/embed-activity.js:170 +msgid "Embed" +msgstr "" + +#: bp-activity/js/blocks/embed-activity.js:179 +msgid "Learn more about activity embeds" +msgstr "" + +#: bp-activity/js/blocks/embed-activity.js:190 +msgid "Embedding…" +msgstr "" + +#: bp-activity/js/blocks/embed-activity.js:204 +msgid "The URL you provided is not a permalink to a public BuddyPress Activity. Please use another URL." +msgstr "" + +#: bp-activity/js/blocks/embed-activity.js:226 +msgid "Write caption…" +msgstr "" + +#: bp-activity/js/blocks/embed-activity.js:316 +msgid "Embed an activity" +msgstr "" + +#: bp-activity/js/blocks/embed-activity.js:317 +msgid "Add a block that displays the activity content pulled from this or other community sites." +msgstr "" + +#: bp-core/js/block-components.js:181 msgid "Item's name" msgstr "" -#: bp-core/js/block-components.js:171 +#: bp-core/js/block-components.js:185 msgid "Enter Item's name here…" msgstr "" -#: bp-groups/js/blocks/group.js:20 -#: bp-members/js/blocks/member.js:20 +#: bp-groups/js/blocks/group.js:17 +#: bp-groups/js/blocks/groups.js:121 +#: bp-groups/js/blocks/groups.js:152 +#: bp-members/js/blocks/member.js:17 +#: bp-members/js/blocks/members.js:121 +#: bp-members/js/blocks/members.js:141 msgid "None" msgstr "" -#: bp-groups/js/blocks/group.js:24 -#: bp-members/js/blocks/member.js:24 +#: bp-groups/js/blocks/group.js:21 +#: bp-groups/js/blocks/groups.js:125 +#: bp-members/js/blocks/member.js:21 +#: bp-members/js/blocks/members.js:125 msgid "Thumb" msgstr "" -#: bp-groups/js/blocks/group.js:28 -#: bp-members/js/blocks/member.js:28 +#: bp-groups/js/blocks/group.js:25 +#: bp-groups/js/blocks/groups.js:129 +#: bp-members/js/blocks/member.js:25 +#: bp-members/js/blocks/members.js:129 msgid "Full" msgstr "" -#: bp-groups/js/blocks/group.js:41 +#: bp-groups/js/blocks/group.js:102 msgid "BuddyPress Group" msgstr "" -#: bp-groups/js/blocks/group.js:42 +#: bp-groups/js/blocks/group.js:103 msgid "Start typing the name of the group you want to feature into this post." msgstr "" -#: bp-groups/js/blocks/group.js:47 +#: bp-groups/js/blocks/group.js:109 +#: bp-groups/js/blocks/groups.js:454 msgid "Group's name" msgstr "" -#: bp-groups/js/blocks/group.js:48 +#: bp-groups/js/blocks/group.js:110 +#: bp-groups/js/blocks/groups.js:455 msgid "Enter Group's name here…" msgstr "" -#: bp-groups/js/blocks/group.js:62 +#: bp-groups/js/blocks/group.js:124 msgid "Select another group" msgstr "" -#: bp-groups/js/blocks/group.js:72 +#: bp-groups/js/blocks/group.js:134 msgid "Display Group's home button" msgstr "" -#: bp-groups/js/blocks/group.js:79 +#: bp-groups/js/blocks/group.js:141 msgid "Include a link to the group's home page under their name." msgstr "" -#: bp-groups/js/blocks/group.js:80 +#: bp-groups/js/blocks/group.js:142 msgid "Toggle to display a link to the group's home page under their name." msgstr "" -#: bp-groups/js/blocks/group.js:85 +#: bp-groups/js/blocks/group.js:147 msgid "Display group's description" msgstr "" -#: bp-groups/js/blocks/group.js:92 +#: bp-groups/js/blocks/group.js:154 msgid "Include the group's description under their name." msgstr "" -#: bp-groups/js/blocks/group.js:93 +#: bp-groups/js/blocks/group.js:155 msgid "Toggle to display the group's description under their name." msgstr "" -#: bp-groups/js/blocks/group.js:99 -#: bp-members/js/blocks/member.js:85 +#: bp-groups/js/blocks/group.js:161 +#: bp-groups/js/blocks/groups.js:398 +#: bp-members/js/blocks/member.js:136 +#: bp-members/js/blocks/members.js:402 msgid "Avatar size" msgstr "" -#: bp-groups/js/blocks/group.js:102 -#: bp-members/js/blocks/member.js:88 +#: bp-groups/js/blocks/group.js:164 +#: bp-groups/js/blocks/groups.js:401 +#: bp-members/js/blocks/member.js:139 +#: bp-members/js/blocks/members.js:405 msgid "Select \"None\" to disable the avatar." msgstr "" -#: bp-groups/js/blocks/group.js:111 -#: bp-members/js/blocks/member.js:97 +#: bp-groups/js/blocks/group.js:173 +#: bp-members/js/blocks/member.js:148 msgid "Display Cover Image" msgstr "" -#: bp-groups/js/blocks/group.js:118 +#: bp-groups/js/blocks/group.js:180 msgid "Include the group's cover image over their name." msgstr "" -#: bp-groups/js/blocks/group.js:119 +#: bp-groups/js/blocks/group.js:181 msgid "Toggle to display the group's cover image over their name." msgstr "" -#: bp-groups/js/blocks/group.js:144 +#: bp-groups/js/blocks/group.js:224 msgid "BuddyPress Group." msgstr "" -#: bp-members/js/blocks/member.js:41 -msgid "BuddyPress Member" +#: bp-groups/js/blocks/groups.js:156 +msgid "Group's description" +msgstr "" + +#: bp-groups/js/blocks/groups.js:160 +msgid "Last time the group was active" +msgstr "" + +#: bp-groups/js/blocks/groups.js:164 +msgid "Amount of group members" +msgstr "" + +#: bp-groups/js/blocks/groups.js:254 +#: bp-members/js/blocks/members.js:240 +msgid "List view" +msgstr "" + +#: bp-groups/js/blocks/groups.js:260 +#: bp-members/js/blocks/members.js:246 +msgid "Grid view" +msgstr "" + +#: bp-groups/js/blocks/groups.js:318 +#: bp-groups/js/blocks/groups.js:322 +msgid "Remove group" +msgstr "" + +#: bp-groups/js/blocks/groups.js:384 +msgid "Display the group's name" +msgstr "" + +#: bp-groups/js/blocks/groups.js:391 +msgid "Include the group's name." +msgstr "" + +#: bp-groups/js/blocks/groups.js:392 +msgid "Toggle to include group's name." +msgstr "" + +#: bp-groups/js/blocks/groups.js:409 +msgid "Group extra information" +msgstr "" + +#: bp-groups/js/blocks/groups.js:412 +#: bp-members/js/blocks/members.js:416 +msgid "Select \"None\" to show no extra information." msgstr "" -#: bp-members/js/blocks/member.js:42 +#: bp-groups/js/blocks/groups.js:420 +#: bp-members/js/blocks/members.js:424 +msgid "Columns" +msgstr "" + +#: bp-groups/js/blocks/groups.js:446 +msgid "BuddyPress Groups" +msgstr "" + +#: bp-groups/js/blocks/groups.js:447 +msgid "Start typing the name of the group you want to add to the groups list." +msgstr "" + +#: bp-groups/js/blocks/groups.js:496 +msgid "BuddyPress Groups." +msgstr "" + +#: bp-members/js/blocks/member.js:92 msgid "Start typing the name of the member you want to feature into this post." msgstr "" -#: bp-members/js/blocks/member.js:46 +#: bp-members/js/blocks/member.js:97 +#: bp-members/js/blocks/members.js:458 msgid "Member's username" msgstr "" -#: bp-members/js/blocks/member.js:47 +#: bp-members/js/blocks/member.js:98 +#: bp-members/js/blocks/members.js:459 msgid "Enter Member's username here…" msgstr "" -#: bp-members/js/blocks/member.js:61 +#: bp-members/js/blocks/member.js:112 msgid "Select another member" msgstr "" -#: bp-members/js/blocks/member.js:71 +#: bp-members/js/blocks/member.js:122 msgid "Display Profile button" msgstr "" -#: bp-members/js/blocks/member.js:78 +#: bp-members/js/blocks/member.js:129 msgid "Include a link to the user's profile page under their display name." msgstr "" -#: bp-members/js/blocks/member.js:79 +#: bp-members/js/blocks/member.js:130 msgid "Toggle to display a link to the user's profile page under their display name." msgstr "" -#: bp-members/js/blocks/member.js:104 +#: bp-members/js/blocks/member.js:155 msgid "Include the user's cover image over their display name." msgstr "" -#: bp-members/js/blocks/member.js:105 +#: bp-members/js/blocks/member.js:156 msgid "Toggle to display the user's cover image over their display name." msgstr "" -#: bp-members/js/blocks/member.js:112 +#: bp-members/js/blocks/member.js:163 +#: bp-members/js/blocks/members.js:387 msgid "Display Mention slug" msgstr "" -#: bp-members/js/blocks/member.js:119 +#: bp-members/js/blocks/member.js:170 +#: bp-members/js/blocks/members.js:394 msgid "Include the user's mention name under their display name." msgstr "" -#: bp-members/js/blocks/member.js:120 +#: bp-members/js/blocks/member.js:171 +#: bp-members/js/blocks/members.js:395 msgid "Toggle to display the user's mention name under their display name." msgstr "" -#: bp-members/js/blocks/member.js:145 +#: bp-members/js/blocks/member.js:214 msgid "BuddyPress Member." msgstr "" + +#: bp-members/js/blocks/members.js:145 +msgid "Last time the user was active" +msgstr "" + +#: bp-members/js/blocks/members.js:149 +msgid "Latest activity the user posted" +msgstr "" + +#: bp-members/js/blocks/members.js:304 +#: bp-members/js/blocks/members.js:308 +msgid "Remove member" +msgstr "" + +#: bp-members/js/blocks/members.js:373 +msgid "Display the user name" +msgstr "" + +#: bp-members/js/blocks/members.js:380 +msgid "Include the user's display name." +msgstr "" + +#: bp-members/js/blocks/members.js:381 +msgid "Toggle to include user's display name." +msgstr "" + +#: bp-members/js/blocks/members.js:413 +msgid "BuddyPress extra information" +msgstr "" + +#: bp-members/js/blocks/members.js:450 +msgid "BuddyPress Members" +msgstr "" + +#: bp-members/js/blocks/members.js:451 +msgid "Start typing the name of the member you want to add to the members list." +msgstr "" + +#: bp-members/js/blocks/members.js:500 +msgid "BuddyPress Members." +msgstr "" diff --git a/wp-content/plugins/buddypress/class-buddypress.php b/wp-content/plugins/buddypress/class-buddypress.php index ea2f0f2c5e4c63bf100d8ecc0a8eccf6043fe73a..67a3cc12c9b3613deb7b951dcd7a0289ff17b6f2 100644 --- a/wp-content/plugins/buddypress/class-buddypress.php +++ b/wp-content/plugins/buddypress/class-buddypress.php @@ -303,7 +303,7 @@ class BuddyPress { /** Versions **********************************************************/ - $this->version = '6.0.0'; + $this->version = '7.3.0'; $this->db_version = 12385; /** Loading ***********************************************************/ @@ -510,10 +510,15 @@ class BuddyPress { require( $this->plugin_dir . 'bp-core/deprecated/3.0.php' ); require( $this->plugin_dir . 'bp-core/deprecated/4.0.php' ); require( $this->plugin_dir . 'bp-core/deprecated/6.0.php' ); + require( $this->plugin_dir . 'bp-core/deprecated/7.0.php' ); } - // Load wp-cli module if PHP 5.4+. - if ( defined( 'WP_CLI' ) && file_exists( $this->plugin_dir . 'cli/wp-cli-bp.php' ) && version_compare( phpversion(), '5.4.0', '>=' ) ) { + // Load wp-cli module if PHP 5.6+. + if ( + defined( 'WP_CLI' ) + && ! class_exists( 'Buddypress\CLI\Command\BuddypressCommand' ) + && file_exists( $this->plugin_dir . 'cli/wp-cli-bp.php' ) + && version_compare( phpversion(), '5.6.0', '>=' ) ) { require( $this->plugin_dir . 'cli/wp-cli-bp.php' ); } } @@ -577,12 +582,21 @@ class BuddyPress { 'BP_Theme_Compat' => 'core', 'BP_User_Query' => 'core', 'BP_Walker_Category_Checklist' => 'core', + /** + * BP_Walker_Nav_Menu_Checklist class. + * + * As this class corresponding file is deprecated, it will trigger a deprecation notice if instantiated. + * In a subsequent release, we'll remove it from our Classes Autoloader. + * + * @todo Remove the BP_Walker_Nav_Menu_Checklist from our Classes Autoloader. + */ 'BP_Walker_Nav_Menu_Checklist' => 'core', 'BP_Walker_Nav_Menu' => 'core', 'BP_Invitation_Manager' => 'core', 'BP_Invitation' => 'core', 'BP_REST_Components_Endpoint' => 'core', 'BP_REST_Attachments' => 'core', + 'BP_Admin_Types' => 'core', 'BP_Core_Friends_Widget' => 'friends', 'BP_REST_Friends_Endpoint' => 'friends', diff --git a/wp-content/plugins/buddypress/cli/LICENSE b/wp-content/plugins/buddypress/cli/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..94a9ed024d3859793618152ea559a168bbcbb5e2 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/wp-content/plugins/buddypress/cli/src/activity-favorite.php b/wp-content/plugins/buddypress/cli/src/activity-favorite.php new file mode 100644 index 0000000000000000000000000000000000000000..428a94a06413c43f207f873d02d5ba77a205f2f6 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/activity-favorite.php @@ -0,0 +1,196 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress activity favorites. + * + * ## EXAMPLES + * + * $ wp bp activity favorite add 100 500 + * Success: Activity item added as a favorite for the user. + * + * $ wp bp activity favorite create 100 user_test + * Success: Activity item added as a favorite for the user. + * + * @since 1.5.0 + */ +class Activity_Favorite extends BuddyPressCommand { + + /** + * Object fields. + * + * @var array + */ + protected $obj_fields = array( + 'id', + 'user_id', + 'component', + 'type', + 'action', + 'item_id', + 'primary_link', + 'secondary_item_id', + 'date_recorded', + 'hide_sitewide', + 'is_spam', + ); + + /** + * Add an activity item as a favorite for a user. + * + * ## OPTIONS + * + * <activity-id> + * : ID of the activity to add an item to. + * + * <user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLES + * + * $ wp bp activity favorite add 100 500 + * Success: Activity item added as a favorite for the user. + * + * $ wp bp activity favorite create 100 user_test + * Success: Activity item added as a favorite for the user. + * + * @alias add + */ + public function create( $args ) { + $activity = bp_activity_get_specific( + array( + 'activity_ids' => $args[0], + 'spam' => null, + 'display_comments' => true, + ) + ); + + $activity = $activity['activities'][0]; + + if ( ! is_object( $activity ) ) { + WP_CLI::error( 'Could not find the activity.' ); + } + + $user = $this->get_user_id_from_identifier( $args[1] ); + + if ( bp_activity_add_user_favorite( $activity->id, $user->ID ) ) { + WP_CLI::success( 'Activity item added as a favorite for the user.' ); + } else { + WP_CLI::error( 'Could not add the activity item.' ); + } + } + + /** + * Remove an activity item as a favorite for a user. + * + * ## OPTIONS + * + * <activity-id> + * : ID of the activity to remove a item to. + * + * <user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * [--yes] + * : Answer yes to the confirmation message. + * + * ## EXAMPLES + * + * $ wp bp activity favorite remove 100 500 + * Success: Activity item removed as a favorite for the user. + * + * $ wp bp activity favorite delete 100 user_test --yes + * Success: Activity item removed as a favorite for the user. + * + * @alias delete + */ + public function remove( $args, $assoc_args ) { + $activity = bp_activity_get_specific( + array( + 'activity_ids' => $args[0], + 'spam' => null, + 'display_comments' => true, + ) + ); + + $activity = $activity['activities'][0]; + + if ( ! is_object( $activity ) ) { + WP_CLI::error( 'Could not find the activity.' ); + } + + $user = $this->get_user_id_from_identifier( $args[1] ); + + WP_CLI::confirm( 'Are you sure you want to remove this activity item?', $assoc_args ); + + if ( bp_activity_remove_user_favorite( $activity->id, $user->ID ) ) { + WP_CLI::success( 'Activity item removed as a favorite for the user.' ); + } else { + WP_CLI::error( 'Could not remove the activity item.' ); + } + } + + /** + * Get a user's favorite activity items. + * + * ## OPTIONS + * + * <user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * [--<field>=<value>] + * : One or more parameters to pass to \BP_Activity_Activity::get() + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - csv + * - ids + * - json + * - count + * - yaml + * --- + * + * [--count=<number>] + * : How many activity favorites to list. + * --- + * default: 50 + * --- + * + * ## EXAMPLES + * + * $ wp bp activity favorite list 315 + * + * @subcommand list + * @alias items + * @alias user_items + */ + public function list_( $args, $assoc_args ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore + $user = $this->get_user_id_from_identifier( $args[0] ); + $favorites = bp_activity_get_user_favorites( $user->ID ); + + if ( empty( $favorites ) ) { + WP_CLI::error( 'No favorite found for this user.' ); + } + + $activities = bp_activity_get_specific( + array( + 'activity_ids' => (array) $favorites, + 'per_page' => $assoc_args['count'], + ) + ); + + // Sanity check. + if ( empty( $activities['activities'] ) ) { + WP_CLI::error( 'No favorite found for this user.' ); + } + + $this->get_formatter( $assoc_args )->display_items( $activities['activities'] ); + } +} diff --git a/wp-content/plugins/buddypress/cli/src/activity-fetcher.php b/wp-content/plugins/buddypress/cli/src/activity-fetcher.php new file mode 100644 index 0000000000000000000000000000000000000000..c8ca3e2e93697fb0341a009d0a092e534c9d6bc5 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/activity-fetcher.php @@ -0,0 +1,34 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI\Fetchers\Base; + +/** + * Fetch a BuddyPress activity based on one of its attributes. + * + * @since 2.0.0 + */ +class Activity_Fetcher extends Base { + + /** + * @var string $msg Error message to use when invalid data is provided. + */ + protected $msg = 'Could not find the activity with ID %d.'; + + /** + * Get an activity ID. + * + * @param int $activity_id Activity ID. + * @return BP_Activity_Activity|bool + */ + public function get( $activity_id ) { + $activity = new \BP_Activity_Activity( $activity_id ); + + if ( empty( $activity->id ) ) { + return false; + } + + return $activity; + } +} diff --git a/wp-content/plugins/buddypress/cli/src/activity-meta.php b/wp-content/plugins/buddypress/cli/src/activity-meta.php new file mode 100644 index 0000000000000000000000000000000000000000..ed9dde6d2ab57795ba0debd2286295838c136b84 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/activity-meta.php @@ -0,0 +1,119 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI\CommandWithMeta; + +/** + * Adds, updates, deletes, and lists activity custom fields. + * + * ## EXAMPLES + * + * # Set activity meta + * $ wp bp activity meta set 123 description "Mary is a activity user." + * Success: Updated custom field 'description'. + * + * # Get activity meta + * $ wp bp activity meta get 123 description + * Mary is a Activity user. + * + * # Update activity meta + * $ wp bp activity meta update 123 description "Mary is an awesome activity user." + * Success: Updated custom field 'description'. + * + * # Delete activity meta + * $ wp bp activity meta delete 123 description + * Success: Deleted custom field. + * + * @since 2.0.0 + */ +class Activity_Meta extends CommandWithMeta { + protected $meta_type = 'activity'; + + /** + * Wrapper method for add_metadata that can be overridden in sub classes. + * + * @param int $object_id ID of the object the metadata is for. + * @param string $meta_key Metadata key to use. + * @param mixed $meta_value Metadata value. Must be serializable if + * non-scalar. + * @param bool $unique Optional, default is false. Whether the + * specified metadata key should be unique for the + * object. If true, and the object already has a + * value for the specified metadata key, no change + * will be made. + * + * @return int|false The meta ID on success, false on failure. + */ + protected function add_metadata( $object_id, $meta_key, $meta_value, $unique = false ) { + return bp_activity_add_meta( $object_id, $meta_key, $meta_value ); + } + + /** + * Wrapper method for update_metadata that can be overridden in sub classes. + * + * @param int $object_id ID of the object the metadata is for. + * @param string $meta_key Metadata key to use. + * @param mixed $meta_value Metadata value. Must be serializable if + * non-scalar. + * @param mixed $prev_value Optional. If specified, only update existing + * metadata entries with the specified value. + * Otherwise, update all entries. + * + * @return int|bool Meta ID if the key didn't exist, true on successful + * update, false on failure. + */ + protected function update_metadata( $object_id, $meta_key, $meta_value, $prev_value = '' ) { + return bp_activity_update_meta( $object_id, $meta_key, $meta_value, $prev_value ); + } + + /** + * Wrapper method for get_metadata that can be overridden in sub classes. + * + * @param int $object_id ID of the object the metadata is for. + * @param string $meta_key Optional. Metadata key. If not specified, + * retrieve all metadata for the specified object. + * @param bool $single Optional, default is false. If true, return only + * the first value of the specified meta_key. This + * parameter has no effect if meta_key is not + * specified. + * + * @return mixed Single metadata value, or array of values. + */ + protected function get_metadata( $object_id, $meta_key = '', $single = true ) { + return bp_activity_get_meta( $object_id, $meta_key, $single ); + } + + /** + * Wrapper method for delete_metadata that can be overridden in sub classes. + * + * @param int $object_id ID of the object metadata is for + * @param string $meta_key Metadata key + * @param mixed $meta_value Optional. Metadata value. Must be serializable + * if non-scalar. If specified, only delete + * metadata entries with this value. Otherwise, + * delete all entries with the specified meta_key. + * Pass `null, `false`, or an empty string to skip + * this check. For backward compatibility, it is + * not possible to pass an empty string to delete + * those entries with an empty string for a value. + * + * @return bool True on successful delete, false on failure. + */ + protected function delete_metadata( $object_id, $meta_key, $meta_value = '' ) { + return bp_activity_delete_meta( $object_id, $meta_key, $meta_value ); + } + + /** + * Check that the activity ID exists. + * + * @param int $object_id Object ID. + * @return int + */ + protected function check_object_id( $object_id ) { + $fetcher = new Activity_Fetcher(); + $activity = $fetcher->get_check( $object_id ); + + return $activity->id; + } +} diff --git a/wp-content/plugins/buddypress/cli/src/activity.php b/wp-content/plugins/buddypress/cli/src/activity.php new file mode 100644 index 0000000000000000000000000000000000000000..a538d921deb0ca897756f813834b835f3bf3adec --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/activity.php @@ -0,0 +1,925 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Activities. + * + * ## EXAMPLES + * + * $ wp bp activity create --is-spam=1 + * Success: Successfully created new activity item (ID #5464) + * + * $ wp bp activity add --component=groups --item-id=2 --user-id=10 + * Success: Successfully created new activity item (ID #48949) + * + * @since 1.5.0 + */ +class Activity extends BuddyPressCommand { + + /** + * Object fields. + * + * @var array + */ + protected $obj_fields = array( + 'id', + 'user_id', + 'component', + 'type', + 'action', + 'item_id', + 'primary_link', + 'secondary_item_id', + 'date_recorded', + 'hide_sitewide', + 'is_spam', + ); + + /** + * Dependency check for this CLI command. + */ + public static function check_dependencies() { + parent::check_dependencies(); + + if ( ! bp_is_active( 'activity' ) ) { + WP_CLI::error( 'The Activity component is not active.' ); + } + } + + /** + * Create an activity item. + * + * ## OPTIONS + * + * [--component=<component>] + * : The component for the activity item (groups, activity, etc). If + * none is provided, a component will be randomly selected from the + * active components. + * + * [--type=<type>] + * : Activity type (activity_update, group_created, etc). If none is + * provided, a type will be randomly chose from those natively + * associated with your <component>. + * + * [--action=<action>] + * : Action text (eg "Joe created a new group Foo"). If none is + * provided, one will be generated automatically based on other params. + * + * [--content=<content>] + * : Activity content text. If none is provided, default text will be + * generated. + * + * [--primary-link=<primary-link>] + * : URL of the item, as used in RSS feeds. If none is provided, a URL + * will be generated based on passed parameters. + * + * [--user-id=<user>] + * : ID of the user associated with the new item. If none is provided, + * a user will be randomly selected. + * + * [--item-id=<item-id>] + * : ID of the associated item. If none is provided, one will be + * generated automatically, if your activity type requires it. + * + * [--secondary-item-id=<secondary-item-id>] + * : ID of the secondary associated item. If none is provided, one will + * be generated automatically, if your activity type requires it. + * + * [--date-recorded=<date-recorded>] + * : GMT timestamp, in Y-m-d h:i:s format. + * + * [--hide-sitewide=<hide-sitewide>] + * : Whether to hide in sitewide streams. + * + * [--is-spam=<is-spam>] + * : Whether the item should be marked as spam. + * + * [--silent] + * : Whether to silent the activity creation. + * + * [--porcelain] + * : Output only the new activity id. + * + * ## EXAMPLES + * + * $ wp bp activity create --is-spam=1 + * Success: Successfully created new activity item (ID #5464) + * + * $ wp bp activity add --component=groups --item-id=564 --user-id=10 + * Success: Successfully created new activity item (ID #48949) + * + * @alias add + */ + public function create( $args, $assoc_args ) { + $r = wp_parse_args( $assoc_args, + array( + 'component' => '', + 'type' => '', + 'action' => '', + 'content' => '', + 'primary-link' => '', + 'user-id' => '', + 'item-id' => '', + 'secondary-item-id' => '', + 'date-recorded' => bp_core_current_time(), + 'hide-sitewide' => 0, + 'is-spam' => 0, + ) + ); + + // Fill in any missing information. + if ( empty( $r['component'] ) ) { + $r['component'] = $this->get_random_component(); + } + + if ( empty( $r['type'] ) ) { + $r['type'] = $this->get_random_type_from_component( $r['component'] ); + } + + if ( 'groups' === $r['component'] ) { + $r['item-id'] = $this->get_group_id_from_identifier( $r['item-id'] ); + } + + // If some data is not set, we have to generate it. + if ( empty( $r['item-id'] ) || empty( $r['secondary-item-id'] ) ) { + $r = $this->generate_item_details( $r ); + } + + $id = bp_activity_add( + array( + 'action' => $r['action'], + 'content' => $r['content'], + 'component' => $r['component'], + 'type' => $r['type'], + 'primary_link' => $r['primary-link'], + 'user_id' => $r['user-id'], + 'item_id' => $r['item-id'], + 'secondary_item_id' => $r['secondary-item-id'], + 'date_recorded' => $r['date-recorded'], + 'hide_sitewide' => (bool) $r['hide-sitewide'], + 'is_spam' => (bool) $r['is-spam'], + ) + ); + + // Silent it before it errors. + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'silent' ) ) { + return; + } + + if ( ! is_numeric( $id ) ) { + WP_CLI::error( 'Could not create activity item.' ); + } + + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { + WP_CLI::log( $id ); + } else { + WP_CLI::success( sprintf( 'Successfully created new activity item (ID #%d)', $id ) ); + } + } + + /** + * Retrieve a list of activities. + * + * ## OPTIONS + * + * [--<field>=<value>] + * : One or more parameters to pass to \BP_Activity_Activity::get() + * + * [--user-id=<user>] + * : Limit activities to a specific user id. Accepts a numeric ID. + * + * [--component=<component>] + * : Limit activities to a specific or certain components. + * + * [--type=<type>] + * : Type of the activity. Ex.: activity_update, profile_updated. + * + * [--primary-id=<primary-id>] + * : Object ID to filter the activities. Ex.: group_id or forum_id or blog_id, etc. + * + * [--secondary-id=<secondary-id>] + * : Secondary object ID to filter the activities. Ex.: a post_id. + * + * [--count=<number>] + * : How many activities to list. + * --- + * default: 50 + * --- + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - csv + * - ids + * - json + * - count + * - yaml + * --- + * + * ## AVAILABLE FIELDS + * + * These fields will be displayed by default for each activity: + * + * * ID + * * user_id + * * component + * * type + * * action + * * content + * * item_id + * * secondary_item_id + * * primary_link + * * date_recorded + * * is_spam + * * user_email + * * user_nicename + * * user_login + * * display_name + * * user_fullname + * + * ## EXAMPLES + * + * $ wp bp activity list --format=ids + * $ wp bp activity list --format=count + * $ wp bp activity list --per_page=5 + * $ wp bp activity list --search_terms="Activity Comment" + * $ wp bp activity list --user-id=10 + * $ wp bp activity list --user-id=123 --component=groups + * + * @subcommand list + */ + public function list_( $args, $assoc_args ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore + $formatter = $this->get_formatter( $assoc_args ); + + $r = wp_parse_args( + $assoc_args, + array( + 'page' => 1, + 'count' => 50, + 'count_total' => false, + 'show_hidden' => true, + 'filter' => false, + ) + ); + + // Activities to list. + $r['per_page'] = $r['count']; + + if ( isset( $assoc_args['user-id'] ) && is_numeric( $assoc_args['user-id'] ) ) { + $r['filter']['user_id'] = $assoc_args['user-id']; + } + + if ( isset( $assoc_args['component'] ) ) { + $r['filter']['object'] = $assoc_args['component']; + } + + if ( isset( $assoc_args['type'] ) ) { + $r['filter']['action'] = $assoc_args['type']; + } + + if ( isset( $assoc_args['primary-id'] ) ) { + $r['filter']['primary_id'] = $assoc_args['primary-id']; + } + + if ( isset( $assoc_args['secondary-id'] ) ) { + $r['filter']['secondary_id'] = $assoc_args['secondary-id']; + } + + $r = self::process_csv_arguments_to_arrays( $r ); + + // If count or ids, no need for activity objects. + if ( in_array( $formatter->format, array( 'ids', 'count' ), true ) ) { + $r['fields'] = 'ids'; + } + + $activities = bp_activity_get( $r ); + if ( empty( $activities['activities'] ) ) { + WP_CLI::error( 'No activities found.' ); + } + + if ( 'ids' === $formatter->format ) { + echo implode( ' ', $activities['activities'] ); + } elseif ( 'count' === $formatter->format ) { + $formatter->display_items( $activities['total'] ); + } else { + $formatter->display_items( $activities['activities'] ); + } + } + + /** + * Generate random activity items. + * + * ## OPTIONS + * + * [--count=<number>] + * : How many activity items to generate. + * --- + * default: 100 + * --- + * + * [--skip-activity-comments=<skip-activity-comments>] + * : Whether to skip activity comments. Recording activity_comment + * items requires a resource-intensive tree rebuild. + * --- + * default: 1 + * --- + * + * ## EXAMPLE + * + * $ wp bp activity generate --count=50 + */ + public function generate( $args, $assoc_args ) { + $component = $this->get_random_component(); + $type = $this->get_random_type_from_component( $component ); + + if ( (bool) $assoc_args['skip-activity-comments'] && 'activity_comment' === $type ) { + $type = 'activity_update'; + } + + $notify = WP_CLI\Utils\make_progress_bar( 'Generating activity items', $assoc_args['count'] ); + + for ( $i = 0; $i < $assoc_args['count']; $i++ ) { + $this->create( + array(), + array( + 'component' => $component, + 'type' => $type, + 'content' => $this->generate_random_text(), + 'silent', + ) + ); + + $notify->tick(); + } + + $notify->finish(); + } + + /** + * Fetch specific activity. + * + * ## OPTIONS + * + * <activity-id> + * : Identifier for the activity. + * + * [--fields=<fields>] + * : Limit the output to specific fields. + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - json + * - haml + * --- + * + * ## EXAMPLES + * + * $ wp bp activity get 500 + * $ wp bp activity get 56 --format=json + */ + public function get( $args, $assoc_args ) { + $activity = bp_activity_get_specific( array( + 'activity_ids' => $args[0], + 'spam' => null, + 'display_comments' => true, + ) ); + + $activity = $activity['activities'][0]; + + if ( ! is_object( $activity ) ) { + WP_CLI::error( 'Could not find the activity.' ); + } + + $activity_arr = get_object_vars( $activity ); + $activity_arr['url'] = bp_activity_get_permalink( $activity->id ); + + if ( empty( $assoc_args['fields'] ) ) { + $assoc_args['fields'] = array_keys( $activity_arr ); + } + + $this->get_formatter( $assoc_args )->display_item( $activity_arr ); + } + + /** + * Delete an activity. + * + * ## OPTIONS + * + * <activity-id>... + * : ID or IDs of activities to delete. + * + * [--yes] + * : Answer yes to the confirmation message. + * + * ## EXAMPLES + * + * $ wp bp activity delete 958695 + * Success: Activity deleted. + * + * $ wp bp activity delete 500 --yes + * Success: Activity deleted. + * + * @alias remove + */ + public function delete( $args, $assoc_args ) { + WP_CLI::confirm( 'Are you sure you want to delete this activity?', $assoc_args ); + + parent::_delete( $args, $assoc_args, function( $activity_id ) { + $args = array( + 'id' => $this->get_activity_id_from_identifier( $activity_id ), + ); + + if ( bp_activity_delete( $args ) ) { + return array( 'success', 'Activity deleted.' ); + } else { + return array( 'error', 'Could not delete the activity.' ); + } + } ); + } + + /** + * Spam an activity. + * + * ## OPTIONS + * + * <activity-id> + * : Identifier for the activity. + * + * ## EXAMPLES + * + * $ wp bp activity spam 500 + * Success: Activity marked as spam. + * + * $ wp bp activity unham 165165 + * Success: Activity marked as spam. + * + * @alias unham + */ + public function spam( $args ) { + $activity = $this->get_activity_id_from_identifier( $args[0], true ); + + // Mark as spam. + bp_activity_mark_as_spam( $activity ); + + if ( $activity->save() ) { + WP_CLI::success( 'Activity marked as spam.' ); + } else { + WP_CLI::error( 'Could not mark the activity as spam.' ); + } + } + + /** + * Ham an activity. + * + * ## OPTIONS + * + * <activity-id> + * : Identifier for the activity. + * + * ## EXAMPLES + * + * $ wp bp activity ham 500 + * Success: Activity marked as ham. + * + * $ wp bp activity unspam 4679 + * Success: Activity marked as ham. + * + * @alias unspam + */ + public function ham( $args ) { + $activity = $this->get_activity_id_from_identifier( $args[0], true ); + + // Mark as ham. + bp_activity_mark_as_ham( $activity ); + + if ( $activity->save() ) { + WP_CLI::success( 'Activity marked as ham.' ); + } else { + WP_CLI::error( 'Could not mark the activity as ham.' ); + } + } + + /** + * Post an activity update. + * + * ## OPTIONS + * + * --user-id=<user> + * : ID of the user. If none is provided, a user will be randomly selected. + * + * --content=<content> + * : Activity content text. If none is provided, default text will be generated. + * + * [--porcelain] + * : Output only the new activity id. + * + * ## EXAMPLES + * + * $ wp bp activity post_update --user-id=50 --content="Content to update" + * Success: Successfully updated with a new activity item (ID #13165) + * + * $ wp bp activity post_update --user-id=140 + * Success: Successfully updated with a new activity item (ID #4548) + * + * @alias post-update + */ + public function post_update( $args, $assoc_args ) { + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + + // Post the activity update. + $id = bp_activity_post_update( array( + 'content' => $assoc_args['content'], + 'user_id' => $user->ID, + ) ); + + // Activity ID returned on success update. + if ( ! is_numeric( $id ) ) { + WP_CLI::error( 'Could not post the activity update.' ); + } + + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { + WP_CLI::log( $id ); + } else { + WP_CLI::success( sprintf( 'Successfully updated with a new activity item (ID #%d)', $id ) ); + } + } + + /** + * Add an activity comment. + * + * ## OPTIONS + * + * <activity-id> + * : ID of the activity to add the comment. + * + * --user-id=<user> + * : ID of the user. If none is provided, a user will be randomly selected. + * + * --content=<content> + * : Activity content text. If none is provided, default text will be generated. + * + * [--skip-notification] + * : Whether to skip notification. + * + * [--porcelain] + * : Output only the new activity comment id. + * + * ## EXAMPLES + * + * $ wp bp activity comment 560 --user-id=50 --content="New activity comment" + * Success: Successfully added a new activity comment (ID #4645) + * + * $ wp bp activity comment 459 --user-id=140 --skip-notification=1 + * Success: Successfully added a new activity comment (ID #494) + */ + public function comment( $args, $assoc_args ) { + $activity_id = $this->get_activity_id_from_identifier( $args[0] ); + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $skip_notification = WP_CLI\Utils\get_flag_value( $assoc_args, 'skip-notification' ); + + // Add activity comment. + $id = bp_activity_new_comment( array( + 'content' => $assoc_args['content'], + 'user_id' => $user->ID, + 'activity_id' => $activity_id, + 'skip_notification' => $skip_notification, + ) ); + + // Activity Comment ID returned on success. + if ( ! is_numeric( $id ) ) { + WP_CLI::error( 'Could not post a new activity comment.' ); + } + + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { + WP_CLI::log( $id ); + } else { + WP_CLI::success( sprintf( 'Successfully added a new activity comment (ID #%d)', $id ) ); + } + } + + /** + * Delete an activity comment. + * + * ## OPTIONS + * + * <activity-id> + * : Identifier for the activity. + * + * --comment-id=<comment-id> + * : ID of the comment to delete. + * + * [--yes] + * : Answer yes to the confirmation message. + * + * ## EXAMPLES + * + * $ wp bp activity delete_comment 100 --comment-id=500 + * Success: Activity comment deleted. + * + * $ wp bp activity delete_comment 165 --comment-id=35435 --yes + * Success: Activity comment deleted. + * + * @alias remove_comment + */ + public function delete_comment( $args, $assoc_args ) { + $activity_id = $this->get_activity_id_from_identifier( $args[0] ); + + WP_CLI::confirm( 'Are you sure you want to delete this activity comment?', $assoc_args ); + + // Delete Comment. True if deleted. + if ( bp_activity_delete_comment( $activity_id, $assoc_args['comment-id'] ) ) { + WP_CLI::success( 'Activity comment deleted.' ); + } else { + WP_CLI::error( 'Could not delete the activity comment.' ); + } + } + + /** + * Get a random type from a component. + * + * @since 1.1 + * + * @param string $component Component name. + * @return string + */ + protected function get_random_type_from_component( $component ) { + $ca = $this->get_components_and_actions(); + return array_rand( array_flip( $ca[ $component ] ) ); + } + + /** + * Generate item details. + * + * @since 1.1 + */ + protected function generate_item_details( $r ) { + global $wpdb; + + $bp = buddypress(); + + switch ( $r['type'] ) { + case 'activity_update': + if ( empty( $r['user-id'] ) ) { + $r['user-id'] = $this->get_random_user_id(); + } + + // Make group updates look more like actual group updates. + // i.e. give them links to their groups. + if ( 'groups' === $r['component'] ) { + + if ( empty( $r['item-id'] ) ) { + WP_CLI::error( 'No group found by that ID.' ); + } + + // get the group. + $group_obj = groups_get_group( array( + 'group_id' => $r['item-id'], + ) ); + + // make sure such a group exists. + if ( empty( $group_obj->id ) ) { + WP_CLI::error( 'No group found by that slug or id.' ); + } + + // stolen from groups_join_group. + $r['action'] = sprintf( '%1$s posted an update in the group %2$s', bp_core_get_userlink( $r['user-id'] ), '<a href="' . bp_get_group_permalink( $group_obj ) . '">' . esc_attr( $group_obj->name ) . '</a>' ); + } else { + // old way, for some other kind of update. + $r['action'] = sprintf( '%s posted an update', bp_core_get_userlink( $r['user-id'] ) ); + } + if ( empty( $r['content'] ) ) { + $r['content'] = $this->generate_random_text(); + } + + $r['primary-link'] = bp_core_get_userlink( $r['user-id'] ); + + break; + + case 'activity_comment': + if ( empty( $r['user-id'] ) ) { + $r['user-id'] = $this->get_random_user_id(); + } + + $parent_item = $wpdb->get_row( "SELECT * FROM {$bp->activity->table_name} ORDER BY RAND() LIMIT 1" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared + + if ( \is_object( $parent_item ) ) { + if ( 'activity_comment' === $parent_item->type ) { + $r['item-id'] = $parent_item->id; + $r['secondary-item-id'] = $parent_item->secondary_item_id; + } else { + $r['item-id'] = $parent_item->id; + } + } + + $r['action'] = sprintf( '%s posted a new activity comment', bp_core_get_userlink( $r['user-id'] ) ); + $r['content'] = $this->generate_random_text(); + $r['primary-link'] = bp_core_get_userlink( $r['user-id'] ); + + break; + + case 'new_blog': + case 'new_blog_post': + case 'new_blog_comment': + if ( ! bp_is_active( 'blogs' ) ) { + return $r; + } + + if ( is_multisite() ) { + $r['item-id'] = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} ORDER BY RAND() LIMIT 1" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared + } else { + $r['item-id'] = 1; + } + + // Need blog content for posts/comments. + if ( 'new_blog_post' === $r['type'] || 'new_blog_comment' === $r['type'] ) { + + if ( is_multisite() ) { + switch_to_blog( $r['item-id'] ); + } + + $comment_info = $wpdb->get_results( "SELECT comment_id, comment_post_id FROM {$wpdb->comments} ORDER BY RAND() LIMIT 1" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared + $comment_id = $comment_info[0]->comment_id; + $comment = get_comment( $comment_id ); + + $post_id = $comment_info[0]->comment_post_id; + $post = get_post( $post_id ); + + if ( is_multisite() ) { + restore_current_blog(); + } + } + + // new_blog. + if ( 'new_blog' === $r['type'] ) { + if ( '' === $r['user-id'] ) { + $r['user-id'] = $this->get_random_user_id(); + } + + if ( ! $r['action'] ) { + $r['action'] = sprintf( '%s created the site %s', bp_core_get_userlink( $r['user-id'] ), '<a href="' . get_home_url( $r['item-id'] ) . '">' . esc_attr( get_blog_option( $r['item-id'], 'blogname' ) ) . '</a>' ); + } + + if ( ! $r['primary-link'] ) { + $r['primary-link'] = get_home_url( $r['item-id'] ); + } + + // new_blog_post. + } elseif ( 'new_blog_post' === $r['type'] ) { + if ( '' === $r['user-id'] ) { + $r['user-id'] = $post->post_author; + } + + if ( '' === $r['primary-link'] ) { + $r['primary-link'] = add_query_arg( 'p', $post->ID, trailingslashit( get_home_url( $r['item-id'] ) ) ); + } + + if ( '' === $r['action'] ) { + $r['action'] = sprintf( '%1$s wrote a new post, %2$s', bp_core_get_userlink( (int) $post->post_author ), '<a href="' . $r['primary-link'] . '">' . $post->post_title . '</a>' ); + } + + if ( '' === $r['content'] ) { + $r['content'] = $post->post_content; + } + + if ( '' === $r['secondary-item-id'] ) { + $r['secondary-item-id'] = $post->ID; + } + + // new_blog_comment. + } else { + // groan - have to fake this. + if ( '' === $r['user-id'] ) { + $user = get_user_by( 'email', $comment->comment_author_email ); + $r['user-id'] = ( empty( $user ) ) + ? $this->get_random_user_id() + : $user->ID; + } + + $post_permalink = get_permalink( $comment->comment_post_ID ); + $comment_link = get_comment_link( $comment->comment_ID ); + + if ( '' === $r['primary-link'] ) { + $r['primary-link'] = $comment_link; + } + + if ( '' === $r['action'] ) { + $r['action'] = sprintf( '%1$s commented on the post, %2$s', bp_core_get_userlink( $r['user-id'] ), '<a href="' . $post_permalink . '">' . apply_filters( 'the_title', $post->post_title ) . '</a>' ); + } + + if ( '' === $r['content'] ) { + $r['content'] = $comment->comment_content; + } + + if ( '' === $r['secondary-item-id'] ) { + $r['secondary-item-id'] = $comment->ID; + } + } + + $r['content'] = ''; + + break; + + case 'friendship_created': + if ( empty( $r['user-id'] ) ) { + $r['user-id'] = $this->get_random_user_id(); + } + + if ( empty( $r['item-id'] ) ) { + $r['item-id'] = $this->get_random_user_id(); + } + + $r['action'] = sprintf( '%1$s and %2$s are now friends', bp_core_get_userlink( $r['user-id'] ), bp_core_get_userlink( $r['item-id'] ) ); + + break; + + case 'created_group': + if ( empty( $r['item-id'] ) ) { + $random_group = \BP_Groups_Group::get_random( 1, 1 ); + $r['item-id'] = $random_group['groups'][0]->slug; + } + + $group = groups_get_group( array( + 'group_id' => $r['item-id'], + ) ); + + // @todo what if it's not a group? ugh + if ( empty( $r['user-id'] ) ) { + $r['user-id'] = $group->creator_id; + } + + $group_permalink = bp_get_group_permalink( $group ); + + if ( empty( $r['action'] ) ) { + $r['action'] = sprintf( '%1$s created the group %2$s', bp_core_get_userlink( $r['user-id'] ), '<a href="' . $group_permalink . '">' . esc_attr( $group->name ) . '</a>' ); + } + + if ( empty( $r['primary-link'] ) ) { + $r['primary-link'] = $group_permalink; + } + + break; + + case 'joined_group': + if ( empty( $r['item-id'] ) ) { + $random_group = \BP_Groups_Group::get_random( 1, 1 ); + if ( ! empty( $random_group['groups'][0]->slug ) ) { + $r['item-id'] = $random_group['groups'][0]->slug; + } + } + + $group = groups_get_group( array( + 'group_id' => $r['item-id'], + ) ); + + if ( empty( $r['user-id'] ) ) { + $r['user-id'] = $this->get_random_user_id(); + } + + if ( empty( $r['action'] ) ) { + $r['action'] = sprintf( '%1$s joined the group %2$s', bp_core_get_userlink( $r['user-id'] ), '<a href="' . bp_get_group_permalink( $group ) . '">' . esc_attr( $group->name ) . '</a>' ); + } + + if ( empty( $r['primary-link'] ) ) { + $r['primary-link'] = bp_get_group_permalink( $group ); + } + + break; + + case 'new_avatar': + case 'new_member': + case 'updated_profile': + if ( empty( $r['user-id'] ) ) { + $r['user-id'] = $this->get_random_user_id(); + } + + $userlink = bp_core_get_userlink( $r['user-id'] ); + + // new_avatar. + if ( 'new_avatar' === $r['type'] ) { + $r['action'] = sprintf( '%s changed their profile picture', $userlink ); + + // new_member. + } elseif ( 'new_member' === $r['type'] ) { + $r['action'] = sprintf( '%s became a registered member', $userlink ); + + // updated_profile. + } else { + $r['action'] = sprintf( '%s updated their profile', $userlink ); + } + + break; + } + + return $r; + } +} diff --git a/wp-content/plugins/buddypress/cli/src/buddypress.php b/wp-content/plugins/buddypress/cli/src/buddypress.php new file mode 100644 index 0000000000000000000000000000000000000000..73569a885ebae3f76f00c065c9b05ef07e73e304 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/buddypress.php @@ -0,0 +1,46 @@ +<?php + +namespace Buddypress\CLI\Command; + +/** + * Manage BuddyPress through the command-line. + * + * ## EXAMPLES + * + * # Create a user signup. + * $ wp bp signup create --user-login=test_user --user-email=teste@site.com + * Success: Successfully added new user signup (ID #345). + * + * # Activate a component. + * $ wp bp component activate groups + * Success: The Groups component has been activated. + * + * # List xprofile fields. + * $ wp bp xprofile field list + */ +class BuddyPress extends BuddyPressCommand { + + /** + * Adds description and subcomands to the DOC. + * + * @param object $command Command. + * @return array + */ + private function command_to_array( $command ) { + $dump = array( + 'name' => $command->get_name(), + 'description' => $command->get_shortdesc(), + 'longdesc' => $command->get_longdesc(), + ); + + foreach ( $command->get_subcommands() as $subcommand ) { + $dump['subcommands'][] = $this->command_to_array( $subcommand ); + } + + if ( empty( $dump['subcommands'] ) ) { + $dump['synopsis'] = (string) $command->get_synopsis(); + } + + return $dump; + } +} diff --git a/wp-content/plugins/buddypress/cli/src/command.php b/wp-content/plugins/buddypress/cli/src/command.php new file mode 100644 index 0000000000000000000000000000000000000000..49ae6ff9fd81b4bedd0474c8f1b47e968a58f82c --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/command.php @@ -0,0 +1,190 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; +use WP_CLI\CommandWithDBObject; + +/** + * Base component class. + * + * @since 1.0 + */ +abstract class BuddyPressCommand extends CommandWithDBObject { + + /** + * Default dependency check for a BuddyPress CLI command. + * + * @since 2.0 + */ + public static function check_dependencies() { + if ( ! class_exists( 'Buddypress' ) ) { + WP_CLI::error( 'The BuddyPress plugin is not active.' ); + } + } + + /** + * Get Formatter object based on supplied parameters. + * + * @since 2.0 + * + * @param array $assoc_args Parameters passed to command. Determines formatting. + * @return \WP_CLI\Formatter + */ + protected function get_formatter( &$assoc_args ) { + return new WP_CLI\Formatter( $assoc_args, $this->obj_fields ); + } + + /** + * Get a random user id. + * + * @since 1.1 + * + * @return int + */ + protected function get_random_user_id() { + global $wpdb; + return $wpdb->get_var( "SELECT ID FROM $wpdb->users ORDER BY RAND() LIMIT 1" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared + } + + /** + * Get an activity ID. + * + * @since 2.0 + * + * @param int $activity_id Activity ID. + * @param bool $object Return activity object. + * @return int|BP_Activity_Activity + */ + protected function get_activity_id_from_identifier( $activity_id, $object = false ) { + $fetcher = new Activity_Fetcher(); + $activity = $fetcher->get_check( $activity_id ); + + if ( true === $object ) { + return $activity; + } + + return $activity->id; + } + + /** + * Get a group ID from its identifier (ID or slug). + * + * @since 1.5.0 + * + * @param int|string $group_id Group ID or slug. + * @return int|bool + */ + protected function get_group_id_from_identifier( $group_id ) { + // Group ID or slug. + if ( ! is_numeric( $group_id ) ) { + $group_id = groups_get_id( $group_id ); + } + + // Get group object. + $group_obj = groups_get_group( + array( + 'group_id' => $group_id, + ) + ); + + if ( empty( $group_obj->id ) ) { + WP_CLI::error( 'No group found by that slug or ID.' ); + } + + return intval( $group_obj->id ); + } + + /** + * Verify a user ID by the passed identifier. + * + * @since 1.2.0 + * + * @param mixed $identifier User ID, email or login. + * @return WP_User + */ + protected function get_user_id_from_identifier( $identifier ) { + if ( is_numeric( $identifier ) ) { + $user = get_user_by( 'id', $identifier ); + } elseif ( is_email( $identifier ) ) { + $user = get_user_by( 'email', $identifier ); + } else { + $user = get_user_by( 'login', $identifier ); + } + + if ( ! $user ) { + WP_CLI::error( sprintf( 'No user found by that username or ID (%s).', $identifier ) ); + } + + return $user; + } + + /** + * Generate random text + * + * @since 1.1 + * + * @return string + */ + protected function generate_random_text() { + return 'Here is some random text'; + } + + /** + * Get field from an ID. + * + * @since 1.5.0 + * + * @param int|string $field_id Field ID or Field name. + * @return int Field ID. + */ + protected function get_field_id( $field_id ) { + if ( ! is_numeric( $field_id ) ) { + return xprofile_get_field_id_from_name( $field_id ); + } + + return absint( $field_id ); + } + + /** + * String sanitization. + * + * @since 1.5.0 + * + * @param string $type String to sanitize. + * @return string Sanitized string. + */ + protected function sanitize_string( $type ) { + return strtolower( str_replace( '-', '_', $type ) ); + } + + /** + * Pull up a random active component. + * + * @since 1.1 + * + * @return string + */ + protected function get_random_component() { + $c = buddypress()->active_components; + $ca = $this->get_components_and_actions(); + + return array_rand( array_flip( array_intersect( array_keys( $c ), array_keys( $ca ) ) ) ); + } + + /** + * Get a list of activity components and actions. + * + * @since 1.1 + * + * @return array + */ + protected function get_components_and_actions() { + return array_map( + function( $component ) { + return array_keys( (array) $component ); + }, + (array) bp_activity_get_actions() + ); + } +} diff --git a/wp-content/plugins/buddypress/cli/src/components.php b/wp-content/plugins/buddypress/cli/src/components.php new file mode 100644 index 0000000000000000000000000000000000000000..07c13fa0d4521ad71746d7d70cf5333a97db7c22 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/components.php @@ -0,0 +1,288 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Components. + * + * ## EXAMPLES + * + * # Activate a component. + * $ wp bp component activate groups + * Success: The Groups component has been activated. + * + * # Deactive a component. + * $ wp bp component deactivate groups + * Success: The Groups component has been deactivated. + * + * # List components. + * $ wp bp component list --type=required + * +--------+---------+--------+------------------------+--------------------------------------------+ + * | number | id | status | title | description | + * +--------+---------+--------+------------------------------------------+--------------------------+ + * | 1 | core | Active | BuddyPress Core | It's what makes <del>time travel</del> | + * | | | | | BuddyPress possible! | + * | 2 | members | Active | Community Members | Everything in a BuddyPress community | + * | | | | | revolves around its members. | + * +--------+---------+--------+------------------------------------------+--------------------------+ + * + * @since 1.6.0 + */ +class Components extends BuddyPressCommand { + + /** + * Object fields. + * + * @var array + */ + protected $obj_fields = array( + 'number', + 'id', + 'status', + 'title', + 'description', + ); + + /** + * Activate a component. + * + * ## OPTIONS + * + * <component> + * : Name of the component to activate. + * + * ## EXAMPLE + * + * $ wp bp component activate groups + * Success: The Groups component has been activated. + */ + public function activate( $args ) { + $component = $args[0]; + + if ( ! $this->component_exists( $component ) ) { + WP_CLI::error( sprintf( '%s is not a valid component.', ucfirst( $component ) ) ); + } + + if ( bp_is_active( $component ) ) { + WP_CLI::error( sprintf( 'The %s component is already active.', ucfirst( $component ) ) ); + } + + $active_components =& buddypress()->active_components; + + // Set for the rest of the page load. + $active_components[ $component ] = 1; + + // Save in the db. + bp_update_option( 'bp-active-components', $active_components ); + + // Ensure that dbDelta() is defined. + if ( ! function_exists( 'dbDelta' ) ) { + require_once ABSPATH . 'wp-admin/includes/upgrade.php'; + } + + // Run the setup, in case tables have to be created. + require_once buddypress()->plugin_dir . 'bp-core/admin/bp-core-admin-schema.php'; + bp_core_install( $active_components ); + bp_core_add_page_mappings( $active_components ); + + WP_CLI::success( sprintf( 'The %s component has been activated.', ucfirst( $component ) ) ); + } + + /** + * Deactivate a component. + * + * ## OPTIONS + * + * <component> + * : Name of the component to deactivate. + * + * ## EXAMPLE + * + * $ wp bp component deactivate groups + * Success: The Groups component has been deactivated. + */ + public function deactivate( $args ) { + $component = $args[0]; + + if ( ! $this->component_exists( $component ) ) { + WP_CLI::error( sprintf( '%s is not a valid component.', ucfirst( $component ) ) ); + } + + if ( ! bp_is_active( $component ) ) { + WP_CLI::error( sprintf( 'The %s component is not active.', ucfirst( $component ) ) ); + } + + if ( array_key_exists( $component, bp_core_get_components( 'required' ) ) ) { + WP_CLI::error( 'You cannot deactivate a required component.' ); + } + + $active_components =& buddypress()->active_components; + + // Set for the rest of the page load. + unset( $active_components[ $component ] ); + + // Save in the db. + bp_update_option( 'bp-active-components', $active_components ); + + WP_CLI::success( sprintf( 'The %s component has been deactivated.', ucfirst( $component ) ) ); + } + + /** + * Get a list of components. + * + * ## OPTIONS + * + * [--type=<type>] + * : Type of the component (all, optional, retired, required). + * --- + * default: all + * options: + * - all + * - optional + * - retired + * - required + * --- + * + * [--status=<status>] + * : Status of the component (all, active, inactive). + * --- + * default: all + * options: + * - all + * - active + * - inactive + * --- + * + * [--fields=<fields>] + * : Fields to display (id, title, description). + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - count + * - csv + * - haml + * --- + * + * ## EXAMPLES + * + * $ wp bp component list --format=count + * 10 + * + * $ wp bp component list --status=inactive --format=count + * 4 + * + * @subcommand list + */ + public function list_( $args, $assoc_args ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore + $formatter = $this->get_formatter( $assoc_args ); + + // Get type. + $type = $assoc_args['type']; + + // Get components. + $components = (array) bp_core_get_components( $type ); + + // Active components. + $active_components = apply_filters( 'bp_active_components', bp_get_option( 'bp-active-components', array() ) ); + + // Core component is always active. + if ( 'optional' !== $type && isset( $components['core'] ) ) { + if ( ! isset( $active_components['core'] ) ) { + $active_components = array_merge( $active_components, [ 'core' => $components['core'] ] ); + } + } + + // Inactive components. + $inactive_components = array_diff( array_keys( $components ), array_keys( $active_components ) ); + + $current_components = array(); + switch ( $assoc_args['status'] ) { + case 'all': + $index = 0; + foreach ( $components as $component_key => $component ) { + $index++; + $current_components[] = array( + 'number' => $index, + 'id' => $component_key, + 'status' => $this->verify_component_status( $component_key ), + 'title' => esc_html( $component['title'] ), + 'description' => html_entity_decode( $component['description'] ), + ); + } + break; + + case 'active': + $index = 0; + foreach ( array_keys( $active_components ) as $component_key ) { + $index++; + $current_components[] = array( + 'number' => $index, + 'id' => $component_key, + 'status' => $this->verify_component_status( $component_key ), + 'title' => esc_html( $components[ $component_key ]['title'] ), + 'description' => html_entity_decode( $components[ $component_key ]['description'] ), + ); + } + break; + + case 'inactive': + $index = 0; + foreach ( $inactive_components as $component_key ) { + $index++; + $current_components[] = array( + 'number' => $index, + 'id' => $component_key, + 'status' => $this->verify_component_status( $component_key ), + 'title' => esc_html( $components[ $component_key ]['title'] ), + 'description' => html_entity_decode( $components[ $component_key ]['description'] ), + ); + } + break; + } + + // Bail early. + if ( empty( $current_components ) ) { + WP_CLI::error( 'There is no component available.' ); + } + + $formatter->display_items( $current_components ); + } + + /** + * Does the component exist? + * + * @param string $component_key Component key. + * @return bool + */ + protected function component_exists( $component_key ) { + return in_array( + $component_key, + array_keys( bp_core_get_components() ), + true + ); + } + + /** + * Verify Component Status. + * + * @since 1.7.0 + * + * @param string $component_key Component key. + * @return string + */ + protected function verify_component_status( $component_key ) { + $active = 'active'; + + if ( 'core' === $component_key ) { + return $active; + } + + return bp_is_active( $component_key ) ? $active : 'inactive'; + } +} diff --git a/wp-content/plugins/buddypress/cli/src/email.php b/wp-content/plugins/buddypress/cli/src/email.php new file mode 100644 index 0000000000000000000000000000000000000000..c2cd77d796db9b86f924a10b617181451669f12e --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/email.php @@ -0,0 +1,238 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Emails. + * + * ## EXAMPLES + * + * # Create email post + * $ wp bp email create --type=new-event --type-description="Send an email when a new event is created" --subject="[{{{site.name}}}] A new event was created" --content="<a href='{{{some.custom-token-url}}}'></a>A new event</a> was created" --plain-text-content="A new event was created" + * Success: Email post created for type "new-event". + * + * # Create email post with content from given file + * $ wp bp email create ./email-content.txt --type=new-event --type-description="Send an email when a new event is created" --subject="[{{{site.name}}}] A new event was created" --plain-text-content="A new event was created" + * Success: Email post created for type "new-event". + * + * @since 1.6.0 + */ +class Email extends BuddyPressCommand { + + /** + * Create a new email post connected to an email type. + * + * ## OPTIONS + * + * --type=<type> + * : Email type for the email (should be unique identifier, sanitized like a post slug). + * + * --type-description=<type-description> + * : Email type description. + * + * --subject=<subject> + * : Email subject line. Email tokens allowed. View https://codex.buddypress.org/emails/email-tokens/ for more info. + * + * [--content=<content>] + * : Email content. Email tokens allowed. View https://codex.buddypress.org/emails/email-tokens/ for more info. + * + * [--plain-text-content=<plain-text-content>] + * : Plain-text email content. Email tokens allowed. View https://codex.buddypress.org/emails/email-tokens/ for more info. + * + * [<file>] + * : Read content from <file>. If this value is present, the + * `--content` argument will be ignored. + * + * Passing `-` as the filename will cause post content to + * be read from STDIN. + * + * [--edit] + * : Immediately open system's editor to write or edit email content. + * + * If content is read from a file, from STDIN, or from the `--content` + * argument, that text will be loaded into the editor. + * + * ## EXAMPLES + * + * # Create email post + * $ wp bp email create --type=new-event --type-description="Send an email when a new event is created" --subject="[{{{site.name}}}] A new event was created" --content="<a href='{{{some.custom-token-url}}}'></a>A new event</a> was created" --plain-text-content="A new event was created" + * Success: Email post created for type "new-event". + * + * # Create email post with content from given file + * $ wp bp email create ./email-content.txt --type=new-event --type-description="Send an email when a new event is created" --subject="[{{{site.name}}}] A new event was created" --plain-text-content="A new event was created" + * Success: Email post created for type "new-event". + * + * @alias add + */ + public function create( $args, $assoc_args ) { + $switched = false; + + if ( false === bp_is_root_blog() ) { + $switched = true; + switch_to_blog( bp_get_root_blog_id() ); + } + + $term = term_exists( $assoc_args['type'], bp_get_email_tax_type() ); + + // Term already exists so don't do anything. + if ( 0 !== $term && null !== $term ) { + if ( true === $switched ) { + restore_current_blog(); + } + + WP_CLI::error( sprintf( 'Email type %s already exists.', $assoc_args['type'] ) ); + } + + if ( ! empty( $args[0] ) && \method_exists( $this, 'read_from_file_or_stdin' ) ) { + $assoc_args['content'] = $this->read_from_file_or_stdin( $args[0] ); + } + + if ( \WP_CLI\Utils\get_flag_value( $assoc_args, 'edit' ) ) { + $input = \WP_CLI\Utils\get_flag_value( $assoc_args, 'content', '' ); + $output = $this->_edit( $input, 'WP-CLI: New BP Email Content' ); + + if ( $output ) { + $assoc_args['content'] = $output; + } else { + $assoc_args['content'] = $input; + } + } + + $defaults = array( + 'post_status' => 'publish', + 'post_type' => bp_get_email_post_type(), + ); + + $email = array( + 'post_title' => $assoc_args['subject'], + 'post_content' => $assoc_args['content'], + 'post_excerpt' => ! empty( $assoc_args['plain-text-content'] ) ? $assoc_args['plain-text-content'] : '', + ); + + $id = $assoc_args['type']; + + // Email post content. + $post_id = wp_insert_post( bp_parse_args( $email, $defaults, 'install_email_' . $id ), true ); + + // Save the situation. + if ( ! is_wp_error( $post_id ) ) { + $tt_ids = wp_set_object_terms( $post_id, $id, bp_get_email_tax_type() ); + + // Situation description. + if ( ! is_wp_error( $tt_ids ) && ! empty( $assoc_args['type-description'] ) ) { + $term = get_term_by( 'term_taxonomy_id', (int) $tt_ids[0], bp_get_email_tax_type() ); + wp_update_term( (int) $term->term_id, bp_get_email_tax_type(), array( + 'description' => $assoc_args['type-description'], + ) ); + } + + if ( true === $switched ) { + restore_current_blog(); + } + + WP_CLI::success( sprintf( 'Email post created for type %s.', $assoc_args['type'] ) ); + } else { + if ( true === $switched ) { + restore_current_blog(); + } + + WP_CLI::error( "There was a problem creating the email post for type '{$assoc_args['type']}' - " . $post_id->get_error_message() ); + } + } + + /** + * Get details for a post connected to an email type. + * + * ## OPTIONS + * + * <type> + * : The email type to fetch the post details for. + * + * [--field=<field>] + * : Instead of returning the whole post, returns the value of a single field. + * + * [--fields=<fields>] + * : Limit the output to specific fields. + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - csv + * - json + * - yaml + * --- + * + * ## EXAMPLE + * + * # Output the post ID for the 'activity-at-message' email type + * $ wp bp email get-post activity-at-message --fields=ID + * + * @alias get-post + * @alias see + */ + public function get_post( $args, $assoc_args ) { + $email = bp_get_email( $args[0] ); + + if ( is_wp_error( $email ) ) { + WP_CLI::error( sprintf( 'Email post for type %s does not exist.', $args[0] ) ); + } + + $post_arr = get_object_vars( $email->get_post_object() ); + unset( $post_arr['filter'] ); + if ( empty( $assoc_args['fields'] ) ) { + $assoc_args['fields'] = array_keys( $post_arr ); + } + + $this->get_formatter( $assoc_args )->display_item( $email->get_post_object() ); + } + + /** + * Reinstall BuddyPress default emails. + * + * ## OPTIONS + * + * [--yes] + * : Answer yes to the confirmation message. + * + * ## EXAMPLE + * + * $ wp bp email reinstall --yes + * Success: Emails have been successfully reinstalled. + */ + public function reinstall( $args, $assoc_args ) { + WP_CLI::confirm( 'Are you sure you want to reinstall BuddyPress emails?', $assoc_args ); + + require_once buddypress()->plugin_dir . 'bp-core/admin/bp-core-admin-tools.php'; + + $result = bp_admin_reinstall_emails(); + + if ( 0 === $result[0] ) { + WP_CLI::success( $result[1] ); + } else { + WP_CLI::error( $result[1] ); + } + } + + /** + * Helper method to use the '--edit' flag. + * + * Copied from Post_Command::_edit(). + * + * @param string $content Post content. + * @param string $title Post title. + * @return mixed + */ + protected function _edit( $content, $title ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore + $content = apply_filters( 'the_editor_content', $content ); + $output = \WP_CLI\Utils\launch_editor_for_input( $content, $title ); + + return ( is_string( $output ) ) ? + apply_filters( 'content_save_pre', $output ) + : $output; + } +} diff --git a/wp-content/plugins/buddypress/cli/src/friends.php b/wp-content/plugins/buddypress/cli/src/friends.php new file mode 100644 index 0000000000000000000000000000000000000000..9c9abd32944aa80e99c3acda0dbddc39ec36cc76 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/friends.php @@ -0,0 +1,334 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Friends. + * + * ## EXAMPLES + * + * $ wp bp friend create user1 another_use + * Success: Friendship successfully created. + * + * $ wp bp friend create user1 another_use --force-accept + * Success: Friendship successfully created. + * + * @since 1.6.0 + */ +class Friends extends BuddyPressCommand { + + /** + * Object fields. + * + * @var array + */ + protected $obj_fields = array( + 'id', + 'initiator_user_id', + 'friend_user_id', + 'is_confirmed', + 'is_limited', + ); + + /** + * Dependency check for this CLI command. + */ + public static function check_dependencies() { + parent::check_dependencies(); + + if ( ! bp_is_active( 'friends' ) ) { + WP_CLI::error( 'The Friends component is not active.' ); + } + } + + /** + * Create a new friendship. + * + * ## OPTIONS + * + * <initiator> + * : ID of the user who is sending the friendship request. Accepts either a user_login or a numeric ID. + * + * <friend> + * : ID of the user whose friendship is being requested. Accepts either a user_login or a numeric ID. + * + * [--force-accept] + * : Whether to force acceptance. + * + * [--silent] + * : Whether to silent the message creation. + * + * [--porcelain] + * : Return only the friendship id. + * + * ## EXAMPLES + * + * $ wp bp friend create user1 another_use + * Success: Friendship successfully created. + * + * $ wp bp friend create user1 another_use --force-accept + * Success: Friendship successfully created. + * + * @alias add + */ + public function create( $args, $assoc_args ) { + $initiator = $this->get_user_id_from_identifier( $args[0] ); + $friend = $this->get_user_id_from_identifier( $args[1] ); + + // Silent it before it errors. + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'silent' ) ) { + return; + } + + // Check if users are already friends, and bail if they do. + if ( friends_check_friendship( $initiator->ID, $friend->ID ) ) { + WP_CLI::error( 'These users are already friends.' ); + } + + $force = WP_CLI\Utils\get_flag_value( $assoc_args, 'force-accept' ); + + if ( ! friends_add_friend( $initiator->ID, $friend->ID, $force ) ) { + WP_CLI::error( 'There was a problem while creating the friendship.' ); + } + + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { + WP_CLI::log( \BP_Friends_Friendship::get_friendship_id( $initiator->ID, $friend->ID ) ); + } else { + if ( $force ) { + WP_CLI::success( 'Friendship successfully created.' ); + } else { + WP_CLI::success( 'Friendship successfully created but not accepted.' ); + } + } + } + + /** + * Remove a friendship. + * + * ## OPTIONS + * + * <initiator> + * : ID of the friendship initiator. Accepts either a user_login or a numeric ID. + * + * <friend> + * : ID of the friend user. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLE + * + * $ wp bp friend remove user1 another_user + * Success: Friendship successfully removed. + * + * @alias delete + */ + public function remove( $args ) { + $initiator = $this->get_user_id_from_identifier( $args[0] ); + $friend = $this->get_user_id_from_identifier( $args[1] ); + + // Check if users are already friends, if not, bail. + if ( ! friends_check_friendship( $initiator->ID, $friend->ID ) ) { + WP_CLI::error( 'These users are not friends.' ); + } + + if ( friends_remove_friend( $initiator->ID, $friend->ID ) ) { + WP_CLI::success( 'Friendship successfully removed.' ); + } else { + WP_CLI::error( 'There was a problem while removing the friendship.' ); + } + } + + /** + * Mark a friendship request as accepted. + * + * ## OPTIONS + * + * <friendship>... + * : ID(s) of the friendship(s). + * + * ## EXAMPLES + * + * $ wp bp friend accept-invitation 2161 + * Success: Friendship successfully accepted. + * + * $ wp bp friend accept 2161 + * Success: Friendship successfully accepted. + * + * @alias accept-invitation + */ + public function accept( $args, $assoc_args ) { + parent::_update( $args, $assoc_args, function( $friendship_id ) { + if ( friends_accept_friendship( (int) $friendship_id ) ) { + return array( 'success', 'Friendship successfully accepted.' ); + } else { + return array( 'error', 'There was a problem accepting the friendship.' ); + } + } ); + } + + /** + * Mark a friendship request as rejected. + * + * ## OPTIONS + * + * <friendship>... + * : ID(s) of the friendship(s). + * + * ## EXAMPLES + * + * $ wp bp friend reject-invitation 2161 + * Success: Friendship successfully accepted. + * + * $ wp bp friend reject 2161 151 2121 + * Success: Friendship successfully accepted. + * + * @alias reject-invitation + */ + public function reject( $args, $assoc_args ) { + parent::_update( $args, $assoc_args, function( $friendship_id ) { + if ( friends_reject_friendship( (int) $friendship_id ) ) { + return array( 'success', 'Friendship successfully rejected.' ); + } else { + return array( 'error', 'There was a problem rejecting the friendship.' ); + } + } ); + } + + /** + * Check whether two users are friends. + * + * ## OPTIONS + * + * <user> + * : ID of the first user. Accepts either a user_login or a numeric ID. + * + * <friend> + * : ID of the other user. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLES + * + * $ wp bp friend check 2161 65465 + * Success: Yes, they are friends. + * + * $ wp bp friend see 2121 65456 + * Success: Yes, they are friends. + * + * @alias see + */ + public function check( $args ) { + $user = $this->get_user_id_from_identifier( $args[0] ); + $friend = $this->get_user_id_from_identifier( $args[1] ); + + if ( friends_check_friendship( $user->ID, $friend->ID ) ) { + WP_CLI::success( 'Yes, they are friends.' ); + } else { + WP_CLI::error( 'No, they are not friends.' ); + } + } + + /** + * Get a list of user's friends. + * + * ## OPTIONS + * + * <user> + * : ID of the user. Accepts either a user_login or a numeric ID. + * + * [--fields=<fields>] + * : Fields to display. + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - ids + * - csv + * - count + * - haml + * --- + * + * ## EXAMPLES + * + * $ wp bp friend list 65465 --format=ids + * $ wp bp friend list 2422 --format=count + * + * @subcommand list + */ + public function list_( $args, $assoc_args ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore + $formatter = $this->get_formatter( $assoc_args ); + $user = $this->get_user_id_from_identifier( $args[0] ); + $friends = \BP_Friends_Friendship::get_friendships( $user->ID ); + + if ( empty( $friends ) ) { + WP_CLI::error( 'This member has no friends.' ); + } + + if ( 'ids' === $formatter->format ) { + echo implode( ' ', wp_list_pluck( $friends, 'friend_user_id' ) ); + } elseif ( 'count' === $formatter->format ) { + $formatter->display_items( $friends ); + } else { + $formatter->display_items( $friends ); + } + } + + /** + * Generate random friendships. + * + * ## OPTIONS + * + * [--count=<number>] + * : How many friendships to generate. + * --- + * default: 100 + * --- + * + * [--initiator=<user>] + * : ID of the first user. Accepts either a user_login or a numeric ID. + * + * [--friend=<user>] + * : ID of the second user. Accepts either a user_login or a numeric ID. + * + * [--force-accept] + * : Whether to force acceptance. + * + * ## EXAMPLES + * + * $ wp bp friend generate --count=50 + * $ wp bp friend generate --initiator=121 --count=50 + */ + public function generate( $args, $assoc_args ) { + $notify = WP_CLI\Utils\make_progress_bar( 'Generating friendships', $assoc_args['count'] ); + + for ( $i = 0; $i < $assoc_args['count']; $i++ ) { + + if ( isset( $assoc_args['initiator'] ) ) { + $user = $this->get_user_id_from_identifier( $assoc_args['initiator'] ); + $member = $user->ID; + } else { + $member = $this->get_random_user_id(); + } + + if ( isset( $assoc_args['friend'] ) ) { + $user_2 = $this->get_user_id_from_identifier( $assoc_args['friend'] ); + $friend = $user_2->ID; + } else { + $friend = $this->get_random_user_id(); + } + + $this->create( + array( $member, $friend ), + array( + 'silent', + 'force-accept', + ) + ); + + $notify->tick(); + } + + $notify->finish(); + } +} diff --git a/wp-content/plugins/buddypress/cli/src/group-fetcher.php b/wp-content/plugins/buddypress/cli/src/group-fetcher.php new file mode 100644 index 0000000000000000000000000000000000000000..3ab30f2c58c90c0d497ecbceb22d486f23465004 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/group-fetcher.php @@ -0,0 +1,43 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI\Fetchers\Base; + +/** + * Fetch a BuddyPress group based on one of its attributes. + */ +class Group_Fetcher extends Base { + + /** + * @var string $msg Error message to use when invalid data is provided. + */ + protected $msg = 'Could not find the group with ID %d.'; + + /** + * Get a group ID from its identifier (ID or slug). + * + * @param int|string $arg Group ID or slug. + * @return BP_Groups_Group|bool + */ + public function get( $arg ) { + + // Group ID or slug. + if ( ! is_numeric( $arg ) ) { + $arg = groups_get_id( $arg ); + } + + // Get group object. + $group = groups_get_group( + array( + 'group_id' => $arg, + ) + ); + + if ( empty( $group->id ) ) { + return false; + } + + return $group; + } +} diff --git a/wp-content/plugins/buddypress/cli/src/group-invite.php b/wp-content/plugins/buddypress/cli/src/group-invite.php new file mode 100644 index 0000000000000000000000000000000000000000..a3e329db429a06f4f7e60a40b9b73d9d103a4293 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/group-invite.php @@ -0,0 +1,356 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress group invites. + * + * ## EXAMPLES + * + * $ wp bp group invite add --group-id=40 --user-id=10 --inviter-id=1331 + * Success: Member invited to the group. + * + * $ wp bp group invite create --group-id=40 --user-id=user_slug --inviter-id=804 + * Success: Member invited to the group. + * + * @since 1.5.0 + */ +class Group_Invite extends BuddyPressCommand { + + /** + * Group ID Object Key + * + * @var string + */ + protected $obj_id_key = 'group_id'; + + /** + * Group Object Type + * + * @var string + */ + protected $obj_type = 'group'; + + /** + * Invite a member to a group. + * + * ## OPTIONS + * + * --group-id=<group> + * : Identifier for the group. Accepts either a slug or a numeric ID. + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * --inviter-id=<user> + * : Identifier for the inviter. Accepts either a user_login or a numeric ID. + * + * [--message=<value>] + * : Message to send with the invitation. + * + * [--silent] + * : Whether to silent the invite creation. + * + * ## EXAMPLES + * + * $ wp bp group invite add --group-id=40 --user-id=10 --inviter-id=1331 + * Success: Member invited to the group. + * + * $ wp bp group invite create --group-id=40 --user-id=user_slug --inviter-id=804 + * Success: Member invited to the group. + * + * @alias add + */ + public function create( $args, $assoc_args ) { + $r = wp_parse_args( $assoc_args, array( + 'user-id' => false, + 'group-id' => false, + 'inviter-id' => false, + 'message' => '', + 'date-modified' => bp_core_current_time(), + ) ); + + if ( $r['user-id'] === $r['inviter-id'] ) { + return; + } + + $group_id = $this->get_group_id_from_identifier( $r['group-id'] ); + $user = $this->get_user_id_from_identifier( $r['user-id'] ); + $inviter = $this->get_user_id_from_identifier( $r['inviter-id'] ); + + $invite = groups_invite_user( array( + 'user_id' => $user->ID, + 'group_id' => $group_id, + 'inviter_id' => $inviter->ID, + 'date_modified' => $r['date-modified'], + 'content' => $r['message'], + ) ); + + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'silent' ) ) { + return; + } + + if ( $invite ) { + WP_CLI::success( 'Member invited to the group.' ); + } else { + WP_CLI::error( 'Could not invite the member.' ); + } + } + + /** + * Uninvite a user from a group. + * + * ## OPTIONS + * + * --group-id=<group> + * : Identifier for the group. Accepts either a slug or a numeric ID. + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLES + * + * $ wp bp group invite remove --group-id=3 --user-id=10 + * Success: User uninvited from the group. + * + * $ wp bp group invite uninvite --group-id=foo --user-id=admin + * Success: User uninvited from the group. + * + * @alias uninvite + */ + public function remove( $args, $assoc_args ) { + $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + + if ( groups_uninvite_user( $user->ID, $group_id ) ) { + WP_CLI::success( 'User uninvited from the group.' ); + } else { + WP_CLI::error( 'Could not remove the user.' ); + } + } + + /** + * Get a list of invitations from a group. + * + * ## OPTIONS + * + * --group-id=<group> + * : Identifier for the group. Accepts either a slug or a numeric ID. + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - ids + * - csv + * - count + * - haml + * --- + * + * ## EXAMPLES + * + * $ wp bp group invite list --user-id=30 --group-id=56 + * + * @subcommand list + */ + public function list_( $args, $assoc_args ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore + $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $user_id = $user->ID; + + if ( $group_id ) { + $invite_query = new \BP_Group_Member_Query( array( + 'is_confirmed' => false, + 'group_id' => $group_id, + ) ); + + $invites = $invite_query->results; + + // Manually filter out user ID - this is not supported by the API. + if ( $user_id ) { + $user_invites = array(); + + foreach ( $invites as $invite ) { + if ( $user_id === $invite->user_id ) { + $user_invites[] = $invite; + } + } + + $invites = $user_invites; + } + + if ( empty( $invites ) ) { + WP_CLI::error( 'No invitations found.' ); + } + + if ( empty( $assoc_args['fields'] ) ) { + $fields = array(); + + if ( ! $user_id ) { + $fields[] = 'user_id'; + } + + $fields[] = 'inviter_id'; + $fields[] = 'invite_sent'; + $fields[] = 'date_modified'; + + $assoc_args['fields'] = $fields; + } + + $formatter = $this->get_formatter( $assoc_args ); + $formatter->display_items( $invites ); + } else { + $invite_query = groups_get_invites_for_user( $user_id ); + $invites = $invite_query['groups']; + + if ( empty( $assoc_args['fields'] ) ) { + $fields = array( + 'id', + 'name', + 'slug', + ); + + $assoc_args['fields'] = $fields; + } + + $formatter = $this->get_formatter( $assoc_args ); + $formatter->display_items( $invites ); + } + } + + /** + * Generate random group invitations. + * + * ## OPTIONS + * + * [--count=<number>] + * : How many groups invitations to generate. + * --- + * default: 100 + * --- + * + * ## EXAMPLE + * + * $ wp bp group invite generate --count=50 + */ + public function generate( $args, $assoc_args ) { + $notify = WP_CLI\Utils\make_progress_bar( 'Generating random group invitations', $assoc_args['count'] ); + + for ( $i = 0; $i < $assoc_args['count']; $i++ ) { + + $random_group = \BP_Groups_Group::get_random( 1, 1 ); + $this->create( + array(), + array( + 'user-id' => $this->get_random_user_id(), + 'group-id' => $random_group['groups'][0]->slug, + 'inviter-id' => $this->get_random_user_id(), + 'silent', + ) + ); + + $notify->tick(); + } + + $notify->finish(); + } + + /** + * Accept a group invitation. + * + * ## OPTIONS + * + * --group-id=<group> + * : Identifier for the group. Accepts either a slug or a numeric ID. + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLES + * + * $ wp bp group invite accept --group-id=3 --user-id=10 + * Success: User is now a "member" of the group. + * + * $ wp bp group invite accept --group-id=foo --user-id=admin + * Success: User is now a "member" of the group. + */ + public function accept( $args, $assoc_args ) { + $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + + if ( groups_accept_invite( $user->ID, $group_id ) ) { + WP_CLI::success( 'User is now a "member" of the group.' ); + } else { + WP_CLI::error( 'Could not accept user invitation to the group.' ); + } + } + + /** + * Reject a group invitation. + * + * ## OPTIONS + * + * --group-id=<group> + * : Identifier for the group. Accepts either a slug or a numeric ID. + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLES + * + * $ wp bp group invite reject --group-id=3 --user-id=10 + * Success: Member invitation rejected. + * + * $ wp bp group invite reject --group-id=foo --user-id=admin + * Success: Member invitation rejected. + */ + public function reject( $args, $assoc_args ) { + $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + + if ( groups_reject_invite( $user->ID, $group_id ) ) { + WP_CLI::success( 'Member invitation rejected.' ); + } else { + WP_CLI::error( 'Could not reject member invitation.' ); + } + } + + /** + * Delete a group invitation. + * + * ## OPTIONS + * + * --group-id=<group> + * : Identifier for the group. Accepts either a slug or a numeric ID. + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLES + * + * $ wp bp group invite delete --group-id=3 --user-id=10 + * Success: Member invitation deleted from the group. + * + * $ wp bp group invite delete --group-id=foo --user-id=admin + * Success: Member invitation deleted from the group. + * + * @alias remove + */ + public function delete( $args, $assoc_args ) { + $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + + if ( groups_delete_invite( $user->ID, $group_id ) ) { + WP_CLI::success( 'Member invitation deleted from the group.' ); + } else { + WP_CLI::error( 'Could not delete member invitation from the group.' ); + } + } +} diff --git a/wp-content/plugins/buddypress/cli/src/group-member.php b/wp-content/plugins/buddypress/cli/src/group-member.php new file mode 100644 index 0000000000000000000000000000000000000000..aa031c519b8e7b26a61c31864a549f099bfb3e0b --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/group-member.php @@ -0,0 +1,352 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress group members. + * + * ## EXAMPLES + * + * $ wp bp group member add --group-id=3 --user-id=10 + * Success: Added user #3 to group #3 as member. + * + * $ wp bp group member create --group-id=bar --user-id=20 --role=mod + * Success: Added user #20 to group #45 as mod. + * + * @since 1.5.0 + */ +class Group_Member extends BuddyPressCommand { + + /** + * Group ID Object Key + * + * @var string + */ + protected $obj_id_key = 'group_id'; + + /** + * Group Object Type + * + * @var string + */ + protected $obj_type = 'group'; + + /** + * Add a member to a group. + * + * ## OPTIONS + * + * --group-id=<group> + * : Identifier for the group. Accepts either a slug or a numeric ID. + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * [--role=<role>] + * : Group member role (member, mod, admin). + * --- + * default: member + * options: + * - member + * - mod + * - admin + * --- + * + * [--porcelain] + * : Return only the added group member id. + * + * ## EXAMPLES + * + * $ wp bp group member add --group-id=3 --user-id=10 + * Success: Added user #3 to group #3 as member. + * + * $ wp bp group member create --group-id=bar --user-id=20 --role=mod + * Success: Added user #20 to group #45 as mod. + * + * @alias add + */ + public function create( $args, $assoc_args ) { + $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $role = $assoc_args['role']; + $joined = groups_join_group( $group_id, $user->ID ); + + if ( ! $joined ) { + WP_CLI::error( 'Could not add user to the group.' ); + } + + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { + WP_CLI::log( $user->ID ); + } else { + if ( 'member' !== $role ) { + groups_promote_member( $user->ID, $group_id, $role ); + } + + WP_CLI::success( + sprintf( + 'Added user #%d to group #%d as %s.', + $user->ID, + $group_id, + $role + ) + ); + } + } + + /** + * Remove a member from a group. + * + * ## OPTIONS + * + * --group-id=<group> + * : Identifier for the group. Accepts either a slug or a numeric ID. + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLES + * + * $ wp bp group member remove --group-id=3 --user-id=10 + * Success: Member #10 removed from the group #3. + * + * $ wp bp group member delete --group-id=foo --user-id=admin + * Success: Member #545 removed from the group #12. + * + * @alias delete + */ + public function remove( $args, $assoc_args ) { + $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $member = new \BP_Groups_Member( $user->ID, $group_id ); + + // True on success. + if ( $member->remove() ) { + WP_CLI::success( sprintf( 'Member #%d removed from the group #%d.', $user->ID, $group_id ) ); + } else { + WP_CLI::error( 'Could not remove member from the group.' ); + } + } + + /** + * Get a list of group memberships. + * + * This command can be used to fetch a list of a user's groups (using the --user-id + * parameter) or a group's members (using the --group-id flag). + * + * ## OPTIONS + * + * <group-id> + * : Identifier for the group. Can be a numeric ID or the group slug. + * + * [--fields=<fields>] + * : Limit the output to specific signup fields. + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - csv + * - ids + * - json + * - count + * - yaml + * --- + * + * [--<field>=<value>] + * : One or more parameters to pass. See groups_get_group_members() + * + * ## EXAMPLES + * + * $ wp bp group member list 3 + * $ wp bp group member list my-group + * + * @subcommand list + */ + public function list_( $args, $assoc_args ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore + $group_id = $this->get_group_id_from_identifier( $args[0] ); + + $roles = array( 'members' ); + if ( isset( $assoc_args['role'] ) ) { + if ( is_string( $assoc_args['role'] ) ) { + $roles = explode( ',', $assoc_args['role'] ); + } else { + $roles = $assoc_args['role']; + } + } + + // Get our members. + $members_query = groups_get_group_members( + array( + 'group_id' => $group_id, + 'exclude_admins_mods' => false, + 'group_role' => $roles, + ) + ); + + $members = $members_query['members']; + + // Make 'role' human-readable. + foreach ( $members as &$member ) { + $role = 'member'; + if ( $member->is_mod ) { + $role = 'mod'; + } elseif ( $member->is_admin ) { + $role = 'admin'; + } + + $member->role = $role; + } + + if ( empty( $members ) ) { + WP_CLI::error( 'No group members found.' ); + } + + if ( empty( $assoc_args['fields'] ) ) { + $assoc_args['fields'] = array( + 'user_id', + 'user_login', + 'fullname', + 'date_modified', + 'role', + ); + } + + $this->get_formatter( $assoc_args )->display_items( $members ); + } + + /** + * Promote a member to a new status within a group. + * + * ## OPTIONS + * + * --group-id=<group> + * : Identifier for the group. Accepts either a slug or a numeric ID. + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * --role=<role> + * : Group role to promote the member. + * --- + * options: + * - mod + * - admin + * --- + * + * ## EXAMPLES + * + * $ wp bp group member promote --group-id=3 --user-id=10 --role=admin + * Success: Member promoted to new role successfully. + * + * $ wp bp group member promote --group-id=foo --user-id=admin --role=mod + * Success: Member promoted to new role successfully. + */ + public function promote( $args, $assoc_args ) { + $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $member = new \BP_Groups_Member( $user->ID, $group_id ); + + if ( $member->promote( $assoc_args['role'] ) ) { + WP_CLI::success( 'Member promoted to new role successfully.' ); + } else { + WP_CLI::error( 'Could not promote the member.' ); + } + } + + /** + * Demote user to the 'member' status. + * + * ## OPTIONS + * + * --group-id=<group> + * : Identifier for the group. Accepts either a slug or a numeric ID. + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLES + * + * $ wp bp group member demote --group-id=3 --user-id=10 + * Success: User demoted to the "member" status. + * + * $ wp bp group member demote --group-id=foo --user-id=admin + * Success: User demoted to the "member" status. + */ + public function demote( $args, $assoc_args ) { + $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $member = new \BP_Groups_Member( $user->ID, $group_id ); + + if ( $member->demote() ) { + WP_CLI::success( 'User demoted to the "member" status.' ); + } else { + WP_CLI::error( 'Could not demote the member.' ); + } + } + + /** + * Ban a member from a group. + * + * ## OPTIONS + * + * --group-id=<group> + * : Identifier for the group. Accepts either a slug or a numeric ID. + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLES + * + * $ wp bp group member ban --group-id=3 --user-id=10 + * Success: Member banned from the group. + * + * $ wp bp group member ban --group-id=foo --user-id=admin + * Success: Member banned from the group. + */ + public function ban( $args, $assoc_args ) { + $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $member = new \BP_Groups_Member( $user->ID, $group_id ); + + if ( $member->ban() ) { + WP_CLI::success( 'Member banned from the group.' ); + } else { + WP_CLI::error( 'Could not ban the member.' ); + } + } + + /** + * Unban a member from a group. + * + * ## OPTIONS + * + * --group-id=<group> + * : Identifier for the group. Accepts either a slug or a numeric ID. + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLES + * + * $ wp bp group member unban --group-id=3 --user-id=10 + * Success: Member unbanned from the group. + * + * $ wp bp group member unban --group-id=foo --user-id=admin + * Success: Member unbanned from the group. + */ + public function unban( $args, $assoc_args ) { + $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $member = new \BP_Groups_Member( $user->ID, $group_id ); + + if ( $member->unban() ) { + WP_CLI::success( 'Member unbanned from the group.' ); + } else { + WP_CLI::error( 'Could not unban the member.' ); + } + } +} diff --git a/wp-content/plugins/buddypress/cli/src/group-meta.php b/wp-content/plugins/buddypress/cli/src/group-meta.php new file mode 100644 index 0000000000000000000000000000000000000000..2c89aed22dbc76c5c6260b29da5088b1765d6897 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/group-meta.php @@ -0,0 +1,119 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI\CommandWithMeta; + +/** + * Adds, updates, deletes, and lists group custom fields. + * + * ## EXAMPLES + * + * # Set group meta + * $ wp bp group meta set 123 description "Mary is a Group user." + * Success: Updated custom field 'description'. + * + * # Get group meta + * $ wp bp group meta get 123 description + * Mary is a Group user. + * + * # Update group meta + * $ wp bp group meta update 123 description "Mary is an awesome Group user." + * Success: Updated custom field 'description'. + * + * # Delete group meta + * $ wp bp group meta delete 123 description + * Success: Deleted custom field. + * + * @since 2.0.0 + */ +class Group_Meta extends CommandWithMeta { + protected $meta_type = 'group'; + + /** + * Wrapper method for add_metadata that can be overridden in sub classes. + * + * @param int $object_id ID of the object the metadata is for. + * @param string $meta_key Metadata key to use. + * @param mixed $meta_value Metadata value. Must be serializable if + * non-scalar. + * @param bool $unique Optional, default is false. Whether the + * specified metadata key should be unique for the + * object. If true, and the object already has a + * value for the specified metadata key, no change + * will be made. + * + * @return int|false The meta ID on success, false on failure. + */ + protected function add_metadata( $object_id, $meta_key, $meta_value, $unique = false ) { + return groups_add_groupmeta( $object_id, $meta_key, $meta_value ); + } + + /** + * Wrapper method for update_metadata that can be overridden in sub classes. + * + * @param int $object_id ID of the object the metadata is for. + * @param string $meta_key Metadata key to use. + * @param mixed $meta_value Metadata value. Must be serializable if + * non-scalar. + * @param mixed $prev_value Optional. If specified, only update existing + * metadata entries with the specified value. + * Otherwise, update all entries. + * + * @return int|bool Meta ID if the key didn't exist, true on successful + * update, false on failure. + */ + protected function update_metadata( $object_id, $meta_key, $meta_value, $prev_value = '' ) { + return groups_update_groupmeta( $object_id, $meta_key, $meta_value, $prev_value ); + } + + /** + * Wrapper method for get_metadata that can be overridden in sub classes. + * + * @param int $object_id ID of the object the metadata is for. + * @param string $meta_key Optional. Metadata key. If not specified, + * retrieve all metadata for the specified object. + * @param bool $single Optional, default is false. If true, return only + * the first value of the specified meta_key. This + * parameter has no effect if meta_key is not + * specified. + * + * @return mixed Single metadata value, or array of values. + */ + protected function get_metadata( $object_id, $meta_key = '', $single = true ) { + return groups_get_groupmeta( $object_id, $meta_key, $single ); + } + + /** + * Wrapper method for delete_metadata that can be overridden in sub classes. + * + * @param int $object_id ID of the object metadata is for + * @param string $meta_key Metadata key + * @param mixed $meta_value Optional. Metadata value. Must be serializable + * if non-scalar. If specified, only delete + * metadata entries with this value. Otherwise, + * delete all entries with the specified meta_key. + * Pass `null, `false`, or an empty string to skip + * this check. For backward compatibility, it is + * not possible to pass an empty string to delete + * those entries with an empty string for a value. + * + * @return bool True on successful delete, false on failure. + */ + protected function delete_metadata( $object_id, $meta_key, $meta_value = '' ) { + return groups_delete_groupmeta( $object_id, $meta_key, $meta_value ); + } + + /** + * Check that the group ID exists. + * + * @param int $object_id Object ID. + * @return int + */ + protected function check_object_id( $object_id ) { + $fetcher = new Group_Fetcher(); + $group = $fetcher->get_check( $object_id ); + + return $group->id; + } +} diff --git a/wp-content/plugins/buddypress/cli/src/group.php b/wp-content/plugins/buddypress/cli/src/group.php new file mode 100644 index 0000000000000000000000000000000000000000..0c2226a3693bee09a0206f34a6135076f4aa721d --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/group.php @@ -0,0 +1,446 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Groups. + * + * ## EXAMPLES + * + * $ wp bp group create --name="Totally Cool Group" + * Success: Group (ID 5465) created: http://example.com/groups/totally-cool-group/ + * + * $ wp bp group create --name="Another Cool Group" --description="Cool Group" --creator-id=54 --status=private + * Success: Group (ID 6454)6 created: http://example.com/groups/another-cool-group/ + * + * @since 1.5.0 + */ +class Group extends BuddyPressCommand { + + /** + * Object fields. + * + * @var array + */ + protected $obj_fields = array( + 'id', + 'name', + 'slug', + 'status', + 'date_created', + ); + + /** + * Dependency check for this CLI command. + */ + public static function check_dependencies() { + parent::check_dependencies(); + + if ( ! bp_is_active( 'groups' ) ) { + WP_CLI::error( 'The Groups component is not active.' ); + } + } + + /** + * Group ID Object Key + * + * @var string + */ + protected $obj_id_key = 'group_id'; + + /** + * Group Object Type + * + * @var string + */ + protected $obj_type = 'group'; + + /** + * Create a group. + * + * ## OPTIONS + * + * --name=<name> + * : Name of the group. + * + * [--slug=<slug>] + * : URL-safe slug for the group. If not provided, one will be generated automatically. + * + * [--description=<description>] + * : Group description. + * + * [--creator-id=<creator-id>] + * : ID of the group creator. + * --- + * default: 1 + * --- + * + * [--slug=<slug>] + * : URL-safe slug for the group. + * + * [--status=<status>] + * : Group status (public, private, hidden). + * --- + * default: public + * options: + * - public + * - private + * - hidden + * --- + * + * [--enable-forum=<enable-forum>] + * : Whether to enable legacy bbPress forums. + * + * [--date-created=<date-created>] + * : MySQL-formatted date. + * + * [--silent] + * : Whether to silent the group creation. + * + * [--porcelain] + * : Return only the new group id. + * + * ## EXAMPLES + * + * $ wp bp group create --name="Totally Cool Group" + * Success: Group (ID 5465) created: http://example.com/groups/totally-cool-group/ + * + * $ wp bp group create --name="Another Cool Group" --description="Cool Group" --creator-id=54 --status=private + * Success: Group (ID 6454)6 created: http://example.com/groups/another-cool-group/ + * + * @alias add + */ + public function create( $args, $assoc_args ) { + $r = wp_parse_args( + $assoc_args, + array( + 'name' => '', + 'slug' => '', + 'description' => '', + 'creator-id' => 1, + 'enable-forum' => 0, + 'date-created' => bp_core_current_time(), + ) + ); + + // Auto-generate some stuff. + if ( empty( $r['slug'] ) ) { + $r['slug'] = groups_check_slug( sanitize_title( $r['name'] ) ); + } + + if ( empty( $r['description'] ) ) { + $r['description'] = sprintf( 'Description for group "%s"', $r['name'] ); + } + + $group_id = groups_create_group( + array( + 'name' => $r['name'], + 'slug' => $r['slug'], + 'description' => $r['description'], + 'creator_id' => $r['creator-id'], + 'status' => $r['status'], + 'enable_forum' => $r['enable-forum'], + 'date_created' => $r['date-created'], + ) + ); + + // Silent it before it errors. + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'silent' ) ) { + return; + } + + if ( ! is_numeric( $group_id ) ) { + WP_CLI::error( 'Could not create group.' ); + } + + groups_update_groupmeta( $group_id, 'total_member_count', 1 ); + + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { + WP_CLI::log( $group_id ); + } else { + $group = groups_get_group( array( + 'group_id' => $group_id, + ) ); + $permalink = bp_get_group_permalink( $group ); + WP_CLI::success( sprintf( 'Group (ID %d) created: %s', $group_id, $permalink ) ); + } + } + + /** + * Generate random groups. + * + * ## OPTIONS + * + * [--count=<number>] + * : How many groups to generate. + * --- + * default: 100 + * --- + * + * [--status=<status>] + * : The status of the generated groups. (public, private, hidden, or mixed). + * --- + * default: mixed + * options: + * - public + * - private + * - hidden + * - mixed + * --- + * + * [--creator-id=<creator-id>] + * : ID of the group creator. + * --- + * default: 1 + * --- + * + * [--enable-forum=<enable-forum>] + * : Whether to enable legacy bbPress forums. + * --- + * default: 0 + * --- + * + * ## EXAMPLES + * + * $ wp bp group generate --count=50 + * $ wp bp group generate --count=5 --status=mixed + * $ wp bp group generate --count=10 --status=hidden --creator-id=30 + */ + public function generate( $args, $assoc_args ) { + $notify = WP_CLI\Utils\make_progress_bar( 'Generating groups', $assoc_args['count'] ); + + for ( $i = 0; $i < $assoc_args['count']; $i++ ) { + $this->create( + array(), + array( + 'name' => sprintf( 'Group - #%d', $i ), + 'creator-id' => $assoc_args['creator-id'], + 'status' => $this->random_group_status( $assoc_args['status'] ), + 'enable-forum' => $assoc_args['enable-forum'], + 'silent', + ) + ); + + $notify->tick(); + } + + $notify->finish(); + } + + /** + * Get a group. + * + * ## OPTIONS + * + * <group-id> + * : Identifier for the group. Can be a numeric ID or the group slug. + * + * [--fields=<fields>] + * : Limit the output to specific fields. + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - json + * - haml + * --- + * + * ## EXAMPLES + * + * $ wp bp group get 500 + * $ wp bp group get group-slug + * + * @alias see + */ + public function get( $args, $assoc_args ) { + $group_id = $this->get_group_id_from_identifier( $args[0] ); + $group = groups_get_group( $group_id ); + $group_arr = get_object_vars( $group ); + $group_arr['url'] = bp_get_group_permalink( $group ); + + if ( empty( $assoc_args['fields'] ) ) { + $assoc_args['fields'] = array_keys( $group_arr ); + } + + $this->get_formatter( $assoc_args )->display_item( $group_arr ); + } + + /** + * Delete a group. + * + * ## OPTIONS + * + * <group-id>... + * : ID or IDs of group(s) to delete. Can be a numeric ID or the group slug. + * + * [--yes] + * : Answer yes to the confirmation message. + * + * ## EXAMPLES + * + * $ wp bp group delete 500 + * Success: Group successfully deleted. + * + * $ wp bp group delete group-slug --yes + * Success: Group successfully deleted. + */ + public function delete( $args, $assoc_args ) { + WP_CLI::confirm( 'Are you sure you want to delete this group and its metadata?', $assoc_args ); + + parent::_delete( $args, $assoc_args, function( $group_id ) { + if ( groups_delete_group( $group_id ) ) { + return array( 'success', 'Group successfully deleted.' ); + } else { + return array( 'error', 'Could not delete the group.' ); + } + } ); + } + + /** + * Update a group. + * + * ## OPTIONS + * + * <group-id>... + * : Identifier(s) for the group(s). Can be a numeric ID or the group slug. + * + * [--<field>=<value>] + * : One or more fields to update. See groups_create_group() + * + * ## EXAMPLE + * + * $ wp bp group update 35 --description="What a cool group!" --name="Group of Cool People" + */ + public function update( $args, $assoc_args ) { + parent::_update( $args, $assoc_args, function( $group_id, $fields = array() ) { + $fields['group_id'] = $group_id; + + if ( groups_create_group( $fields ) ) { + return array( 'success', 'Group updated.' ); + } else { + return array( 'error', 'Group could not be updated.' ); + } + } ); + } + + /** + * Get a list of groups. + * + * ## OPTIONS + * + * [--<field>=<value>] + * : One or more parameters to pass. See groups_get_groups() + * + * [--fields=<fields>] + * : Fields to display. + * + * [--user-id=<user>] + * : Limit results to groups of which a specific user is a member. Accepts either a user_login or a numeric ID. + * + * [--orderby=<orderby>] + * : Sort order for results. + * --- + * default: name + * options: + * - name + * - date_created + * - last_activity + * - total_member_count + * + * [--order=<order>] + * : Whether to sort results ascending or descending. + * --- + * default: ASC + * options: + * - ASC + * - DESC + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - ids + * - csv + * - count + * - haml + * --- + * + * [--count=<number>] + * : Number of group items to list. + * --- + * default: 50 + * --- + + * ## EXAMPLES + * + * $ wp bp group list --format=ids + * $ wp bp group list --format=count + * $ wp bp group list --user-id=123 + * $ wp bp group list --user-id=user_login --format=ids + * + * @subcommand list + */ + public function list_( $args, $assoc_args ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore + $formatter = $this->get_formatter( $assoc_args ); + $query_args = wp_parse_args( + $assoc_args, + array( + 'count' => 50, + 'show_hidden' => true, + 'orderby' => $assoc_args['orderby'], + 'order' => $assoc_args['order'], + 'per_page' => $assoc_args['count'], + ) + ); + + if ( isset( $assoc_args['user-id'] ) ) { + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $query_args['user_id'] = $user->ID; + } + + $query_args = self::process_csv_arguments_to_arrays( $query_args ); + + // If count or ids, no need for group objects. + if ( in_array( $formatter->format, array( 'ids', 'count' ), true ) ) { + $query_args['fields'] = 'ids'; + } + + $groups = groups_get_groups( $query_args ); + if ( empty( $groups['groups'] ) ) { + WP_CLI::error( 'No groups found.' ); + } + + if ( 'ids' === $formatter->format ) { + echo implode( ' ', $groups['groups'] ); + } elseif ( 'count' === $formatter->format ) { + $formatter->display_items( $groups['total'] ); + } else { + $formatter->display_items( $groups['groups'] ); + } + } + + /** + * Gets a randon group status. + * + * @since 1.5.0 + * + * @param string $status Group status. + * @return string + */ + protected function random_group_status( $status ) { + $core_status = array( 'public', 'private', 'hidden' ); + + if ( 'mixed' === $status ) { + $status = $core_status[ array_rand( $core_status ) ]; + } + + return $status; + } +} diff --git a/wp-content/plugins/buddypress/cli/src/member.php b/wp-content/plugins/buddypress/cli/src/member.php new file mode 100644 index 0000000000000000000000000000000000000000..e42ef434bab8a066847b34ab5827a402d2c7b58d --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/member.php @@ -0,0 +1,53 @@ +<?php + +namespace Buddypress\CLI\Command; + +/** + * Manage BuddyPress Members + * + * ## EXAMPLES + * + * $ wp bp member generate + * $ wp bp member generate --count=50 + * + * @since 1.0.0 + */ +class Member extends BuddyPressCommand { + + /** + * Generate BuddyPress members. See documentation for `wp_user_generate`. + * + * ## OPTIONS + * + * [--count=<number>] + * : How many members to generate. + * --- + * default: 100 + * --- + * + * ## EXAMPLES + * + * $ wp bp member generate + * $ wp bp member generate --count=50 + */ + public function generate( $args, $assoc_args ) { + add_action( 'user_register', array( __CLASS__, 'update_user_last_activity_random' ) ); + + $command_class = new \User_Command(); + $command_class->generate( $args, $assoc_args ); + } + + /** + * Update the last user activity with a random date. + * + * @since 1.0 + * + * @param int $user_id User ID. + */ + public static function update_user_last_activity_random( $user_id ) { + bp_update_user_last_activity( + $user_id, + gmdate( 'Y-m-d H:i:s', wp_rand( 0, time() ) ) + ); + } +} diff --git a/wp-content/plugins/buddypress/cli/src/messages.php b/wp-content/plugins/buddypress/cli/src/messages.php new file mode 100644 index 0000000000000000000000000000000000000000..5944c6298a1adcea23a043e7bcd0142273a559a1 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/messages.php @@ -0,0 +1,556 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Messages. + * + * ## EXAMPLES + * + * $ wp bp message create --from=user1 --to=user2 --subject="Message Title" --content="We are ready" + * Success: Message successfully created. + * + * $ wp bp message delete-thread 564 5465465 456456 --user-id=user_logon --yes + * Success: Thread successfully deleted. + * + * @since 1.6.0 + */ +class Messages extends BuddyPressCommand { + + /** + * Dependency check for this CLI command. + */ + public static function check_dependencies() { + parent::check_dependencies(); + + if ( ! bp_is_active( 'messages' ) ) { + WP_CLI::error( 'The Message component is not active.' ); + } + } + + /** + * Object fields. + * + * @var array + */ + protected $obj_fields = array( + 'id', + 'subject', + 'message', + 'thread_id', + 'sender_id', + 'date_sent', + ); + + /** + * Add a message. + * + * ## OPTIONS + * + * --from=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * [--to=<user>] + * : Identifier for the recipient. To is not required when thread id is set. + * Accepts either a user_login or a numeric ID. + * + * --subject=<subject> + * : Subject of the message. + * + * --content=<content> + * : Content of the message. + * + * [--thread-id=<thread-id>] + * : Thread ID. + * + * [--date-sent=<date-sent>] + * : MySQL-formatted date. + * + * [--silent] + * : Whether to silent the message creation. + * + * [--porcelain] + * : Return the thread id of the message. + * + * ## EXAMPLES + * + * $ wp bp message create --from=user1 --to=user2 --subject="Message Title" --content="We are ready" + * Success: Message successfully created. + * + * $ wp bp message create --from=545 --to=313 --subject="Another Message Title" --content="Message OK" + * Success: Message successfully created. + * + * @alias add + */ + public function create( $args, $assoc_args ) { + $r = wp_parse_args( + $assoc_args, + array( + 'to' => '', + 'thread-id' => false, + 'date-sent' => bp_core_current_time(), + ) + ); + + $user = $this->get_user_id_from_identifier( $assoc_args['from'] ); + + // To is not required when thread id is set. + if ( ! empty( $r['to'] ) ) { + $recipient = $this->get_user_id_from_identifier( $r['to'] ); + } + + // Existing thread recipients will be assumed. + $recipient = ( ! empty( $r['thread-id'] ) ) ? array() : array( $recipient->ID ); + + $thread_id = messages_new_message( + array( + 'sender_id' => $user->ID, + 'thread_id' => $r['thread-id'], + 'recipients' => $recipient, + 'subject' => $assoc_args['subject'], + 'content' => $assoc_args['content'], + 'date_sent' => $r['date-sent'], + ) + ); + + // Silent it before it errors. + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'silent' ) ) { + return; + } + + if ( ! is_numeric( $thread_id ) ) { + WP_CLI::error( 'Could not add a message.' ); + } + + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { + WP_CLI::log( $thread_id ); + } else { + WP_CLI::success( 'Message successfully created.' ); + } + } + + /** + * Delete thread(s) for a given user. + * + * ## OPTIONS + * + * <thread-id>... + * : Thread ID(s). + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * [--yes] + * : Answer yes to the confirmation message. + * + * ## EXAMPLES + * + * $ wp bp message delete-thread 500 687867 --user-id=40 + * Success: Thread successfully deleted. + * + * $ wp bp message delete-thread 564 5465465 456456 --user-id=user_logon --yes + * Success: Thread successfully deleted. + * + * @alias delete-thread + * @alias remove-thread + */ + public function delete_thread( $args, $assoc_args ) { + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + + WP_CLI::confirm( 'Are you sure you want to delete this thread(s)?', $assoc_args ); + + parent::_delete( $args, $assoc_args, function( $thread_id ) use ( $user ) { + if ( messages_delete_thread( $thread_id, $user->ID ) ) { + return array( 'success', 'Thread successfully deleted.' ); + } else { + return array( 'error', 'Could not delete the thread.' ); + } + }); + } + + /** + * Get a message. + * + * ## OPTIONS + * + * <message-id> + * : Identifier for the message. + * + * [--fields=<fields>] + * : Limit the output to specific fields. + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - json + * - haml + * --- + * + * ## EXAMPLES + * + * $ wp bp message get 5465 + * $ wp bp message see 5454 + * + * @alias see + */ + public function get( $args, $assoc_args ) { + $message = new \BP_Messages_Message( $args[0] ); + $message_arr = get_object_vars( $message ); + + if ( empty( $assoc_args['fields'] ) ) { + $assoc_args['fields'] = array_keys( $message_arr ); + } + + $this->get_formatter( $assoc_args )->display_item( $message_arr ); + } + + /** + * Get a list of messages for a specific user. + * + * ## OPTIONS + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * [--<field>=<value>] + * : One or more parameters to pass. See \BP_Messages_Box_Template() + * + * [--fields=<fields>] + * : Fields to display. + * + * [--count=<number>] + * : How many messages to list. + * --- + * default: 10 + * --- + * + * [--box=<box>] + * : Box of the message. + * --- + * default: sentbox + * options: + * - sentbox + * - inbox + * - notices + * --- + * + * [--type=<type>] + * : Type of the message. + * --- + * default: all + * options: + * - unread + * - read + * - all + * --- + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - ids + * - count + * - csv + * - json + * - haml + * --- + * + * ## EXAMPLES + * + * $ wp bp message list --user-id=544 --format=count + * 10 + * + * $ wp bp message list --user-id=user_login --count=3 --format=ids + * 5454 45454 4545 465465 + * + * @subcommand list + */ + public function list_( $args, $assoc_args ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore + $formatter = $this->get_formatter( $assoc_args ); + + $r = wp_parse_args( + $assoc_args, + array( + 'search' => '', + ) + ); + + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + + $inbox = new \BP_Messages_Box_Template( + array( + 'user_id' => $user->ID, + 'box' => $r['box'], + 'type' => $r['type'], + 'max' => $r['count'], + 'search_terms' => $r['search'], + ) + ); + + if ( ! $inbox->has_threads() ) { + WP_CLI::error( 'No messages found.' ); + } + + $messages = $inbox->threads[0]->messages; + + if ( 'ids' === $formatter->format ) { + echo implode( ' ', wp_list_pluck( $messages, 'id' ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } else { + $formatter->display_items( $messages ); + } + } + + /** + * Generate random messages. + * + * ## OPTIONS + * + * [--thread-id=<thread-id>] + * : Thread ID to generate messages against. + * --- + * default: 0 + * --- + * + * [--count=<number>] + * : How many messages to generate. + * --- + * default: 20 + * --- + * + * ## EXAMPLES + * + * $ wp bp message generate --thread-id=6465 --count=10 + * $ wp bp message generate --count=100 + */ + public function generate( $args, $assoc_args ) { + $notify = WP_CLI\Utils\make_progress_bar( 'Generating messages', $assoc_args['count'] ); + + for ( $i = 0; $i < $assoc_args['count']; $i++ ) { + $this->create( + array(), + array( + 'from' => $this->get_random_user_id(), + 'to' => $this->get_random_user_id(), + 'subject' => sprintf( 'Message Subject - #%d', $i ), + 'thread-id' => $assoc_args['thread-id'], + 'silent', + ) + ); + + $notify->tick(); + } + + $notify->finish(); + } + + /** + * Star a message. + * + * ## OPTIONS + * + * <message-id> + * : Message ID to star. + * + * --user-id=<user> + * : User that is starring the message. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLE + * + * $ wp bp message star 3543 --user-id=user_login + * Success: Message was successfully starred. + */ + public function star( $args, $assoc_args ) { + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $user_id = $user->ID; + $msg_id = (int) $args[0]; + + if ( bp_messages_is_message_starred( $msg_id, $user_id ) ) { + WP_CLI::error( 'The message is already starred.' ); + } + + $star_args = array( + 'action' => 'star', + 'message_id' => $msg_id, + 'user_id' => $user_id, + ); + + if ( bp_messages_star_set_action( $star_args ) ) { + WP_CLI::success( 'Message was successfully starred.' ); + } else { + WP_CLI::error( 'Message was not starred.' ); + } + } + + /** + * Unstar a message. + * + * ## OPTIONS + * + * <message-id> + * : Message ID to unstar. + * + * --user-id=<user> + * : User that is unstarring the message. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLE + * + * $ wp bp message unstar 212 --user-id=another_user_login + * Success: Message was successfully unstarred. + */ + public function unstar( $args, $assoc_args ) { + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $user_id = $user->ID; + $msg_id = (int) $args[0]; + + // Check if the message is starred first. + if ( ! bp_messages_is_message_starred( $msg_id, $user_id ) ) { + WP_CLI::error( 'You need to star a message first before unstarring it.' ); + } + + $star_args = array( + 'action' => 'unstar', + 'message_id' => $msg_id, + 'user_id' => $user_id, + ); + + if ( bp_messages_star_set_action( $star_args ) ) { + WP_CLI::success( 'Message was successfully unstarred.' ); + } else { + WP_CLI::error( 'Message was not unstarred.' ); + } + } + + /** + * Star a thread. + * + * ## OPTIONS + * + * <thread-id> + * : Thread ID to star. + * + * --user-id=<user> + * : User that is starring the thread. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLE + * + * $ wp bp message star-thread 212 --user-id=another_user_login + * Success: Thread was successfully starred. + * + * @alias star-thread + */ + public function star_thread( $args, $assoc_args ) { + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $thread_id = (int) $args[0]; + + // Check if it is a valid thread. + if ( ! messages_is_valid_thread( $thread_id ) ) { + WP_CLI::error( 'This is not a valid thread ID.' ); + } + + // Check if the user has access to this thread. + $id = messages_check_thread_access( $thread_id, $user->ID ); + if ( ! is_numeric( $id ) ) { + WP_CLI::error( 'User has no access to this thread.' ); + } + + $star_args = array( + 'action' => 'star', + 'thread_id' => $thread_id, + 'user_id' => $user->ID, + 'bulk' => true, + ); + + if ( bp_messages_star_set_action( $star_args ) ) { + WP_CLI::success( 'Thread was successfully starred.' ); + } else { + WP_CLI::error( 'Something wrong while trying to star the thread.' ); + } + } + + /** + * Unstar a thread. + * + * ## OPTIONS + * + * <thread-id> + * : Thread ID to unstar. + * + * --user-id=<user> + * : User that is unstarring the thread. Accepts either a user_login or a numeric ID. + * + * ## EXAMPLE + * + * $ wp bp message unstar-thread 212 --user-id=another_user_login + * Success: Thread was successfully unstarred. + * + * @alias unstar-thread + */ + public function unstar_thread( $args, $assoc_args ) { + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $thread_id = (int) $args[0]; + + // Check if it is a valid thread. + if ( ! messages_is_valid_thread( $thread_id ) ) { + WP_CLI::error( 'This is not a valid thread ID.' ); + } + + // Check if the user has access to this thread. + $id = messages_check_thread_access( $thread_id, $user->ID ); + if ( ! is_numeric( $id ) ) { + WP_CLI::error( 'User has no access to this thread.' ); + } + + $star_args = array( + 'action' => 'unstar', + 'thread_id' => $thread_id, + 'user_id' => $user->ID, + 'bulk' => true, + ); + + if ( bp_messages_star_set_action( $star_args ) ) { + WP_CLI::success( 'Thread was successfully unstarred.' ); + } else { + WP_CLI::error( 'Something wrong while trying to unstar the thread.' ); + } + } + + /** + * Send a notice. + * + * ## OPTIONS + * + * --subject=<subject> + * : Subject of the notice/message. + * + * --content=<content> + * : Content of the notice. + * + * ## EXAMPLE + * + * $ wp bp message send-notice --subject="Important notice" --content="We need to improve" + * Success: Notice was successfully sent. + * + * @alias send-notice + */ + public function send_notice( $args, $assoc_args ) { + $notice = new \BP_Messages_Notice(); + $notice->subject = $assoc_args['subject']; + $notice->message = $assoc_args['content']; + $notice->date_sent = bp_core_current_time(); + $notice->is_active = 1; + + // Send it. + if ( $notice->save() ) { + WP_CLI::success( 'Notice was successfully sent.' ); + } else { + WP_CLI::error( 'Notice was not sent.' ); + } + } +} diff --git a/wp-content/plugins/buddypress/cli/src/notification.php b/wp-content/plugins/buddypress/cli/src/notification.php new file mode 100644 index 0000000000000000000000000000000000000000..f7aadfbc7c0204386072b55b319a930ac628cca3 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/notification.php @@ -0,0 +1,399 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Notifications. + * + * ## EXAMPLES + * + * # Create notification item. + * $ wp bp notification create + * Success: Successfully created new notification. (ID #5464) + * + * # Delete a notification item. + * $ wp bp notification delete 520 + * Success: Notification deleted. + * + * @since 1.8.0 + */ +class Notification extends BuddyPressCommand { + + /** + * Object fields. + * + * @var array + */ + protected $obj_fields = array( + 'id', + 'user_id', + 'item_id', + 'secondary_item_id', + 'component_name', + 'component_action', + 'date_notified', + 'is_new', + ); + + /** + * Dependency check for this CLI command. + */ + public static function check_dependencies() { + parent::check_dependencies(); + + if ( ! bp_is_active( 'notifications' ) ) { + WP_CLI::error( 'The Notification component is not active.' ); + } + } + + /** + * Create a notification item. + * + * ## OPTIONS + * + * [--component=<component>] + * : The component for the notification item (groups, activity, etc). If + * none is provided, a component will be randomly selected from the + * active components. + * + * [--action=<action>] + * : Name of the action to associate the notification. (comment_reply, update_reply, etc). + * + * [--user-id=<user>] + * : ID of the user associated with the new notification. + * + * [--item-id=<item>] + * : ID of the associated notification. + * + * [--secondary-item-id=<item>] + * : ID of the secondary associated notification. + * + * [--date=<date>] + * : GMT timestamp, in Y-m-d h:i:s format. + * + * [--silent] + * : Whether to silent the notification creation. + * + * [--porcelain] + * : Output only the new notification id. + * + * ## EXAMPLES + * + * $ wp bp notification create --component=messages --action=update_reply --user-id=523 + * Success: Successfully created new notification. (ID #5464) + * + * $ wp bp notification add --component=groups --action=comment_reply --user-id=10 + * Success: Successfully created new notification (ID #48949) + * + * @alias add + */ + public function create( $args, $assoc_args ) { + $r = wp_parse_args( + $assoc_args, + array( + 'component' => '', + 'action' => '', + 'user-id' => 0, + 'item-id' => 0, + 'secondary-item-id' => 0, + 'date' => bp_core_current_time(), + ) + ); + + $id = bp_notifications_add_notification( + array( + 'user_id' => $r['user-id'], + 'item_id' => $r['item-id'], + 'secondary_item_id' => $r['secondary-item-id'], + 'component_name' => $r['component'], + 'component_action' => $r['action'], + 'date_notified' => $r['date'], + ) + ); + + // Silent it before it errors. + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'silent' ) ) { + return; + } + + if ( ! is_numeric( $id ) ) { + WP_CLI::error( 'Could not create notification.' ); + } + + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { + WP_CLI::log( $id ); + } else { + WP_CLI::success( sprintf( 'Successfully created new notification (ID #%d)', $id ) ); + } + } + + /** + * Get specific notification. + * + * ## OPTIONS + * + * <notification-id> + * : Identifier for the notification. + * + * [--fields=<fields>] + * : Limit the output to specific fields. + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - csv + * - ids + * - json + * - count + * - yaml + * --- + * + * ## EXAMPLES + * + * $ wp bp notification get 500 + * $ wp bp notification get 56 --format=json + * + * @alias see + */ + public function get( $args, $assoc_args ) { + $notification = bp_notifications_get_notification( $args[0] ); + + if ( empty( $notification->id ) || ! is_object( $notification ) ) { + WP_CLI::error( 'No notification found by that ID.' ); + } + + $notification_arr = get_object_vars( $notification ); + + if ( empty( $assoc_args['fields'] ) ) { + $assoc_args['fields'] = array_keys( $notification_arr ); + } + + $this->get_formatter( $assoc_args )->display_item( $notification_arr ); + } + + /** + * Delete a notification. + * + * ## OPTIONS + * + * <notification-id>... + * : ID or IDs of notification to delete. + * + * [--yes] + * : Answer yes to the confirmation message. + * + * ## EXAMPLES + * + * $ wp bp notification delete 520 --yes + * Success: Deleted notification 520. + * + * $ wp bp notification delete 55654 54564 --yes + * Success: Deleted notification 55654. + * Success: Deleted notification 54564. + * + * $ wp bp notification delete $(wp bp notification list --format=ids) --yes + * Success: Deleted notification 35456465. + * Success: Deleted notification 46546546. + * Success: Deleted notification 46465465. + * + * @alias trash + */ + public function delete( $args, $assoc_args ) { + $notifications = $args; + + if ( count( $notifications ) > 1 ) { + WP_CLI::confirm( 'Are you sure want to delete these notifications?', $assoc_args ); + } else { + WP_CLI::confirm( 'Are you sure you want to delete this notification?', $assoc_args ); + } + + parent::_delete( $notifications, $assoc_args, function( $notification_id ) { + if ( \BP_Notifications_Notification::delete( array( 'id' => $notification_id ) ) ) { + return array( 'success', sprintf( 'Deleted notification %d.', $notification_id ) ); + } else { + return array( 'error', sprintf( 'Could not delete notification %d.', $notification_id ) ); + } + } ); + } + + /** + * Generate random notifications. + * + * ## OPTIONS + * + * [--count=<number>] + * : How many notifications to generate. + * --- + * default: 100 + * --- + * + * ## EXAMPLE + * + * $ wp bp notification generate --count=50 + */ + public function generate( $args, $assoc_args ) { + $notify = WP_CLI\Utils\make_progress_bar( 'Generating notifications', $assoc_args['count'] ); + + for ( $i = 0; $i < $assoc_args['count']; $i++ ) { + + $component = $this->get_random_component(); + + $this->create( + array(), + array( + 'user-id' => $this->get_random_user_id(), + 'component' => $component, + 'action' => $this->get_random_action( $component ), + 'silent', + ) + ); + + $notify->tick(); + } + + $notify->finish(); + } + + /** + * Get a list of notifications. + * + * ## OPTIONS + * + * [--<field>=<value>] + * : One or more parameters to pass. + * + * [--fields=<fields>] + * : Fields to display. + * + * [--user-id=<user>] + * : Limit results to a specific member. Accepts either a user_login or a numeric ID. + * + * [--component=<component>] + * : The component to fetch notifications (groups, activity, etc). + * + * [--action=<action>] + * : Name of the action to fetch notifications. (comment_reply, update_reply, etc). + * + * [--count=<number>] + * : How many notification items to list. + * --- + * default: 50 + * --- + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - ids + * - csv + * - count + * - haml + * --- + + * ## EXAMPLES + * + * $ wp bp notification list --format=ids + * 15 25 34 37 198 + * + * $ wp bp notification list --format=count + * 10 + * + * $ wp bp notification list --fields=id,user_id + * | id | user_id | + * | 66546 | 656 | + * | 54554 | 646546 | + * + * @subcommand list + */ + public function list_( $args, $assoc_args ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore + $formatter = $this->get_formatter( $assoc_args ); + + $query_args = wp_parse_args( + $assoc_args, + array( + 'count' => 50, + ) + ); + + if ( isset( $assoc_args['user-id'] ) ) { + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $query_args['user_id'] = $user->ID; + } + + if ( isset( $assoc_args['action'] ) ) { + $query_args['component_action'] = $assoc_args['action']; + } + + if ( isset( $assoc_args['component'] ) ) { + $query_args['component_name'] = $assoc_args['component']; + } + + $query_args['per_page'] = $query_args['count']; + + $query_args = self::process_csv_arguments_to_arrays( $query_args ); + + $notifications = \BP_Notifications_Notification::get( $query_args ); + + if ( empty( $notifications ) ) { + WP_CLI::error( 'No notification items found.' ); + } + + if ( 'ids' === $formatter->format ) { + echo implode( ' ', wp_list_pluck( $notifications, 'id' ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } else { + $formatter->display_items( $notifications ); + } + } + + /** + * Get random notification actions based on component. + * + * @since 1.8.0 + * + * @param string $component BuddyPress Component. + * @return string + */ + protected function get_random_action( $component ) { + $bp = buddypress(); + $actions = ''; + + // Activity. + if ( $bp->activity->id === $component ) { + $actions = [ 'comment_reply', 'update_reply', 'new_at_mention' ]; + } + + // Friendship. + if ( $bp->friends->id === $component ) { + $actions = [ + 'friendship_request', + 'friendship_accepted', + ]; + } + + // Groups. + if ( $bp->groups->id === $component ) { + $actions = [ + 'new_membership_request', + 'membership_request_accepted', + 'membership_request_rejected', + 'member_promoted_to_admin', + 'member_promoted_to_mod', + 'group_invite', + ]; + } + + // Messages. + if ( $bp->messages->id === $component ) { + $actions = [ 'new_message' ]; + } + + return array_rand( $actions ); + } +} diff --git a/wp-content/plugins/buddypress/cli/src/scaffold.php b/wp-content/plugins/buddypress/cli/src/scaffold.php new file mode 100644 index 0000000000000000000000000000000000000000..ebc4eee1adde7c3b9ab2b7d151d8296832d247b1 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/scaffold.php @@ -0,0 +1,161 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; +use Scaffold_Command; + +/** + * Scaffold BuddyPress unit tests. + * + * ## EXAMPLE + * + * # Scaffold BuddyPress specific tests. + * $ wp bp scaffold tests sample-plugin + * Success: Created BuddyPress test files. + * + * @since 2.0 + */ +class Scaffold extends Scaffold_Command { + + /** + * Default dependency check for a BuddyPress CLI command. + */ + public static function check_dependencies() { + if ( ! class_exists( 'Buddypress' ) ) { + WP_CLI::error( 'The BuddyPress plugin is not active.' ); + } + } + + /** + * Plugin scaffold command. + * + * ## OPTIONS + * + * <slug> + * : The slug of the BuddyPress plugin. + * + * [--force] + * : Whether to overwrite files. + * + * ## EXAMPLES + * + * $ wp bp scaffold tests sample-test + * Success: Created BuddyPress test files. + * + * $ wp bp scaffold tests another-ssample-test + * Success: Created BuddyPress test files. + * + * @subcommand tests + */ + public function plugin( $args, $assoc_args ) { + $wp_filesystem = $this->init_wp_filesystem(); + $target_dir = WP_PLUGIN_DIR . "/{$args[0]}"; + + if ( ! is_dir( $target_dir ) ) { + WP_CLI::error( "Invalid plugin slug specified. No such target directory '{$target_dir}'." ); + } + + $error_msg = $this->check_target_directory( $target_dir ); + if ( ! empty( $error_msg ) ) { + WP_CLI::error( "Invalid plugin slug specified. {$error_msg}" ); + } + + $to_copy = array( + 'install-bp-tests.sh' => "{$target_dir}/bin", + 'bootstrap-buddypress.php' => "{$target_dir}/tests", + ); + + foreach ( $to_copy as $file => $dir ) { + $file_name = "$dir/$file"; + + $prompt = WP_CLI\Utils\get_flag_value( $assoc_args, 'force' ); + + // Prompt it. + $should_write_file = $this->prompt_if_files_will_be_overwritten( $file_name, $prompt ); + + if ( false === $should_write_file ) { + continue; + } + + $files_written[] = $file_name; + + $wp_filesystem->copy( self::get_template_path( $file ), $file_name, true ); + + if ( 'install-bp-tests.sh' === $file ) { + if ( ! $wp_filesystem->chmod( "$dir/$file", 0755 ) ) { + WP_CLI::warning( "Couldn't mark 'install-bp-tests.sh' as executable." ); + } + } + } + + $this->log_whether_files_written( + $files_written, + 'All BuddyPress test files were skipped.', + 'Created BuddyPress test files.' + ); + } + + /** + * Checks that the `$target_dir` is a child directory of the WP themes or plugins directory, depending on `$type`. + * + * @param string $type "theme" or "plugin" + * @param string $target_dir The theme/plugin directory to check. + * + * @return null|string Returns null on success, error message on error. + */ + public function check_target_directory( $target_dir ) { + $parent_dir = dirname( self::canonicalize_path( str_replace( '\\', '/', $target_dir ) ) ); + + if ( str_replace( '\\', '/', WP_PLUGIN_DIR ) !== $parent_dir ) { + return sprintf( 'The target directory \'%1$s\' is not in \'%2$s\'.', $target_dir, WP_PLUGIN_DIR ); + } + + // Success. + return null; + } + + /** + * Fix path. + * + * @param string $path Path. + * @return string + */ + public static function canonicalize_path( $path ) { + if ( '' === $path || '/' === $path ) { + return $path; + } + + if ( '.' === substr( $path, -1 ) ) { + $path .= '/'; + } + + $output = array(); + + foreach ( explode( '/', $path ) as $segment ) { + if ( '..' === $segment ) { + array_pop( $output ); + } elseif ( '.' !== $segment ) { + $output[] = $segment; + } + } + + return implode( '/', $output ); + } + + /** + * Gets the template path based on installation type. + * + * @return string Template path. + */ + public static function get_template_path( $template ) { + $command_root = WP_CLI\Utils\phar_safe_path( dirname( __DIR__ ) ); + $template_path = "{$command_root}/src/templates/{$template}"; + + if ( ! file_exists( $template_path ) ) { + WP_CLI::error( "Couldn't find {$template}" ); + } + + return $template_path; + } +} diff --git a/wp-content/plugins/buddypress/cli/src/signup.php b/wp-content/plugins/buddypress/cli/src/signup.php new file mode 100644 index 0000000000000000000000000000000000000000..55b872377108e5b08965b4f71d6233a181b260b9 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/signup.php @@ -0,0 +1,395 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Signups. + * + * ## EXAMPLES + * + * $ wp bp signup create --user-login=test_user --user-email=teste@site.com + * Success: Successfully added new user signup (ID #345). + * + * $ wp bp signup activate ee48ec319fef3nn4 + * Success: Signup activated, new user (ID #545). + * + * @since 1.5.0 + */ +class Signup extends BuddyPressCommand { + + /** + * Signup object fields. + * + * @var array + */ + protected $obj_fields = array( + 'signup_id', + 'user_login', + 'user_name', + 'meta', + 'activation_key', + 'registered', + ); + + /** + * Dependency check for this CLI command. + */ + public static function check_dependencies() { + parent::check_dependencies(); + + if ( ! bp_get_signup_allowed() ) { + WP_CLI::error( 'The BuddyPress signup feature needs to be allowed.' ); + } + + // Fixes a bug in case the signups tables were not properly created. + require_once buddypress()->plugin_dir . 'bp-core/admin/bp-core-admin-schema.php'; + require_once buddypress()->plugin_dir . 'bp-core/bp-core-update.php'; + + bp_core_maybe_install_signups(); + } + + /** + * Add a signup. + * + * ## OPTIONS + * + * [--user-login=<user-login>] + * : User login for the signup. + * + * [--user-email=<user-email>] + * : User email for the signup. + * + * [--activation-key=<activation-key>] + * : Activation key for the signup. If none is provided, a random one will be used. + * + * [--silent] + * : Whether to silent the signup creation. + * + * [--porcelain] + * : Output only the new signup id. + * + * ## EXAMPLE + * + * $ wp bp signup create --user-login=test_user --user-email=teste@site.com + * Success: Successfully added new user signup (ID #345). + * + * @alias add + */ + public function create( $args, $assoc_args ) { + $r = wp_parse_args( + $assoc_args, + array( + 'user-login' => '', + 'user-email' => '', + 'activation-key' => wp_generate_password( 32, false ), + ) + ); + + $signup_args = array( 'meta' => '' ); + + $user_login = $r['user-login']; + if ( ! empty( $user_login ) ) { + $user_login = preg_replace( '/\s+/', '', sanitize_user( $user_login, true ) ); + } + + $user_email = $r['user-email']; + if ( ! empty( $user_email ) ) { + $user_email = sanitize_email( $user_email ); + } + + $signup_args['user_login'] = $user_login; + $signup_args['user_email'] = $user_email; + $signup_args['activation_key'] = $r['activation-key']; + + $id = \BP_Signup::add( $signup_args ); + + // Silent it. + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'silent' ) ) { + return; + } + + if ( ! $id ) { + WP_CLI::error( 'Could not add user signup.' ); + } + + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { + WP_CLI::log( $id ); + } else { + WP_CLI::success( sprintf( 'Successfully added new user signup (ID #%d).', $id ) ); + } + } + + /** + * Get a signup. + * + * ## OPTIONS + * + * <signup-id> + * : Identifier for the signup. Can be a signup ID, an email address, or a user_login. + * + * [--match-field=<match-field>] + * : Field to match the signup-id to. Use if there is ambiguity between, eg, signup ID and user_login. + * --- + * options: + * - signup_id + * - user_email + * - user_login + * --- + * + * [--fields=<fields>] + * : Limit the output to specific signup fields. + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - csv + * - ids + * - json + * - count + * - yaml + * --- + * + * ## EXAMPLES + * + * $ wp bp signup get 123 + * $ wp bp signup get foo@example.com + * $ wp bp signup get 123 --match-field=id + */ + public function get( $args, $assoc_args ) { + $signup = $this->get_signup_by_identifier( $args[0], $assoc_args ); + + $this->get_formatter( $assoc_args )->display_item( $signup ); + } + + /** + * Delete a signup. + * + * ## OPTIONS + * + * <signup-id>... + * : ID or IDs of signup. + * + * [--yes] + * : Answer yes to the confirmation message. + * + * ## EXAMPLES + * + * $ wp bp signup delete 520 + * Success: Signup deleted. + * + * $ wp bp signup delete 55654 54564 --yes + * Success: Signup deleted. + */ + public function delete( $args, $assoc_args ) { + WP_CLI::confirm( 'Are you sure you want to delete this signup?', $assoc_args ); + + parent::_delete( $args, $assoc_args, function( $signup_id ) { + if ( \BP_Signup::delete( array( $signup_id ) ) ) { + return array( 'success', 'Signup deleted.' ); + } else { + return array( 'error', 'Could not delete signup.' ); + } + } ); + } + + /** + * Activate a signup. + * + * ## OPTIONS + * + * <signup-id> + * : Identifier for the signup. Can be a signup ID, an email address, or a user_login. + * + * ## EXAMPLE + * + * $ wp bp signup activate ee48ec319fef3nn4 + * Success: Signup activated, new user (ID #545). + */ + public function activate( $args, $assoc_args ) { + $signup = $this->get_signup_by_identifier( $args[0], $assoc_args ); + $user_id = bp_core_activate_signup( $signup->activation_key ); + + if ( $user_id ) { + WP_CLI::success( sprintf( 'Signup activated, new user (ID #%d).', $user_id ) ); + } else { + WP_CLI::error( 'Signup not activated.' ); + } + } + + /** + * Generate random signups. + * + * ## OPTIONS + * + * [--count=<number>] + * : How many signups to generate. + * --- + * default: 100 + * --- + * + * ## EXAMPLE + * + * $ wp bp signup generate --count=50 + */ + public function generate( $args, $assoc_args ) { + $notify = WP_CLI\Utils\make_progress_bar( 'Generating signups', $assoc_args['count'] ); + + // Use the email API to get a valid "from" domain. + $email_domain = new \BP_Email( '' ); + $email_domain = $email_domain->get_from()->get_address(); + $random_login = wp_generate_password( 12, false ); // Generate random user login. + + for ( $i = 0; $i < $assoc_args['count']; $i++ ) { + $this->create( array(), array( + 'user-login' => $random_login, + 'user-email' => $random_login . substr( $email_domain, strpos( $email_domain, '@' ) ), + 'silent', + ) ); + + $notify->tick(); + } + + $notify->finish(); + } + + /** + * Resend activation e-mail to a newly registered user. + * + * ## OPTIONS + * + * <signup-id> + * : Identifier for the signup. Can be a signup ID, an email address, or a user_login. + * + * ## EXAMPLE + * + * $ wp bp signup resend test@example.com + * Success: Email sent successfully. + * + * @alias send + */ + public function resend( $args, $assoc_args ) { + $signup = $this->get_signup_by_identifier( $args[0], $assoc_args ); + $send = \BP_Signup::resend( array( $signup->signup_id ) ); + + // Add feedback message. + if ( empty( $send['errors'] ) ) { + WP_CLI::success( 'Email sent successfully.' ); + } else { + WP_CLI::error( 'This account is already activated.' ); + } + } + + /** + * Get a list of signups. + * + * ## OPTIONS + * + * [--fields=<value>] + * : One or more parameters to pass. See \BP_Signup::get() + * + * [--number=<value>] + * : How many signups to list. + * --- + * default: 20 + * --- + * + * [--format=<value>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - ids + * - count + * - csv + * --- + * + * ## EXAMPLES + * + * $ wp bp signup list --format=ids + * $ wp bp signup list --number=100 --format=count + * $ wp bp signup list --number=5 --activation_key=ee48ec319fef3nn4 + * + * @subcommand list + */ + public function list_( $args, $assoc_args ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore + $formatter = $this->get_formatter( $assoc_args ); + $assoc_args = wp_parse_args( + $assoc_args, + array( + 'number' => 20, + 'fields' => 'all', + ) + ); + + if ( 'ids' === $formatter->format ) { + $assoc_args['fields'] = 'ids'; + } + + $signups = \BP_Signup::get( $assoc_args ); + + if ( empty( $signups['signups'] ) ) { + WP_CLI::error( 'No signups found.' ); + } + + if ( 'ids' === $formatter->format ) { + echo implode( ' ', $signups['signups'] ); + } elseif ( 'count' === $formatter->format ) { + $formatter->display_items( $signups['total'] ); + } else { + $formatter->display_items( $signups['signups'] ); + } + } + + /** + * Look up a signup by the provided identifier. + * + * @since 1.5.0 + * + * @return mixed + */ + protected function get_signup_by_identifier( $identifier, $assoc_args ) { + if ( isset( $assoc_args['match-field'] ) ) { + switch ( $assoc_args['match-field'] ) { + case 'signup_id': + $signup_args['include'] = array( $identifier ); + break; + + case 'user_login': + $signup_args['user_login'] = $identifier; + break; + + case 'user_email': + default: + $signup_args['usersearch'] = $identifier; + break; + } + } else { + if ( is_numeric( $identifier ) ) { + $signup_args['include'] = array( intval( $identifier ) ); + } elseif ( is_email( $identifier ) ) { + $signup_args['usersearch'] = $identifier; + } else { + $signup_args['user_login'] = $identifier; + } + } + + $signups = \BP_Signup::get( $signup_args ); + $signup = null; + + if ( ! empty( $signups['signups'] ) ) { + $signup = reset( $signups['signups'] ); + } + + if ( ! $signup ) { + WP_CLI::error( 'No signup found by that identifier.' ); + } + + return $signup; + } +} diff --git a/wp-content/plugins/buddypress/cli/src/templates/bootstrap-buddypress.php b/wp-content/plugins/buddypress/cli/src/templates/bootstrap-buddypress.php new file mode 100644 index 0000000000000000000000000000000000000000..33cb87a9b774ad40aba51efbff62f37744725731 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/templates/bootstrap-buddypress.php @@ -0,0 +1,24 @@ +<?php +/** + * PHPUnit bootstrap file for BuddyPress + */ + +// Get codebase versions. +$bp_version = ( getenv( 'BP_VERSION' ) ) ? getenv( 'BP_VERSION' ) : 'latest'; + +// Get paths to codebase installed by install script. +$bp_tests_dir = "/tmp/buddypress/$bp_version/tests/phpunit"; + +// Set required environment variables. +putenv( 'BP_TESTS_DIR=' . $bp_tests_dir ); + +/** + * Load BuddyPress. + */ +function _manually_load_buddypress() { + require_once getenv( 'BP_TESTS_DIR' ) . '/includes/loader.php'; +} +tests_add_filter( 'muplugins_loaded', '_manually_load_buddypress', 0 ); + +// Bootstrap tests. +require_once $bp_tests_dir . '/includes/testcase.php'; diff --git a/wp-content/plugins/buddypress/cli/src/templates/install-bp-tests.sh b/wp-content/plugins/buddypress/cli/src/templates/install-bp-tests.sh new file mode 100644 index 0000000000000000000000000000000000000000..43385c6c456691d03d5e53f98320bfb5462bc414 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/templates/install-bp-tests.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +set -ex + +BP_VERSION=${2-latest} +BP_DIR=/tmp/buddypress +BP_SVN=https://buddypress.svn.wordpress.org + +# Set SVN paths. +if [ "$BP_VERSION" = "latest" ]; then + BP_DIR="$BP_DIR/latest" + BP_SVN="$BP_SVN/trunk" +else + BP_DIR="$BP_DIR/$BP_VERSION" + BP_SVN="$BP_SVN/tags/$BP_VERSION" +fi + +# Create directory. +mkdir -p $BP_DIR + +# Install BuddyPress and test suite. +if [ ! -d $BP_DIR/src ]; then + svn co --quiet $BP_SVN $BP_DIR +fi + +# Edit WordPress testing files to load BuddyPress. +grep -qF bootstrap-buddypress.php tests/bootstrap.php || echo "require 'bootstrap-buddypress.php';" >> tests/bootstrap.php diff --git a/wp-content/plugins/buddypress/cli/src/tool.php b/wp-content/plugins/buddypress/cli/src/tool.php new file mode 100644 index 0000000000000000000000000000000000000000..c6dc1187a476c4772f2750c3137b1d66daed4f4d --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/tool.php @@ -0,0 +1,106 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Tools. + * + * ## EXAMPLES + * + * $ wp bp tool repair friend-count + * Success: Counting the number of friends for each user. Complete! + * + * $ wp bp tool version + * BuddyPress: 6.0.0 + * + * @since 1.5.0 + */ +class Tool extends BuddyPressCommand { + + /** + * Dependency check for this CLI command. + */ + public static function check_dependencies() { + parent::check_dependencies(); + + require_once buddypress()->plugin_dir . 'bp-core/admin/bp-core-admin-tools.php'; + } + + /** + * Repair. + * + * ## OPTIONS + * + * <type> + * : Name of the repair tool. + * --- + * options: + * - friend-count + * - group-count + * - blog-records + * - count-members + * - last-activity + * --- + * + * ## EXAMPLE + * + * $ wp bp tool repair friend-count + * Success: Counting the number of friends for each user. Complete! + * + * @alias fix + */ + public function repair( $args ) { + $repair = 'bp_admin_repair_' . $this->sanitize_string( $args[0] ); + + if ( ! function_exists( $repair ) ) { + WP_CLI::error( 'There is no repair tool with that name.' ); + } + + // Run the callable repair function. + $result = $repair(); + + if ( empty( $repair ) ) { + WP_CLI::error( 'The component of the tool is not active.' ); + } + + if ( 0 === $result[0] ) { + WP_CLI::success( $result[1] ); + } else { + WP_CLI::error( $result[1] ); + } + } + + /** + * Display BuddyPress version currently installed. + * + * ## EXAMPLE + * + * $ wp bp tool version + * BuddyPress: 6.0.0 + */ + public function version() { + WP_CLI::log( 'BuddyPress: ' . bp_get_version() ); + } + + /** + * (De)Activate the Signup feature. + * + * <status> + * : Status of the feature. + * + * ## EXAMPLES + * + * $ wp bp tool signup 1 + * Success: Signup tool updated. + * + * $ wp bp tool signup 0 + * Success: Signup tool updated. + */ + public function signup( $args ) { + bp_update_option( 'users_can_register', $args[0] ); + + WP_CLI::success( 'Signup tool updated.' ); + } +} diff --git a/wp-content/plugins/buddypress/cli/src/xprofile-data.php b/wp-content/plugins/buddypress/cli/src/xprofile-data.php new file mode 100644 index 0000000000000000000000000000000000000000..98703c7fc2734da23b45130d11a57e6ee29241ca --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/xprofile-data.php @@ -0,0 +1,199 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage XProfile Data. + * + * @since 1.5.0 + */ +class XProfile_Data extends BuddyPressCommand { + + /** + * XProfile object fields. + * + * @var array + */ + protected $obj_fields = array( + 'id', + 'field_id', + 'user_id', + 'value', + 'last_updated', + ); + + /** + * Set profile data for a user. + * + * ## OPTIONS + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * --field-id=<field> + * : Identifier for the field. Accepts either the name of the field or a numeric ID. + * + * --value=<value> + * : Value to set. + * + * ## EXAMPLE + * + * $ wp bp xprofile data set --user-id=45 --field-id=120 --value=teste + * Success: Updated XProfile field "Field Name" (ID 120) with value "teste" for user user_login (ID 45). + */ + public function set( $args, $assoc_args ) { + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $field_id = $this->get_field_id( $assoc_args['field-id'] ); + $field = new \BP_XProfile_Field( $field_id ); + + if ( empty( $field->name ) ) { + WP_CLI::error( 'XProfile field not found.' ); + } + + $value = $assoc_args['value']; + + if ( 'checkbox' === $field->type ) { + $value = explode( ',', $assoc_args['value'] ); + } + + $updated = xprofile_set_field_data( $field->id, $user->ID, $value ); + + if ( ! $updated ) { + WP_CLI::error( 'Could not set profile data.' ); + } + + WP_CLI::success( + sprintf( + 'Updated XProfile field "%s" (ID %d) with value "%s" for user %s (ID %d).', + $field->name, + $field->id, + $assoc_args['value'], + $user->user_nicename, + $user->ID + ) + ); + } + + /** + * Get profile data for a user. + * + * ## OPTIONS + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * [--field-id=<field>] + * : Identifier for the field. Accepts either the name of the field or a numeric ID. + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - json + * - haml + * --- + * + * [--multi-format=<value>] + * : The format for the array data. + * --- + * default: array + * options: + * - array + * - comma + * --- + * + * ## EXAMPLES + * + * $ wp bp xprofile data get --user-id=45 --field-id=120 + * $ wp bp xprofile data see --user-id=user_test --field-id=Hometown --multi-format=comma + * + * @alias see + */ + public function get( $args, $assoc_args ) { + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + + if ( isset( $assoc_args['field-id'] ) ) { + $data = xprofile_get_field_data( $assoc_args['field-id'], $user->ID, $assoc_args['multi-format'] ); + WP_CLI::print_value( $data, $assoc_args ); + } else { + $data = \BP_XProfile_ProfileData::get_all_for_user( $user->ID ); + $formatted_data = array(); + + foreach ( $data as $field_name => $field_data ) { + // Omit WP core fields. + if ( ! is_array( $field_data ) ) { + continue; + } + + $formatted_data[] = array( + 'field_id' => $field_data['field_id'], + 'field_name' => $field_name, + 'value' => wp_json_encode( maybe_unserialize( $field_data['field_data'] ) ), + ); + } + + $format_args = $assoc_args; + $format_args['fields'] = array( + 'field_id', + 'field_name', + 'value', + ); + + $this->get_formatter( $format_args )->display_items( $formatted_data ); + } + } + + /** + * Delete XProfile data for a user. + * + * ## OPTIONS + * + * --user-id=<user> + * : Identifier for the user. Accepts either a user_login or a numeric ID. + * + * [--field-id=<field>] + * : Identifier for the field. Accepts either the name of the field or a numeric ID. + * + * [--delete-all] + * : Delete all data for the user. + * + * [--yes] + * : Answer yes to the confirmation message. + * + * ## EXAMPLES + * + * $ wp bp xprofile data delete --user-id=45 --field-id=120 --yes + * Success: XProfile data removed. + * + * $ wp bp xprofile data remove --user-id=user_test --delete-all --yes + * Success: XProfile data removed. + * + * @alias remove + */ + public function delete( $args, $assoc_args ) { + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + + if ( ! isset( $assoc_args['field-id'] ) && ! isset( $assoc_args['delete-all'] ) ) { + WP_CLI::error( 'Either --field-id or --delete-all must be provided.' ); + } + + if ( isset( $assoc_args['delete-all'] ) ) { + WP_CLI::confirm( sprintf( 'Are you sure you want to delete all XProfile data for the user %s (#%d)?', $user->user_login, $user->ID ), $assoc_args ); + + xprofile_remove_data( $user->ID ); + WP_CLI::success( 'XProfile data removed.' ); + } else { + WP_CLI::confirm( 'Are you sure you want to delete that?', $assoc_args ); + + if ( xprofile_delete_field_data( $assoc_args['field-id'], $user->ID ) ) { + WP_CLI::success( 'XProfile data removed.' ); + } else { + WP_CLI::error( 'Could not delete XProfile data.' ); + } + } + } +} diff --git a/wp-content/plugins/buddypress/cli/src/xprofile-field.php b/wp-content/plugins/buddypress/cli/src/xprofile-field.php new file mode 100644 index 0000000000000000000000000000000000000000..1a9fefd1b5c81b3b3e9a27aa007a6ea0dc37a578 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/xprofile-field.php @@ -0,0 +1,213 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage XProfile Fields. + * + * @since 1.5.0 + */ +class XProfile_Field extends BuddyPressCommand { + + /** + * XProfile object fields. + * + * @var array + */ + protected $obj_fields = array( + 'id', + 'name', + 'description', + 'type', + 'group_id', + 'is_required', + ); + + /** + * Get a list of XProfile fields. + * + * ## OPTIONS + * + * [--<field>=<value>] + * : One or more parameters to pass. See bp_xprofile_get_groups() + * + * ## EXAMPLE + * + * $ wp bp xprofile field list + * + * @subcommand list + */ + public function list_( $args, $assoc_args ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore + $args = array_merge( + $assoc_args, + array( + 'fields' => 'id,name', + 'fetch_fields' => true, + ) + ); + + $fields = array(); + $groups = bp_xprofile_get_groups( $args ); + + // Reformat so that field_group_id is a property of fields. + foreach ( $groups as $group ) { + foreach ( $group->fields as $field ) { + $fields[ $field->id ] = $field; + } + } + + ksort( $fields ); + + $this->get_formatter( $assoc_args )->display_items( $fields ); + } + + /** + * Create an XProfile field. + * + * ## OPTIONS + * + * [--type=<type>] + * : Field type. + * --- + * default: textbox + * --- + * + * --field-group-id=<field-group-id> + * : ID of the field group where the new field will be created. + * + * --name=<name> + * : Name of the new field. + * + * [--porcelain] + * : Output just the new field id. + * + * ## EXAMPLES + * + * $ wp bp xprofile field create --type=checkbox --field-group-id=508 --name="Field Name" + * Success: Created XProfile field "Field Name" (ID 24564). + * + * $ wp bp xprofile field add --field-group-id=165 --name="Another Field" + * Success: Created XProfile field "Another Field" (ID 5465). + * + * @alias add + */ + public function create( $args, $assoc_args ) { + // Check this is a non-empty, valid field type. + if ( ! in_array( $assoc_args['type'], (array) buddypress()->profile->field_types, true ) ) { + WP_CLI::error( 'Not a valid field type.' ); + } + + $create_args = array( + 'type' => $assoc_args['type'], + 'name' => $assoc_args['name'], + 'field_group_id' => $assoc_args['field-group-id'], + ); + + $field_id = xprofile_insert_field( $create_args ); + if ( ! $field_id ) { + WP_CLI::error( 'Could not create XProfile field.' ); + } + + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { + WP_CLI::log( $field_id ); + } else { + $field = new \BP_XProfile_Field( $field_id ); + + WP_CLI::success( + sprintf( + 'Created XProfile field "%s" (ID %d).', + $field->name, + $field->id + ) + ); + } + } + + /** + * Get an XProfile field. + * + * ## OPTIONS + * + * <field-id> + * : Identifier for the field. Accepts either the name of the field or a numeric ID. + * + * [--fields=<fields>] + * : Limit the output to specific fields. + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - json + * - haml + * --- + * + * ## EXAMPLES + * + * $ wp bp xprofile field get 500 + * $ wp bp xprofile field see 56 --format=json + * + * @alias see + */ + public function get( $args, $assoc_args ) { + $field_id = $this->get_field_id( $args[0] ); + $object = xprofile_get_field( $field_id ); + + if ( empty( $object->id ) && ! is_object( $object ) ) { + WP_CLI::error( 'No XProfile field found.' ); + } + + $object_arr = get_object_vars( $object ); + if ( empty( $assoc_args['fields'] ) ) { + $assoc_args['fields'] = array_keys( $object_arr ); + } + + $this->get_formatter( $assoc_args )->display_item( $object_arr ); + } + + /** + * Delete an XProfile field. + * + * ## OPTIONS + * + * <field-id>... + * : ID or IDs for the field. Accepts either the name of the field or a numeric ID. + * + * [--delete-data] + * : Delete user data for the field as well. + * + * [--yes] + * : Answer yes to the confirmation message. + * + * ## EXAMPLES + * + * $ wp bp xprofile field delete 500 --yes + * Success: Deleted XProfile field "Field Name" (ID 500). + * + * $ wp bp xprofile field remove 458 --delete-data --yes + * Success: Deleted XProfile field "Another Field Name" (ID 458). + * + * @alias remove + */ + public function delete( $args, $assoc_args ) { + $delete_data = WP_CLI\Utils\get_flag_value( $assoc_args, 'delete-data' ); + + WP_CLI::confirm( 'Are you sure you want to delete this field?', $assoc_args ); + + parent::_delete( $args, $assoc_args, function( $field_id ) use ( $delete_data ) { + $field = new \BP_XProfile_Field( $field_id ); + $name = $field->name; + $id = $field->id; + + if ( $field->delete( $delete_data ) ) { + return array( 'success', sprintf( 'Deleted XProfile field "%s" (ID %d).', $name, $id ) ); + } else { + return array( 'error', sprintf( 'Failed deleting XProfile field (ID %d).', $field_id ) ); + } + } ); + } +} diff --git a/wp-content/plugins/buddypress/cli/src/xprofile-group.php b/wp-content/plugins/buddypress/cli/src/xprofile-group.php new file mode 100644 index 0000000000000000000000000000000000000000..75c667991fb107f8976d31494abfc64bf83814dc --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/xprofile-group.php @@ -0,0 +1,168 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage XProfile Groups. + * + * @since 1.5.0 + */ +class XProfile_Group extends BuddyPressCommand { + + /** + * XProfile object fields. + * + * @var array + */ + protected $obj_fields = array( + 'id', + 'name', + 'description', + 'group_order', + 'can_delete', + ); + + /** + * Object ID key. + * + * @var int + */ + protected $obj_id_key = 'id'; + + /** + * Create an XProfile group. + * + * ## OPTIONS + * + * --name=<name> + * : The name for this field group. + * + * [--description=<description>] + * : The description for this field group. + * + * [--can-delete=<can-delete>] + * : Whether the group can be deleted. + * --- + * default: 1 + * --- + * + * [--porcelain] + * : Output just the new group id. + * + * ## EXAMPLES + * + * $ wp bp xprofile group create --name="Group Name" --description="Xprofile Group Description" + * Success: Created XProfile field group "Group Name" (ID 123). + * + * $ wp bp xprofile group add --name="Another Group" --can-delete=false + * Success: Created XProfile field group "Another Group" (ID 21212). + * + * @alias add + */ + public function create( $args, $assoc_args ) { + $r = wp_parse_args( + $assoc_args, + array( + 'name' => '', + 'description' => '', + ) + ); + + $group_id = xprofile_insert_field_group( $r ); + + if ( ! $group_id ) { + WP_CLI::error( 'Could not create field group.' ); + } + + if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { + WP_CLI::log( $group_id ); + } else { + $group = new \BP_XProfile_Group( $group_id ); + $success = sprintf( + 'Created XProfile field group "%s" (ID %d).', + $group->name, + $group->id + ); + WP_CLI::success( $success ); + } + } + + /** + * Fetch specific XProfile field group. + * + * ## OPTIONS + * + * <field-group-id> + * : Identifier for the field group. + * + * [--fields=<fields>] + * : Limit the output to specific fields. + * + * [--format=<format>] + * : Render output in a particular format. + * --- + * default: table + * options: + * - table + * - json + * - haml + * --- + * + * ## EXAMPLES + * + * $ wp bp xprofile group get 500 + * $ wp bp xprofile group see 56 --format=json + * + * @alias see + */ + public function get( $args, $assoc_args ) { + $field_group_id = $args[0]; + + if ( ! is_numeric( $field_group_id ) ) { + WP_CLI::error( 'Please provide a numeric field group ID.' ); + } + + $object = xprofile_get_field_group( $field_group_id ); + if ( empty( $object->id ) && ! is_object( $object ) ) { + WP_CLI::error( 'No XProfile field group found.' ); + } + + $object_arr = get_object_vars( $object ); + if ( empty( $assoc_args['fields'] ) ) { + $assoc_args['fields'] = array_keys( $object_arr ); + } + + $this->get_formatter( $assoc_args )->display_item( $object_arr ); + } + + /** + * Delete specific XProfile field group(s). + * + * ## OPTIONS + * + * <field-group-id>... + * : ID or IDs for the field group. + * + * [--yes] + * : Answer yes to the confirmation message. + * + * ## EXAMPLE + * + * $ wp bp xprofile group delete 500 --yes + * + * @alias remove + */ + public function delete( $args, $assoc_args ) { + WP_CLI::confirm( 'Are you sure you want to delete this field group?', $assoc_args ); + + parent::_delete( $args, $assoc_args, function( $field_group_id ) { + if ( xprofile_delete_field_group( $field_group_id ) ) { + return array( 'success', 'Field group deleted.' ); + } else { + return array( 'error', 'Could not delete the field group.' ); + } + } ); + } +} diff --git a/wp-content/plugins/buddypress/cli/src/xprofile.php b/wp-content/plugins/buddypress/cli/src/xprofile.php new file mode 100644 index 0000000000000000000000000000000000000000..ef93038ac9b8a041a0c86d39ef8c1a8a14c6ec35 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/src/xprofile.php @@ -0,0 +1,59 @@ +<?php + +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress XProfile. + * + * ## EXAMPLES + * + * # Save a xprofile data to a user with its field and value. + * $ wp bp xprofile data set --user-id=45 --field-id=120 --value=teste + * Success: Updated XProfile field "Field Name" (ID 120) with value "teste" for user user_login (ID 45). + * + * # Create a xprofile group. + * $ wp bp xprofile group create --name="Group Name" --description="Xprofile Group Description" + * Success: Created XProfile field group "Group Name" (ID 123). + * + * # List xprofile fields. + * $ wp bp xprofile field list + */ +class XProfile extends BuddyPressCommand { + + /** + * Dependency check for this CLI command. + */ + public static function check_dependencies() { + parent::check_dependencies(); + + if ( ! bp_is_active( 'xprofile' ) ) { + WP_CLI::error( 'The XProfile component is not active.' ); + } + } + + /** + * Adds description and subcomands to the DOC. + * + * @param object $command Command. + * @return array + */ + private function command_to_array( $command ) { + $dump = array( + 'name' => $command->get_name(), + 'description' => $command->get_shortdesc(), + 'longdesc' => $command->get_longdesc(), + ); + + foreach ( $command->get_subcommands() as $subcommand ) { + $dump['subcommands'][] = $this->command_to_array( $subcommand ); + } + + if ( empty( $dump['subcommands'] ) ) { + $dump['synopsis'] = (string) $command->get_synopsis(); + } + + return $dump; + } +} diff --git a/wp-content/plugins/buddypress/cli/wp-cli-bp.php b/wp-content/plugins/buddypress/cli/wp-cli-bp.php index 92ef66d3b0ac2f488afda593984c342d391f2d72..73c5418355a0071d8d0dc38cefd005eaa356bc3e 100644 --- a/wp-content/plugins/buddypress/cli/wp-cli-bp.php +++ b/wp-content/plugins/buddypress/cli/wp-cli-bp.php @@ -1,225 +1,170 @@ <?php -namespace Buddypress\CLI; -use WP_CLI; +namespace Buddypress\CLI; // Bail if WP-CLI is not present. -if ( ! defined( '\WP_CLI' ) ) { +if ( ! class_exists( 'WP_CLI' ) ) { return; } -WP_CLI::add_hook( 'before_wp_load', function() { - require_once( __DIR__ . '/component.php' ); - require_once( __DIR__ . '/components/buddypress.php' ); - require_once( __DIR__ . '/components/signup.php' ); - require_once( __DIR__ . '/components/activity.php' ); - require_once( __DIR__ . '/components/activity-favorite.php' ); - require_once( __DIR__ . '/components/component.php' ); - require_once( __DIR__ . '/components/group.php' ); - require_once( __DIR__ . '/components/group-member.php' ); - require_once( __DIR__ . '/components/group-invite.php' ); - require_once( __DIR__ . '/components/member.php' ); - require_once( __DIR__ . '/components/friend.php' ); - require_once( __DIR__ . '/components/xprofile.php' ); - require_once( __DIR__ . '/components/xprofile-group.php' ); - require_once( __DIR__ . '/components/xprofile-field.php' ); - require_once( __DIR__ . '/components/xprofile-data.php' ); - require_once( __DIR__ . '/components/tool.php' ); - require_once( __DIR__ . '/components/message.php' ); - require_once( __DIR__ . '/components/notification.php' ); - require_once( __DIR__ . '/components/email.php' ); - - WP_CLI::add_command( 'bp', __NAMESPACE__ . '\\Command\\Buddypress', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp signup', __NAMESPACE__ . '\\Command\\Signup', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp notification', __NAMESPACE__ . '\\Command\\Notification', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - if ( ! bp_is_active( 'notifications' ) ) { - WP_CLI::error( 'The Notification component is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp email', __NAMESPACE__ . '\\Command\\Email', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp activity', __NAMESPACE__ . '\\Command\\Activity', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - if ( ! bp_is_active( 'activity' ) ) { - WP_CLI::error( 'The Activity component is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp activity favorite', __NAMESPACE__ . '\\Command\\Activity_Favorite', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - if ( ! bp_is_active( 'activity' ) ) { - WP_CLI::error( 'The Activity component is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp component', __NAMESPACE__ . '\\Command\\Components', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp group', __NAMESPACE__ . '\\Command\\Group', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - if ( ! bp_is_active( 'groups' ) ) { - WP_CLI::error( 'The Groups component is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp group member', __NAMESPACE__ . '\\Command\\Group_Member', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - if ( ! bp_is_active( 'groups' ) ) { - WP_CLI::error( 'The Groups component is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp group invite', __NAMESPACE__ . '\\Command\\Group_Invite', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - if ( ! bp_is_active( 'groups' ) ) { - WP_CLI::error( 'The Groups component is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp member', __NAMESPACE__ . '\\Command\\Member', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp friend', __NAMESPACE__ . '\\Command\\Friend', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - if ( ! bp_is_active( 'friends' ) ) { - WP_CLI::error( 'The Friends component is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp xprofile', __NAMESPACE__ . '\\Command\\XProfile', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - if ( ! bp_is_active( 'xprofile' ) ) { - WP_CLI::error( 'The XProfile component is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp xprofile group', __NAMESPACE__ . '\\Command\\XProfile_Group', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - if ( ! bp_is_active( 'xprofile' ) ) { - WP_CLI::error( 'The XProfile component is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp xprofile field', __NAMESPACE__ . '\\Command\\XProfile_Field', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - if ( ! bp_is_active( 'xprofile' ) ) { - WP_CLI::error( 'The XProfile component is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp xprofile data', __NAMESPACE__ . '\\Command\\XProfile_Data', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - if ( ! bp_is_active( 'xprofile' ) ) { - WP_CLI::error( 'The XProfile component is not active.' ); - } - }, - ) ); - - WP_CLI::add_command( 'bp tool', __NAMESPACE__ . '\\Command\\Tool', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - require_once( buddypress()->plugin_dir . 'bp-core/admin/bp-core-admin-tools.php' ); - }, - ) ); - - WP_CLI::add_command( 'bp message', __NAMESPACE__ . '\\Command\\Message', array( - 'before_invoke' => function() { - if ( ! class_exists( 'Buddypress' ) ) { - WP_CLI::error( 'The BuddyPress plugin is not active.' ); - } - - if ( ! bp_is_active( 'messages' ) ) { - WP_CLI::error( 'The Message component is not active.' ); - } - }, - ) ); -} ); +use WP_CLI; + +WP_CLI::add_hook( + 'before_wp_load', + function() { + require_once __DIR__ . '/src/command.php'; + require_once __DIR__ . '/src/buddypress.php'; + require_once __DIR__ . '/src/signup.php'; + require_once __DIR__ . '/src/activity-fetcher.php'; + require_once __DIR__ . '/src/activity.php'; + require_once __DIR__ . '/src/activity-favorite.php'; + require_once __DIR__ . '/src/activity-meta.php'; + require_once __DIR__ . '/src/components.php'; + require_once __DIR__ . '/src/tool.php'; + require_once __DIR__ . '/src/notification.php'; + require_once __DIR__ . '/src/email.php'; + require_once __DIR__ . '/src/member.php'; + require_once __DIR__ . '/src/friends.php'; + require_once __DIR__ . '/src/messages.php'; + require_once __DIR__ . '/src/xprofile.php'; + require_once __DIR__ . '/src/xprofile-group.php'; + require_once __DIR__ . '/src/xprofile-field.php'; + require_once __DIR__ . '/src/xprofile-data.php'; + require_once __DIR__ . '/src/group-fetcher.php'; + require_once __DIR__ . '/src/group.php'; + require_once __DIR__ . '/src/group-member.php'; + require_once __DIR__ . '/src/group-invite.php'; + require_once __DIR__ . '/src/group-meta.php'; + + // Load only if the Scaffold package is present. + if ( class_exists( 'Scaffold_Command' ) ) { + require_once __DIR__ . '/src/scaffold.php'; + + WP_CLI::add_command( + 'bp scaffold', + __NAMESPACE__ . '\\Command\\Scaffold', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Scaffold::check_dependencies' ) + ); + } + + WP_CLI::add_command( + 'bp', + __NAMESPACE__ . '\\Command\\BuddyPress', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\BuddyPress::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp signup', + __NAMESPACE__ . '\\Command\\Signup', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Signup::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp tool', + __NAMESPACE__ . '\\Command\\Tool', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Tool::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp notification', + __NAMESPACE__ . '\\Command\\Notification', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Notification::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp email', + __NAMESPACE__ . '\\Command\\Email', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Email::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp member', + __NAMESPACE__ . '\\Command\\Member', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Member::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp message', + __NAMESPACE__ . '\\Command\\Messages', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Messages::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp component', + __NAMESPACE__ . '\\Command\\Components', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Components::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp friend', + __NAMESPACE__ . '\\Command\\Friends', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Friends::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp activity', + __NAMESPACE__ . '\\Command\\Activity', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Activity::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp activity favorite', + __NAMESPACE__ . '\\Command\\Activity_Favorite', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Activity::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp activity meta', + __NAMESPACE__ . '\\Command\\Activity_Meta', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Activity::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp group', + __NAMESPACE__ . '\\Command\\Group', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Group::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp group member', + __NAMESPACE__ . '\\Command\\Group_Member', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Group::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp group meta', + __NAMESPACE__ . '\\Command\\Group_Meta', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Group::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp group invite', + __NAMESPACE__ . '\\Command\\Group_Invite', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\Group::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp xprofile', + __NAMESPACE__ . '\\Command\\XProfile', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\XProfile::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp xprofile group', + __NAMESPACE__ . '\\Command\\XProfile_Group', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\XProfile::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp xprofile field', + __NAMESPACE__ . '\\Command\\XProfile_Field', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\XProfile::check_dependencies' ) + ); + + WP_CLI::add_command( + 'bp xprofile data', + __NAMESPACE__ . '\\Command\\XProfile_Data', + array( 'before_invoke' => __NAMESPACE__ . '\\Command\\XProfile::check_dependencies' ) + ); + } +); diff --git a/wp-content/plugins/buddypress/composer.json b/wp-content/plugins/buddypress/composer.json index 216b1d8a6fcaa5c6b118d5d2d96172cd74b52aac..d071678589e4d346210bd97fce49bc266d3f496a 100644 --- a/wp-content/plugins/buddypress/composer.json +++ b/wp-content/plugins/buddypress/composer.json @@ -32,6 +32,7 @@ }, "require-dev": { "phpcompatibility/phpcompatibility-wp": "*", - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3" + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3", + "wp-phpunit/wp-phpunit": "^5.4" } } diff --git a/wp-content/plugins/buddypress/readme.txt b/wp-content/plugins/buddypress/readme.txt index 47ee22d3b59a1bf630ceb1b59da51c4cb04b8b67..b0ba811d6b4ab1524f807e46bebcc0b238d29344 100644 --- a/wp-content/plugins/buddypress/readme.txt +++ b/wp-content/plugins/buddypress/readme.txt @@ -1,12 +1,12 @@ === BuddyPress === Contributors: johnjamesjacoby, DJPaul, boonebgorges, r-a-y, imath, mercime, tw2113, dcavins, hnla, karmatosed, slaFFik, dimensionmedia, henrywright, netweb, offereins, espellcaste, modemlooper, danbp, Venutius, apeatling, shanebp Tags: user profiles, activity streams, messaging, friends, user groups, notifications, community, social networking, intranet -Requires at least: 4.8 -Tested up to: 5.4.1 -Requires PHP: 5.6 -Stable tag: 6.0.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html +Requires at least: 4.9 +Requires PHP: 5.6 +Tested up to: 5.7 +Stable tag: 7.3.0 BuddyPress helps site builders & developers add community features to their websites, with user profiles, activity streams, and more! @@ -125,6 +125,33 @@ Try <a href="https://wordpress.org/plugins/bbpress/">bbPress</a>. It integrates == Upgrade Notice == += 7.3.0 = +See: https://codex.buddypress.org/releases/version-7-3-0/ + += 7.2.1 = +See: https://codex.buddypress.org/releases/version-7-2-1/ + += 7.2.0 = +See: https://codex.buddypress.org/releases/version-7-2-0/ + += 7.1.0 = +See: https://codex.buddypress.org/releases/version-7-1-0/ + += 7.0.0 = +See: https://codex.buddypress.org/releases/version-7-0-0/ + += 6.4.0 = +See: https://codex.buddypress.org/releases/version-6-4-0/ + += 6.3.0 = +See: https://codex.buddypress.org/releases/version-6-3-0/ + += 6.2.0 = +See: https://codex.buddypress.org/releases/version-6-2-0/ + += 6.1.0 = +See: https://codex.buddypress.org/releases/version-6-1-0/ + = 6.0.0 = See: https://codex.buddypress.org/releases/version-6-0-0/ @@ -160,6 +187,33 @@ See: https://codex.buddypress.org/releases/version-4-0-0/ == Changelog == += 7.3.0 = +See: https://codex.buddypress.org/releases/version-7-3-0/ + += 7.2.1 = +See: https://codex.buddypress.org/releases/version-7-2-1/ + += 7.2.0 = +See: https://codex.buddypress.org/releases/version-7-2-0/ + += 7.1.0 = +See: https://codex.buddypress.org/releases/version-7-1-0/ + += 7.0.0 = +See: https://codex.buddypress.org/releases/version-7-0-0/ + += 6.4.0 = +See: https://codex.buddypress.org/releases/version-6-4-0/ + += 6.3.0 = +See: https://codex.buddypress.org/releases/version-6-3-0/ + += 6.2.0 = +See: https://codex.buddypress.org/releases/version-6-2-0/ + += 6.1.0 = +See: https://codex.buddypress.org/releases/version-6-1-0/ + = 6.0.0 = See: https://codex.buddypress.org/releases/version-6-0-0/